<?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>167277</bug_id>
          
          <creation_ts>2017-01-20 18:32:27 -0800</creation_ts>
          <short_desc>Harden how the compiler references GC objects</short_desc>
          <delta_ts>2017-01-26 15:52:26 -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 Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>rniwa</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1268695</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-01-20 18:32:27 -0800</bug_when>
    <thetext>Now that we safepoint between each phase, we probably have bugs where we have references that never become known to the compiler. Let&apos;s harden how we do things to be consistent everywhere and hard to get wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268805</commentid>
    <comment_count>1</comment_count>
      <attachid>299450</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-01-21 17:30:34 -0800</bug_when>
    <thetext>Created attachment 299450
WIP

It begins</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1268933</commentid>
    <comment_count>2</comment_count>
      <attachid>299488</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-01-22 15:16:53 -0800</bug_when>
    <thetext>Created attachment 299488
WIP

A bit more. I want to find a way where using TrustedImmPtr(T*) where T inherits from HeapCell is a compile error. I&apos;ve finished this for FTLOutput with FTLOutput::constIntPtr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1269186</commentid>
    <comment_count>3</comment_count>
      <attachid>299538</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-01-23 14:31:33 -0800</bug_when>
    <thetext>Created attachment 299538
WIP

This now passes release JSC tests for me locally without running the structure registration phase. I want to read over my code and run debug tests before putting up for review.

(Also, I think I probably caught a few legitimate, but probably almost impossible to reproduce bugs when doing this.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1269188</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-23 14:33:59 -0800</bug_when>
    <thetext>Attachment 299538 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGPlan.cpp:314:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:47:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:48:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGArrayifySlowPathGenerator.h:48:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.h:221:  The parameter name &quot;structure&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.h:221:  The parameter name &quot;result&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGStructureRegistrationPhase.cpp:89:  Should have a space between // and comment  [whitespace/comments] [4]
ERROR: Source/JavaScriptCore/dfg/DFGStructureRegistrationPhase.cpp:90:  Should have a space between // and comment  [whitespace/comments] [4]
Total errors found: 9 in 36 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>1269493</commentid>
    <comment_count>5</comment_count>
      <attachid>299538</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-01-24 12:53:58 -0800</bug_when>
    <thetext>Comment on attachment 299538
WIP

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

&gt; Source/JavaScriptCore/dfg/DFGJITCompiler.cpp:559
&gt; +        if (value.m_structure.isFinite())
&gt; +            m_graph.addStructureSet(value.m_structure.set());

Seems weird.  Why don&apos;t we just have the guarantee that AbstractInterpreter registers structures before building sets out of them?

I think that contract trivially works: the only structures that AbstractInterpreter can see are RegisteredStructures.

&gt; Source/JavaScriptCore/dfg/DFGJITCompiler.cpp:589
&gt; +
&gt; +        if (value.m_structure.isFinite())
&gt; +            m_graph.addStructureSet(value.m_structure.set());

Ditto.

&gt; Source/JavaScriptCore/ftl/FTLOutput.h:126
&gt; +
&gt; +    LValue constGCPointer(DFG::Graph&amp; graph, JSCell* cell)
&gt; +    {
&gt; +        ASSERT(graph.m_plan.weakReferences.contains(cell));
&gt; +
&gt; +        if (sizeof(void*) == 8)
&gt; +            return constInt64(bitwise_cast&lt;intptr_t&gt;(cell));
&gt; +        return constInt32(bitwise_cast&lt;intptr_t&gt;(cell));
&gt; +    }
&gt; +
&gt; +    LValue constGCPointer(DFG::FrozenValue* value)
&gt; +    {
&gt; +        RELEASE_ASSERT(value-&gt;value().isCell());
&gt; +
&gt; +        if (sizeof(void*) == 8)
&gt; +            return constInt64(bitwise_cast&lt;intptr_t&gt;(value-&gt;cell()));
&gt; +        return constInt32(bitwise_cast&lt;intptr_t&gt;(value-&gt;cell()));
&gt; +    }
&gt; +

Why can&apos;t this be called weakPointer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1269495</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-01-24 12:54:57 -0800</bug_when>
    <thetext>This looks pretty good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1269649</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-01-24 18:17:35 -0800</bug_when>
    <thetext>&lt;rdar://problem/30179506&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1269694</commentid>
    <comment_count>8</comment_count>
      <attachid>299672</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-01-24 20:00:50 -0800</bug_when>
    <thetext>Created attachment 299672
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1269695</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-24 20:03:23 -0800</bug_when>
    <thetext>Attachment 299672 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGRegisteredStructure.cpp:39:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/JavaScriptCore/dfg/DFGStructureAbstractValue.h:34:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/dfg/DFGStructureAbstractValue.h:135:  The parameter name &quot;structure&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGStructureAbstractValue.h:234:  The parameter name &quot;structure&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:28:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:47:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGArrayifySlowPathGenerator.h:48:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.h:221:  The parameter name &quot;structure&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.h:221:  The parameter name &quot;result&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 9 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>1269721</commentid>
    <comment_count>10</comment_count>
      <attachid>299672</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-01-24 21:10:28 -0800</bug_when>
    <thetext>Comment on attachment 299672
patch

Attachment 299672 did not pass mac-ews (mac):
Output: http://webkit-queues.webkit.org/results/2944589

New failing tests:
imported/w3c/web-platform-tests/html/browsers/history/the-location-interface/location-protocol-setter-non-broken.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1269722</commentid>
    <comment_count>11</comment_count>
      <attachid>299679</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-01-24 21:10:32 -0800</bug_when>
    <thetext>Created attachment 299679
Archive of layout-test-results from ews101 for mac-elcapitan

The attached test failures were seen while running run-webkit-tests on the mac-ews.
Bot: ews101  Port: mac-elcapitan  Platform: Mac OS X 10.11.6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270082</commentid>
    <comment_count>12</comment_count>
      <attachid>299672</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-01-25 18:31:15 -0800</bug_when>
    <thetext>Comment on attachment 299672
patch

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

This looks pretty good to me.

&gt; Source/JavaScriptCore/dfg/DFGRegisteredStructure.cpp:37
&gt; +void RegisteredStructureSet::filter(const DFG::StructureAbstractValue&amp; other)

Can you put RegisteredStructureSet into its own file?

&gt; Source/JavaScriptCore/dfg/DFGRegisteredStructure.h:84
&gt; +class RegisteredStructureSet : public TinyPtrSet&lt;RegisteredStructure&gt; {

Separate file

&gt; Source/WTF/wtf/TinyPtrSet.h:479
&gt; -        return static_cast&lt;T&gt;(pointer());
&gt; +        return bitwise_cast&lt;T&gt;(pointer());

Wow</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270100</commentid>
    <comment_count>13</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-01-25 19:09:03 -0800</bug_when>
    <thetext>This is a huge slowdown. I need to figure out why.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270118</commentid>
    <comment_count>14</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-01-25 20:00:13 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; This is a huge slowdown. I need to figure out why.

Not sure why yet. Using concurrentJIT=0 and the super sampler under Graph::registerStructure, the super sampler says we&apos;re spending no time there. Maybe I mistranslated code somewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270120</commentid>
    <comment_count>15</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-01-25 20:02:47 -0800</bug_when>
    <thetext>reportTotalCompileTimes=true says we&apos;re spending way more time compiling. I&apos;m not yet sure if this is because I mistranslated code and we do more compilations, or the compiler is just 6x more expensive with my patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270122</commentid>
    <comment_count>16</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-01-25 20:11:02 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; reportTotalCompileTimes=true says we&apos;re spending way more time compiling.
&gt; I&apos;m not yet sure if this is because I mistranslated code and we do more
&gt; compilations, or the compiler is just 6x more expensive with my patch.

Could be OSR exiting like crazy.

Maybe some references that were previously treated as strong are now treated as weak, or you are failing to transform Transition into a CodeBlock Transition constraint.  Easy way to test that theory is to count the number of jettisons during GC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270129</commentid>
    <comment_count>17</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-01-25 20:46:40 -0800</bug_when>
    <thetext>Ok, I&apos;ve found the issue. An FTL CodeBlock had a weakPointer to itself, causing itself to get collected. I&apos;ve fixed this bug.

I&apos;m now considering if we could even assert we never weakly point to a CodeBlock* just for sanity. Maybe I&apos;ll do this in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270334</commentid>
    <comment_count>18</comment_count>
      <attachid>299847</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-01-26 14:03:15 -0800</bug_when>
    <thetext>Created attachment 299847
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270336</commentid>
    <comment_count>19</comment_count>
      <attachid>299847</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-01-26 14:05:41 -0800</bug_when>
    <thetext>Comment on attachment 299847
patch for landing

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

&gt; Source/JavaScriptCore/dfg/DFGGraph.cpp:1482
&gt; +    return;

oops.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270337</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-26 14:06:30 -0800</bug_when>
    <thetext>Attachment 299847 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:47:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGArrayifySlowPathGenerator.h:48:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
Total errors found: 2 in 47 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>1270339</commentid>
    <comment_count>21</comment_count>
      <attachid>299849</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-01-26 14:11:01 -0800</bug_when>
    <thetext>Created attachment 299849
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270343</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-26 14:12:44 -0800</bug_when>
    <thetext>Attachment 299849 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:47:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGArrayifySlowPathGenerator.h:48:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
Total errors found: 2 in 47 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>1270345</commentid>
    <comment_count>23</comment_count>
      <attachid>299851</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-01-26 14:14:19 -0800</bug_when>
    <thetext>Created attachment 299851
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270346</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-26 14:16:15 -0800</bug_when>
    <thetext>Attachment 299851 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:47:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGArrayifySlowPathGenerator.h:48:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
Total errors found: 2 in 47 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>1270347</commentid>
    <comment_count>25</comment_count>
      <attachid>299852</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-01-26 14:16:34 -0800</bug_when>
    <thetext>Created attachment 299852
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270348</commentid>
    <comment_count>26</comment_count>
      <attachid>299853</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-01-26 14:17:11 -0800</bug_when>
    <thetext>Created attachment 299853
perf numbers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270350</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-26 14:19:35 -0800</bug_when>
    <thetext>Attachment 299852 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGOpInfo.h:47:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/dfg/DFGArrayifySlowPathGenerator.h:48:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
Total errors found: 2 in 47 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>1270362</commentid>
    <comment_count>28</comment_count>
      <attachid>299852</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-01-26 14:57:43 -0800</bug_when>
    <thetext>Comment on attachment 299852
patch for landing

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

I looked over the new code. Neat!

&gt; Source/JavaScriptCore/ChangeLog:12
&gt; +        the compiler must be track of all the heap pointers that are part

&quot;must be track of&quot;

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:132
&gt; +        }

You could make this a link error by declaring but not defining it. It&apos;s kinda ugly! You can make it more obvious with:

void ErrorTrustedImmPtrCannotBeConstructedWithInt(); // Declared, not defined.
explicit TrustedImmPtr(int) { ErrorTrustedImmPtrCannotBeConstructedWithInt(); }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270368</commentid>
    <comment_count>29</comment_count>
      <attachid>299861</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-01-26 15:10:59 -0800</bug_when>
    <thetext>Created attachment 299861
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270370</commentid>
    <comment_count>30</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-01-26 15:14:35 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; Comment on attachment 299852 [details]
&gt; patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=299852&amp;action=review
&gt; 
&gt; I looked over the new code. Neat!
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:12
&gt; &gt; +        the compiler must be track of all the heap pointers that are part
&gt; 
&gt; &quot;must be track of&quot;
Fixed.

&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:132
&gt; &gt; +        }
&gt; 
&gt; You could make this a link error by declaring but not defining it. It&apos;s
&gt; kinda ugly! You can make it more obvious with:
&gt; 
&gt; void ErrorTrustedImmPtrCannotBeConstructedWithInt(); // Declared, not
&gt; defined.
&gt; explicit TrustedImmPtr(int) {
&gt; ErrorTrustedImmPtrCannotBeConstructedWithInt(); }
I did just to try to keep refactoring levels down since MacroAssembler::TrustedImmPtr does this. It would be nice if we could eventually remove it. But I think some callers really want to say I have an pointer sized integer with value zero, and I suspect MacroAssembler::TrustedImmPtr does this to not confuse the compiler between void* and size_t when the immediate is &quot;0&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270403</commentid>
    <comment_count>31</comment_count>
      <attachid>299861</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-26 15:52:19 -0800</bug_when>
    <thetext>Comment on attachment 299861
patch for landing

Clearing flags on attachment: 299861

Committed r211237: &lt;http://trac.webkit.org/changeset/211237&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1270404</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-26 15:52:26 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299450</attachid>
            <date>2017-01-21 17:30:34 -0800</date>
            <delta_ts>2017-01-22 15:16:53 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>48930</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTEwMDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTQ2OSw2ICsxNDY5LDcgQEAKIAkJNzlFRTBDMDAxQjRB
RkI4NTAwMDM4NUM5IC8qIFZhcmlhYmxlRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RUUwQkZFMUI0QUZCODUwMDAzODVDOSAvKiBW
YXJpYWJsZUVudmlyb25tZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNzlGOEZDMUUxQjlGRUQwRjAwQ0E2NkFCIC8qIERGR01heGltYWxGbHVz
aEluc2VydGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDc5RjhGQzFDMUI5RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJbnNl
cnRpb25QaGFzZS5jcHAgKi87IH07CiAJCTc5RjhGQzFGMUI5RkVEMEYwMENBNjZBQiAvKiBERkdN
YXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzlGOEZDMUQxQjlGRUQwRjAwQ0E2NkFCIC8qIERGR01heGltYWxG
bHVzaEluc2VydGlvblBoYXNlLmggKi87IH07CisJCTc5RkM4QTA4MUUzMkU5RjAwMEQ4OEYwRSAv
KiBERkdSZWdpc3RlcmVkU3RydWN0dXJlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3OUZDOEEwNzFFMzJFOUYwMDBEODhGMEUgLyogREZHUmVnaXN0ZXJl
ZFN0cnVjdHVyZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTdCQzU0N0QzMUI2OTU5QTEwMDk1OUI1OCAvKiBXYXNtRm9ybWF0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkM1NDdEMjFCNjk1OTlCMDA5
NTlCNTggLyogV2FzbUZvcm1hdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTdDMDA4Q0RBMTg3MTI0QkIwMDk1NUMyNCAvKiBKU1Byb21pc2VEZWZl
cnJlZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QzAwOENEODE4NzEyNEJCMDA5NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQuY3BwICovOyB9Owog
CQk3QzAwOENEQjE4NzEyNEJCMDA5NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMDA4Q0Q5MTg3MTI0QkIw
MDk1NUMyNCAvKiBKU1Byb21pc2VEZWZlcnJlZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zOTM2LDYgKzM5MzcsNyBAQAogCQk3OUVFMEJGRTFC
NEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBWYXJpYWJsZUVudmlyb25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTc5RjhGQzFDMUI5RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJ
bnNlcnRpb25QaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBE
RkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHTWF4aW1hbEZs
dXNoSW5zZXJ0aW9uUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3OUY4
RkMxRDFCOUZFRDBGMDBDQTY2QUIgLyogREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9u
UGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3OUZDOEEwNzFFMzJFOUYwMDBEODhGMEUgLyogREZH
UmVnaXN0ZXJlZFN0cnVjdHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBE
RkdSZWdpc3RlcmVkU3RydWN0dXJlLmg7IHBhdGggPSBkZmcvREZHUmVnaXN0ZXJlZFN0cnVjdHVy
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkM1NDdEMjFCNjk1OTlCMDA5NTlC
NTggLyogV2FzbUZvcm1hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNt
Rm9ybWF0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDA4Q0Q4MTg3MTI0QkIw
MDk1NUMyNCAvKiBKU1Byb21pc2VEZWZlcnJlZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1Byb21pc2VEZWZlcnJlZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDMDA4Q0Q5MTg3MTI0QkIwMDk1NUMyNCAvKiBKU1Byb21pc2VEZWZlcnJlZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb21pc2VEZWZlcnJlZC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzA4Myw2ICs3MDg1LDcgQEAKIAkJCQkwRkIx
NzY1RjE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVyZVZhbHVlLmggKi8sCiAJCQkJMEYzQTFCRjcx
QTlFQ0I3RDAwMERFMDFBIC8qIERGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcCAqLywKIAkJCQkw
RjNBMUJGODFBOUVDQjdEMDAwREUwMUEgLyogREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuaCAqLywK
KwkJCQk3OUZDOEEwNzFFMzJFOUYwMDBEODhGMEUgLyogREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5o
ICovLAogCQkJCTg2RUM5REMxMTMyOERGODIwMDJCMkFENyAvKiBERkdSZWdpc3RlckJhbmsuaCAq
LywKIAkJCQkwRjJGQ0NGNDE4QTYwMDcwMDAxQTI3RjggLyogREZHU2FmZXBvaW50LmNwcCAqLywK
IAkJCQkwRjJGQ0NGNTE4QTYwMDcwMDAxQTI3RjggLyogREZHU2FmZXBvaW50LmggKi8sCkBAIC04
MDY3LDYgKzgwNzAsNyBAQAogCQkJCTBGMjFDMjdEMTRCRTcyN0EwMEFEQzY0QiAvKiBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBNzE0QkNGNTA3MDA4
ODVCNEYgLyogQ29kZVR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTc2MjA1MURCOTI0Mjkw
MEI3QTJGRCAvKiBDb2xsZWN0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTc5RkM4QTA4
MUUzMkU5RjAwMEQ4OEYwRSAvKiBERkdSZWdpc3RlcmVkU3RydWN0dXJlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNTMyNDM5ODE4NTZBNDg5MDAyRUQ2OTIgLyogQ29tYmluZWREb21haW5zLmpzb24g
aW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNGMzBFMTZGNUNEMDBCMzQ0NjAgLyogQ29tbW9uSWRl
bnRpZmllcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTVGMTVGMTRCN0E3M0UwMDVERTM3RCAv
KiBDb21tb25TbG93UGF0aHMuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAkocmV2aXNpb24gMjExMDA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODczLDggKzE4NzMs
OCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgfQogICAg
ICAgICAKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDogewotICAgICAgICBBU1NFUlQobm9kZS0+
c3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09IFN0cmluZ09iamVjdDo6aW5mbygpKTsKLSAgICAg
ICAgZm9yTm9kZShub2RlKS5zZXQobV9ncmFwaCwgbm9kZS0+c3RydWN0dXJlKCkpOworICAgICAg
ICBBU1NFUlQobm9kZS0+c3RydWN0dXJlKCkuZ2V0KCktPmNsYXNzSW5mbygpID09IFN0cmluZ09i
amVjdDo6aW5mbygpKTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXQobV9ncmFwaCwgbm9kZS0+
c3RydWN0dXJlKCkuZ2V0KCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgICAgICAK
QEAgLTE5NjMsOCArMTk2Myw4IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHkKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgTmV3T2JqZWN0OgotICAgICAgICBBU1NF
UlQobm9kZS0+c3RydWN0dXJlKCkpOwotICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChtX2dyYXBo
LCBub2RlLT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgIEFTU0VSVChub2RlLT5zdHJ1Y3R1cmUoKS5n
ZXQoKSk7CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIG5vZGUtPnN0cnVjdHVy
ZSgpLmdldCgpKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIENhbGxPYmplY3RDb25zdHJ1
Y3RvcjogewpAQCAtMjAwMCw3ICsyMDAwLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeQogICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgY2FzZSBNYXRlcmlh
bGl6ZU5ld09iamVjdDogewotICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChtX2dyYXBoLCBub2Rl
LT5zdHJ1Y3R1cmVTZXQoKSk7CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIG5v
ZGUtPnN0cnVjdHVyZVNldCgpLmdldCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0y
MjM4LDcgKzIyMzgsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZTogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1
ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwogCi0gICAgICAgIFN0cnVjdHVyZVNldCYgc2V0
ID0gbm9kZS0+c3RydWN0dXJlU2V0KCk7CisgICAgICAgIFN0cnVjdHVyZVNldCYgc2V0ID0gbm9k
ZS0+c3RydWN0dXJlU2V0KCkuZ2V0KCk7CiAgICAgICAgIAogICAgICAgICAvLyBJdCdzIGludGVy
ZXN0aW5nIHRoYXQgd2UgY291bGQgaGF2ZSBwcm92ZW4gdGhhdCB0aGUgb2JqZWN0IGhhcyBhIGxh
cmdlciBzdHJ1Y3R1cmUgc2V0CiAgICAgICAgIC8vIHRoYXQgaW5jbHVkZXMgdGhlIHNldCB3ZSdy
ZSB0ZXN0aW5nLiBJbiB0aGF0IGNhc2Ugd2UgY291bGQgbWFrZSB0aGUgc3RydWN0dXJlIGNoZWNr
CkBAIC0yMjcwLDcgKzIyNzAsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5CiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzY5ODgKICAgICAgICAgCiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIFN0cnVjdHVyZVNldCYgc2V0ID0gbm9kZS0+c3Ry
dWN0dXJlU2V0KCk7CisgICAgICAgIFN0cnVjdHVyZVNldCYgc2V0ID0gbm9kZS0+c3RydWN0dXJl
U2V0KCkuZ2V0KCk7CiAgICAgICAgIAogICAgICAgICBpZiAodmFsdWUudmFsdWUoKSkgewogICAg
ICAgICAgICAgaWYgKFN0cnVjdHVyZSogc3RydWN0dXJlID0ganNEeW5hbWljQ2FzdDxTdHJ1Y3R1
cmUqPih2YWx1ZS52YWx1ZSgpKSkgewpAQCAtMjQzMiw3ICsyNDMyLDcgQEAgYm9vbCBBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgIH0KICAgICBjYXNlIEFycmF5aWZ5VG9T
dHJ1Y3R1cmU6IHsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKTsKLSAgICAgICAgaWYgKHZhbHVlLm1fc3RydWN0dXJlLmlzU3Vic2V0T2YoU3Ry
dWN0dXJlU2V0KG5vZGUtPnN0cnVjdHVyZSgpKSkpCisgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVj
dHVyZS5pc1N1YnNldE9mKFN0cnVjdHVyZVNldChub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSkpKQog
ICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKICAgICAgICAgY2xv
YmJlclN0cnVjdHVyZXMoY2xvYmJlckxpbWl0KTsKICAgICAgICAgCkBAIC0yNDYzLDcgKzI0NjMs
NyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIC8v
IE5vdGUgdGhhdCBpdCdzIHRlbXB0aW5nIHRvIHNpbXBseSBzYXkgdGhhdCB0aGUgcmVzdWx0aW5n
IHZhbHVlIGlzIEJPVFRPTSBiZWNhdXNlIG9mCiAgICAgICAgIC8vIHRoZSBjb250cmFkaWN0aW9u
LiBUaGF0IHdvdWxkIGJlIHdyb25nLCBzaW5jZSB3ZSBoYXZlbid0IGhpdCBhbiBpbnZhbGlkYXRp
b24gcG9pbnQsCiAgICAgICAgIC8vIHlldC4KLSAgICAgICAgdmFsdWUuc2V0KG1fZ3JhcGgsIG5v
ZGUtPnN0cnVjdHVyZSgpKTsKKyAgICAgICAgdmFsdWUuc2V0KG1fZ3JhcGgsIG5vZGUtPnN0cnVj
dHVyZSgpLmdldCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR2V0SW5kZXhl
ZFByb3BlcnR5U3RvcmFnZTogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0VmFsdWUuY3BwCShyZXZpc2lvbiAyMTEwMDUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3
ICs1Miw5IEBAIHZvaWQgQWJzdHJhY3RWYWx1ZTo6c2V0KEdyYXBoJiBncmFwaCwgY28KIHsKICAg
ICBpZiAoISF2YWx1ZSAmJiB2YWx1ZS52YWx1ZSgpLmlzQ2VsbCgpKSB7CiAgICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gdmFsdWUuc3RydWN0dXJlKCk7Ci0gICAgICAgIGlmIChncmFwaC5y
ZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpID09IFN0cnVjdHVyZVJlZ2lzdGVyZWRBbmRXYXRj
aGVkKSB7CisgICAgICAgIFN0cnVjdHVyZVJlZ2lzdHJhdGlvblJlc3VsdCByZXN1bHQ7CisgICAg
ICAgIGdyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSwgcmVzdWx0KTsKKyAgICAgICAg
aWYgKHJlc3VsdCA9PSBTdHJ1Y3R1cmVSZWdpc3RlcmVkQW5kV2F0Y2hlZCkgewogICAgICAgICAg
ICAgbV9zdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CiAgICAgICAgICAgICBpZiAoY2xvYmJlclN0YXRl
ID09IFN0cnVjdHVyZXNBcmVDbG9iYmVyZWQpIHsKICAgICAgICAgICAgICAgICBtX2FycmF5TW9k
ZXMgPSBBTExfQVJSQVlfTU9ERVM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAJKHJldmlzaW9u
IDIxMTAwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWlu
YXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5Myw3ICszOTMsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1
Y3R1cmUpOwogCi0gICAgICAgICAgICAgICAgICAgIGlmICghbm9kZS0+c3RydWN0dXJlU2V0KCku
Y29udGFpbnMoc3RydWN0dXJlKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlLT5zdHJ1
Y3R1cmVTZXQoKS5nZXQoKS5jb250YWlucyhzdHJ1Y3R1cmUpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgZXNjYXBlKG5vZGUtPmNoaWxkMSgpLCBub2RlKTsKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmgJKHJldmlzaW9u
IDIxMTAwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0
aEdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgOiBKdW1waW5nU2xvd1BhdGhHZW5lcmF0b3I8TWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0
Pihmcm9tLCBqaXQpCiAgICAgICAgICwgbV9vcChub2RlLT5vcCgpKQogICAgICAgICAsIG1fYXJy
YXlNb2RlKG5vZGUtPmFycmF5TW9kZSgpKQotICAgICAgICAsIG1fc3RydWN0dXJlKG5vZGUtPm9w
KCkgPT0gQXJyYXlpZnlUb1N0cnVjdHVyZSA/IG5vZGUtPnN0cnVjdHVyZSgpIDogMCkKKyAgICAg
ICAgLCBtX3N0cnVjdHVyZShub2RlLT5vcCgpID09IEFycmF5aWZ5VG9TdHJ1Y3R1cmUgPyBub2Rl
LT5zdHJ1Y3R1cmUoKSA6IFJlZ2lzdGVyZWRTdHJ1Y3R1cmUoKSkKICAgICAgICAgLCBtX2Jhc2VH
UFIoYmFzZUdQUikKICAgICAgICAgLCBtX3Byb3BlcnR5R1BSKHByb3BlcnR5R1BSKQogICAgICAg
ICAsIG1fdGVtcEdQUih0ZW1wR1BSKQpAQCAtMTE1LDcgKzExNSw3IEBAIHByb3RlY3RlZDoKICAg
ICAgICAgaml0LT5tX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAKICAgICAgICAgaWYg
KG1fb3AgPT0gQXJyYXlpZnlUb1N0cnVjdHVyZSkgewotICAgICAgICAgICAgQVNTRVJUKG1fc3Ry
dWN0dXJlKTsKKyAgICAgICAgICAgIEFTU0VSVChtX3N0cnVjdHVyZS5nZXQoKSk7CiAgICAgICAg
ICAgICBtX2JhZEluZGV4aW5nVHlwZUp1bXAuZmlsbCgKICAgICAgICAgICAgICAgICBqaXQsIGpp
dC0+bV9qaXQuYnJhbmNoV2Vha1N0cnVjdHVyZShNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1fYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNl
dCgpKSwgbV9zdHJ1Y3R1cmUpKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTEzNiw3ICsxMzYsNyBA
QCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIE5vZGVUeXBlIG1fb3A7CiAgICAgQXJyYXlNb2Rl
IG1fYXJyYXlNb2RlOwotICAgIFN0cnVjdHVyZSogbV9zdHJ1Y3R1cmU7CisgICAgUmVnaXN0ZXJl
ZFN0cnVjdHVyZSBtX3N0cnVjdHVyZTsKICAgICBHUFJSZWcgbV9iYXNlR1BSOwogICAgIEdQUlJl
ZyBtX3Byb3BlcnR5R1BSOwogICAgIEdQUlJlZyBtX3RlbXBHUFI7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMjEx
MDA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI5NjAsNyArMjk2MCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUNvbnN0YW50SW50ZXIKICAgICAgICAgICAgIHJlc3VsdCA9IGFkZFRvR3JhcGgoQ2Fs
bFN0cmluZ0NvbnN0cnVjdG9yLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVn
aXN0ZXJPZmZzZXQpKSk7CiAgICAgICAgIAogICAgICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ29u
c3RydWN0KQotICAgICAgICAgICAgcmVzdWx0ID0gYWRkVG9HcmFwaChOZXdTdHJpbmdPYmplY3Qs
IE9wSW5mbyhmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0KCktPnN0cmluZ09iamVjdFN0cnVjdHVyZSgp
KSwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGFkZFRvR3JhcGgoTmV3U3RyaW5nT2Jq
ZWN0LCBPcEluZm8obV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShmdW5jdGlvbi0+Z2xvYmFsT2Jq
ZWN0KCktPnN0cmluZ09iamVjdFN0cnVjdHVyZSgpKSksIHJlc3VsdCk7CiAgICAgICAgIAogICAg
ICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCByZXN1bHQpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTI5NzIsNyArMjk3Miw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUNvbnN0YW50SW50ZXIKIAogICAgICAgICBOb2RlKiByZXN1bHQ7CiAgICAgICAgIGlm
IChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA8PSAxKQotICAgICAgICAgICAgcmVzdWx0ID0g
YWRkVG9HcmFwaChOZXdPYmplY3QsIE9wSW5mbyhmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0KCktPm9i
amVjdFN0cnVjdHVyZUZvck9iamVjdENvbnN0cnVjdG9yKCkpKTsKKyAgICAgICAgICAgIHJlc3Vs
dCA9IGFkZFRvR3JhcGgoTmV3T2JqZWN0LCBPcEluZm8obV9ncmFwaC5yZWdpc3RlclN0cnVjdHVy
ZShmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0KCktPm9iamVjdFN0cnVjdHVyZUZvck9iamVjdENvbnN0
cnVjdG9yKCkpKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlc3VsdCA9IGFkZFRvR3Jh
cGgoQ2FsbE9iamVjdENvbnN0cnVjdG9yLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQo
MSwgcmVnaXN0ZXJPZmZzZXQpKSk7CiAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0
T3BlcmFuZCksIHJlc3VsdCk7CkBAIC0zNDI5LDcgKzM0MjksNyBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlm
IChvaykKLSAgICAgICAgICAgIGdldEJ5SWRTdGF0dXMuZmlsdGVyKGJhc2UtPnN0cnVjdHVyZSgp
KTsKKyAgICAgICAgICAgIGdldEJ5SWRTdGF0dXMuZmlsdGVyKGJhc2UtPnN0cnVjdHVyZSgpLmdl
dCgpKTsKICAgICB9CiAgICAgCiAgICAgTm9kZVR5cGUgZ2V0QnlJZDsKQEAgLTM5MDAsNyArMzkw
MCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRMYXppbHkocmFyZURhdGEt
PmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIFRoZSBjYWxsZWUgaXMgc3RpbGwgbGl2ZSB1cCB0byB0aGlzIHBvaW50LgogICAgICAg
ICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsZWUpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kKSwgYWRkVG9HcmFwaChOZXdPYmplY3QsIE9wSW5mbyhzdHJ1Y3R1cmUpKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKE5ld09iamVjdCwgT3BJbmZvKG1fZ3JhcGgu
cmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGFscmVhZHlFbWl0dGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIH0KQEAgLTM5MTUsNyArMzkxNSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2sodW5zaWduZWQKICAgICAgICAgY2FzZSBvcF9uZXdfb2JqZWN0OiB7CiAgICAgICAgICAg
ICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLAog
ICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoTmV3T2JqZWN0LAotICAgICAgICAgICAgICAgICAg
ICBPcEluZm8oY3VycmVudEluc3RydWN0aW9uWzNdLnUub2JqZWN0QWxsb2NhdGlvblByb2ZpbGUt
PnN0cnVjdHVyZSgpKSkpOworICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5yZWdp
c3RlclN0cnVjdHVyZShjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZS0+c3RydWN0dXJlKCkpKSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbmV3X29i
amVjdCk7CiAgICAgICAgIH0KICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHJldmlzaW9u
IDIxMTAwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5n
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsOSArMTQ3LDkgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgU3RydWN0dXJlU2V0IHNldDsKICAgICAgICAg
ICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBBcnJheWlmeVRvU3RydWN0dXJlKQotICAgICAgICAg
ICAgICAgICAgICBzZXQgPSBub2RlLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgICAgICAgICAg
c2V0ID0gbm9kZS0+c3RydWN0dXJlKCkuZ2V0KCk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICBzZXQgPSBub2RlLT5zdHJ1Y3R1cmVTZXQoKTsKKyAgICAgICAgICAg
ICAgICAgICAgc2V0ID0gbm9kZS0+c3RydWN0dXJlU2V0KCkuZ2V0KCk7CiAgICAgICAgICAgICAg
ICAgaWYgKHZhbHVlLm1fc3RydWN0dXJlLmlzU3Vic2V0T2Yoc2V0KSkgewogICAgICAgICAgICAg
ICAgICAgICBtX2ludGVycHJldGVyLmV4ZWN1dGUoaW5kZXhJbkJsb2NrKTsgLy8gQ2F0Y2ggdGhl
IGZhY3QgdGhhdCB3ZSBtYXkgZmlsdGVyIG9uIGNlbGwuCiAgICAgICAgICAgICAgICAgICAgIG5v
ZGUtPnJlbW92ZSgpOwpAQCAtMjA2LDcgKzIwNiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlSW1tZWRpYXRlOiB7CiAgICAgICAg
ICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hp
bGQxKCkpOwotICAgICAgICAgICAgICAgIFN0cnVjdHVyZVNldCYgc2V0ID0gbm9kZS0+c3RydWN0
dXJlU2V0KCk7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlU2V0JiBzZXQgPSBub2RlLT5zdHJ1
Y3R1cmVTZXQoKS5nZXQoKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAo
dmFsdWUudmFsdWUoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBqc0R5bmFtaWNDYXN0PFN0cnVjdHVyZSo+KHZhbHVlLnZhbHVlKCkpKSB7CkBAIC04
MzgsOCArODM4LDEyIEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBhZGRTdHJ1Y3R1cmVUcmFu
c2l0aW9uQ2hlY2soTm9kZU9yaWdpbiBvcmlnaW4sIHVuc2lnbmVkIGluZGV4SW5CbG9jaywgSlND
ZWxsKiBjZWxsLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIGlmIChtX2dy
YXBoLnJlZ2lzdGVyU3RydWN0dXJlKGNlbGwtPnN0cnVjdHVyZSgpKSA9PSBTdHJ1Y3R1cmVSZWdp
c3RlcmVkQW5kV2F0Y2hlZCkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgeworICAgICAg
ICAgICAgU3RydWN0dXJlUmVnaXN0cmF0aW9uUmVzdWx0IHJlc3VsdDsKKyAgICAgICAgICAgIG1f
Z3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoY2VsbC0+c3RydWN0dXJlKCksIHJlc3VsdCk7CisgICAg
ICAgICAgICBpZiAocmVzdWx0ID09IFN0cnVjdHVyZVJlZ2lzdGVyZWRBbmRXYXRjaGVkKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgbV9ncmFw
aC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDIxMTAwNSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIzNjUsNyArMjM2NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaWYgKHN0cnVjdHVy
ZSkgewogICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAg
ICAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBBcnJheWlmeVRv
U3RydWN0dXJlLCBvcmlnaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8oc3RydWN0
dXJlKSwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIEVkZ2UoYXJyYXksIENlbGxVc2UpLCBp
bmRleEVkZ2UpOworICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGgucmVnaXN0
ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKSksIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBFZGdl
KGFycmF5LCBDZWxsVXNlKSwgaW5kZXhFZGdlKTsKICAgICAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAg
ICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBBcnJheWlmeSwgb3JpZ2lu
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDIx
MTAwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNDUsOSArMjQ1LDkgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYg
b3V0LCBjb25zdAogICAgIGlmIChub2RlLT5oYXNQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcigp
KQogICAgICAgICBvdXQucHJpbnQoY29tbWEsIG5vZGUtPnByb21vdGVkTG9jYXRpb25EZXNjcmlw
dG9yKCkpOwogICAgIGlmIChub2RlLT5oYXNTdHJ1Y3R1cmVTZXQoKSkKLSAgICAgICAgb3V0LnBy
aW50KGNvbW1hLCBpbkNvbnRleHQobm9kZS0+c3RydWN0dXJlU2V0KCksIGNvbnRleHQpKTsKKyAg
ICAgICAgb3V0LnByaW50KGNvbW1hLCBpbkNvbnRleHQobm9kZS0+c3RydWN0dXJlU2V0KCkuZ2V0
KCksIGNvbnRleHQpKTsKICAgICBpZiAobm9kZS0+aGFzU3RydWN0dXJlKCkpCi0gICAgICAgIG91
dC5wcmludChjb21tYSwgaW5Db250ZXh0KCpub2RlLT5zdHJ1Y3R1cmUoKSwgY29udGV4dCkpOwor
ICAgICAgICBvdXQucHJpbnQoY29tbWEsIGluQ29udGV4dCgqbm9kZS0+c3RydWN0dXJlKCkuZ2V0
KCksIGNvbnRleHQpKTsKICAgICBpZiAobm9kZS0+aGFzVHJhbnNpdGlvbigpKSB7CiAgICAgICAg
IG91dC5wcmludChjb21tYSwgcG9pbnRlckR1bXBJbkNvbnRleHQobm9kZS0+dHJhbnNpdGlvbigp
LCBjb250ZXh0KSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTE0MTQsNiArMTQxNCw4IEBAIHZv
aWQgR3JhcGg6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHYKICAgICAgICAgdmlzaXRvci5h
cHBlbmRVbmJhcnJpZXJlZCh2YWx1ZS0+c3RydWN0dXJlKCkpOwogICAgIH0KICAgICAKKyAgICAv
LyBGSVhNRToKKyAgICAvKgogICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbnVtQmxv
Y2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSB0aGlz
LT5ibG9jayhibG9ja0luZGV4KTsKICAgICAgICAgaWYgKCFibG9jaykKQEAgLTE0NjIsNiArMTQ2
NCw3IEBAIHZvaWQgR3JhcGg6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHYKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KKyAgICAqLwogfQogCiBGcm96ZW5WYWx1ZSogR3JhcGg6
OmZyZWV6ZShKU1ZhbHVlIHZhbHVlKQpAQCAtMTUwNywxMiArMTUxMCwxNCBAQCB2b2lkIEdyYXBo
Ojpjb252ZXJ0VG9TdHJvbmdDb25zdGFudChOb2RlCiAgICAgY29udmVydFRvQ29uc3RhbnQobm9k
ZSwgZnJlZXplU3Ryb25nKHZhbHVlKSk7CiB9CiAKLVN0cnVjdHVyZVJlZ2lzdHJhdGlvblJlc3Vs
dCBHcmFwaDo6cmVnaXN0ZXJTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitSZWdpc3Rl
cmVkU3RydWN0dXJlIEdyYXBoOjpyZWdpc3RlclN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgU3RydWN0dXJlUmVnaXN0cmF0aW9uUmVzdWx0JiByZXN1bHQpCiB7CiAgICAgbV9wbGFuLndl
YWtSZWZlcmVuY2VzLmFkZExhemlseShzdHJ1Y3R1cmUpOwogICAgIGlmIChtX3BsYW4ud2F0Y2hw
b2ludHMuY29uc2lkZXIoc3RydWN0dXJlKSkKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyZVJlZ2lz
dGVyZWRBbmRXYXRjaGVkOwotICAgIHJldHVybiBTdHJ1Y3R1cmVSZWdpc3RlcmVkTm9ybWFsbHk7
CisgICAgICAgIHJlc3VsdCA9IFN0cnVjdHVyZVJlZ2lzdGVyZWRBbmRXYXRjaGVkOworICAgIGVs
c2UKKyAgICAgICAgcmVzdWx0ID0gU3RydWN0dXJlUmVnaXN0ZXJlZE5vcm1hbGx5OworICAgIHJl
dHVybiBSZWdpc3RlcmVkU3RydWN0dXJlOjpjcmVhdGVQcml2YXRlKHN0cnVjdHVyZSk7CiB9CiAK
IHZvaWQgR3JhcGg6OmFzc2VydElzUmVnaXN0ZXJlZChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDIxMTAwNSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAt
MjEzLDcgKzIxMywxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb252ZXJ0VG9Db25zdGFudChOb2Rl
KiBub2RlLCBKU1ZhbHVlIHZhbHVlKTsKICAgICB2b2lkIGNvbnZlcnRUb1N0cm9uZ0NvbnN0YW50
KE5vZGUqIG5vZGUsIEpTVmFsdWUgdmFsdWUpOwogICAgIAotICAgIFN0cnVjdHVyZVJlZ2lzdHJh
dGlvblJlc3VsdCByZWdpc3RlclN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSk7CisgICAg
UmVnaXN0ZXJlZFN0cnVjdHVyZSByZWdpc3RlclN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKKyAgICB7CisgICAgICAgIFN0cnVjdHVyZVJlZ2lzdHJhdGlvblJlc3VsdCBpZ25vcmVkOwor
ICAgICAgICByZXR1cm4gcmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlLCBpZ25vcmVkKTsKKyAg
ICB9CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSByZWdpc3RlclN0cnVjdHVyZShTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgU3RydWN0dXJlUmVnaXN0cmF0aW9uUmVzdWx0JiByZXN1bHQpOwogICAgIHZv
aWQgYXNzZXJ0SXNSZWdpc3RlcmVkKFN0cnVjdHVyZSogc3RydWN0dXJlKTsKICAgICAKICAgICAv
LyBDb2RlQmxvY2sgaXMgb3B0aW9uYWwsIGJ1dCBtYXkgYWxsb3cgYWRkaXRpb25hbCBpbmZvcm1h
dGlvbiB0byBiZSBkdW1wZWQgKGUuZy4gSWRlbnRpZmllciBuYW1lcykuCkBAIC0zNDEsMTIgKzM0
NiwxMiBAQCBwdWJsaWM6CiAgICAgCiAgICAgc3RhdGljIGNvbnN0IGNoYXIgKm9wTmFtZShOb2Rl
VHlwZSk7CiAgICAgCi0gICAgU3RydWN0dXJlU2V0KiBhZGRTdHJ1Y3R1cmVTZXQoY29uc3QgU3Ry
dWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQpCisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBhZGRT
dHJ1Y3R1cmVTZXQoY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQpCiAgICAgewogICAg
ICAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogc3RydWN0dXJlU2V0KQogICAgICAgICAg
ICAgcmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKTsKICAgICAgICAgbV9zdHJ1Y3R1cmVTZXQu
YXBwZW5kKHN0cnVjdHVyZVNldCk7Ci0gICAgICAgIHJldHVybiAmbV9zdHJ1Y3R1cmVTZXQubGFz
dCgpOworICAgICAgICByZXR1cm4gUmVnaXN0ZXJlZFN0cnVjdHVyZVNldDo6Y3JlYXRlUHJpdmF0
ZSgmbV9zdHJ1Y3R1cmVTZXQubGFzdCgpKTsKICAgICB9CiAgICAgCiAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdEZvcihDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lvbiAyMTEwMDUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI0MiwxNCArMjQyLDE0IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgotICAgIEp1bXAgYnJhbmNoV2Vha1N0cnVjdHVyZShSZWxhdGlvbmFsQ29uZGl0
aW9uIGNvbmQsIFQgbGVmdCwgU3RydWN0dXJlKiB3ZWFrU3RydWN0dXJlKQorICAgIEp1bXAgYnJh
bmNoV2Vha1N0cnVjdHVyZShSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFQgbGVmdCwgUmVnaXN0
ZXJlZFN0cnVjdHVyZSB3ZWFrU3RydWN0dXJlKQogICAgIHsKKyAgICAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSB3ZWFrU3RydWN0dXJlLmdldCgpOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAg
ICAgIEp1bXAgcmVzdWx0ID0gYnJhbmNoMzIoY29uZCwgbGVmdCwgVHJ1c3RlZEltbTMyKHdlYWtT
dHJ1Y3R1cmUtPmlkKCkpKTsKLSAgICAgICAgYWRkV2Vha1JlZmVyZW5jZSh3ZWFrU3RydWN0dXJl
KTsKKyAgICAgICAgSnVtcCByZXN1bHQgPSBicmFuY2gzMihjb25kLCBsZWZ0LCBUcnVzdGVkSW1t
MzIoc3RydWN0dXJlLT5pZCgpKSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZQotICAg
ICAgICByZXR1cm4gYnJhbmNoV2Vha1B0cihjb25kLCBsZWZ0LCB3ZWFrU3RydWN0dXJlKTsKKyAg
ICAgICAgcmV0dXJuIGJyYW5jaFB0cihjb25kLCBsZWZ0LCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVy
ZSkpOwogI2VuZGlmCiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aAkocmV2aXNpb24gMjExMDA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJERkdOb2RlVHlw
ZS5oIgogI2luY2x1ZGUgIkRGR09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuaCIKICNpbmNsdWRl
ICJERkdPcEluZm8uaCIKKyNpbmNsdWRlICJERkdSZWdpc3RlcmVkU3RydWN0dXJlLmgiCiAjaW5j
bHVkZSAiREZHVHJhbnNpdGlvbi5oIgogI2luY2x1ZGUgIkRGR1VzZUtpbmQuaCIKICNpbmNsdWRl
ICJERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCIKQEAgLTQxMCwxMCArNDExLDEwIEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgcmVtb3ZlKCk7CiAKLSAgICB2b2lkIGNvbnZlcnRUb0NoZWNrU3RydWN0dXJl
KFN0cnVjdHVyZVNldCogc2V0KQorICAgIHZvaWQgY29udmVydFRvQ2hlY2tTdHJ1Y3R1cmUoUmVn
aXN0ZXJlZFN0cnVjdHVyZVNldCBzZXQpCiAgICAgewogICAgICAgICBzZXRPcEFuZERlZmF1bHRG
bGFncyhDaGVja1N0cnVjdHVyZSk7Ci0gICAgICAgIG1fb3BJbmZvID0gc2V0OyAKKyAgICAgICAg
bV9vcEluZm8gPSBzZXQ7CiAgICAgfQogCiAgICAgdm9pZCBjb252ZXJ0VG9DaGVja1N0cnVjdHVy
ZUltbWVkaWF0ZShOb2RlKiBzdHJ1Y3R1cmUpCkBAIC0xNjE0LDEwICsxNjE1LDEwIEBAIHB1Ymxp
YzoKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNl
dCgpCisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBzdHJ1Y3R1cmVTZXQoKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGhhc1N0cnVjdHVyZVNldCgpKTsKLSAgICAgICAgcmV0dXJuICptX29wSW5m
by5hczxTdHJ1Y3R1cmVTZXQqPigpOworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXNSZWdpc3Rl
cmVkU3RydWN0dXJlU2V0KCk7CiAgICAgfQogICAgIAogICAgIGJvb2wgaGFzU3RydWN0dXJlKCkK
QEAgLTE2MzIsMTAgKzE2MzMsMTAgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogICAgIAot
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVj
dHVyZSgpCiAgICAgewogICAgICAgICBBU1NFUlQoaGFzU3RydWN0dXJlKCkpOwotICAgICAgICBy
ZXR1cm4gbV9vcEluZm8uYXM8U3RydWN0dXJlKj4oKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZv
LmFzUmVnaXN0ZXJlZFN0cnVjdHVyZSgpOwogICAgIH0KICAgICAKICAgICBib29sIGhhc1N0b3Jh
Z2VBY2Nlc3NEYXRhKCkKQEAgLTI1MTMsNiArMjUxNCwxNiBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgdS5pbnQ2NCA9IDA7CiAgICAgICAgICAgICB1LmNvbnN0UG9pbnRlciA9IGNvbnN0UG9pbnRl
cjsKICAgICAgICAgfQorICAgICAgICBPcEluZm9XcmFwcGVyKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
c3RydWN0dXJlKQorICAgICAgICB7CisgICAgICAgICAgICB1LmludDY0ID0gMDsKKyAgICAgICAg
ICAgIHUucG9pbnRlciA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RydWN0dXJlKTsKKyAgICAgICAg
fQorICAgICAgICBPcEluZm9XcmFwcGVyKFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgc2V0KQorICAg
ICAgICB7CisgICAgICAgICAgICB1LmludDY0ID0gMDsKKyAgICAgICAgICAgIHUucG9pbnRlciA9
IGJpdHdpc2VfY2FzdDx2b2lkKj4oc2V0KTsKKyAgICAgICAgfQogICAgICAgICBPcEluZm9XcmFw
cGVyJiBvcGVyYXRvcj0odWludDMyX3QgaW50MzIpCiAgICAgICAgIHsKICAgICAgICAgICAgIHUu
aW50NjQgPSAwOwpAQCAtMjU0Miw2ICsyNTUzLDE4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB1
LmNvbnN0UG9pbnRlciA9IGNvbnN0UG9pbnRlcjsKICAgICAgICAgICAgIHJldHVybiAqdGhpczsK
ICAgICAgICAgfQorICAgICAgICBPcEluZm9XcmFwcGVyJiBvcGVyYXRvcj0oUmVnaXN0ZXJlZFN0
cnVjdHVyZSBzdHJ1Y3R1cmUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHUuaW50NjQgPSAwOwor
ICAgICAgICAgICAgdS5wb2ludGVyID0gYml0d2lzZV9jYXN0PHZvaWQqPihzdHJ1Y3R1cmUpOwor
ICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICB9CisgICAgICAgIE9wSW5mb1dyYXBw
ZXImIG9wZXJhdG9yPShSZWdpc3RlcmVkU3RydWN0dXJlU2V0IHNldCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdS5pbnQ2NCA9IDA7CisgICAgICAgICAgICB1LnBvaW50ZXIgPSBiaXR3aXNlX2Nh
c3Q8dm9pZCo+KHNldCk7CisgICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAgIH0KICAg
ICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgICAgIEFMV0FZU19JTkxJTkUgYXV0byBh
cygpIGNvbnN0IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRlcjxUPjo6
dmFsdWUgJiYgIXN0ZDo6aXNfY29uc3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxUPjo6
dHlwZT46OnZhbHVlLCBUPjo6dHlwZQogICAgICAgICB7CkBAIC0yNTYyLDYgKzI1ODUsMTUgQEAg
cHJpdmF0ZToKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIHUuaW50NjQ7CiAgICAgICAg
IH0KKyAgICAgICAgQUxXQVlTX0lOTElORSBSZWdpc3RlcmVkU3RydWN0dXJlIGFzUmVnaXN0ZXJl
ZFN0cnVjdHVyZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBiaXR3aXNl
X2Nhc3Q8UmVnaXN0ZXJlZFN0cnVjdHVyZT4odS5wb2ludGVyKTsKKyAgICAgICAgfQorICAgICAg
ICBBTFdBWVNfSU5MSU5FIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgYXNSZWdpc3RlcmVkU3RydWN0
dXJlU2V0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2Fz
dDxSZWdpc3RlcmVkU3RydWN0dXJlU2V0Pih1LnBvaW50ZXIpOworICAgICAgICB9CisKICAgICAg
ICAgdW5pb24gewogICAgICAgICAgICAgdWludDMyX3QgaW50MzI7CiAgICAgICAgICAgICB1aW50
NjRfdCBpbnQ2NDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxs
b2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkocmV2aXNpb24gMjEx
MDA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lu
a2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMwLDkgKzgzMCw5IEBAIHByaXZhdGU6
CiAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgICAgICBjYXNlIE5ld09iamVjdDoK
ICAgICAgICAgICAgIHRhcmdldCA9ICZtX2hlYXAubmV3QWxsb2NhdGlvbihub2RlLCBBbGxvY2F0
aW9uOjpLaW5kOjpPYmplY3QpOwotICAgICAgICAgICAgdGFyZ2V0LT5zZXRTdHJ1Y3R1cmVzKG5v
ZGUtPnN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIHRhcmdldC0+c2V0U3RydWN0dXJlcyhub2Rl
LT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CiAgICAgICAgICAgICB3cml0ZXMuYWRkKAotICAgICAgICAg
ICAgICAgIFN0cnVjdHVyZVBMb2MsIExhenlOb2RlKG1fZ3JhcGguZnJlZXplKG5vZGUtPnN0cnVj
dHVyZSgpKSkpOworICAgICAgICAgICAgICAgIFN0cnVjdHVyZVBMb2MsIExhenlOb2RlKG1fZ3Jh
cGguZnJlZXplKG5vZGUtPnN0cnVjdHVyZSgpLmdldCgpKSkpOwogICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKQEAgLTg4OCw3ICs4ODgsNyBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlOiB7CiAgICAgICAgICAgICBBbGxvY2F0aW9u
KiBhbGxvY2F0aW9uID0gbV9oZWFwLm9ubHlMb2NhbEFsbG9jYXRpb24obm9kZS0+Y2hpbGQxKCku
bm9kZSgpKTsKICAgICAgICAgICAgIGlmIChhbGxvY2F0aW9uICYmIGFsbG9jYXRpb24tPmlzT2Jq
ZWN0QWxsb2NhdGlvbigpKSB7Ci0gICAgICAgICAgICAgICAgYWxsb2NhdGlvbi0+ZmlsdGVyU3Ry
dWN0dXJlcyhub2RlLT5zdHJ1Y3R1cmVTZXQoKSk7CisgICAgICAgICAgICAgICAgYWxsb2NhdGlv
bi0+ZmlsdGVyU3RydWN0dXJlcyhub2RlLT5zdHJ1Y3R1cmVTZXQoKS5nZXQoKSk7CiAgICAgICAg
ICAgICAgICAgaWYgKE5vZGUqIHZhbHVlID0gaGVhcFJlc29sdmUoUHJvbW90ZWRIZWFwTG9jYXRp
b24oYWxsb2NhdGlvbi0+aWRlbnRpZmllcigpLCBTdHJ1Y3R1cmVQTG9jKSkpCiAgICAgICAgICAg
ICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0NoZWNrU3RydWN0dXJlSW1tZWRpYXRlKHZhbHVlKTsK
ICAgICAgICAgICAgIH0gZWxzZQpAQCAtMTQ0NCw3ICsxNDQ0LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgc3dpdGNoIChhbGxvY2F0aW9uLmtpbmQoKSkgewogICAgICAgICBjYXNlIEFsbG9jYXRpb246
OktpbmQ6Ok9iamVjdDogewogICAgICAgICAgICAgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSog
ZGF0YSA9IG1fZ3JhcGgubV9vYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmFkZCgpOwotICAgICAg
ICAgICAgU3RydWN0dXJlU2V0KiBzZXQgPSBtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChhbGxvY2F0
aW9uLnN0cnVjdHVyZXMoKSk7CisgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0IHNl
dCA9IG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KGFsbG9jYXRpb24uc3RydWN0dXJlcygpKTsKIAog
ICAgICAgICAgICAgcmV0dXJuIG1fZ3JhcGguYWRkTm9kZSgKICAgICAgICAgICAgICAgICBhbGxv
Y2F0aW9uLmlkZW50aWZpZXIoKS0+cHJlZGljdGlvbigpLCBOb2RlOjpWYXJBcmcsIE1hdGVyaWFs
aXplTmV3T2JqZWN0LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCShy
ZXZpc2lvbiAyMTEwMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5j
bHVkZSAiSGVhcENlbGwuaCIKKyNpbmNsdWRlICJERkdSZWdpc3RlcmVkU3RydWN0dXJlLmgiCiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC00
Miw4ICs0NCwxOCBAQCBzdHJ1Y3QgT3BJbmZvIHsKICNpZiBPUyhEQVJXSU4pCiAgICAgZXhwbGlj
aXQgT3BJbmZvKHVpbnRwdHJfdCB2YWx1ZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnQ2NF90
Pih2YWx1ZSkpIHsgfQogI2VuZGlmCi0gICAgZXhwbGljaXQgT3BJbmZvKHZvaWQqIHZhbHVlKSA6
IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90
Pih2YWx1ZSkpKSB7IH0KLSAgICBleHBsaWNpdCBPcEluZm8oY29uc3Qgdm9pZCogdmFsdWUpIDog
bV92YWx1ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+
KHZhbHVlKSkpIHsgfQorICAgIGV4cGxpY2l0IE9wSW5mbyhSZWdpc3RlcmVkU3RydWN0dXJlIHN0
cnVjdHVyZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihiaXR3aXNlX2Nhc3Q8dWlu
dHB0cl90PihzdHJ1Y3R1cmUpKSkgeyB9CisgICAgZXhwbGljaXQgT3BJbmZvKFJlZ2lzdGVyZWRT
dHJ1Y3R1cmVTZXQgc2V0KSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGJpdHdpc2Vf
Y2FzdDx1aW50cHRyX3Q+KHNldCkpKSB7IH0KKworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CisgICAgZXhwbGljaXQgT3BJbmZvKFQqIHB0cikKKyAgICB7CisgICAgICAgIHN0YXRpY19hc3Nl
cnQoIXN0ZDo6aXNfYmFzZV9vZjxIZWFwQ2VsbCwgVD46OnZhbHVlLCAiVG8gbWFrZSBhbiBPcElu
Zm8gd2l0aCBhIGNlbGwgaW4gaXQsIHRoZSBjZWxsIG11c3QgYmUgcmVnaXN0ZXJlZCBvciBmcm96
ZW4uIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxTdHJ1Y3R1cmVT
ZXQsIFQ+Ojp2YWx1ZSwgIlRvIG1ha2UgYW4gT3BJbmZvIHdpdGggYSBzdHJ1Y3R1cmUgc2V0IGlu
LCBtYWtlIHN1cmUgdG8gdXNlIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQuIik7CisgICAgICAgIG1f
dmFsdWUgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+
KHB0cikpOworICAgIH0KKwogICAgIHVpbnQ2NF90IG1fdmFsdWU7CiB9OwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyZWRT
dHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1
cmVTZXQuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCitjbGFzcyBHcmFw
aDsKK2NsYXNzIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQ7CisKK2NsYXNzIFJlZ2lzdGVyZWRTdHJ1
Y3R1cmUgeworcHVibGljOgorICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUoKSA9IGRlZmF1bHQ7Cisg
ICAgQUxXQVlTX0lOTElORSBTdHJ1Y3R1cmUqIGdldCgpIHsgcmV0dXJuIG1fc3RydWN0dXJlOyB9
CisgICAgU3RydWN0dXJlKiBvcGVyYXRvci0+KCkgeyByZXR1cm4gZ2V0KCk7IH0KKworcHJpdmF0
ZToKKyAgICBmcmllbmQgY2xhc3MgR3JhcGg7CisgICAgZnJpZW5kIGNsYXNzIFJlZ2lzdGVyZWRT
dHJ1Y3R1cmVTZXQ7CisKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0
dXJlKQorICAgICAgICA6IG1fc3RydWN0dXJlKHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEFT
U0VSVChzdHJ1Y3R1cmUpOworICAgIH0KKworICAgIHN0YXRpYyBSZWdpc3RlcmVkU3RydWN0dXJl
IGNyZWF0ZVByaXZhdGUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICByZXR1
cm4gUmVnaXN0ZXJlZFN0cnVjdHVyZShzdHJ1Y3R1cmUpOworICAgIH0KKworICAgIFN0cnVjdHVy
ZSogbV9zdHJ1Y3R1cmUgeyBudWxscHRyIH07Cit9OworCitjbGFzcyBSZWdpc3RlcmVkU3RydWN0
dXJlU2V0IHsKK3B1YmxpYzoKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0KCkgPSBkZWZhdWx0
OworICAgIEFMV0FZU19JTkxJTkUgU3RydWN0dXJlU2V0JiBnZXQoKSB7IHJldHVybiAqbV9zZXQ7
IH0KKyAgICBBTFdBWVNfSU5MSU5FIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgYXQoc2l6ZV90IGkpIHsg
cmV0dXJuIFJlZ2lzdGVyZWRTdHJ1Y3R1cmU6OmNyZWF0ZVByaXZhdGUoZ2V0KClbaV0pOyB9Cisg
ICAgQUxXQVlTX0lOTElORSBSZWdpc3RlcmVkU3RydWN0dXJlIGxhc3QoKSB7IHJldHVybiBhdChn
ZXQoKS5zaXplKCkgLSAxKTsgfQorICAgIEFMV0FZU19JTkxJTkUgc2l6ZV90IHNpemUoKSB7IHJl
dHVybiBnZXQoKS5zaXplKCk7IH0KK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEdyYXBoOwor
CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldChTdHJ1Y3R1cmVTZXQqIHNldCkKKyAgICAgICAg
OiBtX3NldChzZXQpCisgICAgeworICAgICAgICBBU1NFUlQoc2V0KTsKKyAgICB9CisKKyAgICBz
dGF0aWMgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBjcmVhdGVQcml2YXRlKFN0cnVjdHVyZVNldCog
c2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQoc2V0KTsK
KyAgICB9CisgICAgU3RydWN0dXJlU2V0KiBtX3NldCB7IG51bGxwdHIgfTsKK307CisKK30gfSAv
LyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CShyZXZpc2lvbiAyMTEwMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzczLDcgKzM3NzMsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBHUFJSZWcg
cmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHN0b3JhZ2VHUFIg
PSBzdG9yYWdlLmdwcigpOwogCi0gICAgICAgICAgICBlbWl0QWxsb2NhdGVSYXdPYmplY3QocmVz
dWx0R1BSLCBzdHJ1Y3R1cmUsIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRzLCBudW1FbGVtZW50cyk7
CisgICAgICAgICAgICBlbWl0QWxsb2NhdGVSYXdPYmplY3QocmVzdWx0R1BSLCBtX2ppdC5ncmFw
aCgpLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSksIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRz
LCBudW1FbGVtZW50cyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIEF0IHRoaXMgcG9p
bnQsIG9uZSB3YXkgb3IgYW5vdGhlciwgcmVzdWx0R1BSIGFuZCBzdG9yYWdlR1BSIGhhdmUgcG9p
bnRlcnMgdG8KICAgICAgICAgICAgIC8vIHRoZSBKU0FycmF5IGFuZCB0aGUgQnV0dGVyZmx5LCBy
ZXNwZWN0aXZlbHkuCkBAIC0zOTc5LDcgKzM5NzksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHN0b3JhZ2VHUFIgPSBzdG9yYWdlLmdwcigpOwog
Ci0gICAgICAgICAgICBlbWl0QWxsb2NhdGVSYXdPYmplY3QocmVzdWx0R1BSLCBnbG9iYWxPYmpl
Y3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGlu
Z1R5cGUpLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cywgbnVtRWxlbWVudHMpOworICAgICAgICAg
ICAgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQUiwgbV9qaXQuZ3JhcGgoKS5yZWdpc3Rl
clN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVy
aW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpKSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMsIG51
bUVsZW1lbnRzKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgREZHX0FTU0VSVChtX2ppdC5n
cmFwaCgpLCBub2RlLCBpbmRleGluZ1R5cGUgJiBJc0FycmF5KTsKICAgICAgICAgICAgIEpTVmFs
dWUqIGRhdGEgPSBtX2ppdC5jb2RlQmxvY2soKS0+Y29uc3RhbnRCdWZmZXIobm9kZS0+c3RhcnRD
b25zdGFudCgpKTsKQEAgLTQxNDMsNyArNDE0Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
TGlzdCBzbG93UGF0aDsKIAotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5vZGUtPnN0
cnVjdHVyZSgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5vZGUtPnN0cnVjdHVy
ZSgpLmdldCgpOwogICAgICAgICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBKU0ZpbmFsT2JqZWN0
OjphbGxvY2F0aW9uU2l6ZShzdHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkpOwogICAgICAgICBN
YXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvclB0ciA9IHN1YnNwYWNlRm9yPEpTRmluYWxPYmplY3Q+
KCptX2ppdC52bSgpKS0+YWxsb2NhdG9yRm9yKGFsbG9jYXRpb25TaXplKTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlz
aW9uIDIxMTAwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw4ICs4NCw5IEBAIFNwZWN1bGF0aXZlSklUOjp+
U3BlY3VsYXRpdmVKSVQoKQogewogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2Nh
dGVSYXdPYmplY3QoR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJl
ZyBzdG9yYWdlR1BSLCB1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgdmVjdG9yTGVuZ3Ro
KQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlUmF3T2JqZWN0KEdQUlJlZyByZXN1
bHRHUFIsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgcmVnaXN0ZXJlZFN0cnVjdHVyZSwgR1BSUmVnIHN0
b3JhZ2VHUFIsIHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpCiB7
CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSByZWdpc3RlcmVkU3RydWN0dXJlLmdldCgpOwog
ICAgIEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUgPSBzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgp
OwogICAgIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIgPSBoYXNJbmRleGVkUHJvcGVydGllcyhpbmRl
eGluZ1R5cGUpOwogCkBAIC03NDc1LDE1ICs3NDc2LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVUeXBlT2YoTm9kZSoKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNr
U3RydWN0dXJlKE5vZGUqIG5vZGUsIEdQUlJlZyBjZWxsR1BSLCBHUFJSZWcgdGVtcEdQUikKIHsK
LSAgICBBU1NFUlQobm9kZS0+c3RydWN0dXJlU2V0KCkuc2l6ZSgpKTsKKyAgICBBU1NFUlQobm9k
ZS0+c3RydWN0dXJlU2V0KCkuZ2V0KCkuc2l6ZSgpKTsKICAgICAKLSAgICBpZiAobm9kZS0+c3Ry
dWN0dXJlU2V0KCkuc2l6ZSgpID09IDEpIHsKKyAgICBpZiAobm9kZS0+c3RydWN0dXJlU2V0KCku
Z2V0KCkuc2l6ZSgpID09IDEpIHsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAg
ICAgIEJhZENhY2hlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChjZWxsR1BSKSwgMCwKICAg
ICAgICAgICAgIG1faml0LmJyYW5jaFdlYWtTdHJ1Y3R1cmUoCiAgICAgICAgICAgICAgICAgSklU
Q29tcGlsZXI6Ok5vdEVxdWFsLAogICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBZGRyZXNz
KGNlbGxHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCi0gICAgICAgICAgICAgICAg
bm9kZS0+c3RydWN0dXJlU2V0KClbMF0pKTsKKyAgICAgICAgICAgICAgICBub2RlLT5zdHJ1Y3R1
cmVTZXQoKS5hdCgwKSkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxH
UFJUZW1wb3Jhcnk+IHN0cnVjdHVyZTsKICAgICAgICAgR1BSUmVnIHN0cnVjdHVyZUdQUjsKQEAg
LTc0OTgsOSArNzQ5OSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDaGVja1N0cnVj
dHUKICAgICAgICAgCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBkb25lOwogICAgICAg
ICAKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBub2RlLT5zdHJ1Y3R1cmVTZXQoKS5z
aXplKCkgLSAxOyArK2kpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBub2RlLT5z
dHJ1Y3R1cmVTZXQoKS5nZXQoKS5zaXplKCkgLSAxOyArK2kpIHsKICAgICAgICAgICAgIGRvbmUu
YXBwZW5kKAotICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFdlYWtTdHJ1Y3R1cmUoSklUQ29t
cGlsZXI6OkVxdWFsLCBzdHJ1Y3R1cmVHUFIsIG5vZGUtPnN0cnVjdHVyZVNldCgpW2ldKSk7Cisg
ICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoV2Vha1N0cnVjdHVyZShKSVRDb21waWxlcjo6RXF1
YWwsIHN0cnVjdHVyZUdQUiwgbm9kZS0+c3RydWN0dXJlU2V0KCkuYXQoaSkpKTsKICAgICAgICAg
fQogICAgICAgICAKICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKQEAgLTc5MjYsNyArNzkyNyw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdTdHJpbmdPYmoKICAgICBKSVRDb21w
aWxlcjo6SnVtcExpc3Qgc2xvd1BhdGg7CiAgICAgCiAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3Q8
U3RyaW5nT2JqZWN0PigKLSAgICAgICAgcmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKG5vZGUtPnN0
cnVjdHVyZSgpKSwgVHJ1c3RlZEltbVB0cigwKSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLAor
ICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIobm9kZS0+c3RydWN0dXJlKCkuZ2V0KCkp
LCBUcnVzdGVkSW1tUHRyKDApLCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIsCiAgICAgICAgIHNs
b3dQYXRoKTsKICAgICAKICAgICBtX2ppdC5zdG9yZVB0cigKQEAgLTc5NDcsNyArNzk0OCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdTdHJpbmdPYmoKICAgICBtX2ppdC5tdXRh
dG9yRmVuY2UoKTsKICAgICAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwo
Ci0gICAgICAgIHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25OZXdTdHJpbmdPYmplY3QsIHJlc3Vs
dEdQUiwgb3BlcmFuZEdQUiwgbm9kZS0+c3RydWN0dXJlKCkpKTsKKyAgICAgICAgc2xvd1BhdGgs
IHRoaXMsIG9wZXJhdGlvbk5ld1N0cmluZ09iamVjdCwgcmVzdWx0R1BSLCBvcGVyYW5kR1BSLCBu
b2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSkpOwogICAgIAogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BS
LCBub2RlKTsKIH0KQEAgLTkyNjcsNyArOTI2OCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVMYXp5SlNDb25zdGEKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1hdGVyaWFs
aXplTmV3T2JqZWN0KE5vZGUqIG5vZGUpCiB7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBu
b2RlLT5zdHJ1Y3R1cmVTZXQoKVswXTsKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHJlZ2lzdGVy
ZWRTdHJ1Y3R1cmUgPSBub2RlLT5zdHJ1Y3R1cmVTZXQoKS5hdCgwKTsKKyAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IHJlZ2lzdGVyZWRTdHJ1Y3R1cmUuZ2V0KCk7CiAgICAgQVNTRVJUKG1faml0
LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMCktPmR5bmFtaWNDYXN0Q29uc3RhbnQ8U3RydWN0
dXJlKj4oKSA9PSBzdHJ1Y3R1cmUpOwogCiAgICAgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSYg
ZGF0YSA9IG5vZGUtPm9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEoKTsKQEAgLTkyOTgsNyArOTMw
MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRlcmlhbGl6ZU4KICAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3Rv
cmFnZS5ncHIoKTsKICAgICAKLSAgICBlbWl0QWxsb2NhdGVSYXdPYmplY3QocmVzdWx0R1BSLCBz
dHJ1Y3R1cmUsIHN0b3JhZ2VHUFIsIDAsIHZlY3Rvckxlbmd0aCk7CisgICAgZW1pdEFsbG9jYXRl
UmF3T2JqZWN0KHJlc3VsdEdQUiwgcmVnaXN0ZXJlZFN0cnVjdHVyZSwgc3RvcmFnZUdQUiwgMCwg
dmVjdG9yTGVuZ3RoKTsKICAgICAKICAgICBtX2ppdC5zdG9yZTMyKAogICAgICAgICBKSVRDb21w
aWxlcjo6VHJ1c3RlZEltbTMyKHB1YmxpY0xlbmd0aCksCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAyMTEwMDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI3NTksNyArMjc1OSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuZW1pdEFsbG9j
YXRlRGVzdHJ1Y3RpYmxlT2JqZWN0PENsYXNzVHlwZT4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHNj
cmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgc2xvd1BhdGgpOwogICAgIH0KIAotICAgIHZvaWQgZW1p
dEFsbG9jYXRlUmF3T2JqZWN0KEdQUlJlZyByZXN1bHRHUFIsIFN0cnVjdHVyZSosIEdQUlJlZyBz
dG9yYWdlR1BSLCB1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKTsK
KyAgICB2b2lkIGVtaXRBbGxvY2F0ZVJhd09iamVjdChHUFJSZWcgcmVzdWx0R1BSLCBSZWdpc3Rl
cmVkU3RydWN0dXJlLCBHUFJSZWcgc3RvcmFnZUdQUiwgdW5zaWduZWQgbnVtRWxlbWVudHMsIHVu
c2lnbmVkIHZlY3Rvckxlbmd0aCk7CiAgICAgCiAgICAgdm9pZCBlbWl0R2V0TGVuZ3RoKElubGlu
ZUNhbGxGcmFtZSosIEdQUlJlZyBsZW5ndGhHUFIsIGJvb2wgaW5jbHVkZVRoaXMgPSBmYWxzZSk7
CiAgICAgdm9pZCBlbWl0R2V0TGVuZ3RoKENvZGVPcmlnaW4sIEdQUlJlZyBsZW5ndGhHUFIsIGJv
b2wgaW5jbHVkZVRoaXMgPSBmYWxzZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIx
MTAwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25Q
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0MCw3ICs1NDAsNyBAQCBwcml2YXRlOgogCiAg
ICAgICAgICAgICBpZiAobV9ub2RlLT5vcCgpID09IFJlZ0V4cEV4ZWMpIHsKICAgICAgICAgICAg
ICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZVNldCogc3Ry
dWN0dXJlU2V0ID0gbV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKTsKKyAgICAgICAg
ICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBzdHJ1Y3R1cmVTZXQgPSBtX2dyYXBo
LmFkZFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpOwogCiAgICAgICAgICAgICAgICAgICAgIC8vIENy
ZWF0ZSBhbiBhcnJheSBtb2RlbGluZyB0aGUgSlMgYXJyYXkgdGhhdCB3ZSB3aWxsIHRyeSB0byBh
bGxvY2F0ZS4gVGhpcyBpcwogICAgICAgICAgICAgICAgICAgICAvLyBiYXNpY2FsbHkgY3JlYXRl
UmVnRXhwTWF0Y2hlc0FycmF5IGJ1dCBvdmVyIEMrKyBzdHJpbmdzIGluc3RlYWQgb2YgSlNTdHJp
bmdzLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3Ry
YXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIxMTAwNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03NCwxMyArNzQsMTMgQEAgcHVibGljOgogICAgICAgICAgICAg
Zm9yIChhdXRvKiBub2RlIDogKmJsb2NrKSB7CiAgICAgICAgICAgICAgICAgc3dpdGNoIChub2Rl
LT5vcCgpKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKLSAgICAgICAg
ICAgICAgICAgICAgYXNzZXJ0QXJlUmVnaXN0ZXJlZChub2RlLT5zdHJ1Y3R1cmVTZXQoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGFzc2VydEFyZVJlZ2lzdGVyZWQobm9kZS0+c3RydWN0dXJlU2V0
KCkuZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBjYXNlIE5ld09iamVjdDoKICAgICAgICAgICAgICAgICBjYXNlIEFy
cmF5aWZ5VG9TdHJ1Y3R1cmU6CiAgICAgICAgICAgICAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6
Ci0gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG5vZGUtPnN0cnVjdHVyZSgp
KTsKKyAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobm9kZS0+c3RydWN0dXJl
KCkuZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICBjYXNlIFB1dFN0cnVjdHVyZToKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAko
cmV2aXNpb24gMjExMDA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hl
Y2tIb2lzdGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDY1LDIzICs0NjUsMjMgQEAg
cHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAotICAgIHZvaWQgbm90
aWNlU3RydWN0dXJlQ2hlY2soVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCisgICAgdm9pZCBub3RpY2VTdHJ1Y3R1cmVDaGVjayhWYXJpYWJsZUFjY2Vz
c0RhdGEqIHZhcmlhYmxlLCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkKICAgICB7Ci0g
ICAgICAgIEhhc2hNYXA8VmFyaWFibGVBY2Nlc3NEYXRhKiwgQ2hlY2tEYXRhPjo6QWRkUmVzdWx0
IHJlc3VsdCA9IG1fbWFwLmFkZCh2YXJpYWJsZSwgQ2hlY2tEYXRhKHN0cnVjdHVyZSkpOworICAg
ICAgICBIYXNoTWFwPFZhcmlhYmxlQWNjZXNzRGF0YSosIENoZWNrRGF0YT46OkFkZFJlc3VsdCBy
ZXN1bHQgPSBtX21hcC5hZGQodmFyaWFibGUsIENoZWNrRGF0YShzdHJ1Y3R1cmUuZ2V0KCkpKTsK
ICAgICAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBpZiAocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5tX3N0cnVjdHVyZSA9PSBzdHJ1Y3R1cmUp
CisgICAgICAgIGlmIChyZXN1bHQuaXRlcmF0b3ItPnZhbHVlLm1fc3RydWN0dXJlID09IHN0cnVj
dHVyZS5nZXQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgcmVzdWx0Lml0ZXJhdG9y
LT52YWx1ZS5tX3N0cnVjdHVyZSA9IDA7CiAgICAgfQogICAgIAotICAgIHZvaWQgbm90aWNlU3Ry
dWN0dXJlQ2hlY2soVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSwgY29uc3QgU3RydWN0dXJl
U2V0JiBzZXQpCisgICAgdm9pZCBub3RpY2VTdHJ1Y3R1cmVDaGVjayhWYXJpYWJsZUFjY2Vzc0Rh
dGEqIHZhcmlhYmxlLCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0IHNldCkKICAgICB7CiAgICAgICAg
IGlmIChzZXQuc2l6ZSgpICE9IDEpIHsKLSAgICAgICAgICAgIG5vdGljZVN0cnVjdHVyZUNoZWNr
KHZhcmlhYmxlLCAwKTsKKyAgICAgICAgICAgIG5vdGljZVN0cnVjdHVyZUNoZWNrKHZhcmlhYmxl
LCBSZWdpc3RlcmVkU3RydWN0dXJlKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
Ci0gICAgICAgIG5vdGljZVN0cnVjdHVyZUNoZWNrKHZhcmlhYmxlLCBzZXQub25seVN0cnVjdHVy
ZSgpKTsKKyAgICAgICAgbm90aWNlU3RydWN0dXJlQ2hlY2sodmFyaWFibGUsIHNldC5hdCgwKSk7
CiAgICAgfQogCiAgICAgdm9pZCBub3RpY2VDaGVja0FycmF5KFZhcmlhYmxlQWNjZXNzRGF0YSog
dmFyaWFibGUsIEFycmF5TW9kZSBhcnJheU1vZGUpCkBAIC01MDEsMjIgKzUwMSwyMiBAQCBwcml2
YXRlOgogICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmRpc2FibGVDaGVja0FycmF5SG9p
c3RpbmcoKTsKICAgICB9CiAKLSAgICB2b2lkIG5vdGljZVN0cnVjdHVyZUNoZWNrQWNjb3VudGlu
Z0ZvckFycmF5TW9kZShWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKKyAgICB2b2lkIG5vdGljZVN0cnVjdHVyZUNoZWNrQWNjb3VudGluZ0ZvckFycmF5
TW9kZShWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlLCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0
cnVjdHVyZSkKICAgICB7CiAgICAgICAgIEhhc2hNYXA8VmFyaWFibGVBY2Nlc3NEYXRhKiwgQ2hl
Y2tEYXRhPjo6aXRlcmF0b3IgcmVzdWx0ID0gbV9tYXAuZmluZCh2YXJpYWJsZSk7CiAgICAgICAg
IGlmIChyZXN1bHQgPT0gbV9tYXAuZW5kKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IGlmICghcmVzdWx0LT52YWx1ZS5tX2FycmF5TW9kZUhvaXN0aW5nT2theSB8fCAhcmVzdWx0LT52
YWx1ZS5tX2FycmF5TW9kZUlzVmFsaWQpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlm
IChyZXN1bHQtPnZhbHVlLm1fYXJyYXlNb2RlLnN0cnVjdHVyZVdvdWxkUGFzc0FycmF5TW9kZUZp
bHRlcmluZyhzdHJ1Y3R1cmUpKQorICAgICAgICBpZiAocmVzdWx0LT52YWx1ZS5tX2FycmF5TW9k
ZS5zdHJ1Y3R1cmVXb3VsZFBhc3NBcnJheU1vZGVGaWx0ZXJpbmcoc3RydWN0dXJlLmdldCgpKSkK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgcmVzdWx0LT52YWx1ZS5kaXNhYmxlQ2hlY2tB
cnJheUhvaXN0aW5nKCk7CiAgICAgfQogCi0gICAgdm9pZCBub3RpY2VTdHJ1Y3R1cmVDaGVja0Fj
Y291bnRpbmdGb3JBcnJheU1vZGUoVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSwgY29uc3Qg
U3RydWN0dXJlU2V0JiBzZXQpCisgICAgdm9pZCBub3RpY2VTdHJ1Y3R1cmVDaGVja0FjY291bnRp
bmdGb3JBcnJheU1vZGUoVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSwgUmVnaXN0ZXJlZFN0
cnVjdHVyZVNldCBzZXQpCiAgICAgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
c2V0LnNpemUoKTsgaSsrKQotICAgICAgICAgICAgbm90aWNlU3RydWN0dXJlQ2hlY2tBY2NvdW50
aW5nRm9yQXJyYXlNb2RlKHZhcmlhYmxlLCBzZXRbaV0pOworICAgICAgICAgICAgbm90aWNlU3Ry
dWN0dXJlQ2hlY2tBY2NvdW50aW5nRm9yQXJyYXlNb2RlKHZhcmlhYmxlLCBzZXQuYXQoaSkpOwog
ICAgIH0KIAogICAgIEhhc2hNYXA8VmFyaWFibGVBY2Nlc3NEYXRhKiwgQ2hlY2tEYXRhPiBtX21h
cDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCShyZXZp
c2lvbiAyMTEwMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjA5LDcgKzIwOSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICAgICAgICAgIHx8IG5vZGUtPm9yaWdpbi5mb3JFeGl0ICE9IHByZXZpb3VzTm9kZS0+b3Jp
Z2luLmZvckV4aXQpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFub2RlLT5oYXNTdHJ1Y3R1cmUoKSB8fCAhIW5v
ZGUtPnN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFub2Rl
LT5oYXNTdHJ1Y3R1cmUoKSB8fCAhIW5vZGUtPnN0cnVjdHVyZSgpLmdldCgpKTsKICAgICAgICAg
ICAgICAgICBWQUxJREFURSgobm9kZSksICFub2RlLT5oYXNDZWxsT3BlcmFuZCgpIHx8IG5vZGUt
PmNlbGxPcGVyYW5kKCktPnZhbHVlKCkuaXNDZWxsKCkpOwogICAgICAgICAgICAgICAgIFZBTElE
QVRFKChub2RlKSwgIW5vZGUtPmhhc0NlbGxPcGVyYW5kKCkgfHwgISFub2RlLT5jZWxsT3BlcmFu
ZCgpLT52YWx1ZSgpKTsKICAgICAgICAgICAgICAgICAKQEAgLTI4NSw3ICsyODUsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKLSAgICAgICAgICAgICAg
ICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6IG5vZGUtPnN0cnVjdHVyZVNldCgpKSB7
CisgICAgICAgICAgICAgICAgICAgIGZvciAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgOiBub2RlLT5z
dHJ1Y3R1cmVTZXQoKS5nZXQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBv
bmx5IHN1cHBvcnRzIHN0cnVjdHVyZXMgdGhhdCBhcmUgSlNGaW5hbE9iamVjdCBvciBKU0FycmF5
LgogICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKG5vZGUpLApAQCAtNTYwLDEyICs1NjAsMTIgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgIC8vIENQUyBvbmx5IGFsbG93cyBv
bmUgc3RydWN0dXJlLgotICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksIG5vZGUt
PnN0cnVjdHVyZVNldCgpLnNpemUoKSA9PSAxKTsKKyAgICAgICAgICAgICAgICAgICAgVkFMSURB
VEUoKG5vZGUpLCBub2RlLT5zdHJ1Y3R1cmVTZXQoKS5nZXQoKS5zaXplKCkgPT0gMSk7CiAKICAg
ICAgICAgICAgICAgICAgICAgLy8gQ1BTIGRpc2FsbG93cyBpbnQzMiBhbmQgZG91YmxlIGFycmF5
cy4gVGhvc2UgcmVxdWlyZSB3ZWlyZCB0eXBlIGNoZWNrcyBhbmQKICAgICAgICAgICAgICAgICAg
ICAgLy8gY29udmVyc2lvbnMuIFRoZXkgYXJlIG5vdCBuZWVkZWQgaW4gdGhlIERGRyByaWdodCBu
b3cuIFdlIHNob3VsZCBhZGQgc3VwcG9ydAogICAgICAgICAgICAgICAgICAgICAvLyBmb3IgdGhl
c2UgaWYgdGhlIERGRyBldmVyIG5lZWRzIGl0LgotICAgICAgICAgICAgICAgICAgICBmb3IgKFN0
cnVjdHVyZSogc3RydWN0dXJlIDogbm9kZS0+c3RydWN0dXJlU2V0KCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6IG5vZGUtPnN0cnVjdHVyZVNldCgp
LmdldCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFoYXNJ
bnQzMihzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBWQUxJREFURSgobm9kZSksICFoYXNEb3VibGUoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkp
OwogICAgICAgICAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyMTEwMDUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
NjQsNyArMjY2NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjaGVja1N0cnVjdHVyZSgKICAg
ICAgICAgICAgICAgICBtX291dC5sb2FkMzIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJl
SUQpLCBqc1ZhbHVlVmFsdWUoY2VsbCksCiAgICAgICAgICAgICAgICAgZXhpdEtpbmQsIG1fbm9k
ZS0+c3RydWN0dXJlU2V0KCksCi0gICAgICAgICAgICAgICAgWyZdIChTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkgeworICAgICAgICAgICAgICAgIFsmXSAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1
cmUpIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdlYWtTdHJ1Y3R1cmVJRChzdHJ1Y3R1
cmUpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjY4NCw3
ICsyNjg0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNoZWNrU3RydWN0dXJlKAogICAgICAg
ICAgICAgICAgIG1fb3V0LmxvYWQzMih2YWx1ZSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQp
LCBqc1ZhbHVlVmFsdWUodmFsdWUpLAogICAgICAgICAgICAgICAgIGV4aXRLaW5kLCBtX25vZGUt
PnN0cnVjdHVyZVNldCgpLAotICAgICAgICAgICAgICAgIFsmXSAoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpIHsKKyAgICAgICAgICAgICAgICBbJl0gKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJl
KSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3ZWFrU3RydWN0dXJlSUQoc3RydWN0dXJl
KTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0
aW9uKTsKQEAgLTg1ODEsNyArODU4MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSBzdHJ1
Y3R1cmUgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBjaGVja1N0cnVjdHVy
ZSgKICAgICAgICAgICAgIHN0cnVjdHVyZSwgbm9WYWx1ZSgpLCBCYWRDYWNoZSwgbV9ub2RlLT5z
dHJ1Y3R1cmVTZXQoKSwKLSAgICAgICAgICAgIFt0aGlzXSAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
IHsKKyAgICAgICAgICAgIFt0aGlzXSAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIHsK
ICAgICAgICAgICAgICAgICByZXR1cm4gd2Vha1N0cnVjdHVyZShzdHJ1Y3R1cmUpOwogICAgICAg
ICAgICAgfSk7CiAgICAgfQpAQCAtODYwNiw3ICs4NjA2LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgY29uc3QgU3RydWN0dXJlU2V0JiBz
ZXQgPSBtX25vZGUtPnN0cnVjdHVyZVNldCgpOworICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJl
U2V0IHNldCA9IG1fbm9kZS0+c3RydWN0dXJlU2V0KCk7CiAKICAgICAgICAgVmVjdG9yPExCYXNp
Y0Jsb2NrLCAxPiBibG9ja3Moc2V0LnNpemUoKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IHNldC5zaXplKCk7IGktLTspCkBAIC04NjE2LDcgKzg2MTYsNyBAQCBwcml2YXRlOgogICAgICAg
ICAKICAgICAgICAgVmVjdG9yPFN3aXRjaENhc2UsIDE+IGNhc2VzKHNldC5zaXplKCkpOwogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBzZXQuc2l6ZSgpOyBpLS07KQotICAgICAgICAgICAgY2Fz
ZXNbaV0gPSBTd2l0Y2hDYXNlKHdlYWtTdHJ1Y3R1cmUoc2V0W2ldKSwgYmxvY2tzW2ldLCBXZWln
aHQoMSkpOworICAgICAgICAgICAgY2FzZXNbaV0gPSBTd2l0Y2hDYXNlKHdlYWtTdHJ1Y3R1cmUo
c2V0LmF0KGkpKSwgYmxvY2tzW2ldLCBXZWlnaHQoMSkpOwogICAgICAgICBtX291dC5zd2l0Y2hJ
bnN0cnVjdGlvbigKICAgICAgICAgICAgIGxvd0NlbGwobV9ncmFwaC52YXJBcmdDaGlsZChtX25v
ZGUsIDApKSwgY2FzZXMsIGR1bW15RGVmYXVsdCwgV2VpZ2h0KDApKTsKICAgICAgICAgCkBAIC04
NjI3LDcgKzg2MjcsNyBAQCBwcml2YXRlOgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBzZXQu
c2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhibG9ja3NbaV0sIGkg
KyAxIDwgc2V0LnNpemUoKSA/IGJsb2Nrc1tpICsgMV0gOiBkdW1teURlZmF1bHQpOwogICAgICAg
ICAgICAgCi0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHNldFtpXTsKKyAgICAg
ICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gc2V0LmF0KGkpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBMVmFsdWUgb2JqZWN0OwogICAgICAgICAgICAgTFZhbHVlIGJ1
dHRlcmZseTsKQEAgLTkyMzQsOSArOTIzNCw5IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rvcj4KICAgICB2b2lkIGNoZWNrU3RydWN0dXJlKAogICAgICAgICBMVmFsdWUg
c3RydWN0dXJlRGlzY3JpbWluYW50LCBjb25zdCBGb3JtYXR0ZWRWYWx1ZSYgZm9ybWF0dGVkVmFs
dWUsIEV4aXRLaW5kIGV4aXRLaW5kLAotICAgICAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCwg
Y29uc3QgRnVuY3RvciYgd2Vha1N0cnVjdHVyZURpc2NyaW1pbmFudCkKKyAgICAgICAgUmVnaXN0
ZXJlZFN0cnVjdHVyZVNldCBzZXQsIGNvbnN0IEZ1bmN0b3ImIHdlYWtTdHJ1Y3R1cmVEaXNjcmlt
aW5hbnQpCiAgICAgewotICAgICAgICBpZiAoc2V0LmlzRW1wdHkoKSkgeworICAgICAgICBpZiAo
IXNldC5zaXplKCkpIHsKICAgICAgICAgICAgIHRlcm1pbmF0ZShleGl0S2luZCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTkyNDQsNyArOTI0NCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGlmIChzZXQuc2l6ZSgpID09IDEpIHsKICAgICAgICAgICAgIHNwZWN1bGF0ZSgKICAg
ICAgICAgICAgICAgICBleGl0S2luZCwgZm9ybWF0dGVkVmFsdWUsIDAsCi0gICAgICAgICAgICAg
ICAgbV9vdXQubm90RXF1YWwoc3RydWN0dXJlRGlzY3JpbWluYW50LCB3ZWFrU3RydWN0dXJlRGlz
Y3JpbWluYW50KHNldFswXSkpKTsKKyAgICAgICAgICAgICAgICBtX291dC5ub3RFcXVhbChzdHJ1
Y3R1cmVEaXNjcmltaW5hbnQsIHdlYWtTdHJ1Y3R1cmVEaXNjcmltaW5hbnQoc2V0LmF0KDApKSkp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIApAQCAtOTI1NCw3ICs5
MjU0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNldC5z
aXplKCkgLSAxOyArK2kpIHsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5leHRTdHJ1Y3R1cmUg
PSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAg
ICAgICAgIG1fb3V0LmVxdWFsKHN0cnVjdHVyZURpc2NyaW1pbmFudCwgd2Vha1N0cnVjdHVyZURp
c2NyaW1pbmFudChzZXRbaV0pKSwKKyAgICAgICAgICAgICAgICBtX291dC5lcXVhbChzdHJ1Y3R1
cmVEaXNjcmltaW5hbnQsIHdlYWtTdHJ1Y3R1cmVEaXNjcmltaW5hbnQoc2V0LmF0KGkpKSksCiAg
ICAgICAgICAgICAgICAgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShuZXh0U3RydWN0dXJl
KSk7CiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhuZXh0U3RydWN0dXJlKTsKICAgICAgICAg
fQpAQCAtMTA0OTMsOSArMTA0OTMsOSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KIAotICAgIExWYWx1ZSBhbGxvY2F0ZU9iamVjdChMVmFsdWUgYWxsb2NhdG9yLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTFZhbHVlIGJ1dHRlcmZseSwgTEJhc2ljQmxvY2sgc2xvd1Bh
dGgpCisgICAgTFZhbHVlIGFsbG9jYXRlT2JqZWN0KExWYWx1ZSBhbGxvY2F0b3IsIFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCBMVmFsdWUgYnV0dGVyZmx5LCBMQmFzaWNCbG9jayBzbG93
UGF0aCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhbGxvY2F0ZU9iamVjdChhbGxvY2F0b3IsIG1f
b3V0LmNvbnN0SW50UHRyKHN0cnVjdHVyZSksIGJ1dHRlcmZseSwgc2xvd1BhdGgpOworICAgICAg
ICByZXR1cm4gYWxsb2NhdGVPYmplY3QoYWxsb2NhdG9yLCBtX291dC5jb25zdEludFB0cihzdHJ1
Y3R1cmUuZ2V0KCkpLCBidXR0ZXJmbHksIHNsb3dQYXRoKTsKICAgICB9CiAKICAgICBMVmFsdWUg
YWxsb2NhdGVPYmplY3QoTFZhbHVlIGFsbG9jYXRvciwgTFZhbHVlIHN0cnVjdHVyZSwgTFZhbHVl
IGJ1dHRlcmZseSwgTEJhc2ljQmxvY2sgc2xvd1BhdGgpCkBAIC0xMDYwNSw5ICsxMDYwNSw5IEBA
IHByaXZhdGU6CiAgICAgICAgIHJldHVybiBhbGxvY2F0ZUNlbGwoYWxsb2NhdG9yLCBzdHJ1Y3R1
cmUsIHNsb3dQYXRoKTsKICAgICB9CiAgICAgCi0gICAgTFZhbHVlIGFsbG9jYXRlT2JqZWN0KFN0
cnVjdHVyZSogc3RydWN0dXJlKQorICAgIExWYWx1ZSBhbGxvY2F0ZU9iamVjdChSZWdpc3RlcmVk
U3RydWN0dXJlIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6
ZSA9IEpTRmluYWxPYmplY3Q6OmFsbG9jYXRpb25TaXplKHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNp
dHkoKSk7CisgICAgICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IEpTRmluYWxPYmplY3Q6OmFs
bG9jYXRpb25TaXplKHN0cnVjdHVyZS5nZXQoKS0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAgICAg
IE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yID0gc3Vic3BhY2VGb3I8SlNGaW5hbE9iamVjdD4o
dm0oKSktPmFsbG9jYXRvckZvcihhbGxvY2F0aW9uU2l6ZSk7CiAgICAgICAgIAogICAgICAgICAv
LyBGSVhNRTogSWYgdGhlIGFsbG9jYXRvciBpcyBudWxsLCB3ZSBjb3VsZCBzaW1wbHkgZW1pdCBh
IG5vcm1hbCBDIGNhbGwgdG8gdGhlIGFsbG9jYXRvcgpAQCAtMTA2MzAsNyArMTA2MzAsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgWz1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlv
bnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gewogICAgICAgICAgICAgICAg
IHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICAgICAgb3Bl
cmF0aW9uTmV3T2JqZWN0LCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksCi0gICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsKKyAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZS5nZXQoKSkp
OwogICAgICAgICAgICAgfSk7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBt
X291dC5hbmNob3Ioc2xvd1Jlc3VsdFZhbHVlKTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOwpAQCAtMTM2OTgsMTEgKzEzNjk4LDIxIEBAIHByaXZhdGU6CiAgICAgICAgIGFkZFdl
YWtSZWZlcmVuY2Uoc3RydWN0dXJlKTsKICAgICAgICAgcmV0dXJuIG1fb3V0LmNvbnN0SW50MzIo
c3RydWN0dXJlLT5pZCgpKTsKICAgICB9CisKKyAgICBMVmFsdWUgd2Vha1N0cnVjdHVyZUlEKFJl
Z2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3V0
LmNvbnN0SW50MzIoc3RydWN0dXJlLmdldCgpLT5pZCgpKTsKKyAgICB9CiAgICAgCiAgICAgTFZh
bHVlIHdlYWtTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBy
ZXR1cm4gd2Vha1BvaW50ZXIoc3RydWN0dXJlKTsKICAgICB9CisKKyAgICBMVmFsdWUgd2Vha1N0
cnVjdHVyZShSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX291dC5jb25zdEludFB0cihzdHJ1Y3R1cmUuZ2V0KCkpOworICAgIH0KICAgICAKICAg
ICBUeXBlZFBvaW50ZXIgYWRkcmVzc0ZvcihMVmFsdWUgYmFzZSwgaW50IG9wZXJhbmQsIHB0cmRp
ZmZfdCBvZmZzZXQgPSAwKQogICAgIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299488</attachid>
            <date>2017-01-22 15:16:53 -0800</date>
            <delta_ts>2017-01-23 14:31:33 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>76599</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTEwMDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTQ2OSw2ICsxNDY5LDcgQEAKIAkJNzlFRTBDMDAxQjRB
RkI4NTAwMDM4NUM5IC8qIFZhcmlhYmxlRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RUUwQkZFMUI0QUZCODUwMDAzODVDOSAvKiBW
YXJpYWJsZUVudmlyb25tZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNzlGOEZDMUUxQjlGRUQwRjAwQ0E2NkFCIC8qIERGR01heGltYWxGbHVz
aEluc2VydGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDc5RjhGQzFDMUI5RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJbnNl
cnRpb25QaGFzZS5jcHAgKi87IH07CiAJCTc5RjhGQzFGMUI5RkVEMEYwMENBNjZBQiAvKiBERkdN
YXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzlGOEZDMUQxQjlGRUQwRjAwQ0E2NkFCIC8qIERGR01heGltYWxG
bHVzaEluc2VydGlvblBoYXNlLmggKi87IH07CisJCTc5RkM4QTA4MUUzMkU5RjAwMEQ4OEYwRSAv
KiBERkdSZWdpc3RlcmVkU3RydWN0dXJlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3OUZDOEEwNzFFMzJFOUYwMDBEODhGMEUgLyogREZHUmVnaXN0ZXJl
ZFN0cnVjdHVyZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTdCQzU0N0QzMUI2OTU5QTEwMDk1OUI1OCAvKiBXYXNtRm9ybWF0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkM1NDdEMjFCNjk1OTlCMDA5
NTlCNTggLyogV2FzbUZvcm1hdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTdDMDA4Q0RBMTg3MTI0QkIwMDk1NUMyNCAvKiBKU1Byb21pc2VEZWZl
cnJlZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QzAwOENEODE4NzEyNEJCMDA5NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQuY3BwICovOyB9Owog
CQk3QzAwOENEQjE4NzEyNEJCMDA5NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMDA4Q0Q5MTg3MTI0QkIw
MDk1NUMyNCAvKiBKU1Byb21pc2VEZWZlcnJlZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zOTM2LDYgKzM5MzcsNyBAQAogCQk3OUVFMEJGRTFC
NEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBWYXJpYWJsZUVudmlyb25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTc5RjhGQzFDMUI5RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJ
bnNlcnRpb25QaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBE
RkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHTWF4aW1hbEZs
dXNoSW5zZXJ0aW9uUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3OUY4
RkMxRDFCOUZFRDBGMDBDQTY2QUIgLyogREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9u
UGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3OUZDOEEwNzFFMzJFOUYwMDBEODhGMEUgLyogREZH
UmVnaXN0ZXJlZFN0cnVjdHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBE
RkdSZWdpc3RlcmVkU3RydWN0dXJlLmg7IHBhdGggPSBkZmcvREZHUmVnaXN0ZXJlZFN0cnVjdHVy
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkM1NDdEMjFCNjk1OTlCMDA5NTlC
NTggLyogV2FzbUZvcm1hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNt
Rm9ybWF0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDA4Q0Q4MTg3MTI0QkIw
MDk1NUMyNCAvKiBKU1Byb21pc2VEZWZlcnJlZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1Byb21pc2VEZWZlcnJlZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDMDA4Q0Q5MTg3MTI0QkIwMDk1NUMyNCAvKiBKU1Byb21pc2VEZWZlcnJlZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb21pc2VEZWZlcnJlZC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzA4Myw2ICs3MDg1LDcgQEAKIAkJCQkwRkIx
NzY1RjE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVyZVZhbHVlLmggKi8sCiAJCQkJMEYzQTFCRjcx
QTlFQ0I3RDAwMERFMDFBIC8qIERGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcCAqLywKIAkJCQkw
RjNBMUJGODFBOUVDQjdEMDAwREUwMUEgLyogREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuaCAqLywK
KwkJCQk3OUZDOEEwNzFFMzJFOUYwMDBEODhGMEUgLyogREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5o
ICovLAogCQkJCTg2RUM5REMxMTMyOERGODIwMDJCMkFENyAvKiBERkdSZWdpc3RlckJhbmsuaCAq
LywKIAkJCQkwRjJGQ0NGNDE4QTYwMDcwMDAxQTI3RjggLyogREZHU2FmZXBvaW50LmNwcCAqLywK
IAkJCQkwRjJGQ0NGNTE4QTYwMDcwMDAxQTI3RjggLyogREZHU2FmZXBvaW50LmggKi8sCkBAIC04
MDY3LDYgKzgwNzAsNyBAQAogCQkJCTBGMjFDMjdEMTRCRTcyN0EwMEFEQzY0QiAvKiBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBNzE0QkNGNTA3MDA4
ODVCNEYgLyogQ29kZVR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTc2MjA1MURCOTI0Mjkw
MEI3QTJGRCAvKiBDb2xsZWN0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTc5RkM4QTA4
MUUzMkU5RjAwMEQ4OEYwRSAvKiBERkdSZWdpc3RlcmVkU3RydWN0dXJlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNTMyNDM5ODE4NTZBNDg5MDAyRUQ2OTIgLyogQ29tYmluZWREb21haW5zLmpzb24g
aW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNGMzBFMTZGNUNEMDBCMzQ0NjAgLyogQ29tbW9uSWRl
bnRpZmllcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTVGMTVGMTRCN0E3M0UwMDVERTM3RCAv
KiBDb21tb25TbG93UGF0aHMuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAkocmV2aXNpb24gMjExMDA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODczLDggKzE4NzMs
OCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgfQogICAg
ICAgICAKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDogewotICAgICAgICBBU1NFUlQobm9kZS0+
c3RydWN0dXJlKCktPmNsYXNzSW5mbygpID09IFN0cmluZ09iamVjdDo6aW5mbygpKTsKLSAgICAg
ICAgZm9yTm9kZShub2RlKS5zZXQobV9ncmFwaCwgbm9kZS0+c3RydWN0dXJlKCkpOworICAgICAg
ICBBU1NFUlQobm9kZS0+c3RydWN0dXJlKCkuZ2V0KCktPmNsYXNzSW5mbygpID09IFN0cmluZ09i
amVjdDo6aW5mbygpKTsKKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXQobV9ncmFwaCwgbm9kZS0+
c3RydWN0dXJlKCkuZ2V0KCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgICAgICAK
QEAgLTE5NjMsOCArMTk2Myw4IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHkKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgTmV3T2JqZWN0OgotICAgICAgICBBU1NF
UlQobm9kZS0+c3RydWN0dXJlKCkpOwotICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChtX2dyYXBo
LCBub2RlLT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgIEFTU0VSVChub2RlLT5zdHJ1Y3R1cmUoKS5n
ZXQoKSk7CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIG5vZGUtPnN0cnVjdHVy
ZSgpLmdldCgpKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIENhbGxPYmplY3RDb25zdHJ1
Y3RvcjogewpAQCAtMjAwMCw3ICsyMDAwLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeQogICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgY2FzZSBNYXRlcmlh
bGl6ZU5ld09iamVjdDogewotICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChtX2dyYXBoLCBub2Rl
LT5zdHJ1Y3R1cmVTZXQoKSk7CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIG5v
ZGUtPnN0cnVjdHVyZVNldCgpLmdldCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0y
MjM4LDcgKzIyMzgsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZTogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1
ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwogCi0gICAgICAgIFN0cnVjdHVyZVNldCYgc2V0
ID0gbm9kZS0+c3RydWN0dXJlU2V0KCk7CisgICAgICAgIFN0cnVjdHVyZVNldCYgc2V0ID0gbm9k
ZS0+c3RydWN0dXJlU2V0KCkuZ2V0KCk7CiAgICAgICAgIAogICAgICAgICAvLyBJdCdzIGludGVy
ZXN0aW5nIHRoYXQgd2UgY291bGQgaGF2ZSBwcm92ZW4gdGhhdCB0aGUgb2JqZWN0IGhhcyBhIGxh
cmdlciBzdHJ1Y3R1cmUgc2V0CiAgICAgICAgIC8vIHRoYXQgaW5jbHVkZXMgdGhlIHNldCB3ZSdy
ZSB0ZXN0aW5nLiBJbiB0aGF0IGNhc2Ugd2UgY291bGQgbWFrZSB0aGUgc3RydWN0dXJlIGNoZWNr
CkBAIC0yMjcwLDcgKzIyNzAsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5CiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzY5ODgKICAgICAgICAgCiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIFN0cnVjdHVyZVNldCYgc2V0ID0gbm9kZS0+c3Ry
dWN0dXJlU2V0KCk7CisgICAgICAgIFN0cnVjdHVyZVNldCYgc2V0ID0gbm9kZS0+c3RydWN0dXJl
U2V0KCkuZ2V0KCk7CiAgICAgICAgIAogICAgICAgICBpZiAodmFsdWUudmFsdWUoKSkgewogICAg
ICAgICAgICAgaWYgKFN0cnVjdHVyZSogc3RydWN0dXJlID0ganNEeW5hbWljQ2FzdDxTdHJ1Y3R1
cmUqPih2YWx1ZS52YWx1ZSgpKSkgewpAQCAtMjQzMiw3ICsyNDMyLDcgQEAgYm9vbCBBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgIH0KICAgICBjYXNlIEFycmF5aWZ5VG9T
dHJ1Y3R1cmU6IHsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKTsKLSAgICAgICAgaWYgKHZhbHVlLm1fc3RydWN0dXJlLmlzU3Vic2V0T2YoU3Ry
dWN0dXJlU2V0KG5vZGUtPnN0cnVjdHVyZSgpKSkpCisgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVj
dHVyZS5pc1N1YnNldE9mKFN0cnVjdHVyZVNldChub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSkpKQog
ICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKICAgICAgICAgY2xv
YmJlclN0cnVjdHVyZXMoY2xvYmJlckxpbWl0KTsKICAgICAgICAgCkBAIC0yNDYzLDcgKzI0NjMs
NyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIC8v
IE5vdGUgdGhhdCBpdCdzIHRlbXB0aW5nIHRvIHNpbXBseSBzYXkgdGhhdCB0aGUgcmVzdWx0aW5n
IHZhbHVlIGlzIEJPVFRPTSBiZWNhdXNlIG9mCiAgICAgICAgIC8vIHRoZSBjb250cmFkaWN0aW9u
LiBUaGF0IHdvdWxkIGJlIHdyb25nLCBzaW5jZSB3ZSBoYXZlbid0IGhpdCBhbiBpbnZhbGlkYXRp
b24gcG9pbnQsCiAgICAgICAgIC8vIHlldC4KLSAgICAgICAgdmFsdWUuc2V0KG1fZ3JhcGgsIG5v
ZGUtPnN0cnVjdHVyZSgpKTsKKyAgICAgICAgdmFsdWUuc2V0KG1fZ3JhcGgsIG5vZGUtPnN0cnVj
dHVyZSgpLmdldCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR2V0SW5kZXhl
ZFByb3BlcnR5U3RvcmFnZTogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0VmFsdWUuY3BwCShyZXZpc2lvbiAyMTEwMDUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3
ICs1Miw5IEBAIHZvaWQgQWJzdHJhY3RWYWx1ZTo6c2V0KEdyYXBoJiBncmFwaCwgY28KIHsKICAg
ICBpZiAoISF2YWx1ZSAmJiB2YWx1ZS52YWx1ZSgpLmlzQ2VsbCgpKSB7CiAgICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gdmFsdWUuc3RydWN0dXJlKCk7Ci0gICAgICAgIGlmIChncmFwaC5y
ZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpID09IFN0cnVjdHVyZVJlZ2lzdGVyZWRBbmRXYXRj
aGVkKSB7CisgICAgICAgIFN0cnVjdHVyZVJlZ2lzdHJhdGlvblJlc3VsdCByZXN1bHQ7CisgICAg
ICAgIGdyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSwgcmVzdWx0KTsKKyAgICAgICAg
aWYgKHJlc3VsdCA9PSBTdHJ1Y3R1cmVSZWdpc3RlcmVkQW5kV2F0Y2hlZCkgewogICAgICAgICAg
ICAgbV9zdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CiAgICAgICAgICAgICBpZiAoY2xvYmJlclN0YXRl
ID09IFN0cnVjdHVyZXNBcmVDbG9iYmVyZWQpIHsKICAgICAgICAgICAgICAgICBtX2FycmF5TW9k
ZXMgPSBBTExfQVJSQVlfTU9ERVM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAJKHJldmlzaW9u
IDIxMTAwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWlu
YXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5Myw3ICszOTMsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1
Y3R1cmUpOwogCi0gICAgICAgICAgICAgICAgICAgIGlmICghbm9kZS0+c3RydWN0dXJlU2V0KCku
Y29udGFpbnMoc3RydWN0dXJlKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlLT5zdHJ1
Y3R1cmVTZXQoKS5nZXQoKS5jb250YWlucyhzdHJ1Y3R1cmUpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgZXNjYXBlKG5vZGUtPmNoaWxkMSgpLCBub2RlKTsKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmgJKHJldmlzaW9u
IDIxMTAwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0
aEdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgOiBKdW1waW5nU2xvd1BhdGhHZW5lcmF0b3I8TWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0
Pihmcm9tLCBqaXQpCiAgICAgICAgICwgbV9vcChub2RlLT5vcCgpKQogICAgICAgICAsIG1fYXJy
YXlNb2RlKG5vZGUtPmFycmF5TW9kZSgpKQotICAgICAgICAsIG1fc3RydWN0dXJlKG5vZGUtPm9w
KCkgPT0gQXJyYXlpZnlUb1N0cnVjdHVyZSA/IG5vZGUtPnN0cnVjdHVyZSgpIDogMCkKKyAgICAg
ICAgLCBtX3N0cnVjdHVyZShub2RlLT5vcCgpID09IEFycmF5aWZ5VG9TdHJ1Y3R1cmUgPyBub2Rl
LT5zdHJ1Y3R1cmUoKSA6IFJlZ2lzdGVyZWRTdHJ1Y3R1cmUoKSkKICAgICAgICAgLCBtX2Jhc2VH
UFIoYmFzZUdQUikKICAgICAgICAgLCBtX3Byb3BlcnR5R1BSKHByb3BlcnR5R1BSKQogICAgICAg
ICAsIG1fdGVtcEdQUih0ZW1wR1BSKQpAQCAtMTE1LDcgKzExNSw3IEBAIHByb3RlY3RlZDoKICAg
ICAgICAgaml0LT5tX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAKICAgICAgICAgaWYg
KG1fb3AgPT0gQXJyYXlpZnlUb1N0cnVjdHVyZSkgewotICAgICAgICAgICAgQVNTRVJUKG1fc3Ry
dWN0dXJlKTsKKyAgICAgICAgICAgIEFTU0VSVChtX3N0cnVjdHVyZS5nZXQoKSk7CiAgICAgICAg
ICAgICBtX2JhZEluZGV4aW5nVHlwZUp1bXAuZmlsbCgKICAgICAgICAgICAgICAgICBqaXQsIGpp
dC0+bV9qaXQuYnJhbmNoV2Vha1N0cnVjdHVyZShNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKG1fYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNl
dCgpKSwgbV9zdHJ1Y3R1cmUpKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTEzNiw3ICsxMzYsNyBA
QCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIE5vZGVUeXBlIG1fb3A7CiAgICAgQXJyYXlNb2Rl
IG1fYXJyYXlNb2RlOwotICAgIFN0cnVjdHVyZSogbV9zdHJ1Y3R1cmU7CisgICAgUmVnaXN0ZXJl
ZFN0cnVjdHVyZSBtX3N0cnVjdHVyZTsKICAgICBHUFJSZWcgbV9iYXNlR1BSOwogICAgIEdQUlJl
ZyBtX3Byb3BlcnR5R1BSOwogICAgIEdQUlJlZyBtX3RlbXBHUFI7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMjEx
MDA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI5NjAsNyArMjk2MCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUNvbnN0YW50SW50ZXIKICAgICAgICAgICAgIHJlc3VsdCA9IGFkZFRvR3JhcGgoQ2Fs
bFN0cmluZ0NvbnN0cnVjdG9yLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVn
aXN0ZXJPZmZzZXQpKSk7CiAgICAgICAgIAogICAgICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ29u
c3RydWN0KQotICAgICAgICAgICAgcmVzdWx0ID0gYWRkVG9HcmFwaChOZXdTdHJpbmdPYmplY3Qs
IE9wSW5mbyhmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0KCktPnN0cmluZ09iamVjdFN0cnVjdHVyZSgp
KSwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGFkZFRvR3JhcGgoTmV3U3RyaW5nT2Jq
ZWN0LCBPcEluZm8obV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShmdW5jdGlvbi0+Z2xvYmFsT2Jq
ZWN0KCktPnN0cmluZ09iamVjdFN0cnVjdHVyZSgpKSksIHJlc3VsdCk7CiAgICAgICAgIAogICAg
ICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCByZXN1bHQpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTI5NzIsNyArMjk3Miw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUNvbnN0YW50SW50ZXIKIAogICAgICAgICBOb2RlKiByZXN1bHQ7CiAgICAgICAgIGlm
IChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA8PSAxKQotICAgICAgICAgICAgcmVzdWx0ID0g
YWRkVG9HcmFwaChOZXdPYmplY3QsIE9wSW5mbyhmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0KCktPm9i
amVjdFN0cnVjdHVyZUZvck9iamVjdENvbnN0cnVjdG9yKCkpKTsKKyAgICAgICAgICAgIHJlc3Vs
dCA9IGFkZFRvR3JhcGgoTmV3T2JqZWN0LCBPcEluZm8obV9ncmFwaC5yZWdpc3RlclN0cnVjdHVy
ZShmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0KCktPm9iamVjdFN0cnVjdHVyZUZvck9iamVjdENvbnN0
cnVjdG9yKCkpKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlc3VsdCA9IGFkZFRvR3Jh
cGgoQ2FsbE9iamVjdENvbnN0cnVjdG9yLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQo
MSwgcmVnaXN0ZXJPZmZzZXQpKSk7CiAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0
T3BlcmFuZCksIHJlc3VsdCk7CkBAIC0zNDI5LDcgKzM0MjksNyBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlm
IChvaykKLSAgICAgICAgICAgIGdldEJ5SWRTdGF0dXMuZmlsdGVyKGJhc2UtPnN0cnVjdHVyZSgp
KTsKKyAgICAgICAgICAgIGdldEJ5SWRTdGF0dXMuZmlsdGVyKGJhc2UtPnN0cnVjdHVyZSgpLmdl
dCgpKTsKICAgICB9CiAgICAgCiAgICAgTm9kZVR5cGUgZ2V0QnlJZDsKQEAgLTM5MDAsNyArMzkw
MCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRMYXppbHkocmFyZURhdGEt
PmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIFRoZSBjYWxsZWUgaXMgc3RpbGwgbGl2ZSB1cCB0byB0aGlzIHBvaW50LgogICAgICAg
ICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsZWUpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kKSwgYWRkVG9HcmFwaChOZXdPYmplY3QsIE9wSW5mbyhzdHJ1Y3R1cmUpKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKE5ld09iamVjdCwgT3BJbmZvKG1fZ3JhcGgu
cmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGFscmVhZHlFbWl0dGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIH0KQEAgLTM5MTUsNyArMzkxNSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2sodW5zaWduZWQKICAgICAgICAgY2FzZSBvcF9uZXdfb2JqZWN0OiB7CiAgICAgICAgICAg
ICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLAog
ICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoTmV3T2JqZWN0LAotICAgICAgICAgICAgICAgICAg
ICBPcEluZm8oY3VycmVudEluc3RydWN0aW9uWzNdLnUub2JqZWN0QWxsb2NhdGlvblByb2ZpbGUt
PnN0cnVjdHVyZSgpKSkpOworICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5yZWdp
c3RlclN0cnVjdHVyZShjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZS0+c3RydWN0dXJlKCkpKSkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbmV3X29i
amVjdCk7CiAgICAgICAgIH0KICAgICAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHJldmlzaW9u
IDIxMTAwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5n
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsOSArMTQ3LDkgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgU3RydWN0dXJlU2V0IHNldDsKICAgICAgICAg
ICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBBcnJheWlmeVRvU3RydWN0dXJlKQotICAgICAgICAg
ICAgICAgICAgICBzZXQgPSBub2RlLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgICAgICAgICAg
c2V0ID0gbm9kZS0+c3RydWN0dXJlKCkuZ2V0KCk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICBzZXQgPSBub2RlLT5zdHJ1Y3R1cmVTZXQoKTsKKyAgICAgICAgICAg
ICAgICAgICAgc2V0ID0gbm9kZS0+c3RydWN0dXJlU2V0KCkuZ2V0KCk7CiAgICAgICAgICAgICAg
ICAgaWYgKHZhbHVlLm1fc3RydWN0dXJlLmlzU3Vic2V0T2Yoc2V0KSkgewogICAgICAgICAgICAg
ICAgICAgICBtX2ludGVycHJldGVyLmV4ZWN1dGUoaW5kZXhJbkJsb2NrKTsgLy8gQ2F0Y2ggdGhl
IGZhY3QgdGhhdCB3ZSBtYXkgZmlsdGVyIG9uIGNlbGwuCiAgICAgICAgICAgICAgICAgICAgIG5v
ZGUtPnJlbW92ZSgpOwpAQCAtMjA2LDcgKzIwNiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlSW1tZWRpYXRlOiB7CiAgICAgICAg
ICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hp
bGQxKCkpOwotICAgICAgICAgICAgICAgIFN0cnVjdHVyZVNldCYgc2V0ID0gbm9kZS0+c3RydWN0
dXJlU2V0KCk7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlU2V0JiBzZXQgPSBub2RlLT5zdHJ1
Y3R1cmVTZXQoKS5nZXQoKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAo
dmFsdWUudmFsdWUoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBqc0R5bmFtaWNDYXN0PFN0cnVjdHVyZSo+KHZhbHVlLnZhbHVlKCkpKSB7CkBAIC04
MzgsOCArODM4LDEyIEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBhZGRTdHJ1Y3R1cmVUcmFu
c2l0aW9uQ2hlY2soTm9kZU9yaWdpbiBvcmlnaW4sIHVuc2lnbmVkIGluZGV4SW5CbG9jaywgSlND
ZWxsKiBjZWxsLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIGlmIChtX2dy
YXBoLnJlZ2lzdGVyU3RydWN0dXJlKGNlbGwtPnN0cnVjdHVyZSgpKSA9PSBTdHJ1Y3R1cmVSZWdp
c3RlcmVkQW5kV2F0Y2hlZCkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgeworICAgICAg
ICAgICAgU3RydWN0dXJlUmVnaXN0cmF0aW9uUmVzdWx0IHJlc3VsdDsKKyAgICAgICAgICAgIG1f
Z3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoY2VsbC0+c3RydWN0dXJlKCksIHJlc3VsdCk7CisgICAg
ICAgICAgICBpZiAocmVzdWx0ID09IFN0cnVjdHVyZVJlZ2lzdGVyZWRBbmRXYXRjaGVkKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgbV9ncmFw
aC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDIxMTAwNSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIzNjUsNyArMjM2NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaWYgKHN0cnVjdHVy
ZSkgewogICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAg
ICAgICAgICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBBcnJheWlmeVRv
U3RydWN0dXJlLCBvcmlnaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8oc3RydWN0
dXJlKSwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIEVkZ2UoYXJyYXksIENlbGxVc2UpLCBp
bmRleEVkZ2UpOworICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGgucmVnaXN0
ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKSksIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBFZGdl
KGFycmF5LCBDZWxsVXNlKSwgaW5kZXhFZGdlKTsKICAgICAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAg
ICAgICAgICAgICAgICAgbV9pbmRleEluQmxvY2ssIFNwZWNOb25lLCBBcnJheWlmeSwgb3JpZ2lu
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDIx
MTAwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNDUsOSArMjQ1LDkgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYg
b3V0LCBjb25zdAogICAgIGlmIChub2RlLT5oYXNQcm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcigp
KQogICAgICAgICBvdXQucHJpbnQoY29tbWEsIG5vZGUtPnByb21vdGVkTG9jYXRpb25EZXNjcmlw
dG9yKCkpOwogICAgIGlmIChub2RlLT5oYXNTdHJ1Y3R1cmVTZXQoKSkKLSAgICAgICAgb3V0LnBy
aW50KGNvbW1hLCBpbkNvbnRleHQobm9kZS0+c3RydWN0dXJlU2V0KCksIGNvbnRleHQpKTsKKyAg
ICAgICAgb3V0LnByaW50KGNvbW1hLCBpbkNvbnRleHQobm9kZS0+c3RydWN0dXJlU2V0KCkuZ2V0
KCksIGNvbnRleHQpKTsKICAgICBpZiAobm9kZS0+aGFzU3RydWN0dXJlKCkpCi0gICAgICAgIG91
dC5wcmludChjb21tYSwgaW5Db250ZXh0KCpub2RlLT5zdHJ1Y3R1cmUoKSwgY29udGV4dCkpOwor
ICAgICAgICBvdXQucHJpbnQoY29tbWEsIGluQ29udGV4dCgqbm9kZS0+c3RydWN0dXJlKCkuZ2V0
KCksIGNvbnRleHQpKTsKICAgICBpZiAobm9kZS0+aGFzVHJhbnNpdGlvbigpKSB7CiAgICAgICAg
IG91dC5wcmludChjb21tYSwgcG9pbnRlckR1bXBJbkNvbnRleHQobm9kZS0+dHJhbnNpdGlvbigp
LCBjb250ZXh0KSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKQEAgLTE0MTQsNiArMTQxNCw4IEBAIHZv
aWQgR3JhcGg6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHYKICAgICAgICAgdmlzaXRvci5h
cHBlbmRVbmJhcnJpZXJlZCh2YWx1ZS0+c3RydWN0dXJlKCkpOwogICAgIH0KICAgICAKKyAgICAv
LyBGSVhNRToKKyAgICAvKgogICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbnVtQmxv
Y2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSB0aGlz
LT5ibG9jayhibG9ja0luZGV4KTsKICAgICAgICAgaWYgKCFibG9jaykKQEAgLTE0NjIsNiArMTQ2
NCw3IEBAIHZvaWQgR3JhcGg6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHYKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KKyAgICAqLwogfQogCiBGcm96ZW5WYWx1ZSogR3JhcGg6
OmZyZWV6ZShKU1ZhbHVlIHZhbHVlKQpAQCAtMTUwNywxMiArMTUxMCwxNCBAQCB2b2lkIEdyYXBo
Ojpjb252ZXJ0VG9TdHJvbmdDb25zdGFudChOb2RlCiAgICAgY29udmVydFRvQ29uc3RhbnQobm9k
ZSwgZnJlZXplU3Ryb25nKHZhbHVlKSk7CiB9CiAKLVN0cnVjdHVyZVJlZ2lzdHJhdGlvblJlc3Vs
dCBHcmFwaDo6cmVnaXN0ZXJTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitSZWdpc3Rl
cmVkU3RydWN0dXJlIEdyYXBoOjpyZWdpc3RlclN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgU3RydWN0dXJlUmVnaXN0cmF0aW9uUmVzdWx0JiByZXN1bHQpCiB7CiAgICAgbV9wbGFuLndl
YWtSZWZlcmVuY2VzLmFkZExhemlseShzdHJ1Y3R1cmUpOwogICAgIGlmIChtX3BsYW4ud2F0Y2hw
b2ludHMuY29uc2lkZXIoc3RydWN0dXJlKSkKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyZVJlZ2lz
dGVyZWRBbmRXYXRjaGVkOwotICAgIHJldHVybiBTdHJ1Y3R1cmVSZWdpc3RlcmVkTm9ybWFsbHk7
CisgICAgICAgIHJlc3VsdCA9IFN0cnVjdHVyZVJlZ2lzdGVyZWRBbmRXYXRjaGVkOworICAgIGVs
c2UKKyAgICAgICAgcmVzdWx0ID0gU3RydWN0dXJlUmVnaXN0ZXJlZE5vcm1hbGx5OworICAgIHJl
dHVybiBSZWdpc3RlcmVkU3RydWN0dXJlOjpjcmVhdGVQcml2YXRlKHN0cnVjdHVyZSk7CiB9CiAK
IHZvaWQgR3JhcGg6OmFzc2VydElzUmVnaXN0ZXJlZChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDIxMTAwNSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAt
MjEzLDcgKzIxMywxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb252ZXJ0VG9Db25zdGFudChOb2Rl
KiBub2RlLCBKU1ZhbHVlIHZhbHVlKTsKICAgICB2b2lkIGNvbnZlcnRUb1N0cm9uZ0NvbnN0YW50
KE5vZGUqIG5vZGUsIEpTVmFsdWUgdmFsdWUpOwogICAgIAotICAgIFN0cnVjdHVyZVJlZ2lzdHJh
dGlvblJlc3VsdCByZWdpc3RlclN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSk7CisgICAg
UmVnaXN0ZXJlZFN0cnVjdHVyZSByZWdpc3RlclN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKKyAgICB7CisgICAgICAgIFN0cnVjdHVyZVJlZ2lzdHJhdGlvblJlc3VsdCBpZ25vcmVkOwor
ICAgICAgICByZXR1cm4gcmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlLCBpZ25vcmVkKTsKKyAg
ICB9CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSByZWdpc3RlclN0cnVjdHVyZShTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgU3RydWN0dXJlUmVnaXN0cmF0aW9uUmVzdWx0JiByZXN1bHQpOwogICAgIHZv
aWQgYXNzZXJ0SXNSZWdpc3RlcmVkKFN0cnVjdHVyZSogc3RydWN0dXJlKTsKICAgICAKICAgICAv
LyBDb2RlQmxvY2sgaXMgb3B0aW9uYWwsIGJ1dCBtYXkgYWxsb3cgYWRkaXRpb25hbCBpbmZvcm1h
dGlvbiB0byBiZSBkdW1wZWQgKGUuZy4gSWRlbnRpZmllciBuYW1lcykuCkBAIC0zNDEsMTIgKzM0
NiwxMiBAQCBwdWJsaWM6CiAgICAgCiAgICAgc3RhdGljIGNvbnN0IGNoYXIgKm9wTmFtZShOb2Rl
VHlwZSk7CiAgICAgCi0gICAgU3RydWN0dXJlU2V0KiBhZGRTdHJ1Y3R1cmVTZXQoY29uc3QgU3Ry
dWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQpCisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBhZGRT
dHJ1Y3R1cmVTZXQoY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQpCiAgICAgewogICAg
ICAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogc3RydWN0dXJlU2V0KQogICAgICAgICAg
ICAgcmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKTsKICAgICAgICAgbV9zdHJ1Y3R1cmVTZXQu
YXBwZW5kKHN0cnVjdHVyZVNldCk7Ci0gICAgICAgIHJldHVybiAmbV9zdHJ1Y3R1cmVTZXQubGFz
dCgpOworICAgICAgICByZXR1cm4gUmVnaXN0ZXJlZFN0cnVjdHVyZVNldDo6Y3JlYXRlUHJpdmF0
ZSgmbV9zdHJ1Y3R1cmVTZXQubGFzdCgpKTsKICAgICB9CiAgICAgCiAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdEZvcihDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lvbiAyMTEwMDUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI0MiwxNCArMjQyLDE0IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgotICAgIEp1bXAgYnJhbmNoV2Vha1N0cnVjdHVyZShSZWxhdGlvbmFsQ29uZGl0
aW9uIGNvbmQsIFQgbGVmdCwgU3RydWN0dXJlKiB3ZWFrU3RydWN0dXJlKQorICAgIEp1bXAgYnJh
bmNoV2Vha1N0cnVjdHVyZShSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFQgbGVmdCwgUmVnaXN0
ZXJlZFN0cnVjdHVyZSB3ZWFrU3RydWN0dXJlKQogICAgIHsKKyAgICAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSB3ZWFrU3RydWN0dXJlLmdldCgpOwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAg
ICAgIEp1bXAgcmVzdWx0ID0gYnJhbmNoMzIoY29uZCwgbGVmdCwgVHJ1c3RlZEltbTMyKHdlYWtT
dHJ1Y3R1cmUtPmlkKCkpKTsKLSAgICAgICAgYWRkV2Vha1JlZmVyZW5jZSh3ZWFrU3RydWN0dXJl
KTsKKyAgICAgICAgSnVtcCByZXN1bHQgPSBicmFuY2gzMihjb25kLCBsZWZ0LCBUcnVzdGVkSW1t
MzIoc3RydWN0dXJlLT5pZCgpKSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZQotICAg
ICAgICByZXR1cm4gYnJhbmNoV2Vha1B0cihjb25kLCBsZWZ0LCB3ZWFrU3RydWN0dXJlKTsKKyAg
ICAgICAgcmV0dXJuIGJyYW5jaFB0cihjb25kLCBsZWZ0LCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVy
ZSkpOwogI2VuZGlmCiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aAkocmV2aXNpb24gMjExMDA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJERkdOb2RlVHlw
ZS5oIgogI2luY2x1ZGUgIkRGR09iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuaCIKICNpbmNsdWRl
ICJERkdPcEluZm8uaCIKKyNpbmNsdWRlICJERkdSZWdpc3RlcmVkU3RydWN0dXJlLmgiCiAjaW5j
bHVkZSAiREZHVHJhbnNpdGlvbi5oIgogI2luY2x1ZGUgIkRGR1VzZUtpbmQuaCIKICNpbmNsdWRl
ICJERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCIKQEAgLTQxMCwxMCArNDExLDEwIEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgcmVtb3ZlKCk7CiAKLSAgICB2b2lkIGNvbnZlcnRUb0NoZWNrU3RydWN0dXJl
KFN0cnVjdHVyZVNldCogc2V0KQorICAgIHZvaWQgY29udmVydFRvQ2hlY2tTdHJ1Y3R1cmUoUmVn
aXN0ZXJlZFN0cnVjdHVyZVNldCBzZXQpCiAgICAgewogICAgICAgICBzZXRPcEFuZERlZmF1bHRG
bGFncyhDaGVja1N0cnVjdHVyZSk7Ci0gICAgICAgIG1fb3BJbmZvID0gc2V0OyAKKyAgICAgICAg
bV9vcEluZm8gPSBzZXQ7CiAgICAgfQogCiAgICAgdm9pZCBjb252ZXJ0VG9DaGVja1N0cnVjdHVy
ZUltbWVkaWF0ZShOb2RlKiBzdHJ1Y3R1cmUpCkBAIC0xNjE0LDEwICsxNjE1LDEwIEBAIHB1Ymxp
YzoKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNl
dCgpCisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBzdHJ1Y3R1cmVTZXQoKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGhhc1N0cnVjdHVyZVNldCgpKTsKLSAgICAgICAgcmV0dXJuICptX29wSW5m
by5hczxTdHJ1Y3R1cmVTZXQqPigpOworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXNSZWdpc3Rl
cmVkU3RydWN0dXJlU2V0KCk7CiAgICAgfQogICAgIAogICAgIGJvb2wgaGFzU3RydWN0dXJlKCkK
QEAgLTE2MzIsMTAgKzE2MzMsMTAgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogICAgIAot
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVj
dHVyZSgpCiAgICAgewogICAgICAgICBBU1NFUlQoaGFzU3RydWN0dXJlKCkpOwotICAgICAgICBy
ZXR1cm4gbV9vcEluZm8uYXM8U3RydWN0dXJlKj4oKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZv
LmFzUmVnaXN0ZXJlZFN0cnVjdHVyZSgpOwogICAgIH0KICAgICAKICAgICBib29sIGhhc1N0b3Jh
Z2VBY2Nlc3NEYXRhKCkKQEAgLTI1MTMsNiArMjUxNCwxNiBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgdS5pbnQ2NCA9IDA7CiAgICAgICAgICAgICB1LmNvbnN0UG9pbnRlciA9IGNvbnN0UG9pbnRl
cjsKICAgICAgICAgfQorICAgICAgICBPcEluZm9XcmFwcGVyKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
c3RydWN0dXJlKQorICAgICAgICB7CisgICAgICAgICAgICB1LmludDY0ID0gMDsKKyAgICAgICAg
ICAgIHUucG9pbnRlciA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RydWN0dXJlKTsKKyAgICAgICAg
fQorICAgICAgICBPcEluZm9XcmFwcGVyKFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgc2V0KQorICAg
ICAgICB7CisgICAgICAgICAgICB1LmludDY0ID0gMDsKKyAgICAgICAgICAgIHUucG9pbnRlciA9
IGJpdHdpc2VfY2FzdDx2b2lkKj4oc2V0KTsKKyAgICAgICAgfQogICAgICAgICBPcEluZm9XcmFw
cGVyJiBvcGVyYXRvcj0odWludDMyX3QgaW50MzIpCiAgICAgICAgIHsKICAgICAgICAgICAgIHUu
aW50NjQgPSAwOwpAQCAtMjU0Miw2ICsyNTUzLDE4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB1
LmNvbnN0UG9pbnRlciA9IGNvbnN0UG9pbnRlcjsKICAgICAgICAgICAgIHJldHVybiAqdGhpczsK
ICAgICAgICAgfQorICAgICAgICBPcEluZm9XcmFwcGVyJiBvcGVyYXRvcj0oUmVnaXN0ZXJlZFN0
cnVjdHVyZSBzdHJ1Y3R1cmUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHUuaW50NjQgPSAwOwor
ICAgICAgICAgICAgdS5wb2ludGVyID0gYml0d2lzZV9jYXN0PHZvaWQqPihzdHJ1Y3R1cmUpOwor
ICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICB9CisgICAgICAgIE9wSW5mb1dyYXBw
ZXImIG9wZXJhdG9yPShSZWdpc3RlcmVkU3RydWN0dXJlU2V0IHNldCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdS5pbnQ2NCA9IDA7CisgICAgICAgICAgICB1LnBvaW50ZXIgPSBiaXR3aXNlX2Nh
c3Q8dm9pZCo+KHNldCk7CisgICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAgIH0KICAg
ICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgICAgIEFMV0FZU19JTkxJTkUgYXV0byBh
cygpIGNvbnN0IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRlcjxUPjo6
dmFsdWUgJiYgIXN0ZDo6aXNfY29uc3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxUPjo6
dHlwZT46OnZhbHVlLCBUPjo6dHlwZQogICAgICAgICB7CkBAIC0yNTYyLDYgKzI1ODUsMTUgQEAg
cHJpdmF0ZToKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIHUuaW50NjQ7CiAgICAgICAg
IH0KKyAgICAgICAgQUxXQVlTX0lOTElORSBSZWdpc3RlcmVkU3RydWN0dXJlIGFzUmVnaXN0ZXJl
ZFN0cnVjdHVyZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBiaXR3aXNl
X2Nhc3Q8UmVnaXN0ZXJlZFN0cnVjdHVyZT4odS5wb2ludGVyKTsKKyAgICAgICAgfQorICAgICAg
ICBBTFdBWVNfSU5MSU5FIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgYXNSZWdpc3RlcmVkU3RydWN0
dXJlU2V0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2Fz
dDxSZWdpc3RlcmVkU3RydWN0dXJlU2V0Pih1LnBvaW50ZXIpOworICAgICAgICB9CisKICAgICAg
ICAgdW5pb24gewogICAgICAgICAgICAgdWludDMyX3QgaW50MzI7CiAgICAgICAgICAgICB1aW50
NjRfdCBpbnQ2NDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxs
b2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkocmV2aXNpb24gMjEx
MDA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lu
a2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMwLDkgKzgzMCw5IEBAIHByaXZhdGU6
CiAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAgICAgICBjYXNlIE5ld09iamVjdDoK
ICAgICAgICAgICAgIHRhcmdldCA9ICZtX2hlYXAubmV3QWxsb2NhdGlvbihub2RlLCBBbGxvY2F0
aW9uOjpLaW5kOjpPYmplY3QpOwotICAgICAgICAgICAgdGFyZ2V0LT5zZXRTdHJ1Y3R1cmVzKG5v
ZGUtPnN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIHRhcmdldC0+c2V0U3RydWN0dXJlcyhub2Rl
LT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CiAgICAgICAgICAgICB3cml0ZXMuYWRkKAotICAgICAgICAg
ICAgICAgIFN0cnVjdHVyZVBMb2MsIExhenlOb2RlKG1fZ3JhcGguZnJlZXplKG5vZGUtPnN0cnVj
dHVyZSgpKSkpOworICAgICAgICAgICAgICAgIFN0cnVjdHVyZVBMb2MsIExhenlOb2RlKG1fZ3Jh
cGguZnJlZXplKG5vZGUtPnN0cnVjdHVyZSgpLmdldCgpKSkpOwogICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKQEAgLTg4OCw3ICs4ODgsNyBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlOiB7CiAgICAgICAgICAgICBBbGxvY2F0aW9u
KiBhbGxvY2F0aW9uID0gbV9oZWFwLm9ubHlMb2NhbEFsbG9jYXRpb24obm9kZS0+Y2hpbGQxKCku
bm9kZSgpKTsKICAgICAgICAgICAgIGlmIChhbGxvY2F0aW9uICYmIGFsbG9jYXRpb24tPmlzT2Jq
ZWN0QWxsb2NhdGlvbigpKSB7Ci0gICAgICAgICAgICAgICAgYWxsb2NhdGlvbi0+ZmlsdGVyU3Ry
dWN0dXJlcyhub2RlLT5zdHJ1Y3R1cmVTZXQoKSk7CisgICAgICAgICAgICAgICAgYWxsb2NhdGlv
bi0+ZmlsdGVyU3RydWN0dXJlcyhub2RlLT5zdHJ1Y3R1cmVTZXQoKS5nZXQoKSk7CiAgICAgICAg
ICAgICAgICAgaWYgKE5vZGUqIHZhbHVlID0gaGVhcFJlc29sdmUoUHJvbW90ZWRIZWFwTG9jYXRp
b24oYWxsb2NhdGlvbi0+aWRlbnRpZmllcigpLCBTdHJ1Y3R1cmVQTG9jKSkpCiAgICAgICAgICAg
ICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0NoZWNrU3RydWN0dXJlSW1tZWRpYXRlKHZhbHVlKTsK
ICAgICAgICAgICAgIH0gZWxzZQpAQCAtMTQ0NCw3ICsxNDQ0LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgc3dpdGNoIChhbGxvY2F0aW9uLmtpbmQoKSkgewogICAgICAgICBjYXNlIEFsbG9jYXRpb246
OktpbmQ6Ok9iamVjdDogewogICAgICAgICAgICAgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSog
ZGF0YSA9IG1fZ3JhcGgubV9vYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmFkZCgpOwotICAgICAg
ICAgICAgU3RydWN0dXJlU2V0KiBzZXQgPSBtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChhbGxvY2F0
aW9uLnN0cnVjdHVyZXMoKSk7CisgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0IHNl
dCA9IG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KGFsbG9jYXRpb24uc3RydWN0dXJlcygpKTsKIAog
ICAgICAgICAgICAgcmV0dXJuIG1fZ3JhcGguYWRkTm9kZSgKICAgICAgICAgICAgICAgICBhbGxv
Y2F0aW9uLmlkZW50aWZpZXIoKS0+cHJlZGljdGlvbigpLCBOb2RlOjpWYXJBcmcsIE1hdGVyaWFs
aXplTmV3T2JqZWN0LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCShy
ZXZpc2lvbiAyMTEwMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5j
bHVkZSAiSGVhcENlbGwuaCIKKyNpbmNsdWRlICJERkdSZWdpc3RlcmVkU3RydWN0dXJlLmgiCiAj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC00
Miw4ICs0NCwxOCBAQCBzdHJ1Y3QgT3BJbmZvIHsKICNpZiBPUyhEQVJXSU4pCiAgICAgZXhwbGlj
aXQgT3BJbmZvKHVpbnRwdHJfdCB2YWx1ZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnQ2NF90
Pih2YWx1ZSkpIHsgfQogI2VuZGlmCi0gICAgZXhwbGljaXQgT3BJbmZvKHZvaWQqIHZhbHVlKSA6
IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90
Pih2YWx1ZSkpKSB7IH0KLSAgICBleHBsaWNpdCBPcEluZm8oY29uc3Qgdm9pZCogdmFsdWUpIDog
bV92YWx1ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+
KHZhbHVlKSkpIHsgfQorICAgIGV4cGxpY2l0IE9wSW5mbyhSZWdpc3RlcmVkU3RydWN0dXJlIHN0
cnVjdHVyZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihiaXR3aXNlX2Nhc3Q8dWlu
dHB0cl90PihzdHJ1Y3R1cmUpKSkgeyB9CisgICAgZXhwbGljaXQgT3BJbmZvKFJlZ2lzdGVyZWRT
dHJ1Y3R1cmVTZXQgc2V0KSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGJpdHdpc2Vf
Y2FzdDx1aW50cHRyX3Q+KHNldCkpKSB7IH0KKworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CisgICAgZXhwbGljaXQgT3BJbmZvKFQqIHB0cikKKyAgICB7CisgICAgICAgIHN0YXRpY19hc3Nl
cnQoIXN0ZDo6aXNfYmFzZV9vZjxIZWFwQ2VsbCwgVD46OnZhbHVlLCAiVG8gbWFrZSBhbiBPcElu
Zm8gd2l0aCBhIGNlbGwgaW4gaXQsIHRoZSBjZWxsIG11c3QgYmUgcmVnaXN0ZXJlZCBvciBmcm96
ZW4uIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxTdHJ1Y3R1cmVT
ZXQsIFQ+Ojp2YWx1ZSwgIlRvIG1ha2UgYW4gT3BJbmZvIHdpdGggYSBzdHJ1Y3R1cmUgc2V0IGlu
LCBtYWtlIHN1cmUgdG8gdXNlIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQuIik7CisgICAgICAgIG1f
dmFsdWUgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+
KHB0cikpOworICAgIH0KKwogICAgIHVpbnQ2NF90IG1fdmFsdWU7CiB9OwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyZWRT
dHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1
cmVTZXQuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCitjbGFzcyBHcmFw
aDsKK2NsYXNzIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQ7CisKK2NsYXNzIFJlZ2lzdGVyZWRTdHJ1
Y3R1cmUgeworcHVibGljOgorICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUoKSA9IGRlZmF1bHQ7Cisg
ICAgQUxXQVlTX0lOTElORSBTdHJ1Y3R1cmUqIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0
dXJlOyB9CisgICAgU3RydWN0dXJlKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7
IH0KKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgR3JhcGg7CisgICAgZnJpZW5kIGNsYXNz
IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQ7CisKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlKFN0cnVj
dHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IG1fc3RydWN0dXJlKHN0cnVjdHVyZSkKKyAgICB7
CisgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUpOworICAgIH0KKworICAgIHN0YXRpYyBSZWdpc3Rl
cmVkU3RydWN0dXJlIGNyZWF0ZVByaXZhdGUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgewor
ICAgICAgICByZXR1cm4gUmVnaXN0ZXJlZFN0cnVjdHVyZShzdHJ1Y3R1cmUpOworICAgIH0KKwor
ICAgIFN0cnVjdHVyZSogbV9zdHJ1Y3R1cmUgeyBudWxscHRyIH07Cit9OworCitjbGFzcyBSZWdp
c3RlcmVkU3RydWN0dXJlU2V0IHsKK3B1YmxpYzoKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0
KCkgPSBkZWZhdWx0OworICAgIEFMV0FZU19JTkxJTkUgU3RydWN0dXJlU2V0JiBnZXQoKSBjb25z
dCB7IHJldHVybiAqbV9zZXQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUgYXQoc2l6ZV90IGkpIHsgcmV0dXJuIFJlZ2lzdGVyZWRTdHJ1Y3R1cmU6OmNyZWF0ZVByaXZh
dGUoZ2V0KClbaV0pOyB9CisgICAgQUxXQVlTX0lOTElORSBSZWdpc3RlcmVkU3RydWN0dXJlIGxh
c3QoKSB7IHJldHVybiBhdChnZXQoKS5zaXplKCkgLSAxKTsgfQorICAgIEFMV0FZU19JTkxJTkUg
c2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBnZXQoKS5zaXplKCk7IH0KK3ByaXZhdGU6Cisg
ICAgZnJpZW5kIGNsYXNzIEdyYXBoOworCisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldChTdHJ1
Y3R1cmVTZXQqIHNldCkKKyAgICAgICAgOiBtX3NldChzZXQpCisgICAgeworICAgICAgICBBU1NF
UlQoc2V0KTsKKyAgICB9CisKKyAgICBzdGF0aWMgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBjcmVh
dGVQcml2YXRlKFN0cnVjdHVyZVNldCogc2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFJlZ2lz
dGVyZWRTdHJ1Y3R1cmVTZXQoc2V0KTsKKyAgICB9CisgICAgU3RydWN0dXJlU2V0KiBtX3NldCB7
IG51bGxwdHIgfTsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8v
IEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyMTEwMDUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNzczLDcgKzM3NzMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAg
ICAgICAgR1BSUmVnIHN0b3JhZ2VHUFIgPSBzdG9yYWdlLmdwcigpOwogCi0gICAgICAgICAgICBl
bWl0QWxsb2NhdGVSYXdPYmplY3QocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHN0b3JhZ2VHUFIsIG51
bUVsZW1lbnRzLCBudW1FbGVtZW50cyk7CisgICAgICAgICAgICBlbWl0QWxsb2NhdGVSYXdPYmpl
Y3QocmVzdWx0R1BSLCBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSks
IHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRzLCBudW1FbGVtZW50cyk7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQsIG9uZSB3YXkgb3IgYW5vdGhlciwgcmVzdWx0R1BS
IGFuZCBzdG9yYWdlR1BSIGhhdmUgcG9pbnRlcnMgdG8KICAgICAgICAgICAgIC8vIHRoZSBKU0Fy
cmF5IGFuZCB0aGUgQnV0dGVyZmx5LCByZXNwZWN0aXZlbHkuCkBAIC0zOTc5LDcgKzM5NzksNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHN0b3Jh
Z2VHUFIgPSBzdG9yYWdlLmdwcigpOwogCi0gICAgICAgICAgICBlbWl0QWxsb2NhdGVSYXdPYmpl
Y3QocmVzdWx0R1BSLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBl
RHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cywg
bnVtRWxlbWVudHMpOworICAgICAgICAgICAgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQ
UiwgbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3Ry
dWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpKSwgc3Rv
cmFnZUdQUiwgbnVtRWxlbWVudHMsIG51bUVsZW1lbnRzKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBpbmRleGluZ1R5cGUgJiBJc0Fy
cmF5KTsKICAgICAgICAgICAgIEpTVmFsdWUqIGRhdGEgPSBtX2ppdC5jb2RlQmxvY2soKS0+Y29u
c3RhbnRCdWZmZXIobm9kZS0+c3RhcnRDb25zdGFudCgpKTsKQEAgLTQxNDMsNyArNDE0Myw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBzbG93UGF0aDsKIAotICAgICAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IG5vZGUtPnN0cnVjdHVyZSgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IG5vZGUtPnN0cnVjdHVyZSgpLmdldCgpOwogICAgICAgICBzaXplX3QgYWxsb2Nh
dGlvblNpemUgPSBKU0ZpbmFsT2JqZWN0OjphbGxvY2F0aW9uU2l6ZShzdHJ1Y3R1cmUtPmlubGlu
ZUNhcGFjaXR5KCkpOwogICAgICAgICBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvclB0ciA9IHN1
YnNwYWNlRm9yPEpTRmluYWxPYmplY3Q+KCptX2ppdC52bSgpKS0+YWxsb2NhdG9yRm9yKGFsbG9j
YXRpb25TaXplKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDIxMTAwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw4ICs4
NCw5IEBAIFNwZWN1bGF0aXZlSklUOjp+U3BlY3VsYXRpdmVKSVQoKQogewogfQogCi12b2lkIFNw
ZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVSYXdPYmplY3QoR1BSUmVnIHJlc3VsdEdQUiwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBzdG9yYWdlR1BSLCB1bnNpZ25lZCBudW1FbGVtZW50
cywgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9j
YXRlUmF3T2JqZWN0KEdQUlJlZyByZXN1bHRHUFIsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgcmVnaXN0
ZXJlZFN0cnVjdHVyZSwgR1BSUmVnIHN0b3JhZ2VHUFIsIHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1
bnNpZ25lZCB2ZWN0b3JMZW5ndGgpCiB7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSByZWdp
c3RlcmVkU3RydWN0dXJlLmdldCgpOwogICAgIEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUgPSBz
dHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpOwogICAgIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIgPSBo
YXNJbmRleGVkUHJvcGVydGllcyhpbmRleGluZ1R5cGUpOwogCkBAIC03NDc1LDE1ICs3NDc2LDE1
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUeXBlT2YoTm9kZSoKIAogdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrU3RydWN0dXJlKE5vZGUqIG5vZGUsIEdQUlJlZyBjZWxs
R1BSLCBHUFJSZWcgdGVtcEdQUikKIHsKLSAgICBBU1NFUlQobm9kZS0+c3RydWN0dXJlU2V0KCku
c2l6ZSgpKTsKKyAgICBBU1NFUlQobm9kZS0+c3RydWN0dXJlU2V0KCkuZ2V0KCkuc2l6ZSgpKTsK
ICAgICAKLSAgICBpZiAobm9kZS0+c3RydWN0dXJlU2V0KCkuc2l6ZSgpID09IDEpIHsKKyAgICBp
ZiAobm9kZS0+c3RydWN0dXJlU2V0KCkuZ2V0KCkuc2l6ZSgpID09IDEpIHsKICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjaygKICAgICAgICAgICAgIEJhZENhY2hlLCBKU1ZhbHVlU291cmNlOjp1bmJv
eGVkQ2VsbChjZWxsR1BSKSwgMCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFdlYWtTdHJ1Y3R1
cmUoCiAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLAogICAgICAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpBZGRyZXNzKGNlbGxHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZz
ZXQoKSksCi0gICAgICAgICAgICAgICAgbm9kZS0+c3RydWN0dXJlU2V0KClbMF0pKTsKKyAgICAg
ICAgICAgICAgICBub2RlLT5zdHJ1Y3R1cmVTZXQoKS5hdCgwKSkpOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxHUFJUZW1wb3Jhcnk+IHN0cnVjdHVyZTsKICAgICAgICAg
R1BSUmVnIHN0cnVjdHVyZUdQUjsKQEAgLTc0OTgsOSArNzQ5OSw5IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVDaGVja1N0cnVjdHUKICAgICAgICAgCiAgICAgICAgIEpJVENvbXBpbGVy
OjpKdW1wTGlzdCBkb25lOwogICAgICAgICAKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBub2RlLT5zdHJ1Y3R1cmVTZXQoKS5zaXplKCkgLSAxOyArK2kpIHsKKyAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBub2RlLT5zdHJ1Y3R1cmVTZXQoKS5nZXQoKS5zaXplKCkgLSAxOyAr
K2kpIHsKICAgICAgICAgICAgIGRvbmUuYXBwZW5kKAotICAgICAgICAgICAgICAgIG1faml0LmJy
YW5jaFdlYWtTdHJ1Y3R1cmUoSklUQ29tcGlsZXI6OkVxdWFsLCBzdHJ1Y3R1cmVHUFIsIG5vZGUt
PnN0cnVjdHVyZVNldCgpW2ldKSk7CisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoV2Vha1N0
cnVjdHVyZShKSVRDb21waWxlcjo6RXF1YWwsIHN0cnVjdHVyZUdQUiwgbm9kZS0+c3RydWN0dXJl
U2V0KCkuYXQoaSkpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgc3BlY3VsYXRpb25D
aGVjaygKQEAgLTc5MjYsNyArNzkyNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVO
ZXdTdHJpbmdPYmoKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd1BhdGg7CiAgICAgCiAg
ICAgZW1pdEFsbG9jYXRlSlNPYmplY3Q8U3RyaW5nT2JqZWN0PigKLSAgICAgICAgcmVzdWx0R1BS
LCBUcnVzdGVkSW1tUHRyKG5vZGUtPnN0cnVjdHVyZSgpKSwgVHJ1c3RlZEltbVB0cigwKSwgc2Ny
YXRjaDFHUFIsIHNjcmF0Y2gyR1BSLAorICAgICAgICByZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIo
bm9kZS0+c3RydWN0dXJlKCkuZ2V0KCkpLCBUcnVzdGVkSW1tUHRyKDApLCBzY3JhdGNoMUdQUiwg
c2NyYXRjaDJHUFIsCiAgICAgICAgIHNsb3dQYXRoKTsKICAgICAKICAgICBtX2ppdC5zdG9yZVB0
cigKQEAgLTc5NDcsNyArNzk0OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdT
dHJpbmdPYmoKICAgICBtX2ppdC5tdXRhdG9yRmVuY2UoKTsKICAgICAKICAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcihzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRp
b25OZXdTdHJpbmdPYmplY3QsIHJlc3VsdEdQUiwgb3BlcmFuZEdQUiwgbm9kZS0+c3RydWN0dXJl
KCkpKTsKKyAgICAgICAgc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbk5ld1N0cmluZ09iamVjdCwg
cmVzdWx0R1BSLCBvcGVyYW5kR1BSLCBub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSkpOwogICAgIAog
ICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KQEAgLTkyNjcsNyArOTI2OCw4IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVMYXp5SlNDb25zdGEKIAogdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0KE5vZGUqIG5vZGUpCiB7Ci0gICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBub2RlLT5zdHJ1Y3R1cmVTZXQoKVswXTsKKyAgICBSZWdp
c3RlcmVkU3RydWN0dXJlIHJlZ2lzdGVyZWRTdHJ1Y3R1cmUgPSBub2RlLT5zdHJ1Y3R1cmVTZXQo
KS5hdCgwKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHJlZ2lzdGVyZWRTdHJ1Y3R1cmUu
Z2V0KCk7CiAgICAgQVNTRVJUKG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMCktPmR5
bmFtaWNDYXN0Q29uc3RhbnQ8U3RydWN0dXJlKj4oKSA9PSBzdHJ1Y3R1cmUpOwogCiAgICAgT2Jq
ZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSYgZGF0YSA9IG5vZGUtPm9iamVjdE1hdGVyaWFsaXphdGlv
bkRhdGEoKTsKQEAgLTkyOTgsNyArOTMwMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVNYXRlcmlhbGl6ZU4KICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAg
IEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKICAgICAKLSAgICBlbWl0QWxsb2Nh
dGVSYXdPYmplY3QocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHN0b3JhZ2VHUFIsIDAsIHZlY3Rvckxl
bmd0aCk7CisgICAgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQUiwgcmVnaXN0ZXJlZFN0
cnVjdHVyZSwgc3RvcmFnZUdQUiwgMCwgdmVjdG9yTGVuZ3RoKTsKICAgICAKICAgICBtX2ppdC5z
dG9yZTMyKAogICAgICAgICBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKHB1YmxpY0xlbmd0aCks
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CShyZXZpc2lvbiAyMTEwMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTI3NTksNyArMjc1OSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgbV9qaXQuZW1pdEFsbG9jYXRlRGVzdHJ1Y3RpYmxlT2JqZWN0PENsYXNzVHlwZT4o
cmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BSMiwgc2xvd1BhdGgp
OwogICAgIH0KIAotICAgIHZvaWQgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KEdQUlJlZyByZXN1bHRH
UFIsIFN0cnVjdHVyZSosIEdQUlJlZyBzdG9yYWdlR1BSLCB1bnNpZ25lZCBudW1FbGVtZW50cywg
dW5zaWduZWQgdmVjdG9yTGVuZ3RoKTsKKyAgICB2b2lkIGVtaXRBbGxvY2F0ZVJhd09iamVjdChH
UFJSZWcgcmVzdWx0R1BSLCBSZWdpc3RlcmVkU3RydWN0dXJlLCBHUFJSZWcgc3RvcmFnZUdQUiwg
dW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCk7CiAgICAgCiAgICAg
dm9pZCBlbWl0R2V0TGVuZ3RoKElubGluZUNhbGxGcmFtZSosIEdQUlJlZyBsZW5ndGhHUFIsIGJv
b2wgaW5jbHVkZVRoaXMgPSBmYWxzZSk7CiAgICAgdm9pZCBlbWl0R2V0TGVuZ3RoKENvZGVPcmln
aW4sIEdQUlJlZyBsZW5ndGhHUFIsIGJvb2wgaW5jbHVkZVRoaXMgPSBmYWxzZSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rp
b25QaGFzZS5jcHAJKHJldmlzaW9uIDIxMTAwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0MCw3
ICs1NDAsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICBpZiAobV9ub2RlLT5vcCgpID09IFJl
Z0V4cEV4ZWMpIHsKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgICAgICAg
ICAgICAgIFN0cnVjdHVyZVNldCogc3RydWN0dXJlU2V0ID0gbV9ncmFwaC5hZGRTdHJ1Y3R1cmVT
ZXQoc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNl
dCBzdHJ1Y3R1cmVTZXQgPSBtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpOwogCiAg
ICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhbiBhcnJheSBtb2RlbGluZyB0aGUgSlMgYXJy
YXkgdGhhdCB3ZSB3aWxsIHRyeSB0byBhbGxvY2F0ZS4gVGhpcyBpcwogICAgICAgICAgICAgICAg
ICAgICAvLyBiYXNpY2FsbHkgY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5IGJ1dCBvdmVyIEMrKyBz
dHJpbmdzIGluc3RlYWQgb2YgSlNTdHJpbmdzLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAJ
KHJldmlzaW9uIDIxMTAwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0
dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCwxMyArNzQsMTMg
QEAgcHVibGljOgogICAgICAgICAgICAgZm9yIChhdXRvKiBub2RlIDogKmJsb2NrKSB7CiAgICAg
ICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBD
aGVja1N0cnVjdHVyZToKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0QXJlUmVnaXN0ZXJlZChu
b2RlLT5zdHJ1Y3R1cmVTZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydEFyZVJlZ2lz
dGVyZWQobm9kZS0+c3RydWN0dXJlU2V0KCkuZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjYXNlIE5ld09iamVjdDoK
ICAgICAgICAgICAgICAgICBjYXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6CiAgICAgICAgICAgICAg
ICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6Ci0gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3Ry
dWN0dXJlKG5vZGUtPnN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJT
dHJ1Y3R1cmUobm9kZS0+c3RydWN0dXJlKCkuZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjYXNlIFB1dFN0cnVjdHVy
ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQ
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBl
Q2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjExMDA1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDY1LDIzICs0NjUsMjMgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogICAgIAotICAgIHZvaWQgbm90aWNlU3RydWN0dXJlQ2hlY2soVmFyaWFibGVBY2Nlc3NE
YXRhKiB2YXJpYWJsZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgdm9pZCBub3RpY2VTdHJ1
Y3R1cmVDaGVjayhWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlLCBSZWdpc3RlcmVkU3RydWN0
dXJlIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEhhc2hNYXA8VmFyaWFibGVBY2Nlc3NEYXRh
KiwgQ2hlY2tEYXRhPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZCh2YXJpYWJsZSwgQ2hl
Y2tEYXRhKHN0cnVjdHVyZSkpOworICAgICAgICBIYXNoTWFwPFZhcmlhYmxlQWNjZXNzRGF0YSos
IENoZWNrRGF0YT46OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQodmFyaWFibGUsIENoZWNr
RGF0YShzdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQog
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5t
X3N0cnVjdHVyZSA9PSBzdHJ1Y3R1cmUpCisgICAgICAgIGlmIChyZXN1bHQuaXRlcmF0b3ItPnZh
bHVlLm1fc3RydWN0dXJlID09IHN0cnVjdHVyZS5nZXQoKSkKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5tX3N0cnVjdHVyZSA9IDA7CiAgICAgfQog
ICAgIAotICAgIHZvaWQgbm90aWNlU3RydWN0dXJlQ2hlY2soVmFyaWFibGVBY2Nlc3NEYXRhKiB2
YXJpYWJsZSwgY29uc3QgU3RydWN0dXJlU2V0JiBzZXQpCisgICAgdm9pZCBub3RpY2VTdHJ1Y3R1
cmVDaGVjayhWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlLCBSZWdpc3RlcmVkU3RydWN0dXJl
U2V0IHNldCkKICAgICB7CiAgICAgICAgIGlmIChzZXQuc2l6ZSgpICE9IDEpIHsKLSAgICAgICAg
ICAgIG5vdGljZVN0cnVjdHVyZUNoZWNrKHZhcmlhYmxlLCAwKTsKKyAgICAgICAgICAgIG5vdGlj
ZVN0cnVjdHVyZUNoZWNrKHZhcmlhYmxlLCBSZWdpc3RlcmVkU3RydWN0dXJlKCkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIG5vdGljZVN0cnVjdHVyZUNoZWNrKHZh
cmlhYmxlLCBzZXQub25seVN0cnVjdHVyZSgpKTsKKyAgICAgICAgbm90aWNlU3RydWN0dXJlQ2hl
Y2sodmFyaWFibGUsIHNldC5hdCgwKSk7CiAgICAgfQogCiAgICAgdm9pZCBub3RpY2VDaGVja0Fy
cmF5KFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUsIEFycmF5TW9kZSBhcnJheU1vZGUpCkBA
IC01MDEsMjIgKzUwMSwyMiBAQCBwcml2YXRlOgogICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlLmRpc2FibGVDaGVja0FycmF5SG9pc3RpbmcoKTsKICAgICB9CiAKLSAgICB2b2lkIG5vdGlj
ZVN0cnVjdHVyZUNoZWNrQWNjb3VudGluZ0ZvckFycmF5TW9kZShWYXJpYWJsZUFjY2Vzc0RhdGEq
IHZhcmlhYmxlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB2b2lkIG5vdGljZVN0cnVjdHVy
ZUNoZWNrQWNjb3VudGluZ0ZvckFycmF5TW9kZShWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxl
LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAgIEhhc2hNYXA8
VmFyaWFibGVBY2Nlc3NEYXRhKiwgQ2hlY2tEYXRhPjo6aXRlcmF0b3IgcmVzdWx0ID0gbV9tYXAu
ZmluZCh2YXJpYWJsZSk7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gbV9tYXAuZW5kKCkpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIGlmICghcmVzdWx0LT52YWx1ZS5tX2FycmF5TW9kZUhv
aXN0aW5nT2theSB8fCAhcmVzdWx0LT52YWx1ZS5tX2FycmF5TW9kZUlzVmFsaWQpCiAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIGlmIChyZXN1bHQtPnZhbHVlLm1fYXJyYXlNb2RlLnN0cnVj
dHVyZVdvdWxkUGFzc0FycmF5TW9kZUZpbHRlcmluZyhzdHJ1Y3R1cmUpKQorICAgICAgICBpZiAo
cmVzdWx0LT52YWx1ZS5tX2FycmF5TW9kZS5zdHJ1Y3R1cmVXb3VsZFBhc3NBcnJheU1vZGVGaWx0
ZXJpbmcoc3RydWN0dXJlLmdldCgpKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgcmVz
dWx0LT52YWx1ZS5kaXNhYmxlQ2hlY2tBcnJheUhvaXN0aW5nKCk7CiAgICAgfQogCi0gICAgdm9p
ZCBub3RpY2VTdHJ1Y3R1cmVDaGVja0FjY291bnRpbmdGb3JBcnJheU1vZGUoVmFyaWFibGVBY2Nl
c3NEYXRhKiB2YXJpYWJsZSwgY29uc3QgU3RydWN0dXJlU2V0JiBzZXQpCisgICAgdm9pZCBub3Rp
Y2VTdHJ1Y3R1cmVDaGVja0FjY291bnRpbmdGb3JBcnJheU1vZGUoVmFyaWFibGVBY2Nlc3NEYXRh
KiB2YXJpYWJsZSwgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBzZXQpCiAgICAgewogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2V0LnNpemUoKTsgaSsrKQotICAgICAgICAgICAgbm90
aWNlU3RydWN0dXJlQ2hlY2tBY2NvdW50aW5nRm9yQXJyYXlNb2RlKHZhcmlhYmxlLCBzZXRbaV0p
OworICAgICAgICAgICAgbm90aWNlU3RydWN0dXJlQ2hlY2tBY2NvdW50aW5nRm9yQXJyYXlNb2Rl
KHZhcmlhYmxlLCBzZXQuYXQoaSkpOwogICAgIH0KIAogICAgIEhhc2hNYXA8VmFyaWFibGVBY2Nl
c3NEYXRhKiwgQ2hlY2tEYXRhPiBtX21hcDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAyMTEwMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA5LDcgKzIwOSw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5vZGUtPm9yaWdpbi5mb3JF
eGl0ICE9IHByZXZpb3VzTm9kZS0+b3JpZ2luLmZvckV4aXQpOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFub2Rl
LT5oYXNTdHJ1Y3R1cmUoKSB8fCAhIW5vZGUtPnN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAg
ICBWQUxJREFURSgobm9kZSksICFub2RlLT5oYXNTdHJ1Y3R1cmUoKSB8fCAhIW5vZGUtPnN0cnVj
dHVyZSgpLmdldCgpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFub2RlLT5o
YXNDZWxsT3BlcmFuZCgpIHx8IG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkuaXNDZWxsKCkp
OwogICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIW5vZGUtPmhhc0NlbGxPcGVyYW5k
KCkgfHwgISFub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpKTsKICAgICAgICAgICAgICAgICAK
QEAgLTI4NSw3ICsyODUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZU5l
d09iamVjdDoKLSAgICAgICAgICAgICAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6
IG5vZGUtPnN0cnVjdHVyZVNldCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgOiBub2RlLT5zdHJ1Y3R1cmVTZXQoKS5nZXQoKSkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gVGhpcyBvbmx5IHN1cHBvcnRzIHN0cnVjdHVyZXMgdGhhdCBhcmUg
SlNGaW5hbE9iamVjdCBvciBKU0FycmF5LgogICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURB
VEUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vZGUpLApAQCAtNTYwLDEyICs1NjAs
MTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAg
ICAgIC8vIENQUyBvbmx5IGFsbG93cyBvbmUgc3RydWN0dXJlLgotICAgICAgICAgICAgICAgICAg
ICBWQUxJREFURSgobm9kZSksIG5vZGUtPnN0cnVjdHVyZVNldCgpLnNpemUoKSA9PSAxKTsKKyAg
ICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCBub2RlLT5zdHJ1Y3R1cmVTZXQoKS5n
ZXQoKS5zaXplKCkgPT0gMSk7CiAKICAgICAgICAgICAgICAgICAgICAgLy8gQ1BTIGRpc2FsbG93
cyBpbnQzMiBhbmQgZG91YmxlIGFycmF5cy4gVGhvc2UgcmVxdWlyZSB3ZWlyZCB0eXBlIGNoZWNr
cyBhbmQKICAgICAgICAgICAgICAgICAgICAgLy8gY29udmVyc2lvbnMuIFRoZXkgYXJlIG5vdCBu
ZWVkZWQgaW4gdGhlIERGRyByaWdodCBub3cuIFdlIHNob3VsZCBhZGQgc3VwcG9ydAogICAgICAg
ICAgICAgICAgICAgICAvLyBmb3IgdGhlc2UgaWYgdGhlIERGRyBldmVyIG5lZWRzIGl0LgotICAg
ICAgICAgICAgICAgICAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogbm9kZS0+c3RydWN0
dXJlU2V0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA6IG5vZGUtPnN0cnVjdHVyZVNldCgpLmdldCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBWQUxJREFURSgobm9kZSksICFoYXNJbnQzMihzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFoYXNEb3VibGUoc3Ry
dWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpOwogICAgICAgICAgICAgICAgICAgICB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lv
biAyMTEwMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Niw3ICsxOTYsOCBAQCBwdWJsaWM6CiAgICAgICAgIG1f
cHJvYy5hZGRGYXN0Q29uc3RhbnQobV90YWdUeXBlTnVtYmVyLT5rZXkoKSk7CiAgICAgICAgIG1f
cHJvYy5hZGRGYXN0Q29uc3RhbnQobV90YWdNYXNrLT5rZXkoKSk7CiAgICAgICAgIAotICAgICAg
ICBtX291dC5zdG9yZVB0cihtX291dC5jb25zdEludFB0cihjb2RlQmxvY2soKSksIGFkZHJlc3NG
b3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSk7CisgICAgICAgIC8vIEZJWE1FOiBzaG91bGQg
d2UganVzdCBhZGQgdGhpcyBhcyBhIHdlYWsgcG9pbnRlcj8gCisgICAgICAgIG1fb3V0LnN0b3Jl
UHRyKG1fb3V0LmNvbnN0SW50UHRyKGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oY29kZUJsb2NrKCkp
KSwgYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spKTsKIAogICAgICAgICAvLyBT
dGFjayBPdmVyZmxvdyBDaGVjay4KICAgICAgICAgdW5zaWduZWQgZXhpdEZyYW1lU2l6ZSA9IG1f
Z3JhcGgucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhpdCgpICogc2l6ZW9mKFJlZ2lzdGVyKTsK
QEAgLTE1NjAsNyArMTU2MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0LmJyYW5jaChpc09i
amVjdCh2YWx1ZSksIHVzdWFsbHkoY29udGludWF0aW9uKSwgcmFyZWx5KHNsb3dDYXNlKSk7CiAK
ICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAg
IFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKEludDY0LCBt
X291dC5vcGVyYXRpb24ob3BlcmF0aW9uT2JqZWN0Q29uc3RydWN0b3IpLCBtX2NhbGxGcmFtZSwg
bV9vdXQuY29uc3RJbnRQdHIoZ2xvYmFsT2JqZWN0KSwgdmFsdWUpKTsKKyAgICAgICAgVmFsdWVG
cm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoSW50NjQsIG1fb3V0Lm9w
ZXJhdGlvbihvcGVyYXRpb25PYmplY3RDb25zdHJ1Y3RvciksIG1fY2FsbEZyYW1lLCB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QpLCB2YWx1ZSkpOwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVh
dGlvbik7CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7
CkBAIC0yNjY0LDcgKzI2NjUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2hlY2tTdHJ1Y3R1
cmUoCiAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0
cnVjdHVyZUlEKSwganNWYWx1ZVZhbHVlKGNlbGwpLAogICAgICAgICAgICAgICAgIGV4aXRLaW5k
LCBtX25vZGUtPnN0cnVjdHVyZVNldCgpLAotICAgICAgICAgICAgICAgIFsmXSAoU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpIHsKKyAgICAgICAgICAgICAgICBbJl0gKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
c3RydWN0dXJlKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3ZWFrU3RydWN0dXJlSUQo
c3RydWN0dXJlKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTI2ODQsNyArMjY4NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjaGVja1N0cnVjdHVyZSgK
ICAgICAgICAgICAgICAgICBtX291dC5sb2FkMzIodmFsdWUsIG1faGVhcHMuSlNDZWxsX3N0cnVj
dHVyZUlEKSwganNWYWx1ZVZhbHVlKHZhbHVlKSwKICAgICAgICAgICAgICAgICBleGl0S2luZCwg
bV9ub2RlLT5zdHJ1Y3R1cmVTZXQoKSwKLSAgICAgICAgICAgICAgICBbJl0gKFN0cnVjdHVyZSog
c3RydWN0dXJlKSB7CisgICAgICAgICAgICAgICAgWyZdIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0
cnVjdHVyZSkgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2Vha1N0cnVjdHVyZUlEKHN0
cnVjdHVyZSk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNv
bnRpbnVhdGlvbik7CkBAIC0yNzk5LDcgKzI4MDAsNyBAQCBwcml2YXRlOgogICAgICAgICBtX2Z0
bFN0YXRlLmppdENvZGUtPmNvbW1vbi5ub3RpZnlDb21waWxpbmdTdHJ1Y3R1cmVUcmFuc2l0aW9u
KG1fZ3JhcGgubV9wbGFuLCBjb2RlQmxvY2soKSwgbV9ub2RlKTsKICAgICAgICAgCiAgICAgICAg
IFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gbV9ub2RlLT50cmFuc2l0aW9uKCktPnByZXZpb3Vz
OwotICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IG1fbm9kZS0+dHJhbnNpdGlvbigp
LT5uZXh0OworICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG5ld1N0cnVjdHVyZSA9IG1fZ3Jh
cGgucmVnaXN0ZXJTdHJ1Y3R1cmUobV9ub2RlLT50cmFuc2l0aW9uKCktPm5leHQpOwogICAgICAg
ICBBU1NFUlRfVU5VU0VEKG9sZFN0cnVjdHVyZSwgb2xkU3RydWN0dXJlLT5pbmRleGluZ1R5cGUo
KSA9PSBuZXdTdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKTsKICAgICAgICAgQVNTRVJUKG9sZFN0
cnVjdHVyZS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSA9PSBuZXdTdHJ1Y3R1cmUtPnR5
cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdzKCkpOwogICAgICAgICBBU1NFUlQob2xkU3RydWN0dXJl
LT50eXBlSW5mbygpLnR5cGUoKSA9PSBuZXdTdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpKTsK
QEAgLTM4OTksMTAgKzM5MDAsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIC8vIHdpdGggb25l
IG9mIHRoZSBmb2xsb3dpbmcgaW5kZXhpbmcgc2hhcGVzOiBJbnQzMiwgQ29udGlndW91cywgRG91
YmxlLgogICAgICAgICAgICAgTFZhbHVlIHN0cnVjdHVyZSA9IG1fb3V0LnNlbGVjdCgKICAgICAg
ICAgICAgICAgICBtX291dC5lcXVhbChpbmRleGluZ1R5cGUsIG1fb3V0LmNvbnN0SW50MzIoQXJy
YXlXaXRoSW50MzIpKSwKLSAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihnbG9iYWxP
YmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJh
eVdpdGhJbnQzMikpLAorICAgICAgICAgICAgICAgIHdlYWtTdHJ1Y3R1cmUobV9ncmFwaC5yZWdp
c3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBl
RHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhJbnQzMikpKSwKICAgICAgICAgICAgICAgICBtX291
dC5zZWxlY3QobV9vdXQuZXF1YWwoaW5kZXhpbmdUeXBlLCBtX291dC5jb25zdEludDMyKEFycmF5
V2l0aENvbnRpZ3VvdXMpKSwKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIo
Z2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRp
b24oQXJyYXlXaXRoQ29udGlndW91cykpLAotICAgICAgICAgICAgICAgICAgICBtX291dC5jb25z
dEludFB0cihnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5n
QWxsb2NhdGlvbihBcnJheVdpdGhEb3VibGUpKSkpOworICAgICAgICAgICAgICAgICAgICB3ZWFr
U3RydWN0dXJlKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0
cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91
cykpKSwKKyAgICAgICAgICAgICAgICAgICAgd2Vha1N0cnVjdHVyZShtX2dyYXBoLnJlZ2lzdGVy
U3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJp
bmdBbGxvY2F0aW9uKEFycmF5V2l0aERvdWJsZSkpKSkpOwogICAgICAgICAgICAgYXJyYXlSZXN1
bHQgPSBhbGxvY2F0ZUpTQXJyYXkocmVzdWx0TGVuZ3RoLCBzdHJ1Y3R1cmUsIGluZGV4aW5nVHlw
ZSwgZmFsc2UsIGZhbHNlKTsKICAgICAgICAgfQogCkBAIC0zOTk0LDEzICszOTk1LDEzIEBAIHBy
aXZhdGU6CiAgICAgewogICAgICAgICBMVmFsdWUgc2NvcGUgPSBsb3dDZWxsKG1fbm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICBTeW1ib2xUYWJsZSogdGFibGUgPSBtX25vZGUtPmNhc3RPcGVyYW5k
PFN5bWJvbFRhYmxlKj4oKTsKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFjdGl2YXRpb25TdHJ1
Y3R1cmUoKTsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBo
LnJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2lu
LnNlbWFudGljKS0+YWN0aXZhdGlvblN0cnVjdHVyZSgpKTsKICAgICAgICAgSlNWYWx1ZSBpbml0
aWFsaXphdGlvblZhbHVlID0gbV9ub2RlLT5pbml0aWFsaXphdGlvblZhbHVlRm9yQWN0aXZhdGlv
bigpOwogICAgICAgICBBU1NFUlQoaW5pdGlhbGl6YXRpb25WYWx1ZS5pc1VuZGVmaW5lZCgpIHx8
IGluaXRpYWxpemF0aW9uVmFsdWUgPT0ganNURFpWYWx1ZSgpKTsKICAgICAgICAgaWYgKHRhYmxl
LT5zaW5nbGV0b25TY29wZSgpLT5pc1N0aWxsVmFsaWQoKSkgewogICAgICAgICAgICAgTFZhbHVl
IGNhbGxSZXN1bHQgPSB2bUNhbGwoCiAgICAgICAgICAgICAgICAgSW50NjQsCi0gICAgICAgICAg
ICAgICAgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb25EaXJlY3QpLCBt
X2NhbGxGcmFtZSwgd2Vha1BvaW50ZXIoc3RydWN0dXJlKSwKKyAgICAgICAgICAgICAgICBtX291
dC5vcGVyYXRpb24ob3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlvbkRpcmVjdCksIG1fY2FsbEZyYW1l
LCB3ZWFrU3RydWN0dXJlKHN0cnVjdHVyZSksCiAgICAgICAgICAgICAgICAgc2NvcGUsIHdlYWtQ
b2ludGVyKHRhYmxlKSwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoaW5pdGlhbGl6
YXRpb25WYWx1ZSkpKTsKICAgICAgICAgICAgIHNldEpTVmFsdWUoY2FsbFJlc3VsdCk7CiAgICAg
ICAgICAgICByZXR1cm47CkBAIC00MDM1LDcgKzQwMzYsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgWz1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5
U2xvd1BhdGg6OkdlbmVyYXRvcj4gewogICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5
Q2FsbEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uQ3JlYXRlQWN0aXZh
dGlvbkRpcmVjdCwgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLAotICAgICAgICAgICAgICAgICAg
ICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgbG9jYXRpb25zWzFdLmRp
cmVjdEdQUigpLAorICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoc3RydWN0dXJlLmdldCgpKSwgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpLAogICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFibGUpLAogICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoaW5p
dGlhbGl6YXRpb25WYWx1ZSkpKTsKICAgICAgICAgICAgIH0sCkBAIC00MDY1LDEwICs0MDY2LDEw
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCi0g
ICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0KKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKAogICAgICAgICAgICAgaXNH
ZW5lcmF0b3JGdW5jdGlvbiA/IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2lu
LnNlbWFudGljKS0+Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSA6CiAgICAgICAgICAgICBp
c0FzeW5jRnVuY3Rpb24gPyBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5z
ZW1hbnRpYyktPmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKSA6Ci0gICAgICAgICAgICBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmZ1bmN0aW9uU3RydWN0
dXJlKCk7CisgICAgICAgICAgICBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdp
bi5zZW1hbnRpYyktPmZ1bmN0aW9uU3RydWN0dXJlKCkpOwogICAgICAgICAKICAgICAgICAgTEJh
c2ljQmxvY2sgc2xvd1BhdGggPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9j
ayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwpAQCAtNDEyOCw4ICs0MTI5LDggQEAg
cHJpdmF0ZToKICAgICAgICAgLy8gdGhlbSBiZSBleHBsaWNpdCBhcmd1bWVudHMgdG8gdGhpcyBu
b2RlLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQyMjA3CiAgICAgICAgIAotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9Ci0gICAgICAg
ICAgICBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmRp
cmVjdEFyZ3VtZW50c1N0cnVjdHVyZSgpOworICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0
cnVjdHVyZSA9CisgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZGlyZWN0QXJndW1lbnRz
U3RydWN0dXJlKCkpOwogICAgICAgICAKICAgICAgICAgdW5zaWduZWQgbWluQ2FwYWNpdHkgPSBt
X2dyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+bnVt
UGFyYW1ldGVycygpIC0gMTsKICAgICAgICAgCkBAIC00MTcxLDcgKzQxNzIsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgWz1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+
IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gewogICAgICAgICAgICAgICAgIHJldHVy
biBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9u
Q3JlYXRlRGlyZWN0QXJndW1lbnRzLCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksCi0gICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBsb2Nh
dGlvbnNbMV0uZGlyZWN0R1BSKCksCisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUuZ2V0KCkpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCks
CiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKG1pbkNhcGFj
aXR5KSk7CiAgICAgICAgICAgICB9LCBsZW5ndGgudmFsdWUpOwogICAgICAgICBWYWx1ZUZyb21C
bG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGNhbGxSZXN1bHQpOwpAQCAtNDI1OSw3ICs0
MjYwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIExWYWx1ZSBhcnJheUxlbmd0aCA9IGxvd0lu
dDMyKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbG9vcFN0YXJ0
ID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+cmVzdFBh
cmFtZXRlclN0cnVjdHVyZSgpOworICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1
Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+cmVzdFBhcmFt
ZXRlclN0cnVjdHVyZSgpKTsKICAgICAgICAgICAgIEFycmF5VmFsdWVzIGFycmF5VmFsdWVzID0g
YWxsb2NhdGVVbmluaXRpYWxpemVkQ29udGlndW91c0pTQXJyYXkoYXJyYXlMZW5ndGgsIHN0cnVj
dHVyZSk7CiAgICAgICAgICAgICBMVmFsdWUgYXJyYXkgPSBhcnJheVZhbHVlcy5hcnJheTsKICAg
ICAgICAgICAgIExWYWx1ZSBidXR0ZXJmbHkgPSBhcnJheVZhbHVlcy5idXR0ZXJmbHk7CkBAIC00
MzI3LDggKzQzMjgsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgc3BlY3VsYXRlKG1fZ3JhcGgu
dmFyQXJnQ2hpbGQobV9ub2RlLCBvcGVyYW5kSW5kZXgpKTsKICAgICAgICAgCiAgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xv
YmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24o
Ci0gICAgICAgICAgICBtX25vZGUtPmluZGV4aW5nVHlwZSgpKTsKKyAgICAgICAgUmVnaXN0ZXJl
ZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9i
amVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKAorICAg
ICAgICAgICAgbV9ub2RlLT5pbmRleGluZ1R5cGUoKSkpOwogCiAgICAgICAgIGlmICghZ2xvYmFs
T2JqZWN0LT5pc0hhdmluZ0FCYWRUaW1lKCkgJiYgIWhhc0FueUFycmF5U3RvcmFnZShtX25vZGUt
PmluZGV4aW5nVHlwZSgpKSkgewogICAgICAgICAgICAgdW5zaWduZWQgbnVtRWxlbWVudHMgPSBt
X25vZGUtPm51bUNoaWxkcmVuKCk7CkBAIC00MzczLDcgKzQzNzQsNyBAQCBwcml2YXRlOgogICAg
ICAgICBpZiAoIW1fbm9kZS0+bnVtQ2hpbGRyZW4oKSkgewogICAgICAgICAgICAgc2V0SlNWYWx1
ZSh2bUNhbGwoCiAgICAgICAgICAgICAgICAgSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRp
b25OZXdFbXB0eUFycmF5KSwgbV9jYWxsRnJhbWUsCi0gICAgICAgICAgICAgICAgbV9vdXQuY29u
c3RJbnRQdHIoc3RydWN0dXJlKSkpOworICAgICAgICAgICAgICAgIHdlYWtTdHJ1Y3R1cmUoc3Ry
dWN0dXJlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIApAQCAt
NDM5NCw3ICs0Mzk1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIExWYWx1ZSByZXN1
bHQgPSB2bUNhbGwoCiAgICAgICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlv
bk5ld0FycmF5KSwgbV9jYWxsRnJhbWUsCi0gICAgICAgICAgICBtX291dC5jb25zdEludFB0cihz
dHJ1Y3R1cmUpLCBtX291dC5jb25zdEludFB0cihidWZmZXIpLAorICAgICAgICAgICAgd2Vha1N0
cnVjdHVyZShzdHJ1Y3R1cmUpLCBtX291dC5jb25zdEludFB0cihidWZmZXIpLAogICAgICAgICAg
ICAgbV9vdXQuY29uc3RJbnRQdHIobV9ub2RlLT5udW1DaGlsZHJlbigpKSk7CiAgICAgICAgIAog
ICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5pbnRQdHJaZXJvLCBtX291dC5hYnNvbHV0ZShz
Y3JhdGNoQnVmZmVyLT5hY3RpdmVMZW5ndGhQdHIoKSkpOwpAQCAtNDQzNCw3ICs0NDM1LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5v
cmlnaW4uc2VtYW50aWMpLT5vcmlnaW5hbEFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlKEFy
cmF5V2l0aENvbnRpZ3VvdXMpOworICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1
Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+b3JpZ2luYWxBcnJheVN0cnVjdHVyZUZvckluZGV4
aW5nVHlwZShBcnJheVdpdGhDb250aWd1b3VzKSk7CiAgICAgICAgICAgICBBcnJheVZhbHVlcyBh
cnJheVZhbHVlcyA9IGFsbG9jYXRlVW5pbml0aWFsaXplZENvbnRpZ3VvdXNKU0FycmF5KGxlbmd0
aCwgc3RydWN0dXJlKTsKICAgICAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBhcnJheVZhbHVlcy5h
cnJheTsKICAgICAgICAgICAgIExWYWx1ZSBzdG9yYWdlID0gYXJyYXlWYWx1ZXMuYnV0dGVyZmx5
OwpAQCAtNDY1Niw4ICs0NjU3LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVOZXdBcnJh
eUJ1ZmZlcigpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJ
bmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKAotICAgICAgICAgICAgbV9ub2RlLT5pbmRleGlu
Z1R5cGUoKSk7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFw
aC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhp
bmdUeXBlRHVyaW5nQWxsb2NhdGlvbigKKyAgICAgICAgICAgIG1fbm9kZS0+aW5kZXhpbmdUeXBl
KCkpKTsKICAgICAgICAgCiAgICAgICAgIGlmICghZ2xvYmFsT2JqZWN0LT5pc0hhdmluZ0FCYWRU
aW1lKCkgJiYgIWhhc0FueUFycmF5U3RvcmFnZShtX25vZGUtPmluZGV4aW5nVHlwZSgpKSkgewog
ICAgICAgICAgICAgdW5zaWduZWQgbnVtRWxlbWVudHMgPSBtX25vZGUtPm51bUNvbnN0YW50cygp
OwpAQCAtNDY4Niw3ICs0Njg3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIHNldEpT
VmFsdWUodm1DYWxsKAogICAgICAgICAgICAgSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRp
b25OZXdBcnJheUJ1ZmZlciksIG1fY2FsbEZyYW1lLAotICAgICAgICAgICAgbV9vdXQuY29uc3RJ
bnRQdHIoc3RydWN0dXJlKSwgbV9vdXQuY29uc3RJbnRQdHIobV9ub2RlLT5zdGFydENvbnN0YW50
KCkpLAorICAgICAgICAgICAgd2Vha1N0cnVjdHVyZShzdHJ1Y3R1cmUpLCBtX291dC5jb25zdElu
dFB0cihtX25vZGUtPnN0YXJ0Q29uc3RhbnQoKSksCiAgICAgICAgICAgICBtX291dC5jb25zdElu
dFB0cihtX25vZGUtPm51bUNvbnN0YW50cygpKSkpOwogICAgIH0KIApAQCAtNDY5NSwyMyArNDY5
NiwyMiBAQCBwcml2YXRlOgogICAgICAgICBMVmFsdWUgcHVibGljTGVuZ3RoID0gbG93SW50MzIo
bV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIAogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50
aWMpOwotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlT
dHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKAotICAgICAgICAgICAgbV9u
b2RlLT5pbmRleGluZ1R5cGUoKSk7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0
dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0
dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbigKKyAgICAgICAgICAgIG1fbm9kZS0+
aW5kZXhpbmdUeXBlKCkpKTsKICAgICAgICAgCiAgICAgICAgIGlmICghZ2xvYmFsT2JqZWN0LT5p
c0hhdmluZ0FCYWRUaW1lKCkgJiYgIWhhc0FueUFycmF5U3RvcmFnZShtX25vZGUtPmluZGV4aW5n
VHlwZSgpKSkgewogICAgICAgICAgICAgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSA9IG1fbm9k
ZS0+aW5kZXhpbmdUeXBlKCk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKAogICAgICAgICAgICAg
ICAgIGFsbG9jYXRlSlNBcnJheSgKLSAgICAgICAgICAgICAgICAgICAgcHVibGljTGVuZ3RoLCBt
X291dC5jb25zdEludFB0cihnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdU
eXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpKSwgbV9vdXQuY29uc3RJbnQzMihpbmRl
eGluZ1R5cGUpKS5hcnJheSk7CisgICAgICAgICAgICAgICAgICAgIHB1YmxpY0xlbmd0aCwgd2Vh
a1BvaW50ZXIoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmlu
Z0FsbG9jYXRpb24oaW5kZXhpbmdUeXBlKSksIG1fb3V0LmNvbnN0SW50MzIoaW5kZXhpbmdUeXBl
KSkuYXJyYXkpOwogICAgICAgICAgICAgbXV0YXRvckZlbmNlKCk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmVWYWx1ZSA9
IG1fb3V0LnNlbGVjdCgKICAgICAgICAgICAgIG1fb3V0LmFib3ZlT3JFcXVhbChwdWJsaWNMZW5n
dGgsIG1fb3V0LmNvbnN0SW50MzIoTUlOX0FSUkFZX1NUT1JBR0VfQ09OU1RSVUNUSU9OX0xFTkdU
SCkpLAotICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoCi0gICAgICAgICAgICAgICAgZ2xv
YmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24o
QXJyYXlXaXRoQXJyYXlTdG9yYWdlKSksCi0gICAgICAgICAgICBtX291dC5jb25zdEludFB0cihz
dHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgIHdlYWtTdHJ1Y3R1cmUobV9ncmFwaC5yZWdpc3RlclN0
cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5n
QWxsb2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2UpKSksCisgICAgICAgICAgICB3ZWFrU3Ry
dWN0dXJlKHN0cnVjdHVyZSkpOwogICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChJbnQ2NCwgbV9v
dXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUpLCBtX2NhbGxGcmFtZSwgc3Ry
dWN0dXJlVmFsdWUsIHB1YmxpY0xlbmd0aCwgbV9vdXQuaW50UHRyWmVybykpOwogICAgIH0KIApA
QCAtNDcyMiw3ICs0NzIyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIHN3aXRjaCAo
bV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICAgICAgY2FzZSBJbnQzMlVzZTogewot
ICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPnR5cGVkQXJy
YXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZSk7CisgICAgICAgICAgICBSZWdpc3RlcmVkU3Ry
dWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0
LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGUpKTsKIAogICAgICAgICAgICAg
TFZhbHVlIHNpemUgPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKIApAQCAtNDc4MSw3ICs0
NzgxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBbPV0gKGNvbnN0IFZlY3RvcjxMb2Nh
dGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7CiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcigKICAgICAg
ICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld1R5cGVkQXJyYXlXaXRoU2l6ZUZvclR5cGUo
dHlwZSksIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBsb2NhdGlvbnNbMV0uZGly
ZWN0R1BSKCksCisgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoc3RydWN0dXJlLmdldCgpKSwgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzJdLmRpcmVjdEdQUigpKTsKICAgICAgICAgICAg
ICAgICB9LAogICAgICAgICAgICAgICAgIHNpemUsIHN0b3JhZ2VWYWx1ZSk7CkBAIC01MjkwLDgg
KzUyOTAsOCBAQCBwcml2YXRlOgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLmNhc2Vz
LnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgTXVsdGlHZXRCeU9mZnNldENhc2UgZ2V0Q2Fz
ZSA9IGRhdGEuY2FzZXNbaV07CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSBnZXRDYXNl
LnNldCgpLnNpemUoKTsgai0tOykgewotICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gZ2V0Q2FzZS5zZXQoKVtqXTsKLSAgICAgICAgICAgICAgICBiYXNlU2V0LmFkZChzdHJ1
Y3R1cmUpOworICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0g
bV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnZXRDYXNlLnNldCgpW2pdKTsKKyAgICAgICAgICAg
ICAgICBiYXNlU2V0LmFkZChzdHJ1Y3R1cmUuZ2V0KCkpOwogICAgICAgICAgICAgICAgIGNhc2Vz
LmFwcGVuZChTd2l0Y2hDYXNlKHdlYWtTdHJ1Y3R1cmVJRChzdHJ1Y3R1cmUpLCBibG9ja3NbaV0s
IFdlaWdodCgxKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC01MzcyLDggKzUzNzIs
OCBAQCBwcml2YXRlOgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLnZhcmlhbnRzLnNp
emUoKTsgaS0tOykgewogICAgICAgICAgICAgUHV0QnlJZFZhcmlhbnQgdmFyaWFudCA9IGRhdGEu
dmFyaWFudHNbaV07CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSB2YXJpYW50Lm9sZFN0
cnVjdHVyZSgpLnNpemUoKTsgai0tOykgewotICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gdmFyaWFudC5vbGRTdHJ1Y3R1cmUoKVtqXTsKLSAgICAgICAgICAgICAgICBiYXNl
U2V0LmFkZChzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
c3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0cnVjdHVy
ZSgpW2pdKTsKKyAgICAgICAgICAgICAgICBiYXNlU2V0LmFkZChzdHJ1Y3R1cmUuZ2V0KCkpOwog
ICAgICAgICAgICAgICAgIGNhc2VzLmFwcGVuZChTd2l0Y2hDYXNlKHdlYWtTdHJ1Y3R1cmVJRChz
dHJ1Y3R1cmUpLCBibG9ja3NbaV0sIFdlaWdodCgxKSkpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CkBAIC01NDEzLDcgKzU0MTMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIEFTU0VS
VCh2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKS0+dHlwZUluZm8oKS5pbmxpbmVU
eXBlRmxhZ3MoKSA9PSB2YXJpYW50Lm5ld1N0cnVjdHVyZSgpLT50eXBlSW5mbygpLmlubGluZVR5
cGVGbGFncygpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQodmFyaWFudC5vbGRTdHJ1Y3R1cmVG
b3JUcmFuc2l0aW9uKCktPnR5cGVJbmZvKCkudHlwZSgpID09IHZhcmlhbnQubmV3U3RydWN0dXJl
KCktPnR5cGVJbmZvKCkudHlwZSgpKTsKICAgICAgICAgICAgICAgICBtX291dC5zdG9yZTMyKAot
ICAgICAgICAgICAgICAgICAgICB3ZWFrU3RydWN0dXJlSUQodmFyaWFudC5uZXdTdHJ1Y3R1cmUo
KSksIGJhc2UsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKTsKKyAgICAgICAgICAgICAgICAg
ICAgd2Vha1N0cnVjdHVyZUlEKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdT
dHJ1Y3R1cmUoKSkpLCBiYXNlLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9u
KTsKQEAgLTc3NDYsMTEgKzc3NDYsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgTFZhbHVlIGluZGV4
ID0gbV9vdXQuYml0QW5kKG1hc2ssIHVubWFza2VkSW5kZXgpOwogICAgICAgICBMVmFsdWUgaGFz
aE1hcEJ1Y2tldCA9IG1fb3V0LmxvYWQ2NChtX291dC5iYXNlSW5kZXgobV9oZWFwcy5wcm9wZXJ0
aWVzLmF0QW55TnVtYmVyKCksIGJ1ZmZlciwgbV9vdXQuemVyb0V4dChpbmRleCwgSW50NjQpLCBT
Y2FsZUVpZ2h0KSk7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGJ1Y2tldFJlc3VsdCA9IG1fb3V0
LmFuY2hvcihoYXNoTWFwQnVja2V0KTsKLSAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFs
KGhhc2hNYXBCdWNrZXQsIG1fb3V0LmNvbnN0SW50UHRyKEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNr
ZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+Pjo6ZW1wdHlWYWx1ZSgpKSksCisgICAgICAgIG1fb3V0
LmJyYW5jaChtX291dC5lcXVhbChoYXNoTWFwQnVja2V0LCBtX291dC5jb25zdEludFB0cihiaXR3
aXNlX2Nhc3Q8aW50cHRyX3Q+KEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tl
dERhdGFLZXk+Pjo6ZW1wdHlWYWx1ZSgpKSkpLAogICAgICAgICAgICAgdW5zdXJlKG5vdFByZXNl
bnRJblRhYmxlKSwgdW5zdXJlKG5vdEVtcHR5VmFsdWUpKTsKIAogICAgICAgICBtX291dC5hcHBl
bmRUbyhub3RFbXB0eVZhbHVlLCBub3REZWxldGVkVmFsdWUpOwotICAgICAgICBtX291dC5icmFu
Y2gobV9vdXQuZXF1YWwoaGFzaE1hcEJ1Y2tldCwgbV9vdXQuY29uc3RJbnRQdHIoSGFzaE1hcElt
cGw8SGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT4+OjpkZWxldGVkVmFsdWUoKSkp
LAorICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwoaGFzaE1hcEJ1Y2tldCwgbV9vdXQu
Y29uc3RJbnRQdHIoYml0d2lzZV9jYXN0PGludHB0cl90PihIYXNoTWFwSW1wbDxIYXNoTWFwQnVj
a2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46OmRlbGV0ZWRWYWx1ZSgpKSkpLAogICAgICAgICAg
ICAgdW5zdXJlKGxvb3BBcm91bmQpLCB1bnN1cmUobm90RGVsZXRlZFZhbHVlKSk7CiAKICAgICAg
ICAgbV9vdXQuYXBwZW5kVG8obm90RGVsZXRlZFZhbHVlLCBsb29wQXJvdW5kKTsKQEAgLTgyMjIs
NyArODIyMiw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbXBpbGVPdmVycmlkZXNIYXNJbnN0
YW5jZSgpCiAgICAgewotICAgICAgICBKU0Z1bmN0aW9uKiBkZWZhdWx0SGFzSW5zdGFuY2VGdW5j
dGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4obV9ub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgp
KTsKKyAgICAgICAgRnJvemVuVmFsdWUqIGRlZmF1bHRIYXNJbnN0YW5jZUZ1bmN0aW9uID0gbV9u
b2RlLT5jZWxsT3BlcmFuZCgpOworICAgICAgICBBU1NFUlQoZGVmYXVsdEhhc0luc3RhbmNlRnVu
Y3Rpb24tPmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8oKSkpOwogCiAgICAgICAgIExWYWx1ZSBj
b25zdHJ1Y3RvciA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIExWYWx1ZSBo
YXNJbnN0YW5jZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7CkBAIC04MjMzLDcgKzgy
MzQsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBVbmxpa2UgaW4gdGhlIERGRywgd2UgZG9uJ3Qg
d29ycnkgYWJvdXQgY2xlYW5pbmcgdGhpcyBjb2RlIHVwIGZvciB0aGUgY2FzZSB3aGVyZSB3ZSBo
YXZlIHByb3ZlbiB0aGUgaGFzSW5zdGFuY2VWYWx1ZSBpcyBhIGNvbnN0YW50IGFzIEIzIHNob3Vs
ZCBmaXggaXQgZm9yIHVzLgogCiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIG5vdERlZmF1bHRIYXNJ
bnN0YW5jZVJlc3VsdCA9IG1fb3V0LmFuY2hvcihtX291dC5ib29sZWFuVHJ1ZSk7Ci0gICAgICAg
IG1fb3V0LmJyYW5jaChtX291dC5ub3RFcXVhbChoYXNJbnN0YW5jZSwgbV9vdXQuY29uc3RJbnRQ
dHIoZGVmYXVsdEhhc0luc3RhbmNlRnVuY3Rpb24pKSwgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVu
c3VyZShkZWZhdWx0SGFzSW5zdGFuY2UpKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0Lm5v
dEVxdWFsKGhhc0luc3RhbmNlLCBmcm96ZW5Qb2ludGVyKGRlZmF1bHRIYXNJbnN0YW5jZUZ1bmN0
aW9uKSksIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUoZGVmYXVsdEhhc0luc3RhbmNlKSk7
CiAKICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhkZWZhdWx0
SGFzSW5zdGFuY2UsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGltcGxl
bWVudHNEZWZhdWx0SGFzSW5zdGFuY2VSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQudGVzdElz
WmVybzMyKApAQCAtODU4MSw3ICs4NTgyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgTFZhbHVlIHN0
cnVjdHVyZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIGNoZWNrU3RydWN0
dXJlKAogICAgICAgICAgICAgc3RydWN0dXJlLCBub1ZhbHVlKCksIEJhZENhY2hlLCBtX25vZGUt
PnN0cnVjdHVyZVNldCgpLAotICAgICAgICAgICAgW3RoaXNdIChTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkgeworICAgICAgICAgICAgW3RoaXNdIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkg
ewogICAgICAgICAgICAgICAgIHJldHVybiB3ZWFrU3RydWN0dXJlKHN0cnVjdHVyZSk7CiAgICAg
ICAgICAgICB9KTsKICAgICB9CkBAIC04NjA2LDcgKzg2MDcsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBjb25zdCBTdHJ1Y3R1cmVTZXQm
IHNldCA9IG1fbm9kZS0+c3RydWN0dXJlU2V0KCk7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmVTZXQgc2V0ID0gbV9ub2RlLT5zdHJ1Y3R1cmVTZXQoKTsKIAogICAgICAgICBWZWN0b3I8TEJh
c2ljQmxvY2ssIDE+IGJsb2NrcyhzZXQuc2l6ZSgpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gc2V0LnNpemUoKTsgaS0tOykKQEAgLTg2MTYsNyArODYxNyw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIAogICAgICAgICBWZWN0b3I8U3dpdGNoQ2FzZSwgMT4gY2FzZXMoc2V0LnNpemUoKSk7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IHNldC5zaXplKCk7IGktLTspCi0gICAgICAgICAgICBj
YXNlc1tpXSA9IFN3aXRjaENhc2Uod2Vha1N0cnVjdHVyZShzZXRbaV0pLCBibG9ja3NbaV0sIFdl
aWdodCgxKSk7CisgICAgICAgICAgICBjYXNlc1tpXSA9IFN3aXRjaENhc2Uod2Vha1N0cnVjdHVy
ZShzZXQuYXQoaSkpLCBibG9ja3NbaV0sIFdlaWdodCgxKSk7CiAgICAgICAgIG1fb3V0LnN3aXRj
aEluc3RydWN0aW9uKAogICAgICAgICAgICAgbG93Q2VsbChtX2dyYXBoLnZhckFyZ0NoaWxkKG1f
bm9kZSwgMCkpLCBjYXNlcywgZHVtbXlEZWZhdWx0LCBXZWlnaHQoMCkpOwogICAgICAgICAKQEAg
LTg2MjcsNyArODYyOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHNl
dC5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGJsb2Nrc1tpXSwg
aSArIDEgPCBzZXQuc2l6ZSgpID8gYmxvY2tzW2kgKyAxXSA6IGR1bW15RGVmYXVsdCk7CiAgICAg
ICAgICAgICAKLSAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gc2V0W2ldOworICAg
ICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBzZXQuYXQoaSk7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIExWYWx1ZSBvYmplY3Q7CiAgICAgICAgICAgICBMVmFsdWUg
YnV0dGVyZmx5OwpAQCAtODcwOSw3ICs4NzEwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICAgICAgICAgIFs9XSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQ
dHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3IoCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9wZXJhdGlvbk5ld09iamVjdFdpdGhCdXR0ZXJmbHlXaXRoSW5kZXhpbmdIZWFk
ZXJBbmRWZWN0b3JMZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0
aW9uc1swXS5kaXJlY3RHUFIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVy
ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1swXS5kaXJlY3RH
UFIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZS5nZXQoKSksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSwgbG9j
YXRpb25zWzJdLmRpcmVjdEdQUigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAg
ICAgICAgICAgICAgICAgICAgICB2ZWN0b3JMZW5ndGgsIGJ1dHRlcmZseVZhbHVlKTsKQEAgLTg3
MTgsNyArODcxOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBbPV0gKGNv
bnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6
R2VuZXJhdG9yPiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxh
enlDYWxsR2VuZXJhdG9yKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRp
b25OZXdPYmplY3RXaXRoQnV0dGVyZmx5LCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihz
dHJ1Y3R1cmUpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlLmdldCgp
KSwgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0s
CiAgICAgICAgICAgICAgICAgICAgICAgICBidXR0ZXJmbHlWYWx1ZSk7CiAgICAgICAgICAgICAg
ICAgfQpAQCAtODg5MSw3ICs4ODkyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgTFZhbHVlIHNjb3Bl
ID0gbG93Q2VsbChtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSkpOwogICAgICAgICBTeW1i
b2xUYWJsZSogdGFibGUgPSBtX25vZGUtPmNhc3RPcGVyYW5kPFN5bWJvbFRhYmxlKj4oKTsKICAg
ICAgICAgQVNTRVJUKHRhYmxlID09IG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAwKS0+Y2Fz
dENvbnN0YW50PFN5bWJvbFRhYmxlKj4oKSk7Ci0gICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hY3Rp
dmF0aW9uU3RydWN0dXJlKCk7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJl
ID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFjdGl2YXRpb25TdHJ1Y3R1cmUoKSk7CiAKICAgICAgICAg
TEJhc2ljQmxvY2sgc2xvd1BhdGggPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNC
bG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwpAQCAtODkxOCw3ICs4OTE5LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIFs9XSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9j
YXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKICAgICAgICAgICAg
ICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3IoCiAgICAgICAgICAgICAgICAgICAg
IG9wZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb25EaXJlY3QsIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIo
KSwKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVj
dHVyZSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSwKKyAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZS5nZXQoKSksIGxvY2F0aW9uc1sxXS5k
aXJlY3RHUFIoKSwKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKHRhYmxlKSwKICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpKSk7CiAgICAgICAgICAgICB9LCBzY29w
ZSk7CkBAIC05MDQzLDExICs5MDQ0LDEyIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbXBpbGVO
ZXdSZWdleHAoKQogICAgIHsKLSAgICAgICAgUmVnRXhwKiByZWdleHAgPSBtX25vZGUtPmNhc3RP
cGVyYW5kPFJlZ0V4cCo+KCk7CisgICAgICAgIEZyb3plblZhbHVlKiByZWdleHAgPSBtX25vZGUt
PmNlbGxPcGVyYW5kKCk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJlZ2V4cC0+Y2VsbCgpLT5p
bmhlcml0cyhSZWdFeHA6OmluZm8oKSkpOwogICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxs
KAogICAgICAgICAgICAgcG9pbnRlclR5cGUoKSwKICAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlv
bihvcGVyYXRpb25OZXdSZWdleHApLCBtX2NhbGxGcmFtZSwKLSAgICAgICAgICAgIG1fb3V0LmNv
bnN0SW50UHRyKHJlZ2V4cCkpOworICAgICAgICAgICAgZnJvemVuUG9pbnRlcihyZWdleHApKTsK
ICAgICAgICAgCiAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICB9CkBAIC05MTQwLDEw
ICs5MTQyLDExIEBAIHByaXZhdGU6CiAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRl
eCA9IG1fZnRsU3RhdGUuaml0Q29kZS0+Y29tbW9uLmFkZENvZGVPcmlnaW4obV9ub2RlLT5vcmln
aW4uc2VtYW50aWMpOwogICAgICAgICAKICAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9jYWxsRnJh
bWUsIHBhY2tldCwgbV9oZWFwcy5TaGFkb3dDaGlja2VuX1BhY2tldF9mcmFtZSk7Ci0gICAgICAg
IG1fb3V0LnN0b3JlUHRyKG1fb3V0LmNvbnN0SW50UHRyKFNoYWRvd0NoaWNrZW46OlBhY2tldDo6
dGFpbE1hcmtlcigpKSwgcGFja2V0LCBtX2hlYXBzLlNoYWRvd0NoaWNrZW5fUGFja2V0X2NhbGxl
ZSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmNvbnN0SW50UHRyKGJpdHdpc2VfY2Fz
dDxpbnRwdHJfdD4oU2hhZG93Q2hpY2tlbjo6UGFja2V0Ojp0YWlsTWFya2VyKCkpKSwgcGFja2V0
LCBtX2hlYXBzLlNoYWRvd0NoaWNrZW5fUGFja2V0X2NhbGxlZSk7CiAgICAgICAgIG1fb3V0LnN0
b3JlNjQodGhpc1ZhbHVlLCBwYWNrZXQsIG1faGVhcHMuU2hhZG93Q2hpY2tlbl9QYWNrZXRfdGhp
c1ZhbHVlKTsKICAgICAgICAgbV9vdXQuc3RvcmVQdHIoc2NvcGUsIHBhY2tldCwgbV9oZWFwcy5T
aGFkb3dDaGlja2VuX1BhY2tldF9zY29wZSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0
LmNvbnN0SW50UHRyKGNvZGVCbG9jaygpKSwgcGFja2V0LCBtX2hlYXBzLlNoYWRvd0NoaWNrZW5f
UGFja2V0X2NvZGVCbG9jayk7CisgICAgICAgIC8vIEZJWE1FCisgICAgICAgIG1fb3V0LnN0b3Jl
UHRyKG1fb3V0LmNvbnN0SW50UHRyKGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oY29kZUJsb2NrKCkp
KSwgcGFja2V0LCBtX2hlYXBzLlNoYWRvd0NoaWNrZW5fUGFja2V0X2NvZGVCbG9jayk7CiAgICAg
ICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuY29uc3RJbnQzMihjYWxsU2l0ZUluZGV4LmJpdHMoKSks
IHBhY2tldCwgbV9oZWFwcy5TaGFkb3dDaGlja2VuX1BhY2tldF9jYWxsU2l0ZUluZGV4KTsKICAg
ICB9CiAKQEAgLTkyMzQsOSArOTIzNyw5IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRnVuY3Rvcj4KICAgICB2b2lkIGNoZWNrU3RydWN0dXJlKAogICAgICAgICBMVmFsdWUgc3Ry
dWN0dXJlRGlzY3JpbWluYW50LCBjb25zdCBGb3JtYXR0ZWRWYWx1ZSYgZm9ybWF0dGVkVmFsdWUs
IEV4aXRLaW5kIGV4aXRLaW5kLAotICAgICAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCwgY29u
c3QgRnVuY3RvciYgd2Vha1N0cnVjdHVyZURpc2NyaW1pbmFudCkKKyAgICAgICAgUmVnaXN0ZXJl
ZFN0cnVjdHVyZVNldCBzZXQsIGNvbnN0IEZ1bmN0b3ImIHdlYWtTdHJ1Y3R1cmVEaXNjcmltaW5h
bnQpCiAgICAgewotICAgICAgICBpZiAoc2V0LmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoIXNl
dC5zaXplKCkpIHsKICAgICAgICAgICAgIHRlcm1pbmF0ZShleGl0S2luZCk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KQEAgLTkyNDQsNyArOTI0Nyw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGlmIChzZXQuc2l6ZSgpID09IDEpIHsKICAgICAgICAgICAgIHNwZWN1bGF0ZSgKICAgICAg
ICAgICAgICAgICBleGl0S2luZCwgZm9ybWF0dGVkVmFsdWUsIDAsCi0gICAgICAgICAgICAgICAg
bV9vdXQubm90RXF1YWwoc3RydWN0dXJlRGlzY3JpbWluYW50LCB3ZWFrU3RydWN0dXJlRGlzY3Jp
bWluYW50KHNldFswXSkpKTsKKyAgICAgICAgICAgICAgICBtX291dC5ub3RFcXVhbChzdHJ1Y3R1
cmVEaXNjcmltaW5hbnQsIHdlYWtTdHJ1Y3R1cmVEaXNjcmltaW5hbnQoc2V0LmF0KDApKSkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIApAQCAtOTI1NCw3ICs5MjU3
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNldC5zaXpl
KCkgLSAxOyArK2kpIHsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5leHRTdHJ1Y3R1cmUgPSBt
X291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgbV9vdXQuYnJhbmNoKAotICAgICAgICAgICAg
ICAgIG1fb3V0LmVxdWFsKHN0cnVjdHVyZURpc2NyaW1pbmFudCwgd2Vha1N0cnVjdHVyZURpc2Ny
aW1pbmFudChzZXRbaV0pKSwKKyAgICAgICAgICAgICAgICBtX291dC5lcXVhbChzdHJ1Y3R1cmVE
aXNjcmltaW5hbnQsIHdlYWtTdHJ1Y3R1cmVEaXNjcmltaW5hbnQoc2V0LmF0KGkpKSksCiAgICAg
ICAgICAgICAgICAgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShuZXh0U3RydWN0dXJlKSk7
CiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhuZXh0U3RydWN0dXJlKTsKICAgICAgICAgfQpA
QCAtOTM3Niw3ICs5Mzc5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgQmFkVHlw
ZSwganNWYWx1ZVZhbHVlKHZhbHVlKSwgZWRnZS5ub2RlKCksCiAgICAgICAgICAgICAgICAgICAg
IG1fb3V0Lm5vdEVxdWFsKAogICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyKHZh
bHVlLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICB3ZWFrU3RydWN0dXJlSUQodHlwZS5zdHJ1Y3R1cmUoKSkpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHdlYWtTdHJ1Y3R1cmVJRChtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHR5cGUuc3Ry
dWN0dXJlKCkpKSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC05
Mzk0LDcgKzkzOTcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBCYWRUeXBlLCBq
c1ZhbHVlVmFsdWUodmFsdWUpLCBlZGdlLm5vZGUoKSwKICAgICAgICAgICAgICAgICAgICAgbV9v
dXQubm90RXF1YWwoCiAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5sb2FkMzIodmFsdWUs
IG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHdl
YWtTdHJ1Y3R1cmVJRCh0eXBlLnN0cnVjdHVyZSgpKSkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgd2Vha1N0cnVjdHVyZUlEKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodHlwZS5zdHJ1Y3R1
cmUoKSkpKSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGlu
dWF0aW9uKTsKQEAgLTEwNDkzLDkgKzEwNDk2LDkgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAKLSAgICBMVmFsdWUgYWxsb2NhdGVPYmplY3QoTFZhbHVlIGFsbG9j
YXRvciwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIExWYWx1ZSBidXR0ZXJmbHksIExCYXNpY0Jsb2Nr
IHNsb3dQYXRoKQorICAgIExWYWx1ZSBhbGxvY2F0ZU9iamVjdChMVmFsdWUgYWxsb2NhdG9yLCBS
ZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgTFZhbHVlIGJ1dHRlcmZseSwgTEJhc2ljQmxv
Y2sgc2xvd1BhdGgpCiAgICAgewotICAgICAgICByZXR1cm4gYWxsb2NhdGVPYmplY3QoYWxsb2Nh
dG9yLCBtX291dC5jb25zdEludFB0cihzdHJ1Y3R1cmUpLCBidXR0ZXJmbHksIHNsb3dQYXRoKTsK
KyAgICAgICAgcmV0dXJuIGFsbG9jYXRlT2JqZWN0KGFsbG9jYXRvciwgd2Vha1N0cnVjdHVyZShz
dHJ1Y3R1cmUpLCBidXR0ZXJmbHksIHNsb3dQYXRoKTsKICAgICB9CiAKICAgICBMVmFsdWUgYWxs
b2NhdGVPYmplY3QoTFZhbHVlIGFsbG9jYXRvciwgTFZhbHVlIHN0cnVjdHVyZSwgTFZhbHVlIGJ1
dHRlcmZseSwgTEJhc2ljQmxvY2sgc2xvd1BhdGgpCkBAIC0xMDU4OSw3ICsxMDU5Miw3IEBAIHBy
aXZhdGU6CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2xhc3NUeXBlPgogICAgIExWYWx1
ZSBhbGxvY2F0ZVZhcmlhYmxlU2l6ZWRPYmplY3QoCi0gICAgICAgIExWYWx1ZSBzaXplLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgTFZhbHVlIGJ1dHRlcmZseSwgTEJhc2ljQmxvY2sgc2xvd1BhdGgp
CisgICAgICAgIExWYWx1ZSBzaXplLCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgTFZh
bHVlIGJ1dHRlcmZseSwgTEJhc2ljQmxvY2sgc2xvd1BhdGgpCiAgICAgewogICAgICAgICBMVmFs
dWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6ZSgKICAgICAgICAgICAgICpzdWJzcGFjZUZv
cjxDbGFzc1R5cGU+KHZtKCkpLCBzaXplLCBzbG93UGF0aCk7CkBAIC0xMDYwNSw5ICsxMDYwOCw5
IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBhbGxvY2F0ZUNlbGwoYWxsb2NhdG9yLCBzdHJ1
Y3R1cmUsIHNsb3dQYXRoKTsKICAgICB9CiAgICAgCi0gICAgTFZhbHVlIGFsbG9jYXRlT2JqZWN0
KFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIExWYWx1ZSBhbGxvY2F0ZU9iamVjdChSZWdpc3Rl
cmVkU3RydWN0dXJlIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIHNpemVfdCBhbGxvY2F0aW9u
U2l6ZSA9IEpTRmluYWxPYmplY3Q6OmFsbG9jYXRpb25TaXplKHN0cnVjdHVyZS0+aW5saW5lQ2Fw
YWNpdHkoKSk7CisgICAgICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IEpTRmluYWxPYmplY3Q6
OmFsbG9jYXRpb25TaXplKHN0cnVjdHVyZS5nZXQoKS0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAg
ICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yID0gc3Vic3BhY2VGb3I8SlNGaW5hbE9iamVj
dD4odm0oKSktPmFsbG9jYXRvckZvcihhbGxvY2F0aW9uU2l6ZSk7CiAgICAgICAgIAogICAgICAg
ICAvLyBGSVhNRTogSWYgdGhlIGFsbG9jYXRvciBpcyBudWxsLCB3ZSBjb3VsZCBzaW1wbHkgZW1p
dCBhIG5vcm1hbCBDIGNhbGwgdG8gdGhlIGFsbG9jYXRvcgpAQCAtMTA2MzAsNyArMTA2MzMsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgWz1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2Nh
dGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gewogICAgICAgICAgICAg
ICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICAgICAg
b3BlcmF0aW9uTmV3T2JqZWN0LCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksCi0gICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsKKyAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZS5nZXQo
KSkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQg
PSBtX291dC5hbmNob3Ioc2xvd1Jlc3VsdFZhbHVlKTsKICAgICAgICAgbV9vdXQuanVtcChjb250
aW51YXRpb24pOwpAQCAtMTA3MzMsOCArMTA3MzYsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8obGFyZ2VDYXNlLCBmYWlsQ2FzZSk7CiAgICAgICAgIFZhbHVl
RnJvbUJsb2NrIGxhcmdlU3RydWN0dXJlID0gbV9vdXQuYW5jaG9yKAotICAgICAgICAgICAgbV9v
dXQuY29uc3RJbnRQdHIoCi0gICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVj
dHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQXJyYXlTdG9yYWdl
KSkpOworICAgICAgICAgICAgd2Vha1N0cnVjdHVyZShtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJl
KGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0
aW9uKEFycmF5V2l0aEFycmF5U3RvcmFnZSkpKSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoc2xvd0Nh
c2UpOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oZmFpbENhc2UsIHNsb3dDYXNl
KTsKQEAgLTEwNzYzLDEyICsxMDc2NSwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQu
cGhpKHBvaW50ZXJUeXBlKCksIGZhc3RCdXR0ZXJmbHksIHNsb3dCdXR0ZXJmbHkpKTsKICAgICB9
CiAgICAgCi0gICAgQXJyYXlWYWx1ZXMgYWxsb2NhdGVVbmluaXRpYWxpemVkQ29udGlndW91c0pT
QXJyYXkoTFZhbHVlIHB1YmxpY0xlbmd0aCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgQXJy
YXlWYWx1ZXMgYWxsb2NhdGVVbmluaXRpYWxpemVkQ29udGlndW91c0pTQXJyYXkoTFZhbHVlIHB1
YmxpY0xlbmd0aCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAg
ICBib29sIHNob3VsZEluaXRpYWxpemVFbGVtZW50cyA9IGZhbHNlOwogICAgICAgICBib29sIHNo
b3VsZExhcmdlQXJyYXlTaXplQ3JlYXRlQXJyYXlTdG9yYWdlID0gZmFsc2U7CiAgICAgICAgIHJl
dHVybiBhbGxvY2F0ZUpTQXJyYXkoCi0gICAgICAgICAgICBwdWJsaWNMZW5ndGgsIG1fb3V0LmNv
bnN0SW50UHRyKHN0cnVjdHVyZSksIG1fb3V0LmNvbnN0SW50MzIoc3RydWN0dXJlLT5pbmRleGlu
Z1R5cGUoKSksIHNob3VsZEluaXRpYWxpemVFbGVtZW50cywKKyAgICAgICAgICAgIHB1YmxpY0xl
bmd0aCwgd2Vha1N0cnVjdHVyZShzdHJ1Y3R1cmUpLCBtX291dC5jb25zdEludDMyKHN0cnVjdHVy
ZS0+aW5kZXhpbmdUeXBlKCkpLCBzaG91bGRJbml0aWFsaXplRWxlbWVudHMsCiAgICAgICAgICAg
ICBzaG91bGRMYXJnZUFycmF5U2l6ZUNyZWF0ZUFycmF5U3RvcmFnZSk7CiAgICAgfQogICAgIApA
QCAtMTA5MTAsNyArMTA5MTIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1fb3V0LmFw
cGVuZFRvKG1hc3F1ZXJhZGVzQ2FzZSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgaXNUcnV0aHlPYmplY3QgPSBtX291dC5ub3RFcXVhbCgKLSAgICAgICAgICAgICAgICAgICAg
bV9vdXQuY29uc3RJbnRQdHIobV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwKKyAgICAgICAgICAgICAgICAgICAgd2Vha1BvaW50ZXIobV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwKICAgICAgICAgICAgICAgICAg
ICAgbV9vdXQubG9hZFB0cihsb2FkU3RydWN0dXJlKHZhbHVlKSwgbV9oZWFwcy5TdHJ1Y3R1cmVf
Z2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVu
ZChtX291dC5hbmNob3IoaXNUcnV0aHlPYmplY3QpKTsKQEAgLTExMDA5LDcgKzExMDExLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQu
YW5jaG9yKAogICAgICAgICAgICAgICAgIG1fb3V0LmVxdWFsKAotICAgICAgICAgICAgICAgICAg
ICBtX291dC5jb25zdEludFB0cihtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLAorICAgICAgICAgICAgICAgICAgICB3ZWFrUG9pbnRlcihtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykpLAogICAgICAgICAgICAgICAg
ICAgICBtX291dC5sb2FkUHRyKHN0cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVfZ2xvYmFsT2Jq
ZWN0KSkpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAg
fQpAQCAtMTE5MzEsMTIgKzExOTMzLDEyIEBAIHByaXZhdGU6CiAgICAgICAgIERGR19BU1NFUlQo
bV9ncmFwaCwgbV9ub2RlLCBtb2RlID09IE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBERkc6
OmlzQ2VsbChlZGdlLnVzZUtpbmQoKSkpOwogICAgICAgICAKICAgICAgICAgaWYgKGVkZ2UtPm9w
KCkgPT0gSlNDb25zdGFudCkgewotICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGVkZ2UtPmFz
SlNWYWx1ZSgpOwotICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkgeworICAgICAgICAg
ICAgRnJvemVuVmFsdWUqIHZhbHVlID0gZWRnZS0+Y29uc3RhbnQoKTsKKyAgICAgICAgICAgIGlm
ICghdmFsdWUtPnZhbHVlKCkuaXNDZWxsKCkpIHsKICAgICAgICAgICAgICAgICB0ZXJtaW5hdGUo
VW5jb3VudGFibGUpOwogICAgICAgICAgICAgICAgIHJldHVybiBtX291dC5pbnRQdHJaZXJvOwog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmNvbnN0SW50UHRyKHZhbHVl
LmFzQ2VsbCgpKTsKKyAgICAgICAgICAgIHJldHVybiBmcm96ZW5Qb2ludGVyKHZhbHVlKTsKICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgTG93ZXJlZE5vZGVWYWx1ZSB2YWx1ZSA9IG1fanNW
YWx1ZVZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOwpAQCAtMTI5MDEsMTAgKzEyOTAzLDEwIEBAIHBy
aXZhdGU6CiAgICAgCiAgICAgdm9pZCBzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JTdHJ1Y3R1cmVJ
RChFZGdlIGVkZ2UsIExWYWx1ZSBzdHJ1Y3R1cmVJRCkKICAgICB7Ci0gICAgICAgIFN0cnVjdHVy
ZSogc3RyaW5nT2JqZWN0U3RydWN0dXJlID0KLSAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+c3RyaW5nT2JqZWN0U3RydWN0dXJlKCk7
CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RyaW5nT2JqZWN0U3RydWN0dXJlID0KKyAg
ICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSk7CiAg
ICAgICAgIAotICAgICAgICBpZiAoYWJzdHJhY3RTdHJ1Y3R1cmUoZWRnZSkuaXNTdWJzZXRPZihT
dHJ1Y3R1cmVTZXQoc3RyaW5nT2JqZWN0U3RydWN0dXJlKSkpCisgICAgICAgIGlmIChhYnN0cmFj
dFN0cnVjdHVyZShlZGdlKS5pc1N1YnNldE9mKFN0cnVjdHVyZVNldChzdHJpbmdPYmplY3RTdHJ1
Y3R1cmUuZ2V0KCkpKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgICAgIHNw
ZWN1bGF0ZSgKQEAgLTEzNjkwLDE4ICsxMzY5MiwyMyBAQCBwcml2YXRlOgogICAgIExWYWx1ZSB3
ZWFrUG9pbnRlcihKU0NlbGwqIHBvaW50ZXIpCiAgICAgewogICAgICAgICBhZGRXZWFrUmVmZXJl
bmNlKHBvaW50ZXIpOwotICAgICAgICByZXR1cm4gbV9vdXQuY29uc3RJbnRQdHIocG9pbnRlcik7
CisgICAgICAgIHJldHVybiBtX291dC5jb25zdEdDUG9pbnRlcihtX2dyYXBoLCBwb2ludGVyKTsK
KyAgICB9CisKKyAgICBMVmFsdWUgZnJvemVuUG9pbnRlcihGcm96ZW5WYWx1ZSogdmFsdWUpCisg
ICAgeworICAgICAgICByZXR1cm4gbV9vdXQuY29uc3RHQ1BvaW50ZXIodmFsdWUpOwogICAgIH0K
IAotICAgIExWYWx1ZSB3ZWFrU3RydWN0dXJlSUQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAg
TFZhbHVlIHdlYWtTdHJ1Y3R1cmVJRChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkKICAg
ICB7Ci0gICAgICAgIGFkZFdlYWtSZWZlcmVuY2Uoc3RydWN0dXJlKTsKICAgICAgICAgcmV0dXJu
IG1fb3V0LmNvbnN0SW50MzIoc3RydWN0dXJlLT5pZCgpKTsKICAgICB9CiAgICAgCi0gICAgTFZh
bHVlIHdlYWtTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgTFZhbHVlIHdlYWtT
dHJ1Y3R1cmUoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBy
ZXR1cm4gd2Vha1BvaW50ZXIoc3RydWN0dXJlKTsKKyAgICAgICAgQVNTRVJUKCEhc3RydWN0dXJl
LmdldCgpKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LmNvbnN0R0NQb2ludGVyKG1fZ3JhcGgsIHN0
cnVjdHVyZS5nZXQoKSk7CiAgICAgfQogICAgIAogICAgIFR5cGVkUG9pbnRlciBhZGRyZXNzRm9y
KExWYWx1ZSBiYXNlLCBpbnQgb3BlcmFuZCwgcHRyZGlmZl90IG9mZnNldCA9IDApCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgJKHJldmlzaW9uIDIxMTAwNSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJGVExWYWx1ZUZyb21CbG9jay5oIgogI2luY2x1ZGUgIkZU
TFdlaWdodC5oIgogI2luY2x1ZGUgIkZUTFdlaWdodGVkVGFyZ2V0LmgiCisjaW5jbHVkZSAiSGVh
cENlbGwuaCIKICNpbmNsdWRlIDx3dGYvT3JkZXJNYWtlci5oPgogI2luY2x1ZGUgPHd0Zi9TdHJp
bmdQcmludFN0cmVhbS5oPgogCkBAIC0xMDQsOSArMTA1LDMwIEBAIHB1YmxpYzoKIAogICAgIExW
YWx1ZSBjb25zdEJvb2woYm9vbCB2YWx1ZSk7CiAgICAgTFZhbHVlIGNvbnN0SW50MzIoaW50MzJf
dCB2YWx1ZSk7CisKKyAgICBMVmFsdWUgY29uc3RHQ1BvaW50ZXIoREZHOjpHcmFwaCYgZ3JhcGgs
IEpTQ2VsbCogY2VsbCkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBtYWtlIGRlYnVnIGFzc2Vy
dCBhZnRlciBydW5uaW5nIHRlc3RzLgorICAgICAgICBSRUxFQVNFX0FTU0VSVChncmFwaC5tX3Bs
YW4ud2Vha1JlZmVyZW5jZXMuY29udGFpbnMoY2VsbCkpOworCisgICAgICAgIGlmIChzaXplb2Yo
dm9pZCopID09IDgpCisgICAgICAgICAgICByZXR1cm4gY29uc3RJbnQ2NChiaXR3aXNlX2Nhc3Q8
aW50cHRyX3Q+KGNlbGwpKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0SW50MzIoYml0d2lzZV9jYXN0
PGludHB0cl90PihjZWxsKSk7CisgICAgfQorCisgICAgTFZhbHVlIGNvbnN0R0NQb2ludGVyKERG
Rzo6RnJvemVuVmFsdWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQodmFs
dWUtPnZhbHVlKCkuaXNDZWxsKCkpOworCisgICAgICAgIGlmIChzaXplb2Yodm9pZCopID09IDgp
CisgICAgICAgICAgICByZXR1cm4gY29uc3RJbnQ2NChiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KHZh
bHVlLT5jZWxsKCkpKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0SW50MzIoYml0d2lzZV9jYXN0PGlu
dHB0cl90Pih2YWx1ZS0+Y2VsbCgpKSk7CisgICAgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KICAgICBMVmFsdWUgY29uc3RJbnRQdHIoVCogdmFsdWUpCiAgICAgeworICAgICAgICBzdGF0
aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8SGVhcENlbGwsIFQ+Ojp2YWx1ZSwgIlRvIHVzZSBh
IEdDIHBvaW50ZXIsIHRoZSBncmFwaCBtdXN0IGJlIGF3YXJlIG9mIGl0LiBVc2UgZ2NQb2ludGVy
IGluc3RlYWQgYW5kIG1ha2Ugc3VyZSB0aGUgZ3JhcGggaXMgYXdhcmUgb2YgdGhpcyByZWZlcmVu
Y2UuIik7CiAgICAgICAgIGlmIChzaXplb2Yodm9pZCopID09IDgpCiAgICAgICAgICAgICByZXR1
cm4gY29uc3RJbnQ2NChiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KHZhbHVlKSk7CiAgICAgICAgIHJl
dHVybiBjb25zdEludDMyKGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4odmFsdWUpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299538</attachid>
            <date>2017-01-23 14:31:33 -0800</date>
            <delta_ts>2017-01-24 20:00:50 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>154369</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTEwMDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTQ2OSw2ICsxNDY5LDcgQEAKIAkJNzlFRTBDMDAxQjRB
RkI4NTAwMDM4NUM5IC8qIFZhcmlhYmxlRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RUUwQkZFMUI0QUZCODUwMDAzODVDOSAvKiBW
YXJpYWJsZUVudmlyb25tZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNzlGOEZDMUUxQjlGRUQwRjAwQ0E2NkFCIC8qIERGR01heGltYWxGbHVz
aEluc2VydGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDc5RjhGQzFDMUI5RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJbnNl
cnRpb25QaGFzZS5jcHAgKi87IH07CiAJCTc5RjhGQzFGMUI5RkVEMEYwMENBNjZBQiAvKiBERkdN
YXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzlGOEZDMUQxQjlGRUQwRjAwQ0E2NkFCIC8qIERGR01heGltYWxG
bHVzaEluc2VydGlvblBoYXNlLmggKi87IH07CisJCTc5RkM4QTA4MUUzMkU5RjAwMEQ4OEYwRSAv
KiBERkdSZWdpc3RlcmVkU3RydWN0dXJlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3OUZDOEEwNzFFMzJFOUYwMDBEODhGMEUgLyogREZHUmVnaXN0ZXJl
ZFN0cnVjdHVyZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTdCQzU0N0QzMUI2OTU5QTEwMDk1OUI1OCAvKiBXYXNtRm9ybWF0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkM1NDdEMjFCNjk1OTlCMDA5
NTlCNTggLyogV2FzbUZvcm1hdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTdDMDA4Q0RBMTg3MTI0QkIwMDk1NUMyNCAvKiBKU1Byb21pc2VEZWZl
cnJlZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QzAwOENEODE4NzEyNEJCMDA5NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQuY3BwICovOyB9Owog
CQk3QzAwOENEQjE4NzEyNEJCMDA5NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMDA4Q0Q5MTg3MTI0QkIw
MDk1NUMyNCAvKiBKU1Byb21pc2VEZWZlcnJlZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zOTM2LDYgKzM5MzcsNyBAQAogCQk3OUVFMEJGRTFC
NEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBWYXJpYWJsZUVudmlyb25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTc5RjhGQzFDMUI5RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJ
bnNlcnRpb25QaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBE
RkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHTWF4aW1hbEZs
dXNoSW5zZXJ0aW9uUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3OUY4
RkMxRDFCOUZFRDBGMDBDQTY2QUIgLyogREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9u
UGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3OUZDOEEwNzFFMzJFOUYwMDBEODhGMEUgLyogREZH
UmVnaXN0ZXJlZFN0cnVjdHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBE
RkdSZWdpc3RlcmVkU3RydWN0dXJlLmg7IHBhdGggPSBkZmcvREZHUmVnaXN0ZXJlZFN0cnVjdHVy
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QkM1NDdEMjFCNjk1OTlCMDA5NTlC
NTggLyogV2FzbUZvcm1hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNt
Rm9ybWF0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDA4Q0Q4MTg3MTI0QkIw
MDk1NUMyNCAvKiBKU1Byb21pc2VEZWZlcnJlZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1Byb21pc2VEZWZlcnJlZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDMDA4Q0Q5MTg3MTI0QkIwMDk1NUMyNCAvKiBKU1Byb21pc2VEZWZlcnJlZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb21pc2VEZWZlcnJlZC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzA4Myw2ICs3MDg1LDcgQEAKIAkJCQkwRkIx
NzY1RjE5NkI4RjlFMDA5MTA1MkEgLyogREZHUHVyZVZhbHVlLmggKi8sCiAJCQkJMEYzQTFCRjcx
QTlFQ0I3RDAwMERFMDFBIC8qIERGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcCAqLywKIAkJCQkw
RjNBMUJGODFBOUVDQjdEMDAwREUwMUEgLyogREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuaCAqLywK
KwkJCQk3OUZDOEEwNzFFMzJFOUYwMDBEODhGMEUgLyogREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5o
ICovLAogCQkJCTg2RUM5REMxMTMyOERGODIwMDJCMkFENyAvKiBERkdSZWdpc3RlckJhbmsuaCAq
LywKIAkJCQkwRjJGQ0NGNDE4QTYwMDcwMDAxQTI3RjggLyogREZHU2FmZXBvaW50LmNwcCAqLywK
IAkJCQkwRjJGQ0NGNTE4QTYwMDcwMDAxQTI3RjggLyogREZHU2FmZXBvaW50LmggKi8sCkBAIC04
MDY3LDYgKzgwNzAsNyBAQAogCQkJCTBGMjFDMjdEMTRCRTcyN0EwMEFEQzY0QiAvKiBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBNzE0QkNGNTA3MDA4
ODVCNEYgLyogQ29kZVR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTc2MjA1MURCOTI0Mjkw
MEI3QTJGRCAvKiBDb2xsZWN0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTc5RkM4QTA4
MUUzMkU5RjAwMEQ4OEYwRSAvKiBERkdSZWdpc3RlcmVkU3RydWN0dXJlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNTMyNDM5ODE4NTZBNDg5MDAyRUQ2OTIgLyogQ29tYmluZWREb21haW5zLmpzb24g
aW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNGMzBFMTZGNUNEMDBCMzQ0NjAgLyogQ29tbW9uSWRl
bnRpZmllcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTVGMTVGMTRCN0E3M0UwMDVERTM3RCAv
KiBDb21tb25TbG93UGF0aHMuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAkocmV2aXNpb24gMjExMDA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODc0LDcgKzE4NzQs
NyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIAog
ICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OiB7CiAgICAgICAgIEFTU0VSVChub2RlLT5zdHJ1Y3R1
cmUoKS0+Y2xhc3NJbmZvKCkgPT0gU3RyaW5nT2JqZWN0OjppbmZvKCkpOwotICAgICAgICBmb3JO
b2RlKG5vZGUpLnNldChtX2dyYXBoLCBub2RlLT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgIGZvck5v
ZGUobm9kZSkuc2V0KG1fZ3JhcGgsIG5vZGUtPnN0cnVjdHVyZSgpLmdldCgpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogICAgICAgICAgICAgCkBAIC0xOTYzLDggKzE5NjMsOCBAQCBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgfQogICAgICAgICAKICAgICBj
YXNlIE5ld09iamVjdDoKLSAgICAgICAgQVNTRVJUKG5vZGUtPnN0cnVjdHVyZSgpKTsKLSAgICAg
ICAgZm9yTm9kZShub2RlKS5zZXQobV9ncmFwaCwgbm9kZS0+c3RydWN0dXJlKCkpOworICAgICAg
ICBBU1NFUlQobm9kZS0+c3RydWN0dXJlKCkuZ2V0KCkpOworICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldChtX2dyYXBoLCBub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CiAgICAgICAgIGJyZWFrOwog
CiAgICAgY2FzZSBDYWxsT2JqZWN0Q29uc3RydWN0b3I6IHsKQEAgLTIwMDAsNyArMjAwMCw3IEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgYnJlYWs7
CiAgICAgICAgIAogICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6IHsKLSAgICAgICAgZm9y
Tm9kZShub2RlKS5zZXQobV9ncmFwaCwgbm9kZS0+c3RydWN0dXJlU2V0KCkpOworICAgICAgICBm
b3JOb2RlKG5vZGUpLnNldChtX2dyYXBoLCBub2RlLT5zdHJ1Y3R1cmVTZXQoKS5nZXQoKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMjIzOCw3ICsyMjM4LDcgQEAgYm9vbCBBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6IHsK
ICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsK
IAotICAgICAgICBTdHJ1Y3R1cmVTZXQmIHNldCA9IG5vZGUtPnN0cnVjdHVyZVNldCgpOworICAg
ICAgICBTdHJ1Y3R1cmVTZXQmIHNldCA9IG5vZGUtPnN0cnVjdHVyZVNldCgpLmdldCgpOwogICAg
ICAgICAKICAgICAgICAgLy8gSXQncyBpbnRlcmVzdGluZyB0aGF0IHdlIGNvdWxkIGhhdmUgcHJv
dmVuIHRoYXQgdGhlIG9iamVjdCBoYXMgYSBsYXJnZXIgc3RydWN0dXJlIHNldAogICAgICAgICAv
LyB0aGF0IGluY2x1ZGVzIHRoZSBzZXQgd2UncmUgdGVzdGluZy4gSW4gdGhhdCBjYXNlIHdlIGNv
dWxkIG1ha2UgdGhlIHN0cnVjdHVyZSBjaGVjawpAQCAtMjI3MCw3ICsyMjcwLDcgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2OTg4CiAgICAgICAgIAogICAgICAgICBB
YnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBT
dHJ1Y3R1cmVTZXQmIHNldCA9IG5vZGUtPnN0cnVjdHVyZVNldCgpOworICAgICAgICBTdHJ1Y3R1
cmVTZXQmIHNldCA9IG5vZGUtPnN0cnVjdHVyZVNldCgpLmdldCgpOwogICAgICAgICAKICAgICAg
ICAgaWYgKHZhbHVlLnZhbHVlKCkpIHsKICAgICAgICAgICAgIGlmIChTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IGpzRHluYW1pY0Nhc3Q8U3RydWN0dXJlKj4odmFsdWUudmFsdWUoKSkpIHsKQEAgLTIz
MTEsMTIgKzIzMTEsMTIgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eQogICAgICAgICAKICAgICBjYXNlIFB1dFN0cnVjdHVyZToKICAgICAgICAgaWYgKCFmb3JOb2Rl
KG5vZGUtPmNoaWxkMSgpKS5tX3N0cnVjdHVyZS5pc0NsZWFyKCkpIHsKLSAgICAgICAgICAgIGlm
IChmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3N0cnVjdHVyZS5vbmx5U3RydWN0dXJlKCkgPT0g
bm9kZS0+dHJhbnNpdGlvbigpLT5uZXh0KQorICAgICAgICAgICAgaWYgKGZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpLm1fc3RydWN0dXJlLm9ubHlTdHJ1Y3R1cmUoKSA9PSBub2RlLT50cmFuc2l0aW9u
KCktPm5leHQuZ2V0KCkpCiAgICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50
cyh0cnVlKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIG9ic2VydmVUcmFu
c2l0aW9uKAotICAgICAgICAgICAgICAgICAgICBjbG9iYmVyTGltaXQsIG5vZGUtPnRyYW5zaXRp
b24oKS0+cHJldmlvdXMsIG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dCk7Ci0gICAgICAgICAgICAg
ICAgZm9yTm9kZShub2RlLT5jaGlsZDEoKSkuY2hhbmdlU3RydWN0dXJlKG1fZ3JhcGgsIG5vZGUt
PnRyYW5zaXRpb24oKS0+bmV4dCk7CisgICAgICAgICAgICAgICAgICAgIGNsb2JiZXJMaW1pdCwg
bm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91cy5nZXQoKSwgbm9kZS0+dHJhbnNpdGlvbigpLT5u
ZXh0LmdldCgpKTsKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5jaGFu
Z2VTdHJ1Y3R1cmUobV9ncmFwaCwgbm9kZS0+dHJhbnNpdGlvbigpLT5uZXh0LmdldCgpKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAgLTI0MzIsNyArMjQzMiw3
IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICB9CiAgICAg
Y2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOiB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVl
ID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVy
ZS5pc1N1YnNldE9mKFN0cnVjdHVyZVNldChub2RlLT5zdHJ1Y3R1cmUoKSkpKQorICAgICAgICBp
ZiAodmFsdWUubV9zdHJ1Y3R1cmUuaXNTdWJzZXRPZihTdHJ1Y3R1cmVTZXQobm9kZS0+c3RydWN0
dXJlKCkuZ2V0KCkpKSkKICAgICAgICAgICAgIG1fc3RhdGUuc2V0Rm91bmRDb25zdGFudHModHJ1
ZSk7CiAgICAgICAgIGNsb2JiZXJTdHJ1Y3R1cmVzKGNsb2JiZXJMaW1pdCk7CiAgICAgICAgIApA
QCAtMjQ2Myw3ICsyNDYzLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3Rh
dGVUeQogICAgICAgICAvLyBOb3RlIHRoYXQgaXQncyB0ZW1wdGluZyB0byBzaW1wbHkgc2F5IHRo
YXQgdGhlIHJlc3VsdGluZyB2YWx1ZSBpcyBCT1RUT00gYmVjYXVzZSBvZgogICAgICAgICAvLyB0
aGUgY29udHJhZGljdGlvbi4gVGhhdCB3b3VsZCBiZSB3cm9uZywgc2luY2Ugd2UgaGF2ZW4ndCBo
aXQgYW4gaW52YWxpZGF0aW9uIHBvaW50LAogICAgICAgICAvLyB5ZXQuCi0gICAgICAgIHZhbHVl
LnNldChtX2dyYXBoLCBub2RlLT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgIHZhbHVlLnNldChtX2dy
YXBoLCBub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6IHsKQEAgLTI2MTYsNyArMjYxNiw3IEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIGlm
ICh2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6VHJhbnNpdGlvbikgewogICAgICAg
ICAgICAgICAgIGlmICh0aGlzU2V0Lm9ubHlTdHJ1Y3R1cmUoKSAhPSB2YXJpYW50Lm5ld1N0cnVj
dHVyZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25zLmFwcGVuZCgKLSAgICAg
ICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24odmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFu
c2l0aW9uKCksIHZhcmlhbnQubmV3U3RydWN0dXJlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIFRyYW5zaXRpb24obV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0cnVj
dHVyZUZvclRyYW5zaXRpb24oKSksIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5u
ZXdTdHJ1Y3R1cmUoKSkpKTsKICAgICAgICAgICAgICAgICB9IC8vIGVsc2UgdGhpcyBpcyByZWFs
bHkgYSByZXBsYWNlLgogICAgICAgICAgICAgICAgIG5ld1NldC5hZGQodmFyaWFudC5uZXdTdHJ1
Y3R1cmUoKSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMjcxOCw3ICsyNzE4LDcgQEAgYm9v
bCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgICAgICAg
ICBpZiAodmFyaWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb24pIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25zLmFwcGVuZCgKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUcmFuc2l0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKSwgdmFyaWFudC5uZXdTdHJ1Y3R1
cmUoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVy
U3RydWN0dXJlKHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpKSwgbV9ncmFwaC5y
ZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKSkpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm5ld1N0cnVjdHVy
ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NldC5hZGQodmFyaWFudC5uZXdTdHJ1
Y3R1cmUoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAJKHJldmlzaW9uIDIxMTAw
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDkgQEAgdm9pZCBBYnN0cmFjdFZhbHVlOjpzZXQoR3Jh
cGgmIGdyYXBoLCBjbwogewogICAgIGlmICghIXZhbHVlICYmIHZhbHVlLnZhbHVlKCkuaXNDZWxs
KCkpIHsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2YWx1ZS5zdHJ1Y3R1cmUoKTsK
LSAgICAgICAgaWYgKGdyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkgPT0gU3RydWN0
dXJlUmVnaXN0ZXJlZEFuZFdhdGNoZWQpIHsKKyAgICAgICAgU3RydWN0dXJlUmVnaXN0cmF0aW9u
UmVzdWx0IHJlc3VsdDsKKyAgICAgICAgZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJl
LCByZXN1bHQpOworICAgICAgICBpZiAocmVzdWx0ID09IFN0cnVjdHVyZVJlZ2lzdGVyZWRBbmRX
YXRjaGVkKSB7CiAgICAgICAgICAgICBtX3N0cnVjdHVyZSA9IHN0cnVjdHVyZTsKICAgICAgICAg
ICAgIGlmIChjbG9iYmVyU3RhdGUgPT0gU3RydWN0dXJlc0FyZUNsb2JiZXJlZCkgewogICAgICAg
ICAgICAgICAgIG1fYXJyYXlNb2RlcyA9IEFMTF9BUlJBWV9NT0RFUzsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlv
blBoYXNlLmNwcAkocmV2aXNpb24gMjExMDA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzkz
LDcgKzM5Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSk7CiAKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFu
b2RlLT5zdHJ1Y3R1cmVTZXQoKS5jb250YWlucyhzdHJ1Y3R1cmUpKQorICAgICAgICAgICAgICAg
ICAgICBpZiAoIW5vZGUtPnN0cnVjdHVyZVNldCgpLmdldCgpLmNvbnRhaW5zKHN0cnVjdHVyZSkp
CiAgICAgICAgICAgICAgICAgICAgICAgICBlc2NhcGUobm9kZS0+Y2hpbGQxKCksIG5vZGUpOwog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5aWZ5U2xvd1BhdGhH
ZW5lcmF0b3IuaAkocmV2aXNpb24gMjExMDA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcg
KzQ1LDcgQEAgcHVibGljOgogICAgICAgICA6IEp1bXBpbmdTbG93UGF0aEdlbmVyYXRvcjxNYWNy
b0Fzc2VtYmxlcjo6SnVtcExpc3Q+KGZyb20sIGppdCkKICAgICAgICAgLCBtX29wKG5vZGUtPm9w
KCkpCiAgICAgICAgICwgbV9hcnJheU1vZGUobm9kZS0+YXJyYXlNb2RlKCkpCi0gICAgICAgICwg
bV9zdHJ1Y3R1cmUobm9kZS0+b3AoKSA9PSBBcnJheWlmeVRvU3RydWN0dXJlID8gbm9kZS0+c3Ry
dWN0dXJlKCkgOiAwKQorICAgICAgICAsIG1fc3RydWN0dXJlKG5vZGUtPm9wKCkgPT0gQXJyYXlp
ZnlUb1N0cnVjdHVyZSA/IG5vZGUtPnN0cnVjdHVyZSgpIDogUmVnaXN0ZXJlZFN0cnVjdHVyZSgp
KQogICAgICAgICAsIG1fYmFzZUdQUihiYXNlR1BSKQogICAgICAgICAsIG1fcHJvcGVydHlHUFIo
cHJvcGVydHlHUFIpCiAgICAgICAgICwgbV90ZW1wR1BSKHRlbXBHUFIpCkBAIC0xMTUsNyArMTE1
LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBqaXQtPm1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAg
ICAgICAgIAogICAgICAgICBpZiAobV9vcCA9PSBBcnJheWlmeVRvU3RydWN0dXJlKSB7Ci0gICAg
ICAgICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUpOworICAgICAgICAgICAgQVNTRVJUKG1fc3RydWN0
dXJlLmdldCgpKTsKICAgICAgICAgICAgIG1fYmFkSW5kZXhpbmdUeXBlSnVtcC5maWxsKAogICAg
ICAgICAgICAgICAgIGppdCwgaml0LT5tX2ppdC5icmFuY2hXZWFrU3RydWN0dXJlKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9iYXNlR1BSLCBKU0Nl
bGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBtX3N0cnVjdHVyZSkpOwogICAgICAgICB9IGVsc2Ug
ewpAQCAtMTM2LDcgKzEzNiw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgTm9kZVR5cGUg
bV9vcDsKICAgICBBcnJheU1vZGUgbV9hcnJheU1vZGU7Ci0gICAgU3RydWN0dXJlKiBtX3N0cnVj
dHVyZTsKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG1fc3RydWN0dXJlOwogICAgIEdQUlJlZyBt
X2Jhc2VHUFI7CiAgICAgR1BSUmVnIG1fcHJvcGVydHlHUFI7CiAgICAgR1BSUmVnIG1fdGVtcEdQ
UjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCShyZXZpc2lvbiAyMTEwMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk2MCw3ICsyOTYwLDcgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29uc3RhbnRJbnRlcgogICAgICAgICAgICAgcmVz
dWx0ID0gYWRkVG9HcmFwaChDYWxsU3RyaW5nQ29uc3RydWN0b3IsIGdldCh2aXJ0dWFsUmVnaXN0
ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkpKTsKICAgICAgICAgCiAgICAgICAgIGlm
IChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpCi0gICAgICAgICAgICByZXN1bHQgPSBhZGRUb0dy
YXBoKE5ld1N0cmluZ09iamVjdCwgT3BJbmZvKGZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKS0+c3Ry
aW5nT2JqZWN0U3RydWN0dXJlKCkpLCByZXN1bHQpOworICAgICAgICAgICAgcmVzdWx0ID0gYWRk
VG9HcmFwaChOZXdTdHJpbmdPYmplY3QsIE9wSW5mbyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJl
KGZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKS0+c3RyaW5nT2JqZWN0U3RydWN0dXJlKCkpKSwgcmVz
dWx0KTsKICAgICAgICAgCiAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFu
ZCksIHJlc3VsdCk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjk3Miw3ICsyOTcyLDcgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29uc3RhbnRJbnRlcgogCiAgICAgICAgIE5vZGUq
IHJlc3VsdDsKICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDw9IDEpCi0g
ICAgICAgICAgICByZXN1bHQgPSBhZGRUb0dyYXBoKE5ld09iamVjdCwgT3BJbmZvKGZ1bmN0aW9u
LT5nbG9iYWxPYmplY3QoKS0+b2JqZWN0U3RydWN0dXJlRm9yT2JqZWN0Q29uc3RydWN0b3IoKSkp
OworICAgICAgICAgICAgcmVzdWx0ID0gYWRkVG9HcmFwaChOZXdPYmplY3QsIE9wSW5mbyhtX2dy
YXBoLnJlZ2lzdGVyU3RydWN0dXJlKGZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKS0+b2JqZWN0U3Ry
dWN0dXJlRm9yT2JqZWN0Q29uc3RydWN0b3IoKSkpKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgcmVzdWx0ID0gYWRkVG9HcmFwaChDYWxsT2JqZWN0Q29uc3RydWN0b3IsIGdldCh2aXJ0dWFs
UmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkpKTsKICAgICAgICAgc2V0KFZp
cnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgcmVzdWx0KTsKQEAgLTM0MjksNyArMzQyOSw3
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKG9rKQotICAgICAgICAgICAgZ2V0QnlJZFN0YXR1cy5maWx0
ZXIoYmFzZS0+c3RydWN0dXJlKCkpOworICAgICAgICAgICAgZ2V0QnlJZFN0YXR1cy5maWx0ZXIo
YmFzZS0+c3RydWN0dXJlKCkuZ2V0KCkpOwogICAgIH0KICAgICAKICAgICBOb2RlVHlwZSBnZXRC
eUlkOwpAQCAtMzQ4Miw3ICszNDgyLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0
QnlJZCgKICAgICAgICAgICAgIGlmICh2YXJpYW50LmNvbmRpdGlvblNldCgpLmlzRW1wdHkoKSkg
ewogICAgICAgICAgICAgICAgIGNhc2VzLmFwcGVuZCgKICAgICAgICAgICAgICAgICAgICAgTXVs
dGlHZXRCeU9mZnNldENhc2UoCi0gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50LnN0cnVj
dHVyZVNldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hZGRTdHJ1Y3R1cmVT
ZXQodmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICBHZXRC
eU9mZnNldE1ldGhvZDo6bG9hZCh2YXJpYW50Lm9mZnNldCgpKSkpOwogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgfQpAQCAtMzQ5NCw3ICszNDk0LDcgQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2VzLmFwcGVuZChNdWx0aUdl
dEJ5T2Zmc2V0Q2FzZSh2YXJpYW50LnN0cnVjdHVyZVNldCgpLCBtZXRob2QpKTsKKyAgICAgICAg
ICAgIGNhc2VzLmFwcGVuZChNdWx0aUdldEJ5T2Zmc2V0Q2FzZShtX2dyYXBoLmFkZFN0cnVjdHVy
ZVNldCh2YXJpYW50LnN0cnVjdHVyZVNldCgpKSwgbWV0aG9kKSk7CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAobV9ncmFwaC5jb21waWxhdGlvbigpKQpAQCAtMzYyMSw4ICszNjIxLDEzIEBAIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgICAgIGlmIChtX2dyYXBoLmNv
bXBpbGF0aW9uKCkpCiAgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9uKCktPm5vdGljZUlu
bGluZWRQdXRCeUlkKCk7CiAKLSAgICAgICAgZm9yIChjb25zdCBQdXRCeUlkVmFyaWFudCYgdmFy
aWFudCA6IHB1dEJ5SWRTdGF0dXMudmFyaWFudHMoKSkKKyAgICAgICAgZm9yIChjb25zdCBQdXRC
eUlkVmFyaWFudCYgdmFyaWFudCA6IHB1dEJ5SWRTdGF0dXMudmFyaWFudHMoKSkgewogICAgICAg
ICAgICAgbV9ncmFwaC5yZWdpc3RlckluZmVycmVkVHlwZSh2YXJpYW50LnJlcXVpcmVkVHlwZSgp
KTsKKyAgICAgICAgICAgIGZvciAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgOiB2YXJpYW50Lm9sZFN0
cnVjdHVyZSgpKQorICAgICAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoc3Ry
dWN0dXJlKTsKKyAgICAgICAgICAgIGlmICh2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlkVmFyaWFu
dDo6VHJhbnNpdGlvbikKKyAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJl
KHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOworICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBN
dWx0aVB1dEJ5T2Zmc2V0RGF0YSogZGF0YSA9IG1fZ3JhcGgubV9tdWx0aVB1dEJ5T2Zmc2V0RGF0
YS5hZGQoKTsKICAgICAgICAgZGF0YS0+dmFyaWFudHMgPSBwdXRCeUlkU3RhdHVzLnZhcmlhbnRz
KCk7CkBAIC0zNjUzLDcgKzM2NTgsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRC
eUlkKAogICAgIAogICAgICAgICBOb2RlKiBwcm9wZXJ0eVN0b3JhZ2U7CiAgICAgICAgIFRyYW5z
aXRpb24qIHRyYW5zaXRpb24gPSBtX2dyYXBoLm1fdHJhbnNpdGlvbnMuYWRkKAotICAgICAgICAg
ICAgdmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCksIHZhcmlhbnQubmV3U3RydWN0
dXJlKCkpOworICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm9s
ZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKSksIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFy
aWFudC5uZXdTdHJ1Y3R1cmUoKSkpOwogCiAgICAgICAgIGlmICh2YXJpYW50LnJlYWxsb2NhdGVz
U3RvcmFnZSgpKSB7CiAKQEAgLTM5MDAsNyArMzkwNSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgud2F0
Y2hwb2ludHMoKS5hZGRMYXppbHkocmFyZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2lu
dFNldCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBjYWxsZWUgaXMgc3RpbGwg
bGl2ZSB1cCB0byB0aGlzIHBvaW50LgogICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFw
aChQaGFudG9tLCBjYWxsZWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgc2V0KFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRkVG9HcmFwaChOZXdP
YmplY3QsIE9wSW5mbyhzdHJ1Y3R1cmUpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzZXQo
VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dy
YXBoKE5ld09iamVjdCwgT3BJbmZvKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJl
KSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGFscmVhZHlFbWl0dGVkID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KQEAgLTM5MTUsNyArMzkyMCw3
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgY2Fz
ZSBvcF9uZXdfb2JqZWN0OiB7CiAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLAogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgo
TmV3T2JqZWN0LAotICAgICAgICAgICAgICAgICAgICBPcEluZm8oY3VycmVudEluc3RydWN0aW9u
WzNdLnUub2JqZWN0QWxsb2NhdGlvblByb2ZpbGUtPnN0cnVjdHVyZSgpKSkpOworICAgICAgICAg
ICAgICAgICAgICBPcEluZm8obV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShjdXJyZW50SW5zdHJ1
Y3Rpb25bM10udS5vYmplY3RBbGxvY2F0aW9uUHJvZmlsZS0+c3RydWN0dXJlKCkpKSkpOwogICAg
ICAgICAgICAgTkVYVF9PUENPREUob3BfbmV3X29iamVjdCk7CiAgICAgICAgIH0KICAgICAgICAg
ICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxsQXJyYXlBbGxvY2F0
b3JTbG93UGF0aEdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaAkocmV2aXNpb24g
MjExMDA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxsQXJyYXlBbGxvY2F0
b3JTbG93UGF0aEdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIGNs
YXNzIENhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG8KIHB1YmxpYzoKICAgICBDYWxs
QXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXBMaXN0IGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIFBfSklUT3BlcmF0aW9uX0VTdFpC
IGZ1bmN0aW9uLAotICAgICAgICBHUFJSZWcgcmVzdWx0R1BSLCBHUFJSZWcgc3RvcmFnZUdQUiwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBzaXplKQorICAgICAgICBHUFJSZWcgcmVzdWx0
R1BSLCBHUFJSZWcgc3RvcmFnZUdQUiwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIHNp
emVfdCBzaXplKQogICAgICAgICA6IEp1bXBpbmdTbG93UGF0aEdlbmVyYXRvcjxNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcExpc3Q+KGZyb20sIGppdCkKICAgICAgICAgLCBtX2Z1bmN0aW9uKGZ1bmN0aW9u
KQogICAgICAgICAsIG1fcmVzdWx0R1BSKHJlc3VsdEdQUikKQEAgLTY5LDcgKzY5LDcgQEAgcHJp
dmF0ZToKICAgICBQX0pJVE9wZXJhdGlvbl9FU3RaQiBtX2Z1bmN0aW9uOwogICAgIEdQUlJlZyBt
X3Jlc3VsdEdQUjsKICAgICBHUFJSZWcgbV9zdG9yYWdlR1BSOwotICAgIFN0cnVjdHVyZSogbV9z
dHJ1Y3R1cmU7CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBtX3N0cnVjdHVyZTsKICAgICBzaXpl
X3QgbV9zaXplOwogICAgIFZlY3RvcjxTaWxlbnRSZWdpc3RlclNhdmVQbGFuLCAyPiBtX3BsYW5z
OwogfTsKQEAgLTc4LDcgKzc4LDcgQEAgY2xhc3MgQ2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlh
YmxlU2l6ZQogcHVibGljOgogICAgIENhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJsZVNpemVT
bG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGZyb20s
IFNwZWN1bGF0aXZlSklUKiBqaXQsIFBfSklUT3BlcmF0aW9uX0VTdFpCIGZ1bmN0aW9uLAotICAg
ICAgICBHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1cmUqIGNvbnRpZ3VvdXNTdHJ1Y3R1cmUsIFN0
cnVjdHVyZSogYXJyYXlTdG9yYWdlU3RydWN0dXJlLCBHUFJSZWcgc2l6ZUdQUiwgR1BSUmVnIHN0
b3JhZ2VHUFIpCisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
Y29udGlndW91c1N0cnVjdHVyZSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBhcnJheVN0b3JhZ2VTdHJ1
Y3R1cmUsIEdQUlJlZyBzaXplR1BSLCBHUFJSZWcgc3RvcmFnZUdQUikKICAgICAgICAgOiBKdW1w
aW5nU2xvd1BhdGhHZW5lcmF0b3I8TWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0Pihmcm9tLCBqaXQp
CiAgICAgICAgICwgbV9mdW5jdGlvbihmdW5jdGlvbikKICAgICAgICAgLCBtX3Jlc3VsdEdQUihy
ZXN1bHRHUFIpCkBAIC05NywxNSArOTcsMTUgQEAgcHJvdGVjdGVkOgogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9wbGFucy5zaXplKCk7ICsraSkKICAgICAgICAgICAgIGppdC0+
c2lsZW50U3BpbGwobV9wbGFuc1tpXSk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gQXNz
ZW1ibHlIZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKG1fc2l6ZUdQUiwgbV9zdG9yYWdlR1BSKTsK
LSAgICAgICAgaWYgKG1fY29udGlndW91c1N0cnVjdHVyZSAhPSBtX2FycmF5U3RvcmFnZU9yQ29u
dGlndW91c1N0cnVjdHVyZSkgeworICAgICAgICBpZiAobV9jb250aWd1b3VzU3RydWN0dXJlLmdl
dCgpICE9IG1fYXJyYXlTdG9yYWdlT3JDb250aWd1b3VzU3RydWN0dXJlLmdldCgpKSB7CiAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBiaWdMZW5ndGggPSBqaXQtPm1faml0LmJyYW5j
aDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIG1fc2l6ZUdQUiwgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW0zMihNSU5fQVJSQVlfU1RPUkFHRV9DT05TVFJVQ1RJT05fTEVOR1RIKSk7
Ci0gICAgICAgICAgICBqaXQtPm1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIobV9jb250aWd1b3VzU3RydWN0dXJlKSwgc2NyYXRjaEdQUik7CisgICAgICAgICAgICBqaXQt
Pm1faml0Lm1vdmUoU3BlY3VsYXRpdmVKSVQ6OlRydXN0ZWRJbW1QdHIobV9jb250aWd1b3VzU3Ry
dWN0dXJlKSwgc2NyYXRjaEdQUik7CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBk
b25lID0gaml0LT5tX2ppdC5qdW1wKCk7CiAgICAgICAgICAgICBiaWdMZW5ndGgubGluaygmaml0
LT5tX2ppdCk7Ci0gICAgICAgICAgICBqaXQtPm1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIobV9hcnJheVN0b3JhZ2VPckNvbnRpZ3VvdXNTdHJ1Y3R1cmUpLCBzY3JhdGNo
R1BSKTsKKyAgICAgICAgICAgIGppdC0+bV9qaXQubW92ZShTcGVjdWxhdGl2ZUpJVDo6VHJ1c3Rl
ZEltbVB0cihtX2FycmF5U3RvcmFnZU9yQ29udGlndW91c1N0cnVjdHVyZSksIHNjcmF0Y2hHUFIp
OwogICAgICAgICAgICAgZG9uZS5saW5rKCZqaXQtPm1faml0KTsKICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICBqaXQtPm1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
bV9jb250aWd1b3VzU3RydWN0dXJlKSwgc2NyYXRjaEdQUik7CisgICAgICAgICAgICBqaXQtPm1f
aml0Lm1vdmUoU3BlY3VsYXRpdmVKSVQ6OlRydXN0ZWRJbW1QdHIobV9jb250aWd1b3VzU3RydWN0
dXJlKSwgc2NyYXRjaEdQUik7CiAgICAgICAgIGppdC0+Y2FsbE9wZXJhdGlvbihtX2Z1bmN0aW9u
LCBtX3Jlc3VsdEdQUiwgc2NyYXRjaEdQUiwgbV9zaXplR1BSLCBtX3N0b3JhZ2VHUFIpOwogICAg
ICAgICBHUFJSZWcgY2FuVHJhbXBsZSA9IFNwZWN1bGF0aXZlSklUOjpwaWNrQ2FuVHJhbXBsZSht
X3Jlc3VsdEdQUik7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fcGxhbnMuc2l6ZSgpOyBp
LS07KQpAQCAtMTE3LDggKzExNyw4IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgUF9KSVRP
cGVyYXRpb25fRVN0WkIgbV9mdW5jdGlvbjsKICAgICBHUFJSZWcgbV9yZXN1bHRHUFI7Ci0gICAg
U3RydWN0dXJlKiBtX2NvbnRpZ3VvdXNTdHJ1Y3R1cmU7Ci0gICAgU3RydWN0dXJlKiBtX2FycmF5
U3RvcmFnZU9yQ29udGlndW91c1N0cnVjdHVyZTsKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG1f
Y29udGlndW91c1N0cnVjdHVyZTsKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG1fYXJyYXlTdG9y
YWdlT3JDb250aWd1b3VzU3RydWN0dXJlOwogICAgIEdQUlJlZyBtX3NpemVHUFI7CiAgICAgR1BS
UmVnIG1fc3RvcmFnZUdQUjsKICAgICBWZWN0b3I8U2lsZW50UmVnaXN0ZXJTYXZlUGxhbiwgMj4g
bV9wbGFuczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FsbENyZWF0ZURp
cmVjdEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xvd1BhdGhHZW5l
cmF0b3IuaAkocmV2aXNpb24gMjExMDA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiBj
bGFzcyBDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IgOiBwdWJsaWMg
SnVtcGluZ1Nsb3dQYXRoR2VuZXJhdG9yPE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdD4gewogcHVi
bGljOgogICAgIENhbGxDcmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvcigKLSAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQs
IEdQUlJlZyByZXN1bHRHUFIsIFN0cnVjdHVyZSogc3RydWN0dXJlLAorICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcExpc3QgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgR1BSUmVnIHJlc3Vs
dEdQUiwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsCiAgICAgICAgIEdQUlJlZyBsZW5n
dGhHUFIsIHVuc2lnbmVkIG1pbkNhcGFjaXR5KQogICAgICAgICA6IEp1bXBpbmdTbG93UGF0aEdl
bmVyYXRvcjxNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Q+KGZyb20sIGppdCkKICAgICAgICAgLCBt
X3Jlc3VsdEdQUihyZXN1bHRHUFIpCkBAIC02OSw3ICs2OSw3IEBAIHByb3RlY3RlZDoKICAgICAK
IHByaXZhdGU6CiAgICAgR1BSUmVnIG1fcmVzdWx0R1BSOwotICAgIFN0cnVjdHVyZSogbV9zdHJ1
Y3R1cmU7CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBtX3N0cnVjdHVyZTsKICAgICBHUFJSZWcg
bV9sZW5ndGhHUFI7CiAgICAgdW5zaWduZWQgbV9taW5DYXBhY2l0eTsKICAgICBWZWN0b3I8U2ls
ZW50UmVnaXN0ZXJTYXZlUGxhbiwgMj4gbV9wbGFuczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmNwcAkocmV2aXNpb24gMjExMDA1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDMsOCArNDMsOCBAQCB2b2lkIENvbW1vbkRhdGE6Om5vdGlmeUNvbXBpbGluZ1N0cnVjdHVyCiAg
ICAgcGxhbi50cmFuc2l0aW9ucy5hZGRMYXppbHkoCiAgICAgICAgIGNvZGVCbG9jaywKICAgICAg
ICAgbm9kZS0+b3JpZ2luLnNlbWFudGljLmNvZGVPcmlnaW5Pd25lcigpLAotICAgICAgICBub2Rl
LT50cmFuc2l0aW9uKCktPnByZXZpb3VzLAotICAgICAgICBub2RlLT50cmFuc2l0aW9uKCktPm5l
eHQpOworICAgICAgICBub2RlLT50cmFuc2l0aW9uKCktPnByZXZpb3VzLmdldCgpLAorICAgICAg
ICBub2RlLT50cmFuc2l0aW9uKCktPm5leHQuZ2V0KCkpOwogfQogCiBDYWxsU2l0ZUluZGV4IENv
bW1vbkRhdGE6OmFkZENvZGVPcmlnaW4oQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFz
ZS5jcHAJKHJldmlzaW9uIDIxMTAwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsOSArMTQ3LDkg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IG1fc3Rh
dGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgU3RydWN0dXJlU2V0
IHNldDsKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBBcnJheWlmeVRvU3RydWN0
dXJlKQotICAgICAgICAgICAgICAgICAgICBzZXQgPSBub2RlLT5zdHJ1Y3R1cmUoKTsKKyAgICAg
ICAgICAgICAgICAgICAgc2V0ID0gbm9kZS0+c3RydWN0dXJlKCkuZ2V0KCk7CiAgICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBzZXQgPSBub2RlLT5zdHJ1Y3R1cmVTZXQo
KTsKKyAgICAgICAgICAgICAgICAgICAgc2V0ID0gbm9kZS0+c3RydWN0dXJlU2V0KCkuZ2V0KCk7
CiAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLm1fc3RydWN0dXJlLmlzU3Vic2V0T2Yoc2V0KSkg
ewogICAgICAgICAgICAgICAgICAgICBtX2ludGVycHJldGVyLmV4ZWN1dGUoaW5kZXhJbkJsb2Nr
KTsgLy8gQ2F0Y2ggdGhlIGZhY3QgdGhhdCB3ZSBtYXkgZmlsdGVyIG9uIGNlbGwuCiAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPnJlbW92ZSgpOwpAQCAtMjA2LDcgKzIwNiw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlSW1tZWRp
YXRlOiB7CiAgICAgICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZv
ck5vZGUobm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIFN0cnVjdHVyZVNldCYgc2V0
ID0gbm9kZS0+c3RydWN0dXJlU2V0KCk7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlU2V0JiBz
ZXQgPSBub2RlLT5zdHJ1Y3R1cmVTZXQoKS5nZXQoKTsKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBpZiAodmFsdWUudmFsdWUoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAo
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBqc0R5bmFtaWNDYXN0PFN0cnVjdHVyZSo+KHZhbHVlLnZh
bHVlKCkpKSB7CkBAIC0yNTAsNyArMjUwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgUHV0U3RydWN0dXJlOiB7Ci0gICAgICAg
ICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV9zdHJ1Y3R1cmUu
b25seVN0cnVjdHVyZSgpICE9IG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dCkKKyAgICAgICAgICAg
ICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3N0cnVjdHVyZS5vbmx5
U3RydWN0dXJlKCkgIT0gbm9kZS0+dHJhbnNpdGlvbigpLT5uZXh0LmdldCgpKQogICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBub2Rl
LT5yZW1vdmUoKTsKQEAgLTQ5MCw3ICs0OTAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
IGZvciAoY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBzdGF0dXMudmFyaWFudHMoKSkg
ewogICAgICAgICAgICAgICAgICAgICBkYXRhLT5jYXNlcy5hcHBlbmQoCiAgICAgICAgICAgICAg
ICAgICAgICAgICBNdWx0aUdldEJ5T2Zmc2V0Q2FzZSgKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2YXJpYW50LnN0cnVjdHVyZVNldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQuc3RydWN0dXJlU2V0KCkpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdldEJ5T2Zmc2V0TWV0aG9kOjpsb2FkKHZhcmlhbnQub2Zm
c2V0KCkpKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGRhdGEtPmlkZW50
aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVtYmVyOwpAQCAtNzU5LDcgKzc1OSw3IEBAIHByaXZh
dGU6CiAgICAgICAgIFRyYW5zaXRpb24qIHRyYW5zaXRpb24gPSAwOwogICAgICAgICBpZiAodmFy
aWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb24pIHsKICAgICAgICAgICAg
IHRyYW5zaXRpb24gPSBtX2dyYXBoLm1fdHJhbnNpdGlvbnMuYWRkKAotICAgICAgICAgICAgICAg
IHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLCB2YXJpYW50Lm5ld1N0cnVjdHVy
ZSgpKTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQu
b2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpKSwgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2
YXJpYW50Lm5ld1N0cnVjdHVyZSgpKSk7CiAgICAgICAgIH0KIAogICAgICAgICBFZGdlIHByb3Bl
cnR5U3RvcmFnZTsKQEAgLTgzOCw4ICs4MzgsMTIgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lk
IGFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVjayhOb2RlT3JpZ2luIG9yaWdpbiwgdW5zaWduZWQg
aW5kZXhJbkJsb2NrLCBKU0NlbGwqIGNlbGwsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsK
LSAgICAgICAgaWYgKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoY2VsbC0+c3RydWN0dXJlKCkp
ID09IFN0cnVjdHVyZVJlZ2lzdGVyZWRBbmRXYXRjaGVkKQotICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB7CisgICAgICAgICAgICBTdHJ1Y3R1cmVSZWdpc3RyYXRpb25SZXN1bHQgcmVzdWx0
OworICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShjZWxsLT5zdHJ1Y3R1cmUo
KSwgcmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU3RydWN0dXJlUmVnaXN0ZXJl
ZEFuZFdhdGNoZWQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAg
IAogICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSk7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24g
MjExMDA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjM2NSw3ICsyMzY1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBpZiAoc3RydWN0dXJlKSB7CiAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0
Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3Bl
Y05vbmUsIEFycmF5aWZ5VG9TdHJ1Y3R1cmUsIG9yaWdpbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIE9wSW5mbyhzdHJ1Y3R1cmUpLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgRWRnZShh
cnJheSwgQ2VsbFVzZSksIGluZGV4RWRnZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBPcElu
Zm8obV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpKSwgT3BJbmZvKGFycmF5TW9k
ZS5hc1dvcmQoKSksIEVkZ2UoYXJyYXksIENlbGxVc2UpLCBpbmRleEVkZ2UpOwogICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dE5vZGUoCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUs
IEFycmF5aWZ5LCBvcmlnaW4sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmNwcAkocmV2aXNpb24gMjExMDA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDYgKzg4LDEwIEBAIEdyYXBoOjpHcmFwaChW
TSYgdm0sIFBsYW4mIHBsYW4sIExvbmdMaXYKICAgICAKICAgICBtX2luZGV4aW5nQ2FjaGUgPSBz
dGQ6Om1ha2VfdW5pcXVlPEZsb3dJbmRleGluZz4oKnRoaXMpOwogICAgIG1fYWJzdHJhY3RWYWx1
ZXNDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8Rmxvd01hcDxBYnN0cmFjdFZhbHVlPj4oKnRoaXMp
OworCisgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUodm0uc3RydWN0dXJlU3RydWN0dXJlLmdldCgpKTsK
KyAgICByZWdpc3RlclN0cnVjdHVyZSh2bS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOworICAgIHJl
Z2lzdGVyU3RydWN0dXJlKHZtLnN5bWJvbFN0cnVjdHVyZS5nZXQoKSk7CiB9CiAKIEdyYXBoOjp+
R3JhcGgoKQpAQCAtMjQ1LDkgKzI0OSw5IEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCwgY29uc3QKICAgICBpZiAobm9kZS0+aGFzUHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3Io
KSkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBub2RlLT5wcm9tb3RlZExvY2F0aW9uRGVzY3Jp
cHRvcigpKTsKICAgICBpZiAobm9kZS0+aGFzU3RydWN0dXJlU2V0KCkpCi0gICAgICAgIG91dC5w
cmludChjb21tYSwgaW5Db250ZXh0KG5vZGUtPnN0cnVjdHVyZVNldCgpLCBjb250ZXh0KSk7Cisg
ICAgICAgIG91dC5wcmludChjb21tYSwgaW5Db250ZXh0KG5vZGUtPnN0cnVjdHVyZVNldCgpLmdl
dCgpLCBjb250ZXh0KSk7CiAgICAgaWYgKG5vZGUtPmhhc1N0cnVjdHVyZSgpKQotICAgICAgICBv
dXQucHJpbnQoY29tbWEsIGluQ29udGV4dCgqbm9kZS0+c3RydWN0dXJlKCksIGNvbnRleHQpKTsK
KyAgICAgICAgb3V0LnByaW50KGNvbW1hLCBpbkNvbnRleHQoKm5vZGUtPnN0cnVjdHVyZSgpLmdl
dCgpLCBjb250ZXh0KSk7CiAgICAgaWYgKG5vZGUtPmhhc1RyYW5zaXRpb24oKSkgewogICAgICAg
ICBvdXQucHJpbnQoY29tbWEsIHBvaW50ZXJEdW1wSW5Db250ZXh0KG5vZGUtPnRyYW5zaXRpb24o
KSwgY29udGV4dCkpOwogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC0xNDEzLDU1ICsxNDE3LDMxIEBA
IHZvaWQgR3JhcGg6OnZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHYKICAgICAgICAgdmlzaXRv
ci5hcHBlbmRVbmJhcnJpZXJlZCh2YWx1ZS0+dmFsdWUoKSk7CiAgICAgICAgIHZpc2l0b3IuYXBw
ZW5kVW5iYXJyaWVyZWQodmFsdWUtPnN0cnVjdHVyZSgpKTsKICAgICB9Ci0gICAgCi0gICAgZm9y
IChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBudW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewot
ICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IHRoaXMtPmJsb2NrKGJsb2NrSW5kZXgpOwotICAg
ICAgICBpZiAoIWJsb2NrKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAotICAgICAg
ICBmb3IgKGF1dG8qIG5vZGUgOiAqYmxvY2spIHsKLSAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+
b3AoKSkgewotICAgICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKLSAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBub2RlLT5zdHJ1Y3R1cmVTZXQoKS5zaXplKCk7IGktLTspCi0g
ICAgICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQobm9kZS0+c3RydWN0
dXJlU2V0KClbaV0pOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgY2FzZSBOZXdPYmplY3Q6Ci0gICAgICAgICAgICBjYXNlIEFycmF5aWZ5VG9T
dHJ1Y3R1cmU6Ci0gICAgICAgICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKLSAgICAgICAgICAg
ICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG5vZGUtPnN0cnVjdHVyZSgpKTsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgUHV0
U3RydWN0dXJlOgotICAgICAgICAgICAgY2FzZSBBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKLSAg
ICAgICAgICAgIGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKLSAgICAgICAgICAgICAg
ICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG5vZGUtPnRyYW5zaXRpb24oKS0+cHJldmlvdXMp
OwotICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQobm9kZS0+dHJhbnNp
dGlvbigpLT5uZXh0KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKLSAgICAgICAgICAgICAgICBmb3Ig
KGNvbnN0IE11bHRpR2V0QnlPZmZzZXRDYXNlJiBnZXRDYXNlIDogbm9kZS0+bXVsdGlHZXRCeU9m
ZnNldERhdGEoKS5jYXNlcykgewotICAgICAgICAgICAgICAgICAgICBmb3IgKFN0cnVjdHVyZSog
c3RydWN0dXJlIDogZ2V0Q2FzZS5zZXQoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0
b3IuYXBwZW5kVW5iYXJyaWVyZWQoc3RydWN0dXJlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2Fz
ZSBNdWx0aVB1dEJ5T2Zmc2V0OgotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG5v
ZGUtPm11bHRpUHV0QnlPZmZzZXREYXRhKCkudmFyaWFudHMuc2l6ZSgpOyBpLS07KSB7Ci0gICAg
ICAgICAgICAgICAgICAgIFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50ID0gbm9kZS0+bXVsdGlQdXRC
eU9mZnNldERhdGEoKS52YXJpYW50c1tpXTsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgU3Ry
dWN0dXJlU2V0JiBzZXQgPSB2YXJpYW50Lm9sZFN0cnVjdHVyZSgpOwotICAgICAgICAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGogPSBzZXQuc2l6ZSgpOyBqLS07KQotICAgICAgICAgICAgICAg
ICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChzZXRbal0pOwotICAgICAgICAgICAg
ICAgICAgICBpZiAodmFyaWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb24p
Ci0gICAgICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKHZhcmlh
bnQubmV3U3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CisKKyAgICAvKgorICAgIGZvciAoVHJhbnNpdGlv
biogdHJhbnNpdGlvbiA6IG1fdHJhbnNpdGlvbnMpIHsKKyAgICAgICAgdmlzaXRvci5hcHBlbmRV
bmJhcnJpZXJlZCh0cmFuc2l0aW9uLT5wcmV2aW91cyk7CisgICAgICAgIHZpc2l0b3IuYXBwZW5k
VW5iYXJyaWVyZWQodHJhbnNpdGlvbi0+bmV4dCk7CisgICAgfQorCisgICAgZm9yIChNdWx0aVB1
dEJ5T2Zmc2V0RGF0YSogZGF0YSA6IG1fbXVsdGlQdXRCeU9mZnNldERhdGEpIHsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gZGF0YS0+dmFyaWFudHMuc2l6ZSgpOyBpLS07KSB7CisgICAgICAg
ICAgICBQdXRCeUlkVmFyaWFudCYgdmFyaWFudCA9IGRhdGEtPnZhcmlhbnRzW2ldOworICAgICAg
ICAgICAgY29uc3QgU3RydWN0dXJlU2V0JiBzZXQgPSB2YXJpYW50Lm9sZFN0cnVjdHVyZSgpOwor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gc2V0LnNpemUoKTsgai0tOykKKyAgICAgICAg
ICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKHNldFtqXSk7CisgICAgICAgICAgICBp
ZiAodmFyaWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb24pCisgICAgICAg
ICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZCh2YXJpYW50Lm5ld1N0cnVjdHVyZSgp
KTsKICAgICAgICAgfQogICAgIH0KKworICAgIGZvciAoTXVsdGlHZXRCeU9mZnNldERhdGEqIGRh
dGEgOiBtX211bHRpR2V0QnlPZmZzZXREYXRhKSB7CisgICAgICAgIGZvciAoY29uc3QgTXVsdGlH
ZXRCeU9mZnNldENhc2UmIGdldENhc2UgOiBkYXRhLT5jYXNlcykgeworICAgICAgICAgICAgZm9y
IChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6IGdldENhc2Uuc2V0KCkpCisgICAgICAgICAgICAgICAg
dmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChzdHJ1Y3R1cmUpOworICAgICAgICB9CisgICAgfQor
ICAgICovCiB9CiAKIEZyb3plblZhbHVlKiBHcmFwaDo6ZnJlZXplKEpTVmFsdWUgdmFsdWUpCkBA
IC0xNTA3LDEyICsxNDg3LDE0IEBAIHZvaWQgR3JhcGg6OmNvbnZlcnRUb1N0cm9uZ0NvbnN0YW50
KE5vZGUKICAgICBjb252ZXJ0VG9Db25zdGFudChub2RlLCBmcmVlemVTdHJvbmcodmFsdWUpKTsK
IH0KIAotU3RydWN0dXJlUmVnaXN0cmF0aW9uUmVzdWx0IEdyYXBoOjpyZWdpc3RlclN0cnVjdHVy
ZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK1JlZ2lzdGVyZWRTdHJ1Y3R1cmUgR3JhcGg6OnJlZ2lz
dGVyU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVSZWdpc3RyYXRpb25S
ZXN1bHQmIHJlc3VsdCkKIHsKICAgICBtX3BsYW4ud2Vha1JlZmVyZW5jZXMuYWRkTGF6aWx5KHN0
cnVjdHVyZSk7CiAgICAgaWYgKG1fcGxhbi53YXRjaHBvaW50cy5jb25zaWRlcihzdHJ1Y3R1cmUp
KQotICAgICAgICByZXR1cm4gU3RydWN0dXJlUmVnaXN0ZXJlZEFuZFdhdGNoZWQ7Ci0gICAgcmV0
dXJuIFN0cnVjdHVyZVJlZ2lzdGVyZWROb3JtYWxseTsKKyAgICAgICAgcmVzdWx0ID0gU3RydWN0
dXJlUmVnaXN0ZXJlZEFuZFdhdGNoZWQ7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBTdHJ1
Y3R1cmVSZWdpc3RlcmVkTm9ybWFsbHk7CisgICAgcmV0dXJuIFJlZ2lzdGVyZWRTdHJ1Y3R1cmU6
OmNyZWF0ZVByaXZhdGUoc3RydWN0dXJlKTsKIH0KIAogdm9pZCBHcmFwaDo6YXNzZXJ0SXNSZWdp
c3RlcmVkKFN0cnVjdHVyZSogc3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguaAkocmV2aXNpb24gMjExMDA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTMsNyArMjEzLDEyIEBAIHB1YmxpYzoK
ICAgICB2b2lkIGNvbnZlcnRUb0NvbnN0YW50KE5vZGUqIG5vZGUsIEpTVmFsdWUgdmFsdWUpOwog
ICAgIHZvaWQgY29udmVydFRvU3Ryb25nQ29uc3RhbnQoTm9kZSogbm9kZSwgSlNWYWx1ZSB2YWx1
ZSk7CiAgICAgCi0gICAgU3RydWN0dXJlUmVnaXN0cmF0aW9uUmVzdWx0IHJlZ2lzdGVyU3RydWN0
dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKTsKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHJlZ2lz
dGVyU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgU3RydWN0
dXJlUmVnaXN0cmF0aW9uUmVzdWx0IGlnbm9yZWQ7CisgICAgICAgIHJldHVybiByZWdpc3RlclN0
cnVjdHVyZShzdHJ1Y3R1cmUsIGlnbm9yZWQpOworICAgIH0KKyAgICBSZWdpc3RlcmVkU3RydWN0
dXJlIHJlZ2lzdGVyU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVSZWdp
c3RyYXRpb25SZXN1bHQmIHJlc3VsdCk7CiAgICAgdm9pZCBhc3NlcnRJc1JlZ2lzdGVyZWQoU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpOwogICAgIAogICAgIC8vIENvZGVCbG9jayBpcyBvcHRpb25hbCwg
YnV0IG1heSBhbGxvdyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIGJlIGR1bXBlZCAoZS5nLiBJ
ZGVudGlmaWVyIG5hbWVzKS4KQEAgLTM0MSwxMiArMzQ2LDEyIEBAIHB1YmxpYzoKICAgICAKICAg
ICBzdGF0aWMgY29uc3QgY2hhciAqb3BOYW1lKE5vZGVUeXBlKTsKICAgICAKLSAgICBTdHJ1Y3R1
cmVTZXQqIGFkZFN0cnVjdHVyZVNldChjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCkK
KyAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0IGFkZFN0cnVjdHVyZVNldChjb25zdCBTdHJ1Y3R1
cmVTZXQmIHN0cnVjdHVyZVNldCkKICAgICB7CiAgICAgICAgIGZvciAoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgOiBzdHJ1Y3R1cmVTZXQpCiAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShzdHJ1
Y3R1cmUpOwogICAgICAgICBtX3N0cnVjdHVyZVNldC5hcHBlbmQoc3RydWN0dXJlU2V0KTsKLSAg
ICAgICAgcmV0dXJuICZtX3N0cnVjdHVyZVNldC5sYXN0KCk7CisgICAgICAgIHJldHVybiBSZWdp
c3RlcmVkU3RydWN0dXJlU2V0OjpjcmVhdGVQcml2YXRlKCZtX3N0cnVjdHVyZVNldC5sYXN0KCkp
OwogICAgIH0KICAgICAKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0Rm9yKENvZGVP
cmlnaW4gY29kZU9yaWdpbikKQEAgLTkxMCw3ICs5MTUsNiBAQCBwdWJsaWM6CiAgICAgCiAgICAg
U2VnbWVudGVkVmVjdG9yPFZhcmlhYmxlQWNjZXNzRGF0YSwgMTY+IG1fdmFyaWFibGVBY2Nlc3NE
YXRhOwogICAgIFNlZ21lbnRlZFZlY3RvcjxBcmd1bWVudFBvc2l0aW9uLCA4PiBtX2FyZ3VtZW50
UG9zaXRpb25zOwotICAgIFNlZ21lbnRlZFZlY3RvcjxTdHJ1Y3R1cmVTZXQsIDE2PiBtX3N0cnVj
dHVyZVNldDsKICAgICBCYWc8VHJhbnNpdGlvbj4gbV90cmFuc2l0aW9uczsKICAgICBTZWdtZW50
ZWRWZWN0b3I8TmV3QXJyYXlCdWZmZXJEYXRhLCA0PiBtX25ld0FycmF5QnVmZmVyRGF0YTsKICAg
ICBCYWc8QnJhbmNoRGF0YT4gbV9icmFuY2hEYXRhOwpAQCAtOTk3LDYgKzEwMDEsNyBAQCBwcml2
YXRlOgogCiAgICAgVmVjdG9yPE5vZGUqLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gbV9ub2Rl
c0J5SW5kZXg7CiAgICAgVmVjdG9yPHVuc2lnbmVkLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4g
bV9ub2RlSW5kZXhGcmVlTGlzdDsKKyAgICBTZWdtZW50ZWRWZWN0b3I8U3RydWN0dXJlU2V0LCAx
Nj4gbV9zdHJ1Y3R1cmVTZXQ7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNp
b24gMjExMDA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU1MiwxMyArNTUyLDE3IEBAIHZvaWQgSklUQ29tcGlsZXI6
Om5vdGljZU9TUkVudHJ5KEJhc2ljQmwKICAgICAvLyBuZWVkIChUb3AsIFRPUCkuCiAgICAgZm9y
IChzaXplX3QgYXJndW1lbnQgPSAwOyBhcmd1bWVudCA8IGJhc2ljQmxvY2sudmFyaWFibGVzQXRI
ZWFkLm51bWJlck9mQXJndW1lbnRzKCk7ICsrYXJndW1lbnQpIHsKICAgICAgICAgTm9kZSogbm9k
ZSA9IGJhc2ljQmxvY2sudmFyaWFibGVzQXRIZWFkLmFyZ3VtZW50KGFyZ3VtZW50KTsKKyAgICAg
ICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBlbnRyeS0+bV9leHBlY3RlZFZhbHVlcy5hcmd1bWVu
dChhcmd1bWVudCk7CiAgICAgICAgIGlmICghbm9kZSB8fCAhbm9kZS0+c2hvdWxkR2VuZXJhdGUo
KSkKLSAgICAgICAgICAgIGVudHJ5LT5tX2V4cGVjdGVkVmFsdWVzLmFyZ3VtZW50KGFyZ3VtZW50
KS5tYWtlSGVhcFRvcCgpOworICAgICAgICAgICAgdmFsdWUubWFrZUhlYXBUb3AoKTsKKyAgICAg
ICAgaWYgKHZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpCisgICAgICAgICAgICBtX2dyYXBo
LmFkZFN0cnVjdHVyZVNldCh2YWx1ZS5tX3N0cnVjdHVyZS5zZXQoKSk7CiAgICAgfQogICAgIGZv
ciAoc2l6ZV90IGxvY2FsID0gMDsgbG9jYWwgPCBiYXNpY0Jsb2NrLnZhcmlhYmxlc0F0SGVhZC5u
dW1iZXJPZkxvY2FscygpOyArK2xvY2FsKSB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBiYXNpY0Js
b2NrLnZhcmlhYmxlc0F0SGVhZC5sb2NhbChsb2NhbCk7CisgICAgICAgIEFic3RyYWN0VmFsdWUm
IHZhbHVlID0gZW50cnktPm1fZXhwZWN0ZWRWYWx1ZXMubG9jYWwobG9jYWwpOwogICAgICAgICBp
ZiAoIW5vZGUgfHwgIW5vZGUtPnNob3VsZEdlbmVyYXRlKCkpCi0gICAgICAgICAgICBlbnRyeS0+
bV9leHBlY3RlZFZhbHVlcy5sb2NhbChsb2NhbCkubWFrZUhlYXBUb3AoKTsKKyAgICAgICAgICAg
IHZhbHVlLm1ha2VIZWFwVG9wKCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgVmFyaWFi
bGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwogICAg
ICAgICAgICAgZW50cnktPm1fbWFjaGluZVN0YWNrVXNlZC5zZXQodmFyaWFibGUtPm1hY2hpbmVM
b2NhbCgpLnRvTG9jYWwoKSk7CkBAIC01ODAsOCArNTg0LDExIEBAIHZvaWQgSklUQ29tcGlsZXI6
Om5vdGljZU9TUkVudHJ5KEJhc2ljQmwKICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxl
LT5sb2NhbCgpLm9mZnNldCgpLCB2YXJpYWJsZS0+bWFjaGluZUxvY2FsKCkub2Zmc2V0KCkpKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQorCisgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVy
ZS5pc0Zpbml0ZSgpKQorICAgICAgICAgICAgbV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFsdWUu
bV9zdHJ1Y3R1cmUuc2V0KCkpOwogICAgIH0KLSAgICAgICAgCisKICAgICBlbnRyeS0+bV9yZXNo
dWZmbGluZ3Muc2hyaW5rVG9GaXQoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gMjExMDA1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDIsMTQg
KzI0MiwxNCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAg
ICBKdW1wIGJyYW5jaFdlYWtTdHJ1Y3R1cmUoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBUIGxl
ZnQsIFN0cnVjdHVyZSogd2Vha1N0cnVjdHVyZSkKKyAgICBKdW1wIGJyYW5jaFdlYWtTdHJ1Y3R1
cmUoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBUIGxlZnQsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
d2Vha1N0cnVjdHVyZSkKICAgICB7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gd2Vh
a1N0cnVjdHVyZS5nZXQoKTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBKdW1wIHJlc3Vs
dCA9IGJyYW5jaDMyKGNvbmQsIGxlZnQsIFRydXN0ZWRJbW0zMih3ZWFrU3RydWN0dXJlLT5pZCgp
KSk7Ci0gICAgICAgIGFkZFdlYWtSZWZlcmVuY2Uod2Vha1N0cnVjdHVyZSk7CisgICAgICAgIEp1
bXAgcmVzdWx0ID0gYnJhbmNoMzIoY29uZCwgbGVmdCwgVHJ1c3RlZEltbTMyKHN0cnVjdHVyZS0+
aWQoKSkpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIGJy
YW5jaFdlYWtQdHIoY29uZCwgbGVmdCwgd2Vha1N0cnVjdHVyZSk7CisgICAgICAgIHJldHVybiBi
cmFuY2hQdHIoY29uZCwgbGVmdCwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsKICNlbmRpZgog
ICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNdWx0aUdldEJ5T2Zm
c2V0RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdN
dWx0aUdldEJ5T2Zmc2V0RGF0YS5jcHAJKHJldmlzaW9uIDIxMTAwNSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTXVsdGlHZXRCeU9mZnNldERhdGEuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgR2V0QnlPZmZzZXRNZXRob2Q6OmR1bXAoUHJpbnRTdHJl
YW0KIAogdm9pZCBNdWx0aUdldEJ5T2Zmc2V0Q2FzZTo6ZHVtcEluQ29udGV4dChQcmludFN0cmVh
bSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QKIHsKLSAgICBvdXQucHJpbnQoaW5D
b250ZXh0KG1fc2V0LCBjb250ZXh0KSwgIjoiLCBpbkNvbnRleHQobV9tZXRob2QsIGNvbnRleHQp
KTsKKyAgICBvdXQucHJpbnQoaW5Db250ZXh0KG1fc2V0LmdldCgpLCBjb250ZXh0KSwgIjoiLCBp
bkNvbnRleHQobV9tZXRob2QsIGNvbnRleHQpKTsKIH0KIAogdm9pZCBNdWx0aUdldEJ5T2Zmc2V0
Q2FzZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdNdWx0aUdldEJ5T2Zmc2V0RGF0YS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTXVsdGlHZXRCeU9mZnNldERhdGEuaAkocmV2aXNpb24g
MjExMDA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNdWx0aUdldEJ5T2Zmc2V0
RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoREZH
X0pJVCkKIAorI2luY2x1ZGUgIkRGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJE
dW1wQ29udGV4dC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJl
U2V0LmgiCkBAIC0xMTksMjEgKzEyMCwyMSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KICAgICAK
LSAgICBNdWx0aUdldEJ5T2Zmc2V0Q2FzZShjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCwgY29uc3Qg
R2V0QnlPZmZzZXRNZXRob2QmIG1ldGhvZCkKKyAgICBNdWx0aUdldEJ5T2Zmc2V0Q2FzZShSZWdp
c3RlcmVkU3RydWN0dXJlU2V0IHNldCwgY29uc3QgR2V0QnlPZmZzZXRNZXRob2QmIG1ldGhvZCkK
ICAgICAgICAgOiBtX3NldChzZXQpCiAgICAgICAgICwgbV9tZXRob2QobWV0aG9kKQogICAgIHsK
ICAgICB9CiAgICAgCi0gICAgU3RydWN0dXJlU2V0JiBzZXQoKSB7IHJldHVybiBtX3NldDsgfQot
ICAgIGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zZXQ7IH0KKyAg
ICBTdHJ1Y3R1cmVTZXQmIHNldCgpIHsgcmV0dXJuIG1fc2V0LmdldCgpOyB9CisgICAgY29uc3Qg
U3RydWN0dXJlU2V0JiBzZXQoKSBjb25zdCB7IHJldHVybiBtX3NldC5nZXQoKTsgfQogICAgIGNv
bnN0IEdldEJ5T2Zmc2V0TWV0aG9kJiBtZXRob2QoKSBjb25zdCB7IHJldHVybiBtX21ldGhvZDsg
fQogICAgIAogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0
KikgY29uc3Q7CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAKIHByaXZhdGU6
Ci0gICAgU3RydWN0dXJlU2V0IG1fc2V0OworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgbV9z
ZXQ7CiAgICAgR2V0QnlPZmZzZXRNZXRob2QgbV9tZXRob2Q7CiB9OwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMjExMDA1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAK
ICNpbmNsdWRlICJERkdOb2RlVHlwZS5oIgogI2luY2x1ZGUgIkRGR09iamVjdE1hdGVyaWFsaXph
dGlvbkRhdGEuaCIKICNpbmNsdWRlICJERkdPcEluZm8uaCIKKyNpbmNsdWRlICJERkdSZWdpc3Rl
cmVkU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiREZHVHJhbnNpdGlvbi5oIgogI2luY2x1ZGUgIkRG
R1VzZUtpbmQuaCIKICNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCIKQEAgLTQxMCwx
MCArNDExLDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVtb3ZlKCk7CiAKLSAgICB2b2lkIGNv
bnZlcnRUb0NoZWNrU3RydWN0dXJlKFN0cnVjdHVyZVNldCogc2V0KQorICAgIHZvaWQgY29udmVy
dFRvQ2hlY2tTdHJ1Y3R1cmUoUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBzZXQpCiAgICAgewogICAg
ICAgICBzZXRPcEFuZERlZmF1bHRGbGFncyhDaGVja1N0cnVjdHVyZSk7Ci0gICAgICAgIG1fb3BJ
bmZvID0gc2V0OyAKKyAgICAgICAgbV9vcEluZm8gPSBzZXQ7CiAgICAgfQogCiAgICAgdm9pZCBj
b252ZXJ0VG9DaGVja1N0cnVjdHVyZUltbWVkaWF0ZShOb2RlKiBzdHJ1Y3R1cmUpCkBAIC0xNjE0
LDEwICsxNjE1LDEwIEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBTdHJ1
Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCgpCisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBzdHJ1
Y3R1cmVTZXQoKQogICAgIHsKICAgICAgICAgQVNTRVJUKGhhc1N0cnVjdHVyZVNldCgpKTsKLSAg
ICAgICAgcmV0dXJuICptX29wSW5mby5hczxTdHJ1Y3R1cmVTZXQqPigpOworICAgICAgICByZXR1
cm4gbV9vcEluZm8uYXNSZWdpc3RlcmVkU3RydWN0dXJlU2V0KCk7CiAgICAgfQogICAgIAogICAg
IGJvb2wgaGFzU3RydWN0dXJlKCkKQEAgLTE2MzIsMTAgKzE2MzMsMTAgQEAgcHVibGljOgogICAg
ICAgICB9CiAgICAgfQogICAgIAotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlKCkKKyAgICBSZWdp
c3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSgpCiAgICAgewogICAgICAgICBBU1NFUlQoaGFzU3Ry
dWN0dXJlKCkpOwotICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8U3RydWN0dXJlKj4oKTsKKyAg
ICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzUmVnaXN0ZXJlZFN0cnVjdHVyZSgpOwogICAgIH0KICAg
ICAKICAgICBib29sIGhhc1N0b3JhZ2VBY2Nlc3NEYXRhKCkKQEAgLTI1MTMsNiArMjUxNCwxNiBA
QCBwcml2YXRlOgogICAgICAgICAgICAgdS5pbnQ2NCA9IDA7CiAgICAgICAgICAgICB1LmNvbnN0
UG9pbnRlciA9IGNvbnN0UG9pbnRlcjsKICAgICAgICAgfQorICAgICAgICBPcEluZm9XcmFwcGVy
KFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKQorICAgICAgICB7CisgICAgICAgICAgICB1
LmludDY0ID0gMDsKKyAgICAgICAgICAgIHUucG9pbnRlciA9IGJpdHdpc2VfY2FzdDx2b2lkKj4o
c3RydWN0dXJlKTsKKyAgICAgICAgfQorICAgICAgICBPcEluZm9XcmFwcGVyKFJlZ2lzdGVyZWRT
dHJ1Y3R1cmVTZXQgc2V0KQorICAgICAgICB7CisgICAgICAgICAgICB1LmludDY0ID0gMDsKKyAg
ICAgICAgICAgIHUucG9pbnRlciA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oc2V0KTsKKyAgICAgICAg
fQogICAgICAgICBPcEluZm9XcmFwcGVyJiBvcGVyYXRvcj0odWludDMyX3QgaW50MzIpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHUuaW50NjQgPSAwOwpAQCAtMjU0Miw2ICsyNTUzLDE4IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICB1LmNvbnN0UG9pbnRlciA9IGNvbnN0UG9pbnRlcjsKICAgICAg
ICAgICAgIHJldHVybiAqdGhpczsKICAgICAgICAgfQorICAgICAgICBPcEluZm9XcmFwcGVyJiBv
cGVyYXRvcj0oUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHUuaW50NjQgPSAwOworICAgICAgICAgICAgdS5wb2ludGVyID0gYml0d2lzZV9jYXN0
PHZvaWQqPihzdHJ1Y3R1cmUpOworICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICB9
CisgICAgICAgIE9wSW5mb1dyYXBwZXImIG9wZXJhdG9yPShSZWdpc3RlcmVkU3RydWN0dXJlU2V0
IHNldCkKKyAgICAgICAgeworICAgICAgICAgICAgdS5pbnQ2NCA9IDA7CisgICAgICAgICAgICB1
LnBvaW50ZXIgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHNldCk7CisgICAgICAgICAgICByZXR1cm4g
KnRoaXM7CisgICAgICAgIH0KICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgICAg
IEFMV0FZU19JTkxJTkUgYXV0byBhcygpIGNvbnN0IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm
PHN0ZDo6aXNfcG9pbnRlcjxUPjo6dmFsdWUgJiYgIXN0ZDo6aXNfY29uc3Q8dHlwZW5hbWUgc3Rk
OjpyZW1vdmVfcG9pbnRlcjxUPjo6dHlwZT46OnZhbHVlLCBUPjo6dHlwZQogICAgICAgICB7CkBA
IC0yNTYyLDYgKzI1ODUsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgewogICAgICAgICAgICAgcmV0
dXJuIHUuaW50NjQ7CiAgICAgICAgIH0KKyAgICAgICAgQUxXQVlTX0lOTElORSBSZWdpc3RlcmVk
U3RydWN0dXJlIGFzUmVnaXN0ZXJlZFN0cnVjdHVyZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8UmVnaXN0ZXJlZFN0cnVjdHVyZT4odS5wb2ludGVy
KTsKKyAgICAgICAgfQorICAgICAgICBBTFdBWVNfSU5MSU5FIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVT
ZXQgYXNSZWdpc3RlcmVkU3RydWN0dXJlU2V0KCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxSZWdpc3RlcmVkU3RydWN0dXJlU2V0Pih1LnBvaW50ZXIp
OworICAgICAgICB9CisKICAgICAgICAgdW5pb24gewogICAgICAgICAgICAgdWludDMyX3QgaW50
MzI7CiAgICAgICAgICAgICB1aW50NjRfdCBpbnQ2NDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1Bo
YXNlLmNwcAkocmV2aXNpb24gMjExMDA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMw
LDkgKzgzMCw5IEBAIHByaXZhdGU6CiAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewogICAg
ICAgICBjYXNlIE5ld09iamVjdDoKICAgICAgICAgICAgIHRhcmdldCA9ICZtX2hlYXAubmV3QWxs
b2NhdGlvbihub2RlLCBBbGxvY2F0aW9uOjpLaW5kOjpPYmplY3QpOwotICAgICAgICAgICAgdGFy
Z2V0LT5zZXRTdHJ1Y3R1cmVzKG5vZGUtPnN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIHRhcmdl
dC0+c2V0U3RydWN0dXJlcyhub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CiAgICAgICAgICAgICB3
cml0ZXMuYWRkKAotICAgICAgICAgICAgICAgIFN0cnVjdHVyZVBMb2MsIExhenlOb2RlKG1fZ3Jh
cGguZnJlZXplKG5vZGUtPnN0cnVjdHVyZSgpKSkpOworICAgICAgICAgICAgICAgIFN0cnVjdHVy
ZVBMb2MsIExhenlOb2RlKG1fZ3JhcGguZnJlZXplKG5vZGUtPnN0cnVjdHVyZSgpLmdldCgpKSkp
OwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKQEAgLTg3
OSw4ICs4NzksOCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFB1dFN0cnVjdHVyZToKICAgICAg
ICAgICAgIHRhcmdldCA9IG1faGVhcC5vbmx5TG9jYWxBbGxvY2F0aW9uKG5vZGUtPmNoaWxkMSgp
Lm5vZGUoKSk7CiAgICAgICAgICAgICBpZiAodGFyZ2V0ICYmIHRhcmdldC0+aXNPYmplY3RBbGxv
Y2F0aW9uKCkpIHsKLSAgICAgICAgICAgICAgICB3cml0ZXMuYWRkKFN0cnVjdHVyZVBMb2MsIExh
enlOb2RlKG1fZ3JhcGguZnJlZXplKEpTVmFsdWUobm9kZS0+dHJhbnNpdGlvbigpLT5uZXh0KSkp
KTsKLSAgICAgICAgICAgICAgICB0YXJnZXQtPnNldFN0cnVjdHVyZXMobm9kZS0+dHJhbnNpdGlv
bigpLT5uZXh0KTsKKyAgICAgICAgICAgICAgICB3cml0ZXMuYWRkKFN0cnVjdHVyZVBMb2MsIExh
enlOb2RlKG1fZ3JhcGguZnJlZXplKEpTVmFsdWUobm9kZS0+dHJhbnNpdGlvbigpLT5uZXh0Lmdl
dCgpKSkpKTsKKyAgICAgICAgICAgICAgICB0YXJnZXQtPnNldFN0cnVjdHVyZXMobm9kZS0+dHJh
bnNpdGlvbigpLT5uZXh0LmdldCgpKTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
ICAgIG1faGVhcC5lc2NhcGUobm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtODg4LDcgKzg4OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1
Y3R1cmU6IHsKICAgICAgICAgICAgIEFsbG9jYXRpb24qIGFsbG9jYXRpb24gPSBtX2hlYXAub25s
eUxvY2FsQWxsb2NhdGlvbihub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwogICAgICAgICAgICAgaWYg
KGFsbG9jYXRpb24gJiYgYWxsb2NhdGlvbi0+aXNPYmplY3RBbGxvY2F0aW9uKCkpIHsKLSAgICAg
ICAgICAgICAgICBhbGxvY2F0aW9uLT5maWx0ZXJTdHJ1Y3R1cmVzKG5vZGUtPnN0cnVjdHVyZVNl
dCgpKTsKKyAgICAgICAgICAgICAgICBhbGxvY2F0aW9uLT5maWx0ZXJTdHJ1Y3R1cmVzKG5vZGUt
PnN0cnVjdHVyZVNldCgpLmdldCgpKTsKICAgICAgICAgICAgICAgICBpZiAoTm9kZSogdmFsdWUg
PSBoZWFwUmVzb2x2ZShQcm9tb3RlZEhlYXBMb2NhdGlvbihhbGxvY2F0aW9uLT5pZGVudGlmaWVy
KCksIFN0cnVjdHVyZVBMb2MpKSkKICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRv
Q2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGUodmFsdWUpOwogICAgICAgICAgICAgfSBlbHNlCkBAIC0x
NDQ0LDcgKzE0NDQsNyBAQCBwcml2YXRlOgogICAgICAgICBzd2l0Y2ggKGFsbG9jYXRpb24ua2lu
ZCgpKSB7CiAgICAgICAgIGNhc2UgQWxsb2NhdGlvbjo6S2luZDo6T2JqZWN0OiB7CiAgICAgICAg
ICAgICBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhKiBkYXRhID0gbV9ncmFwaC5tX29iamVjdE1h
dGVyaWFsaXphdGlvbkRhdGEuYWRkKCk7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmVTZXQqIHNldCA9
IG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KGFsbG9jYXRpb24uc3RydWN0dXJlcygpKTsKKyAgICAg
ICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgc2V0ID0gbV9ncmFwaC5hZGRTdHJ1Y3R1cmVT
ZXQoYWxsb2NhdGlvbi5zdHJ1Y3R1cmVzKCkpOwogCiAgICAgICAgICAgICByZXR1cm4gbV9ncmFw
aC5hZGROb2RlKAogICAgICAgICAgICAgICAgIGFsbG9jYXRpb24uaWRlbnRpZmllcigpLT5wcmVk
aWN0aW9uKCksIE5vZGU6OlZhckFyZywgTWF0ZXJpYWxpemVOZXdPYmplY3QsCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmgJKHJldmlzaW9uIDIxMTAwNSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYg
KzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJIZWFwQ2VsbC5oIgorI2luY2x1
ZGUgIkRGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTQyLDggKzQ0LDE4IEBAIHN0cnVjdCBPcElu
Zm8gewogI2lmIE9TKERBUldJTikKICAgICBleHBsaWNpdCBPcEluZm8odWludHB0cl90IHZhbHVl
KSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHZhbHVlKSkgeyB9CiAjZW5kaWYKLSAg
ICBleHBsaWNpdCBPcEluZm8odm9pZCogdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50
NjRfdD4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkpIHsgfQotICAgIGV4cGxp
Y2l0IE9wSW5mbyhjb25zdCB2b2lkKiB2YWx1ZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnQ2
NF90PihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSkgeyB9CisgICAgZXhwbGlj
aXQgT3BJbmZvKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSA6IG1fdmFsdWUoc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHN0cnVjdHVyZSkpKSB7IH0K
KyAgICBleHBsaWNpdCBPcEluZm8oUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBzZXQpIDogbV92YWx1
ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oc2V0KSkpIHsg
fQorCisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICBleHBsaWNpdCBPcEluZm8oVCog
cHRyKQorICAgIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPEhlYXBD
ZWxsLCBUPjo6dmFsdWUsICJUbyBtYWtlIGFuIE9wSW5mbyB3aXRoIGEgY2VsbCBpbiBpdCwgdGhl
IGNlbGwgbXVzdCBiZSByZWdpc3RlcmVkIG9yIGZyb3plbi4iKTsKKyAgICAgICAgc3RhdGljX2Fz
c2VydCghc3RkOjppc19iYXNlX29mPFN0cnVjdHVyZVNldCwgVD46OnZhbHVlLCAiVG8gbWFrZSBh
biBPcEluZm8gd2l0aCBhIHN0cnVjdHVyZSBzZXQgaW4sIG1ha2Ugc3VyZSB0byB1c2UgUmVnaXN0
ZXJlZFN0cnVjdHVyZVNldC4iKTsKKyAgICAgICAgbV92YWx1ZSA9IHN0YXRpY19jYXN0PHVpbnQ2
NF90PihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocHRyKSk7CisgICAgfQorCiAgICAgdWlu
dDY0X3QgbV92YWx1ZTsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UGxhbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFu
LmNwcAkocmV2aXNpb24gMjExMDA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
bGFuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzExLDcgKzMxMSw3IEBAIFBsYW46OkNvbXBpbGF0
aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHIKICAgICBSVU5fUEhBU0UocGVyZm9ybUJhY2t3YXJk
c1Byb3BhZ2F0aW9uKTsKICAgICBSVU5fUEhBU0UocGVyZm9ybVByZWRpY3Rpb25Qcm9wYWdhdGlv
bik7CiAgICAgUlVOX1BIQVNFKHBlcmZvcm1GaXh1cCk7Ci0gICAgUlVOX1BIQVNFKHBlcmZvcm1T
dHJ1Y3R1cmVSZWdpc3RyYXRpb24pOworICAgIC8vUlVOX1BIQVNFKHBlcmZvcm1TdHJ1Y3R1cmVS
ZWdpc3RyYXRpb24pOwogICAgIFJVTl9QSEFTRShwZXJmb3JtSW52YWxpZGF0aW9uUG9pbnRJbmpl
Y3Rpb24pOwogICAgIFJVTl9QSEFTRShwZXJmb3JtVHlwZUNoZWNrSG9pc3RpbmcpOwogICAgIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZWdpc3RlcmVkU3RydWN0dXJlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZWdpc3RlcmVkU3Ry
dWN0dXJlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdS
ZWdpc3RlcmVkU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIEVOQUJMRShERkdfSklUKQorCisjaW5jbHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVk
ZSAiU3RydWN0dXJlU2V0LmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKwor
Y2xhc3MgR3JhcGg7CitjbGFzcyBSZWdpc3RlcmVkU3RydWN0dXJlU2V0OworCitjbGFzcyBSZWdp
c3RlcmVkU3RydWN0dXJlIHsKK3B1YmxpYzoKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlKCkgPSBk
ZWZhdWx0OworICAgIEFMV0FZU19JTkxJTkUgU3RydWN0dXJlKiBnZXQoKSBjb25zdCB7IHJldHVy
biBtX3N0cnVjdHVyZTsgfQorICAgIFN0cnVjdHVyZSogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0
dXJuIGdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEdyYXBoOworICAgIGZy
aWVuZCBjbGFzcyBSZWdpc3RlcmVkU3RydWN0dXJlU2V0OworCisgICAgUmVnaXN0ZXJlZFN0cnVj
dHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBtX3N0cnVjdHVyZShzdHJ1Y3R1
cmUpCisgICAgeworICAgICAgICBBU1NFUlQoc3RydWN0dXJlKTsKKyAgICB9CisKKyAgICBzdGF0
aWMgUmVnaXN0ZXJlZFN0cnVjdHVyZSBjcmVhdGVQcml2YXRlKFN0cnVjdHVyZSogc3RydWN0dXJl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUoc3RydWN0dXJlKTsK
KyAgICB9CisKKyAgICBTdHJ1Y3R1cmUqIG1fc3RydWN0dXJlIHsgbnVsbHB0ciB9OworfTsKKwor
Y2xhc3MgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCB7CitwdWJsaWM6CisgICAgUmVnaXN0ZXJlZFN0
cnVjdHVyZVNldCgpID0gZGVmYXVsdDsKKyAgICBBTFdBWVNfSU5MSU5FIFN0cnVjdHVyZVNldCYg
Z2V0KCkgY29uc3QgeyByZXR1cm4gKm1fc2V0OyB9CisgICAgQUxXQVlTX0lOTElORSBSZWdpc3Rl
cmVkU3RydWN0dXJlIGF0KHNpemVfdCBpKSB7IHJldHVybiBSZWdpc3RlcmVkU3RydWN0dXJlOjpj
cmVhdGVQcml2YXRlKGdldCgpW2ldKTsgfQorICAgIEFMV0FZU19JTkxJTkUgUmVnaXN0ZXJlZFN0
cnVjdHVyZSBsYXN0KCkgeyByZXR1cm4gYXQoZ2V0KCkuc2l6ZSgpIC0gMSk7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gZ2V0KCkuc2l6ZSgpOyB9Citw
cml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBHcmFwaDsKKworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmVTZXQoU3RydWN0dXJlU2V0KiBzZXQpCisgICAgICAgIDogbV9zZXQoc2V0KQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKHNldCk7CisgICAgfQorCisgICAgc3RhdGljIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmVTZXQgY3JlYXRlUHJpdmF0ZShTdHJ1Y3R1cmVTZXQqIHNldCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBSZWdpc3RlcmVkU3RydWN0dXJlU2V0KHNldCk7CisgICAgfQorICAgIFN0cnVjdHVyZVNl
dCogbV9zZXQgeyBudWxscHRyIH07Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisK
KyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAyMTEwMDUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDI1
LDcgKzQyNSw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAg
ICBjYXNlIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgogICAgIGNhc2UgUmVhbGxvY2F0ZVByb3Bl
cnR5U3RvcmFnZToKICAgICAgICAgcmV0dXJuIHN0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkp
Lm1fc3RydWN0dXJlLmlzU3Vic2V0T2YoCi0gICAgICAgICAgICBTdHJ1Y3R1cmVTZXQobm9kZS0+
dHJhbnNpdGlvbigpLT5wcmV2aW91cykpOworICAgICAgICAgICAgU3RydWN0dXJlU2V0KG5vZGUt
PnRyYW5zaXRpb24oKS0+cHJldmlvdXMuZ2V0KCkpKTsKICAgICAgICAgCiAgICAgY2FzZSBHZXRC
eU9mZnNldDoKICAgICBjYXNlIEdldEdldHRlclNldHRlckJ5T2Zmc2V0OgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
CShyZXZpc2lvbiAyMTEwMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTQsNyArMjk0LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZQogICAgICAgICBpc01hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQubGluaygmbV9qaXQpOwogICAgICAgICBHUFJSZWcgbG9jYWxHbG9iYWxP
YmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVjdC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlbW90
ZUdsb2JhbE9iamVjdEdQUiA9IHJlbW90ZUdsb2JhbE9iamVjdC5ncHIoKTsKLSAgICAgICAgbV9q
aXQubW92ZShKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5ncmFwaCgpLmdsb2JhbE9i
amVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbG9jYWxHbG9iYWxPYmpl
Y3RHUFIpOworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5n
bG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxvY2FsR2xv
YmFsT2JqZWN0R1BSKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVz
cyhhcmdQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZXN1bHRQYXls
b2FkR1BSKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1
bHRQYXlsb2FkR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVtb3RlR2xv
YmFsT2JqZWN0R1BSKTsKICAgICAgICAgbV9qaXQuY29tcGFyZTMyKEpJVENvbXBpbGVyOjpFcXVh
bCwgbG9jYWxHbG9iYWxPYmplY3RHUFIsIHJlbW90ZUdsb2JhbE9iamVjdEdQUiwgcmVzdWx0UGF5
bG9hZEdQUik7CkBAIC0xMDgyLDcgKzEwODIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
Q2FsbChOb2RlKiBub2RlCiAgICAgICAgICAgICBtX2ppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVz
KCk7CiAgICAgfQogCi0gICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihpbmZvKSwgR1BSSW5mbzo6cmVnVDIpOworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihp
bmZvKSwgR1BSSW5mbzo6cmVnVDIpOwogICAgIEpJVENvbXBpbGVyOjpDYWxsIHNsb3dDYWxsID0g
bV9qaXQubmVhckNhbGwoKTsKIAogICAgIGRvbmUubGluaygmbV9qaXQpOwpAQCAtMTI0NSw3ICsx
MjQ1LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbAogICAgICAg
ICAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gZWRnZS0+YXNKU1ZhbHVlKCk7CiAgICAgICAgICAgICBH
UFJSZWcgZ3ByID0gYWxsb2NhdGUoKTsKICAgICAgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2
aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJDb25zdGFudCk7Ci0gICAgICAgICAgICBtX2ppdC5t
b3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGpzVmFsdWUuYXNDZWxsKCkpLCBncHIp
OworICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKGpzVmFsdWUuYXNDZWxsKCkp
LCBncHIpOwogICAgICAgICAgICAgaW5mby5maWxsQ2VsbCgqbV9zdHJlYW0sIGdwcik7CiAgICAg
ICAgICAgICByZXR1cm4gZ3ByOwogICAgICAgICB9CkBAIC0xNzI0LDcgKzE3MjQsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlCiAgICAgICAgICAgICBtX2ppdC5i
cmFuY2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVy
ZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnRO
b2RlLT5vcmlnaW4uc2VtYW50aWMpKSkpOworICAgICAgICAgICAgICAgIFRydXN0ZWRJbW1QdHIo
bV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFu
dGljKSkpKTsKIAogICAgICAgICBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluaygmbV9q
aXQpOwogICAgIH0KQEAgLTE4NDMsNyArMTg0Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVt
aXRPYmplY3RPck90aGVyQnIKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAogICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0
KCkpLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2pp
dC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMp
KSkpOworICAgICAgICAgICAgICAgIFRydXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5nbG9iYWxP
YmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSkpKTsKIAogICAgICAgICBp
c05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluaygmbV9qaXQpOwogICAgIH0KQEAgLTM3Nzgs
NyArMzc3OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICBjYXNlIE5ld0FycmF5OiB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwog
ICAgICAgICBpZiAoIWdsb2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpICYmICFoYXNBbnlB
cnJheVN0b3JhZ2Uobm9kZS0+aW5kZXhpbmdUeXBlKCkpKSB7Ci0gICAgICAgICAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5
cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKTsKKyAgICAgICAgICAgIFJl
Z2lzdGVyZWRTdHJ1Y3R1cmVTZXQgc3RydWN0dXJlID0gbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0
cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5n
QWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSkpOwogICAgICAgICAgICAgQVNTRVJUKHN0
cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkgPT0gbm9kZS0+aW5kZXhpbmdUeXBlKCkpOwogICAgICAg
ICAgICAgQVNTRVJUKAogICAgICAgICAgICAgICAgIGhhc1VuZGVjaWRlZChzdHJ1Y3R1cmUtPmlu
ZGV4aW5nVHlwZSgpKQpAQCAtMzk5OSw3ICszOTk5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsK
IAotICAgICAgICAgICAgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQUiwgZ2xvYmFsT2Jq
ZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oaW5kZXhp
bmdUeXBlKSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMsIG51bUVsZW1lbnRzKTsKKyAgICAgICAg
ICAgIGVtaXRBbGxvY2F0ZVJhd09iamVjdChyZXN1bHRHUFIsIG1faml0LmdyYXBoKCkucmVnaXN0
ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1
cmluZ0FsbG9jYXRpb24oaW5kZXhpbmdUeXBlKSksIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRzLCBu
dW1FbGVtZW50cyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChub2RlLT5pbmRleGlu
Z1R5cGUoKSA9PSBBcnJheVdpdGhEb3VibGUpIHsKICAgICAgICAgICAgICAgICBKU1ZhbHVlKiBk
YXRhID0gbV9qaXQuY29kZUJsb2NrKCktPmNvbnN0YW50QnVmZmVyKG5vZGUtPnN0YXJ0Q29uc3Rh
bnQoKSk7CkBAIC00MTcxLDcgKzQxNzEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qg
c2xvd1BhdGg7CiAgICAgICAgIAotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5vZGUt
PnN0cnVjdHVyZSgpOworICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG5v
ZGUtPnN0cnVjdHVyZSgpOwogICAgICAgICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBKU0ZpbmFs
T2JqZWN0OjphbGxvY2F0aW9uU2l6ZShzdHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkpOwogICAg
ICAgICBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvclB0ciA9IHN1YnNwYWNlRm9yPEpTRmluYWxP
YmplY3Q+KCptX2ppdC52bSgpKS0+YWxsb2NhdG9yRm9yKGFsbG9jYXRpb25TaXplKTsKIApAQCAt
NDQxNiw4ICs0NDE2LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6IHsKLSAgICAgICAgU3Ry
dWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBub2RlLT50cmFuc2l0aW9uKCktPnByZXZpb3VzOwotICAg
ICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dDsK
KyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBvbGRTdHJ1Y3R1cmUgPSBub2RlLT50cmFuc2l0
aW9uKCktPnByZXZpb3VzOworICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG5ld1N0cnVjdHVy
ZSA9IG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dDsKIAogICAgICAgICBtX2ppdC5qaXRDb2RlKCkt
PmNvbW1vbi5ub3RpZnlDb21waWxpbmdTdHJ1Y3R1cmVUcmFuc2l0aW9uKG1faml0LmdyYXBoKCku
bV9wbGFuLCBtX2ppdC5jb2RlQmxvY2soKSwgbm9kZSk7CiAKQEAgLTQ0MjcsNyArNDQyNyw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgQVNTRVJU
X1VOVVNFRChvbGRTdHJ1Y3R1cmUsIG9sZFN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkgPT0gbmV3
U3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSk7CiAgICAgICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUt
PnR5cGVJbmZvKCkudHlwZSgpID09IG5ld1N0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkpOwog
ICAgICAgICBBU1NFUlQob2xkU3RydWN0dXJlLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygp
ID09IG5ld1N0cnVjdHVyZS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSk7Ci0gICAgICAg
IG1faml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG5ld1N0cnVjdHVy
ZSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURP
ZmZzZXQoKSkpOworICAgICAgICBtX2ppdC5zdG9yZVB0cihUcnVzdGVkSW1tUHRyKG5ld1N0cnVj
dHVyZSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
SURPZmZzZXQoKSkpOwogICAgICAgICAKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAg
IGJyZWFrOwpAQCAtNTcxMywxMyArNTcxMywxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQWxsb2NhdGVOZXdBCiAgICAgLy8gV2UgY2FuIHVzZSByZXN1bHQgYXMgYSBzY3JhdGNoIGZv
ciB0aGlzLgogICAgIGVtaXRJbml0aWFsaXplQnV0dGVyZmx5KHN0b3JhZ2VHUFIsIHNpemVHUFIs
IGVtcHR5VmFsdWVSZWdzLCByZXN1bHRHUFIpOwogICAgICAgICAgICAgCi0gICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBl
RHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpOworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVT
ZXQgc3RydWN0dXJlID0gbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmpl
Y3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGlu
Z1R5cGUpKTsKICAgICBlbWl0QWxsb2NhdGVKU09iamVjdDxKU0FycmF5PihyZXN1bHRHUFIsIFRy
dXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgc3RvcmFnZUdQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJH
UFIsIHNsb3dDYXNlcyk7CiAgICAgICAgICAgICAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihz
dGQ6Om1ha2VfdW5pcXVlPENhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJsZVNpemVTbG93UGF0
aEdlbmVyYXRvcj4oCiAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3QXJyYXlX
aXRoU2l6ZSwgcmVzdWx0R1BSLAogICAgICAgICBzdHJ1Y3R1cmUsCi0gICAgICAgIHNob3VsZENv
bnZlcnRMYXJnZVNpemVUb0FycmF5U3RvcmFnZSA/IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1
cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aEFycmF5U3RvcmFnZSkg
OiBzdHJ1Y3R1cmUsCisgICAgICAgIHNob3VsZENvbnZlcnRMYXJnZVNpemVUb0FycmF5U3RvcmFn
ZSA/IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0
cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQXJyYXlTdG9y
YWdlKSkgOiBzdHJ1Y3R1cmUsCiAgICAgICAgIHNpemVHUFIsIHN0b3JhZ2VHUFIpKTsKIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCShyZXZpc2lvbiAyMTEwMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTAsNyArMjUwLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZQogCiAgICAgICAgIEdQUlJl
ZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9IGxvY2FsR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAg
ICBHUFJSZWcgcmVtb3RlR2xvYmFsT2JqZWN0R1BSID0gcmVtb3RlR2xvYmFsT2JqZWN0Lmdwcigp
OwotICAgICAgICBtX2ppdC5tb3ZlKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdy
YXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBs
b2NhbEdsb2JhbE9iamVjdEdQUik7CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6
d2Vha1JlZmVyZW5jZShtX2ppdC5ncmFwaCgpLCBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZv
cihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbG9jYWxHbG9iYWxPYmplY3RHUFIp
OwogICAgICAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVyZShhcmdHUFIsIHJlc3VsdEdQUiwgc2Ny
YXRjaC5ncHIoKSk7CiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3Mo
cmVzdWx0R1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVtb3RlR2xvYmFs
T2JqZWN0R1BSKTsKICAgICAgICAgbV9qaXQuY29tcGFyZVB0cihKSVRDb21waWxlcjo6RXF1YWws
IGxvY2FsR2xvYmFsT2JqZWN0R1BSLCByZW1vdGVHbG9iYWxPYmplY3RHUFIsIHJlc3VsdEdQUik7
CkBAIC0zMDUsNyArMzA1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQ
ZWVwaAogCiAgICAgICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9IGxvY2FsR2xvYmFs
T2JqZWN0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmVtb3RlR2xvYmFsT2JqZWN0R1BSID0gcmVt
b3RlR2xvYmFsT2JqZWN0LmdwcigpOwotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIo
bV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVk
SW1tUHRyOjp3ZWFrUmVmZXJlbmNlKG1faml0LmdyYXBoKCksIG1faml0LmdyYXBoKCkuZ2xvYmFs
T2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9i
amVjdEdQUik7CiAgICAgICAgIG1faml0LmVtaXRMb2FkU3RydWN0dXJlKGFyZ0dQUiwgcmVzdWx0
R1BSLCBzY3JhdGNoLmdwcigpKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6
QWRkcmVzcyhyZXN1bHRHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZW1v
dGVHbG9iYWxPYmplY3RHUFIpOwogICAgICAgICBicmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFs
LCBsb2NhbEdsb2JhbE9iamVjdEdQUiwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSLCB0YWtlbik7CkBA
IC0xMDA2LDcgKzEwMDYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBu
b2RlCiAgICAgbV9qaXQuZW1pdFN0b3JlQ2FsbFNpdGVJbmRleChjYWxsU2l0ZSk7CiAgICAgCiAg
ICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbFB0ciB0YXJnZXRUb0NoZWNrOwotICAgIEpJVENvbXBp
bGVyOjpKdW1wIHNsb3dQYXRoID0gbV9qaXQuYnJhbmNoUHRyV2l0aFBhdGNoKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgY2FsbGVlR1BSLCB0YXJnZXRUb0NoZWNrLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cigwKSk7CisgICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGggPSBtX2pp
dC5icmFuY2hQdHJXaXRoUGF0Y2goTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBjYWxsZWVHUFIs
IHRhcmdldFRvQ2hlY2ssIFRydXN0ZWRJbW1QdHIoMCkpOwogCiAgICAgaWYgKGlzVGFpbCkgewog
ICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBUYWlsQ2FsbCkgewpAQCAtMTAzNSw3ICsxMDM1LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgICAgICAgICAg
bV9qaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOyAvLyBUaGlzIG5lZWRzIHRvIGhhcHBlbiBh
ZnRlciB3ZSBtb3ZlZCBjYWxsZWVHUFIgdG8gcmVnVDAKICAgICB9CiAKLSAgICBtX2ppdC5tb3Zl
KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86OnJl
Z1QyKTsgLy8gTGluayBpbmZvIG5lZWRzIHRvIGJlIGluIHJlZ1QyCisgICAgbV9qaXQubW92ZShU
cnVzdGVkSW1tUHRyKGNhbGxMaW5rSW5mbyksIEdQUkluZm86OnJlZ1QyKTsgLy8gTGluayBpbmZv
IG5lZWRzIHRvIGJlIGluIHJlZ1QyCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgc2xvd0NhbGwgPSBt
X2ppdC5uZWFyQ2FsbCgpOwogCiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CkBAIC0xODU2LDcgKzE4
NTYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlCiAgICAgICAg
ICAgICBtX2ppdC5icmFuY2hQdHIoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVx
dWFsLCAKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVH
UFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCAKLSAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZv
cihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSkpOworICAgICAgICAgICAgICAgIFRy
dXN0ZWRJbW1QdHI6OndlYWtSZWZlcmVuY2UobV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5n
bG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSkpKTsKIAogICAg
ICAgICBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluaygmbV9qaXQpOwogICAgIH0KQEAg
LTIwMDcsNyArMjAwNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVy
QnIKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6RXF1YWwsIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIAotICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkuZ2xv
YmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpKSk7CisgICAgICAg
ICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1JlZmVyZW5jZShtX2ppdC5ncmFwaCgpLCBtX2pp
dC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMp
KSkpOwogCiAgICAgICAgIGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKCZtX2ppdCk7
CiAgICAgfQpAQCAtMzc1Nyw3ICszNzU3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgIGNhc2UgTmV3QXJyYXk6IHsKICAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIGlmICghZ2xvYmFsT2JqZWN0LT5pc0hhdmluZ0FCYWRU
aW1lKCkgJiYgIWhhc0FueUFycmF5U3RvcmFnZShub2RlLT5pbmRleGluZ1R5cGUoKSkpIHsKLSAg
ICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVj
dHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkp
OworICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFw
aCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRl
eGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKSk7CiAgICAgICAg
ICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIHN0cnVjdHVyZS0+aW5kZXhpbmdU
eXBlKCkgPT0gbm9kZS0+aW5kZXhpbmdUeXBlKCkpOwogICAgICAgICAgICAgQVNTRVJUKAogICAg
ICAgICAgICAgICAgIGhhc1VuZGVjaWRlZChzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKQpAQCAt
MzgzMCw3ICszODMwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICBpZiAoIW5vZGUtPm51bUNoaWxkcmVuKCkpIHsKICAgICAgICAgICAgIGZsdXNo
UmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhp
cyk7Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0VtcHR5QXJyYXksIHJl
c3VsdC5ncHIoKSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1
cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICAgICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uTmV3RW1wdHlBcnJheSwgcmVzdWx0LmdwcigpLCBtX2ppdC5ncmFw
aCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRl
eGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKSkpOwogICAgICAg
ICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgICAgIGNlbGxSZXN1bHQocmVz
dWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzkxMiw3ICszOTEyLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJG
bHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIAogICAgICAgICBjYWxsT3Bl
cmF0aW9uKAotICAgICAgICAgICAgb3BlcmF0aW9uTmV3QXJyYXksIHJlc3VsdC5ncHIoKSwgZ2xv
YmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24o
bm9kZS0+aW5kZXhpbmdUeXBlKCkpLAorICAgICAgICAgICAgb3BlcmF0aW9uTmV3QXJyYXksIHJl
c3VsdC5ncHIoKSwgbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3Qt
PmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRl
eGluZ1R5cGUoKSkpLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dm9pZCo+KGJ1ZmZlciksIG5v
ZGUtPm51bUNoaWxkcmVuKCkpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCkBA
IC0zOTU2LDEwICszOTU2LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAg
R1BSUmVnIHN0cnVjdHVyZUdQUiA9IHNlbGVjdFNjcmF0Y2hHUFIoc2l6ZUdQUik7CiAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpKdW1wIGJpZ0xlbmd0aCA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNz
ZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHNpemVHUFIsIFRydXN0ZWRJbW0zMihNSU5fQVJSQVlfU1RP
UkFHRV9DT05TVFJVQ1RJT05fTEVOR1RIKSk7Ci0gICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZElt
bVB0cihnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxs
b2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSkpLCBzdHJ1Y3R1cmVHUFIpOworICAgICAgICBt
X2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShn
bG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlv
bihub2RlLT5pbmRleGluZ1R5cGUoKSkpKSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICAgICAgYmlnTGVuZ3RoLmxp
bmsoJm1faml0KTsKLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKGdsb2JhbE9iamVj
dC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0
aEFycmF5U3RvcmFnZSkpLCBzdHJ1Y3R1cmVHUFIpOworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0
ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFy
cmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhBcnJh
eVN0b3JhZ2UpKSksIHN0cnVjdHVyZUdQUik7CiAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwog
ICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIHJlc3VsdEdQ
Uiwgc3RydWN0dXJlR1BSLCBzaXplR1BSLCBudWxscHRyKTsKICAgICAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKQEAgLTM5NzksNyArMzk3OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQu
Z3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CiAK
LSAgICAgICAgICAgIGVtaXRBbGxvY2F0ZVJhd09iamVjdChyZXN1bHRHUFIsIGdsb2JhbE9iamVj
dC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4aW5n
VHlwZSksIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRzLCBudW1FbGVtZW50cyk7CisgICAgICAgICAg
ICBlbWl0QWxsb2NhdGVSYXdPYmplY3QocmVzdWx0R1BSLCBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVy
U3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJp
bmdBbGxvY2F0aW9uKGluZGV4aW5nVHlwZSkpLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cywgbnVt
RWxlbWVudHMpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBERkdfQVNTRVJUKG1faml0Lmdy
YXBoKCksIG5vZGUsIGluZGV4aW5nVHlwZSAmIElzQXJyYXkpOwogICAgICAgICAgICAgSlNWYWx1
ZSogZGF0YSA9IG1faml0LmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZlcihub2RlLT5zdGFydENv
bnN0YW50KCkpOwpAQCAtNDAwNSw3ICs0MDA1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJG
bHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7CiAgICAgICAgIAotICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyLCByZXN1bHQuZ3ByKCksIGdsb2JhbE9iamVj
dC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmlu
ZGV4aW5nVHlwZSgpKSwgbm9kZS0+c3RhcnRDb25zdGFudCgpLCBub2RlLT5udW1Db25zdGFudHMo
KSk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXlCdWZmZXIsIHJlc3Vs
dC5ncHIoKSwgbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFy
cmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGlu
Z1R5cGUoKSkpLCBub2RlLT5zdGFydENvbnN0YW50KCksIG5vZGUtPm51bUNvbnN0YW50cygpKTsK
ICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgCiAgICAgICAgIGNlbGxS
ZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKQEAgLTQwMjksNyArNDAyOSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpOwogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbigKICAgICAgICAgICAg
ICAgICBvcGVyYXRpb25OZXdUeXBlZEFycmF5V2l0aE9uZUFyZ3VtZW50Rm9yVHlwZShub2RlLT50
eXBlZEFycmF5VHlwZSgpKSwKLSAgICAgICAgICAgICAgICByZXN1bHRHUFIsIGdsb2JhbE9iamVj
dC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseShub2RlLT50eXBlZEFycmF5VHlwZSgp
KSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIsIG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1
Y3R1cmUoZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KG5vZGUt
PnR5cGVkQXJyYXlUeXBlKCkpKSwKICAgICAgICAgICAgICAgICBhcmd1bWVudEdQUik7CiAgICAg
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAgICAgCkBAIC00MTQzLDcg
KzQxNDMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd1BhdGg7CiAKLSAgICAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBub2RlLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgUmVn
aXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBub2RlLT5zdHJ1Y3R1cmUoKTsKICAgICAgICAg
c2l6ZV90IGFsbG9jYXRpb25TaXplID0gSlNGaW5hbE9iamVjdDo6YWxsb2NhdGlvblNpemUoc3Ry
dWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgpKTsKICAgICAgICAgTWFya2VkQWxsb2NhdG9yKiBhbGxv
Y2F0b3JQdHIgPSBzdWJzcGFjZUZvcjxKU0ZpbmFsT2JqZWN0PigqbV9qaXQudm0oKSktPmFsbG9j
YXRvckZvcihhbGxvY2F0aW9uU2l6ZSk7CiAKQEAgLTQzNzYsOCArNDM3Niw4IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICB9CiAgICAgICAgIAogICAgIGNh
c2UgUHV0U3RydWN0dXJlOiB7Ci0gICAgICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gbm9k
ZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91czsKLSAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1
cmUgPSBub2RlLT50cmFuc2l0aW9uKCktPm5leHQ7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUgb2xkU3RydWN0dXJlID0gbm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91czsKKyAgICAgICAg
UmVnaXN0ZXJlZFN0cnVjdHVyZSBuZXdTdHJ1Y3R1cmUgPSBub2RlLT50cmFuc2l0aW9uKCktPm5l
eHQ7CiAKICAgICAgICAgbV9qaXQuaml0Q29kZSgpLT5jb21tb24ubm90aWZ5Q29tcGlsaW5nU3Ry
dWN0dXJlVHJhbnNpdGlvbihtX2ppdC5ncmFwaCgpLm1fcGxhbiwgbV9qaXQuY29kZUJsb2NrKCks
IG5vZGUpOwogCkBAIC00NjUyLDcgKzQ2NTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIC8vIHNpbmNlIGl0IHJlbGllcyBvbiBPU1IgaW5mb3Jt
YXRpb24uIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ4MzIKICAg
ICAgICAgaWYgKCFoYXNJbnN0YW5jZVZhbHVlTm9kZS0+aXNDZWxsQ29uc3RhbnQoKSB8fCBkZWZh
dWx0SGFzSW5zdGFuY2VGdW5jdGlvbiAhPSBoYXNJbnN0YW5jZVZhbHVlTm9kZS0+YXNDZWxsKCkp
IHsKICAgICAgICAgICAgIEdQUlJlZyBoYXNJbnN0YW5jZVZhbHVlR1BSID0gaGFzSW5zdGFuY2VW
YWx1ZS5ncHIoKTsKLSAgICAgICAgICAgIG5vdERlZmF1bHQgPSBtX2ppdC5icmFuY2hQdHIoTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBoYXNJbnN0YW5jZVZhbHVlR1BSLCBUcnVzdGVkSW1tUHRy
KGRlZmF1bHRIYXNJbnN0YW5jZUZ1bmN0aW9uKSk7CisgICAgICAgICAgICBub3REZWZhdWx0ID0g
bV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgaGFzSW5zdGFuY2VWYWx1
ZUdQUiwgVHJ1c3RlZEltbVB0cihub2RlLT5jZWxsT3BlcmFuZCgpKSk7CiAgICAgICAgIH0KIAog
ICAgICAgICAvLyBDaGVjayB0aGF0IGJhc2UgJ0ltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2Un
LgpAQCAtNDcxOSw3ICs0NzE5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICAgICAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsoJm1faml0
KTsKICAgICAgICAgICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9IGxvY2FsR2xvYmFs
T2JqZWN0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9
IHJlbW90ZUdsb2JhbE9iamVjdC5ncHIoKTsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3Rl
ZEltbVB0cihtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxv
Y2FsR2xvYmFsT2JqZWN0R1BSKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0
cjo6d2Vha1JlZmVyZW5jZShtX2ppdC5ncmFwaCgpLCBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgICAg
IG1faml0LmVtaXRMb2FkU3RydWN0dXJlKHZhbHVlLmdwcigpLCByZXN1bHQuZ3ByKCksIHNjcmF0
Y2guZ3ByKCkpOwogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVz
cyhyZXN1bHQuZ3ByKCksIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZW1vdGVH
bG9iYWxPYmplY3RHUFIpOyAKICAgICAgICAgICAgIG1faml0LmNvbXBhcmVQdHIoSklUQ29tcGls
ZXI6OkVxdWFsLCBsb2NhbEdsb2JhbE9iamVjdEdQUiwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSLCBy
ZXN1bHQuZ3ByKCkpOwpAQCAtNDkxMiw5ICs0OTEyLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpCYXNlSW5kZXgoYnVmZmVyR1BSLCBpbmRleEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWln
aHQpLCBidWNrZXRHUFIpOwogICAgICAgICBtX2ppdC5tb3ZlKGJ1Y2tldEdQUiwgcmVzdWx0R1BS
KTsKICAgICAgICAgYXV0byBub3RQcmVzZW50SW5UYWJsZSA9IG1faml0LmJyYW5jaFB0cihNYWNy
b0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgYnVja2V0R1BSLCBUcnVzdGVkSW1tUHRy
KEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+Pjo6ZW1wdHlW
YWx1ZSgpKSk7CisgICAgICAgICAgICBidWNrZXRHUFIsIFRydXN0ZWRJbW1QdHIoYml0d2lzZV9j
YXN0PHNpemVfdD4oSGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtl
eT4+OjplbXB0eVZhbHVlKCkpKSk7CiAgICAgICAgIGxvb3BBcm91bmQuYXBwZW5kKG1faml0LmJy
YW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAotICAgICAgICAgICAgYnVja2V0R1BSLCBU
cnVzdGVkSW1tUHRyKEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFL
ZXk+Pjo6ZGVsZXRlZFZhbHVlKCkpKSk7CisgICAgICAgICAgICBidWNrZXRHUFIsIFRydXN0ZWRJ
bW1QdHIoYml0d2lzZV9jYXN0PHNpemVfdD4oSGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNo
TWFwQnVja2V0RGF0YUtleT4+OjpkZWxldGVkVmFsdWUoKSkpKSk7CiAKICAgICAgICAgbV9qaXQu
bG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJ1Y2tldEdQUiwgSGFzaE1hcEJ1Y2tldDxI
YXNoTWFwQnVja2V0RGF0YUtleT46Om9mZnNldE9mS2V5KCkpLCBidWNrZXRHUFIpOwogCkBAIC01
OTgwLDcgKzU5ODAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2NhdGVOZXdB
CiAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShKU1ZhbHVl
KCkpKSwgc2NyYXRjaEdQUik7CiAgICAgZW1pdEluaXRpYWxpemVCdXR0ZXJmbHkoc3RvcmFnZUdQ
Uiwgc2l6ZUdQUiwgSlNWYWx1ZVJlZ3Moc2NyYXRjaEdQUiksIHNjcmF0Y2gyR1BSKTsKIAotICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvcklu
ZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oaW5kZXhpbmdUeXBlKTsKKyAgICBSZWdpc3RlcmVk
U3RydWN0dXJlIHN0cnVjdHVyZSA9IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xv
YmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24o
aW5kZXhpbmdUeXBlKSk7CiAgICAgCiAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3Q8SlNBcnJheT4o
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIHN0b3JhZ2VHUFIsIHNjcmF0Y2hH
UFIsIHNjcmF0Y2gyR1BSLCBzbG93Q2FzZXMpOwogICAgIApAQCAtNTk4OSw3ICs1OTg5LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFsbG9jYXRlTmV3QQogICAgIGFkZFNsb3dQYXRo
R2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8Q2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxl
U2l6ZVNsb3dQYXRoR2VuZXJhdG9yPigKICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRp
b25OZXdBcnJheVdpdGhTaXplLCByZXN1bHRHUFIsCiAgICAgICAgIHN0cnVjdHVyZSwKLSAgICAg
ICAgc2hvdWxkQ29udmVydExhcmdlU2l6ZVRvQXJyYXlTdG9yYWdlID8gZ2xvYmFsT2JqZWN0LT5h
cnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQXJy
YXlTdG9yYWdlKSA6IHN0cnVjdHVyZSwKKyAgICAgICAgc2hvdWxkQ29udmVydExhcmdlU2l6ZVRv
QXJyYXlTdG9yYWdlID8gbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmpl
Y3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdp
dGhBcnJheVN0b3JhZ2UpKSA6IHN0cnVjdHVyZSwKICAgICAgICAgc2l6ZUdQUiwgc3RvcmFnZUdQ
UikpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjExMDA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDcgKzg0LDcg
QEAgU3BlY3VsYXRpdmVKSVQ6On5TcGVjdWxhdGl2ZUpJVCgpCiB7CiB9CiAKLXZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZVJhd09iamVjdChHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHN0b3JhZ2VHUFIsIHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1
bnNpZ25lZCB2ZWN0b3JMZW5ndGgpCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVS
YXdPYmplY3QoR1BSUmVnIHJlc3VsdEdQUiwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUs
IEdQUlJlZyBzdG9yYWdlR1BSLCB1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgdmVjdG9y
TGVuZ3RoKQogewogICAgIEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUgPSBzdHJ1Y3R1cmUtPmlu
ZGV4aW5nVHlwZSgpOwogICAgIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIgPSBoYXNJbmRleGVkUHJv
cGVydGllcyhpbmRleGluZ1R5cGUpOwpAQCAtOTgsNyArOTgsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjplbWl0QWxsb2NhdGVSYXdPYmplCiAgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gc2NyYXRj
aDIuZ3ByKCk7CiAKICAgICBBU1NFUlQodmVjdG9yTGVuZ3RoID49IG51bUVsZW1lbnRzKTsKLSAg
ICB2ZWN0b3JMZW5ndGggPSBCdXR0ZXJmbHk6Om9wdGltYWxDb250aWd1b3VzVmVjdG9yTGVuZ3Ro
KHN0cnVjdHVyZSwgdmVjdG9yTGVuZ3RoKTsKKyAgICB2ZWN0b3JMZW5ndGggPSBCdXR0ZXJmbHk6
Om9wdGltYWxDb250aWd1b3VzVmVjdG9yTGVuZ3RoKHN0cnVjdHVyZS5nZXQoKSwgdmVjdG9yTGVu
Z3RoKTsKICAgICAKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogCkBAIC0x
OTUsNyArMTk1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEdldENhbGxlZShDb2RlTwog
ICAgICAgICAgICAgICAgIGNhbGxlZUdQUik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBtX2ppdC5tb3ZlKAotICAgICAgICAgICAgICAgIFRydXN0ZWRJbW1QdHIob3JpZ2luLmlubGlu
ZUNhbGxGcmFtZS0+Y2FsbGVlUmVjb3ZlcnkuY29uc3RhbnQoKS5hc0NlbGwoKSksCisgICAgICAg
ICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1JlZmVyZW5jZShtX2ppdC5ncmFwaCgpLCBvcmln
aW4uaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVSZWNvdmVyeS5jb25zdGFudCgpLmFzQ2VsbCgpKSwK
ICAgICAgICAgICAgICAgICBjYWxsZWVHUFIpOwogICAgICAgICB9CiAgICAgfSBlbHNlCkBAIC02
NDgsNyArNjQ4LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c2lsZW50RmlsbChjb25zdCBTaQog
ICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihwbGFuLm5vZGUoKS0+YXNCb29sZWFuKCkp
LCBwbGFuLmdwcigpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTZXRDZWxsQ29uc3RhbnQ6
Ci0gICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihwbGFuLm5vZGUoKS0+YXNDZWxsKCkp
LCBwbGFuLmdwcigpKTsKKyAgICAgICAgQVNTRVJUKHBsYW4ubm9kZSgpLT5jb25zdGFudCgpLT52
YWx1ZSgpLmlzQ2VsbCgpKTsKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKHBsYW4u
bm9kZSgpLT5jb25zdGFudCgpKSwgcGxhbi5ncHIoKSk7CiAgICAgICAgIGJyZWFrOwogI2lmIFVT
RShKU1ZBTFVFNjQpCiAgICAgY2FzZSBTZXRUcnVzdGVkSlNDb25zdGFudDoKQEAgLTg3Nyw3ICs4
NzgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0FycmF5KE5vZGUqIG5vCiAgICAgICAg
IG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwK
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIFN0cnVjdHVy
ZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpLAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIoZXhwZWN0ZWRDbGFzc0luZm8pKSk7CisgICAgICAgICAgICBUcnVzdGVkSW1tUHRy
KGV4cGVjdGVkQ2xhc3NJbmZvKSkpOwogICAgIAogICAgIG5vUmVzdWx0KG1fY3VycmVudE5vZGUp
OwogfQpAQCAtMjA1NSw3ICsyMDU2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdl
dEJ5VmFsT25TdAogICAgIGNvbnQ4Qml0LmxpbmsoJm1faml0KTsKIAogICAgIG1faml0LmxzaGlm
dDMyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoc2l6ZW9mKHZvaWQqKSA9PSA0ID8gMiA6
IDMpLCBzY3JhdGNoUmVnKTsKLSAgICBtX2ppdC5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIobV9qaXQudm0oKS0+c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZ3Mo
KSksIHNjcmF0Y2hSZWcpOworICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1tUHRyKG1faml0LnZt
KCktPnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzKCkpLCBzY3JhdGNoUmVnKTsK
ICAgICBtX2ppdC5sb2FkUHRyKHNjcmF0Y2hSZWcsIHNjcmF0Y2hSZWcpOwogCiAgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3IoCkBAIC0yMTQ2LDcgKzIxNDcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlRnJvbUNoYXJDb2RlCiAKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nh
c2VzOwogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6
OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcsIFRydXN0ZWRJbW0zMigweGZmKSkpOwotICAgIG1f
aml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c21hbGxT
dHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZ3MoKSksIHNtYWxsU3RyaW5nc1JlZyk7CisgICAg
bV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnNtYWxsU3RyaW5ncy5zaW5nbGVD
aGFyYWN0ZXJTdHJpbmdzKCkpLCBzbWFsbFN0cmluZ3NSZWcpOwogICAgIG1faml0LmxvYWRQdHIo
TWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzbWFsbFN0cmluZ3NSZWcsIHByb3BlcnR5UmVnLCBN
YWNyb0Fzc2VtYmxlcjo6U2NhbGVQdHIsIDApLCBzY3JhdGNoUmVnKTsKIAogICAgIHNsb3dDYXNl
cy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBzY3JhdGNo
UmVnKSk7CkBAIC0yNDY4LDcgKzI0NjksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
RG91YmxlUmVwKE5vCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc1VuZGVmaW5lZCA9
IG1faml0LmJyYW5jaDY0KEpJVENvbXBpbGVyOjpFcXVhbCwgb3AxR1BSLCBUcnVzdGVkSW1tNjQo
VmFsdWVVbmRlZmluZWQpKTsKIAogICAgICAgICAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSB6ZXJv
ID0gMDsKLSAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIoJnplcm8pLCByZXN1bHRGUFIpOworICAgICAgICAgICAgbV9qaXQubG9hZERvdWJs
ZShUcnVzdGVkSW1tUHRyKCZ6ZXJvKSwgcmVzdWx0RlBSKTsKIAogICAgICAgICAgICAgSklUQ29t
cGlsZXI6Okp1bXAgaXNOdWxsID0gbV9qaXQuYnJhbmNoNjQoSklUQ29tcGlsZXI6OkVxdWFsLCBv
cDFHUFIsIFRydXN0ZWRJbW02NChWYWx1ZU51bGwpKTsKICAgICAgICAgICAgIGRvbmUuYXBwZW5k
KGlzTnVsbCk7CkBAIC0yNDc4LDEzICsyNDc5LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVEb3VibGVSZXAoTm8KIAogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNGYWxz
ZSA9IG1faml0LmJyYW5jaDY0KEpJVENvbXBpbGVyOjpFcXVhbCwgb3AxR1BSLCBUcnVzdGVkSW1t
NjQoVmFsdWVGYWxzZSkpOwogICAgICAgICAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBvbmUgPSAx
OwotICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cigmb25lKSwgcmVzdWx0RlBSKTsKKyAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoVHJ1
c3RlZEltbVB0cigmb25lKSwgcmVzdWx0RlBSKTsKICAgICAgICAgICAgIGRvbmUuYXBwZW5kKG1f
aml0Lmp1bXAoKSk7CiAgICAgICAgICAgICBkb25lLmFwcGVuZChpc0ZhbHNlKTsKIAogICAgICAg
ICAgICAgaXNVbmRlZmluZWQubGluaygmbV9qaXQpOwogICAgICAgICAgICAgc3RhdGljIGNvbnN0
IGRvdWJsZSBOYU4gPSBQTmFOOwotICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmTmFOKSwgcmVzdWx0RlBSKTsKKyAgICAgICAgICAgIG1f
aml0LmxvYWREb3VibGUoVHJ1c3RlZEltbVB0cigmTmFOKSwgcmVzdWx0RlBSKTsKICAgICAgICAg
ICAgIGRvbmUuYXBwZW5kKG1faml0Lmp1bXAoKSk7CiAKICAgICAgICAgICAgIGlzTnVtYmVyLmxp
bmsoJm1faml0KTsKQEAgLTI1MTcsNyArMjUxOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVEb3VibGVSZXAoTm8KICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzVW5kZWZp
bmVkID0gbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6OkVxdWFsLCBvcDFUYWdHUFIsIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpVbmRlZmluZWRUYWcpKTsKIAogICAgICAgICAgICAgc3RhdGljIGNv
bnN0IGRvdWJsZSB6ZXJvID0gMDsKLSAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJnplcm8pLCByZXN1bHRGUFIpOworICAgICAgICAgICAg
bV9qaXQubG9hZERvdWJsZShUcnVzdGVkSW1tUHRyKCZ6ZXJvKSwgcmVzdWx0RlBSKTsKIAogICAg
ICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOdWxsID0gbV9qaXQuYnJhbmNoMzIoSklUQ29t
cGlsZXI6OkVxdWFsLCBvcDFUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpOdWxsVGFnKSk7
CiAgICAgICAgICAgICBkb25lLmFwcGVuZChpc051bGwpOwpAQCAtMjUyNiwxMyArMjUyNywxMyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRG91YmxlUmVwKE5vCiAKICAgICAgICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wIGlzRmFsc2UgPSBtX2ppdC5icmFuY2hUZXN0MzIoSklUQ29tcGls
ZXI6Olplcm8sIG9wMVBheWxvYWRHUFIsIFRydXN0ZWRJbW0zMigxKSk7CiAgICAgICAgICAgICBz
dGF0aWMgY29uc3QgZG91YmxlIG9uZSA9IDE7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkRG91Ymxl
KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZvbmUpLCByZXN1bHRGUFIpOworICAgICAg
ICAgICAgbV9qaXQubG9hZERvdWJsZShUcnVzdGVkSW1tUHRyKCZvbmUpLCByZXN1bHRGUFIpOwog
ICAgICAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuanVtcCgpKTsKICAgICAgICAgICAgIGRvbmUu
YXBwZW5kKGlzRmFsc2UpOwogCiAgICAgICAgICAgICBpc1VuZGVmaW5lZC5saW5rKCZtX2ppdCk7
CiAgICAgICAgICAgICBzdGF0aWMgY29uc3QgZG91YmxlIE5hTiA9IFBOYU47Ci0gICAgICAgICAg
ICBtX2ppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZOYU4pLCBy
ZXN1bHRGUFIpOworICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShUcnVzdGVkSW1tUHRyKCZO
YU4pLCByZXN1bHRGUFIpOwogICAgICAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuanVtcCgpKTsK
IAogICAgICAgICAgICAgaXNOdW1iZXIubGluaygmbV9qaXQpOwpAQCAtMjY0NywxMiArMjY0OCwx
MiBAQCBzdGF0aWMgdm9pZCBjb21waWxlQ2xhbXBEb3VibGVUb0J5dGUoSklUCiAgICAgc3RhdGlj
IGNvbnN0IGRvdWJsZSB6ZXJvID0gMDsKICAgICBzdGF0aWMgY29uc3QgZG91YmxlIGJ5dGVNYXgg
PSAyNTU7CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBoYWxmID0gMC41OwotICAgIGppdC5sb2Fk
RG91YmxlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZ6ZXJvKSwgc2NyYXRjaCk7Cisg
ICAgaml0LmxvYWREb3VibGUoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIoJnplcm8pLCBzY3Jh
dGNoKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCB0b29TbWFsbCA9IGppdC5icmFuY2hEb3Vi
bGUoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUxlc3NUaGFuT3JFcXVhbE9yVW5vcmRlcmVkLCBzb3Vy
Y2UsIHNjcmF0Y2gpOwotICAgIGppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKCZieXRlTWF4KSwgc2NyYXRjaCk7CisgICAgaml0LmxvYWREb3VibGUoSklUQ29tcGls
ZXI6OlRydXN0ZWRJbW1QdHIoJmJ5dGVNYXgpLCBzY3JhdGNoKTsKICAgICBNYWNyb0Fzc2VtYmxl
cjo6SnVtcCB0b29CaWcgPSBqaXQuYnJhbmNoRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVH
cmVhdGVyVGhhbiwgc291cmNlLCBzY3JhdGNoKTsKICAgICAKLSAgICBqaXQubG9hZERvdWJsZShN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmaGFsZiksIHNjcmF0Y2gpOworICAgIGppdC5s
b2FkRG91YmxlKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKCZoYWxmKSwgc2NyYXRjaCk7CiAg
ICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IGp1c3QgdXNlIGEgZmxvYXRpbmcgcG9p
bnQgcm91bmQhCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTcyMDU0CiAgICAgaml0LmFkZERvdWJsZShzb3VyY2UsIHNjcmF0Y2gpOwpAQCAtMzkwMCw3ICsz
OTAxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1ha2VSb3BlKE5vZAogICAgIE1h
cmtlZEFsbG9jYXRvciogbWFya2VkQWxsb2NhdG9yID0gc3Vic3BhY2VGb3I8SlNTdHJpbmc+KCpt
X2ppdC52bSgpKS0+YWxsb2NhdG9yRm9yKHNpemVvZihKU1JvcGVTdHJpbmcpKTsKICAgICBSRUxF
QVNFX0FTU0VSVChtYXJrZWRBbGxvY2F0b3IpOwogICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0
cihtYXJrZWRBbGxvY2F0b3IpLCBhbGxvY2F0b3JHUFIpOwotICAgIGVtaXRBbGxvY2F0ZUpTQ2Vs
bChyZXN1bHRHUFIsIG1hcmtlZEFsbG9jYXRvciwgYWxsb2NhdG9yR1BSLCBUcnVzdGVkSW1tUHRy
KG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSksIHNjcmF0Y2hHUFIsIHNsb3dQYXRo
KTsKKyAgICBlbWl0QWxsb2NhdGVKU0NlbGwocmVzdWx0R1BSLCBtYXJrZWRBbGxvY2F0b3IsIGFs
bG9jYXRvckdQUiwgVHJ1c3RlZEltbVB0cihtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJl
KG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpLCBzY3JhdGNoR1BSLCBzbG93UGF0
aCk7CiAgICAgICAgIAogICAgIG1faml0LnN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoMCksIEpJVENv
bXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNTdHJpbmc6Om9mZnNldE9mVmFsdWUoKSkpOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1PcEdQUnM7ICsraSkKQEAgLTUwOTcsNyAr
NTA5OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFJvdW5kaW4KICAgICAg
ICAgICAgICAgICBGUFJSZWcgcmVzdWx0RlBSID0gcmVzdWx0LmZwcigpOwogICAgICAgICAgICAg
ICAgIGlmIChwcm9kdWNlc0ludGVnZXIobm9kZS0+YXJpdGhSb3VuZGluZ01vZGUoKSkgJiYgIXNo
b3VsZENoZWNrTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoUm91bmRpbmdNb2RlKCkpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBkb3VibGUgaGFsZkNvbnN0YW50ID0gMC41Owot
ICAgICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKCZoYWxmQ29uc3RhbnQpLCByZXN1bHRGUFIpOworICAgICAgICAgICAgICAgICAg
ICBtX2ppdC5sb2FkRG91YmxlKFRydXN0ZWRJbW1QdHIoJmhhbGZDb25zdGFudCksIHJlc3VsdEZQ
Uik7CiAgICAgICAgICAgICAgICAgICAgIG1faml0LmFkZERvdWJsZSh2YWx1ZUZQUiwgcmVzdWx0
RlBSKTsKICAgICAgICAgICAgICAgICAgICAgbV9qaXQuZmxvb3JEb3VibGUocmVzdWx0RlBSLCBy
ZXN1bHRGUFIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC01MTA5LDExICs1MTEwLDEx
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFJvdW5kaW4KICAgICAgICAgICAg
ICAgICAgICAgRlBSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAgICAgICAgICAgICAgICAgICAg
IEZQUlJlZyBzY3JhdGNoRlBSID0gc2NyYXRjaC5mcHIoKTsKICAgICAgICAgICAgICAgICAgICAg
c3RhdGljIGNvbnN0IGRvdWJsZSBoYWxmQ29uc3RhbnQgPSAwLjU7Ci0gICAgICAgICAgICAgICAg
ICAgIG1faml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJmhhbGZD
b25zdGFudCksIHNjcmF0Y2hGUFIpOworICAgICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkRG91
YmxlKFRydXN0ZWRJbW1QdHIoJmhhbGZDb25zdGFudCksIHNjcmF0Y2hGUFIpOwogCiAgICAgICAg
ICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHNob3VsZFVzZUNlaWxlZCA9IG1faml0LmJy
YW5jaERvdWJsZShKSVRDb21waWxlcjo6RG91YmxlTGVzc1RoYW5PckVxdWFsLCByZWFsUGFydEZQ
Uiwgc2NyYXRjaEZQUik7CiAgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBkb3VibGUg
b25lQ29uc3RhbnQgPSAtMS4wOwotICAgICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkRG91Ymxl
KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZvbmVDb25zdGFudCksIHNjcmF0Y2hGUFIp
OworICAgICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKFRydXN0ZWRJbW1QdHIoJm9u
ZUNvbnN0YW50KSwgc2NyYXRjaEZQUik7CiAgICAgICAgICAgICAgICAgICAgIG1faml0LmFkZERv
dWJsZShzY3JhdGNoRlBSLCByZXN1bHRGUFIpOwogICAgICAgICAgICAgICAgICAgICBzaG91bGRV
c2VDZWlsZWQubGluaygmbV9qaXQpOwogICAgICAgICAgICAgICAgIH0KQEAgLTYzNTMsMTIgKzYz
NTQsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNoZWNrU3RyaW5nSQogICAgIG5v
UmVzdWx0KG5vZGUpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlPiB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTmV3RnVuY3Rpb25Db21tb24oR1BSUmVnIHJlc3VsdEdQUiwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBzY3JhdGNoMUdQUiwgR1BSUmVnIHNjcmF0Y2gy
R1BSLCBHUFJSZWcgc2NvcGVHUFIsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYgc2xvd1BhdGgs
IHNpemVfdCBzaXplLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIHB0cmRpZmZfdCBv
ZmZzZXRPZlNjb3BlQ2hhaW4sIHB0cmRpZmZfdCBvZmZzZXRPZkV4ZWN1dGFibGUsIHB0cmRpZmZf
dCBvZmZzZXRPZlJhcmVEYXRhKQordGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzVHlwZT4gdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uQ29tbW9uKEdQUlJlZyByZXN1bHRHUFIs
IFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCBHUFJSZWcgc2NyYXRjaDFHUFIsIEdQUlJl
ZyBzY3JhdGNoMkdQUiwgR1BSUmVnIHNjb3BlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qm
IHNsb3dQYXRoLCBzaXplX3Qgc2l6ZSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBw
dHJkaWZmX3Qgb2Zmc2V0T2ZTY29wZUNoYWluLCBwdHJkaWZmX3Qgb2Zmc2V0T2ZFeGVjdXRhYmxl
LCBwdHJkaWZmX3Qgb2Zmc2V0T2ZSYXJlRGF0YSkKIHsKICAgICBlbWl0QWxsb2NhdGVKU09iamVj
dFdpdGhLbm93blNpemU8Q2xhc3NUeXBlPihyZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0
dXJlKSwgVHJ1c3RlZEltbVB0cigwKSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzbG93UGF0
aCwgc2l6ZSk7CiAgICAgCiAgICAgbV9qaXQuc3RvcmVQdHIoc2NvcGVHUFIsIEpJVENvbXBpbGVy
OjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0T2ZTY29wZUNoYWluKSk7Ci0gICAgbV9qaXQuc3Rv
cmVQdHIoVHJ1c3RlZEltbVB0cihleGVjdXRhYmxlKSwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVz
dWx0R1BSLCBvZmZzZXRPZkV4ZWN1dGFibGUpKTsKKyAgICBtX2ppdC5zdG9yZVB0cihUcnVzdGVk
SW1tUHRyOjp3ZWFrUmVmZXJlbmNlKG1faml0LmdyYXBoKCksIGV4ZWN1dGFibGUpLCBKSVRDb21w
aWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9mZnNldE9mRXhlY3V0YWJsZSkpOwogICAgIG1faml0
LnN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoMCksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQ
Uiwgb2Zmc2V0T2ZSYXJlRGF0YSkpOwogICAgIAogICAgIG1faml0Lm11dGF0b3JGZW5jZSgpOwpA
QCAtNjM5MSwxMCArNjM5MiwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3RnVu
Y3Rpb24oCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgpLnJl
Z2lzdGVyU3RydWN0dXJlKAogICAgICAgICBub2RlVHlwZSA9PSBOZXdHZW5lcmF0b3JGdW5jdGlv
biA/IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykt
PmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkgOgogICAgICAgICBub2RlVHlwZSA9PSBOZXdB
c3luY0Z1bmN0aW9uID8gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKS0+YXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpIDoKLSAgICAgICAgbV9qaXQuZ3Jh
cGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1
Y3R1cmUoKTsKKyAgICAgICAgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CiAgICAgCiAgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDEodGhpcyk7CkBAIC02
NTEwLDggKzY1MTEsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRm9yd2FyZFZhcmFy
CiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlQWN0aXZhdGlvbihOb2RlKiBub2Rl
KQogewogICAgIFN5bWJvbFRhYmxlKiB0YWJsZSA9IG5vZGUtPmNhc3RPcGVyYW5kPFN5bWJvbFRh
YmxlKj4oKTsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG1faml0LmdyYXBoKCkuZ2xvYmFs
T2JqZWN0Rm9yKAotICAgICAgICBub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hY3RpdmF0aW9uU3Ry
dWN0dXJlKCk7CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFw
aCgpLnJlZ2lzdGVyU3RydWN0dXJlKG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKAorICAg
ICAgICBub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hY3RpdmF0aW9uU3RydWN0dXJlKCkpOwogICAg
ICAgICAKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBzY29wZSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CiAgICAgR1BSUmVnIHNjb3BlR1BSID0gc2NvcGUuZ3ByKCk7CkBAIC02NTUyLDcgKzY1NTMs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlQWN0aXZhCiAgICAgLy8gYWN0
aXZhdGlvbiBtdXN0IGJlIHlvdW5nLgogICAgIG1faml0LnN0b3JlUHRyKHNjb3BlR1BSLCBKSVRD
b21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTU2NvcGU6Om9mZnNldE9mTmV4dCgpKSk7CiAg
ICAgbV9qaXQuc3RvcmVQdHIoCi0gICAgICAgIFRydXN0ZWRJbW1QdHIodGFibGUpLAorICAgICAg
ICBUcnVzdGVkSW1tUHRyKG5vZGUtPmNlbGxPcGVyYW5kKCkpLAogICAgICAgICBKSVRDb21waWxl
cjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTTGV4aWNhbEVudmlyb25tZW50OjpvZmZzZXRPZlN5bWJv
bFRhYmxlKCkpKTsKICAgICAgICAgCiAgICAgLy8gTXVzdCBpbml0aWFsaXplIGFsbCBtZW1iZXJz
IHRvIHVuZGVmaW5lZCBvciB0aGUgVERaIGVtcHR5IHZhbHVlLgpAQCAtNjYxNSw4ICs2NjE2LDgg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZURpcmVjdAogICAgICAgICBtX2pp
dC5zdWIzMihUcnVzdGVkSW1tMzIoMSksIGxlbmd0aEdQUik7CiAgICAgfQogICAgICAgICAKLSAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9Ci0gICAgICAgIG1faml0LmdyYXBoKCkuZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmRpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZSgp
OworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0KKyAgICAgICAgbV9qaXQuZ3Jh
cGgoKS5yZWdpc3RlclN0cnVjdHVyZShtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLT5kaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUoKSk7CiAgICAgICAg
IAogICAgIC8vIFVzZSBhIGRpZmZlcmVudCBzdHJhdGVneSBmb3IgYWxsb2NhdGluZyB0aGUgb2Jq
ZWN0IGRlcGVuZGluZyBvbiB3aGV0aGVyIHdlIGtub3cgaXRzCiAgICAgLy8gc2l6ZSBzdGF0aWNh
bGx5LgpAQCAtNjY4MSw4ICs2NjgyLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNy
ZWF0ZURpcmVjdAogICAgICAgICAgICAgICAgIHNjcmF0Y2gxR1BSKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIG1faml0Lm1vdmUoCi0gICAgICAgICAgICAgICAgVHJ1c3RlZEltbVB0
cigKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxG
cmFtZS0+Y2FsbGVlUmVjb3ZlcnkuY29uc3RhbnQoKS5hc0NlbGwoKSksCisgICAgICAgICAgICAg
ICAgVHJ1c3RlZEltbVB0cjo6d2Vha1JlZmVyZW5jZSgKKyAgICAgICAgICAgICAgICAgICAgbV9q
aXQuZ3JhcGgoKSwgbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZS0+Y2FsbGVl
UmVjb3ZlcnkuY29uc3RhbnQoKS5hc0NlbGwoKSksCiAgICAgICAgICAgICAgICAgc2NyYXRjaDFH
UFIpOwogICAgICAgICB9CiAgICAgfSBlbHNlCkBAIC02Nzk4LDcgKzY3OTksNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlU2NvcGVkCiAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dCgKICAgICAgICAgMSwgWyZdIChHUFJSZWcgZGVzdEdQUikgewogICAgICAgICAgICAgbV9qaXQu
bW92ZSgKLSAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5zY29wZWRBcmd1bWVudHNTdHJ1Y3R1cmUoKSksCisg
ICAgICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1JlZmVyZW5jZShtX2ppdC5ncmFwaCgp
LCBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+c2NvcGVkQXJn
dW1lbnRzU3RydWN0dXJlKCkpLAogICAgICAgICAgICAgICAgIGRlc3RHUFIpOwogICAgICAgICB9
KTsKICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50KDAsIFsmXSAoR1BSUmVnIGRlc3RHUFIpIHsgbV9q
aXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgZGVzdEdQUik7IH0pOwpAQCAtNjgy
NSw4ICs2ODI2LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUNsb25lZAog
ICAgIG1faml0LnNldHVwQXJndW1lbnQoCiAgICAgICAgIDEsIFsmXSAoR1BSUmVnIGRlc3RHUFIp
IHsKICAgICAgICAgICAgIG1faml0Lm1vdmUoCi0gICAgICAgICAgICAgICAgVHJ1c3RlZEltbVB0
cigKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyktPmNsb25lZEFyZ3VtZW50c1N0cnVjdHVyZSgpKSwKKyAgICAgICAgICAgICAg
ICBUcnVzdGVkSW1tUHRyOjp3ZWFrUmVmZXJlbmNlKAorICAgICAgICAgICAgICAgICAgICBtX2pp
dC5ncmFwaCgpLCBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+
Y2xvbmVkQXJndW1lbnRzU3RydWN0dXJlKCkpLAogICAgICAgICAgICAgICAgIGRlc3RHUFIpOwog
ICAgICAgICB9KTsKICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50KDAsIFsmXSAoR1BSUmVnIGRlc3RH
UFIpIHsgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgZGVzdEdQUik7IH0p
OwpAQCAtNjk0OSw3ICs2OTUwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNwcmVh
ZChOb2RlKgogICAgICAgICBtX2ppdC5sc2hpZnQzMihUcnVzdGVkSW1tMzIoMyksIHNjcmF0Y2gx
R1BSKTsKICAgICAgICAgbV9qaXQuYWRkMzIoVHJ1c3RlZEltbTMyKEpTRml4ZWRBcnJheTo6b2Zm
c2V0T2ZEYXRhKCkpLCBzY3JhdGNoMUdQUik7CiAKLSAgICAgICAgbV9qaXQuZW1pdEFsbG9jYXRl
VmFyaWFibGVTaXplZENlbGw8SlNGaXhlZEFycmF5PihyZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIo
bV9qaXQuZ3JhcGgoKS5tX3ZtLmZpeGVkQXJyYXlTdHJ1Y3R1cmUuZ2V0KCkpLCBzY3JhdGNoMUdQ
Uiwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzbG93UGF0aCk7CisgICAgICAgIG1faml0LmVt
aXRBbGxvY2F0ZVZhcmlhYmxlU2l6ZWRDZWxsPEpTRml4ZWRBcnJheT4ocmVzdWx0R1BSLCBUcnVz
dGVkSW1tUHRyKG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUobV9qaXQuZ3JhcGgoKS5t
X3ZtLmZpeGVkQXJyYXlTdHJ1Y3R1cmUuZ2V0KCkpKSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gxR1BS
LCBzY3JhdGNoMkdQUiwgc2xvd1BhdGgpOwogICAgICAgICBtX2ppdC5zdG9yZTMyKGxlbmd0aEdQ
UiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0ZpeGVkQXJyYXk6Om9mZnNl
dE9mU2l6ZSgpKSk7CiAKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhhcmd1bWVudCwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSwgc2NyYXRjaDFHUFIp
OwpAQCAtNzI2NiwxNyArNzI2NywxNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJy
YXlTbGljZShOCiAgICAgICAgIC8vIHRvIGVuc3VyZSB0aGUgaW5jb21pbmcgYXJyYXkgaXMgb25l
IHRvIGJlIG9uZSBvZiB0aGUgb3JpZ2luYWwgYXJyYXkgc3RydWN0dXJlcwogICAgICAgICAvLyB3
aXRoIG9uZSBvZiB0aGUgZm9sbG93aW5nIGluZGV4aW5nIHNoYXBlczogSW50MzIsIENvbnRpZ3Vv
dXMsIERvdWJsZS4gVGhlcmVmb3JlLAogICAgICAgICAvLyB3ZSdyZSBhIGRvdWJsZSBhcnJheSBo
ZXJlLgotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0LT5hcnJh
eVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoRG91Ymxl
KSksIHRlbXBWYWx1ZSk7CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC5n
cmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJ
bmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aERvdWJsZSkpKSwgdGVtcFZhbHVl
KTsKICAgICAgICAgZW1pdE1vdmVFbXB0eVZhbHVlKGpzTmFOKCkpOwogICAgICAgICBkb25lLmFw
cGVuZChtX2ppdC5qdW1wKCkpOwogCiAgICAgICAgIGlzQ29udGlndW91cy5saW5rKCZtX2ppdCk7
Ci0gICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QtPmFycmF5U3Ry
dWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhDb250aWd1b3Vz
KSksIHRlbXBWYWx1ZSk7CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC5n
cmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJ
bmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aENvbnRpZ3VvdXMpKSksIHRlbXBW
YWx1ZSk7CiAgICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZShKU1ZhbHVlKCkpOwogICAgICAgICBk
b25lLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogCiAgICAgICAgIGlzSW50MzIubGluaygmbV9qaXQp
OwotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0LT5hcnJheVN0
cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoSW50MzIpKSwg
dGVtcFZhbHVlKTsKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBo
KCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4
aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoSW50MzIpKSksIHRlbXBWYWx1ZSk7CiAg
ICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZShKU1ZhbHVlKCkpOwogCiAgICAgICAgIGRvbmUubGlu
aygmbV9qaXQpOwpAQCAtNzQ1Niw3ICs3NDU3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVR5cGVPZihOb2RlKgogICAgIG1faml0LmVtaXRUeXBlT2YoCiAgICAgICAgIHZhbHVlUmVn
cywgcmVzdWx0R1BSLAogICAgICAgICBbJl0gKFR5cGVvZlR5cGUgdHlwZSwgYm9vbCBmYWxsc1Ro
cm91Z2gpIHsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC52bSgp
LT5zbWFsbFN0cmluZ3MudHlwZVN0cmluZyh0eXBlKSksIHJlc3VsdEdQUik7CisgICAgICAgICAg
ICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtSZWZlcmVuY2UobV9qaXQuZ3JhcGgoKSwg
bV9qaXQudm0oKS0+c21hbGxTdHJpbmdzLnR5cGVTdHJpbmcodHlwZSkpLCByZXN1bHRHUFIpOwog
ICAgICAgICAgICAgaWYgKCFmYWxsc1Rocm91Z2gpCiAgICAgICAgICAgICAgICAgZG9uZS5hcHBl
bmQobV9qaXQuanVtcCgpKTsKICAgICAgICAgfSwKQEAgLTc0NzUsMTUgKzc0NzYsMTUgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVR5cGVPZihOb2RlKgogCiB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlQ2hlY2tTdHJ1Y3R1cmUoTm9kZSogbm9kZSwgR1BSUmVnIGNlbGxHUFIsIEdQ
UlJlZyB0ZW1wR1BSKQogewotICAgIEFTU0VSVChub2RlLT5zdHJ1Y3R1cmVTZXQoKS5zaXplKCkp
OworICAgIEFTU0VSVChub2RlLT5zdHJ1Y3R1cmVTZXQoKS5nZXQoKS5zaXplKCkpOwogICAgIAot
ICAgIGlmIChub2RlLT5zdHJ1Y3R1cmVTZXQoKS5zaXplKCkgPT0gMSkgeworICAgIGlmIChub2Rl
LT5zdHJ1Y3R1cmVTZXQoKS5nZXQoKS5zaXplKCkgPT0gMSkgewogICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKAogICAgICAgICAgICAgQmFkQ2FjaGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KGNlbGxHUFIpLCAwLAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoV2Vha1N0cnVjdHVyZSgKICAg
ICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsCiAgICAgICAgICAgICAgICAgSklU
Q29tcGlsZXI6OkFkZHJlc3MoY2VsbEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwK
LSAgICAgICAgICAgICAgICBub2RlLT5zdHJ1Y3R1cmVTZXQoKVswXSkpOworICAgICAgICAgICAg
ICAgIG5vZGUtPnN0cnVjdHVyZVNldCgpLmF0KDApKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPEdQUlRlbXBvcmFyeT4gc3RydWN0dXJlOwogICAgICAgICBHUFJSZWcg
c3RydWN0dXJlR1BSOwpAQCAtNzQ5OCw5ICs3NDk5LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUNoZWNrU3RydWN0dQogICAgICAgICAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBM
aXN0IGRvbmU7CiAgICAgICAgIAotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5vZGUt
PnN0cnVjdHVyZVNldCgpLnNpemUoKSAtIDE7ICsraSkgeworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG5vZGUtPnN0cnVjdHVyZVNldCgpLmdldCgpLnNpemUoKSAtIDE7ICsraSkgewog
ICAgICAgICAgICAgZG9uZS5hcHBlbmQoCi0gICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoV2Vh
a1N0cnVjdHVyZShKSVRDb21waWxlcjo6RXF1YWwsIHN0cnVjdHVyZUdQUiwgbm9kZS0+c3RydWN0
dXJlU2V0KClbaV0pKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hXZWFrU3RydWN0dXJl
KEpJVENvbXBpbGVyOjpFcXVhbCwgc3RydWN0dXJlR1BSLCBub2RlLT5zdHJ1Y3R1cmVTZXQoKS5h
dChpKSkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKApA
QCAtNzU4MCw3ICs3NTgxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFsbG9jYXRl
UHJvcAogICAgIEdQUlJlZyBzY3JhdGNoR1BSMiA9IHNjcmF0Y2gyLmdwcigpOwogICAgIEdQUlJl
ZyBzY3JhdGNoR1BSMyA9IHNjcmF0Y2gzLmdwcigpOwogICAgICAgICAKLSAgICBtX2ppdC5tb3Zl
KEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKGFsbG9jYXRvciksIHNjcmF0Y2hHUFIyKTsKKyAg
ICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoYWxsb2NhdG9yKSwgc2NyYXRjaEdQUjIpOwogICAg
IEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aDsKICAgICBtX2ppdC5lbWl0QWxsb2NhdGUo
c2NyYXRjaEdQUjEsIGFsbG9jYXRvciwgc2NyYXRjaEdQUjIsIHNjcmF0Y2hHUFIzLCBzbG93UGF0
aCk7CiAgICAgbV9qaXQuYWRkUHRyKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoc2l6ZSArIHNp
emVvZihJbmRleGluZ0hlYWRlcikpLCBzY3JhdGNoR1BSMSk7CkBAIC03NjI4LDcgKzc2MjksNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVhbGxvY2F0ZVByCiAgICAgR1BSUmVnIHNj
cmF0Y2hHUFIzID0gc2NyYXRjaDMuZ3ByKCk7CiAgICAgCiAgICAgSklUQ29tcGlsZXI6Okp1bXBM
aXN0IHNsb3dQYXRoOwotICAgIG1faml0Lm1vdmUoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIo
YWxsb2NhdG9yKSwgc2NyYXRjaEdQUjIpOworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihh
bGxvY2F0b3IpLCBzY3JhdGNoR1BSMik7CiAgICAgbV9qaXQuZW1pdEFsbG9jYXRlKHNjcmF0Y2hH
UFIxLCBhbGxvY2F0b3IsIHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMywgc2xvd1BhdGgpOwogICAg
IAogICAgIG1faml0LmFkZFB0cihKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKG5ld1NpemUgKyBz
aXplb2YoSW5kZXhpbmdIZWFkZXIpKSwgc2NyYXRjaEdQUjEpOwpAQCAtNzk1Niw4ICs3OTU3LDgg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYQogewogICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgIFR5cGVkQXJyYXlUeXBlIHR5cGUgPSBub2RlLT50
eXBlZEFycmF5VHlwZSgpOwotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0
LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGUpOwotICAgIFJFTEVBU0VfQVNT
RVJUKHN0cnVjdHVyZSk7CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2pp
dC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVj
dHVyZUNvbmN1cnJlbnRseSh0eXBlKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoc3RydWN0dXJlLmdl
dCgpKTsKICAgICAKICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQgc2l6ZSh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CiAgICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigpOwpAQCAtOTI2Nyw4ICs5
MjY4LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxhenlKU0NvbnN0YQogCiB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWF0ZXJpYWxpemVOZXdPYmplY3QoTm9kZSogbm9kZSkK
IHsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5vZGUtPnN0cnVjdHVyZVNldCgpWzBdOwot
ICAgIEFTU0VSVChtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDApLT5keW5hbWljQ2Fz
dENvbnN0YW50PFN0cnVjdHVyZSo+KCkgPT0gc3RydWN0dXJlKTsKKyAgICBSZWdpc3RlcmVkU3Ry
dWN0dXJlIHN0cnVjdHVyZSA9IG5vZGUtPnN0cnVjdHVyZVNldCgpLmF0KDApOworICAgIEFTU0VS
VChtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDApLT5keW5hbWljQ2FzdENvbnN0YW50
PFN0cnVjdHVyZSo+KCkgPT0gc3RydWN0dXJlLmdldCgpKTsKIAogICAgIE9iamVjdE1hdGVyaWFs
aXphdGlvbkRhdGEmIGRhdGEgPSBub2RlLT5vYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhKCk7CiAg
ICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAkocmV2aXNpb24gMjExMDA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw2IEBAIGNsYXNz
IFNwZWN1bGF0aXZlSklUIHsKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBKSVRDb21waWxlcjo6VHJ1
c3RlZEltbTMyIFRydXN0ZWRJbW0zMjsKICAgICB0eXBlZGVmIEpJVENvbXBpbGVyOjpJbW0zMiBJ
bW0zMjsKLSAgICB0eXBlZGVmIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyIFRydXN0ZWRJbW1Q
dHI7CiAgICAgdHlwZWRlZiBKSVRDb21waWxlcjo6SW1tUHRyIEltbVB0cjsKICAgICB0eXBlZGVm
IEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tNjQgVHJ1c3RlZEltbTY0OwogICAgIHR5cGVkZWYgSklU
Q29tcGlsZXI6OkltbTY0IEltbTY0OwpAQCAtMTEyLDYgKzExMSw1OSBAQCBwdWJsaWM6CiAgICAg
U3BlY3VsYXRpdmVKSVQoSklUQ29tcGlsZXImKTsKICAgICB+U3BlY3VsYXRpdmVKSVQoKTsKIAor
ICAgIHN0cnVjdCBUcnVzdGVkSW1tUHRyIHsKKyAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CisgICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIoVCogdmFsdWUpCisgICAgICAgICAgICA6
IG1fdmFsdWUodmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoIXN0
ZDo6aXNfYmFzZV9vZjxIZWFwQ2VsbCwgVD46OnZhbHVlLCAiVG8gdXNlIGEgR0MgcG9pbnRlciwg
dGhlIGdyYXBoIG11c3QgYmUgYXdhcmUgb2YgaXQuIFVzZSBTcGVjdWxhdGl2ZUpJVDo6VHJ1c3Rl
ZEltbVB0cjo6d2Vha1JlZmVyZW5jZSBpbnN0ZWFkLiIpOworICAgICAgICB9CisKKyAgICAgICAg
ZXhwbGljaXQgVHJ1c3RlZEltbVB0cihSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkKKyAg
ICAgICAgICAgIDogbV92YWx1ZShzdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgIHsgfQorICAgICAg
ICAKKyAgICAgICAgLy8gVGhpcyBpcyBvbmx5IGhlcmUgc28gdGhhdCBUcnVzdGVkSW1tUHRyKDAp
IGRvZXMgbm90IGNvbmZ1c2UgdGhlIEMrKworICAgICAgICAvLyBvdmVybG9hZCBoYW5kbGluZyBy
dWxlcy4KKyAgICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbVB0cihpbnQgdmFsdWUpCisgICAgICAg
ICAgICA6IG1fdmFsdWUodmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVCghdmFs
dWUpOworICAgICAgICB9CisKKyAgICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbVB0cihzdGQ6Om51
bGxwdHJfdCkKKyAgICAgICAgICAgIDogbV92YWx1ZSgwKQorICAgICAgICB7IH0KKworICAgICAg
ICBleHBsaWNpdCBUcnVzdGVkSW1tUHRyKEZyb3plblZhbHVlKiB2YWx1ZSkKKyAgICAgICAgewor
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQodmFsdWUtPnZhbHVlKCkuaXNDZWxsKCkpOworICAg
ICAgICAgICAgbV92YWx1ZSA9IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHZhbHVlLT5j
ZWxsKCkpOworICAgICAgICB9CisKKyAgICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbVB0cihzaXpl
X3QgdmFsdWUpCisgICAgICAgICAgICA6IG1fdmFsdWUoYml0d2lzZV9jYXN0PHZvaWQqPih2YWx1
ZSkpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBUcnVzdGVkSW1tUHRy
IHdlYWtSZWZlcmVuY2UoR3JhcGgmIGdyYXBoLCBKU0NlbGwqIGNlbGwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGdyYXBoLm1fcGxhbi53ZWFrUmVmZXJlbmNlcy5hZGRMYXppbHkoY2VsbCk7Cisg
ICAgICAgICAgICByZXR1cm4gVHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8c2l6ZV90PihjZWxs
KSk7CisgICAgICAgIH0KKworICAgICAgICBvcGVyYXRvciBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cigpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKworICAgICAgICBpbnRwdHJfdCBh
c0ludHB0cigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlLmFzSW50cHRy
KCk7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyIG1fdmFsdWU7CisKKyAgICB9OworCiAgICAgYm9vbCBjb21waWxlKCk7CiAg
ICAgCiAgICAgdm9pZCBjcmVhdGVPU1JFbnRyaWVzKCk7CkBAIC05ODIsMTcgKzEwMzQsMTcgQEAg
cHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUob2JqLCBp
bXBsKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3Bl
cmF0aW9uX0VTdCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVN0
IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUp
CiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbVB0cihzdHJ1Y3R1cmUpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKFBfSklUT3BlcmF0aW9uX0VTdFpQIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKKyAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VTdFpQIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIEdQUlJlZyBhcmcy
LCBHUFJSZWcgYXJnMykKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGFyZzIsIGFyZzMpOwogICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQotICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVN0WlAgb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGFyZzIs
IEdQUlJlZyBhcmczKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRP
cGVyYXRpb25fRVN0WlAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBSZWdpc3RlcmVkU3RydWN0
dXJlIHN0cnVjdHVyZSwgc2l6ZV90IGFyZzIsIEdQUlJlZyBhcmczKQogICAgIHsKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJl
KSwgVHJ1c3RlZEltbTMyKGFyZzIpLCBhcmczKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwpAQCAtMTAwMiwxMiArMTA1NCwxMiBAQCBwdWJs
aWM6CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcy
LCBhcmczKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklU
T3BlcmF0aW9uX0VTdFpCIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYnV0dGVyZmx5KQorICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVN0WkIgb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgR1BSUmVnIGFyZzIsIEdQUlJl
ZyBidXR0ZXJmbHkpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBhcmcyLCBidXR0ZXJmbHkpOwogICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQot
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVN0WkIg
b3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGFy
ZzIsIEdQUlJlZyBidXR0ZXJmbHkpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihQX0pJVE9wZXJhdGlvbl9FU3RaQiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCBzaXplX3QgYXJnMiwgR1BSUmVnIGJ1dHRlcmZseSkKICAg
ICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
UHRyKHN0cnVjdHVyZSksIFRydXN0ZWRJbW0zMihhcmcyKSwgYnV0dGVyZmx5KTsKICAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwpAQCAtMTAyMiwx
MiArMTA3NCwxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShhcmcxLCBhcmcyLCBUcnVzdGVkSW1tUHRyKGJ1dHRlcmZseSkpOwogICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQotICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVN0UFMgb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdm9pZCogcG9pbnRl
ciwgc2l6ZV90IHNpemUpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJ
VE9wZXJhdGlvbl9FU3RQUyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFJlZ2lzdGVyZWRTdHJ1
Y3R1cmUgc3RydWN0dXJlLCB2b2lkKiBwb2ludGVyLCBzaXplX3Qgc2l6ZSkKICAgICB7CiAgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVj
dHVyZSksIFRydXN0ZWRJbW1QdHIocG9pbnRlciksIFRydXN0ZWRJbW1QdHIoc2l6ZSkpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAg
fQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVN0
U1Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90
IGluZGV4LCBzaXplX3Qgc2l6ZSkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KFBfSklUT3BlcmF0aW9uX0VTdFNTIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgUmVnaXN0ZXJl
ZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIHNpemVfdCBpbmRleCwgc2l6ZV90IHNpemUpCiAgICAgewog
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihz
dHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKGluZGV4KSwgVHJ1c3RlZEltbVB0cihzaXplKSk7CiAg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKQEAg
LTEwNDQsNyArMTA5Niw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQs
IEpTQ2VsbCogY2VsbCkKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGNlbGwpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHI6OndlYWtSZWZlcmVuY2UobV9qaXQuZ3JhcGgo
KSwgY2VsbCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19K
SVRPcGVyYXRpb25fRUNaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyKQpAQCAtMTA1OSw3ICsxMTExLDcgQEAgcHVibGljOgogICAgIH0KICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKc2NDIG9wZXJhdGlv
biwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEpTQ2VsbCogY2VsbCkKICAgICB7Ci0gICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRy
KGNlbGwpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IFRydXN0ZWRJbW1QdHI6OndlYWtSZWZlcmVuY2UobV9qaXQuZ3JhcGgoKSwgY2VsbCkpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAg
fQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUlj
ZiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZy
YW1lKQpAQCAtMTA2Nyw0NiArMTExOSw0NiBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGlubGluZUNhbGxGcmFtZSkpOwog
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAg
ICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25f
RVN0IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FU3Qgb3BlcmF0
aW9uLCBHUFJSZWcgcmVzdWx0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkKICAgICB7
CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRy
KHN0cnVjdHVyZSkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdEpzY1N5bXRhYkogb3BlcmF0
aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHNjb3BlLCBT
eW1ib2xUYWJsZSogdGFibGUsIFRydXN0ZWRJbW02NCBpbml0aWFsVmFsdWUpCisgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FU3RKc2NTeW10YWJKIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIEdQ
UlJlZyBzY29wZSwgU3ltYm9sVGFibGUqIHRhYmxlLCBUcnVzdGVkSW1tNjQgaW5pdGlhbFZhbHVl
KQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0
ZWRJbW1QdHIoc3RydWN0dXJlKSwgc2NvcGUsIFRydXN0ZWRJbW1QdHIodGFibGUpLCBpbml0aWFs
VmFsdWUpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbVB0cihzdHJ1Y3R1cmUpLCBzY29wZSwgVHJ1c3RlZEltbVB0cjo6d2Vha1JlZmVyZW5jZSht
X2ppdC5ncmFwaCgpLCB0YWJsZSksIGluaXRpYWxWYWx1ZSk7CiAgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAjZWxzZQotICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRVN0SnNjU3ltdGFi
SiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBHUFJSZWcg
c2NvcGUsIFN5bWJvbFRhYmxlKiB0YWJsZSwgVHJ1c3RlZEltbTMyIHRhZywgVHJ1c3RlZEltbTMy
IHBheWxvYWQpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJh
dGlvbl9FU3RKc2NTeW10YWJKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgUmVnaXN0ZXJlZFN0
cnVjdHVyZSBzdHJ1Y3R1cmUsIEdQUlJlZyBzY29wZSwgU3ltYm9sVGFibGUqIHRhYmxlLCBUcnVz
dGVkSW1tMzIgdGFnLCBUcnVzdGVkSW1tMzIgcGF5bG9hZCkKICAgICB7Ci0gICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIHNj
b3BlLCBUcnVzdGVkSW1tUHRyKHRhYmxlKSwgcGF5bG9hZCwgdGFnKTsKKyAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgc2Nv
cGUsIFRydXN0ZWRJbW1QdHI6OndlYWtSZWZlcmVuY2UobV9qaXQuZ3JhcGgoKSwgdGFibGUpLCBw
YXlsb2FkLCB0YWcpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQogI2VuZGlmCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FU3RaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGtub3duTGVuZ3RoKQorICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRVN0WiBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCB1bnNpZ25lZCBrbm93bkxl
bmd0aCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShU
cnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0ZWRJbW0zMihrbm93bkxlbmd0aCkpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAg
fQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRVN0
Wlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWdu
ZWQga25vd25MZW5ndGgsIHVuc2lnbmVkIG1pbkNhcGFjaXR5KQorICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRVN0Wlogb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgdW5zaWduZWQga25vd25MZW5n
dGgsIHVuc2lnbmVkIG1pbkNhcGFjaXR5KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgVHJ1c3RlZEltbTMy
KGtub3duTGVuZ3RoKSwgVHJ1c3RlZEltbTMyKG1pbkNhcGFjaXR5KSk7CiAgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FU3RaIG9wZXJhdGlv
biwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBsZW5ndGgpCisg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FU3RaIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIEdQ
UlJlZyBsZW5ndGgpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBsZW5ndGgpOwogICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRVN0Wlogb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIGxlbmd0aCwgdW5z
aWduZWQgbWluQ2FwYWNpdHkpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihD
X0pJVE9wZXJhdGlvbl9FU3RaWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgc3RydWN0dXJlLCBHUFJSZWcgbGVuZ3RoLCB1bnNpZ25lZCBtaW5DYXBhY2l0eSkK
ICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVk
SW1tUHRyKHN0cnVjdHVyZSksIGxlbmd0aCwgVHJ1c3RlZEltbTMyKG1pbkNhcGFjaXR5KSk7CiAg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAg
ICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9F
SnNzU3Qgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJh
dGlvbl9FSnNzU3Qgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgUmVnaXN0
ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsKICAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwpAQCAtMTE0
MCwxMyArMTE5MiwxMyBAQCBwdWJsaWM6CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKFNfSklUT3BlcmF0aW9uX0VHQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEdQUlJlZyBhcmcyKQogICAgIHsKLSAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0
KSwgYXJnMik7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVz
dGVkSW1tUHRyOjp3ZWFrUmVmZXJlbmNlKG1faml0LmdyYXBoKCksIGdsb2JhbE9iamVjdCksIGFy
ZzIpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CiAgICAgfQogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9w
ZXJhdGlvbl9FR0Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBHUFJSZWcgYXJnMikKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdCksIGFyZzIpOworICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cjo6d2Vh
a1JlZmVyZW5jZShtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3QpLCBhcmcyKTsKICAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIApA
QCAtMTE3MCw3ICsxMjIyLDcgQEAgcHVibGljOgogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FQyBvcGVyYXRpb24sIEpTQ2VsbCogYXJnMSkKICAg
ICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
UHRyKGFyZzEpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRy
dXN0ZWRJbW1QdHI6OndlYWtSZWZlcmVuY2UobV9qaXQuZ3JhcGgoKSwgYXJnMSkpOwogICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KIApAQCAtMTE5NywxMiArMTI0
OSwxMiBAQCBwdWJsaWM6CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oVl9KSVRPcGVyYXRpb25fRUNDIG9wZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEpTQ2VsbCogYXJn
MikKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
LCBUcnVzdGVkSW1tUHRyKGFyZzIpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHI6OndlYWtSZWZlcmVuY2UobV9qaXQuZ3JhcGgo
KSwgYXJnMikpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0K
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VDQyBv
cGVyYXRpb24sIEpTQ2VsbCogYXJnMSwgR1BSUmVnIGFyZzIpCiAgICAgewotICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihhcmcxKSwgYXJnMik7
CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRy
Ojp3ZWFrUmVmZXJlbmNlKG1faml0LmdyYXBoKCksIGFyZzEpLCBhcmcyKTsKICAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAKQEAgLTEyNzMsMTMgKzEzMjUsMTMg
QEAgcHVibGljOgogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9w
ZXJhdGlvbl9FSnNjQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBKU0Nl
bGwqIGNlbGwpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUmVmZXJlbmNlKG1faml0
LmdyYXBoKCksIGNlbGwpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKc2NDSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQs
IEdQUlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwsIEdQUlJlZyBhcmcyKQogICAgIHsKLSAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2Vs
bCksIGFyZzIpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgVHJ1c3RlZEltbVB0cjo6d2Vha1JlZmVyZW5jZShtX2ppdC5ncmFwaCgpLCBjZWxsKSwgYXJn
Mik7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0
KTsKICAgICB9CiAKQEAgLTE0NzQsNyArMTUyNiw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FQyBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHQsIEpTQ2VsbCogY2VsbCkKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGNlbGwpKTsKKyAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHI6OndlYWtSZWZlcmVu
Y2UobV9qaXQuZ3JhcGgoKSwgY2VsbCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUNaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwg
R1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQpAQCAtMTU0NCw3ICsxNTk2LDcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAg
ICAgfQogCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlv
bl9FU3RKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQ
UlJlZyBhcmcyKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVy
YXRpb25fRVN0SiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
c3RydWN0dXJlLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGFyZzIpOwogICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CkBAIC0xNTUy
LDcgKzE2MDQsNyBAQCBwdWJsaWM6CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKENfSklUT3BlcmF0aW9uX0VHSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEdQUlJlZyBhcmcxKQogICAgIHsKLSAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwg
YXJnMSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVk
SW1tUHRyOjp3ZWFrUmVmZXJlbmNlKG1faml0LmdyYXBoKCksIGdsb2JhbE9iamVjdCksIGFyZzEp
OwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7
CiAgICAgfQogCkBAIC0xOTAwLDcgKzE5NTIsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oRF9KSVRPcGVyYXRpb25fRyBvcGVyYXRpb24sIEZQ
UlJlZyByZXN1bHQsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgewotICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50cyhUcnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdCkpOworICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50cyhUcnVzdGVkSW1tUHRyOjp3ZWFrUmVmZXJlbmNlKG1f
aml0LmdyYXBoKCksIGdsb2JhbE9iamVjdCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oWl9KSVRPcGVyYXRpb25fRCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQs
IEZQUlJlZyBhcmcxKQpAQCAtMjAwOSw3ICsyMDYxLDcgQEAgcHVibGljOgogCiAgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FQyBvcGVyYXRpb24sIEpT
VmFsdWVSZWdzIHJlc3VsdCwgSlNDZWxsKiBjZWxsKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoY2VsbCkpOworICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cjo6d2Vha1JlZmVy
ZW5jZShtX2ppdC5ncmFwaCgpLCBjZWxsKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsK
ICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlv
bl9FQ1ogb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcg
YXJnMikKQEAgLTIwMTksMTIgKzIwNzEsMTIgQEAgcHVibGljOgogICAgIH0KICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKc2NDIG9wZXJhdGlvbiwg
SlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJnMSwgSlNDZWxsKiBjZWxsKQogICAgIHsKLSAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1Q
dHIoY2VsbCkpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgVHJ1c3RlZEltbVB0cjo6d2Vha1JlZmVyZW5jZShtX2ppdC5ncmFwaCgpLCBjZWxsKSk7CiAg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxv
YWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNjQ0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBHUFJSZWcgYXJnMSwgSlNDZWxsKiBjZWxsLCBKU1ZhbHVlUmVncyBhcmcyKQogICAgIHsK
LSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJ
bW1QdHIoY2VsbCksIEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzIucGF5bG9hZEdQUigpLCBhcmcy
LnRhZ0dQUigpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIFRydXN0ZWRJbW1QdHI6OndlYWtSZWZlcmVuY2UobV9qaXQuZ3JhcGgoKSwgY2VsbCksIEVB
QklfMzJCSVRfRFVNTVlfQVJHIGFyZzIucGF5bG9hZEdQUigpLCBhcmcyLnRhZ0dQUigpKTsKICAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAg
IH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VH
UmVvSiBvcGVyYXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBh
cmcyLCBKU1ZhbHVlUmVncyBhcmczKQpAQCAtMjEwOSw3ICsyMTYxLDcgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAg
fQogCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9F
U3RKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTVmFs
dWVSZWdzIGFyZzIpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9w
ZXJhdGlvbl9FU3RKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBzdHJ1Y3R1cmUsIEpTVmFsdWVSZWdzIGFyZzIpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBhcmcyLnBh
eWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKQEAgLTIxMTcsNyArMjE2OSw3IEBAIHB1YmxpYzoK
IAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUdK
IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZVJlZ3MgYXJnMSkKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdCksIGFyZzEucGF5bG9hZEdQUigp
LCBhcmcxLnRhZ0dQUigpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKFRydXN0ZWRJbW1QdHI6OndlYWtSZWZlcmVuY2UobV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2Jq
ZWN0KSwgYXJnMS5wYXlsb2FkR1BSKCksIGFyZzEudGFnR1BSKCkpOwogICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCkBAIC0yNjY3
LDcgKzI3MTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBl
ZEFycmF5KEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJvcGVydHksIE5vZGUqLCBUeXBlZEFycmF5VHlw
ZSk7CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPbkZsb2F0VHlwZWRBcnJheShOb2RlKiwgVHlw
ZWRBcnJheVR5cGUpOwogICAgIHZvaWQgY29tcGlsZVB1dEJ5VmFsRm9yRmxvYXRUeXBlZEFycmF5
KEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJvcGVydHksIE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7Ci0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzVHlwZT4gdm9pZCBjb21waWxlTmV3RnVuY3Rpb25D
b21tb24oR1BSUmVnLCBTdHJ1Y3R1cmUqLCBHUFJSZWcsIEdQUlJlZywgR1BSUmVnLCBNYWNyb0Fz
c2VtYmxlcjo6SnVtcExpc3QmLCBzaXplX3QsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIHB0cmRpZmZf
dCwgcHRyZGlmZl90LCBwdHJkaWZmX3QpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5
cGU+IHZvaWQgY29tcGlsZU5ld0Z1bmN0aW9uQ29tbW9uKEdQUlJlZywgUmVnaXN0ZXJlZFN0cnVj
dHVyZSwgR1BSUmVnLCBHUFJSZWcsIEdQUlJlZywgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0Jiwg
c2l6ZV90LCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBwdHJkaWZmX3QsIHB0cmRpZmZfdCwgcHRyZGlm
Zl90KTsKICAgICB2b2lkIGNvbXBpbGVOZXdGdW5jdGlvbihOb2RlKik7CiAgICAgdm9pZCBjb21w
aWxlU2V0RnVuY3Rpb25OYW1lKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVGb3J3YXJkVmFyYXJn
cyhOb2RlKik7CkBAIC0yNzUzLDEzICsyODA1LDEzIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDbGFzc1R5cGU+Ci0gICAgdm9pZCBlbWl0QWxsb2NhdGVEZXN0cnVj
dGlibGVPYmplY3QoR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIAorICAg
IHZvaWQgZW1pdEFsbG9jYXRlRGVzdHJ1Y3RpYmxlT2JqZWN0KEdQUlJlZyByZXN1bHRHUFIsIFJl
Z2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCAKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIx
LCBHUFJSZWcgc2NyYXRjaEdQUjIsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYgc2xvd1BhdGgp
CiAgICAgewotICAgICAgICBtX2ppdC5lbWl0QWxsb2NhdGVEZXN0cnVjdGlibGVPYmplY3Q8Q2xh
c3NUeXBlPihyZXN1bHRHUFIsIHN0cnVjdHVyZSwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBz
bG93UGF0aCk7CisgICAgICAgIG1faml0LmVtaXRBbGxvY2F0ZURlc3RydWN0aWJsZU9iamVjdDxD
bGFzc1R5cGU+KHJlc3VsdEdQUiwgc3RydWN0dXJlLmdldCgpLCBzY3JhdGNoR1BSMSwgc2NyYXRj
aEdQUjIsIHNsb3dQYXRoKTsKICAgICB9CiAKLSAgICB2b2lkIGVtaXRBbGxvY2F0ZVJhd09iamVj
dChHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1cmUqLCBHUFJSZWcgc3RvcmFnZUdQUiwgdW5zaWdu
ZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCk7CisgICAgdm9pZCBlbWl0QWxs
b2NhdGVSYXdPYmplY3QoR1BSUmVnIHJlc3VsdEdQUiwgUmVnaXN0ZXJlZFN0cnVjdHVyZSwgR1BS
UmVnIHN0b3JhZ2VHUFIsIHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCB2ZWN0b3JMZW5n
dGgpOwogICAgIAogICAgIHZvaWQgZW1pdEdldExlbmd0aChJbmxpbmVDYWxsRnJhbWUqLCBHUFJS
ZWcgbGVuZ3RoR1BSLCBib29sIGluY2x1ZGVUaGlzID0gZmFsc2UpOwogICAgIHZvaWQgZW1pdEdl
dExlbmd0aChDb2RlT3JpZ2luLCBHUFJSZWcgbGVuZ3RoR1BSLCBib29sIGluY2x1ZGVUaGlzID0g
ZmFsc2UpOwpAQCAtMzc3NSw3ICszODI3LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgU3RydWN0dXJl
TG9jYXRpb25UeXBlPgogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nT2JqZWN0
Rm9yU3RydWN0dXJlKEVkZ2UgZWRnZSwgU3RydWN0dXJlTG9jYXRpb25UeXBlIHN0cnVjdHVyZUxv
Y2F0aW9uKQogewogICAgIFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0U3RydWN0dXJlID0KLSAgICAg
ICAgbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykt
PnN0cmluZ09iamVjdFN0cnVjdHVyZSgpOworICAgICAgICBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVy
U3RydWN0dXJlKG1faml0Lmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2Vt
YW50aWMpLT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSkuZ2V0KCk7CiAgICAgCiAgICAgaWYgKCFt
X3N0YXRlLmZvck5vZGUoZWRnZSkubV9zdHJ1Y3R1cmUuaXNTdWJzZXRPZihTdHJ1Y3R1cmVTZXQo
c3RyaW5nT2JqZWN0U3RydWN0dXJlKSkpIHsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJl
ZHVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjExMDA1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTQwLDcgKzU0MCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgIGlmIChtX25vZGUtPm9wKCkg
PT0gUmVnRXhwRXhlYykgewogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAg
ICAgICAgICAgICAgU3RydWN0dXJlU2V0KiBzdHJ1Y3R1cmVTZXQgPSBtX2dyYXBoLmFkZFN0cnVj
dHVyZVNldChzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0
dXJlU2V0IHN0cnVjdHVyZVNldCA9IG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHN0cnVjdHVyZSk7
CiAKICAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGFuIGFycmF5IG1vZGVsaW5nIHRoZSBK
UyBhcnJheSB0aGF0IHdlIHdpbGwgdHJ5IHRvIGFsbG9jYXRlLiBUaGlzIGlzCiAgICAgICAgICAg
ICAgICAgICAgIC8vIGJhc2ljYWxseSBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkgYnV0IG92ZXIg
QysrIHN0cmluZ3MgaW5zdGVhZCBvZiBKU1N0cmluZ3MuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5jcHAJKHJl
dmlzaW9uIDIxMTAwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJl
QWJzdHJhY3RWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDEwICs5NywxMCBAQCB2b2lk
IFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om9ic2VydmVUcmFuCiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gdmVjdG9yLnNpemUoKTsgaS0tOykgewogICAgICAgICBBU1NFUlQoIXZlY3RvcltpXS5wcmV2
aW91cy0+ZGZnU2hvdWxkV2F0Y2goKSk7CiAKLSAgICAgICAgaWYgKCFtX3NldC5jb250YWlucyh2
ZWN0b3JbaV0ucHJldmlvdXMpKQorICAgICAgICBpZiAoIW1fc2V0LmNvbnRhaW5zKHZlY3Rvcltp
XS5wcmV2aW91cy5nZXQoKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCi0gICAg
ICAgIG5ld1N0cnVjdHVyZXMuYWRkKHZlY3RvcltpXS5uZXh0KTsKKyAgICAgICAgbmV3U3RydWN0
dXJlcy5hZGQodmVjdG9yW2ldLm5leHQuZ2V0KCkpOwogICAgIH0KICAgICAKICAgICBpZiAoIW1f
c2V0Lm1lcmdlKG5ld1N0cnVjdHVyZXMpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAJKHJl
dmlzaW9uIDIxMTAwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJl
UmVnaXN0cmF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCwyMCArNzQsMjAgQEAg
cHVibGljOgogICAgICAgICAgICAgZm9yIChhdXRvKiBub2RlIDogKmJsb2NrKSB7CiAgICAgICAg
ICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBDaGVj
a1N0cnVjdHVyZToKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0QXJlUmVnaXN0ZXJlZChub2Rl
LT5zdHJ1Y3R1cmVTZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydEFyZVJlZ2lzdGVy
ZWQobm9kZS0+c3RydWN0dXJlU2V0KCkuZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjYXNlIE5ld09iamVjdDoKICAg
ICAgICAgICAgICAgICBjYXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6CiAgICAgICAgICAgICAgICAg
Y2FzZSBOZXdTdHJpbmdPYmplY3Q6Ci0gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0
dXJlKG5vZGUtPnN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1
Y3R1cmUobm9kZS0+c3RydWN0dXJlKCkuZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjYXNlIFB1dFN0cnVjdHVyZToK
ICAgICAgICAgICAgICAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgogICAgICAgICAg
ICAgICAgIGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKLSAgICAgICAgICAgICAgICAg
ICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91cyk7Ci0gICAg
ICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4
dCk7CisgICAgICAgICAgICAgICAgICAgIC8vcmVnaXN0ZXJTdHJ1Y3R1cmUobm9kZS0+dHJhbnNp
dGlvbigpLT5wcmV2aW91cyk7CisgICAgICAgICAgICAgICAgICAgIC8vcmVnaXN0ZXJTdHJ1Y3R1
cmUobm9kZS0+dHJhbnNpdGlvbigpLT5uZXh0KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgICAgICAgICBjYXNlIEdldEdldHRlclNldHRlckJ5T2Zmc2V0OgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUcmFuc2l0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RyYW5zaXRpb24uY3BwCShyZXZpc2lvbiAy
MTEwMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RyYW5zaXRpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
REZHIHsKIAogdm9pZCBUcmFuc2l0aW9uOjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQs
IER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAogewotICAgIG91dC5wcmludChwb2ludGVyRHVt
cEluQ29udGV4dChwcmV2aW91cywgY29udGV4dCksICIgLT4gIiwgcG9pbnRlckR1bXBJbkNvbnRl
eHQobmV4dCwgY29udGV4dCkpOworICAgIG91dC5wcmludChwb2ludGVyRHVtcEluQ29udGV4dChw
cmV2aW91cy5nZXQoKSwgY29udGV4dCksICIgLT4gIiwgcG9pbnRlckR1bXBJbkNvbnRleHQobmV4
dC5nZXQoKSwgY29udGV4dCkpOwogfQogCiB2b2lkIFRyYW5zaXRpb246OmR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHJhbnNp
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHJhbnNp
dGlvbi5oCShyZXZpc2lvbiAyMTEwMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1RyYW5zaXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5B
QkxFKERGR19KSVQpCiAKKyNpbmNsdWRlICJERkdSZWdpc3RlcmVkU3RydWN0dXJlLmgiCiAjaW5j
bHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC0z
OCwxNiArMzksMTIgQEAgc3RydWN0IER1bXBDb250ZXh0OwogbmFtZXNwYWNlIERGRyB7CiAKIHN0
cnVjdCBUcmFuc2l0aW9uIHsKLSAgICBTdHJ1Y3R1cmUqIHByZXZpb3VzOwotICAgIFN0cnVjdHVy
ZSogbmV4dDsKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHByZXZpb3VzOworICAgIFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmUgbmV4dDsKICAgICAKLSAgICBUcmFuc2l0aW9uKCkKLSAgICAgICAgOiBwcmV2
aW91cyhudWxscHRyKQotICAgICAgICAsIG5leHQobnVsbHB0cikKLSAgICB7Ci0gICAgfQorICAg
IFRyYW5zaXRpb24oKSA9IGRlZmF1bHQ7CiAgICAgCi0gICAgVHJhbnNpdGlvbihTdHJ1Y3R1cmUq
IHByZXZpb3VzLCBTdHJ1Y3R1cmUqIG5leHQpCisgICAgVHJhbnNpdGlvbihSZWdpc3RlcmVkU3Ry
dWN0dXJlIHByZXZpb3VzLCBSZWdpc3RlcmVkU3RydWN0dXJlIG5leHQpCiAgICAgICAgIDogcHJl
dmlvdXMocHJldmlvdXMpCiAgICAgICAgICwgbmV4dChuZXh0KQogICAgIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1Bo
YXNlLmNwcAkocmV2aXNpb24gMjExMDA1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDY1LDIzICs0
NjUsMjMgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAotICAg
IHZvaWQgbm90aWNlU3RydWN0dXJlQ2hlY2soVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgdm9pZCBub3RpY2VTdHJ1Y3R1cmVDaGVjayhWYXJp
YWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlLCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkK
ICAgICB7Ci0gICAgICAgIEhhc2hNYXA8VmFyaWFibGVBY2Nlc3NEYXRhKiwgQ2hlY2tEYXRhPjo6
QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZCh2YXJpYWJsZSwgQ2hlY2tEYXRhKHN0cnVjdHVy
ZSkpOworICAgICAgICBIYXNoTWFwPFZhcmlhYmxlQWNjZXNzRGF0YSosIENoZWNrRGF0YT46OkFk
ZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQodmFyaWFibGUsIENoZWNrRGF0YShzdHJ1Y3R1cmUu
Z2V0KCkpKTsKICAgICAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICBpZiAocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5tX3N0cnVjdHVyZSA9PSBz
dHJ1Y3R1cmUpCisgICAgICAgIGlmIChyZXN1bHQuaXRlcmF0b3ItPnZhbHVlLm1fc3RydWN0dXJl
ID09IHN0cnVjdHVyZS5nZXQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZS5tX3N0cnVjdHVyZSA9IDA7CiAgICAgfQogICAgIAotICAgIHZvaWQg
bm90aWNlU3RydWN0dXJlQ2hlY2soVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSwgY29uc3Qg
U3RydWN0dXJlU2V0JiBzZXQpCisgICAgdm9pZCBub3RpY2VTdHJ1Y3R1cmVDaGVjayhWYXJpYWJs
ZUFjY2Vzc0RhdGEqIHZhcmlhYmxlLCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0IHNldCkKICAgICB7
CiAgICAgICAgIGlmIChzZXQuc2l6ZSgpICE9IDEpIHsKLSAgICAgICAgICAgIG5vdGljZVN0cnVj
dHVyZUNoZWNrKHZhcmlhYmxlLCAwKTsKKyAgICAgICAgICAgIG5vdGljZVN0cnVjdHVyZUNoZWNr
KHZhcmlhYmxlLCBSZWdpc3RlcmVkU3RydWN0dXJlKCkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9Ci0gICAgICAgIG5vdGljZVN0cnVjdHVyZUNoZWNrKHZhcmlhYmxlLCBzZXQub25s
eVN0cnVjdHVyZSgpKTsKKyAgICAgICAgbm90aWNlU3RydWN0dXJlQ2hlY2sodmFyaWFibGUsIHNl
dC5hdCgwKSk7CiAgICAgfQogCiAgICAgdm9pZCBub3RpY2VDaGVja0FycmF5KFZhcmlhYmxlQWNj
ZXNzRGF0YSogdmFyaWFibGUsIEFycmF5TW9kZSBhcnJheU1vZGUpCkBAIC01MDEsMjIgKzUwMSwy
MiBAQCBwcml2YXRlOgogICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmRpc2FibGVDaGVj
a0FycmF5SG9pc3RpbmcoKTsKICAgICB9CiAKLSAgICB2b2lkIG5vdGljZVN0cnVjdHVyZUNoZWNr
QWNjb3VudGluZ0ZvckFycmF5TW9kZShWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB2b2lkIG5vdGljZVN0cnVjdHVyZUNoZWNrQWNjb3VudGlu
Z0ZvckFycmF5TW9kZShWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlLCBSZWdpc3RlcmVkU3Ry
dWN0dXJlIHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAgIEhhc2hNYXA8VmFyaWFibGVBY2Nlc3NE
YXRhKiwgQ2hlY2tEYXRhPjo6aXRlcmF0b3IgcmVzdWx0ID0gbV9tYXAuZmluZCh2YXJpYWJsZSk7
CiAgICAgICAgIGlmIChyZXN1bHQgPT0gbV9tYXAuZW5kKCkpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIGlmICghcmVzdWx0LT52YWx1ZS5tX2FycmF5TW9kZUhvaXN0aW5nT2theSB8fCAh
cmVzdWx0LT52YWx1ZS5tX2FycmF5TW9kZUlzVmFsaWQpCiAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIGlmIChyZXN1bHQtPnZhbHVlLm1fYXJyYXlNb2RlLnN0cnVjdHVyZVdvdWxkUGFzc0Fy
cmF5TW9kZUZpbHRlcmluZyhzdHJ1Y3R1cmUpKQorICAgICAgICBpZiAocmVzdWx0LT52YWx1ZS5t
X2FycmF5TW9kZS5zdHJ1Y3R1cmVXb3VsZFBhc3NBcnJheU1vZGVGaWx0ZXJpbmcoc3RydWN0dXJl
LmdldCgpKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgcmVzdWx0LT52YWx1ZS5kaXNh
YmxlQ2hlY2tBcnJheUhvaXN0aW5nKCk7CiAgICAgfQogCi0gICAgdm9pZCBub3RpY2VTdHJ1Y3R1
cmVDaGVja0FjY291bnRpbmdGb3JBcnJheU1vZGUoVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJs
ZSwgY29uc3QgU3RydWN0dXJlU2V0JiBzZXQpCisgICAgdm9pZCBub3RpY2VTdHJ1Y3R1cmVDaGVj
a0FjY291bnRpbmdGb3JBcnJheU1vZGUoVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSwgUmVn
aXN0ZXJlZFN0cnVjdHVyZVNldCBzZXQpCiAgICAgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgc2V0LnNpemUoKTsgaSsrKQotICAgICAgICAgICAgbm90aWNlU3RydWN0dXJlQ2hl
Y2tBY2NvdW50aW5nRm9yQXJyYXlNb2RlKHZhcmlhYmxlLCBzZXRbaV0pOworICAgICAgICAgICAg
bm90aWNlU3RydWN0dXJlQ2hlY2tBY2NvdW50aW5nRm9yQXJyYXlNb2RlKHZhcmlhYmxlLCBzZXQu
YXQoaSkpOwogICAgIH0KIAogICAgIEhhc2hNYXA8VmFyaWFibGVBY2Nlc3NEYXRhKiwgQ2hlY2tE
YXRhPiBtX21hcDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUu
Y3BwCShyZXZpc2lvbiAyMTEwMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Zh
bGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA5LDcgKzIwOSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICAgICAgICAgIHx8IG5vZGUtPm9yaWdpbi5mb3JFeGl0ICE9IHByZXZpb3Vz
Tm9kZS0+b3JpZ2luLmZvckV4aXQpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFub2RlLT5oYXNTdHJ1Y3R1cmUo
KSB8fCAhIW5vZGUtPnN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICBWQUxJREFURSgobm9k
ZSksICFub2RlLT5oYXNTdHJ1Y3R1cmUoKSB8fCAhIW5vZGUtPnN0cnVjdHVyZSgpLmdldCgpKTsK
ICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFub2RlLT5oYXNDZWxsT3BlcmFuZCgp
IHx8IG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkuaXNDZWxsKCkpOwogICAgICAgICAgICAg
ICAgIFZBTElEQVRFKChub2RlKSwgIW5vZGUtPmhhc0NlbGxPcGVyYW5kKCkgfHwgISFub2RlLT5j
ZWxsT3BlcmFuZCgpLT52YWx1ZSgpKTsKICAgICAgICAgICAgICAgICAKQEAgLTI4NSw3ICsyODUs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKLSAgICAg
ICAgICAgICAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6IG5vZGUtPnN0cnVjdHVy
ZVNldCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
OiBub2RlLT5zdHJ1Y3R1cmVTZXQoKS5nZXQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gVGhpcyBvbmx5IHN1cHBvcnRzIHN0cnVjdHVyZXMgdGhhdCBhcmUgSlNGaW5hbE9iamVjdCBv
ciBKU0FycmF5LgogICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKG5vZGUpLApAQCAtNTYwLDEyICs1NjAsMTIgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgIC8vIENQUyBvbmx5
IGFsbG93cyBvbmUgc3RydWN0dXJlLgotICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9k
ZSksIG5vZGUtPnN0cnVjdHVyZVNldCgpLnNpemUoKSA9PSAxKTsKKyAgICAgICAgICAgICAgICAg
ICAgVkFMSURBVEUoKG5vZGUpLCBub2RlLT5zdHJ1Y3R1cmVTZXQoKS5nZXQoKS5zaXplKCkgPT0g
MSk7CiAKICAgICAgICAgICAgICAgICAgICAgLy8gQ1BTIGRpc2FsbG93cyBpbnQzMiBhbmQgZG91
YmxlIGFycmF5cy4gVGhvc2UgcmVxdWlyZSB3ZWlyZCB0eXBlIGNoZWNrcyBhbmQKICAgICAgICAg
ICAgICAgICAgICAgLy8gY29udmVyc2lvbnMuIFRoZXkgYXJlIG5vdCBuZWVkZWQgaW4gdGhlIERG
RyByaWdodCBub3cuIFdlIHNob3VsZCBhZGQgc3VwcG9ydAogICAgICAgICAgICAgICAgICAgICAv
LyBmb3IgdGhlc2UgaWYgdGhlIERGRyBldmVyIG5lZWRzIGl0LgotICAgICAgICAgICAgICAgICAg
ICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogbm9kZS0+c3RydWN0dXJlU2V0KCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6IG5vZGUtPnN0cnVj
dHVyZVNldCgpLmdldCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9k
ZSksICFoYXNJbnQzMihzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFoYXNEb3VibGUoc3RydWN0dXJlLT5pbmRleGlu
Z1R5cGUoKSkpOwogICAgICAgICAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyMTEwMDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE5Niw3ICsxOTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fcHJvYy5hZGRGYXN0Q29u
c3RhbnQobV90YWdUeXBlTnVtYmVyLT5rZXkoKSk7CiAgICAgICAgIG1fcHJvYy5hZGRGYXN0Q29u
c3RhbnQobV90YWdNYXNrLT5rZXkoKSk7CiAgICAgICAgIAotICAgICAgICBtX291dC5zdG9yZVB0
cihtX291dC5jb25zdEludFB0cihjb2RlQmxvY2soKSksIGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xv
dDo6Y29kZUJsb2NrKSk7CisgICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmNvbnN0SW50UHRy
KGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oY29kZUJsb2NrKCkpKSwgYWRkcmVzc0ZvcihDYWxsRnJh
bWVTbG90Ojpjb2RlQmxvY2spKTsKIAogICAgICAgICAvLyBTdGFjayBPdmVyZmxvdyBDaGVjay4K
ICAgICAgICAgdW5zaWduZWQgZXhpdEZyYW1lU2l6ZSA9IG1fZ3JhcGgucmVxdWlyZWRSZWdpc3Rl
ckNvdW50Rm9yRXhpdCgpICogc2l6ZW9mKFJlZ2lzdGVyKTsKQEAgLTE1NjAsNyArMTU2MCw3IEBA
IHByaXZhdGU6CiAgICAgICAgIG1fb3V0LmJyYW5jaChpc09iamVjdCh2YWx1ZSksIHVzdWFsbHko
Y29udGludWF0aW9uKSwgcmFyZWx5KHNsb3dDYXNlKSk7CiAKICAgICAgICAgbV9vdXQuYXBwZW5k
VG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dS
ZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0
aW9uT2JqZWN0Q29uc3RydWN0b3IpLCBtX2NhbGxGcmFtZSwgbV9vdXQuY29uc3RJbnRQdHIoZ2xv
YmFsT2JqZWN0KSwgdmFsdWUpKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9
IG1fb3V0LmFuY2hvcih2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25PYmpl
Y3RDb25zdHJ1Y3RvciksIG1fY2FsbEZyYW1lLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3QpLCB2
YWx1ZSkpOwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAgbV9v
dXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC0yNjY0LDcgKzI2NjQsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgY2hlY2tTdHJ1Y3R1cmUoCiAgICAgICAgICAgICAgICAg
bV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKSwganNWYWx1ZVZh
bHVlKGNlbGwpLAogICAgICAgICAgICAgICAgIGV4aXRLaW5kLCBtX25vZGUtPnN0cnVjdHVyZVNl
dCgpLAotICAgICAgICAgICAgICAgIFsmXSAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIHsKKyAgICAg
ICAgICAgICAgICBbJl0gKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSB7CiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB3ZWFrU3RydWN0dXJlSUQoc3RydWN0dXJlKTsKICAgICAgICAg
ICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI2ODQsNyArMjY4NCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBjaGVja1N0cnVjdHVyZSgKICAgICAgICAgICAgICAgICBtX291
dC5sb2FkMzIodmFsdWUsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKSwganNWYWx1ZVZhbHVl
KHZhbHVlKSwKICAgICAgICAgICAgICAgICBleGl0S2luZCwgbV9ub2RlLT5zdHJ1Y3R1cmVTZXQo
KSwKLSAgICAgICAgICAgICAgICBbJl0gKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7CisgICAgICAg
ICAgICAgICAgWyZdIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgewogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gd2Vha1N0cnVjdHVyZUlEKHN0cnVjdHVyZSk7CiAgICAgICAgICAg
ICAgICAgfSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CkBAIC0yNzk4
LDggKzI3OTgsOCBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgbV9mdGxTdGF0ZS5qaXRDb2Rl
LT5jb21tb24ubm90aWZ5Q29tcGlsaW5nU3RydWN0dXJlVHJhbnNpdGlvbihtX2dyYXBoLm1fcGxh
biwgY29kZUJsb2NrKCksIG1fbm9kZSk7CiAgICAgICAgIAotICAgICAgICBTdHJ1Y3R1cmUqIG9s
ZFN0cnVjdHVyZSA9IG1fbm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91czsKLSAgICAgICAgU3Ry
dWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBtX25vZGUtPnRyYW5zaXRpb24oKS0+bmV4dDsKKyAgICAg
ICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBvbGRTdHJ1Y3R1cmUgPSBtX25vZGUtPnRyYW5zaXRpb24o
KS0+cHJldmlvdXM7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgbmV3U3RydWN0dXJlID0g
bV9ub2RlLT50cmFuc2l0aW9uKCktPm5leHQ7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQob2xkU3Ry
dWN0dXJlLCBvbGRTdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpID09IG5ld1N0cnVjdHVyZS0+aW5k
ZXhpbmdUeXBlKCkpOwogICAgICAgICBBU1NFUlQob2xkU3RydWN0dXJlLT50eXBlSW5mbygpLmlu
bGluZVR5cGVGbGFncygpID09IG5ld1N0cnVjdHVyZS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxh
Z3MoKSk7CiAgICAgICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09
IG5ld1N0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkpOwpAQCAtMzg5OSwxMCArMzg5OSwxMCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgLy8gd2l0aCBvbmUgb2YgdGhlIGZvbGxvd2luZyBpbmRl
eGluZyBzaGFwZXM6IEludDMyLCBDb250aWd1b3VzLCBEb3VibGUuCiAgICAgICAgICAgICBMVmFs
dWUgc3RydWN0dXJlID0gbV9vdXQuc2VsZWN0KAogICAgICAgICAgICAgICAgIG1fb3V0LmVxdWFs
KGluZGV4aW5nVHlwZSwgbV9vdXQuY29uc3RJbnQzMihBcnJheVdpdGhJbnQzMikpLAotICAgICAg
ICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVG
b3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aEludDMyKSksCisgICAgICAg
ICAgICAgICAgd2Vha1N0cnVjdHVyZShtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9i
amVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5
V2l0aEludDMyKSkpLAogICAgICAgICAgICAgICAgIG1fb3V0LnNlbGVjdChtX291dC5lcXVhbChp
bmRleGluZ1R5cGUsIG1fb3V0LmNvbnN0SW50MzIoQXJyYXlXaXRoQ29udGlndW91cykpLAotICAg
ICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihnbG9iYWxPYmplY3QtPmFycmF5U3Ry
dWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhDb250aWd1b3Vz
KSksCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKGdsb2JhbE9iamVjdC0+
YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aERv
dWJsZSkpKSk7CisgICAgICAgICAgICAgICAgICAgIHdlYWtTdHJ1Y3R1cmUobV9ncmFwaC5yZWdp
c3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBl
RHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhDb250aWd1b3VzKSkpLAorICAgICAgICAgICAgICAg
ICAgICB3ZWFrU3RydWN0dXJlKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0
LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRo
RG91YmxlKSkpKSk7CiAgICAgICAgICAgICBhcnJheVJlc3VsdCA9IGFsbG9jYXRlSlNBcnJheShy
ZXN1bHRMZW5ndGgsIHN0cnVjdHVyZSwgaW5kZXhpbmdUeXBlLCBmYWxzZSwgZmFsc2UpOwogICAg
ICAgICB9CiAKQEAgLTM5OTQsMTMgKzM5OTQsMTMgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAg
IExWYWx1ZSBzY29wZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIFN5bWJv
bFRhYmxlKiB0YWJsZSA9IG1fbm9kZS0+Y2FzdE9wZXJhbmQ8U3ltYm9sVGFibGUqPigpOwotICAg
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9k
ZS0+b3JpZ2luLnNlbWFudGljKS0+YWN0aXZhdGlvblN0cnVjdHVyZSgpOworICAgICAgICBSZWdp
c3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUobV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hY3RpdmF0aW9u
U3RydWN0dXJlKCkpOwogICAgICAgICBKU1ZhbHVlIGluaXRpYWxpemF0aW9uVmFsdWUgPSBtX25v
ZGUtPmluaXRpYWxpemF0aW9uVmFsdWVGb3JBY3RpdmF0aW9uKCk7CiAgICAgICAgIEFTU0VSVChp
bml0aWFsaXphdGlvblZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgaW5pdGlhbGl6YXRpb25WYWx1ZSA9
PSBqc1REWlZhbHVlKCkpOwogICAgICAgICBpZiAodGFibGUtPnNpbmdsZXRvblNjb3BlKCktPmlz
U3RpbGxWYWxpZCgpKSB7CiAgICAgICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IHZtQ2FsbCgK
ICAgICAgICAgICAgICAgICBJbnQ2NCwKLSAgICAgICAgICAgICAgICBtX291dC5vcGVyYXRpb24o
b3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlvbkRpcmVjdCksIG1fY2FsbEZyYW1lLCB3ZWFrUG9pbnRl
cihzdHJ1Y3R1cmUpLAorICAgICAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25D
cmVhdGVBY3RpdmF0aW9uRGlyZWN0KSwgbV9jYWxsRnJhbWUsIHdlYWtTdHJ1Y3R1cmUoc3RydWN0
dXJlKSwKICAgICAgICAgICAgICAgICBzY29wZSwgd2Vha1BvaW50ZXIodGFibGUpLCBtX291dC5j
b25zdEludDY0KEpTVmFsdWU6OmVuY29kZShpbml0aWFsaXphdGlvblZhbHVlKSkpOwogICAgICAg
ICAgICAgc2V0SlNWYWx1ZShjYWxsUmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTQw
MzUsNyArNDAzNSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBbPV0gKGNvbnN0IFZlY3RvcjxM
b2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKAogICAgICAg
ICAgICAgICAgICAgICBvcGVyYXRpb25DcmVhdGVBY3RpdmF0aW9uRGlyZWN0LCBsb2NhdGlvbnNb
MF0uZGlyZWN0R1BSKCksCi0gICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihzdHJ1Y3R1cmUpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksCisgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUuZ2V0KCkpLCBs
b2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cih0YWJsZSksCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShpbml0aWFsaXphdGlvblZhbHVlKSkpOwog
ICAgICAgICAgICAgfSwKQEAgLTQwNjUsMTAgKzQwNjUsMTAgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPQorICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3JhcGgu
cmVnaXN0ZXJTdHJ1Y3R1cmUoCiAgICAgICAgICAgICBpc0dlbmVyYXRvckZ1bmN0aW9uID8gbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5nZW5lcmF0b3JG
dW5jdGlvblN0cnVjdHVyZSgpIDoKICAgICAgICAgICAgIGlzQXN5bmNGdW5jdGlvbiA/IG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXN5bmNGdW5jdGlv
blN0cnVjdHVyZSgpIDoKLSAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9k
ZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25T
dHJ1Y3R1cmUoKSk7CiAgICAgICAgIAogICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CkBAIC00MTI4LDggKzQxMjgsOCBAQCBwcml2YXRlOgogICAgICAgICAvLyB0
aGVtIGJlIGV4cGxpY2l0IGFyZ3VtZW50cyB0byB0aGlzIG5vZGUuCiAgICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDIyMDcKICAgICAgICAgCi0gICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0KLSAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZGlyZWN0QXJndW1lbnRzU3RydWN0dXJl
KCk7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0KKyAgICAgICAgICAg
IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLT5kaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUoKSk7CiAgICAgICAg
IAogICAgICAgICB1bnNpZ25lZCBtaW5DYXBhY2l0eSA9IG1fZ3JhcGguYmFzZWxpbmVDb2RlQmxv
Y2tGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5udW1QYXJhbWV0ZXJzKCkgLSAxOwogICAg
ICAgICAKQEAgLTQxNzEsNyArNDE3MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBbPV0gKGNv
bnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6
R2VuZXJhdG9yPiB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJh
dG9yKAogICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1bWVudHMs
IGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSwK
KyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVy
ZS5nZXQoKSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSwKICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobWluQ2FwYWNpdHkpKTsKICAgICAgICAgICAgIH0s
IGxlbmd0aC52YWx1ZSk7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291
dC5hbmNob3IoY2FsbFJlc3VsdCk7CkBAIC00MjU5LDcgKzQyNTksNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgTFZhbHVlIGFycmF5TGVuZ3RoID0gbG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBsb29wU3RhcnQgPSBtX291dC5uZXdCbG9jaygpOwog
ICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5yZXN0UGFyYW1ldGVyU3RydWN0dXJlKCk7Cisg
ICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0
ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5yZXN0UGFyYW1ldGVyU3RydWN0dXJlKCkpOwogICAg
ICAgICAgICAgQXJyYXlWYWx1ZXMgYXJyYXlWYWx1ZXMgPSBhbGxvY2F0ZVVuaW5pdGlhbGl6ZWRD
b250aWd1b3VzSlNBcnJheShhcnJheUxlbmd0aCwgc3RydWN0dXJlKTsKICAgICAgICAgICAgIExW
YWx1ZSBhcnJheSA9IGFycmF5VmFsdWVzLmFycmF5OwogICAgICAgICAgICAgTFZhbHVlIGJ1dHRl
cmZseSA9IGFycmF5VmFsdWVzLmJ1dHRlcmZseTsKQEAgLTQzMjcsOCArNDMyNyw4IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBzcGVjdWxhdGUobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIG9w
ZXJhbmRJbmRleCkpOwogICAgICAgICAKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
LSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0
dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbigKLSAgICAgICAgICAgIG1fbm9kZS0+
aW5kZXhpbmdUeXBlKCkpOworICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9
IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZv
ckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oCisgICAgICAgICAgICBtX25vZGUtPmluZGV4
aW5nVHlwZSgpKSk7CiAKICAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmlzSGF2aW5nQUJhZFRp
bWUoKSAmJiAhaGFzQW55QXJyYXlTdG9yYWdlKG1fbm9kZS0+aW5kZXhpbmdUeXBlKCkpKSB7CiAg
ICAgICAgICAgICB1bnNpZ25lZCBudW1FbGVtZW50cyA9IG1fbm9kZS0+bnVtQ2hpbGRyZW4oKTsK
QEAgLTQzNzMsNyArNDM3Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghbV9ub2RlLT5udW1D
aGlsZHJlbigpKSB7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbCgKICAgICAgICAgICAg
ICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0VtcHR5QXJyYXkpLCBtX2Nh
bGxGcmFtZSwKLSAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihzdHJ1Y3R1cmUpKSk7
CisgICAgICAgICAgICAgICAgd2Vha1N0cnVjdHVyZShzdHJ1Y3R1cmUpKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCkBAIC00Mzk0LDcgKzQzOTQsNyBAQCBwcml2
YXRlOgogICAgICAgICAKICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbCgKICAgICAgICAg
ICAgIEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXkpLCBtX2NhbGxGcmFt
ZSwKLSAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHN0cnVjdHVyZSksIG1fb3V0LmNvbnN0
SW50UHRyKGJ1ZmZlciksCisgICAgICAgICAgICB3ZWFrU3RydWN0dXJlKHN0cnVjdHVyZSksIG1f
b3V0LmNvbnN0SW50UHRyKGJ1ZmZlciksCiAgICAgICAgICAgICBtX291dC5jb25zdEludFB0ciht
X25vZGUtPm51bUNoaWxkcmVuKCkpKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LnN0b3JlUHRy
KG1fb3V0LmludFB0clplcm8sIG1fb3V0LmFic29sdXRlKHNjcmF0Y2hCdWZmZXItPmFjdGl2ZUxl
bmd0aFB0cigpKSk7CkBAIC00NDM0LDcgKzQ0MzQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPm9yaWdp
bmFsQXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGUoQXJyYXlXaXRoQ29udGlndW91cyk7Cisg
ICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0
ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50
aWMpLT5vcmlnaW5hbEFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlKEFycmF5V2l0aENvbnRp
Z3VvdXMpKTsKICAgICAgICAgICAgIEFycmF5VmFsdWVzIGFycmF5VmFsdWVzID0gYWxsb2NhdGVV
bmluaXRpYWxpemVkQ29udGlndW91c0pTQXJyYXkobGVuZ3RoLCBzdHJ1Y3R1cmUpOwogICAgICAg
ICAgICAgTFZhbHVlIHJlc3VsdCA9IGFycmF5VmFsdWVzLmFycmF5OwogICAgICAgICAgICAgTFZh
bHVlIHN0b3JhZ2UgPSBhcnJheVZhbHVlcy5idXR0ZXJmbHk7CkBAIC00NjU2LDggKzQ2NTYsOCBA
QCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZU5ld0FycmF5QnVmZmVyKCkKICAgICB7CiAgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9j
YXRpb24oCi0gICAgICAgICAgICBtX25vZGUtPmluZGV4aW5nVHlwZSgpKTsKKyAgICAgICAgUmVn
aXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGds
b2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9u
KAorICAgICAgICAgICAgbV9ub2RlLT5pbmRleGluZ1R5cGUoKSkpOwogICAgICAgICAKICAgICAg
ICAgaWYgKCFnbG9iYWxPYmplY3QtPmlzSGF2aW5nQUJhZFRpbWUoKSAmJiAhaGFzQW55QXJyYXlT
dG9yYWdlKG1fbm9kZS0+aW5kZXhpbmdUeXBlKCkpKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBu
dW1FbGVtZW50cyA9IG1fbm9kZS0+bnVtQ29uc3RhbnRzKCk7CkBAIC00Njg2LDcgKzQ2ODYsNyBA
QCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoCiAgICAgICAg
ICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyKSwgbV9j
YWxsRnJhbWUsCi0gICAgICAgICAgICBtX291dC5jb25zdEludFB0cihzdHJ1Y3R1cmUpLCBtX291
dC5jb25zdEludFB0cihtX25vZGUtPnN0YXJ0Q29uc3RhbnQoKSksCisgICAgICAgICAgICB3ZWFr
U3RydWN0dXJlKHN0cnVjdHVyZSksIG1fb3V0LmNvbnN0SW50UHRyKG1fbm9kZS0+c3RhcnRDb25z
dGFudCgpKSwKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKG1fbm9kZS0+bnVtQ29uc3Rh
bnRzKCkpKSk7CiAgICAgfQogCkBAIC00Njk1LDIzICs0Njk1LDIyIEBAIHByaXZhdGU6CiAgICAg
ICAgIExWYWx1ZSBwdWJsaWNMZW5ndGggPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsKICAg
ICAgICAgCiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlw
ZUR1cmluZ0FsbG9jYXRpb24oCi0gICAgICAgICAgICBtX25vZGUtPmluZGV4aW5nVHlwZSgpKTsK
KyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVy
U3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJp
bmdBbGxvY2F0aW9uKAorICAgICAgICAgICAgbV9ub2RlLT5pbmRleGluZ1R5cGUoKSkpOwogICAg
ICAgICAKICAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmlzSGF2aW5nQUJhZFRpbWUoKSAmJiAh
aGFzQW55QXJyYXlTdG9yYWdlKG1fbm9kZS0+aW5kZXhpbmdUeXBlKCkpKSB7CiAgICAgICAgICAg
ICBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlID0gbV9ub2RlLT5pbmRleGluZ1R5cGUoKTsKICAg
ICAgICAgICAgIHNldEpTVmFsdWUoCiAgICAgICAgICAgICAgICAgYWxsb2NhdGVKU0FycmF5KAot
ICAgICAgICAgICAgICAgICAgICBwdWJsaWNMZW5ndGgsIG1fb3V0LmNvbnN0SW50UHRyKGdsb2Jh
bE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGlu
ZGV4aW5nVHlwZSkpLCBtX291dC5jb25zdEludDMyKGluZGV4aW5nVHlwZSkpLmFycmF5KTsKKyAg
ICAgICAgICAgICAgICAgICAgcHVibGljTGVuZ3RoLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3Qt
PmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5
cGUpKSwgbV9vdXQuY29uc3RJbnQzMihpbmRleGluZ1R5cGUpKS5hcnJheSk7CiAgICAgICAgICAg
ICBtdXRhdG9yRmVuY2UoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgTFZhbHVlIHN0cnVjdHVyZVZhbHVlID0gbV9vdXQuc2VsZWN0KAogICAgICAg
ICAgICAgbV9vdXQuYWJvdmVPckVxdWFsKHB1YmxpY0xlbmd0aCwgbV9vdXQuY29uc3RJbnQzMihN
SU5fQVJSQVlfU1RPUkFHRV9DT05TVFJVQ1RJT05fTEVOR1RIKSksCi0gICAgICAgICAgICBtX291
dC5jb25zdEludFB0cigKLSAgICAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0
dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2Up
KSwKLSAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHN0cnVjdHVyZSkpOworICAgICAgICAg
ICAgd2Vha1N0cnVjdHVyZShtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+
YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aEFy
cmF5U3RvcmFnZSkpKSwKKyAgICAgICAgICAgIHdlYWtTdHJ1Y3R1cmUoc3RydWN0dXJlKSk7CiAg
ICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9u
TmV3QXJyYXlXaXRoU2l6ZSksIG1fY2FsbEZyYW1lLCBzdHJ1Y3R1cmVWYWx1ZSwgcHVibGljTGVu
Z3RoLCBtX291dC5pbnRQdHJaZXJvKSk7CiAgICAgfQogCkBAIC00NzIyLDcgKzQ3MjEsNyBAQCBw
cml2YXRlOgogICAgICAgICAKICAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKSkgewogICAgICAgICBjYXNlIEludDMyVXNlOiB7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRs
eSh0eXBlKTsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9n
cmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVD
b25jdXJyZW50bHkodHlwZSkpOwogCiAgICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IGxvd0ludDMy
KG1fbm9kZS0+Y2hpbGQxKCkpOwogCkBAIC00NzgxLDcgKzQ3ODAsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgIFs9XSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBS
ZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKAogICAgICAgICAgICAgICAgICAgICAgICAgb3Bl
cmF0aW9uTmV3VHlwZWRBcnJheVdpdGhTaXplRm9yVHlwZSh0eXBlKSwgbG9jYXRpb25zWzBdLmRp
cmVjdEdQUigpLAotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKHN0cnVjdHVyZSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUuZ2V0KCkp
LCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2Nh
dGlvbnNbMl0uZGlyZWN0R1BSKCkpOwogICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAg
ICAgc2l6ZSwgc3RvcmFnZVZhbHVlKTsKQEAgLTQ4MTMsNyArNDgxMiw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBjb21waWxlQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoKQogICAgIHsKICAgICAgICAg
TFZhbHVlIG9iamVjdCA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIHNldFN0
b3JhZ2UoYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2Uob2JqZWN0LCBtX25vZGUtPnRyYW5zaXRpb24o
KS0+cHJldmlvdXMpKTsKKyAgICAgICAgc2V0U3RvcmFnZShhbGxvY2F0ZVByb3BlcnR5U3RvcmFn
ZShvYmplY3QsIG1fbm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91cy5nZXQoKSkpOwogICAgIH0K
IAogICAgIHZvaWQgY29tcGlsZVJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoKQpAQCAtNDgyNCw3
ICs0ODIzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIHNldFN0b3JhZ2UoCiAgICAg
ICAgICAgICByZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKAotICAgICAgICAgICAgICAgIG9iamVj
dCwgb2xkU3RvcmFnZSwgdHJhbnNpdGlvbi0+cHJldmlvdXMsIHRyYW5zaXRpb24tPm5leHQpKTsK
KyAgICAgICAgICAgICAgICBvYmplY3QsIG9sZFN0b3JhZ2UsIHRyYW5zaXRpb24tPnByZXZpb3Vz
LmdldCgpLCB0cmFuc2l0aW9uLT5uZXh0LmdldCgpKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQg
Y29tcGlsZU51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHkoKQpAQCAtNTI5MCw4ICs1Mjg5LDgg
QEAgcHJpdmF0ZToKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS5jYXNlcy5zaXplKCk7
IGktLTspIHsKICAgICAgICAgICAgIE11bHRpR2V0QnlPZmZzZXRDYXNlIGdldENhc2UgPSBkYXRh
LmNhc2VzW2ldOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gZ2V0Q2FzZS5zZXQoKS5z
aXplKCk7IGotLTspIHsKLSAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdl
dENhc2Uuc2V0KClbal07Ci0gICAgICAgICAgICAgICAgYmFzZVNldC5hZGQoc3RydWN0dXJlKTsK
KyAgICAgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3JhcGgu
cmVnaXN0ZXJTdHJ1Y3R1cmUoZ2V0Q2FzZS5zZXQoKVtqXSk7CisgICAgICAgICAgICAgICAgYmFz
ZVNldC5hZGQoc3RydWN0dXJlLmdldCgpKTsKICAgICAgICAgICAgICAgICBjYXNlcy5hcHBlbmQo
U3dpdGNoQ2FzZSh3ZWFrU3RydWN0dXJlSUQoc3RydWN0dXJlKSwgYmxvY2tzW2ldLCBXZWlnaHQo
MSkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNTM3Miw4ICs1MzcxLDggQEAgcHJp
dmF0ZToKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS52YXJpYW50cy5zaXplKCk7IGkt
LTspIHsKICAgICAgICAgICAgIFB1dEJ5SWRWYXJpYW50IHZhcmlhbnQgPSBkYXRhLnZhcmlhbnRz
W2ldOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gdmFyaWFudC5vbGRTdHJ1Y3R1cmUo
KS5zaXplKCk7IGotLTspIHsKLSAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IHZhcmlhbnQub2xkU3RydWN0dXJlKClbal07Ci0gICAgICAgICAgICAgICAgYmFzZVNldC5hZGQo
c3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVy
ZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKVtqXSk7
CisgICAgICAgICAgICAgICAgYmFzZVNldC5hZGQoc3RydWN0dXJlLmdldCgpKTsKICAgICAgICAg
ICAgICAgICBjYXNlcy5hcHBlbmQoU3dpdGNoQ2FzZSh3ZWFrU3RydWN0dXJlSUQoc3RydWN0dXJl
KSwgYmxvY2tzW2ldLCBXZWlnaHQoMSkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAt
NTQxMyw3ICs1NDEyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBBU1NFUlQodmFyaWFu
dC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCktPnR5cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdz
KCkgPT0gdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3Mo
KSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNp
dGlvbigpLT50eXBlSW5mbygpLnR5cGUoKSA9PSB2YXJpYW50Lm5ld1N0cnVjdHVyZSgpLT50eXBl
SW5mbygpLnR5cGUoKSk7CiAgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmUzMigKLSAgICAgICAg
ICAgICAgICAgICAgd2Vha1N0cnVjdHVyZUlEKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpLCBiYXNl
LCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CisgICAgICAgICAgICAgICAgICAgIHdlYWtT
dHJ1Y3R1cmVJRChtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQubmV3U3RydWN0dXJl
KCkpKSwgYmFzZSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CkBAIC03
NzQ2LDExICs3NzQ1LDExIEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSBpbmRleCA9IG1fb3V0
LmJpdEFuZChtYXNrLCB1bm1hc2tlZEluZGV4KTsKICAgICAgICAgTFZhbHVlIGhhc2hNYXBCdWNr
ZXQgPSBtX291dC5sb2FkNjQobV9vdXQuYmFzZUluZGV4KG1faGVhcHMucHJvcGVydGllcy5hdEFu
eU51bWJlcigpLCBidWZmZXIsIG1fb3V0Lnplcm9FeHQoaW5kZXgsIEludDY0KSwgU2NhbGVFaWdo
dCkpOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBidWNrZXRSZXN1bHQgPSBtX291dC5hbmNob3Io
aGFzaE1hcEJ1Y2tldCk7Ci0gICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5lcXVhbChoYXNoTWFw
QnVja2V0LCBtX291dC5jb25zdEludFB0cihIYXNoTWFwSW1wbDxIYXNoTWFwQnVja2V0PEhhc2hN
YXBCdWNrZXREYXRhS2V5Pj46OmVtcHR5VmFsdWUoKSkpLAorICAgICAgICBtX291dC5icmFuY2go
bV9vdXQuZXF1YWwoaGFzaE1hcEJ1Y2tldCwgbV9vdXQuY29uc3RJbnRQdHIoYml0d2lzZV9jYXN0
PGludHB0cl90PihIYXNoTWFwSW1wbDxIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5
Pj46OmVtcHR5VmFsdWUoKSkpKSwKICAgICAgICAgICAgIHVuc3VyZShub3RQcmVzZW50SW5UYWJs
ZSksIHVuc3VyZShub3RFbXB0eVZhbHVlKSk7CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90
RW1wdHlWYWx1ZSwgbm90RGVsZXRlZFZhbHVlKTsKLSAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0
LmVxdWFsKGhhc2hNYXBCdWNrZXQsIG1fb3V0LmNvbnN0SW50UHRyKEhhc2hNYXBJbXBsPEhhc2hN
YXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+Pjo6ZGVsZXRlZFZhbHVlKCkpKSwKKyAgICAg
ICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKGhhc2hNYXBCdWNrZXQsIG1fb3V0LmNvbnN0SW50
UHRyKGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oSGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNo
TWFwQnVja2V0RGF0YUtleT4+OjpkZWxldGVkVmFsdWUoKSkpKSwKICAgICAgICAgICAgIHVuc3Vy
ZShsb29wQXJvdW5kKSwgdW5zdXJlKG5vdERlbGV0ZWRWYWx1ZSkpOwogCiAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKG5vdERlbGV0ZWRWYWx1ZSwgbG9vcEFyb3VuZCk7CkBAIC04MjIyLDcgKzgyMjEs
OCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21waWxlT3ZlcnJpZGVzSGFzSW5zdGFuY2UoKQog
ICAgIHsKLSAgICAgICAgSlNGdW5jdGlvbiogZGVmYXVsdEhhc0luc3RhbmNlRnVuY3Rpb24gPSBq
c0Nhc3Q8SlNGdW5jdGlvbio+KG1fbm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKSk7CisgICAg
ICAgIEZyb3plblZhbHVlKiBkZWZhdWx0SGFzSW5zdGFuY2VGdW5jdGlvbiA9IG1fbm9kZS0+Y2Vs
bE9wZXJhbmQoKTsKKyAgICAgICAgQVNTRVJUKGRlZmF1bHRIYXNJbnN0YW5jZUZ1bmN0aW9uLT5p
bmhlcml0cyhKU0Z1bmN0aW9uOjppbmZvKCkpKTsKIAogICAgICAgICBMVmFsdWUgY29uc3RydWN0
b3IgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBMVmFsdWUgaGFzSW5zdGFu
Y2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOwpAQCAtODIzMyw3ICs4MjMzLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgLy8gVW5saWtlIGluIHRoZSBERkcsIHdlIGRvbid0IHdvcnJ5IGFi
b3V0IGNsZWFuaW5nIHRoaXMgY29kZSB1cCBmb3IgdGhlIGNhc2Ugd2hlcmUgd2UgaGF2ZSBwcm92
ZW4gdGhlIGhhc0luc3RhbmNlVmFsdWUgaXMgYSBjb25zdGFudCBhcyBCMyBzaG91bGQgZml4IGl0
IGZvciB1cy4KIAogICAgICAgICBWYWx1ZUZyb21CbG9jayBub3REZWZhdWx0SGFzSW5zdGFuY2VS
ZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhblRydWUpOwotICAgICAgICBtX291dC5i
cmFuY2gobV9vdXQubm90RXF1YWwoaGFzSW5zdGFuY2UsIG1fb3V0LmNvbnN0SW50UHRyKGRlZmF1
bHRIYXNJbnN0YW5jZUZ1bmN0aW9uKSksIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1cmUoZGVm
YXVsdEhhc0luc3RhbmNlKSk7CisgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5ub3RFcXVhbCho
YXNJbnN0YW5jZSwgZnJvemVuUG9pbnRlcihkZWZhdWx0SGFzSW5zdGFuY2VGdW5jdGlvbikpLCB1
bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKGRlZmF1bHRIYXNJbnN0YW5jZSkpOwogCiAgICAg
ICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oZGVmYXVsdEhhc0luc3Rh
bmNlLCBjb250aW51YXRpb24pOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBpbXBsZW1lbnRzRGVm
YXVsdEhhc0luc3RhbmNlUmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LnRlc3RJc1plcm8zMigK
QEAgLTg1ODEsNyArODU4MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmUg
PSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBjaGVja1N0cnVjdHVyZSgKICAg
ICAgICAgICAgIHN0cnVjdHVyZSwgbm9WYWx1ZSgpLCBCYWRDYWNoZSwgbV9ub2RlLT5zdHJ1Y3R1
cmVTZXQoKSwKLSAgICAgICAgICAgIFt0aGlzXSAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIHsKKyAg
ICAgICAgICAgIFt0aGlzXSAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIHsKICAgICAg
ICAgICAgICAgICByZXR1cm4gd2Vha1N0cnVjdHVyZShzdHJ1Y3R1cmUpOwogICAgICAgICAgICAg
fSk7CiAgICAgfQpAQCAtODYwNiw3ICs4NjA2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgY29uc3QgU3RydWN0dXJlU2V0JiBzZXQgPSBt
X25vZGUtPnN0cnVjdHVyZVNldCgpOworICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0IHNl
dCA9IG1fbm9kZS0+c3RydWN0dXJlU2V0KCk7CiAKICAgICAgICAgVmVjdG9yPExCYXNpY0Jsb2Nr
LCAxPiBibG9ja3Moc2V0LnNpemUoKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHNldC5z
aXplKCk7IGktLTspCkBAIC04NjE2LDcgKzg2MTYsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAg
ICAgICAgVmVjdG9yPFN3aXRjaENhc2UsIDE+IGNhc2VzKHNldC5zaXplKCkpOwogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBzZXQuc2l6ZSgpOyBpLS07KQotICAgICAgICAgICAgY2FzZXNbaV0g
PSBTd2l0Y2hDYXNlKHdlYWtTdHJ1Y3R1cmUoc2V0W2ldKSwgYmxvY2tzW2ldLCBXZWlnaHQoMSkp
OworICAgICAgICAgICAgY2FzZXNbaV0gPSBTd2l0Y2hDYXNlKHdlYWtTdHJ1Y3R1cmUoc2V0LmF0
KGkpKSwgYmxvY2tzW2ldLCBXZWlnaHQoMSkpOwogICAgICAgICBtX291dC5zd2l0Y2hJbnN0cnVj
dGlvbigKICAgICAgICAgICAgIGxvd0NlbGwobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDAp
KSwgY2FzZXMsIGR1bW15RGVmYXVsdCwgV2VpZ2h0KDApKTsKICAgICAgICAgCkBAIC04NjI3LDcg
Kzg2MjcsNyBAQCBwcml2YXRlOgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBzZXQuc2l6ZSgp
OyBpLS07KSB7CiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhibG9ja3NbaV0sIGkgKyAxIDwg
c2V0LnNpemUoKSA/IGJsb2Nrc1tpICsgMV0gOiBkdW1teURlZmF1bHQpOwogICAgICAgICAgICAg
Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHNldFtpXTsKKyAgICAgICAgICAg
IFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gc2V0LmF0KGkpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBMVmFsdWUgb2JqZWN0OwogICAgICAgICAgICAgTFZhbHVlIGJ1dHRlcmZs
eTsKQEAgLTg3MDksNyArODcwOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAg
ICBbPV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlT
bG93UGF0aDo6R2VuZXJhdG9yPiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5V2l0aEluZGV4aW5nSGVhZGVyQW5kVmVj
dG9yTGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnNbMF0u
ZGlyZWN0R1BSKCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUuZ2V0KCkpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksIGxvY2F0aW9uc1sy
XS5kaXJlY3RHUFIoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAg
ICAgICAgICAgICAgdmVjdG9yTGVuZ3RoLCBidXR0ZXJmbHlWYWx1ZSk7CkBAIC04NzE4LDcgKzg3
MTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgWz1dIChjb25zdCBWZWN0
b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRv
cj4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdl
bmVyYXRvcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3T2Jq
ZWN0V2l0aEJ1dHRlcmZseSwgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJl
KSwgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZS5nZXQoKSksIGxvY2F0
aW9uc1sxXS5kaXJlY3RHUFIoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAg
ICAgICAgICAgICAgICAgICAgYnV0dGVyZmx5VmFsdWUpOwogICAgICAgICAgICAgICAgIH0KQEAg
LTg4OTEsNyArODg5MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSBzY29wZSA9IGxvd0Nl
bGwobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEpKTsKICAgICAgICAgU3ltYm9sVGFibGUq
IHRhYmxlID0gbV9ub2RlLT5jYXN0T3BlcmFuZDxTeW1ib2xUYWJsZSo+KCk7CiAgICAgICAgIEFT
U0VSVCh0YWJsZSA9PSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCktPmNhc3RDb25zdGFu
dDxTeW1ib2xUYWJsZSo+KCkpOwotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YWN0aXZhdGlvblN0
cnVjdHVyZSgpOworICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3Jh
cGgucmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmln
aW4uc2VtYW50aWMpLT5hY3RpdmF0aW9uU3RydWN0dXJlKCkpOwogCiAgICAgICAgIExCYXNpY0Js
b2NrIHNsb3dQYXRoID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgY29u
dGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKQEAgLTg5MTgsNyArODkxOCw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBbPV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykg
LT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKAogICAgICAgICAgICAgICAgICAgICBvcGVyYXRp
b25DcmVhdGVBY3RpdmF0aW9uRGlyZWN0LCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksCi0gICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBs
b2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksCisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUuZ2V0KCkpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BS
KCksCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih0YWJs
ZSksCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSkpOwogICAgICAgICAgICAgfSwgc2NvcGUpOwpAQCAt
OTA0MywxMSArOTA0MywxMiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21waWxlTmV3UmVnZXhw
KCkKICAgICB7Ci0gICAgICAgIFJlZ0V4cCogcmVnZXhwID0gbV9ub2RlLT5jYXN0T3BlcmFuZDxS
ZWdFeHAqPigpOworICAgICAgICBGcm96ZW5WYWx1ZSogcmVnZXhwID0gbV9ub2RlLT5jZWxsT3Bl
cmFuZCgpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChyZWdleHAtPmNlbGwoKS0+aW5oZXJpdHMo
UmVnRXhwOjppbmZvKCkpKTsKICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbCgKICAgICAg
ICAgICAgIHBvaW50ZXJUeXBlKCksCiAgICAgICAgICAgICBtX291dC5vcGVyYXRpb24ob3BlcmF0
aW9uTmV3UmVnZXhwKSwgbV9jYWxsRnJhbWUsCi0gICAgICAgICAgICBtX291dC5jb25zdEludFB0
cihyZWdleHApKTsKKyAgICAgICAgICAgIGZyb3plblBvaW50ZXIocmVnZXhwKSk7CiAgICAgICAg
IAogICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgfQpAQCAtOTE0MCwxMCArOTE0MSwx
MCBAQCBwcml2YXRlOgogICAgICAgICBDYWxsU2l0ZUluZGV4IGNhbGxTaXRlSW5kZXggPSBtX2Z0
bFN0YXRlLmppdENvZGUtPmNvbW1vbi5hZGRDb2RlT3JpZ2luKG1fbm9kZS0+b3JpZ2luLnNlbWFu
dGljKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fY2FsbEZyYW1lLCBwYWNr
ZXQsIG1faGVhcHMuU2hhZG93Q2hpY2tlbl9QYWNrZXRfZnJhbWUpOwotICAgICAgICBtX291dC5z
dG9yZVB0cihtX291dC5jb25zdEludFB0cihTaGFkb3dDaGlja2VuOjpQYWNrZXQ6OnRhaWxNYXJr
ZXIoKSksIHBhY2tldCwgbV9oZWFwcy5TaGFkb3dDaGlja2VuX1BhY2tldF9jYWxsZWUpOworICAg
ICAgICBtX291dC5zdG9yZVB0cihtX291dC5jb25zdEludFB0cihiaXR3aXNlX2Nhc3Q8aW50cHRy
X3Q+KFNoYWRvd0NoaWNrZW46OlBhY2tldDo6dGFpbE1hcmtlcigpKSksIHBhY2tldCwgbV9oZWFw
cy5TaGFkb3dDaGlja2VuX1BhY2tldF9jYWxsZWUpOwogICAgICAgICBtX291dC5zdG9yZTY0KHRo
aXNWYWx1ZSwgcGFja2V0LCBtX2hlYXBzLlNoYWRvd0NoaWNrZW5fUGFja2V0X3RoaXNWYWx1ZSk7
CiAgICAgICAgIG1fb3V0LnN0b3JlUHRyKHNjb3BlLCBwYWNrZXQsIG1faGVhcHMuU2hhZG93Q2hp
Y2tlbl9QYWNrZXRfc2NvcGUpOwotICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5jb25zdElu
dFB0cihjb2RlQmxvY2soKSksIHBhY2tldCwgbV9oZWFwcy5TaGFkb3dDaGlja2VuX1BhY2tldF9j
b2RlQmxvY2spOworICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5jb25zdEludFB0cihiaXR3
aXNlX2Nhc3Q8aW50cHRyX3Q+KGNvZGVCbG9jaygpKSksIHBhY2tldCwgbV9oZWFwcy5TaGFkb3dD
aGlja2VuX1BhY2tldF9jb2RlQmxvY2spOwogICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNv
bnN0SW50MzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLCBwYWNrZXQsIG1faGVhcHMuU2hhZG93Q2hp
Y2tlbl9QYWNrZXRfY2FsbFNpdGVJbmRleCk7CiAgICAgfQogCkBAIC05MjM0LDkgKzkyMzUsOSBA
QCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiAgICAgdm9pZCBjaGVj
a1N0cnVjdHVyZSgKICAgICAgICAgTFZhbHVlIHN0cnVjdHVyZURpc2NyaW1pbmFudCwgY29uc3Qg
Rm9ybWF0dGVkVmFsdWUmIGZvcm1hdHRlZFZhbHVlLCBFeGl0S2luZCBleGl0S2luZCwKLSAgICAg
ICAgY29uc3QgU3RydWN0dXJlU2V0JiBzZXQsIGNvbnN0IEZ1bmN0b3ImIHdlYWtTdHJ1Y3R1cmVE
aXNjcmltaW5hbnQpCisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgc2V0LCBjb25zdCBG
dW5jdG9yJiB3ZWFrU3RydWN0dXJlRGlzY3JpbWluYW50KQogICAgIHsKLSAgICAgICAgaWYgKHNl
dC5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKCFzZXQuc2l6ZSgpKSB7CiAgICAgICAgICAgICB0
ZXJtaW5hdGUoZXhpdEtpbmQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC05
MjQ0LDcgKzkyNDUsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoc2V0LnNpemUoKSA9PSAxKSB7
CiAgICAgICAgICAgICBzcGVjdWxhdGUoCiAgICAgICAgICAgICAgICAgZXhpdEtpbmQsIGZvcm1h
dHRlZFZhbHVlLCAwLAotICAgICAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKHN0cnVjdHVyZURp
c2NyaW1pbmFudCwgd2Vha1N0cnVjdHVyZURpc2NyaW1pbmFudChzZXRbMF0pKSk7CisgICAgICAg
ICAgICAgICAgbV9vdXQubm90RXF1YWwoc3RydWN0dXJlRGlzY3JpbWluYW50LCB3ZWFrU3RydWN0
dXJlRGlzY3JpbWluYW50KHNldC5hdCgwKSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICAKQEAgLTkyNTQsNyArOTI1NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzZXQuc2l6ZSgpIC0gMTsgKytpKSB7CiAgICAgICAgICAg
ICBMQmFzaWNCbG9jayBuZXh0U3RydWN0dXJlID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAg
ICAgIG1fb3V0LmJyYW5jaCgKLSAgICAgICAgICAgICAgICBtX291dC5lcXVhbChzdHJ1Y3R1cmVE
aXNjcmltaW5hbnQsIHdlYWtTdHJ1Y3R1cmVEaXNjcmltaW5hbnQoc2V0W2ldKSksCisgICAgICAg
ICAgICAgICAgbV9vdXQuZXF1YWwoc3RydWN0dXJlRGlzY3JpbWluYW50LCB3ZWFrU3RydWN0dXJl
RGlzY3JpbWluYW50KHNldC5hdChpKSkpLAogICAgICAgICAgICAgICAgIHVuc3VyZShjb250aW51
YXRpb24pLCB1bnN1cmUobmV4dFN0cnVjdHVyZSkpOwogICAgICAgICAgICAgbV9vdXQuYXBwZW5k
VG8obmV4dFN0cnVjdHVyZSk7CiAgICAgICAgIH0KQEAgLTkzNzYsNyArOTM3Nyw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgICAgIEJhZFR5cGUsIGpzVmFsdWVWYWx1ZSh2YWx1ZSksIGVk
Z2Uubm9kZSgpLAogICAgICAgICAgICAgICAgICAgICBtX291dC5ub3RFcXVhbCgKICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQzMih2YWx1ZSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0
dXJlSUQpLAotICAgICAgICAgICAgICAgICAgICAgICAgd2Vha1N0cnVjdHVyZUlEKHR5cGUuc3Ry
dWN0dXJlKCkpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB3ZWFrU3RydWN0dXJlSUQobV9n
cmFwaC5yZWdpc3RlclN0cnVjdHVyZSh0eXBlLnN0cnVjdHVyZSgpKSkpKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIHJldHVybjsKIApAQCAtOTM5NCw3ICs5Mzk1LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAgICAgQmFkVHlwZSwganNWYWx1ZVZhbHVlKHZhbHVlKSwgZWRnZS5u
b2RlKCksCiAgICAgICAgICAgICAgICAgICAgIG1fb3V0Lm5vdEVxdWFsKAogICAgICAgICAgICAg
ICAgICAgICAgICAgbV9vdXQubG9hZDMyKHZhbHVlLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJ
RCksCi0gICAgICAgICAgICAgICAgICAgICAgICB3ZWFrU3RydWN0dXJlSUQodHlwZS5zdHJ1Y3R1
cmUoKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdlYWtTdHJ1Y3R1cmVJRChtX2dyYXBo
LnJlZ2lzdGVyU3RydWN0dXJlKHR5cGUuc3RydWN0dXJlKCkpKSkpOwogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CkBAIC0xMDQ5Myw5ICsxMDQ5
NCw5IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgTFZh
bHVlIGFsbG9jYXRlT2JqZWN0KExWYWx1ZSBhbGxvY2F0b3IsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBMVmFsdWUgYnV0dGVyZmx5LCBMQmFzaWNCbG9jayBzbG93UGF0aCkKKyAgICBMVmFsdWUgYWxs
b2NhdGVPYmplY3QoTFZhbHVlIGFsbG9jYXRvciwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1
cmUsIExWYWx1ZSBidXR0ZXJmbHksIExCYXNpY0Jsb2NrIHNsb3dQYXRoKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFsbG9jYXRlT2JqZWN0KGFsbG9jYXRvciwgbV9vdXQuY29uc3RJbnRQdHIoc3Ry
dWN0dXJlKSwgYnV0dGVyZmx5LCBzbG93UGF0aCk7CisgICAgICAgIHJldHVybiBhbGxvY2F0ZU9i
amVjdChhbGxvY2F0b3IsIHdlYWtTdHJ1Y3R1cmUoc3RydWN0dXJlKSwgYnV0dGVyZmx5LCBzbG93
UGF0aCk7CiAgICAgfQogCiAgICAgTFZhbHVlIGFsbG9jYXRlT2JqZWN0KExWYWx1ZSBhbGxvY2F0
b3IsIExWYWx1ZSBzdHJ1Y3R1cmUsIExWYWx1ZSBidXR0ZXJmbHksIExCYXNpY0Jsb2NrIHNsb3dQ
YXRoKQpAQCAtMTA1ODksNyArMTA1OTAsNyBAQCBwcml2YXRlOgogICAgIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENsYXNzVHlwZT4KICAgICBMVmFsdWUgYWxsb2NhdGVWYXJpYWJsZVNpemVkT2Jq
ZWN0KAotICAgICAgICBMVmFsdWUgc2l6ZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIExWYWx1ZSBi
dXR0ZXJmbHksIExCYXNpY0Jsb2NrIHNsb3dQYXRoKQorICAgICAgICBMVmFsdWUgc2l6ZSwgUmVn
aXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIExWYWx1ZSBidXR0ZXJmbHksIExCYXNpY0Jsb2Nr
IHNsb3dQYXRoKQogICAgIHsKICAgICAgICAgTFZhbHVlIGFsbG9jYXRvciA9IGFsbG9jYXRvckZv
clNpemUoCiAgICAgICAgICAgICAqc3Vic3BhY2VGb3I8Q2xhc3NUeXBlPih2bSgpKSwgc2l6ZSwg
c2xvd1BhdGgpOwpAQCAtMTA2MDUsOSArMTA2MDYsOSBAQCBwcml2YXRlOgogICAgICAgICByZXR1
cm4gYWxsb2NhdGVDZWxsKGFsbG9jYXRvciwgc3RydWN0dXJlLCBzbG93UGF0aCk7CiAgICAgfQog
ICAgIAotICAgIExWYWx1ZSBhbGxvY2F0ZU9iamVjdChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAg
ICBMVmFsdWUgYWxsb2NhdGVPYmplY3QoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpCiAg
ICAgewotICAgICAgICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBKU0ZpbmFsT2JqZWN0OjphbGxv
Y2F0aW9uU2l6ZShzdHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkpOworICAgICAgICBzaXplX3Qg
YWxsb2NhdGlvblNpemUgPSBKU0ZpbmFsT2JqZWN0OjphbGxvY2F0aW9uU2l6ZShzdHJ1Y3R1cmUu
Z2V0KCktPmlubGluZUNhcGFjaXR5KCkpOwogICAgICAgICBNYXJrZWRBbGxvY2F0b3IqIGFsbG9j
YXRvciA9IHN1YnNwYWNlRm9yPEpTRmluYWxPYmplY3Q+KHZtKCkpLT5hbGxvY2F0b3JGb3IoYWxs
b2NhdGlvblNpemUpOwogICAgICAgICAKICAgICAgICAgLy8gRklYTUU6IElmIHRoZSBhbGxvY2F0
b3IgaXMgbnVsbCwgd2UgY291bGQgc2ltcGx5IGVtaXQgYSBub3JtYWwgQyBjYWxsIHRvIHRoZSBh
bGxvY2F0b3IKQEAgLTEwNjMwLDcgKzEwNjMxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFs9
XSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQ
YXRoOjpHZW5lcmF0b3I+IHsKICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxH
ZW5lcmF0b3IoCiAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld09iamVjdCwgbG9jYXRp
b25zWzBdLmRpcmVjdEdQUigpLAotICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7CisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgICAgIH0pOwogICAg
ICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHNsb3dSZXN1bHRW
YWx1ZSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKQEAgLTEwNzMzLDggKzEw
NzM0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxhcmdl
Q2FzZSwgZmFpbENhc2UpOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBsYXJnZVN0cnVjdHVyZSA9
IG1fb3V0LmFuY2hvcigKLSAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKAotICAgICAgICAg
ICAgICAgIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdB
bGxvY2F0aW9uKEFycmF5V2l0aEFycmF5U3RvcmFnZSkpKTsKKyAgICAgICAgICAgIHdlYWtTdHJ1
Y3R1cmUobV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0
dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2Up
KSkpOwogICAgICAgICBtX291dC5qdW1wKHNsb3dDYXNlKTsKICAgICAgICAgCiAgICAgICAgIG1f
b3V0LmFwcGVuZFRvKGZhaWxDYXNlLCBzbG93Q2FzZSk7CkBAIC0xMDc2MywxMiArMTA3NjMsMTIg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0QnV0
dGVyZmx5LCBzbG93QnV0dGVyZmx5KSk7CiAgICAgfQogICAgIAotICAgIEFycmF5VmFsdWVzIGFs
bG9jYXRlVW5pbml0aWFsaXplZENvbnRpZ3VvdXNKU0FycmF5KExWYWx1ZSBwdWJsaWNMZW5ndGgs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIEFycmF5VmFsdWVzIGFsbG9jYXRlVW5pbml0aWFs
aXplZENvbnRpZ3VvdXNKU0FycmF5KExWYWx1ZSBwdWJsaWNMZW5ndGgsIFJlZ2lzdGVyZWRTdHJ1
Y3R1cmUgc3RydWN0dXJlKQogICAgIHsKICAgICAgICAgYm9vbCBzaG91bGRJbml0aWFsaXplRWxl
bWVudHMgPSBmYWxzZTsKICAgICAgICAgYm9vbCBzaG91bGRMYXJnZUFycmF5U2l6ZUNyZWF0ZUFy
cmF5U3RvcmFnZSA9IGZhbHNlOwogICAgICAgICByZXR1cm4gYWxsb2NhdGVKU0FycmF5KAotICAg
ICAgICAgICAgcHVibGljTGVuZ3RoLCBtX291dC5jb25zdEludFB0cihzdHJ1Y3R1cmUpLCBtX291
dC5jb25zdEludDMyKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpLCBzaG91bGRJbml0aWFsaXpl
RWxlbWVudHMsCisgICAgICAgICAgICBwdWJsaWNMZW5ndGgsIHdlYWtTdHJ1Y3R1cmUoc3RydWN0
dXJlKSwgbV9vdXQuY29uc3RJbnQzMihzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSwgc2hvdWxk
SW5pdGlhbGl6ZUVsZW1lbnRzLAogICAgICAgICAgICAgc2hvdWxkTGFyZ2VBcnJheVNpemVDcmVh
dGVBcnJheVN0b3JhZ2UpOwogICAgIH0KICAgICAKQEAgLTEwOTEwLDcgKzEwOTEwLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhtYXNxdWVyYWRlc0Nhc2UpOwog
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlzVHJ1dGh5T2JqZWN0ID0gbV9vdXQu
bm90RXF1YWwoCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSksCisgICAgICAgICAgICAg
ICAgICAgIHdlYWtQb2ludGVyKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksCiAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIobG9hZFN0cnVj
dHVyZSh2YWx1ZSksIG1faGVhcHMuU3RydWN0dXJlX2dsb2JhbE9iamVjdCkpOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKGlzVHJ1dGh5T2Jq
ZWN0KSk7CkBAIC0xMTAwOSw3ICsxMTAwOSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcigKICAgICAgICAgICAgICAgICBt
X291dC5lcXVhbCgKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIobV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwKKyAgICAgICAgICAg
ICAgICAgICAgd2Vha1BvaW50ZXIobV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwKICAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZFB0cihzdHJ1Y3R1
cmUsIG1faGVhcHMuU3RydWN0dXJlX2dsb2JhbE9iamVjdCkpKSk7CiAgICAgICAgICAgICBtX291
dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgIH0KQEAgLTExOTMxLDEyICsxMTkzMSwxMiBA
QCBwcml2YXRlOgogICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbW9kZSA9PSBN
YW51YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgREZHOjppc0NlbGwoZWRnZS51c2VLaW5kKCkpKTsK
ICAgICAgICAgCiAgICAgICAgIGlmIChlZGdlLT5vcCgpID09IEpTQ29uc3RhbnQpIHsKLSAgICAg
ICAgICAgIEpTVmFsdWUgdmFsdWUgPSBlZGdlLT5hc0pTVmFsdWUoKTsKLSAgICAgICAgICAgIGlm
ICghdmFsdWUuaXNDZWxsKCkpIHsKKyAgICAgICAgICAgIEZyb3plblZhbHVlKiB2YWx1ZSA9IGVk
Z2UtPmNvbnN0YW50KCk7CisgICAgICAgICAgICBpZiAoIXZhbHVlLT52YWx1ZSgpLmlzQ2VsbCgp
KSB7CiAgICAgICAgICAgICAgICAgdGVybWluYXRlKFVuY291bnRhYmxlKTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gbV9vdXQuaW50UHRyWmVybzsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHJldHVybiBtX291dC5jb25zdEludFB0cih2YWx1ZS5hc0NlbGwoKSk7CisgICAgICAgICAgICBy
ZXR1cm4gZnJvemVuUG9pbnRlcih2YWx1ZSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAg
IExvd2VyZWROb2RlVmFsdWUgdmFsdWUgPSBtX2pzVmFsdWVWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgp
KTsKQEAgLTEyOTAxLDEwICsxMjkwMSwxMCBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgc3Bl
Y3VsYXRlU3RyaW5nT2JqZWN0Rm9yU3RydWN0dXJlSUQoRWRnZSBlZGdlLCBMVmFsdWUgc3RydWN0
dXJlSUQpCiAgICAgewotICAgICAgICBTdHJ1Y3R1cmUqIHN0cmluZ09iamVjdFN0cnVjdHVyZSA9
Ci0gICAgICAgICAgICBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1h
bnRpYyktPnN0cmluZ09iamVjdFN0cnVjdHVyZSgpOworICAgICAgICBSZWdpc3RlcmVkU3RydWN0
dXJlIHN0cmluZ09iamVjdFN0cnVjdHVyZSA9CisgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVy
U3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
KS0+c3RyaW5nT2JqZWN0U3RydWN0dXJlKCkpOwogICAgICAgICAKLSAgICAgICAgaWYgKGFic3Ry
YWN0U3RydWN0dXJlKGVkZ2UpLmlzU3Vic2V0T2YoU3RydWN0dXJlU2V0KHN0cmluZ09iamVjdFN0
cnVjdHVyZSkpKQorICAgICAgICBpZiAoYWJzdHJhY3RTdHJ1Y3R1cmUoZWRnZSkuaXNTdWJzZXRP
ZihTdHJ1Y3R1cmVTZXQoc3RyaW5nT2JqZWN0U3RydWN0dXJlLmdldCgpKSkpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIAogICAgICAgICBzcGVjdWxhdGUoCkBAIC0xMzY5MCwxOCArMTM2
OTAsMjMgQEAgcHJpdmF0ZToKICAgICBMVmFsdWUgd2Vha1BvaW50ZXIoSlNDZWxsKiBwb2ludGVy
KQogICAgIHsKICAgICAgICAgYWRkV2Vha1JlZmVyZW5jZShwb2ludGVyKTsKLSAgICAgICAgcmV0
dXJuIG1fb3V0LmNvbnN0SW50UHRyKHBvaW50ZXIpOworICAgICAgICByZXR1cm4gbV9vdXQuY29u
c3RHQ1BvaW50ZXIobV9ncmFwaCwgcG9pbnRlcik7CisgICAgfQorCisgICAgTFZhbHVlIGZyb3pl
blBvaW50ZXIoRnJvemVuVmFsdWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3V0
LmNvbnN0R0NQb2ludGVyKHZhbHVlKTsKICAgICB9CiAKLSAgICBMVmFsdWUgd2Vha1N0cnVjdHVy
ZUlEKFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIExWYWx1ZSB3ZWFrU3RydWN0dXJlSUQoUmVn
aXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBhZGRXZWFrUmVmZXJl
bmNlKHN0cnVjdHVyZSk7CiAgICAgICAgIHJldHVybiBtX291dC5jb25zdEludDMyKHN0cnVjdHVy
ZS0+aWQoKSk7CiAgICAgfQogICAgIAotICAgIExWYWx1ZSB3ZWFrU3RydWN0dXJlKFN0cnVjdHVy
ZSogc3RydWN0dXJlKQorICAgIExWYWx1ZSB3ZWFrU3RydWN0dXJlKFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUgc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHdlYWtQb2ludGVyKHN0cnVjdHVy
ZSk7CisgICAgICAgIEFTU0VSVCghIXN0cnVjdHVyZS5nZXQoKSk7CisgICAgICAgIHJldHVybiBt
X291dC5jb25zdEdDUG9pbnRlcihtX2dyYXBoLCBzdHJ1Y3R1cmUuZ2V0KCkpOwogICAgIH0KICAg
ICAKICAgICBUeXBlZFBvaW50ZXIgYWRkcmVzc0ZvcihMVmFsdWUgYmFzZSwgaW50IG9wZXJhbmQs
IHB0cmRpZmZfdCBvZmZzZXQgPSAwKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExPdXRwdXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91
dHB1dC5oCShyZXZpc2lvbiAyMTEwMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE91dHB1dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiRlRM
VmFsdWVGcm9tQmxvY2suaCIKICNpbmNsdWRlICJGVExXZWlnaHQuaCIKICNpbmNsdWRlICJGVExX
ZWlnaHRlZFRhcmdldC5oIgorI2luY2x1ZGUgIkhlYXBDZWxsLmgiCiAjaW5jbHVkZSA8d3RmL09y
ZGVyTWFrZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KIApAQCAtMTA0
LDkgKzEwNSwyOSBAQCBwdWJsaWM6CiAKICAgICBMVmFsdWUgY29uc3RCb29sKGJvb2wgdmFsdWUp
OwogICAgIExWYWx1ZSBjb25zdEludDMyKGludDMyX3QgdmFsdWUpOworCisgICAgTFZhbHVlIGNv
bnN0R0NQb2ludGVyKERGRzo6R3JhcGgmIGdyYXBoLCBKU0NlbGwqIGNlbGwpCisgICAgeworICAg
ICAgICBBU1NFUlQoZ3JhcGgubV9wbGFuLndlYWtSZWZlcmVuY2VzLmNvbnRhaW5zKGNlbGwpKTsK
KworICAgICAgICBpZiAoc2l6ZW9mKHZvaWQqKSA9PSA4KQorICAgICAgICAgICAgcmV0dXJuIGNv
bnN0SW50NjQoYml0d2lzZV9jYXN0PGludHB0cl90PihjZWxsKSk7CisgICAgICAgIHJldHVybiBj
b25zdEludDMyKGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oY2VsbCkpOworICAgIH0KKworICAgIExW
YWx1ZSBjb25zdEdDUG9pbnRlcihERkc6OkZyb3plblZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKHZhbHVlLT52YWx1ZSgpLmlzQ2VsbCgpKTsKKworICAgICAgICBp
ZiAoc2l6ZW9mKHZvaWQqKSA9PSA4KQorICAgICAgICAgICAgcmV0dXJuIGNvbnN0SW50NjQoYml0
d2lzZV9jYXN0PGludHB0cl90Pih2YWx1ZS0+Y2VsbCgpKSk7CisgICAgICAgIHJldHVybiBjb25z
dEludDMyKGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4odmFsdWUtPmNlbGwoKSkpOworICAgIH0KKwog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgTFZhbHVlIGNvbnN0SW50UHRyKFQqIHZhbHVl
KQogICAgIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPEhlYXBDZWxs
LCBUPjo6dmFsdWUsICJUbyB1c2UgYSBHQyBwb2ludGVyLCB0aGUgZ3JhcGggbXVzdCBiZSBhd2Fy
ZSBvZiBpdC4gVXNlIGdjUG9pbnRlciBpbnN0ZWFkIGFuZCBtYWtlIHN1cmUgdGhlIGdyYXBoIGlz
IGF3YXJlIG9mIHRoaXMgcmVmZXJlbmNlLiIpOwogICAgICAgICBpZiAoc2l6ZW9mKHZvaWQqKSA9
PSA4KQogICAgICAgICAgICAgcmV0dXJuIGNvbnN0SW50NjQoYml0d2lzZV9jYXN0PGludHB0cl90
Pih2YWx1ZSkpOwogICAgICAgICByZXR1cm4gY29uc3RJbnQzMihiaXR3aXNlX2Nhc3Q8aW50cHRy
X3Q+KHZhbHVlKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299672</attachid>
            <date>2017-01-24 20:00:50 -0800</date>
            <delta_ts>2017-01-26 14:03:15 -0800</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>244428</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjExMTMyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2NyBA
QAorMjAxNy0wMS0yNCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBIYXJkZW4gaG93IHRoZSBjb21waWxlciByZWZlcmVuY2VzIEdDIG9iamVjdHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NzI3NworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzAxNzk1MDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgU2luY2UgcjIxMDk3MSwgdGhlIERGRy9GVEwgd2lsbCBmbGFzaCBz
YWZlcG9pbnRzIGJlZm9yZQorICAgICAgICBlYWNoIHBoYXNlLiBUaGlzIG1lYW5zIHRoYXQgdGhl
cmUgYXJlIG1vcmUgb3Bwb3J0dW5pdGllcyBmb3IKKyAgICAgICAgYSBHQyB0byBoYXBwZW4gd2hp
bGUgdGhlIGNvbXBpbGVyIGlzIHJ1bm5pbmcuIEJlY2F1c2Ugb2YgdGhpcywKKyAgICAgICAgdGhl
IGNvbXBpbGVyIG11c3QgYmUgdHJhY2sgb2YgYWxsIHRoZSBoZWFwIHBvaW50ZXJzIHRoYXQgYXJl
IHBhcnQKKyAgICAgICAgb2YgdGhlIEdyYXBoIGRhdGEgc3RydWN0dXJlLiBUbyBhY2NvbXBsaXNo
IHRoaXMsIEkndmUgZGVzaWduZWQKKyAgICAgICAgYSBuZXcgdHlwZSBjYWxsZWQgUmVnaXN0ZXJl
ZFN0cnVjdHVyZSB0aGF0IGNhbiBvbmx5IGJlIGNvbnN0cnVjdGVkCisgICAgICAgIGFmdGVyIHRo
ZSBHcmFwaCBiZWNvbWVzIGF3YXJlIG9mIGl0cyB1bmRlcmx5aW5nIFN0cnVjdHVyZSouIEkKKyAg
ICAgICAgZGVzaWduZWQgdGhpcyBuZXcgdHlwZSB0byBoYXZlIHRoZSB0eXBlIHN5c3RlbSBpbiBD
KysgaGVscCB1cyBjYXRjaAorICAgICAgICBlcnJvcnMgd2hlcmUgd2UncmUgbm90IGluZm9ybWlu
ZyB0aGUgZ3JhcGgvcGxhbiBvZiBhIGhlYXAgcG9pbnRlci4KKyAgICAgICAgSSd2ZSBtYWRlIGl0
IGEgY29tcGlsZSBlcnJvciB0byBjcmVhdGUgYW4gT3BJbmZvIHdpdGggYSBwb2ludGVyCisgICAg
ICAgIFQqIHdoZXJlIFQgaW5oZXJpdHMgZnJvbSBIZWFwQ2VsbC4gVGhpcyBlbmNvdXJhZ2VzIGFu
IE9wSW5mbworICAgICAgICB0byBiZSBjcmVhdGVkIHdpdGggZWl0aGVyIGEgRnJvemVuVmFsdWUq
IG9yIGEgUmVnaXN0ZXJlZFN0cnVjdHVyZS4KKyAgICAgICAgSSd2ZSBhZGRlZCBzaW1pbGFyIGNv
bXBpbGUgdGltZSBhc3NlcnRpb25zIGZvciBUcnVzdGVkSW1tUHRyIGluIERGRzo6U3BlY3VsYXRp
dmVKSVQKKyAgICAgICAgYW5kIEZUTDo6T3V0cHV0Ojpjb25zdEludFB0ci4gVGhlc2Ugc3RhdGlj
IGFzc2VydHMgZG9uJ3Qgc2F2ZSB1cyBmcm9tIGFsbCBiYWQKKyAgICAgICAgcHJvZ3JhbXMgYmVj
YXVzZSB0aGVyZSBhcmUgd2F5cyB0byB3cml0ZSBjb2RlIHRoYXQncyBpbmNvcnJlY3QgdGhhdCBj
b21waWxlcywKKyAgICAgICAgYnV0IHRoZSBuZXcgdHlwZXMgZG8gaGVscCB1cyBlbnN1cmUgdGhh
dCB0aGUgbW9zdCBvYnZpb3VzIHdheSBvZiB3cml0aW5nIHRoZQorICAgICAgICBjb2RlIGlzIGNv
cnJlY3QuCisgICAgICAgIAorICAgICAgICBUaGUgcmVhc29uIHRoaXMgcGF0Y2ggaXMgc28gYmln
IGlzIHRoYXQgSSd2ZSBzdHJ1bmcgUmVnaXN0ZXJlZFN0cnVjdHVyZSBhbmQKKyAgICAgICAgUmVn
aXN0ZXJlZFN0cnVjdHVyZVNldCB0aHJvdWdoIHRoZSBlbnRpcmUgREZHL0ZUTC4KKworICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
Ynl0ZWNvZGUvU3RydWN0dXJlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2V0Ojpm
aWx0ZXIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTZXQ6OmZpbHRlckFycmF5
TW9kZXMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTZXQ6OnNwZWN1bGF0aW9u
RnJvbVN0cnVjdHVyZXMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTZXQ6OmFy
cmF5TW9kZXNGcm9tU3RydWN0dXJlcyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVNldDo6dmFsaWRhdGVSZWZlcmVuY2VzKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9T
dHJ1Y3R1cmVTZXQuaDoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oOgor
ICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI6OmZpbHRlcik6CisgICAgICAg
ICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmJvb2xlYW5SZXN1bHQp
OgorICAgICAgICAoSlNDOjpERkc6OmlzVG9UaGlzQW5JZGVudGl0eSk6CisgICAgICAgIChKU0M6
OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZl
Y3RzKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3Rh
dGVUeXBlPjo6b2JzZXJ2ZVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpmaWx0ZXIpOgorICAgICAgICAqIGRmZy9E
RkdBYnN0cmFjdFZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpz
ZXQpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OnNldFR5cGUpOgorICAgICAg
ICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6Om1lcmdlT1NSRW50cnlWYWx1ZSk6CisgICAgICAg
IChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6ZmlsdGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpB
YnN0cmFjdFZhbHVlOjpjaGFuZ2VTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpERkc6OkFic3Ry
YWN0VmFsdWU6OmNvbnRhaW5zKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RWYWx1ZS5oOgor
ICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6Om9ic2VydmVUcmFuc2l0aW9uKToKKyAg
ICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpUcmFuc2l0aW9uT2JzZXJ2ZXI6OlRyYW5z
aXRpb25PYnNlcnZlcik6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhh
c2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdBcnJheU1vZGUuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkFycmF5TW9kZTo6YWxyZWFkeUNoZWNrZWQpOgorICAgICAgICAqIGRmZy9ERkdBcnJheWlm
eVNsb3dQYXRoR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlpZnlTbG93UGF0
aEdlbmVyYXRvcjo6QXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvcik6CisgICAgICAgICogZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlQ29uc3RhbnRJbnRlcm5hbEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6bG9hZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQ
dXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6
CisgICAgICAgICogZGZnL0RGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmg6
CisgICAgICAgIChKU0M6OkRGRzo6Q2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3I6
OkNhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZH
OjpDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3I6OkNh
bGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJsZVNpemVTbG93UGF0aEdlbmVyYXRvcik6CisgICAg
ICAgICogZGZnL0RGR0NhbGxDcmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvci5o
OgorICAgICAgICAoSlNDOjpERkc6OkNhbGxDcmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdl
bmVyYXRvcjo6Q2FsbENyZWF0ZURpcmVjdEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yKToKKyAg
ICAgICAgKiBkZmcvREZHQ29tbW9uRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29tbW9u
RGF0YTo6bm90aWZ5Q29tcGlsaW5nU3RydWN0dXJlVHJhbnNpdGlvbik6CisgICAgICAgICogZGZn
L0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFu
dEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3Rh
bnRGb2xkaW5nUGhhc2U6OmVtaXRHZXRCeU9mZnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6Q29u
c3RhbnRGb2xkaW5nUGhhc2U6OmVtaXRQdXRCeU9mZnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6
Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmFkZEJhc2VDaGVjayk6CisgICAgICAgIChKU0M6OkRGRzo6
Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVjayk6CisgICAg
ICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhh
c2U6OmNoZWNrQXJyYXkpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6R3JhcGg6OkdyYXBoKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZHVtcCk6
CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OnRyeUdldENvbnN0YW50UHJvcGVydHkpOgorICAg
ICAgICAoSlNDOjpERkc6OkdyYXBoOjppbmZlcnJlZFZhbHVlRm9yUHJvcGVydHkpOgorICAgICAg
ICAoSlNDOjpERkc6OkdyYXBoOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6REZHOjpH
cmFwaDo6cmVnaXN0ZXJTdHJ1Y3R1cmUpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAg
ICAgICAoSlNDOjpERkc6OkdyYXBoOjpyZWdpc3RlclN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
OkRGRzo6R3JhcGg6OmFkZFN0cnVjdHVyZVNldCk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBp
bGVyLmg6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmJyYW5jaFdlYWtTdHJ1Y3R1
cmUpOgorICAgICAgICAqIGRmZy9ERkdNdWx0aUdldEJ5T2Zmc2V0RGF0YS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6TXVsdGlHZXRCeU9mZnNldENhc2U6OmR1bXBJbkNvbnRleHQpOgorICAgICAg
ICAqIGRmZy9ERkdNdWx0aUdldEJ5T2Zmc2V0RGF0YS5oOgorICAgICAgICAoSlNDOjpERkc6Ok11
bHRpR2V0QnlPZmZzZXRDYXNlOjpNdWx0aUdldEJ5T2Zmc2V0Q2FzZSk6CisgICAgICAgIChKU0M6
OkRGRzo6TXVsdGlHZXRCeU9mZnNldENhc2U6OnNldCk6CisgICAgICAgICogZGZnL0RGR05vZGUu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb1B1dFN0cnVjdHVyZUhpbnQp
OgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29u
dmVydFRvQ2hlY2tTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnN0cnVjdHVy
ZVNldCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c3RydWN0dXJlKToKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpPcEluZm9XcmFwcGVyOjpPcEluZm9XcmFwcGVyKToKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpPcEluZm9XcmFwcGVyOjpvcGVyYXRvcj0pOgorICAgICAgICAoSlNDOjpE
Rkc6Ok5vZGU6Ok9wSW5mb1dyYXBwZXI6OmFzUmVnaXN0ZXJlZFN0cnVjdHVyZSk6CisgICAgICAg
ICogZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRm
Zy9ERkdPcEluZm8uaDoKKyAgICAgICAgKEpTQzo6REZHOjpPcEluZm86Ok9wSW5mbyk6CisgICAg
ICAgICogZGZnL0RGR1BsYW4uY3BwOgorICAgICAgICAoSlNDOjpERkc6OlBsYW46OmNvbXBpbGVJ
blRocmVhZEltcGwpOgorICAgICAgICAqIGRmZy9ERkdSZWdpc3RlcmVkU3RydWN0dXJlLmNwcDog
QWRkZWQuCisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZVNldDo6ZmlsdGVy
KToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlcmVkU3RydWN0dXJlU2V0OjpmaWx0ZXJBcnJh
eU1vZGVzKToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlcmVkU3RydWN0dXJlU2V0OjpzcGVj
dWxhdGlvbkZyb21TdHJ1Y3R1cmVzKToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlcmVkU3Ry
dWN0dXJlU2V0OjphcnJheU1vZGVzRnJvbVN0cnVjdHVyZXMpOgorICAgICAgICAoSlNDOjpERkc6
OlJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQ6OnZhbGlkYXRlUmVmZXJlbmNlcyk6CisgICAgICAgICog
ZGZnL0RGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkRGRzo6
UmVnaXN0ZXJlZFN0cnVjdHVyZTo6Z2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlcmVk
U3RydWN0dXJlOjpvcGVyYXRvci0+KToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlcmVkU3Ry
dWN0dXJlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlcmVkU3RydWN0
dXJlOjpvcGVyYXRvciE9KToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlcmVkU3RydWN0dXJl
OjpvcGVyYXRvciBib29sKToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlcmVkU3RydWN0dXJl
OjpSZWdpc3RlcmVkU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlcmVkU3Ry
dWN0dXJlOjpjcmVhdGVQcml2YXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlcmVkU3Ry
dWN0dXJlU2V0OjpSZWdpc3RlcmVkU3RydWN0dXJlU2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpS
ZWdpc3RlcmVkU3RydWN0dXJlU2V0Ojpvbmx5U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6REZH
OjpSZWdpc3RlcmVkU3RydWN0dXJlU2V0Ojp0b1N0cnVjdHVyZVNldCk6CisgICAgICAgICogZGZn
L0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVSYXdPYmplY3QpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjplbWl0R2V0Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6c2lsZW50RmlsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNoZWNrQXJyYXkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlR2V0QnlWYWxPblN0cmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVGcm9tQ2hhckNvZGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlRG91YmxlUmVwKToKKyAgICAgICAgKEpTQzo6REZHOjpjb21waWxlQ2xhbXBE
b3VibGVUb0J5dGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
TWFrZVJvcGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJp
dGhSb3VuZGluZyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVO
ZXdGdW5jdGlvbkNvbW1vbik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVDcmVhdGVBY3RpdmF0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUNyZWF0ZURpcmVjdEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVTY29wZWRBcmd1bWVudHMpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlQ2xvbmVkQXJndW1lbnRzKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNwcmVhZCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcnJheVNsaWNlKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVR5cGVPZik6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZWFsbG9jYXRlUHJvcGVy
dHlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRv
U3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3JPbkNlbGwpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0cmluZ09yU3RyaW5nT2JqZWN0KToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6VHJ1c3RlZEltbVB0cjo6VHJ1c3RlZEltbVB0cik6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OlRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6VHJ1c3RlZEltbVB0cjo6b3BlcmF0
b3IgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpUcnVzdGVkSW1tUHRyOjphc0ludHB0cik6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNhbGxPcGVyYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVEZXN0cnVjdGlibGVPYmplY3QpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JTdHJ1Y3R1
cmUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZUNvbXBh
cmVOdWxsT3JVbmRlZmluZWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpu
b25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoTnVsbE9yVW5kZWZpbmVkKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RPck90aGVyTG9naWNhbE5vdCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnJhbmNoKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBbGxvY2F0ZU5ld0FycmF5V2l0aFNpemUpOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZUNvbXBhcmVOdWxsT3JVbmRl
ZmluZWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2
ZVBlZXBob2xlQnJhbmNoTnVsbE9yVW5kZWZpbmVkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3QpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJyYW5jaCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlQWxsb2NhdGVOZXdBcnJheVdpdGhTaXplKToKKyAgICAgICAgKiBkZmcv
REZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3RyZW5n
dGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlTm9kZSk6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVy
ZUFic3RyYWN0VmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0
VmFsdWU6OmFzc2VydElzUmVnaXN0ZXJlZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJl
QWJzdHJhY3RWYWx1ZTo6Y2xvYmJlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJz
dHJhY3RWYWx1ZTo6b2JzZXJ2ZVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVj
dHVyZUFic3RyYWN0VmFsdWU6Om9ic2VydmVUcmFuc2l0aW9ucyk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6YWRkKToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1
Y3R1cmVBYnN0cmFjdFZhbHVlOjptZXJnZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJl
QWJzdHJhY3RWYWx1ZTo6bWVyZ2VOb3RUb3ApOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVy
ZUFic3RyYWN0VmFsdWU6OmZpbHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJz
dHJhY3RWYWx1ZTo6ZmlsdGVyU2xvdyk6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJz
dHJhY3RWYWx1ZTo6ZmlsdGVyQ2xhc3NJbmZvU2xvdyk6CisgICAgICAgIChKU0M6OkRGRzo6U3Ry
dWN0dXJlQWJzdHJhY3RWYWx1ZTo6Y29udGFpbnMpOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVj
dHVyZUFic3RyYWN0VmFsdWU6OmlzU3Vic2V0T2YpOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVj
dHVyZUFic3RyYWN0VmFsdWU6OmlzU3VwZXJzZXRPZik6CisgICAgICAgIChKU0M6OkRGRzo6U3Ry
dWN0dXJlQWJzdHJhY3RWYWx1ZTo6b3ZlcmxhcHMpOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVj
dHVyZUFic3RyYWN0VmFsdWU6OmlzU3ViQ2xhc3NPZik6CisgICAgICAgIChKU0M6OkRGRzo6U3Ry
dWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZHVtcEluQ29udGV4dCk6CisgICAgICAgICogZGZnL0RGR1N0
cnVjdHVyZUFic3RyYWN0VmFsdWUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0
cmFjdFZhbHVlOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlKToKKyAgICAgICAgKEpTQzo6REZHOjpT
dHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpvcGVyYXRvcj0pOgorICAgICAgICAoSlNDOjpERkc6OlN0
cnVjdHVyZUFic3RyYWN0VmFsdWU6OnNldCk6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJl
QWJzdHJhY3RWYWx1ZTo6dG9TdHJ1Y3R1cmVTZXQpOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVj
dHVyZUFic3RyYWN0VmFsdWU6OmF0KToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0
cmFjdFZhbHVlOjpvcGVyYXRvcltdKToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0
cmFjdFZhbHVlOjpvbmx5U3RydWN0dXJlKToKKyAgICAgICAgKiBkZmcvREZHU3RydWN0dXJlUmVn
aXN0cmF0aW9uUGhhc2UuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGRmZy9ERkdTdHJ1Y3R1cmVS
ZWdpc3RyYXRpb25QaGFzZS5oOiBSZW1vdmVkLgorICAgICAgICAqIGRmZy9ERkdUcmFuc2l0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpUcmFuc2l0aW9uOjpkdW1wSW5Db250ZXh0KToKKyAg
ICAgICAgKiBkZmcvREZHVHJhbnNpdGlvbi5oOgorICAgICAgICAoSlNDOjpERkc6OlRyYW5zaXRp
b246OlRyYW5zaXRpb24pOgorICAgICAgICAqIGRmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlOjpub3RpY2VT
dHJ1Y3R1cmVDaGVjayk6CisgICAgICAgIChKU0M6OkRGRzo6VHlwZUNoZWNrSG9pc3RpbmdQaGFz
ZTo6bm90aWNlU3RydWN0dXJlQ2hlY2tBY2NvdW50aW5nRm9yQXJyYXlNb2RlKToKKyAgICAgICAg
KiBkZmcvREZHVmFsaWRhdGUuY3BwOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3Bw
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpsb3dlcik6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsT2JqZWN0Q29uc3RydWN0
b3IpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2hlY2tT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
UHV0U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZUFycmF5U2xpY2UpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlQ3JlYXRlQWN0aXZhdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVDcmVhdGVEaXJlY3RBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ3JlYXRlUmVzdCk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOZXdBcnJheSk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOZXdBcnJheVdpdGhTcHJlYWQpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3QXJyYXlCdWZmZXIp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3QXJyYXlX
aXRoU2l6ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVO
ZXdUeXBlZEFycmF5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZUFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZVJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTXVsdGlHZXRCeU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVNdWx0aVB1dEJ5T2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldE1h
cEJ1Y2tldCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVP
dmVycmlkZXNIYXNJbnN0YW5jZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVDaGVja1N0cnVjdHVyZUltbWVkaWF0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdCk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVNYXRlcmlhbGl6ZUNyZWF0ZUFj
dGl2YXRpb24pOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
TmV3UmVnZXhwKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZUxvZ1NoYWRvd0NoaWNrZW5UYWlsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y2hlY2tTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjaGVja0luZmVycmVkVHlwZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmFsbG9jYXRlT2JqZWN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6YWxsb2NhdGVWYXJpYWJsZVNpemVkT2JqZWN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6YWxsb2NhdGVKU0FycmF5KToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6YWxsb2NhdGVVbmluaXRpYWxpemVkQ29udGlndW91c0pTQXJyYXkp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpib29saWZ5KToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6ZXF1YWxOdWxsT3JVbmRlZmluZWQpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpsb3dDZWxsKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3BlY3VsYXRlU3RyaW5nT2JqZWN0Rm9yU3Ry
dWN0dXJlSUQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjp3ZWFrUG9p
bnRlcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmZyb3plblBvaW50
ZXIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjp3ZWFrU3RydWN0dXJl
SUQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjp3ZWFrU3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y3Jhc2gpOgorICAgICAg
ICAqIGZ0bC9GVExPdXRwdXQuaDoKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OndlYWtQb2lu
dGVyKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmNvbnN0SW50UHRyKToKKwogMjAxNy0w
MS0yNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEF0b21pY3Mu
c3RvcmUgc2hvdWxkIHJldHVybiB0aGUgaW50LWNvbnZlcnRlZCB2YWx1ZSBhY2NvcmRpbmcgdG8g
dG9JbnRlZ2VyCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lv
biAyMTExMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTM3Myw2ICszNzMsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwog
ICAgIGRmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAKICAgICBkZmcvREZHUHVyZVZhbHVl
LmNwcAogICAgIGRmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAKKyAgICBkZmcvREZHUmVn
aXN0ZXJlZFN0cnVjdHVyZS5jcHAKICAgICBkZmcvREZHU1NBQ2FsY3VsYXRvci5jcHAKICAgICBk
ZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAogICAgIGRmZy9ERkdTU0FMb3dlcmluZ1BoYXNl
LmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIxMTEwNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01MjAsOCArNTIwLDYgQEAKIAkJMEY3NjZEMzgx
NUFFNEExQzAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NjZEMzYxNUFF
NEExQTAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuY3BwICovOyB9
OwogCQkwRjc2NkQzOTE1QUU0QTFGMDA4RjM2M0UgLyogU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0
Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY3NjZEMzcxNUFFNEExQTAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9p
bnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
Rjc3MDA5MjE0MDJGRjNDMDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzcwMDkxMTQwMkZGMjgwMDc4
RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwICovOyB9OwotCQkwRjc5MDg1NTE5QTI5MEIyMDBG
NjMxMEMgLyogREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3OTA4NTMxOUEyOTBCMjAwRjYzMTBD
IC8qIERGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcCAqLzsgfTsKLQkJMEY3OTA4NTYx
OUEyOTBCMjAwRjYzMTBDIC8qIERGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc5MDg1NDE5QTI5MEIy
MDBGNjMxMEMgLyogREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuaCAqLzsgfTsKIAkJMEY3
QjI5NEIxNEMzQ0QyRjAwN0MzREIxIC8qIERGR0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEODJFMUYxNDE3MkMyRjAwMTc5Qzk0
IC8qIERGR0NhcGFiaWxpdGllcy5oICovOyB9OwogCQkwRjdCMjk0RDE0QzNDRDRDMDA3QzNEQjEg
LyogREZHQ29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkMwOTc3RTE0NjlFQkM0MDBDRjI0NDIgLyogREZHQ29tbW9uLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY3QzM5RkIxQzhGNjI5MzAw
NDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGN0MzOUZBMUM4RjYyOTMwMDQ4MDE1MSAvKiBSZWdFeHBJbmxpbmVz
LmggKi87IH07CkBAIC0xNDMyLDYgKzE0MzAsNyBAQAogCQk3OTE2MERCRTFDOEUzRUM4MDA4QzA4
NUEgLyogUHJveHlSZXZva2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDc5MTYwREJDMUM4RTNFQzgwMDhDMDg1QSAvKiBQcm94eVJldm9rZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc5MTlCNzgwMUUw
MzU1OUMwMDVCRUVEOCAvKiBCM0NvbXBpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDc5MTlCNzdGMUUwMzU1OUMwMDVCRUVEOCAvKiBCM0NvbXBpbGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3OTIz
M0MyQjFEMzQ3MTU3MDBDNUE4MzQgLyogSklUTWF0aElDLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OTIzM0MyOTFEMzQ3MTU3MDBDNUE4MzQgLyogSklU
TWF0aElDLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNzkyNTIyNTUxRTM4MDZGRjAwMEREOEU5IC8qIERGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzkyNTIyNTQx
RTM4MDZGRjAwMEREOEU5IC8qIERGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuY3BwICovOyB9OwogCQk3
OTJDQjM0OTFDNEVFRDVDMDBEMTNBRjMgLyogUENUb0NvZGVPcmlnaW5NYXAuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzkyQ0IzNDcxQzRFRUQ1QzAw
RDEzQUYzIC8qIFBDVG9Db2RlT3JpZ2luTWFwLmNwcCAqLzsgfTsKIAkJNzkyQ0IzNEExQzRFRUQ1
QzAwRDEzQUYzIC8qIFBDVG9Db2RlT3JpZ2luTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OTJDQjM0ODFDNEVFRDVDMDBEMTNBRjMgLyogUENUb0Nv
ZGVPcmlnaW5NYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3OTVCMTk5NzFENzhCRTM1MDAyNjJGQTAgLyogTWFwQmFzZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OTVCMTk5NTFENzhCRTM1MDAy
NjJGQTAgLyogTWFwQmFzZS5jcHAgKi87IH07CkBAIC0xNDcxLDYgKzE0NzAsNyBAQAogCQk3OUVF
MEMwMDFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzlFRTBCRkUxQjRBRkI4NTAwMDM4
NUM5IC8qIFZhcmlhYmxlRW52aXJvbm1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3OUY4RkMxRTFCOUZFRDBGMDBDQTY2QUIgLyogREZHTWF4
aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzlGOEZDMUMxQjlGRUQwRjAwQ0E2NkFCIC8qIERGR01heGltYWxG
bHVzaEluc2VydGlvblBoYXNlLmNwcCAqLzsgfTsKIAkJNzlGOEZDMUYxQjlGRUQwRjAwQ0E2NkFC
IC8qIERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OUY4RkMxRDFCOUZFRDBGMDBDQTY2QUIgLyogREZH
TWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuaCAqLzsgfTsKKwkJNzlGQzhBMDgxRTMyRTlGMDAw
RDg4RjBFIC8qIERGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RkM4QTA3MUUzMkU5RjAwMEQ4OEYwRSAvKiBERkdS
ZWdpc3RlcmVkU3RydWN0dXJlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJN0JDNTQ3RDMxQjY5NTlBMTAwOTU5QjU4IC8qIFdhc21Gb3JtYXQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQzU0N0QyMUI2
OTU5OUIwMDk1OUI1OCAvKiBXYXNtRm9ybWF0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MwMDhDREExODcxMjRCQjAwOTU1QzI0IC8qIEpTUHJv
bWlzZURlZmVycmVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDMDA4Q0Q4MTg3MTI0QkIwMDk1NUMyNCAvKiBKU1Byb21pc2VEZWZlcnJlZC5jcHAg
Ki87IH07CiAJCTdDMDA4Q0RCMTg3MTI0QkIwMDk1NUMyNCAvKiBKU1Byb21pc2VEZWZlcnJlZC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MwMDhDRDkx
ODcxMjRCQjAwOTU1QzI0IC8qIEpTUHJvbWlzZURlZmVycmVkLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTI5NzYsOCArMjk3Niw2IEBACiAJCTBG
NzY2RDM3MTVBRTRBMUEwMDhGMzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cnVjdHVyZVN0dWJDbGVhcmlu
Z1dhdGNocG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3NzAwOEUxNDAy
RkRENjAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTYW1wbGluZ0NvdW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY3NzAwOTExNDAyRkYyODAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTYW1wbGluZ0NvdW50ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRjc5MDg1MzE5QTI5MEIyMDBGNjMxMEMgLyogREZH
U3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwOyBwYXRoID0gZGZn
L0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMEY3OTA4NTQxOUEyOTBCMjAwRjYzMTBDIC8qIERGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1N0cnVjdHVy
ZVJlZ2lzdHJhdGlvblBoYXNlLmg7IHBhdGggPSBkZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9u
UGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3QzM5RkExQzhGNjI5MzAw
NDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVnRXhwSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjdDMzlG
QzFDOEY2NTk1MDA0ODAxNTEgLyogUmVnRXhwT2JqZWN0SW5saW5lcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBPYmplY3RJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGN0MzOUZFMUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdPcEluZm8uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHT3BJbmZvLmg7IHBhdGggPSBkZmcv
REZHT3BJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zOTAxLDYgKzM4OTks
NyBAQAogCQk3OTE2MERCQzFDOEUzRUM4MDA4QzA4NUEgLyogUHJveHlSZXZva2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJveHlSZXZva2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzkxOUI3N0YxRTAzNTU5QzAwNUJFRUQ4IC8qIEIzQ29tcGlsZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0NvbXBpbGUuaDsgcGF0aCA9IGIzL0Iz
Q29tcGlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3OTIzM0MyOTFEMzQ3MTU3
MDBDNUE4MzQgLyogSklUTWF0aElDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpJVE1hdGhJQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3OTI1MjI1NDFFMzgw
NkZGMDAwREQ4RTkgLyogREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdSZWdpc3RlcmVkU3RydWN0dXJlLmNwcDsgcGF0aCA9
IGRmZy9ERkdSZWdpc3RlcmVkU3RydWN0dXJlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzkyQ0IzNDcxQzRFRUQ1QzAwRDEzQUYzIC8qIFBDVG9Db2RlT3JpZ2luTWFwLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBDVG9Db2RlT3JpZ2luTWFwLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzkyQ0IzNDgxQzRFRUQ1QzAwRDEzQUYz
IC8qIFBDVG9Db2RlT3JpZ2luTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBDVG9Db2RlT3JpZ2luTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc5NUIx
OTk1MUQ3OEJFMzUwMDI2MkZBMCAvKiBNYXBCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE1hcEJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMzk0MCw2ICszOTM5LDcgQEAKIAkJNzlFRTBCRkUxQjRBRkI4NTAwMDM4NUM5IC8qIFZhcmlh
YmxlRW52aXJvbm1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFyaWFi
bGVFbnZpcm9ubWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3OUY4RkMxQzFC
OUZFRDBGMDBDQTY2QUIgLyogREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9u
UGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzlGOEZDMUQxQjlGRUQwRjAwQ0E2NkFCIC8q
IERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmg7IHBhdGggPSBkZmcvREZH
TWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNzlGQzhBMDcxRTMyRTlGMDAwRDg4RjBFIC8qIERGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5o
OyBwYXRoID0gZGZnL0RGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0JDNTQ3RDIxQjY5NTk5QjAwOTU5QjU4IC8qIFdhc21Gb3JtYXQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbUZvcm1hdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QzAwOENEODE4NzEyNEJCMDA5NTVDMjQgLyogSlNQcm9taXNlRGVm
ZXJyZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQcm9taXNl
RGVmZXJyZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzAwOENEOTE4NzEy
NEJCMDA5NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNQcm9taXNlRGVmZXJyZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTcwODksNiArNzA4OSw4IEBACiAJCQkJMEZCMTc2NUYxOTZCOEY5RTAwOTEwNTJBIC8q
IERGR1B1cmVWYWx1ZS5oICovLAogCQkJCTBGM0ExQkY3MUE5RUNCN0QwMDBERTAxQSAvKiBERkdQ
dXRTdGFja1NpbmtpbmdQaGFzZS5jcHAgKi8sCiAJCQkJMEYzQTFCRjgxQTlFQ0I3RDAwMERFMDFB
IC8qIERGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmggKi8sCisJCQkJNzlGQzhBMDcxRTMyRTlGMDAw
RDg4RjBFIC8qIERGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaCAqLywKKwkJCQk3OTI1MjI1NDFFMzgw
NkZGMDAwREQ4RTkgLyogREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5jcHAgKi8sCiAJCQkJODZFQzlE
QzExMzI4REY4MjAwMkIyQUQ3IC8qIERGR1JlZ2lzdGVyQmFuay5oICovLAogCQkJCTBGMkZDQ0Y0
MThBNjAwNzAwMDFBMjdGOCAvKiBERkdTYWZlcG9pbnQuY3BwICovLAogCQkJCTBGMkZDQ0Y1MThB
NjAwNzAwMDFBMjdGOCAvKiBERkdTYWZlcG9pbnQuaCAqLywKQEAgLTcxMjEsOCArNzEyMyw2IEBA
CiAJCQkJMEY4OTNCREExOTM2RTIzQzAwMTIxMUY0IC8qIERGR1N0cnVjdHVyZUFic3RyYWN0VmFs
dWUuY3BwICovLAogCQkJCTBGNjM5NDc2MTVEQ0UzNDcwMDZBNTk3QyAvKiBERkdTdHJ1Y3R1cmVB
YnN0cmFjdFZhbHVlLmggKi8sCiAJCQkJMEY1MEFGM0IxOTNFOEIzOTAwNjc0RUU4IC8qIERGR1N0
cnVjdHVyZUNsb2JiZXJTdGF0ZS5oICovLAotCQkJCTBGNzkwODUzMTlBMjkwQjIwMEY2MzEwQyAv
KiBERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAgKi8sCi0JCQkJMEY3OTA4NTQxOUEy
OTBCMjAwRjYzMTBDIC8qIERGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmggKi8sCiAJCQkJ
MEYyRkNDRjcxOEE2MDA3MDAwMUEyN0Y4IC8qIERGR1RocmVhZERhdGEuY3BwICovLAogCQkJCTBG
MkZDQ0Y4MThBNjAwNzAwMDFBMjdGOCAvKiBERkdUaHJlYWREYXRhLmggKi8sCiAJCQkJMEZDMDk3
OUYxNDZCMjhDNzAwQ0YyNDQyIC8qIERGR1RodW5rcy5jcHAgKi8sCkBAIC04MDczLDYgKzgwNzMs
NyBAQAogCQkJCTBGMjFDMjdEMTRCRTcyN0EwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBNzE0QkNGNTA3MDA4ODVCNEYgLyogQ29k
ZVR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTc2MjA1MURCOTI0MjkwMEI3QTJGRCAvKiBD
b2xsZWN0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTc5RkM4QTA4MUUzMkU5RjAwMEQ4
OEYwRSAvKiBERkdSZWdpc3RlcmVkU3RydWN0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTMy
NDM5ODE4NTZBNDg5MDAyRUQ2OTIgLyogQ29tYmluZWREb21haW5zLmpzb24gaW4gSGVhZGVycyAq
LywKIAkJCQlCQzE4QzNGMzBFMTZGNUNEMDBCMzQ0NjAgLyogQ29tbW9uSWRlbnRpZmllcnMuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMTVGMTVGMTRCN0E3M0UwMDVERTM3RCAvKiBDb21tb25TbG93
UGF0aHMuaCBpbiBIZWFkZXJzICovLApAQCAtODI4OCw3ICs4Mjg5LDYgQEAKIAkJCQkwRkMyMENC
NjE4NTJFMkM2MDBDOUU5NTQgLyogREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY2Mzk0NzgxNURDRTM0QjAwNkE1OTdDIC8qIERGR1N0cnVjdHVyZUFic3Ry
YWN0VmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTBBRjNDMTkzRThCMzkwMDY3NEVFOCAv
KiBERkdTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGNzkwODU2
MTlBMjkwQjIwMEY2MzEwQyAvKiBERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYyRkNDRkYxOEE2MDA3MDAwMUEyN0Y4IC8qIERGR1RocmVhZERhdGEu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzA5N0EyMTQ2QjI4Q0MwMENGMjQ0MiAvKiBERkdUaHVu
a3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRDhBMzI4MTdENTFGNTcwMENBMkM0MCAvKiBERkdU
aWVyVXBDaGVja0luamVjdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTk5OTMsNyArOTk5
Myw2IEBACiAJCQkJMEZDMjBDQjUxODUyRTJDNjAwQzlFOTU0IC8qIERGR1N0cmVuZ3RoUmVkdWN0
aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3REYxM0IxRTI5NzExMTAwOTU5NTFC
IC8qIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0U3Vic3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEY4OTNCREIxOTM2RTIzQzAwMTIxMUY0IC8qIERGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJMEY3OTA4NTUxOUEyOTBCMjAwRjYzMTBDIC8qIERGR1N0cnVj
dHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkZDQ0ZFMThB
NjAwNzAwMDFBMjdGOCAvKiBERkdUaHJlYWREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
QzA5N0ExMTQ2QjI4Q0EwMENGMjQ0MiAvKiBERkdUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEZEOEEzMjcxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhh
c2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMDM1Miw2ICsxMDM1MSw3IEBACiAJCQkJMTQ3MzQx
RTUxREMyQ0U5NjAwQUEyOUJBIC8qIE5hdGl2ZUV4ZWN1dGFibGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRTMzRThEMjAxQjkwMTNERTAwMzQ2QjUyIC8qIE5hdGl2ZVN0ZEZ1bmN0aW9uQ2VsbC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDhGMjFCNzEwN0VDNTQ3MDA0MkVDMkMgLyogTm9kZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNzkyNTIyNTUxRTM4MDZGRjAwMEREOEU5IC8qIERGR1Jl
Z2lzdGVyZWRTdHJ1Y3R1cmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTM5NjNDRUUxQjczRjc1
MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2
NTVFQjI5QjEwQ0UyNTgxMDAxQTk5MEUgLyogTm9kZXNDb2RlZ2VuLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTY1NDZGNTIxMUEzMkIzMTMwMDZGMDdENSAvKiBOdWxsR2V0dGVyRnVuY3Rpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Ry
dWN0dXJlU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3RydWN0dXJlU2V0LmNwcAkocmV2aXNpb24gMjExMTA3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDY0
ICsyNiwxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVNldC5o
IgogCi0jaW5jbHVkZSAiREZHQWJzdHJhY3RWYWx1ZS5oIgogI2luY2x1ZGUgIlRyYWNrZWRSZWZl
cmVuY2VzLmgiCiAjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgogCiBuYW1lc3BhY2UgSlND
IHsKIAotI2lmIEVOQUJMRShERkdfSklUKQotCi12b2lkIFN0cnVjdHVyZVNldDo6ZmlsdGVyKGNv
bnN0IERGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZSYgb3RoZXIpCi17Ci0gICAgZ2VuZXJpY0Zp
bHRlcihbJl0gKFN0cnVjdHVyZSogc3RydWN0dXJlKSAtPiBib29sIHsgcmV0dXJuIG90aGVyLmNv
bnRhaW5zKHN0cnVjdHVyZSk7IH0pOwotfQotCi12b2lkIFN0cnVjdHVyZVNldDo6ZmlsdGVyKFNw
ZWN1bGF0ZWRUeXBlIHR5cGUpCi17Ci0gICAgZ2VuZXJpY0ZpbHRlcigKLSAgICAgICAgWyZdIChT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkgLT4gYm9vbCB7Ci0gICAgICAgICAgICByZXR1cm4gdHlwZSAm
IHNwZWN1bGF0aW9uRnJvbVN0cnVjdHVyZShzdHJ1Y3R1cmUpOwotICAgICAgICB9KTsKLX0KLQot
dm9pZCBTdHJ1Y3R1cmVTZXQ6OmZpbHRlckFycmF5TW9kZXMoQXJyYXlNb2RlcyBhcnJheU1vZGVz
KQotewotICAgIGdlbmVyaWNGaWx0ZXIoCi0gICAgICAgIFsmXSAoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpIC0+IGJvb2wgewotICAgICAgICAgICAgcmV0dXJuIGFycmF5TW9kZXMgJiBhcnJheU1vZGVG
cm9tU3RydWN0dXJlKHN0cnVjdHVyZSk7Ci0gICAgICAgIH0pOwotfQotCi12b2lkIFN0cnVjdHVy
ZVNldDo6ZmlsdGVyKGNvbnN0IERGRzo6QWJzdHJhY3RWYWx1ZSYgb3RoZXIpCi17Ci0gICAgZmls
dGVyKG90aGVyLm1fc3RydWN0dXJlKTsKLSAgICBmaWx0ZXIob3RoZXIubV90eXBlKTsKLSAgICBm
aWx0ZXJBcnJheU1vZGVzKG90aGVyLm1fYXJyYXlNb2Rlcyk7Ci19Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoREZHX0pJVCkKLQotU3BlY3VsYXRlZFR5cGUgU3RydWN0dXJlU2V0OjpzcGVjdWxhdGlvbkZy
b21TdHJ1Y3R1cmVzKCkgY29uc3QKLXsKLSAgICBTcGVjdWxhdGVkVHlwZSByZXN1bHQgPSBTcGVj
Tm9uZTsKLSAgICBmb3JFYWNoKAotICAgICAgICBbJl0gKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7
Ci0gICAgICAgICAgICBtZXJnZVNwZWN1bGF0aW9uKHJlc3VsdCwgc3BlY3VsYXRpb25Gcm9tU3Ry
dWN0dXJlKHN0cnVjdHVyZSkpOwotICAgICAgICB9KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci1BcnJheU1vZGVzIFN0cnVjdHVyZVNldDo6YXJyYXlNb2Rlc0Zyb21TdHJ1Y3R1cmVzKCkgY29u
c3QKLXsKLSAgICBBcnJheU1vZGVzIHJlc3VsdCA9IDA7Ci0gICAgZm9yRWFjaCgKLSAgICAgICAg
WyZdIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgewotICAgICAgICAgICAgbWVyZ2VBcnJheU1vZGVz
KHJlc3VsdCwgYXNBcnJheU1vZGVzKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKTsKLSAgICAg
ICAgfSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogdm9pZCBTdHJ1Y3R1cmVTZXQ6OmR1bXBJ
bkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRleHQpIGNvbnN0CiB7
CiAgICAgQ29tbWFQcmludGVyIGNvbW1hOwpAQCAtOTcsMTMgKzQ0LDUgQEAgdm9pZCBTdHJ1Y3R1
cmVTZXQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dAogICAgIGR1bXBJbkNvbnRleHQob3V0LCBudWxs
cHRyKTsKIH0KIAotdm9pZCBTdHJ1Y3R1cmVTZXQ6OnZhbGlkYXRlUmVmZXJlbmNlcyhjb25zdCBU
cmFja2VkUmVmZXJlbmNlcyYgdHJhY2tlZFJlZmVyZW5jZXMpIGNvbnN0Ci17Ci0gICAgZm9yRWFj
aCgKLSAgICAgICAgWyZdIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgewotICAgICAgICAgICAgdHJh
Y2tlZFJlZmVyZW5jZXMuY2hlY2soc3RydWN0dXJlKTsKLSAgICAgICAgfSk7Ci19Ci0KIH0gLy8g
bmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Ry
dWN0dXJlU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1N0cnVjdHVyZVNldC5oCShyZXZpc2lvbiAyMTExMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDExICszNSw2
IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBUcmFja2VkUmVmZXJlbmNlczsKIAotbmFtZXNw
YWNlIERGRyB7Ci1jbGFzcyBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOwotc3RydWN0IEFic3RyYWN0
VmFsdWU7Ci19Ci0KIGNsYXNzIFN0cnVjdHVyZVNldCA6IHB1YmxpYyBUaW55UHRyU2V0PFN0cnVj
dHVyZSo+IHsKIHB1YmxpYzoKICAgICAvLyBJIHJlYWxseSB3YW50IHRvIGRvIHRoaXM6CkBAIC02
NiwyMCArNjEsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBvbmx5RW50cnkoKTsKICAgICB9
CiAgICAgCi0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAgdm9pZCBmaWx0ZXIoY29uc3QgREZHOjpT
dHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJik7Ci0gICAgdm9pZCBmaWx0ZXIoU3BlY3VsYXRlZFR5cGUp
OwotICAgIHZvaWQgZmlsdGVyQXJyYXlNb2RlcyhBcnJheU1vZGVzKTsKLSAgICB2b2lkIGZpbHRl
cihjb25zdCBERkc6OkFic3RyYWN0VmFsdWUmKTsKLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkK
LSAgICAKLSAgICBTcGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmVzKCkgY29u
c3Q7Ci0gICAgQXJyYXlNb2RlcyBhcnJheU1vZGVzRnJvbVN0cnVjdHVyZXMoKSBjb25zdDsKLSAg
ICAKICAgICB2b2lkIGR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mLCBEdW1wQ29udGV4dCopIGNv
bnN0OwogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwotICAgIAotICAgIHZvaWQg
dmFsaWRhdGVSZWZlcmVuY2VzKGNvbnN0IFRyYWNrZWRSZWZlcmVuY2VzJikgY29uc3Q7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oCShyZXZpc2lvbiAyMTExMDcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMTEyLDcgKzExMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mIG91dCk7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBGaWx0cmF0aW9u
UmVzdWx0IGZpbHRlcihUIG5vZGUsIGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0LCBTcGVjdWxhdGVk
VHlwZSBhZG1pdHRlZFR5cGVzID0gU3BlY05vbmUpCisgICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0
ZXIoVCBub2RlLCBjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0JiBzZXQsIFNwZWN1bGF0ZWRU
eXBlIGFkbWl0dGVkVHlwZXMgPSBTcGVjTm9uZSkKICAgICB7CiAgICAgICAgIHJldHVybiBmaWx0
ZXIoZm9yTm9kZShub2RlKSwgc2V0LCBhZG1pdHRlZFR5cGVzKTsKICAgICB9CkBAIC0xNDEsNyAr
MTQxLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZmlsdGVyQ2xhc3NJbmZvKGZvck5vZGUo
bm9kZSksIGNsYXNzSW5mbyk7CiAgICAgfQogCi0gICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0ZXIo
QWJzdHJhY3RWYWx1ZSYsIGNvbnN0IFN0cnVjdHVyZVNldCYsIFNwZWN1bGF0ZWRUeXBlIGFkbWl0
dGVkVHlwZXMgPSBTcGVjTm9uZSk7CisgICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0ZXIoQWJzdHJh
Y3RWYWx1ZSYsIGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmLCBTcGVjdWxhdGVkVHlwZSBh
ZG1pdHRlZFR5cGVzID0gU3BlY05vbmUpOwogICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyQXJy
YXlNb2RlcyhBYnN0cmFjdFZhbHVlJiwgQXJyYXlNb2Rlcyk7CiAgICAgRmlsdHJhdGlvblJlc3Vs
dCBmaWx0ZXIoQWJzdHJhY3RWYWx1ZSYsIFNwZWN1bGF0ZWRUeXBlKTsKICAgICBGaWx0cmF0aW9u
UmVzdWx0IGZpbHRlckJ5VmFsdWUoQWJzdHJhY3RWYWx1ZSYsIEZyb3plblZhbHVlKTsKQEAgLTE1
Niw3ICsxNTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZm9yQWxsVmFsdWVzKHVuc2lnbmVkIGlu
ZGV4SW5CbG9jaywgRnVuY3RvciYpOwogICAgIAogICAgIHZvaWQgY2xvYmJlclN0cnVjdHVyZXMo
dW5zaWduZWQgaW5kZXhJbkJsb2NrKTsKLSAgICB2b2lkIG9ic2VydmVUcmFuc2l0aW9uKHVuc2ln
bmVkIGluZGV4SW5CbG9jaywgU3RydWN0dXJlKiBmcm9tLCBTdHJ1Y3R1cmUqIHRvKTsKKyAgICB2
b2lkIG9ic2VydmVUcmFuc2l0aW9uKHVuc2lnbmVkIGluZGV4SW5CbG9jaywgUmVnaXN0ZXJlZFN0
cnVjdHVyZSBmcm9tLCBSZWdpc3RlcmVkU3RydWN0dXJlIHRvKTsKICAgICB2b2lkIG9ic2VydmVU
cmFuc2l0aW9ucyh1bnNpZ25lZCBpbmRleEluQmxvY2ssIGNvbnN0IFRyYW5zaXRpb25WZWN0b3Im
KTsKICAgICB2b2lkIHNldERpZENsb2JiZXIoKTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgJKHJldmlzaW9uIDIxMTEwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBA
QCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6CiAgICAgaWYgKGlzQ2Vs
bFNwZWN1bGF0aW9uKHZhbHVlLm1fdHlwZSkgJiYgIXZhbHVlLm1fc3RydWN0dXJlLmlzVG9wKCkp
IHsKICAgICAgICAgYm9vbCBhbGxUcnVlID0gdHJ1ZTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gdmFsdWUubV9zdHJ1Y3R1cmUuc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgICAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IHZhbHVlLm1fc3RydWN0dXJlW2ldOworICAgICAgICAgICAgUmVnaXN0
ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSB2YWx1ZS5tX3N0cnVjdHVyZVtpXTsKICAgICAgICAg
ICAgIGlmIChzdHJ1Y3R1cmUtPm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQobV9jb2RlQmxvY2stPmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKQogICAgICAgICAgICAgICAgIHx8
IHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gU3RyaW5nVHlwZSkgewogICAgICAgICAg
ICAgICAgIGFsbFRydWUgPSBmYWxzZTsKQEAgLTE1Miw3ICsxNTIsNyBAQCBpbmxpbmUgYm9vbCBp
c1RvVGhpc0FuSWRlbnRpdHkoYm9vbCBpc1N0CiAKICAgICBpZiAoKGlzU3RyaWN0TW9kZSB8fCAo
dmFsdWVGb3JOb2RlLm1fdHlwZSAmJiAhKHZhbHVlRm9yTm9kZS5tX3R5cGUgJiB+U3BlY09iamVj
dCkpKSAmJiB2YWx1ZUZvck5vZGUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkgewogICAgICAgICBi
b29sIG92ZXJyaWRlc1RvVGhpcyA9IGZhbHNlOwotICAgICAgICB2YWx1ZUZvck5vZGUubV9zdHJ1
Y3R1cmUuZm9yRWFjaChbJl0oU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIHsKKyAgICAgICAgdmFsdWVG
b3JOb2RlLm1fc3RydWN0dXJlLmZvckVhY2goWyZdKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0
dXJlKSB7CiAgICAgICAgICAgICBUeXBlSW5mbyB0eXBlID0gc3RydWN0dXJlLT50eXBlSW5mbygp
OwogICAgICAgICAgICAgQVNTRVJUKHR5cGUuaXNPYmplY3QoKSB8fCB0eXBlLnR5cGUoKSA9PSBT
dHJpbmdUeXBlIHx8IHR5cGUudHlwZSgpID09IFN5bWJvbFR5cGUpOwogICAgICAgICAgICAgaWYg
KCFpc1N0cmljdE1vZGUpCkBAIC0xNjU2LDEwICsxNjU2LDEwIEBAIGJvb2wgQWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKIAogICAgICAgICAvLyBGSVhNRTogV2UgY291bGQgZG8g
YmV0dGVyIGhlcmUgaWYgd2UgcHJvdmUgdGhhdCB0aGUKICAgICAgICAgLy8gaW5jb21pbmcgdmFs
dWUgaGFzIG9ubHkgYSBzaW5nbGUgc3RydWN0dXJlLgotICAgICAgICBTdHJ1Y3R1cmVTZXQgc3Ry
dWN0dXJlU2V0OwotICAgICAgICBzdHJ1Y3R1cmVTZXQuYWRkKGdsb2JhbE9iamVjdC0+b3JpZ2lu
YWxBcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZShBcnJheVdpdGhJbnQzMikpOwotICAgICAg
ICBzdHJ1Y3R1cmVTZXQuYWRkKGdsb2JhbE9iamVjdC0+b3JpZ2luYWxBcnJheVN0cnVjdHVyZUZv
ckluZGV4aW5nVHlwZShBcnJheVdpdGhDb250aWd1b3VzKSk7Ci0gICAgICAgIHN0cnVjdHVyZVNl
dC5hZGQoZ2xvYmFsT2JqZWN0LT5vcmlnaW5hbEFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBl
KEFycmF5V2l0aERvdWJsZSkpOworICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0IHN0cnVj
dHVyZVNldDsKKyAgICAgICAgc3RydWN0dXJlU2V0LmFkZChtX2dyYXBoLnJlZ2lzdGVyU3RydWN0
dXJlKGdsb2JhbE9iamVjdC0+b3JpZ2luYWxBcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZShB
cnJheVdpdGhJbnQzMikpKTsKKyAgICAgICAgc3RydWN0dXJlU2V0LmFkZChtX2dyYXBoLnJlZ2lz
dGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+b3JpZ2luYWxBcnJheVN0cnVjdHVyZUZvckluZGV4
aW5nVHlwZShBcnJheVdpdGhDb250aWd1b3VzKSkpOworICAgICAgICBzdHJ1Y3R1cmVTZXQuYWRk
KG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5vcmlnaW5hbEFycmF5U3Ry
dWN0dXJlRm9ySW5kZXhpbmdUeXBlKEFycmF5V2l0aERvdWJsZSkpKTsKIAogICAgICAgICBmb3JO
b2RlKG5vZGUpLnNldChtX2dyYXBoLCBzdHJ1Y3R1cmVTZXQpOwogICAgICAgICBicmVhazsKQEAg
LTE4NTYsNyArMTg1Niw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHkKICAgICAgICAgICAgIC8vIHN0cnVjdHVyZS4KICAgICAgICAgICAgIGZpbHRlcigKICAgICAg
ICAgICAgICAgICBub2RlLT5jaGlsZDEoKSwKLSAgICAgICAgICAgICAgICBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUo
KSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5zdHJpbmdPYmplY3RTdHJ1Y3R1
cmUoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU3RyaW5nT3JTdHJpbmdP
YmplY3RVc2U6CiAgICAgICAgICAgICBicmVhazsKQEAgLTE5NjMsNyArMTk2Myw3IEBAIGJvb2wg
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICB9CiAgICAgICAgIAogICAg
IGNhc2UgTmV3T2JqZWN0OgotICAgICAgICBBU1NFUlQobm9kZS0+c3RydWN0dXJlKCkpOworICAg
ICAgICBBU1NFUlQoISFub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CiAgICAgICAgIGZvck5vZGUo
bm9kZSkuc2V0KG1fZ3JhcGgsIG5vZGUtPnN0cnVjdHVyZSgpKTsKICAgICAgICAgYnJlYWs7CiAK
QEAgLTIxMjEsNyArMjEyMSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHkKICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBudWxscHRy
OwogICAgICAgICAgICAgYm9vbCBvayA9IHRydWU7CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKS5tX3N0cnVjdHVyZS5mb3JFYWNoKAotICAgICAgICAgICAgICAgIFsmXSAoU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpIHsKKyAgICAgICAgICAgICAgICBbJl0gKFJlZ2lzdGVyZWRTdHJ1
Y3R1cmUgc3RydWN0dXJlKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghZ2xvYmFsT2JqZWN0
KQogICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0ID0gc3RydWN0dXJlLT5nbG9i
YWxPYmplY3QoKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZ2xvYmFsT2JqZWN0ICE9
IHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkpCkBAIC0yMTg0LDcgKzIxODQsNyBAQCBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGlmICh2YWx1ZS5tX3N0
cnVjdHVyZS5pc0Zpbml0ZSgpCiAgICAgICAgICAgICAmJiAobm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpID09IENlbGxVc2UgfHwgISh2YWx1ZS5tX3R5cGUgJiB+U3BlY0NlbGwpKSkgewogICAgICAg
ICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtub2Rl
LT5pZGVudGlmaWVyTnVtYmVyKCldOwotICAgICAgICAgICAgR2V0QnlJZFN0YXR1cyBzdGF0dXMg
PSBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKHZhbHVlLm1fc3RydWN0dXJlLnNldCgpLCB1aWQp
OworICAgICAgICAgICAgR2V0QnlJZFN0YXR1cyBzdGF0dXMgPSBHZXRCeUlkU3RhdHVzOjpjb21w
dXRlRm9yKHZhbHVlLm1fc3RydWN0dXJlLnRvU3RydWN0dXJlU2V0KCksIHVpZCk7CiAgICAgICAg
ICAgICBpZiAoc3RhdHVzLmlzU2ltcGxlKCkpIHsKICAgICAgICAgICAgICAgICAvLyBGaWd1cmUg
b3V0IHdoYXQgdGhlIHJlc3VsdCBpcyBnb2luZyB0byBiZSAtIGlzIGl0IFRPUCwgYSBjb25zdGFu
dCwgb3IgbWF5YmUKICAgICAgICAgICAgICAgICAvLyBzb21ldGhpbmcgbW9yZSBzdWJ0bGU/CkBA
IC0yMjM4LDcgKzIyMzgsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5CiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZTogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiB2
YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwogCi0gICAgICAgIFN0cnVjdHVyZVNldCYg
c2V0ID0gbm9kZS0+c3RydWN0dXJlU2V0KCk7CisgICAgICAgIGNvbnN0IFJlZ2lzdGVyZWRTdHJ1
Y3R1cmVTZXQmIHNldCA9IG5vZGUtPnN0cnVjdHVyZVNldCgpOwogICAgICAgICAKICAgICAgICAg
Ly8gSXQncyBpbnRlcmVzdGluZyB0aGF0IHdlIGNvdWxkIGhhdmUgcHJvdmVuIHRoYXQgdGhlIG9i
amVjdCBoYXMgYSBsYXJnZXIgc3RydWN0dXJlIHNldAogICAgICAgICAvLyB0aGF0IGluY2x1ZGVz
IHRoZSBzZXQgd2UncmUgdGVzdGluZy4gSW4gdGhhdCBjYXNlIHdlIGNvdWxkIG1ha2UgdGhlIHN0
cnVjdHVyZSBjaGVjawpAQCAtMjI3MCwxMSArMjI3MCwxMSBAQCBib29sIEFic3RyYWN0SW50ZXJw
cmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzY5ODgKICAgICAgICAgCiAgICAgICAgIEFic3RyYWN0VmFsdWUm
IHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIFN0cnVjdHVyZVNldCYg
c2V0ID0gbm9kZS0+c3RydWN0dXJlU2V0KCk7CisgICAgICAgIGNvbnN0IFJlZ2lzdGVyZWRTdHJ1
Y3R1cmVTZXQmIHNldCA9IG5vZGUtPnN0cnVjdHVyZVNldCgpOwogICAgICAgICAKICAgICAgICAg
aWYgKHZhbHVlLnZhbHVlKCkpIHsKICAgICAgICAgICAgIGlmIChTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IGpzRHluYW1pY0Nhc3Q8U3RydWN0dXJlKj4odmFsdWUudmFsdWUoKSkpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoc2V0LmNvbnRhaW5zKHN0cnVjdHVyZSkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoc2V0LmNvbnRhaW5zKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKSkpIHsK
ICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjI4OSw3ICsy
Mjg5LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAg
ICAgICAgICAgIG5vZGUsCiAgICAgICAgICAgICAgICAgWyZdIChOb2RlKiBpbmNvbWluZykgewog
ICAgICAgICAgICAgICAgICAgICBpZiAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBpbmNvbWluZy0+
ZHluYW1pY0Nhc3RDb25zdGFudDxTdHJ1Y3R1cmUqPigpKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoc2V0LmNvbnRhaW5zKHN0cnVjdHVyZSkpCisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoc2V0LmNvbnRhaW5zKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKSkp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgIGFsbEdvb2QgPSBmYWxzZTsKQEAgLTIzMDAsOCArMjMw
MCw4IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGlmIChTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IHNldC5vbmx5U3RydWN0dXJlKCkpIHsKLSAgICAgICAgICAgIGZpbHRlckJ5VmFs
dWUobm9kZS0+Y2hpbGQxKCksICptX2dyYXBoLmZyZWV6ZShzdHJ1Y3R1cmUpKTsKKyAgICAgICAg
aWYgKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gc2V0Lm9ubHlTdHJ1Y3R1cmUoKSkg
eworICAgICAgICAgICAgZmlsdGVyQnlWYWx1ZShub2RlLT5jaGlsZDEoKSwgKm1fZ3JhcGguZnJl
ZXplKHN0cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgCkBAIC0yNDMyLDcgKzI0MzIsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5CiAgICAgfQogICAgIGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZTogewogICAg
ICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwotICAg
ICAgICBpZiAodmFsdWUubV9zdHJ1Y3R1cmUuaXNTdWJzZXRPZihTdHJ1Y3R1cmVTZXQobm9kZS0+
c3RydWN0dXJlKCkpKSkKKyAgICAgICAgaWYgKHZhbHVlLm1fc3RydWN0dXJlLmlzU3Vic2V0T2Yo
UmVnaXN0ZXJlZFN0cnVjdHVyZVNldChub2RlLT5zdHJ1Y3R1cmUoKSkpKQogICAgICAgICAgICAg
bV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKICAgICAgICAgY2xvYmJlclN0cnVjdHVy
ZXMoY2xvYmJlckxpbWl0KTsKICAgICAgICAgCkBAIC0yNTQ2LDEwICsyNTQ2LDEwIEBAIGJvb2wg
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgVW5pcXVlZFN0cmlu
Z0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtub2RlLT5tdWx0aUdldEJ5T2Zmc2V0
RGF0YSgpLmlkZW50aWZpZXJOdW1iZXJdOwogCiAgICAgICAgIEFic3RyYWN0VmFsdWUgYmFzZSA9
IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBTdHJ1Y3R1cmVTZXQgYmFzZVNldDsK
KyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBiYXNlU2V0OwogICAgICAgICBBYnN0cmFj
dFZhbHVlIHJlc3VsdDsKICAgICAgICAgZm9yIChjb25zdCBNdWx0aUdldEJ5T2Zmc2V0Q2FzZSYg
Z2V0Q2FzZSA6IG5vZGUtPm11bHRpR2V0QnlPZmZzZXREYXRhKCkuY2FzZXMpIHsKLSAgICAgICAg
ICAgIFN0cnVjdHVyZVNldCBzZXQgPSBnZXRDYXNlLnNldCgpOworICAgICAgICAgICAgUmVnaXN0
ZXJlZFN0cnVjdHVyZVNldCBzZXQgPSBnZXRDYXNlLnNldCgpOwogICAgICAgICAgICAgc2V0LmZp
bHRlcihiYXNlKTsKICAgICAgICAgICAgIGlmIChzZXQuaXNFbXB0eSgpKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwpAQCAtMjU5MSw3ICsyNTkxLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeQogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBNdWx0aVB1dEJ5
T2Zmc2V0OiB7Ci0gICAgICAgIFN0cnVjdHVyZVNldCBuZXdTZXQ7CisgICAgICAgIFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmVTZXQgbmV3U2V0OwogICAgICAgICBUcmFuc2l0aW9uVmVjdG9yIHRyYW5zaXRp
b25zOwogICAgICAgICAKICAgICAgICAgLy8gT3JkaW5hcmlseSB5b3UgaGF2ZSB0byBiZSBjYXJl
ZnVsIHdpdGggY2FsbGluZyBzZXRGb3VuZENvbnN0YW50cygpCkBAIC0yNjA0LDcgKzI2MDQsNyBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIAogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBub2RlLT5tdWx0aVB1dEJ5T2Zmc2V0RGF0YSgpLnZhcmlh
bnRzLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgY29uc3QgUHV0QnlJZFZhcmlhbnQmIHZh
cmlhbnQgPSBub2RlLT5tdWx0aVB1dEJ5T2Zmc2V0RGF0YSgpLnZhcmlhbnRzW2ldOwotICAgICAg
ICAgICAgU3RydWN0dXJlU2V0IHRoaXNTZXQgPSB2YXJpYW50Lm9sZFN0cnVjdHVyZSgpOworICAg
ICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCB0aGlzU2V0ID0gKm1fZ3JhcGguYWRkU3Ry
dWN0dXJlU2V0KHZhcmlhbnQub2xkU3RydWN0dXJlKCkpOwogICAgICAgICAgICAgdGhpc1NldC5m
aWx0ZXIoYmFzZSk7CiAgICAgICAgICAgICBpZiAodGhpc1NldC5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CkBAIC0yNjE0LDExICsyNjE0LDEyIEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIHJlc3VsdGluZ1ZhbHVlLm1l
cmdlKHRoaXNWYWx1ZSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICh2YXJpYW50Lmtp
bmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6VHJhbnNpdGlvbikgewotICAgICAgICAgICAgICAgIGlm
ICh0aGlzU2V0Lm9ubHlTdHJ1Y3R1cmUoKSAhPSB2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKSB7Cisg
ICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBuZXdTdHJ1Y3R1cmUgPSBtX2dyYXBo
LnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOworICAgICAgICAgICAg
ICAgIGlmICh0aGlzU2V0Lm9ubHlTdHJ1Y3R1cmUoKSAhPSBuZXdTdHJ1Y3R1cmUpIHsKICAgICAg
ICAgICAgICAgICAgICAgdHJhbnNpdGlvbnMuYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICAg
ICAgVHJhbnNpdGlvbih2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKSwgdmFyaWFu
dC5uZXdTdHJ1Y3R1cmUoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNpdGlvbiht
X2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlv
bigpKSwgbmV3U3RydWN0dXJlKSk7CiAgICAgICAgICAgICAgICAgfSAvLyBlbHNlIHRoaXMgaXMg
cmVhbGx5IGEgcmVwbGFjZS4KLSAgICAgICAgICAgICAgICBuZXdTZXQuYWRkKHZhcmlhbnQubmV3
U3RydWN0dXJlKCkpOworICAgICAgICAgICAgICAgIG5ld1NldC5hZGQobmV3U3RydWN0dXJlKTsK
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQua2lu
ZCgpID09IFB1dEJ5SWRWYXJpYW50OjpSZXBsYWNlKTsKICAgICAgICAgICAgICAgICBuZXdTZXQu
bWVyZ2UodGhpc1NldCk7CkBAIC0yNzA1LDI1ICsyNzA2LDI1IEBAIGJvb2wgQWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgaWYgKHZhbHVlLm1fc3RydWN0dXJlLmlz
RmluaXRlKCkpIHsKICAgICAgICAgICAgIFB1dEJ5SWRTdGF0dXMgc3RhdHVzID0gUHV0QnlJZFN0
YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgICAgICBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAgIHZhbHVlLm1fc3RydWN0
dXJlLnNldCgpLAorICAgICAgICAgICAgICAgIHZhbHVlLm1fc3RydWN0dXJlLnRvU3RydWN0dXJl
U2V0KCksCiAgICAgICAgICAgICAgICAgbV9ncmFwaC5pZGVudGlmaWVycygpW25vZGUtPmlkZW50
aWZpZXJOdW1iZXIoKV0sCiAgICAgICAgICAgICAgICAgbm9kZS0+b3AoKSA9PSBQdXRCeUlkRGly
ZWN0KTsKIAogICAgICAgICAgICAgaWYgKHN0YXR1cy5pc1NpbXBsZSgpKSB7Ci0gICAgICAgICAg
ICAgICAgU3RydWN0dXJlU2V0IG5ld1NldDsKKyAgICAgICAgICAgICAgICBSZWdpc3RlcmVkU3Ry
dWN0dXJlU2V0IG5ld1NldDsKICAgICAgICAgICAgICAgICBUcmFuc2l0aW9uVmVjdG9yIHRyYW5z
aXRpb25zOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IHN0YXR1cy5udW1WYXJpYW50cygpOyBpLS07KSB7CiAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50ID0gc3RhdHVzW2ldOwogICAgICAgICAgICAgICAg
ICAgICBpZiAodmFyaWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb24pIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgbmV3U3RydWN0dXJl
ID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25zLmFwcGVuZCgKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUcmFuc2l0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKSwgdmFyaWFudC5uZXdTdHJ1Y3R1
cmUoKSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVy
ZSh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld1Nl
dC5hZGQodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JU
cmFuc2l0aW9uKCkpLCBuZXdTdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5l
d1NldC5hZGQobmV3U3RydWN0dXJlKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCh2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlkVmFy
aWFudDo6UmVwbGFjZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXdTZXQubWVyZ2UodmFy
aWFudC5vbGRTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXdTZXQubWVy
Z2UoKm1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQub2xkU3RydWN0dXJlKCkpKTsKICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAK
QEAgLTMwNTksNyArMzA2MCw3IEBAIHZvaWQgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0
YXRlVHkKIAogdGVtcGxhdGU8dHlwZW5hbWUgQWJzdHJhY3RTdGF0ZVR5cGU+CiB2b2lkIEFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpvYnNlcnZlVHJhbnNpdGlvbigKLSAg
ICB1bnNpZ25lZCBjbG9iYmVyTGltaXQsIFN0cnVjdHVyZSogZnJvbSwgU3RydWN0dXJlKiB0bykK
KyAgICB1bnNpZ25lZCBjbG9iYmVyTGltaXQsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgZnJvbSwgUmVn
aXN0ZXJlZFN0cnVjdHVyZSB0bykKIHsKICAgICBBYnN0cmFjdFZhbHVlOjpUcmFuc2l0aW9uT2Jz
ZXJ2ZXIgdHJhbnNpdGlvbk9ic2VydmVyKGZyb20sIHRvKTsKICAgICBmb3JBbGxWYWx1ZXMoY2xv
YmJlckxpbWl0LCB0cmFuc2l0aW9uT2JzZXJ2ZXIpOwpAQCAtMzEzMiw3ICszMTMzLDcgQEAgdm9p
ZCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBBYnN0cmFjdFN0YXRlVHlwZT4KIEZpbHRyYXRpb25SZXN1bHQgQWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHlwZT46OmZpbHRlcigKLSAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSwg
Y29uc3QgU3RydWN0dXJlU2V0JiBzZXQsIFNwZWN1bGF0ZWRUeXBlIGFkbWl0dGVkVHlwZXMpCisg
ICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUsIGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIHNl
dCwgU3BlY3VsYXRlZFR5cGUgYWRtaXR0ZWRUeXBlcykKIHsKICAgICBpZiAodmFsdWUuZmlsdGVy
KG1fZ3JhcGgsIHNldCwgYWRtaXR0ZWRUeXBlcykgPT0gRmlsdHJhdGlvbk9LKQogICAgICAgICBy
ZXR1cm4gRmlsdHJhdGlvbk9LOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0VmFsdWUuY3BwCShyZXZpc2lvbiAyMTExMDcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw4
ICs1MiwxMCBAQCB2b2lkIEFic3RyYWN0VmFsdWU6OnNldChHcmFwaCYgZ3JhcGgsIGNvCiB7CiAg
ICAgaWYgKCEhdmFsdWUgJiYgdmFsdWUudmFsdWUoKS5pc0NlbGwoKSkgewogICAgICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IHZhbHVlLnN0cnVjdHVyZSgpOwotICAgICAgICBpZiAoZ3JhcGgu
cmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKSA9PSBTdHJ1Y3R1cmVSZWdpc3RlcmVkQW5kV2F0
Y2hlZCkgewotICAgICAgICAgICAgbV9zdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CisgICAgICAgIFN0
cnVjdHVyZVJlZ2lzdHJhdGlvblJlc3VsdCByZXN1bHQ7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1
Y3R1cmUgUmVnaXN0ZXJlZFN0cnVjdHVyZSA9IGdyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVj
dHVyZSwgcmVzdWx0KTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBTdHJ1Y3R1cmVSZWdpc3RlcmVk
QW5kV2F0Y2hlZCkgeworICAgICAgICAgICAgbV9zdHJ1Y3R1cmUgPSBSZWdpc3RlcmVkU3RydWN0
dXJlOwogICAgICAgICAgICAgaWYgKGNsb2JiZXJTdGF0ZSA9PSBTdHJ1Y3R1cmVzQXJlQ2xvYmJl
cmVkKSB7CiAgICAgICAgICAgICAgICAgbV9hcnJheU1vZGVzID0gQUxMX0FSUkFZX01PREVTOwog
ICAgICAgICAgICAgICAgIG1fc3RydWN0dXJlLmNsb2JiZXIoKTsKQEAgLTc3LDE4ICs3OSwyMyBA
QCB2b2lkIEFic3RyYWN0VmFsdWU6OnNldChHcmFwaCYgZ3JhcGgsIGNvCiAKIHZvaWQgQWJzdHJh
Y3RWYWx1ZTo6c2V0KEdyYXBoJiBncmFwaCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CisgICAg
c2V0KGdyYXBoLCBncmFwaC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpKTsKK30KKwordm9p
ZCBBYnN0cmFjdFZhbHVlOjpzZXQoR3JhcGgmIGdyYXBoLCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0
cnVjdHVyZSkKK3sKICAgICBSRUxFQVNFX0FTU0VSVChzdHJ1Y3R1cmUpOwogICAgIAogICAgIG1f
c3RydWN0dXJlID0gc3RydWN0dXJlOwogICAgIG1fYXJyYXlNb2RlcyA9IGFzQXJyYXlNb2Rlcyhz
dHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKTsKLSAgICBtX3R5cGUgPSBzcGVjdWxhdGlvbkZyb21T
dHJ1Y3R1cmUoc3RydWN0dXJlKTsKKyAgICBtX3R5cGUgPSBzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1
cmUoc3RydWN0dXJlLmdldCgpKTsKICAgICBtX3ZhbHVlID0gSlNWYWx1ZSgpOwogICAgIAogICAg
IGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICBhc3NlcnRJc1JlZ2lzdGVyZWQoZ3JhcGgpOwogfQog
Ci12b2lkIEFic3RyYWN0VmFsdWU6OnNldChHcmFwaCYgZ3JhcGgsIGNvbnN0IFN0cnVjdHVyZVNl
dCYgc2V0KQordm9pZCBBYnN0cmFjdFZhbHVlOjpzZXQoR3JhcGgmIGdyYXBoLCBjb25zdCBSZWdp
c3RlcmVkU3RydWN0dXJlU2V0JiBzZXQpCiB7CiAgICAgbV9zdHJ1Y3R1cmUgPSBzZXQ7CiAgICAg
bV9hcnJheU1vZGVzID0gc2V0LmFycmF5TW9kZXNGcm9tU3RydWN0dXJlcygpOwpAQCAtMTA0LDkg
KzExMSw5IEBAIHZvaWQgQWJzdHJhY3RWYWx1ZTo6c2V0VHlwZShHcmFwaCYgZ3JhcGgKICAgICBT
cGVjdWxhdGVkVHlwZSBjZWxsVHlwZSA9IHR5cGUgJiBTcGVjQ2VsbDsKICAgICBpZiAoY2VsbFR5
cGUpIHsKICAgICAgICAgaWYgKCEoY2VsbFR5cGUgJiB+U3BlY1N0cmluZykpCi0gICAgICAgICAg
ICBtX3N0cnVjdHVyZSA9IGdyYXBoLm1fdm0uc3RyaW5nU3RydWN0dXJlLmdldCgpOworICAgICAg
ICAgICAgbV9zdHJ1Y3R1cmUgPSBncmFwaC5zdHJpbmdTdHJ1Y3R1cmU7CiAgICAgICAgIGVsc2Ug
aWYgKGlzU3ltYm9sU3BlY3VsYXRpb24oY2VsbFR5cGUpKQotICAgICAgICAgICAgbV9zdHJ1Y3R1
cmUgPSBncmFwaC5tX3ZtLnN5bWJvbFN0cnVjdHVyZS5nZXQoKTsKKyAgICAgICAgICAgIG1fc3Ry
dWN0dXJlID0gZ3JhcGguc3ltYm9sU3RydWN0dXJlOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBtX3N0cnVjdHVyZS5tYWtlVG9wKCk7CiAgICAgICAgIG1fYXJyYXlNb2RlcyA9IEFMTF9BUlJB
WV9NT0RFUzsKQEAgLTIxNyw3ICsyMjQsNyBAQCBib29sIEFic3RyYWN0VmFsdWU6Om1lcmdlT1NS
RW50cnlWYWx1ZShHCiAgICAgaWYgKGlzQ2xlYXIoKSkgewogICAgICAgICBGcm96ZW5WYWx1ZSog
ZnJvemVuVmFsdWUgPSBncmFwaC5mcmVlemUodmFsdWUpOwogICAgICAgICBpZiAoZnJvemVuVmFs
dWUtPnBvaW50c1RvSGVhcCgpKSB7Ci0gICAgICAgICAgICBtX3N0cnVjdHVyZSA9IGZyb3plblZh
bHVlLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgIG1fc3RydWN0dXJlID0gZ3JhcGgucmVnaXN0
ZXJTdHJ1Y3R1cmUoZnJvemVuVmFsdWUtPnN0cnVjdHVyZSgpKTsKICAgICAgICAgICAgIG1fYXJy
YXlNb2RlcyA9IGFzQXJyYXlNb2Rlcyhmcm96ZW5WYWx1ZS0+c3RydWN0dXJlKCktPmluZGV4aW5n
VHlwZSgpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1fc3RydWN0dXJlLmNsZWFy
KCk7CkBAIC0yMjksMTAgKzIzNiw5IEBAIGJvb2wgQWJzdHJhY3RWYWx1ZTo6bWVyZ2VPU1JFbnRy
eVZhbHVlKEcKICAgICB9IGVsc2UgewogICAgICAgICBtZXJnZVNwZWN1bGF0aW9uKG1fdHlwZSwg
c3BlY3VsYXRpb25Gcm9tVmFsdWUodmFsdWUpKTsKICAgICAgICAgaWYgKCEhdmFsdWUgJiYgdmFs
dWUuaXNDZWxsKCkpIHsKLSAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdmFsdWUu
YXNDZWxsKCktPnN0cnVjdHVyZSgpOwotICAgICAgICAgICAgZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1
cmUoc3RydWN0dXJlKTsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJl
ID0gZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSgpKTsK
ICAgICAgICAgICAgIG1lcmdlQXJyYXlNb2RlcyhtX2FycmF5TW9kZXMsIGFzQXJyYXlNb2Rlcyhz
dHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSk7Ci0gICAgICAgICAgICBtX3N0cnVjdHVyZS5tZXJn
ZShTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSk7CisgICAgICAgICAgICBtX3N0cnVjdHVyZS5tZXJn
ZShSZWdpc3RlcmVkU3RydWN0dXJlU2V0KHN0cnVjdHVyZSkpOwogICAgICAgICB9CiAgICAgICAg
IGlmIChtX3ZhbHVlICE9IHZhbHVlKQogICAgICAgICAgICAgbV92YWx1ZSA9IEpTVmFsdWUoKTsK
QEAgLTI1Niw3ICsyNjIsNyBAQCBib29sIEFic3RyYWN0VmFsdWU6OmlzVHlwZShHcmFwaCYgZ3Jh
cGgsCiB9CiAKIEZpbHRyYXRpb25SZXN1bHQgQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyKAotICAgIEdy
YXBoJiBncmFwaCwgY29uc3QgU3RydWN0dXJlU2V0JiBvdGhlciwgU3BlY3VsYXRlZFR5cGUgYWRt
aXR0ZWRUeXBlcykKKyAgICBHcmFwaCYgZ3JhcGgsIGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVT
ZXQmIG90aGVyLCBTcGVjdWxhdGVkVHlwZSBhZG1pdHRlZFR5cGVzKQogewogICAgIEFTU0VSVCgh
KGFkbWl0dGVkVHlwZXMgJiBTcGVjQ2VsbCkpOwogICAgIApAQCAtMjcyLDEwICsyNzgsMTAgQEAg
RmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdFZhbHVlOjpmaWx0ZXIoCiAgICAgbV9zdHJ1Y3R1cmUu
ZmlsdGVyKG90aGVyKTsKICAgICAKICAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgcHJpb3IgdG8g
dGhlIGFib3ZlIHR3byBzdGF0ZW1lbnRzIHdlIGhhZCAoRm9vLCBUT1ApLCB3aGVyZQotICAgIC8v
IEZvbyBpcyBhIFNwZWN1bGF0ZWRUeXBlIHRoYXQgaXMgZGlzam9pbnQgd2l0aCB0aGUgcGFzc2Vk
IFN0cnVjdHVyZVNldC4gSW4gdGhhdAorICAgIC8vIEZvbyBpcyBhIFNwZWN1bGF0ZWRUeXBlIHRo
YXQgaXMgZGlzam9pbnQgd2l0aCB0aGUgcGFzc2VkIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQuIElu
IHRoYXQKICAgICAvLyBjYXNlLCB3ZSB3aWxsIG5vdyBoYXZlIChOb25lLCBbc29tZVN0cnVjdHVy
ZV0pLiBJbiBnZW5lcmFsLCB3ZSBuZWVkIHRvIG1ha2UKICAgICAvLyBzdXJlIHRoYXQgbmV3IGlu
Zm9ybWF0aW9uIGdsZWFuZWQgZnJvbSB0aGUgU3BlY3VsYXRlZFR5cGUgbmVlZHMgdG8gYmUgZmVk
IGJhY2sKLSAgICAvLyBpbnRvIHRoZSBpbmZvcm1hdGlvbiBnbGVhbmVkIGZyb20gdGhlIFN0cnVj
dHVyZVNldC4KKyAgICAvLyBpbnRvIHRoZSBpbmZvcm1hdGlvbiBnbGVhbmVkIGZyb20gdGhlIFJl
Z2lzdGVyZWRTdHJ1Y3R1cmVTZXQuCiAgICAgbV9zdHJ1Y3R1cmUuZmlsdGVyKG1fdHlwZSk7CiAg
ICAgCiAgICAgZmlsdGVyQXJyYXlNb2Rlc0J5VHlwZSgpOwpAQCAtMjgzLDcgKzI4OSw3IEBAIEZp
bHRyYXRpb25SZXN1bHQgQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyKAogICAgIHJldHVybiBub3JtYWxp
emVDbGFyaXR5KGdyYXBoKTsKIH0KIAotRmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdFZhbHVlOjpj
aGFuZ2VTdHJ1Y3R1cmUoR3JhcGgmIGdyYXBoLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKQor
RmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdFZhbHVlOjpjaGFuZ2VTdHJ1Y3R1cmUoR3JhcGgmIGdy
YXBoLCBjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0JiBvdGhlcikKIHsKICAgICBtX3R5cGUg
Jj0gb3RoZXIuc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlcygpOwogICAgIG1fYXJyYXlNb2RlcyA9
IG90aGVyLmFycmF5TW9kZXNGcm9tU3RydWN0dXJlcygpOwpAQCAtMzYxLDEwICszNjcsMTAgQEAg
RmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdFZhbHVlOjpmaWx0ZXJCeQogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLWJvb2wgQWJzdHJhY3RWYWx1ZTo6Y29udGFpbnMoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpIGNvbnN0Citib29sIEFic3RyYWN0VmFsdWU6OmNvbnRhaW5zKFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUgc3RydWN0dXJlKSBjb25zdAogewotICAgIHJldHVybiBjb3VsZEJlVHlwZShzcGVjdWxhdGlv
bkZyb21TdHJ1Y3R1cmUoc3RydWN0dXJlKSkKLSAgICAgICAgJiYgKG1fYXJyYXlNb2RlcyAmIGFy
cmF5TW9kZUZyb21TdHJ1Y3R1cmUoc3RydWN0dXJlKSkKKyAgICByZXR1cm4gY291bGRCZVR5cGUo
c3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKHN0cnVjdHVyZS5nZXQoKSkpCisgICAgICAgICYmICht
X2FycmF5TW9kZXMgJiBhcnJheU1vZGVGcm9tU3RydWN0dXJlKHN0cnVjdHVyZS5nZXQoKSkpCiAg
ICAgICAgICYmIG1fc3RydWN0dXJlLmNvbnRhaW5zKHN0cnVjdHVyZSk7CiB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCShyZXZpc2lvbiAy
MTExMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIlJlc3VsdFR5cGUuaCIK
ICNpbmNsdWRlICJTcGVjdWxhdGVkVHlwZS5oIgogI2luY2x1ZGUgIkR1bXBDb250ZXh0LmgiCi0j
aW5jbHVkZSAiU3RydWN0dXJlU2V0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0xMjAsNyAr
MTE5LDcgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgICAgICB2YWx1ZS5vYnNlcnZlSW52
YWxpZGF0aW9uUG9pbnQoKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBvYnNlcnZlVHJhbnNpdGlv
bihTdHJ1Y3R1cmUqIGZyb20sIFN0cnVjdHVyZSogdG8pCisgICAgdm9pZCBvYnNlcnZlVHJhbnNp
dGlvbihSZWdpc3RlcmVkU3RydWN0dXJlIGZyb20sIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgdG8pCiAg
ICAgewogICAgICAgICBpZiAobV90eXBlICYgU3BlY0NlbGwpIHsKICAgICAgICAgICAgIG1fc3Ry
dWN0dXJlLm9ic2VydmVUcmFuc2l0aW9uKGZyb20sIHRvKTsKQEAgLTEzMyw3ICsxMzIsNyBAQCBz
dHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgCiAgICAgY2xhc3MgVHJhbnNpdGlvbk9ic2VydmVy
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFRyYW5zaXRpb25PYnNlcnZlcihTdHJ1Y3R1cmUqIGZy
b20sIFN0cnVjdHVyZSogdG8pCisgICAgICAgIFRyYW5zaXRpb25PYnNlcnZlcihSZWdpc3RlcmVk
U3RydWN0dXJlIGZyb20sIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgdG8pCiAgICAgICAgICAgICA6IG1f
ZnJvbShmcm9tKQogICAgICAgICAgICAgLCBtX3RvKHRvKQogICAgICAgICB7CkBAIC0xNDQsOCAr
MTQzLDggQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgICAgICAgICAgdmFsdWUub2JzZXJ2
ZVRyYW5zaXRpb24obV9mcm9tLCBtX3RvKTsKICAgICAgICAgfQogICAgIHByaXZhdGU6Ci0gICAg
ICAgIFN0cnVjdHVyZSogbV9mcm9tOwotICAgICAgICBTdHJ1Y3R1cmUqIG1fdG87CisgICAgICAg
IFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgbV9mcm9tOworICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJl
IG1fdG87CiAgICAgfTsKICAgICAKICAgICBjbGFzcyBUcmFuc2l0aW9uc09ic2VydmVyIHsKQEAg
LTIwOSw3ICsyMDgsOCBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgCiAgICAgdm9pZCBz
ZXQoR3JhcGgmLCBjb25zdCBGcm96ZW5WYWx1ZSYsIFN0cnVjdHVyZUNsb2JiZXJTdGF0ZSk7CiAg
ICAgdm9pZCBzZXQoR3JhcGgmLCBTdHJ1Y3R1cmUqKTsKLSAgICB2b2lkIHNldChHcmFwaCYsIGNv
bnN0IFN0cnVjdHVyZVNldCYpOworICAgIHZvaWQgc2V0KEdyYXBoJiwgUmVnaXN0ZXJlZFN0cnVj
dHVyZSk7CisgICAgdm9pZCBzZXQoR3JhcGgmLCBjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0
Jik7CiAgICAgCiAgICAgLy8gU2V0IHRoaXMgdmFsdWUgdG8gcmVwcmVzZW50IHRoZSBnaXZlbiBz
ZXQgb2YgdHlwZXMgYXMgcHJlY2lzZWx5IGFzIHBvc3NpYmxlLgogICAgIHZvaWQgc2V0VHlwZShH
cmFwaCYsIFNwZWN1bGF0ZWRUeXBlKTsKQEAgLTMwMSw3ICszMDEsNyBAQCBzdHJ1Y3QgQWJzdHJh
Y3RWYWx1ZSB7CiAgICAgLy8gU3BlY0NlbGwuIEhlbmNlLCBhZnRlciB0aGlzIGNhbGwsIHRoZSB2
YWx1ZSB3aWxsIG5vIGxvbmdlciBoYXZlIGFueSBub24tY2VsbCBtZW1iZXJzLiBCdXQsIHlvdSBj
YW4KICAgICAvLyB1c2UgYWRtaXR0ZWRUeXBlcyB0byBwcmVzZXJ2ZSBzb21lIG5vbi1jZWxsIHR5
cGVzLiBOb3RlIHRoYXQgaXQncyB3cm9uZyBmb3IgYWRtaXR0ZWRUeXBlcyB0byBvdmVybGFwCiAg
ICAgLy8gd2l0aCBTcGVjQ2VsbC4KLSAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlcihHcmFwaCYs
IGNvbnN0IFN0cnVjdHVyZVNldCYsIFNwZWN1bGF0ZWRUeXBlIGFkbWl0dGVkVHlwZXMgPSBTcGVj
Tm9uZSk7CisgICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0ZXIoR3JhcGgmLCBjb25zdCBSZWdpc3Rl
cmVkU3RydWN0dXJlU2V0JiwgU3BlY3VsYXRlZFR5cGUgYWRtaXR0ZWRUeXBlcyA9IFNwZWNOb25l
KTsKICAgICAKICAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlckFycmF5TW9kZXMoQXJyYXlNb2Rl
cyk7CiAgICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0ZXIoU3BlY3VsYXRlZFR5cGUpOwpAQCAtMzEx
LDkgKzMxMSw5IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKIAogICAgIEZpbHRyYXRpb25SZXN1
bHQgZmlsdGVyKEdyYXBoJiwgY29uc3QgSW5mZXJyZWRUeXBlOjpEZXNjcmlwdG9yJik7CiAgICAg
Ci0gICAgRmlsdHJhdGlvblJlc3VsdCBjaGFuZ2VTdHJ1Y3R1cmUoR3JhcGgmLCBjb25zdCBTdHJ1
Y3R1cmVTZXQmKTsKKyAgICBGaWx0cmF0aW9uUmVzdWx0IGNoYW5nZVN0cnVjdHVyZShHcmFwaCYs
IGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmKTsKICAgICAKLSAgICBib29sIGNvbnRhaW5z
KFN0cnVjdHVyZSopIGNvbnN0OworICAgIGJvb2wgY29udGFpbnMoUmVnaXN0ZXJlZFN0cnVjdHVy
ZSkgY29uc3Q7CiAKICAgICBib29sIHZhbGlkYXRlKEpTVmFsdWUgdmFsdWUpIGNvbnN0CiAgICAg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlv
blBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fy
Z3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMTExMDcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOTMsNyArMzkzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlKTsKIAotICAgICAgICAg
ICAgICAgICAgICBpZiAoIW5vZGUtPnN0cnVjdHVyZVNldCgpLmNvbnRhaW5zKHN0cnVjdHVyZSkp
CisgICAgICAgICAgICAgICAgICAgIGlmICghbm9kZS0+c3RydWN0dXJlU2V0KCkuY29udGFpbnMo
bV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIGVzY2FwZShub2RlLT5jaGlsZDEoKSwgbm9kZSk7CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXJyYXlNb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0FycmF5TW9kZS5jcHAJKHJldmlzaW9uIDIxMTEwNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYwLDEyICsz
NjAsMTIgQEAgYm9vbCBBcnJheU1vZGU6OmFscmVhZHlDaGVja2VkKEdyYXBoJiBncgogICAgICAg
ICBpZiAodmFsdWUubV9zdHJ1Y3R1cmUuaXNUb3AoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gdmFsdWUubV9zdHJ1Y3R1cmUuc2l6ZSgpOyBp
LS07KSB7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZhbHVlLm1fc3RydWN0
dXJlW2ldOworICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSB2YWx1
ZS5tX3N0cnVjdHVyZVtpXTsKICAgICAgICAgICAgIGlmICgoc3RydWN0dXJlLT5pbmRleGluZ1R5
cGUoKSAmIEluZGV4aW5nU2hhcGVNYXNrKSAhPSBzaGFwZSkKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICBpZiAoIShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpICYg
SXNBcnJheSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYg
KCFncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+aXNPcmlnaW5h
bEFycmF5U3RydWN0dXJlKHN0cnVjdHVyZSkpCisgICAgICAgICAgICBpZiAoIWdyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5pc09yaWdpbmFsQXJyYXlTdHJ1Y3R1
cmUoc3RydWN0dXJlLmdldCgpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0zNzcsNyArMzc3LDcgQEAgYm9vbCBBcnJh
eU1vZGU6OmFscmVhZHlDaGVja2VkKEdyYXBoJiBncgogICAgICAgICBpZiAodmFsdWUubV9zdHJ1
Y3R1cmUuaXNUb3AoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gdmFsdWUubV9zdHJ1Y3R1cmUuc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgICAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZhbHVlLm1fc3RydWN0dXJlW2ldOworICAgICAgICAg
ICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSB2YWx1ZS5tX3N0cnVjdHVyZVtpXTsK
ICAgICAgICAgICAgIGlmICgoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSAmIEluZGV4aW5nU2hh
cGVNYXNrKSAhPSBzaGFwZSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICBpZiAoIShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpICYgSXNBcnJheSkpCkBAIC0zOTIs
NyArMzkyLDcgQEAgYm9vbCBBcnJheU1vZGU6OmFscmVhZHlDaGVja2VkKEdyYXBoJiBncgogICAg
ICAgICBpZiAodmFsdWUubV9zdHJ1Y3R1cmUuaXNUb3AoKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gdmFsdWUubV9zdHJ1Y3R1cmUuc2l6ZSgp
OyBpLS07KSB7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZhbHVlLm1fc3Ry
dWN0dXJlW2ldOworICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSB2
YWx1ZS5tX3N0cnVjdHVyZVtpXTsKICAgICAgICAgICAgIGlmICgoc3RydWN0dXJlLT5pbmRleGlu
Z1R5cGUoKSAmIEluZGV4aW5nU2hhcGVNYXNrKSAhPSBzaGFwZSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTQ0MCw3ICs0NDAsNyBAQCBib29sIEFycmF5TW9k
ZTo6YWxyZWFkeUNoZWNrZWQoR3JhcGgmIGdyCiAgICAgICAgICAgICBpZiAodmFsdWUubV9zdHJ1
Y3R1cmUuaXNUb3AoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSB2YWx1ZS5tX3N0cnVjdHVyZS5zaXplKCk7IGktLTspIHsKLSAg
ICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZhbHVlLm1fc3RydWN0dXJlW2ld
OworICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gdmFsdWUu
bV9zdHJ1Y3R1cmVbaV07CiAgICAgICAgICAgICAgICAgaWYgKCFoYXNBbnlBcnJheVN0b3JhZ2Uo
c3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgICAgICBpZiAoIShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpICYg
SXNBcnJheSkpCkBAIC00NTUsNyArNDU1LDcgQEAgYm9vbCBBcnJheU1vZGU6OmFscmVhZHlDaGVj
a2VkKEdyYXBoJiBncgogICAgICAgICAgICAgaWYgKHZhbHVlLm1fc3RydWN0dXJlLmlzVG9wKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gdmFsdWUubV9zdHJ1Y3R1cmUuc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgICAgICAgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2YWx1ZS5tX3N0cnVjdHVyZVtpXTsKKyAgICAgICAgICAg
ICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IHZhbHVlLm1fc3RydWN0dXJlW2ld
OwogICAgICAgICAgICAgICAgIGlmICghaGFzQW55QXJyYXlTdG9yYWdlKHN0cnVjdHVyZS0+aW5k
ZXhpbmdUeXBlKCkpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5aWZ5U2xvd1Bh
dGhHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaAkocmV2aXNpb24gMjExMTA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgICAgICA6IEp1bXBpbmdTbG93
UGF0aEdlbmVyYXRvcjxNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Q+KGZyb20sIGppdCkKICAgICAg
ICAgLCBtX29wKG5vZGUtPm9wKCkpCiAgICAgICAgICwgbV9hcnJheU1vZGUobm9kZS0+YXJyYXlN
b2RlKCkpCi0gICAgICAgICwgbV9zdHJ1Y3R1cmUobm9kZS0+b3AoKSA9PSBBcnJheWlmeVRvU3Ry
dWN0dXJlID8gbm9kZS0+c3RydWN0dXJlKCkgOiAwKQorICAgICAgICAsIG1fc3RydWN0dXJlKG5v
ZGUtPm9wKCkgPT0gQXJyYXlpZnlUb1N0cnVjdHVyZSA/IG5vZGUtPnN0cnVjdHVyZSgpIDogUmVn
aXN0ZXJlZFN0cnVjdHVyZSgpKQogICAgICAgICAsIG1fYmFzZUdQUihiYXNlR1BSKQogICAgICAg
ICAsIG1fcHJvcGVydHlHUFIocHJvcGVydHlHUFIpCiAgICAgICAgICwgbV90ZW1wR1BSKHRlbXBH
UFIpCkBAIC0xMTUsNyArMTE1LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBqaXQtPm1faml0LmV4
Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIAogICAgICAgICBpZiAobV9vcCA9PSBBcnJheWlmeVRv
U3RydWN0dXJlKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUpOworICAgICAgICAg
ICAgQVNTRVJUKG1fc3RydWN0dXJlLmdldCgpKTsKICAgICAgICAgICAgIG1fYmFkSW5kZXhpbmdU
eXBlSnVtcC5maWxsKAogICAgICAgICAgICAgICAgIGppdCwgaml0LT5tX2ppdC5icmFuY2hXZWFr
U3RydWN0dXJlKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MobV9iYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCBtX3N0cnVjdHVyZSkp
OwogICAgICAgICB9IGVsc2UgewpAQCAtMTM2LDcgKzEzNiw3IEBAIHByb3RlY3RlZDoKIHByaXZh
dGU6CiAgICAgTm9kZVR5cGUgbV9vcDsKICAgICBBcnJheU1vZGUgbV9hcnJheU1vZGU7Ci0gICAg
U3RydWN0dXJlKiBtX3N0cnVjdHVyZTsKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG1fc3RydWN0
dXJlOwogICAgIEdQUlJlZyBtX2Jhc2VHUFI7CiAgICAgR1BSUmVnIG1fcHJvcGVydHlHUFI7CiAg
ICAgR1BSUmVnIG1fdGVtcEdQUjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAyMTExMDcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mjk2MCw3ICsyOTYwLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29uc3RhbnRJbnRl
cgogICAgICAgICAgICAgcmVzdWx0ID0gYWRkVG9HcmFwaChDYWxsU3RyaW5nQ29uc3RydWN0b3Is
IGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkpKTsKICAg
ICAgICAgCiAgICAgICAgIGlmIChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpCi0gICAgICAgICAg
ICByZXN1bHQgPSBhZGRUb0dyYXBoKE5ld1N0cmluZ09iamVjdCwgT3BJbmZvKGZ1bmN0aW9uLT5n
bG9iYWxPYmplY3QoKS0+c3RyaW5nT2JqZWN0U3RydWN0dXJlKCkpLCByZXN1bHQpOworICAgICAg
ICAgICAgcmVzdWx0ID0gYWRkVG9HcmFwaChOZXdTdHJpbmdPYmplY3QsIE9wSW5mbyhtX2dyYXBo
LnJlZ2lzdGVyU3RydWN0dXJlKGZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKS0+c3RyaW5nT2JqZWN0
U3RydWN0dXJlKCkpKSwgcmVzdWx0KTsKICAgICAgICAgCiAgICAgICAgIHNldChWaXJ0dWFsUmVn
aXN0ZXIocmVzdWx0T3BlcmFuZCksIHJlc3VsdCk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAt
Mjk3Miw3ICsyOTcyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29uc3RhbnRJbnRl
cgogCiAgICAgICAgIE5vZGUqIHJlc3VsdDsKICAgICAgICAgaWYgKGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzIDw9IDEpCi0gICAgICAgICAgICByZXN1bHQgPSBhZGRUb0dyYXBoKE5ld09iamVj
dCwgT3BJbmZvKGZ1bmN0aW9uLT5nbG9iYWxPYmplY3QoKS0+b2JqZWN0U3RydWN0dXJlRm9yT2Jq
ZWN0Q29uc3RydWN0b3IoKSkpOworICAgICAgICAgICAgcmVzdWx0ID0gYWRkVG9HcmFwaChOZXdP
YmplY3QsIE9wSW5mbyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGZ1bmN0aW9uLT5nbG9iYWxP
YmplY3QoKS0+b2JqZWN0U3RydWN0dXJlRm9yT2JqZWN0Q29uc3RydWN0b3IoKSkpKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgcmVzdWx0ID0gYWRkVG9HcmFwaChDYWxsT2JqZWN0Q29uc3Ry
dWN0b3IsIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkp
KTsKICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgcmVzdWx0KTsK
QEAgLTMzODMsNyArMzM4Myw3IEBAIE5vZGUqIEJ5dGVDb2RlUGFyc2VyOjpsb2FkKAogICAgICAg
ICAgICAgLy8gV2UgZGlkIGVtaXQgYSBzdHJ1Y3R1cmUgY2hlY2suIFRoYXQgbWVhbnMgdGhhdCB3
ZSBoYXZlIGFuIG9wcG9ydHVuaXR5IHRvIGRvIGNvbnN0YW50IGZvbGRpbmcKICAgICAgICAgICAg
IC8vIGhlcmUsIHNpbmNlIHdlIGRpZG4ndCBkbyBpdCBhYm92ZS4KICAgICAgICAgICAgIEpTVmFs
dWUgY29uc3RhbnQgPSBtX2dyYXBoLnRyeUdldENvbnN0YW50UHJvcGVydHkoCi0gICAgICAgICAg
ICAgICAgYmFzZS0+YXNKU1ZhbHVlKCksIHZhcmlhbnQuc3RydWN0dXJlU2V0KCksIHZhcmlhbnQu
b2Zmc2V0KCkpOworICAgICAgICAgICAgICAgIGJhc2UtPmFzSlNWYWx1ZSgpLCAqbV9ncmFwaC5h
ZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSksIHZhcmlhbnQub2Zmc2V0KCkp
OwogICAgICAgICAgICAgaWYgKGNvbnN0YW50KQogICAgICAgICAgICAgICAgIHJldHVybiB3ZWFr
SlNDb25zdGFudChjb25zdGFudCk7CiAgICAgICAgIH0KQEAgLTM0MjksNyArMzQyOSw3IEBAIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICAgICAgaWYgKG9rKQotICAgICAgICAgICAgZ2V0QnlJZFN0YXR1cy5maWx0ZXIoYmFz
ZS0+c3RydWN0dXJlKCkpOworICAgICAgICAgICAgZ2V0QnlJZFN0YXR1cy5maWx0ZXIoYmFzZS0+
c3RydWN0dXJlKCkuZ2V0KCkpOwogICAgIH0KICAgICAKICAgICBOb2RlVHlwZSBnZXRCeUlkOwpA
QCAtMzQ4Miw3ICszNDgyLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgK
ICAgICAgICAgICAgIGlmICh2YXJpYW50LmNvbmRpdGlvblNldCgpLmlzRW1wdHkoKSkgewogICAg
ICAgICAgICAgICAgIGNhc2VzLmFwcGVuZCgKICAgICAgICAgICAgICAgICAgICAgTXVsdGlHZXRC
eU9mZnNldENhc2UoCi0gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50LnN0cnVjdHVyZVNl
dCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgKm1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHZh
cmlhbnQuc3RydWN0dXJlU2V0KCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgR2V0QnlPZmZz
ZXRNZXRob2Q6OmxvYWQodmFyaWFudC5vZmZzZXQoKSkpKTsKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIH0KQEAgLTM0OTQsNyArMzQ5NCw3IEBAIHZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNlcy5hcHBlbmQoTXVsdGlHZXRCeU9m
ZnNldENhc2UodmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSwgbWV0aG9kKSk7CisgICAgICAgICAgICBj
YXNlcy5hcHBlbmQoTXVsdGlHZXRCeU9mZnNldENhc2UoKm1fZ3JhcGguYWRkU3RydWN0dXJlU2V0
KHZhcmlhbnQuc3RydWN0dXJlU2V0KCkpLCBtZXRob2QpKTsKICAgICAgICAgfQogCiAgICAgICAg
IGlmIChtX2dyYXBoLmNvbXBpbGF0aW9uKCkpCkBAIC0zNjIxLDggKzM2MjEsMTMgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICAgICAgaWYgKG1fZ3JhcGguY29tcGls
YXRpb24oKSkKICAgICAgICAgICAgIG1fZ3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5l
ZFB1dEJ5SWQoKTsKIAotICAgICAgICBmb3IgKGNvbnN0IFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50
IDogcHV0QnlJZFN0YXR1cy52YXJpYW50cygpKQorICAgICAgICBmb3IgKGNvbnN0IFB1dEJ5SWRW
YXJpYW50JiB2YXJpYW50IDogcHV0QnlJZFN0YXR1cy52YXJpYW50cygpKSB7CiAgICAgICAgICAg
ICBtX2dyYXBoLnJlZ2lzdGVySW5mZXJyZWRUeXBlKHZhcmlhbnQucmVxdWlyZWRUeXBlKCkpOwor
ICAgICAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6IHZhcmlhbnQub2xkU3RydWN0
dXJlKCkpCisgICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1
cmUpOworICAgICAgICAgICAgaWYgKHZhcmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpU
cmFuc2l0aW9uKQorICAgICAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFy
aWFudC5uZXdTdHJ1Y3R1cmUoKSk7CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIE11bHRp
UHV0QnlPZmZzZXREYXRhKiBkYXRhID0gbV9ncmFwaC5tX211bHRpUHV0QnlPZmZzZXREYXRhLmFk
ZCgpOwogICAgICAgICBkYXRhLT52YXJpYW50cyA9IHB1dEJ5SWRTdGF0dXMudmFyaWFudHMoKTsK
QEAgLTM2NTMsNyArMzY1OCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQo
CiAgICAgCiAgICAgICAgIE5vZGUqIHByb3BlcnR5U3RvcmFnZTsKICAgICAgICAgVHJhbnNpdGlv
biogdHJhbnNpdGlvbiA9IG1fZ3JhcGgubV90cmFuc2l0aW9ucy5hZGQoCi0gICAgICAgICAgICB2
YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKSwgdmFyaWFudC5uZXdTdHJ1Y3R1cmUo
KSk7CisgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQub2xkU3Ry
dWN0dXJlRm9yVHJhbnNpdGlvbigpKSwgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50
Lm5ld1N0cnVjdHVyZSgpKSk7CiAKICAgICAgICAgaWYgKHZhcmlhbnQucmVhbGxvY2F0ZXNTdG9y
YWdlKCkpIHsKIApAQCAtMzkwMCw3ICszOTA1LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC53YXRjaHBv
aW50cygpLmFkZExhemlseShyYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0
KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGNhbGxlZSBpcyBzdGlsbCBsaXZl
IHVwIHRvIHRoaXMgcG9pbnQuCiAgICAgICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFBo
YW50b20sIGNhbGxlZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lz
dGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKE5ld09iamVj
dCwgT3BJbmZvKHN0cnVjdHVyZSkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldChWaXJ0
dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGFkZFRvR3JhcGgo
TmV3T2JqZWN0LCBPcEluZm8obV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpKSkp
OwogICAgICAgICAgICAgICAgICAgICAgICAgYWxyZWFkeUVtaXR0ZWQgPSB0cnVlOwogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtMzkxNSw3ICszOTIwLDcgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICBjYXNlIG9w
X25ld19vYmplY3Q6IHsKICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCksCiAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChOZXdP
YmplY3QsCi0gICAgICAgICAgICAgICAgICAgIE9wSW5mbyhjdXJyZW50SW5zdHJ1Y3Rpb25bM10u
dS5vYmplY3RBbGxvY2F0aW9uUHJvZmlsZS0+c3RydWN0dXJlKCkpKSk7CisgICAgICAgICAgICAg
ICAgICAgIE9wSW5mbyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGN1cnJlbnRJbnN0cnVjdGlv
blszXS51Lm9iamVjdEFsbG9jYXRpb25Qcm9maWxlLT5zdHJ1Y3R1cmUoKSkpKSk7CiAgICAgICAg
ICAgICBORVhUX09QQ09ERShvcF9uZXdfb2JqZWN0KTsKICAgICAgICAgfQogICAgICAgICAgICAg
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxBcnJheUFsbG9jYXRvclNs
b3dQYXRoR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oCShyZXZpc2lvbiAyMTEx
MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxBcnJheUFsbG9jYXRvclNs
b3dQYXRoR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3Mg
Q2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0bwogcHVibGljOgogICAgIENhbGxBcnJh
eUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cExpc3QgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgUF9KSVRPcGVyYXRpb25fRVN0WkIgZnVu
Y3Rpb24sCi0gICAgICAgIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzdG9yYWdlR1BSLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IHNpemUpCisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIs
IEdQUlJlZyBzdG9yYWdlR1BSLCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgc2l6ZV90
IHNpemUpCiAgICAgICAgIDogSnVtcGluZ1Nsb3dQYXRoR2VuZXJhdG9yPE1hY3JvQXNzZW1ibGVy
OjpKdW1wTGlzdD4oZnJvbSwgaml0KQogICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCiAg
ICAgICAgICwgbV9yZXN1bHRHUFIocmVzdWx0R1BSKQpAQCAtNjksNyArNjksNyBAQCBwcml2YXRl
OgogICAgIFBfSklUT3BlcmF0aW9uX0VTdFpCIG1fZnVuY3Rpb247CiAgICAgR1BSUmVnIG1fcmVz
dWx0R1BSOwogICAgIEdQUlJlZyBtX3N0b3JhZ2VHUFI7Ci0gICAgU3RydWN0dXJlKiBtX3N0cnVj
dHVyZTsKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG1fc3RydWN0dXJlOwogICAgIHNpemVfdCBt
X3NpemU7CiAgICAgVmVjdG9yPFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4sIDI+IG1fcGxhbnM7CiB9
OwpAQCAtNzgsNyArNzgsNyBAQCBjbGFzcyBDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVT
aXplCiBwdWJsaWM6CiAgICAgQ2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU2l6ZVNsb3dQ
YXRoR2VuZXJhdG9yKAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZnJvbSwgU3Bl
Y3VsYXRpdmVKSVQqIGppdCwgUF9KSVRPcGVyYXRpb25fRVN0WkIgZnVuY3Rpb24sCi0gICAgICAg
IEdQUlJlZyByZXN1bHRHUFIsIFN0cnVjdHVyZSogY29udGlndW91c1N0cnVjdHVyZSwgU3RydWN0
dXJlKiBhcnJheVN0b3JhZ2VTdHJ1Y3R1cmUsIEdQUlJlZyBzaXplR1BSLCBHUFJSZWcgc3RvcmFn
ZUdQUikKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBjb250
aWd1b3VzU3RydWN0dXJlLCBSZWdpc3RlcmVkU3RydWN0dXJlIGFycmF5U3RvcmFnZVN0cnVjdHVy
ZSwgR1BSUmVnIHNpemVHUFIsIEdQUlJlZyBzdG9yYWdlR1BSKQogICAgICAgICA6IEp1bXBpbmdT
bG93UGF0aEdlbmVyYXRvcjxNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Q+KGZyb20sIGppdCkKICAg
ICAgICAgLCBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQogICAgICAgICAsIG1fcmVzdWx0R1BSKHJlc3Vs
dEdQUikKQEAgLTk3LDE1ICs5NywxNSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX3BsYW5zLnNpemUoKTsgKytpKQogICAgICAgICAgICAgaml0LT5zaWxl
bnRTcGlsbChtX3BsYW5zW2ldKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBBc3NlbWJs
eUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIobV9zaXplR1BSLCBtX3N0b3JhZ2VHUFIpOwotICAg
ICAgICBpZiAobV9jb250aWd1b3VzU3RydWN0dXJlICE9IG1fYXJyYXlTdG9yYWdlT3JDb250aWd1
b3VzU3RydWN0dXJlKSB7CisgICAgICAgIGlmIChtX2NvbnRpZ3VvdXNTdHJ1Y3R1cmUuZ2V0KCkg
IT0gbV9hcnJheVN0b3JhZ2VPckNvbnRpZ3VvdXNTdHJ1Y3R1cmUuZ2V0KCkpIHsKICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGJpZ0xlbmd0aCA9IGppdC0+bV9qaXQuYnJhbmNoMzIo
TWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgbV9zaXplR1BSLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTMyKE1JTl9BUlJBWV9TVE9SQUdFX0NPTlNUUlVDVElPTl9MRU5HVEgpKTsKLSAg
ICAgICAgICAgIGppdC0+bV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0ciht
X2NvbnRpZ3VvdXNTdHJ1Y3R1cmUpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIGppdC0+bV9q
aXQubW92ZShTcGVjdWxhdGl2ZUpJVDo6VHJ1c3RlZEltbVB0cihtX2NvbnRpZ3VvdXNTdHJ1Y3R1
cmUpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUg
PSBqaXQtPm1faml0Lmp1bXAoKTsKICAgICAgICAgICAgIGJpZ0xlbmd0aC5saW5rKCZqaXQtPm1f
aml0KTsKLSAgICAgICAgICAgIGppdC0+bV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihtX2FycmF5U3RvcmFnZU9yQ29udGlndW91c1N0cnVjdHVyZSksIHNjcmF0Y2hHUFIp
OworICAgICAgICAgICAgaml0LT5tX2ppdC5tb3ZlKFNwZWN1bGF0aXZlSklUOjpUcnVzdGVkSW1t
UHRyKG1fYXJyYXlTdG9yYWdlT3JDb250aWd1b3VzU3RydWN0dXJlKSwgc2NyYXRjaEdQUik7CiAg
ICAgICAgICAgICBkb25lLmxpbmsoJmppdC0+bV9qaXQpOwogICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgIGppdC0+bV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2Nv
bnRpZ3VvdXNTdHJ1Y3R1cmUpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIGppdC0+bV9qaXQu
bW92ZShTcGVjdWxhdGl2ZUpJVDo6VHJ1c3RlZEltbVB0cihtX2NvbnRpZ3VvdXNTdHJ1Y3R1cmUp
LCBzY3JhdGNoR1BSKTsKICAgICAgICAgaml0LT5jYWxsT3BlcmF0aW9uKG1fZnVuY3Rpb24sIG1f
cmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBtX3NpemVHUFIsIG1fc3RvcmFnZUdQUik7CiAgICAgICAg
IEdQUlJlZyBjYW5UcmFtcGxlID0gU3BlY3VsYXRpdmVKSVQ6OnBpY2tDYW5UcmFtcGxlKG1fcmVz
dWx0R1BSKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9wbGFucy5zaXplKCk7IGktLTsp
CkBAIC0xMTcsOCArMTE3LDggQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBQX0pJVE9wZXJh
dGlvbl9FU3RaQiBtX2Z1bmN0aW9uOwogICAgIEdQUlJlZyBtX3Jlc3VsdEdQUjsKLSAgICBTdHJ1
Y3R1cmUqIG1fY29udGlndW91c1N0cnVjdHVyZTsKLSAgICBTdHJ1Y3R1cmUqIG1fYXJyYXlTdG9y
YWdlT3JDb250aWd1b3VzU3RydWN0dXJlOworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgbV9jb250
aWd1b3VzU3RydWN0dXJlOworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgbV9hcnJheVN0b3JhZ2VP
ckNvbnRpZ3VvdXNTdHJ1Y3R1cmU7CiAgICAgR1BSUmVnIG1fc2l6ZUdQUjsKICAgICBHUFJSZWcg
bV9zdG9yYWdlR1BSOwogICAgIFZlY3RvcjxTaWxlbnRSZWdpc3RlclNhdmVQbGFuLCAyPiBtX3Bs
YW5zOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxsQ3JlYXRlRGlyZWN0
QXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhbGxDcmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRv
ci5oCShyZXZpc2lvbiAyMTExMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
bGxDcmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIGNsYXNz
IENhbGxDcmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvciA6IHB1YmxpYyBKdW1w
aW5nU2xvd1BhdGhHZW5lcmF0b3I8TWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0PiB7CiBwdWJsaWM6
CiAgICAgQ2FsbENyZWF0ZURpcmVjdEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yKAotICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgR1BS
UmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsCisgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wTGlzdCBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBHUFJSZWcgcmVzdWx0R1BS
LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwKICAgICAgICAgR1BSUmVnIGxlbmd0aEdQ
UiwgdW5zaWduZWQgbWluQ2FwYWNpdHkpCiAgICAgICAgIDogSnVtcGluZ1Nsb3dQYXRoR2VuZXJh
dG9yPE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdD4oZnJvbSwgaml0KQogICAgICAgICAsIG1fcmVz
dWx0R1BSKHJlc3VsdEdQUikKQEAgLTY5LDcgKzY5LDcgQEAgcHJvdGVjdGVkOgogICAgIAogcHJp
dmF0ZToKICAgICBHUFJSZWcgbV9yZXN1bHRHUFI7Ci0gICAgU3RydWN0dXJlKiBtX3N0cnVjdHVy
ZTsKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG1fc3RydWN0dXJlOwogICAgIEdQUlJlZyBtX2xl
bmd0aEdQUjsKICAgICB1bnNpZ25lZCBtX21pbkNhcGFjaXR5OwogICAgIFZlY3RvcjxTaWxlbnRS
ZWdpc3RlclNhdmVQbGFuLCAyPiBtX3BsYW5zOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb21tb25EYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbW1vbkRhdGEuY3BwCShyZXZpc2lvbiAyMTExMDcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw4
ICs0Myw4IEBAIHZvaWQgQ29tbW9uRGF0YTo6bm90aWZ5Q29tcGlsaW5nU3RydWN0dXIKICAgICBw
bGFuLnRyYW5zaXRpb25zLmFkZExhemlseSgKICAgICAgICAgY29kZUJsb2NrLAogICAgICAgICBu
b2RlLT5vcmlnaW4uc2VtYW50aWMuY29kZU9yaWdpbk93bmVyKCksCi0gICAgICAgIG5vZGUtPnRy
YW5zaXRpb24oKS0+cHJldmlvdXMsCi0gICAgICAgIG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dCk7
CisgICAgICAgIG5vZGUtPnRyYW5zaXRpb24oKS0+cHJldmlvdXMuZ2V0KCksCisgICAgICAgIG5v
ZGUtPnRyYW5zaXRpb24oKS0+bmV4dC5nZXQoKSk7CiB9CiAKIENhbGxTaXRlSW5kZXggQ29tbW9u
RGF0YTo6YWRkQ29kZU9yaWdpbihDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cAkocmV2aXNpb24gMjExMTA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25z
dGFudEZvbGRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw3ICsxNDUsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICAgICAgICAgIGNh
c2UgQXJyYXlpZnlUb1N0cnVjdHVyZTogewogICAgICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUm
IHZhbHVlID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAg
ICBTdHJ1Y3R1cmVTZXQgc2V0OworICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVT
ZXQgc2V0OwogICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IEFycmF5aWZ5VG9TdHJ1
Y3R1cmUpCiAgICAgICAgICAgICAgICAgICAgIHNldCA9IG5vZGUtPnN0cnVjdHVyZSgpOwogICAg
ICAgICAgICAgICAgIGVsc2UKQEAgLTIwNiwxMSArMjA2LDExIEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlSW1tZWRpYXRlOiB7CiAg
ICAgICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5vZGUobm9k
ZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIFN0cnVjdHVyZVNldCYgc2V0ID0gbm9kZS0+
c3RydWN0dXJlU2V0KCk7CisgICAgICAgICAgICAgICAgY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVy
ZVNldCYgc2V0ID0gbm9kZS0+c3RydWN0dXJlU2V0KCk7CiAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgaWYgKHZhbHVlLnZhbHVlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYg
KFN0cnVjdHVyZSogc3RydWN0dXJlID0ganNEeW5hbWljQ2FzdDxTdHJ1Y3R1cmUqPih2YWx1ZS52
YWx1ZSgpKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldC5jb250YWlucyhzdHJ1
Y3R1cmUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0LmNvbnRhaW5zKG1fZ3Jh
cGgucmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKSkpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2ludGVycHJldGVyLmV4ZWN1dGUoaW5kZXhJbkJsb2NrKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbGltaW5hdGVkID0gdHJ1ZTsKQEAgLTIyNSw3ICsyMjUsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgICAgICAgICAgbm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgIFsmXSAo
Tm9kZSogaW5jb21pbmcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBpbmNvbWluZy0+ZHluYW1pY0Nhc3RDb25zdGFudDxTdHJ1Y3R1cmUq
PigpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXQuY29udGFpbnMo
c3RydWN0dXJlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldC5jb250
YWlucyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxHb29kID0gZmFsc2U7CkBAIC00
MjEsNyArNDIxLDkgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBkYXRhLnZhcmlhbnRzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50ID0gZGF0YS52YXJpYW50c1tpXTsKLSAgICAgICAg
ICAgICAgICAgICAgdmFyaWFudC5vbGRTdHJ1Y3R1cmUoKS5maWx0ZXIoYmFzZVZhbHVlKTsKKyAg
ICAgICAgICAgICAgICAgICAgdmFyaWFudC5vbGRTdHJ1Y3R1cmUoKS5nZW5lcmljRmlsdGVyKFsm
XSAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIC0+IGJvb2wgeworICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGJhc2VWYWx1ZS5jb250YWlucyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0
cnVjdHVyZSkpOworICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgIGlmICh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpLmlzRW1wdHko
KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS52YXJpYW50c1tpLS1dID0gZGF0YS52
YXJpYW50cy5sYXN0KCk7CkBAIC00NjAsMTIgKzQ2MiwxMiBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIG1faW50ZXJwcmV0ZXIuZXhlY3V0ZShpbmRleEluQmxvY2spOyAvLyBQdXNoIENGQSBv
dmVyIHRoaXMgbm9kZSBhZnRlciB3ZSBnZXQgdGhlIHN0YXRlIGJlZm9yZS4KICAgICAgICAgICAg
ICAgICBhbHJlYWR5SGFuZGxlZCA9IHRydWU7IC8vIERvbid0IGFsbG93IHRoZSBkZWZhdWx0IGNv
bnN0YW50IGZvbGRlciB0byBkbyB0aGluZ3MgdG8gdGhpcy4KIAotICAgICAgICAgICAgICAgIGlm
IChiYXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNUb3AoKSB8fCBiYXNlVmFsdWUubV9zdHJ1Y3R1cmUu
aXNDbG9iYmVyZWQoKQorICAgICAgICAgICAgICAgIGlmICghYmFzZVZhbHVlLm1fc3RydWN0dXJl
LmlzRmluaXRlKCkKICAgICAgICAgICAgICAgICAgICAgfHwgKG5vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKSA9PSBVbnR5cGVkVXNlIHx8IChiYXNlVmFsdWUubV90eXBlICYgflNwZWNDZWxsKSkpCiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIEdldEJ5SWRTdGF0dXMgc3RhdHVzID0gR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKLSAg
ICAgICAgICAgICAgICAgICAgYmFzZVZhbHVlLm1fc3RydWN0dXJlLnNldCgpLCBtX2dyYXBoLmlk
ZW50aWZpZXJzKClbaWRlbnRpZmllck51bWJlcl0pOworICAgICAgICAgICAgICAgICAgICBiYXNl
VmFsdWUubV9zdHJ1Y3R1cmUudG9TdHJ1Y3R1cmVTZXQoKSwgbV9ncmFwaC5pZGVudGlmaWVycygp
W2lkZW50aWZpZXJOdW1iZXJdKTsKICAgICAgICAgICAgICAgICBpZiAoIXN0YXR1cy5pc1NpbXBs
ZSgpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKQEAgLTQ5
MCw3ICs0OTIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGZvciAoY29uc3QgR2V0QnlJ
ZFZhcmlhbnQmIHZhcmlhbnQgOiBzdGF0dXMudmFyaWFudHMoKSkgewogICAgICAgICAgICAgICAg
ICAgICBkYXRhLT5jYXNlcy5hcHBlbmQoCiAgICAgICAgICAgICAgICAgICAgICAgICBNdWx0aUdl
dEJ5T2Zmc2V0Q2FzZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50LnN0cnVj
dHVyZVNldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICptX2dyYXBoLmFkZFN0cnVj
dHVyZVNldCh2YXJpYW50LnN0cnVjdHVyZVNldCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHZXRCeU9mZnNldE1ldGhvZDo6bG9hZCh2YXJpYW50Lm9mZnNldCgpKSkpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBkYXRhLT5pZGVudGlmaWVyTnVtYmVyID0gaWRl
bnRpZmllck51bWJlcjsKQEAgLTUxNSwxMiArNTE3LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgbV9pbnRlcnByZXRlci5leGVjdXRlKGluZGV4SW5CbG9jayk7IC8vIFB1c2ggQ0ZBIG92
ZXIgdGhpcyBub2RlIGFmdGVyIHdlIGdldCB0aGUgc3RhdGUgYmVmb3JlLgogICAgICAgICAgICAg
ICAgIGFscmVhZHlIYW5kbGVkID0gdHJ1ZTsgLy8gRG9uJ3QgYWxsb3cgdGhlIGRlZmF1bHQgY29u
c3RhbnQgZm9sZGVyIHRvIGRvIHRoaW5ncyB0byB0aGlzLgogCi0gICAgICAgICAgICAgICAgaWYg
KGJhc2VWYWx1ZS5tX3N0cnVjdHVyZS5pc1RvcCgpIHx8IGJhc2VWYWx1ZS5tX3N0cnVjdHVyZS5p
c0Nsb2JiZXJlZCgpKQorICAgICAgICAgICAgICAgIGlmICghYmFzZVZhbHVlLm1fc3RydWN0dXJl
LmlzRmluaXRlKCkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIFB1dEJ5SWRTdGF0dXMgc3RhdHVzID0gUHV0QnlJZFN0YXR1czo6
Y29tcHV0ZUZvcigKICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICAgICAgYmFzZVZhbHVlLm1fc3RydWN0
dXJlLnNldCgpLAorICAgICAgICAgICAgICAgICAgICBiYXNlVmFsdWUubV9zdHJ1Y3R1cmUudG9T
dHJ1Y3R1cmVTZXQoKSwKICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5pZGVudGlmaWVycygp
W2lkZW50aWZpZXJOdW1iZXJdLAogICAgICAgICAgICAgICAgICAgICBub2RlLT5vcCgpID09IFB1
dEJ5SWREaXJlY3QpOwogICAgICAgICAgICAgICAgIApAQCAtNzEzLDcgKzcxNSw3IEBAIHByaXZh
dGU6CiAgICAgICAgIC8vIFdlIGFyZW4ndCBzZXQgdXAgdG8gaGFuZGxlIHByb3RvdHlwZSBzdHVm
Zi4KICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBub2RlLCB2YXJpYW50LmNvbmRpdGlvblNl
dCgpLmlzRW1wdHkoKSk7CiAKLSAgICAgICAgaWYgKEpTVmFsdWUgdmFsdWUgPSBtX2dyYXBoLnRy
eUdldENvbnN0YW50UHJvcGVydHkoYmFzZVZhbHVlLm1fdmFsdWUsIHZhcmlhbnQuc3RydWN0dXJl
U2V0KCksIHZhcmlhbnQub2Zmc2V0KCkpKSB7CisgICAgICAgIGlmIChKU1ZhbHVlIHZhbHVlID0g
bV9ncmFwaC50cnlHZXRDb25zdGFudFByb3BlcnR5KGJhc2VWYWx1ZS5tX3ZhbHVlLCAqbV9ncmFw
aC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSksIHZhcmlhbnQub2Zmc2V0
KCkpKSB7CiAgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG5vZGUsIG1fZ3Jh
cGguZnJlZXplKHZhbHVlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTc1
OSw3ICs3NjEsNyBAQCBwcml2YXRlOgogICAgICAgICBUcmFuc2l0aW9uKiB0cmFuc2l0aW9uID0g
MDsKICAgICAgICAgaWYgKHZhcmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0
aW9uKSB7CiAgICAgICAgICAgICB0cmFuc2l0aW9uID0gbV9ncmFwaC5tX3RyYW5zaXRpb25zLmFk
ZCgKLSAgICAgICAgICAgICAgICB2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKSwg
dmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3Rl
clN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKSksIG1fZ3JhcGgu
cmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkpOwogICAgICAgICB9CiAK
ICAgICAgICAgRWRnZSBwcm9wZXJ0eVN0b3JhZ2U7CkBAIC04MjEsNiArODIzLDEyIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBhZGRCYXNlQ2hlY2soCiAgICAgICAgIHVuc2lnbmVkIGluZGV4SW5CbG9j
aywgTm9kZSogbm9kZSwgY29uc3QgQWJzdHJhY3RWYWx1ZSYgYmFzZVZhbHVlLCBjb25zdCBTdHJ1
Y3R1cmVTZXQmIHNldCkKICAgICB7CisgICAgICAgIGFkZEJhc2VDaGVjayhpbmRleEluQmxvY2ss
IG5vZGUsIGJhc2VWYWx1ZSwgKm1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHNldCkpOworICAgIH0K
KworICAgIHZvaWQgYWRkQmFzZUNoZWNrKAorICAgICAgICB1bnNpZ25lZCBpbmRleEluQmxvY2ss
IE5vZGUqIG5vZGUsIGNvbnN0IEFic3RyYWN0VmFsdWUmIGJhc2VWYWx1ZSwgY29uc3QgUmVnaXN0
ZXJlZFN0cnVjdHVyZVNldCYgc2V0KQorICAgIHsKICAgICAgICAgaWYgKCFiYXNlVmFsdWUubV9z
dHJ1Y3R1cmUuaXNTdWJzZXRPZihzZXQpKSB7CiAgICAgICAgICAgICAvLyBBcmlzZXMgd2hlbiB3
ZSBwcnVuZSBNdWx0aUdldEJ5T2Zmc2V0LiBXZSBjb3VsZCBoYXZlIGEKICAgICAgICAgICAgIC8v
IE11bHRpR2V0QnlPZmZzZXQgd2l0aCBhIHNpbmdsZSB2YXJpYW50IHRoYXQgY2hlY2tzIGZvciBz
dHJ1Y3R1cmUgUywKQEAgLTgyOCw3ICs4MzYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgQVNT
RVJUKG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5v
ZGUoCiAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2tTdHJ1Y3R1
cmUsIG5vZGUtPm9yaWdpbiwKLSAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5hZGRTdHJ1
Y3R1cmVTZXQoc2V0KSksIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBPcEluZm8o
bV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoc2V0LnRvU3RydWN0dXJlU2V0KCkpKSwgbm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIApAQCAtODM4
LDggKzg0NiwxMiBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgYWRkU3RydWN0dXJlVHJhbnNp
dGlvbkNoZWNrKE5vZGVPcmlnaW4gb3JpZ2luLCB1bnNpZ25lZCBpbmRleEluQmxvY2ssIEpTQ2Vs
bCogY2VsbCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBpZiAobV9ncmFw
aC5yZWdpc3RlclN0cnVjdHVyZShjZWxsLT5zdHJ1Y3R1cmUoKSkgPT0gU3RydWN0dXJlUmVnaXN0
ZXJlZEFuZFdhdGNoZWQpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIHsKKyAgICAgICAg
ICAgIFN0cnVjdHVyZVJlZ2lzdHJhdGlvblJlc3VsdCByZXN1bHQ7CisgICAgICAgICAgICBtX2dy
YXBoLnJlZ2lzdGVyU3RydWN0dXJlKGNlbGwtPnN0cnVjdHVyZSgpLCByZXN1bHQpOworICAgICAg
ICAgICAgaWYgKHJlc3VsdCA9PSBTdHJ1Y3R1cmVSZWdpc3RlcmVkQW5kV2F0Y2hlZCkKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG1fZ3JhcGgu
cmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyMTExMDcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MzY1LDcgKzIzNjUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUp
IHsKICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAg
ICAgICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQXJyYXlpZnlUb1N0
cnVjdHVyZSwgb3JpZ2luLAotICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKHN0cnVjdHVy
ZSksIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBFZGdlKGFycmF5LCBDZWxsVXNlKSwgaW5k
ZXhFZGdlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLnJlZ2lzdGVy
U3RydWN0dXJlKHN0cnVjdHVyZSkpLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgRWRnZShh
cnJheSwgQ2VsbFVzZSksIGluZGV4RWRnZSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAg
ICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQXJyYXlpZnksIG9yaWdpbiwK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAyMTEx
MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODgsNiArODgsMTAgQEAgR3JhcGg6OkdyYXBoKFZNJiB2bSwgUGxhbiYgcGxhbiwg
TG9uZ0xpdgogICAgIAogICAgIG1faW5kZXhpbmdDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8Rmxv
d0luZGV4aW5nPigqdGhpcyk7CiAgICAgbV9hYnN0cmFjdFZhbHVlc0NhY2hlID0gc3RkOjptYWtl
X3VuaXF1ZTxGbG93TWFwPEFic3RyYWN0VmFsdWU+PigqdGhpcyk7CisKKyAgICByZWdpc3RlclN0
cnVjdHVyZSh2bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUuZ2V0KCkpOworICAgIHRoaXMtPnN0cmluZ1N0
cnVjdHVyZSA9IHJlZ2lzdGVyU3RydWN0dXJlKHZtLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSk7Cisg
ICAgdGhpcy0+c3ltYm9sU3RydWN0dXJlID0gcmVnaXN0ZXJTdHJ1Y3R1cmUodm0uc3ltYm9sU3Ry
dWN0dXJlLmdldCgpKTsKIH0KIAogR3JhcGg6On5HcmFwaCgpCkBAIC0yNDUsMTUgKzI0OSwxNSBA
QCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0CiAgICAgaWYgKG5vZGUt
Pmhhc1Byb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yKCkpCiAgICAgICAgIG91dC5wcmludChjb21t
YSwgbm9kZS0+cHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IoKSk7CiAgICAgaWYgKG5vZGUtPmhh
c1N0cnVjdHVyZVNldCgpKQotICAgICAgICBvdXQucHJpbnQoY29tbWEsIGluQ29udGV4dChub2Rl
LT5zdHJ1Y3R1cmVTZXQoKSwgY29udGV4dCkpOworICAgICAgICBvdXQucHJpbnQoY29tbWEsIGlu
Q29udGV4dChub2RlLT5zdHJ1Y3R1cmVTZXQoKS50b1N0cnVjdHVyZVNldCgpLCBjb250ZXh0KSk7
CiAgICAgaWYgKG5vZGUtPmhhc1N0cnVjdHVyZSgpKQotICAgICAgICBvdXQucHJpbnQoY29tbWEs
IGluQ29udGV4dCgqbm9kZS0+c3RydWN0dXJlKCksIGNvbnRleHQpKTsKKyAgICAgICAgb3V0LnBy
aW50KGNvbW1hLCBpbkNvbnRleHQoKm5vZGUtPnN0cnVjdHVyZSgpLmdldCgpLCBjb250ZXh0KSk7
CiAgICAgaWYgKG5vZGUtPmhhc1RyYW5zaXRpb24oKSkgewogICAgICAgICBvdXQucHJpbnQoY29t
bWEsIHBvaW50ZXJEdW1wSW5Db250ZXh0KG5vZGUtPnRyYW5zaXRpb24oKSwgY29udGV4dCkpOwog
I2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIG91dC5wcmludCgiLCBJRDoiLCBub2RlLT50cmFu
c2l0aW9uKCktPm5leHQtPmlkKCkpOwogI2Vsc2UKLSAgICAgICAgb3V0LnByaW50KCIsIElEOiIs
IFJhd1BvaW50ZXIobm9kZS0+dHJhbnNpdGlvbigpLT5uZXh0KSk7CisgICAgICAgIG91dC5wcmlu
dCgiLCBJRDoiLCBSYXdQb2ludGVyKG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dC5nZXQoKSkpOwog
I2VuZGlmCiAgICAgfQogICAgIGlmIChub2RlLT5oYXNDZWxsT3BlcmFuZCgpKSB7CkBAIC0xMjA3
LDcgKzEyMTEsNyBAQCB1bnNpZ25lZCBHcmFwaDo6cmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yCiB9
CiAKIEpTVmFsdWUgR3JhcGg6OnRyeUdldENvbnN0YW50UHJvcGVydHkoCi0gICAgSlNWYWx1ZSBi
YXNlLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCwgUHJvcGVydHlPZmZzZXQgb2Zm
c2V0KQorICAgIEpTVmFsdWUgYmFzZSwgY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgc3Ry
dWN0dXJlU2V0LCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiB7CiAgICAgaWYgKCFiYXNlIHx8ICFi
YXNlLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CkBAIC0xMjE1LDggKzEy
MTksNyBAQCBKU1ZhbHVlIEdyYXBoOjp0cnlHZXRDb25zdGFudFByb3BlcnR5KAogICAgIEpTT2Jq
ZWN0KiBvYmplY3QgPSBhc09iamVjdChiYXNlKTsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBzdHJ1Y3R1cmVTZXQuc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gc3RydWN0dXJlU2V0W2ldOwotICAgICAgICBhc3NlcnRJc1JlZ2lzdGVyZWQoc3RydWN0
dXJlKTsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVT
ZXRbaV07CiAgICAgICAgIAogICAgICAgICBXYXRjaHBvaW50U2V0KiBzZXQgPSBzdHJ1Y3R1cmUt
PnByb3BlcnR5UmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0KG9mZnNldCk7CiAgICAgICAgIGlmICgh
c2V0IHx8ICFzZXQtPmlzU3RpbGxWYWxpZCgpKQpAQCAtMTI0OCw3ICsxMjUxLDcgQEAgSlNWYWx1
ZSBHcmFwaDo6dHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eSgKICAgICAvLyBpbmNvbXBhdGlibGUgd2l0
aCB0aGUgZ2V0RGlyZWN0IHdlJ3JlIHRyeWluZyB0byBkby4gVGhlIGVhc2llc3Qgd2F5IHRvIGRv
IHRoYXQgaXMgdG8KICAgICAvLyBkZXRlcm1pbmUgaWYgdGhlIHN0cnVjdHVyZSBiZWxvbmdzIHRv
IHRoZSBwcm92ZW4gc2V0LgogICAgIAotICAgIGlmICghc3RydWN0dXJlU2V0LmNvbnRhaW5zKG9i
amVjdC0+c3RydWN0dXJlKCkpKQorICAgIGlmICghc3RydWN0dXJlU2V0LnRvU3RydWN0dXJlU2V0
KCkuY29udGFpbnMob2JqZWN0LT5zdHJ1Y3R1cmUoKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
KCk7CiAgICAgCiAgICAgcmV0dXJuIG9iamVjdC0+Z2V0RGlyZWN0KG9mZnNldCk7CkBAIC0xMjU2
LDcgKzEyNTksNyBAQCBKU1ZhbHVlIEdyYXBoOjp0cnlHZXRDb25zdGFudFByb3BlcnR5KAogCiBK
U1ZhbHVlIEdyYXBoOjp0cnlHZXRDb25zdGFudFByb3BlcnR5KEpTVmFsdWUgYmFzZSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKIHsKLSAgICByZXR1cm4gdHJ5
R2V0Q29uc3RhbnRQcm9wZXJ0eShiYXNlLCBTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSwgb2Zmc2V0
KTsKKyAgICByZXR1cm4gdHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eShiYXNlLCBSZWdpc3RlcmVkU3Ry
dWN0dXJlU2V0KHJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkpLCBvZmZzZXQpOwogfQogCiBK
U1ZhbHVlIEdyYXBoOjp0cnlHZXRDb25zdGFudFByb3BlcnR5KApAQCAtMTI3OCwxMyArMTI4MSwx
MyBAQCBKU1ZhbHVlIEdyYXBoOjp0cnlHZXRDb25zdGFudFByb3BlcnR5KGNvCiB9CiAKIEFic3Ry
YWN0VmFsdWUgR3JhcGg6OmluZmVycmVkVmFsdWVGb3JQcm9wZXJ0eSgKLSAgICBjb25zdCBTdHJ1
Y3R1cmVTZXQmIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIFN0cnVjdHVyZUNsb2JiZXJT
dGF0ZSBjbG9iYmVyU3RhdGUpCisgICAgY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgYmFz
ZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgU3RydWN0dXJlQ2xvYmJlclN0YXRlIGNsb2JiZXJT
dGF0ZSkKIHsKICAgICBBYnN0cmFjdFZhbHVlIHJlc3VsdDsKICAgICBiYXNlLmZvckVhY2goCi0g
ICAgICAgIFsmXSAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIHsKKyAgICAgICAgWyZdIChSZWdpc3Rl
cmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgewogICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSB2YWx1
ZTsKLSAgICAgICAgICAgIHZhbHVlLnNldCgqdGhpcywgaW5mZXJyZWRUeXBlRm9yUHJvcGVydHko
c3RydWN0dXJlLCB1aWQpKTsKKyAgICAgICAgICAgIHZhbHVlLnNldCgqdGhpcywgaW5mZXJyZWRU
eXBlRm9yUHJvcGVydHkoc3RydWN0dXJlLmdldCgpLCB1aWQpKTsKICAgICAgICAgICAgIHJlc3Vs
dC5tZXJnZSh2YWx1ZSk7CiAgICAgICAgIH0pOwogICAgIGlmIChjbG9iYmVyU3RhdGUgPT0gU3Ry
dWN0dXJlc0FyZUNsb2JiZXJlZCkKQEAgLTE0MTMsNTUgKzE0MTYsNiBAQCB2b2lkIEdyYXBoOjp2
aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2CiAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJy
aWVyZWQodmFsdWUtPnZhbHVlKCkpOwogICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVk
KHZhbHVlLT5zdHJ1Y3R1cmUoKSk7CiAgICAgfQotICAgIAotICAgIGZvciAoQmxvY2tJbmRleCBi
bG9ja0luZGV4ID0gbnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKLSAgICAgICAgQmFzaWNC
bG9jayogYmxvY2sgPSB0aGlzLT5ibG9jayhibG9ja0luZGV4KTsKLSAgICAgICAgaWYgKCFibG9j
aykKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKLSAgICAgICAgZm9yIChhdXRvKiBu
b2RlIDogKmJsb2NrKSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAg
ICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6Ci0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gbm9kZS0+c3RydWN0dXJlU2V0KCkuc2l6ZSgpOyBpLS07KQotICAgICAgICAgICAgICAg
ICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG5vZGUtPnN0cnVjdHVyZVNldCgpW2ldKTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNh
c2UgTmV3T2JqZWN0OgotICAgICAgICAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgotICAg
ICAgICAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6Ci0gICAgICAgICAgICAgICAgdmlzaXRvci5h
cHBlbmRVbmJhcnJpZXJlZChub2RlLT5zdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNlIFB1dFN0cnVjdHVyZToKLSAg
ICAgICAgICAgIGNhc2UgQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6Ci0gICAgICAgICAgICBjYXNl
IFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6Ci0gICAgICAgICAgICAgICAgdmlzaXRvci5hcHBl
bmRVbmJhcnJpZXJlZChub2RlLT50cmFuc2l0aW9uKCktPnByZXZpb3VzKTsKLSAgICAgICAgICAg
ICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dCk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBj
YXNlIE11bHRpR2V0QnlPZmZzZXQ6Ci0gICAgICAgICAgICAgICAgZm9yIChjb25zdCBNdWx0aUdl
dEJ5T2Zmc2V0Q2FzZSYgZ2V0Q2FzZSA6IG5vZGUtPm11bHRpR2V0QnlPZmZzZXREYXRhKCkuY2Fz
ZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6IGdl
dENhc2Uuc2V0KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFy
cmllcmVkKHN0cnVjdHVyZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgTXVsdGlQdXRCeU9m
ZnNldDoKLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBub2RlLT5tdWx0aVB1dEJ5
T2Zmc2V0RGF0YSgpLnZhcmlhbnRzLnNpemUoKTsgaS0tOykgewotICAgICAgICAgICAgICAgICAg
ICBQdXRCeUlkVmFyaWFudCYgdmFyaWFudCA9IG5vZGUtPm11bHRpUHV0QnlPZmZzZXREYXRhKCku
dmFyaWFudHNbaV07Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0
ID0gdmFyaWFudC5vbGRTdHJ1Y3R1cmUoKTsKLSAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBqID0gc2V0LnNpemUoKTsgai0tOykKLSAgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0
b3IuYXBwZW5kVW5iYXJyaWVyZWQoc2V0W2pdKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHZh
cmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uKQotICAgICAgICAgICAg
ICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZCh2YXJpYW50Lm5ld1N0cnVjdHVy
ZSgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQogfQogCiBGcm96ZW5WYWx1ZSogR3JhcGg6
OmZyZWV6ZShKU1ZhbHVlIHZhbHVlKQpAQCAtMTUwNywxMiArMTQ2MSwxNCBAQCB2b2lkIEdyYXBo
Ojpjb252ZXJ0VG9TdHJvbmdDb25zdGFudChOb2RlCiAgICAgY29udmVydFRvQ29uc3RhbnQobm9k
ZSwgZnJlZXplU3Ryb25nKHZhbHVlKSk7CiB9CiAKLVN0cnVjdHVyZVJlZ2lzdHJhdGlvblJlc3Vs
dCBHcmFwaDo6cmVnaXN0ZXJTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitSZWdpc3Rl
cmVkU3RydWN0dXJlIEdyYXBoOjpyZWdpc3RlclN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgU3RydWN0dXJlUmVnaXN0cmF0aW9uUmVzdWx0JiByZXN1bHQpCiB7CiAgICAgbV9wbGFuLndl
YWtSZWZlcmVuY2VzLmFkZExhemlseShzdHJ1Y3R1cmUpOwogICAgIGlmIChtX3BsYW4ud2F0Y2hw
b2ludHMuY29uc2lkZXIoc3RydWN0dXJlKSkKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyZVJlZ2lz
dGVyZWRBbmRXYXRjaGVkOwotICAgIHJldHVybiBTdHJ1Y3R1cmVSZWdpc3RlcmVkTm9ybWFsbHk7
CisgICAgICAgIHJlc3VsdCA9IFN0cnVjdHVyZVJlZ2lzdGVyZWRBbmRXYXRjaGVkOworICAgIGVs
c2UKKyAgICAgICAgcmVzdWx0ID0gU3RydWN0dXJlUmVnaXN0ZXJlZE5vcm1hbGx5OworICAgIHJl
dHVybiBSZWdpc3RlcmVkU3RydWN0dXJlOjpjcmVhdGVQcml2YXRlKHN0cnVjdHVyZSk7CiB9CiAK
IHZvaWQgR3JhcGg6OmFzc2VydElzUmVnaXN0ZXJlZChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDIxMTEwNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAt
MjEzLDcgKzIxMywxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb252ZXJ0VG9Db25zdGFudChOb2Rl
KiBub2RlLCBKU1ZhbHVlIHZhbHVlKTsKICAgICB2b2lkIGNvbnZlcnRUb1N0cm9uZ0NvbnN0YW50
KE5vZGUqIG5vZGUsIEpTVmFsdWUgdmFsdWUpOwogICAgIAotICAgIFN0cnVjdHVyZVJlZ2lzdHJh
dGlvblJlc3VsdCByZWdpc3RlclN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSk7CisgICAg
UmVnaXN0ZXJlZFN0cnVjdHVyZSByZWdpc3RlclN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKKyAgICB7CisgICAgICAgIFN0cnVjdHVyZVJlZ2lzdHJhdGlvblJlc3VsdCBpZ25vcmVkOwor
ICAgICAgICByZXR1cm4gcmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlLCBpZ25vcmVkKTsKKyAg
ICB9CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSByZWdpc3RlclN0cnVjdHVyZShTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgU3RydWN0dXJlUmVnaXN0cmF0aW9uUmVzdWx0JiByZXN1bHQpOwogICAgIHZv
aWQgYXNzZXJ0SXNSZWdpc3RlcmVkKFN0cnVjdHVyZSogc3RydWN0dXJlKTsKICAgICAKICAgICAv
LyBDb2RlQmxvY2sgaXMgb3B0aW9uYWwsIGJ1dCBtYXkgYWxsb3cgYWRkaXRpb25hbCBpbmZvcm1h
dGlvbiB0byBiZSBkdW1wZWQgKGUuZy4gSWRlbnRpZmllciBuYW1lcykuCkBAIC0zNDEsMTIgKzM0
NiwyNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgc3RhdGljIGNvbnN0IGNoYXIgKm9wTmFtZShOb2Rl
VHlwZSk7CiAgICAgCi0gICAgU3RydWN0dXJlU2V0KiBhZGRTdHJ1Y3R1cmVTZXQoY29uc3QgU3Ry
dWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQpCisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCogYWRk
U3RydWN0dXJlU2V0KGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0KQogICAgIHsKKyAg
ICAgICAgbV9zdHJ1Y3R1cmVTZXRzLmFwcGVuZCgpOworICAgICAgICBSZWdpc3RlcmVkU3RydWN0
dXJlU2V0KiByZXN1bHQgPSAmbV9zdHJ1Y3R1cmVTZXRzLmxhc3QoKTsKKwogICAgICAgICBmb3Ig
KFN0cnVjdHVyZSogc3RydWN0dXJlIDogc3RydWN0dXJlU2V0KQotICAgICAgICAgICAgcmVnaXN0
ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKTsKLSAgICAgICAgbV9zdHJ1Y3R1cmVTZXQuYXBwZW5kKHN0
cnVjdHVyZVNldCk7Ci0gICAgICAgIHJldHVybiAmbV9zdHJ1Y3R1cmVTZXQubGFzdCgpOworICAg
ICAgICAgICAgcmVzdWx0LT5hZGQocmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKSk7CisKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0
KiBhZGRTdHJ1Y3R1cmVTZXQoY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgc3RydWN0dXJl
U2V0KQorICAgIHsKKyAgICAgICAgbV9zdHJ1Y3R1cmVTZXRzLmFwcGVuZCgpOworICAgICAgICBS
ZWdpc3RlcmVkU3RydWN0dXJlU2V0KiByZXN1bHQgPSAmbV9zdHJ1Y3R1cmVTZXRzLmxhc3QoKTsK
KworICAgICAgICBmb3IgKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlIDogc3RydWN0dXJl
U2V0KQorICAgICAgICAgICAgcmVzdWx0LT5hZGQoc3RydWN0dXJlKTsKKworICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KICAgICAKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
Rm9yKENvZGVPcmlnaW4gY29kZU9yaWdpbikKQEAgLTcxNSw3ICs3MzQsNyBAQCBwdWJsaWM6CiAg
ICAgfQogCiAgICAgQWJzdHJhY3RWYWx1ZSBpbmZlcnJlZFZhbHVlRm9yUHJvcGVydHkoCi0gICAg
ICAgIGNvbnN0IFN0cnVjdHVyZVNldCYgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgU3Ry
dWN0dXJlQ2xvYmJlclN0YXRlID0gU3RydWN0dXJlc0FyZVdhdGNoZWQpOworICAgICAgICBjb25z
dCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0JiBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBT
dHJ1Y3R1cmVDbG9iYmVyU3RhdGUgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZCk7CiAKICAgICAvLyBU
aGlzIHVzZXMgZWl0aGVyIGNvbnN0YW50IHByb3BlcnR5IGluZmVyZW5jZSBvciBwcm9wZXJ0eSB0
eXBlIGluZmVyZW5jZSB0byBkZXJpdmUgYSBnb29kIGFic3RyYWN0CiAgICAgLy8gdmFsdWUgZm9y
IHNvbWUgcHJvcGVydHkgYWNjZXNzZWQgd2l0aCB0aGUgZ2l2ZW4gYWJzdHJhY3QgdmFsdWUgYmFz
ZS4KQEAgLTgxOCw3ICs4MzcsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgcmVxdWlyZWRSZWdp
c3RlckNvdW50Rm9yRXhpdCgpOwogICAgIHVuc2lnbmVkIHJlcXVpcmVkUmVnaXN0ZXJDb3VudEZv
ckV4ZWN1dGlvbkFuZEV4aXQoKTsKICAgICAKLSAgICBKU1ZhbHVlIHRyeUdldENvbnN0YW50UHJv
cGVydHkoSlNWYWx1ZSBiYXNlLCBjb25zdCBTdHJ1Y3R1cmVTZXQmLCBQcm9wZXJ0eU9mZnNldCk7
CisgICAgSlNWYWx1ZSB0cnlHZXRDb25zdGFudFByb3BlcnR5KEpTVmFsdWUgYmFzZSwgY29uc3Qg
UmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYsIFByb3BlcnR5T2Zmc2V0KTsKICAgICBKU1ZhbHVlIHRy
eUdldENvbnN0YW50UHJvcGVydHkoSlNWYWx1ZSBiYXNlLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU9m
ZnNldCk7CiAgICAgSlNWYWx1ZSB0cnlHZXRDb25zdGFudFByb3BlcnR5KEpTVmFsdWUgYmFzZSwg
Y29uc3QgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSYsIFByb3BlcnR5T2Zmc2V0KTsKICAgICBKU1Zh
bHVlIHRyeUdldENvbnN0YW50UHJvcGVydHkoY29uc3QgQWJzdHJhY3RWYWx1ZSYsIFByb3BlcnR5
T2Zmc2V0KTsKQEAgLTkxMCw3ICs5MjksNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgU2VnbWVudGVk
VmVjdG9yPFZhcmlhYmxlQWNjZXNzRGF0YSwgMTY+IG1fdmFyaWFibGVBY2Nlc3NEYXRhOwogICAg
IFNlZ21lbnRlZFZlY3RvcjxBcmd1bWVudFBvc2l0aW9uLCA4PiBtX2FyZ3VtZW50UG9zaXRpb25z
OwotICAgIFNlZ21lbnRlZFZlY3RvcjxTdHJ1Y3R1cmVTZXQsIDE2PiBtX3N0cnVjdHVyZVNldDsK
ICAgICBCYWc8VHJhbnNpdGlvbj4gbV90cmFuc2l0aW9uczsKICAgICBTZWdtZW50ZWRWZWN0b3I8
TmV3QXJyYXlCdWZmZXJEYXRhLCA0PiBtX25ld0FycmF5QnVmZmVyRGF0YTsKICAgICBCYWc8QnJh
bmNoRGF0YT4gbV9icmFuY2hEYXRhOwpAQCAtOTYwLDYgKzk3OCw5IEBAIHB1YmxpYzoKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8Rmxvd0luZGV4aW5nPiBtX2luZGV4aW5nQ2FjaGU7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPEZsb3dNYXA8QWJzdHJhY3RWYWx1ZT4+IG1fYWJzdHJhY3RWYWx1ZXNDYWNoZTsK
IAorICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RyaW5nU3RydWN0dXJlOworICAgIFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmUgc3ltYm9sU3RydWN0dXJlOworCiBwcml2YXRlOgogICAgIHZvaWQgYWRkTm9k
ZVRvTWFwQnlJbmRleChOb2RlKik7CiAKQEAgLTk5Nyw2ICsxMDE4LDcgQEAgcHJpdmF0ZToKIAog
ICAgIFZlY3RvcjxOb2RlKiwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IG1fbm9kZXNCeUluZGV4
OwogICAgIFZlY3Rvcjx1bnNpZ25lZCwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IG1fbm9kZUlu
ZGV4RnJlZUxpc3Q7CisgICAgU2VnbWVudGVkVmVjdG9yPFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQs
IDE2PiBtX3N0cnVjdHVyZVNldHM7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lv
biAyMTExMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI0MiwxNCArMjQyLDE0IEBAIHB1YmxpYzoKICAgICB9CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIEp1bXAgYnJhbmNoV2Vha1N0cnVjdHVyZShSZWxh
dGlvbmFsQ29uZGl0aW9uIGNvbmQsIFQgbGVmdCwgU3RydWN0dXJlKiB3ZWFrU3RydWN0dXJlKQor
ICAgIEp1bXAgYnJhbmNoV2Vha1N0cnVjdHVyZShSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFQg
bGVmdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSB3ZWFrU3RydWN0dXJlKQogICAgIHsKKyAgICAgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB3ZWFrU3RydWN0dXJlLmdldCgpOwogI2lmIFVTRShKU1ZB
TFVFNjQpCi0gICAgICAgIEp1bXAgcmVzdWx0ID0gYnJhbmNoMzIoY29uZCwgbGVmdCwgVHJ1c3Rl
ZEltbTMyKHdlYWtTdHJ1Y3R1cmUtPmlkKCkpKTsKLSAgICAgICAgYWRkV2Vha1JlZmVyZW5jZSh3
ZWFrU3RydWN0dXJlKTsKKyAgICAgICAgSnVtcCByZXN1bHQgPSBicmFuY2gzMihjb25kLCBsZWZ0
LCBUcnVzdGVkSW1tMzIoc3RydWN0dXJlLT5pZCgpKSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAjZWxzZQotICAgICAgICByZXR1cm4gYnJhbmNoV2Vha1B0cihjb25kLCBsZWZ0LCB3ZWFrU3Ry
dWN0dXJlKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaFB0cihjb25kLCBsZWZ0LCBUcnVzdGVkSW1t
UHRyKHN0cnVjdHVyZSkpOwogI2VuZGlmCiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR011bHRpR2V0QnlPZmZzZXREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR011bHRpR2V0QnlPZmZzZXREYXRhLmNwcAkocmV2aXNp
b24gMjExMTA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNdWx0aUdldEJ5T2Zm
c2V0RGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBHZXRCeU9m
ZnNldE1ldGhvZDo6ZHVtcChQcmludFN0cmVhbQogCiB2b2lkIE11bHRpR2V0QnlPZmZzZXRDYXNl
OjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBj
b25zdAogewotICAgIG91dC5wcmludChpbkNvbnRleHQobV9zZXQsIGNvbnRleHQpLCAiOiIsIGlu
Q29udGV4dChtX21ldGhvZCwgY29udGV4dCkpOworICAgIG91dC5wcmludChpbkNvbnRleHQobV9z
ZXQudG9TdHJ1Y3R1cmVTZXQoKSwgY29udGV4dCksICI6IiwgaW5Db250ZXh0KG1fbWV0aG9kLCBj
b250ZXh0KSk7CiB9CiAKIHZvaWQgTXVsdGlHZXRCeU9mZnNldENhc2U6OmR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTXVsdGlH
ZXRCeU9mZnNldERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR011bHRpR2V0QnlPZmZzZXREYXRhLmgJKHJldmlzaW9uIDIxMTEwNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTXVsdGlHZXRCeU9mZnNldERhdGEuaAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKKyNpbmNsdWRlICJE
RkdSZWdpc3RlcmVkU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiRHVtcENvbnRleHQuaCIKICNpbmNs
dWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVNldC5oIgpAQCAtMTE5LDIxICsx
MjAsMjEgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAgCi0gICAgTXVsdGlHZXRCeU9mZnNl
dENhc2UoY29uc3QgU3RydWN0dXJlU2V0JiBzZXQsIGNvbnN0IEdldEJ5T2Zmc2V0TWV0aG9kJiBt
ZXRob2QpCisgICAgTXVsdGlHZXRCeU9mZnNldENhc2UoY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVy
ZVNldCYgc2V0LCBjb25zdCBHZXRCeU9mZnNldE1ldGhvZCYgbWV0aG9kKQogICAgICAgICA6IG1f
c2V0KHNldCkKICAgICAgICAgLCBtX21ldGhvZChtZXRob2QpCiAgICAgewogICAgIH0KICAgICAK
LSAgICBTdHJ1Y3R1cmVTZXQmIHNldCgpIHsgcmV0dXJuIG1fc2V0OyB9Ci0gICAgY29uc3QgU3Ry
dWN0dXJlU2V0JiBzZXQoKSBjb25zdCB7IHJldHVybiBtX3NldDsgfQorICAgIFJlZ2lzdGVyZWRT
dHJ1Y3R1cmVTZXQmIHNldCgpIHsgcmV0dXJuIG1fc2V0OyB9CisgICAgY29uc3QgUmVnaXN0ZXJl
ZFN0cnVjdHVyZVNldCYgc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zZXQ7IH0KICAgICBjb25zdCBH
ZXRCeU9mZnNldE1ldGhvZCYgbWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9tZXRob2Q7IH0KICAg
ICAKICAgICB2b2lkIGR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mLCBEdW1wQ29udGV4dCopIGNv
bnN0OwogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogCiBwcml2YXRlOgotICAg
IFN0cnVjdHVyZVNldCBtX3NldDsKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0IG1fc2V0Owog
ICAgIEdldEJ5T2Zmc2V0TWV0aG9kIG1fbWV0aG9kOwogfTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuY3BwCShyZXZpc2lvbiAyMTExMDcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzUsNyArMTc1LDcg
QEAgdm9pZCBOb2RlOjpjb252ZXJ0VG9QdXRIaW50KGNvbnN0IFByb21vdAogdm9pZCBOb2RlOjpj
b252ZXJ0VG9QdXRTdHJ1Y3R1cmVIaW50KE5vZGUqIHN0cnVjdHVyZSkKIHsKICAgICBBU1NFUlQo
bV9vcCA9PSBQdXRTdHJ1Y3R1cmUpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmNhc3RDb25zdGFu
dDxTdHJ1Y3R1cmUqPigpID09IHRyYW5zaXRpb24oKS0+bmV4dCk7CisgICAgQVNTRVJUKHN0cnVj
dHVyZS0+Y2FzdENvbnN0YW50PFN0cnVjdHVyZSo+KCkgPT0gdHJhbnNpdGlvbigpLT5uZXh0Lmdl
dCgpKTsKICAgICBjb252ZXJ0VG9QdXRIaW50KFN0cnVjdHVyZVBMb2MsIGNoaWxkMSgpLm5vZGUo
KSwgc3RydWN0dXJlKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJ
KHJldmlzaW9uIDIxMTEwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiREZHTm9kZVR5cGUu
aCIKICNpbmNsdWRlICJERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmgiCiAjaW5jbHVkZSAi
REZHT3BJbmZvLmgiCisjaW5jbHVkZSAiREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5oIgogI2luY2x1
ZGUgIkRGR1RyYW5zaXRpb24uaCIKICNpbmNsdWRlICJERkdVc2VLaW5kLmgiCiAjaW5jbHVkZSAi
REZHVmFyaWFibGVBY2Nlc3NEYXRhLmgiCkBAIC00MTAsMTAgKzQxMSwxMCBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHJlbW92ZSgpOwogCi0gICAgdm9pZCBjb252ZXJ0VG9DaGVja1N0cnVjdHVyZShT
dHJ1Y3R1cmVTZXQqIHNldCkKKyAgICB2b2lkIGNvbnZlcnRUb0NoZWNrU3RydWN0dXJlKFJlZ2lz
dGVyZWRTdHJ1Y3R1cmVTZXQqIHNldCkKICAgICB7CiAgICAgICAgIHNldE9wQW5kRGVmYXVsdEZs
YWdzKENoZWNrU3RydWN0dXJlKTsKLSAgICAgICAgbV9vcEluZm8gPSBzZXQ7IAorICAgICAgICBt
X29wSW5mbyA9IHNldDsKICAgICB9CiAKICAgICB2b2lkIGNvbnZlcnRUb0NoZWNrU3RydWN0dXJl
SW1tZWRpYXRlKE5vZGUqIHN0cnVjdHVyZSkKQEAgLTE2MTQsMTAgKzE2MTUsMTAgQEAgcHVibGlj
OgogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0
KCkKKyAgICBjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQoKQogICAg
IHsKICAgICAgICAgQVNTRVJUKGhhc1N0cnVjdHVyZVNldCgpKTsKLSAgICAgICAgcmV0dXJuICpt
X29wSW5mby5hczxTdHJ1Y3R1cmVTZXQqPigpOworICAgICAgICByZXR1cm4gKm1fb3BJbmZvLmFz
PFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQqPigpOwogICAgIH0KICAgICAKICAgICBib29sIGhhc1N0
cnVjdHVyZSgpCkBAIC0xNjMyLDEwICsxNjMzLDEwIEBAIHB1YmxpYzoKICAgICAgICAgfQogICAg
IH0KICAgICAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSgpCisgICAgUmVnaXN0ZXJlZFN0cnVj
dHVyZSBzdHJ1Y3R1cmUoKQogICAgIHsKICAgICAgICAgQVNTRVJUKGhhc1N0cnVjdHVyZSgpKTsK
LSAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPFN0cnVjdHVyZSo+KCk7CisgICAgICAgIHJldHVy
biBtX29wSW5mby5hc1JlZ2lzdGVyZWRTdHJ1Y3R1cmUoKTsKICAgICB9CiAgICAgCiAgICAgYm9v
bCBoYXNTdG9yYWdlQWNjZXNzRGF0YSgpCkBAIC0yNTEzLDYgKzI1MTQsMTEgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIHUuaW50NjQgPSAwOwogICAgICAgICAgICAgdS5jb25zdFBvaW50ZXIgPSBj
b25zdFBvaW50ZXI7CiAgICAgICAgIH0KKyAgICAgICAgT3BJbmZvV3JhcHBlcihSZWdpc3RlcmVk
U3RydWN0dXJlIHN0cnVjdHVyZSkKKyAgICAgICAgeworICAgICAgICAgICAgdS5pbnQ2NCA9IDA7
CisgICAgICAgICAgICB1LnBvaW50ZXIgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0cnVjdHVyZSk7
CisgICAgICAgIH0KICAgICAgICAgT3BJbmZvV3JhcHBlciYgb3BlcmF0b3I9KHVpbnQzMl90IGlu
dDMyKQogICAgICAgICB7CiAgICAgICAgICAgICB1LmludDY0ID0gMDsKQEAgLTI1NDIsNiArMjU0
OCwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgdS5jb25zdFBvaW50ZXIgPSBjb25zdFBvaW50
ZXI7CiAgICAgICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgICAgIH0KKyAgICAgICAgT3BJbmZv
V3JhcHBlciYgb3BlcmF0b3I9KFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKQorICAgICAg
ICB7CisgICAgICAgICAgICB1LmludDY0ID0gMDsKKyAgICAgICAgICAgIHUucG9pbnRlciA9IGJp
dHdpc2VfY2FzdDx2b2lkKj4oc3RydWN0dXJlKTsKKyAgICAgICAgICAgIHJldHVybiAqdGhpczsK
KyAgICAgICAgfQogICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICAgICAgQUxXQVlT
X0lOTElORSBhdXRvIGFzKCkgY29uc3QgLT4gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpp
c19wb2ludGVyPFQ+Ojp2YWx1ZSAmJiAhc3RkOjppc19jb25zdDx0eXBlbmFtZSBzdGQ6OnJlbW92
ZV9wb2ludGVyPFQ+Ojp0eXBlPjo6dmFsdWUsIFQ+Ojp0eXBlCiAgICAgICAgIHsKQEAgLTI1NjIs
NiArMjU3NCwxMSBAQCBwcml2YXRlOgogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gdS5p
bnQ2NDsKICAgICAgICAgfQorICAgICAgICBBTFdBWVNfSU5MSU5FIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUgYXNSZWdpc3RlcmVkU3RydWN0dXJlKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIGJpdHdpc2VfY2FzdDxSZWdpc3RlcmVkU3RydWN0dXJlPih1LnBvaW50ZXIpOworICAg
ICAgICB9CisKICAgICAgICAgdW5pb24gewogICAgICAgICAgICAgdWludDMyX3QgaW50MzI7CiAg
ICAgICAgICAgICB1aW50NjRfdCBpbnQ2NDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNw
cAkocmV2aXNpb24gMjExMTA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmpl
Y3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg2LDI4ICsx
ODYsMjggQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgQWxsb2NhdGlvbiYgc2V0
U3RydWN0dXJlcyhjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZXMpCisgICAgQWxsb2NhdGlv
biYgc2V0U3RydWN0dXJlcyhjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVz
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGhhc1N0cnVjdHVyZXMoKSAmJiAhc3RydWN0dXJlcy5p
c0VtcHR5KCkpOwogICAgICAgICBtX3N0cnVjdHVyZXMgPSBzdHJ1Y3R1cmVzOwogICAgICAgICBy
ZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgQWxsb2NhdGlvbiYgbWVyZ2VTdHJ1Y3R1cmVzKGNv
bnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlcykKKyAgICBBbGxvY2F0aW9uJiBtZXJnZVN0cnVj
dHVyZXMoY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgc3RydWN0dXJlcykKICAgICB7CiAg
ICAgICAgIEFTU0VSVChoYXNTdHJ1Y3R1cmVzKCkgfHwgc3RydWN0dXJlcy5pc0VtcHR5KCkpOwog
ICAgICAgICBtX3N0cnVjdHVyZXMubWVyZ2Uoc3RydWN0dXJlcyk7CiAgICAgICAgIHJldHVybiAq
dGhpczsKICAgICB9CiAKLSAgICBBbGxvY2F0aW9uJiBmaWx0ZXJTdHJ1Y3R1cmVzKGNvbnN0IFN0
cnVjdHVyZVNldCYgc3RydWN0dXJlcykKKyAgICBBbGxvY2F0aW9uJiBmaWx0ZXJTdHJ1Y3R1cmVz
KGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZXMpCiAgICAgewogICAgICAg
ICBBU1NFUlQoaGFzU3RydWN0dXJlcygpKTsKICAgICAgICAgbV9zdHJ1Y3R1cmVzLmZpbHRlcihz
dHJ1Y3R1cmVzKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAgIGNvbnN0IFN0
cnVjdHVyZVNldCYgc3RydWN0dXJlcygpIGNvbnN0CisgICAgY29uc3QgUmVnaXN0ZXJlZFN0cnVj
dHVyZVNldCYgc3RydWN0dXJlcygpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9zdHJ1
Y3R1cmVzOwogICAgIH0KQEAgLTI4Myw3ICsyODMsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAg
ICAgICAgb3V0LnByaW50KCJBbGxvY2F0aW9uKCIpOwogICAgICAgICBpZiAoIW1fc3RydWN0dXJl
cy5pc0VtcHR5KCkpCi0gICAgICAgICAgICBvdXQucHJpbnQoaW5Db250ZXh0KG1fc3RydWN0dXJl
cywgY29udGV4dCkpOworICAgICAgICAgICAgb3V0LnByaW50KGluQ29udGV4dChtX3N0cnVjdHVy
ZXMudG9TdHJ1Y3R1cmVTZXQoKSwgY29udGV4dCkpOwogICAgICAgICBpZiAoIW1fZmllbGRzLmlz
RW1wdHkoKSkgewogICAgICAgICAgICAgaWYgKCFtX3N0cnVjdHVyZXMuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgICAgIG91dC5wcmludCgiLCAiKTsKQEAgLTI5Niw3ICsyOTYsNyBAQCBwcml2YXRl
OgogICAgIE5vZGUqIG1faWRlbnRpZmllcjsgLy8gVGhpcyBpcyB0aGUgYWN0dWFsIG5vZGUgdGhh
dCBjcmVhdGVkIHRoZSBhbGxvY2F0aW9uCiAgICAgS2luZCBtX2tpbmQ7CiAgICAgSGFzaE1hcDxQ
cm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvciwgTm9kZSo+IG1fZmllbGRzOwotICAgIFN0cnVjdHVy
ZVNldCBtX3N0cnVjdHVyZXM7CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBtX3N0cnVjdHVy
ZXM7CiB9OwogCiBjbGFzcyBMb2NhbEhlYXAgewpAQCAtODMyLDcgKzgzMiw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICB0YXJnZXQgPSAmbV9oZWFwLm5ld0FsbG9jYXRpb24obm9kZSwgQWxsb2Nh
dGlvbjo6S2luZDo6T2JqZWN0KTsKICAgICAgICAgICAgIHRhcmdldC0+c2V0U3RydWN0dXJlcyhu
b2RlLT5zdHJ1Y3R1cmUoKSk7CiAgICAgICAgICAgICB3cml0ZXMuYWRkKAotICAgICAgICAgICAg
ICAgIFN0cnVjdHVyZVBMb2MsIExhenlOb2RlKG1fZ3JhcGguZnJlZXplKG5vZGUtPnN0cnVjdHVy
ZSgpKSkpOworICAgICAgICAgICAgICAgIFN0cnVjdHVyZVBMb2MsIExhenlOb2RlKG1fZ3JhcGgu
ZnJlZXplKG5vZGUtPnN0cnVjdHVyZSgpLmdldCgpKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAK
ICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKQEAgLTg3OSw3ICs4NzksNyBAQCBwcml2YXRlOgog
ICAgICAgICBjYXNlIFB1dFN0cnVjdHVyZToKICAgICAgICAgICAgIHRhcmdldCA9IG1faGVhcC5v
bmx5TG9jYWxBbGxvY2F0aW9uKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CiAgICAgICAgICAgICBp
ZiAodGFyZ2V0ICYmIHRhcmdldC0+aXNPYmplY3RBbGxvY2F0aW9uKCkpIHsKLSAgICAgICAgICAg
ICAgICB3cml0ZXMuYWRkKFN0cnVjdHVyZVBMb2MsIExhenlOb2RlKG1fZ3JhcGguZnJlZXplKEpT
VmFsdWUobm9kZS0+dHJhbnNpdGlvbigpLT5uZXh0KSkpKTsKKyAgICAgICAgICAgICAgICB3cml0
ZXMuYWRkKFN0cnVjdHVyZVBMb2MsIExhenlOb2RlKG1fZ3JhcGguZnJlZXplKEpTVmFsdWUobm9k
ZS0+dHJhbnNpdGlvbigpLT5uZXh0LmdldCgpKSkpKTsKICAgICAgICAgICAgICAgICB0YXJnZXQt
PnNldFN0cnVjdHVyZXMobm9kZS0+dHJhbnNpdGlvbigpLT5uZXh0KTsKICAgICAgICAgICAgIH0g
ZWxzZQogICAgICAgICAgICAgICAgIG1faGVhcC5lc2NhcGUobm9kZS0+Y2hpbGQxKCkubm9kZSgp
KTsKQEAgLTkxMiw3ICs5MTIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgQWxsb2NhdGlvbiog
YWxsb2NhdGlvbiA9IG1faGVhcC5vbmx5TG9jYWxBbGxvY2F0aW9uKG5vZGUtPmNoaWxkMSgpLm5v
ZGUoKSk7CiAgICAgICAgICAgICBpZiAoYWxsb2NhdGlvbiAmJiBhbGxvY2F0aW9uLT5pc09iamVj
dEFsbG9jYXRpb24oKSkgewogICAgICAgICAgICAgICAgIE11bHRpR2V0QnlPZmZzZXREYXRhJiBk
YXRhID0gbm9kZS0+bXVsdGlHZXRCeU9mZnNldERhdGEoKTsKLSAgICAgICAgICAgICAgICBTdHJ1
Y3R1cmVTZXQgdmFsaWRTdHJ1Y3R1cmVzOworICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1
Y3R1cmVTZXQgdmFsaWRTdHJ1Y3R1cmVzOwogICAgICAgICAgICAgICAgIGJvb2wgaGFzSW52YWxp
ZFN0cnVjdHVyZXMgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG11
bHRpR2V0QnlPZmZzZXRDYXNlIDogZGF0YS5jYXNlcykgewogICAgICAgICAgICAgICAgICAgICBp
ZiAoIWFsbG9jYXRpb24tPnN0cnVjdHVyZXMoKS5vdmVybGFwcyhtdWx0aUdldEJ5T2Zmc2V0Q2Fz
ZS5zZXQoKSkpCkBAIC0xNDQ0LDEyICsxNDQ0LDExIEBAIHByaXZhdGU6CiAgICAgICAgIHN3aXRj
aCAoYWxsb2NhdGlvbi5raW5kKCkpIHsKICAgICAgICAgY2FzZSBBbGxvY2F0aW9uOjpLaW5kOjpP
YmplY3Q6IHsKICAgICAgICAgICAgIE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEqIGRhdGEgPSBt
X2dyYXBoLm1fb2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5hZGQoKTsKLSAgICAgICAgICAgIFN0
cnVjdHVyZVNldCogc2V0ID0gbV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoYWxsb2NhdGlvbi5zdHJ1
Y3R1cmVzKCkpOwogCiAgICAgICAgICAgICByZXR1cm4gbV9ncmFwaC5hZGROb2RlKAogICAgICAg
ICAgICAgICAgIGFsbG9jYXRpb24uaWRlbnRpZmllcigpLT5wcmVkaWN0aW9uKCksIE5vZGU6OlZh
ckFyZywgTWF0ZXJpYWxpemVOZXdPYmplY3QsCiAgICAgICAgICAgICAgICAgd2hlcmUtPm9yaWdp
bi53aXRoU2VtYW50aWMoYWxsb2NhdGlvbi5pZGVudGlmaWVyKCktPm9yaWdpbi5zZW1hbnRpYyks
Ci0gICAgICAgICAgICAgICAgT3BJbmZvKHNldCksIE9wSW5mbyhkYXRhKSwgMCwgMCk7CisgICAg
ICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KGFsbG9jYXRpb24uc3Ry
dWN0dXJlcygpKSksIE9wSW5mbyhkYXRhKSwgMCwgMCk7CiAgICAgICAgIH0KIAogICAgICAgICBj
YXNlIEFsbG9jYXRpb246OktpbmQ6OkFzeW5jRnVuY3Rpb246CkBAIC0yMTAzLDcgKzIxMDIsNyBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIE5hbWVkUHJvcGVydHlQTG9jOiB7CiAgICAgICAgICAg
ICBBbGxvY2F0aW9uJiBhbGxvY2F0aW9uID0gbV9oZWFwLmdldEFsbG9jYXRpb24obG9jYXRpb24u
YmFzZSgpKTsKIAotICAgICAgICAgICAgVmVjdG9yPFN0cnVjdHVyZSo+IHN0cnVjdHVyZXM7Cisg
ICAgICAgICAgICBWZWN0b3I8UmVnaXN0ZXJlZFN0cnVjdHVyZT4gc3RydWN0dXJlczsKICAgICAg
ICAgICAgIHN0cnVjdHVyZXMuYXBwZW5kUmFuZ2UoYWxsb2NhdGlvbi5zdHJ1Y3R1cmVzKCkuYmVn
aW4oKSwgYWxsb2NhdGlvbi5zdHJ1Y3R1cmVzKCkuZW5kKCkpOwogICAgICAgICAgICAgdW5zaWdu
ZWQgaWRlbnRpZmllck51bWJlciA9IGxvY2F0aW9uLmluZm8oKTsKICAgICAgICAgICAgIFVuaXF1
ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBoLmlkZW50aWZpZXJzKClbaWRlbnRpZmllck51bWJl
cl07CkBAIC0yMTExLDcgKzIxMTAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgc3RkOjpzb3J0
KAogICAgICAgICAgICAgICAgIHN0cnVjdHVyZXMuYmVnaW4oKSwKICAgICAgICAgICAgICAgICBz
dHJ1Y3R1cmVzLmVuZCgpLAotICAgICAgICAgICAgICAgIFt1aWRdIChTdHJ1Y3R1cmUgKmEsIFN0
cnVjdHVyZSogYikgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgW3VpZF0gKFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgYSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBiKSAtPiBib29sIHsKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGEtPmdldENvbmN1cnJlbnRseSh1aWQpIDwgYi0+Z2V0Q29uY3VycmVu
dGx5KHVpZCk7CiAgICAgICAgICAgICAgICAgfSk7CiAKQEAgLTIxNDIsNyArMjE0MSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgY3Vy
cmVudE9mZnNldCA9IGZpcnN0T2Zmc2V0OwogICAgICAgICAgICAgICAgIFN0cnVjdHVyZVNldCBj
dXJyZW50U2V0OwotICAgICAgICAgICAgICAgIGZvciAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgOiBz
dHJ1Y3R1cmVzKSB7CisgICAgICAgICAgICAgICAgZm9yIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0
cnVjdHVyZSA6IHN0cnVjdHVyZXMpIHsKICAgICAgICAgICAgICAgICAgICAgUHJvcGVydHlPZmZz
ZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkodWlkKTsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKG9mZnNldCAhPSBjdXJyZW50T2Zmc2V0KSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBCZWNhdXNlIG91ciBhbmFseXNpcyB0cmVhdHMgTXVsdGlQdXRCeU9mZnNldCBs
aWtlIGFuIGVzY2FwZSwgd2Ugb25seSBoYXZlIHRvCkBAIC0yMTU1LDcgKzIxNTQsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudE9mZnNldCA9IG9mZnNldDsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTZXQuY2xlYXIoKTsKICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2V0LmFkZChzdHJ1Y3R1cmUpOwor
ICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2V0LmFkZChzdHJ1Y3R1cmUuZ2V0KCkpOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBkYXRhLT52YXJpYW50cy5hcHBlbmQoCiAg
ICAgICAgICAgICAgICAgICAgIFB1dEJ5SWRWYXJpYW50OjpyZXBsYWNlKGN1cnJlbnRTZXQsIGN1
cnJlbnRPZmZzZXQsIEluZmVycmVkVHlwZTo6VG9wKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BJbmZvLmgJKHJldmlzaW9uIDIxMTEwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDggQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJIZWFwQ2VsbC5oIgorI2luY2x1ZGUgIkRGR1JlZ2lz
dGVyZWRTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKICNpZiBF
TkFCTEUoREZHX0pJVCkKQEAgLTQyLDggKzQ0LDE3IEBAIHN0cnVjdCBPcEluZm8gewogI2lmIE9T
KERBUldJTikKICAgICBleHBsaWNpdCBPcEluZm8odWludHB0cl90IHZhbHVlKSA6IG1fdmFsdWUo
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KHZhbHVlKSkgeyB9CiAjZW5kaWYKLSAgICBleHBsaWNpdCBP
cEluZm8odm9pZCogdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRl
cnByZXRfY2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkpIHsgfQotICAgIGV4cGxpY2l0IE9wSW5mbyhj
b25zdCB2b2lkKiB2YWx1ZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4odmFsdWUpKSkgeyB9CisgICAgZXhwbGljaXQgT3BJbmZvKFJl
Z2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHN0cnVjdHVyZSkpKSB7IH0KKworCisgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgZXhwbGljaXQgT3BJbmZvKFQqIHB0cikKKyAgICB7Cisg
ICAgICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxIZWFwQ2VsbCwgVD46OnZhbHVl
LCAiVG8gbWFrZSBhbiBPcEluZm8gd2l0aCBhIGNlbGwgaW4gaXQsIHRoZSBjZWxsIG11c3QgYmUg
cmVnaXN0ZXJlZCBvciBmcm96ZW4uIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNf
YmFzZV9vZjxTdHJ1Y3R1cmVTZXQsIFQ+Ojp2YWx1ZSwgIlRvIG1ha2UgYW4gT3BJbmZvIHdpdGgg
YSBzdHJ1Y3R1cmUgc2V0IGluLCBtYWtlIHN1cmUgdG8gdXNlIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVT
ZXQuIik7CisgICAgICAgIG1fdmFsdWUgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KHB0cikpOworICAgIH0KKwogICAgIHVpbnQ2NF90IG1fdmFsdWU7
CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHJldmlzaW9u
IDIxMTEwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY3LDcgKzY3LDYgQEAKICNpbmNsdWRlICJERkdTdG9yZUJhcnJpZXJDbHVz
dGVyaW5nUGhhc2UuaCIKICNpbmNsdWRlICJERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5o
IgogI2luY2x1ZGUgIkRGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuaCIKLSNpbmNsdWRlICJERkdT
dHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5oIgogI2luY2x1ZGUgIkRGR1RpZXJVcENoZWNrSW5q
ZWN0aW9uUGhhc2UuaCIKICNpbmNsdWRlICJERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmgiCiAj
aW5jbHVkZSAiREZHVW5pZmljYXRpb25QaGFzZS5oIgpAQCAtMzExLDcgKzMxMCw2IEBAIFBsYW46
OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHIKICAgICBSVU5fUEhBU0UocGVyZm9y
bUJhY2t3YXJkc1Byb3BhZ2F0aW9uKTsKICAgICBSVU5fUEhBU0UocGVyZm9ybVByZWRpY3Rpb25Q
cm9wYWdhdGlvbik7CiAgICAgUlVOX1BIQVNFKHBlcmZvcm1GaXh1cCk7Ci0gICAgUlVOX1BIQVNF
KHBlcmZvcm1TdHJ1Y3R1cmVSZWdpc3RyYXRpb24pOwogICAgIFJVTl9QSEFTRShwZXJmb3JtSW52
YWxpZGF0aW9uUG9pbnRJbmplY3Rpb24pOwogICAgIFJVTl9QSEFTRShwZXJmb3JtVHlwZUNoZWNr
SG9pc3RpbmcpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZWdp
c3RlcmVkU3RydWN0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiREZHUmVnaXN0ZXJlZFN0
cnVjdHVyZS5oIgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJERkdBYnN0cmFj
dFZhbHVlLmgiCisjaW5jbHVkZSAiVHJhY2tlZFJlZmVyZW5jZXMuaCIKKyNpbmNsdWRlIDx3dGYv
Q29tbWFQcmludGVyLmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKwordm9p
ZCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0OjpmaWx0ZXIoY29uc3QgREZHOjpTdHJ1Y3R1cmVBYnN0
cmFjdFZhbHVlJiBvdGhlcikKK3sKKyAgICBnZW5lcmljRmlsdGVyKFsmXSAoUmVnaXN0ZXJlZFN0
cnVjdHVyZSBzdHJ1Y3R1cmUpIC0+IGJvb2wgeyByZXR1cm4gb3RoZXIuY29udGFpbnMoc3RydWN0
dXJlKTsgfSk7Cit9CisKK3ZvaWQgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldDo6ZmlsdGVyKFNwZWN1
bGF0ZWRUeXBlIHR5cGUpCit7CisgICAgZ2VuZXJpY0ZpbHRlcigKKyAgICAgICAgWyZdIChSZWdp
c3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgLT4gYm9vbCB7CisgICAgICAgICAgICByZXR1cm4g
dHlwZSAmIHNwZWN1bGF0aW9uRnJvbVN0cnVjdHVyZShzdHJ1Y3R1cmUuZ2V0KCkpOworICAgICAg
ICB9KTsKK30KKwordm9pZCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0OjpmaWx0ZXJBcnJheU1vZGVz
KEFycmF5TW9kZXMgYXJyYXlNb2RlcykKK3sKKyAgICBnZW5lcmljRmlsdGVyKAorICAgICAgICBb
Jl0gKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSAtPiBib29sIHsKKyAgICAgICAgICAg
IHJldHVybiBhcnJheU1vZGVzICYgYXJyYXlNb2RlRnJvbVN0cnVjdHVyZShzdHJ1Y3R1cmUuZ2V0
KCkpOworICAgICAgICB9KTsKK30KKwordm9pZCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0OjpmaWx0
ZXIoY29uc3QgREZHOjpBYnN0cmFjdFZhbHVlJiBvdGhlcikKK3sKKyAgICBmaWx0ZXIob3RoZXIu
bV9zdHJ1Y3R1cmUpOworICAgIGZpbHRlcihvdGhlci5tX3R5cGUpOworICAgIGZpbHRlckFycmF5
TW9kZXMob3RoZXIubV9hcnJheU1vZGVzKTsKK30KKworU3BlY3VsYXRlZFR5cGUgUmVnaXN0ZXJl
ZFN0cnVjdHVyZVNldDo6c3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlcygpIGNvbnN0Cit7CisgICAg
U3BlY3VsYXRlZFR5cGUgcmVzdWx0ID0gU3BlY05vbmU7CisgICAgZm9yRWFjaCgKKyAgICAgICAg
WyZdIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgeworICAgICAgICAgICAgbWVyZ2VT
cGVjdWxhdGlvbihyZXN1bHQsIHNwZWN1bGF0aW9uRnJvbVN0cnVjdHVyZShzdHJ1Y3R1cmUuZ2V0
KCkpKTsKKyAgICAgICAgfSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworQXJyYXlNb2RlcyBS
ZWdpc3RlcmVkU3RydWN0dXJlU2V0OjphcnJheU1vZGVzRnJvbVN0cnVjdHVyZXMoKSBjb25zdAor
eworICAgIEFycmF5TW9kZXMgcmVzdWx0ID0gMDsKKyAgICBmb3JFYWNoKAorICAgICAgICBbJl0g
KFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSB7CisgICAgICAgICAgICBtZXJnZUFycmF5
TW9kZXMocmVzdWx0LCBhc0FycmF5TW9kZXMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpOwor
ICAgICAgICB9KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIFJlZ2lzdGVyZWRTdHJ1
Y3R1cmVTZXQ6OnZhbGlkYXRlUmVmZXJlbmNlcyhjb25zdCBUcmFja2VkUmVmZXJlbmNlcyYgdHJh
Y2tlZFJlZmVyZW5jZXMpIGNvbnN0Cit7CisgICAgLy8gVGhlIHR5cGUgc3lzdGVtIHNob3VsZCBo
ZWxwIHVzIGhlcmUsIGJ1dCBwcm90ZWN0IHBlb3BsZSBmcm9tIGdldHRpbmcgdGhhdCB3cm9uZyB1
c2luZyBiaXR3aXNlX2Nhc3Qgb3Igc29tZXRoaW5nIGNyYXp5LgorICAgIGZvckVhY2goCisgICAg
ICAgIFsmXSAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIHsKKyAgICAgICAgICAgIHRy
YWNrZWRSZWZlcmVuY2VzLmNoZWNrKHN0cnVjdHVyZS5nZXQoKSk7CisgICAgICAgIH0pOworfQor
Cit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJlZFN0
cnVjdHVyZS5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UmVnaXN0ZXJlZFN0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNs
dWRlICJTdHJ1Y3R1cmVTZXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFRyYWNrZWRS
ZWZlcmVuY2VzOworCituYW1lc3BhY2UgREZHIHsKKworc3RydWN0IEFic3RyYWN0VmFsdWU7Citj
bGFzcyBHcmFwaDsKK2NsYXNzIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQ7CitjbGFzcyBTdHJ1Y3R1
cmVBYnN0cmFjdFZhbHVlOworCitjbGFzcyBSZWdpc3RlcmVkU3RydWN0dXJlIHsKK3B1YmxpYzoK
KyAgICBSZWdpc3RlcmVkU3RydWN0dXJlKCkgPSBkZWZhdWx0OworCisgICAgQUxXQVlTX0lOTElO
RSBTdHJ1Y3R1cmUqIGdldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlOyB9CisgICAgU3Ry
dWN0dXJlKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gZ2V0KCk7IH0KKworICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJlJiBvdGhlcikgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBnZXQoKSA9PSBvdGhlci5nZXQoKTsKKyAgICB9CisKKyAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZSYgb3RoZXIpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgfQorCisgICAgZXhwbGlj
aXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISFnZXQoKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEdyYXBoOworICAgIGZyaWVuZCBj
bGFzcyBSZWdpc3RlcmVkU3RydWN0dXJlU2V0OworCisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZShT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCisg
ICAgeworICAgICAgICBBU1NFUlQoc3RydWN0dXJlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgUmVn
aXN0ZXJlZFN0cnVjdHVyZSBjcmVhdGVQcml2YXRlKFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUoc3RydWN0dXJlKTsKKyAgICB9
CisKKyAgICBTdHJ1Y3R1cmUqIG1fc3RydWN0dXJlIHsgbnVsbHB0ciB9OworfTsKKworY2xhc3Mg
UmVnaXN0ZXJlZFN0cnVjdHVyZVNldCA6IHB1YmxpYyBUaW55UHRyU2V0PFJlZ2lzdGVyZWRTdHJ1
Y3R1cmU+IHsKK3B1YmxpYzoKKworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQoKQorICAgIHsg
fQorICAgIAorICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQoUmVnaXN0ZXJlZFN0cnVjdHVyZSBz
dHJ1Y3R1cmUpCisgICAgICAgIDogVGlueVB0clNldChzdHJ1Y3R1cmUpCisgICAgeworICAgIH0K
KyAgICAKKyAgICBBTFdBWVNfSU5MSU5FIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQoY29uc3QgUmVn
aXN0ZXJlZFN0cnVjdHVyZVNldCYgb3RoZXIpCisgICAgICAgIDogVGlueVB0clNldChvdGhlcikK
KyAgICB7CisgICAgfQorICAgIAorICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgb25seVN0cnVjdHVy
ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gb25seUVudHJ5KCk7CisgICAgfQorCisg
ICAgU3RydWN0dXJlU2V0IHRvU3RydWN0dXJlU2V0KCkgY29uc3QKKyAgICB7CisgICAgICAgIFN0
cnVjdHVyZVNldCByZXN1bHQ7CisgICAgICAgIGZvckVhY2goWyZdIChSZWdpc3RlcmVkU3RydWN0
dXJlIHN0cnVjdHVyZSkgeyByZXN1bHQuYWRkKHN0cnVjdHVyZS5nZXQoKSk7IH0pOworICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHZvaWQgZmlsdGVyKGNvbnN0IERGRzo6U3Ry
dWN0dXJlQWJzdHJhY3RWYWx1ZSYpOworICAgIHZvaWQgZmlsdGVyKFNwZWN1bGF0ZWRUeXBlKTsK
KyAgICB2b2lkIGZpbHRlckFycmF5TW9kZXMoQXJyYXlNb2Rlcyk7CisgICAgdm9pZCBmaWx0ZXIo
Y29uc3QgREZHOjpBYnN0cmFjdFZhbHVlJik7CisgICAgCisgICAgU3BlY3VsYXRlZFR5cGUgc3Bl
Y3VsYXRpb25Gcm9tU3RydWN0dXJlcygpIGNvbnN0OworICAgIEFycmF5TW9kZXMgYXJyYXlNb2Rl
c0Zyb21TdHJ1Y3R1cmVzKCkgY29uc3Q7CisKKyAgICB2b2lkIHZhbGlkYXRlUmVmZXJlbmNlcyhj
b25zdCBUcmFja2VkUmVmZXJlbmNlcyYpIGNvbnN0OworCisgICAgLyoKK3ByaXZhdGU6CisgICAg
ZnJpZW5kIGNsYXNzIEdyYXBoOworCisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldChTdHJ1Y3R1
cmVTZXQqIHNldCkKKyAgICAgICAgOiBtX3NldChzZXQpCisgICAgeworICAgICAgICBBU1NFUlQo
c2V0KTsKKyAgICB9CisKKyAgICBzdGF0aWMgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBjcmVhdGVQ
cml2YXRlKFN0cnVjdHVyZVNldCogc2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmVTZXQoc2V0KTsKKyAgICB9CisgICAgKi8KK307CisKK30gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDIxMTEwNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MjUsNyArNDI1LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3Rh
dGVUeXBlJiBzdAogICAgIGNhc2UgQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBS
ZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgogICAgICAgICByZXR1cm4gc3RhdGUuZm9yTm9kZShu
b2RlLT5jaGlsZDEoKSkubV9zdHJ1Y3R1cmUuaXNTdWJzZXRPZigKLSAgICAgICAgICAgIFN0cnVj
dHVyZVNldChub2RlLT50cmFuc2l0aW9uKCktPnByZXZpb3VzKSk7CisgICAgICAgICAgICBSZWdp
c3RlcmVkU3RydWN0dXJlU2V0KG5vZGUtPnRyYW5zaXRpb24oKS0+cHJldmlvdXMpKTsKICAgICAg
ICAgCiAgICAgY2FzZSBHZXRCeU9mZnNldDoKICAgICBjYXNlIEdldEdldHRlclNldHRlckJ5T2Zm
c2V0OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAyMTExMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OTQsNyArMjk0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZQog
ICAgICAgICBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluaygmbV9qaXQpOwogICAgICAgICBH
UFJSZWcgbG9jYWxHbG9iYWxPYmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVjdC5ncHIoKTsKICAg
ICAgICAgR1BSUmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9IHJlbW90ZUdsb2JhbE9iamVjdC5n
cHIoKTsKLSAgICAgICAgbV9qaXQubW92ZShKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cihtX2pp
dC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMp
KSwgbG9jYWxHbG9iYWxPYmplY3RHUFIpOworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0
Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQ
Uik7CiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYXJnUGF5bG9h
ZEdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVzdWx0UGF5bG9hZEdQUik7CiAg
ICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0UGF5bG9hZEdQ
UiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlbW90ZUdsb2JhbE9iamVjdEdQ
Uik7CiAgICAgICAgIG1faml0LmNvbXBhcmUzMihKSVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xv
YmFsT2JqZWN0R1BSLCByZW1vdGVHbG9iYWxPYmplY3RHUFIsIHJlc3VsdFBheWxvYWRHUFIpOwpA
QCAtMzU4LDcgKzM1OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVl
cGgKICAgIAogICAgICAgICBHUFJSZWcgbG9jYWxHbG9iYWxPYmplY3RHUFIgPSBsb2NhbEdsb2Jh
bE9iamVjdC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9IHJl
bW90ZUdsb2JhbE9iamVjdC5ncHIoKTsKLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRy
KG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxP
YmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2Jq
ZWN0R1BSKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhhcmdQ
YXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZXN1bHRHUFIpOwogICAg
ICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgU3RydWN0
dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlbW90ZUdsb2JhbE9iamVjdEdQUik7CiAgICAg
ICAgIGJyYW5jaFB0cihKSVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2JqZWN0R1BSLCBy
ZW1vdGVHbG9iYWxPYmplY3RHUFIsIGludmVydCA/IG5vdFRha2VuIDogdGFrZW4pOwpAQCAtMTA4
Miw3ICsxMDgyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQog
ICAgICAgICAgICAgbV9qaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOwogICAgIH0KIAotICAg
IG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoaW5mbyksIEdQUkluZm86
OnJlZ1QyKTsKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoaW5mbyksIEdQUkluZm86OnJl
Z1QyKTsKICAgICBKSVRDb21waWxlcjo6Q2FsbCBzbG93Q2FsbCA9IG1faml0Lm5lYXJDYWxsKCk7
CiAKICAgICBkb25lLmxpbmsoJm1faml0KTsKQEAgLTEyNDIsMTAgKzEyNDIsOSBAQCBHUFJSZWcg
U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsCiAgICAgc3dpdGNoIChpbmZvLnJlZ2lz
dGVyRm9ybWF0KCkpIHsKICAgICBjYXNlIERhdGFGb3JtYXROb25lOiB7CiAgICAgICAgIGlmIChl
ZGdlLT5oYXNDb25zdGFudCgpKSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIGpzVmFsdWUgPSBlZGdl
LT5hc0pTVmFsdWUoKTsKICAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwogICAg
ICAgICAgICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckNv
bnN0YW50KTsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIoanNWYWx1ZS5hc0NlbGwoKSksIGdwcik7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKFRy
dXN0ZWRJbW1QdHIoZWRnZS0+Y29uc3RhbnQoKSksIGdwcik7CiAgICAgICAgICAgICBpbmZvLmZp
bGxDZWxsKCptX3N0cmVhbSwgZ3ByKTsKICAgICAgICAgICAgIHJldHVybiBncHI7CiAgICAgICAg
IH0KQEAgLTE3MjQsNyArMTcyMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmpl
Y3RPck90aGUKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIAot
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBo
KCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpKSk7Cisg
ICAgICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwg
bV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFu
dGljKSkpKTsKIAogICAgICAgICBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluaygmbV9q
aXQpOwogICAgIH0KQEAgLTE4NDMsNyArMTg0Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVt
aXRPYmplY3RPck90aGVyQnIKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAogICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0
KCkpLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2pp
dC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMp
KSkpOworICAgICAgICAgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0Lmdy
YXBoKCksIG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpKSk7CiAKICAgICAgICAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxp
bmsoJm1faml0KTsKICAgICB9CkBAIC0zNzc4LDcgKzM3NzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdBcnJheTogewogICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmlz
SGF2aW5nQUJhZFRpbWUoKSAmJiAhaGFzQW55QXJyYXlTdG9yYWdlKG5vZGUtPmluZGV4aW5nVHlw
ZSgpKSkgewotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3Qt
PmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRl
eGluZ1R5cGUoKSk7CisgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9
IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVj
dHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkp
KTsKICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpID09IG5vZGUt
PmluZGV4aW5nVHlwZSgpKTsKICAgICAgICAgICAgIEFTU0VSVCgKICAgICAgICAgICAgICAgICBo
YXNVbmRlY2lkZWQoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkKQEAgLTM4NTMsNyArMzg1Miw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1
bHQodGhpcyk7CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgIG9w
ZXJhdGlvbk5ld0VtcHR5QXJyYXksIHJlc3VsdC5ncHIoKSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0
cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBl
KCkpKTsKKyAgICAgICAgICAgICAgICBvcGVyYXRpb25OZXdFbXB0eUFycmF5LCByZXN1bHQuZ3By
KCksIG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0
cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBl
KCkpKSk7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAgICAg
Y2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0z
OTMwLDcgKzM5MjksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgCiAg
ICAgICAgIGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICBvcGVyYXRpb25OZXdBcnJheSwgcmVz
dWx0LmdwcigpLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVy
aW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSksCisgICAgICAgICAgICBvcGVyYXRp
b25OZXdBcnJheSwgcmVzdWx0LmdwcigpLCBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJl
KGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0
aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKSksCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDx2b2lk
Kj4oYnVmZmVyKSwgbm9kZS0+bnVtQ2hpbGRyZW4oKSk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlv
bkNoZWNrKCk7CiAKQEAgLTM5NzYsMTAgKzM5NzUsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOwogICAgICAgICBHUFJSZWcgc3RydWN0dXJlR1BSID0gc2VsZWN0U2NyYXRjaEdQUihzaXpl
R1BSKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgYmlnTGVuZ3RoID0gbV9qaXQuYnJh
bmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgc2l6ZUdQUiwgVHJ1c3RlZEltbTMy
KE1JTl9BUlJBWV9TVE9SQUdFX0NPTlNUUlVDVElPTl9MRU5HVEgpKTsKLSAgICAgICAgbV9qaXQu
bW92ZShUcnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGlu
Z1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKSksIHN0cnVjdHVyZUdQ
Uik7CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC5ncmFwaCgpLnJlZ2lz
dGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVE
dXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKSkpLCBzdHJ1Y3R1cmVHUFIpOwog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAgICAg
ICBiaWdMZW5ndGgubGluaygmbV9qaXQpOwotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1Q
dHIoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9j
YXRpb24oQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSksIHN0cnVjdHVyZUdQUik7CisgICAgICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGds
b2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9u
KEFycmF5V2l0aEFycmF5U3RvcmFnZSkpKSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgZG9uZS5s
aW5rKCZtX2ppdCk7CiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXlXaXRo
U2l6ZSwgcmVzdWx0R1BSLCBzdHJ1Y3R1cmVHUFIsIHNpemVHUFIsIG51bGxwdHIpOwogICAgICAg
ICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwpAQCAtMzk5OSw3ICszOTk4LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3Rv
cmFnZS5ncHIoKTsKIAotICAgICAgICAgICAgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQ
UiwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9j
YXRpb24oaW5kZXhpbmdUeXBlKSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMsIG51bUVsZW1lbnRz
KTsKKyAgICAgICAgICAgIGVtaXRBbGxvY2F0ZVJhd09iamVjdChyZXN1bHRHUFIsIG1faml0Lmdy
YXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvcklu
ZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oaW5kZXhpbmdUeXBlKSksIHN0b3JhZ2VHUFIsIG51
bUVsZW1lbnRzLCBudW1FbGVtZW50cyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChu
b2RlLT5pbmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhEb3VibGUpIHsKICAgICAgICAgICAgICAg
ICBKU1ZhbHVlKiBkYXRhID0gbV9qaXQuY29kZUJsb2NrKCktPmNvbnN0YW50QnVmZmVyKG5vZGUt
PnN0YXJ0Q29uc3RhbnQoKSk7CkBAIC00MDI3LDcgKzQwMjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAg
ICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgCi0gICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXlCdWZmZXIsIHJlc3VsdC5ncHIoKSwgZ2xv
YmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24o
bm9kZS0+aW5kZXhpbmdUeXBlKCkpLCBub2RlLT5zdGFydENvbnN0YW50KCksIG5vZGUtPm51bUNv
bnN0YW50cygpKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheUJ1ZmZl
ciwgcmVzdWx0LmdwcigpLCBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9i
amVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUt
PmluZGV4aW5nVHlwZSgpKSksIG5vZGUtPnN0YXJ0Q29uc3RhbnQoKSwgbm9kZS0+bnVtQ29uc3Rh
bnRzKCkpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAKICAgICAg
ICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwpAQCAtNDA1MSw3ICs0MDUwLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKAogICAg
ICAgICAgICAgICAgIG9wZXJhdGlvbk5ld1R5cGVkQXJyYXlXaXRoT25lQXJndW1lbnRGb3JUeXBl
KG5vZGUtPnR5cGVkQXJyYXlUeXBlKCkpLAotICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgZ2xv
YmFsT2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KG5vZGUtPnR5cGVkQXJy
YXlUeXBlKCkpLCBhcmd1bWVudFJlZ3MpOworICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgbV9q
aXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1
Y3R1cmVDb25jdXJyZW50bHkobm9kZS0+dHlwZWRBcnJheVR5cGUoKSkpLCBhcmd1bWVudFJlZ3Mp
OwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtNDE3MSw3ICs0MTcwLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dQYXRoOwogICAgICAgICAKLSAgICAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBub2RlLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgUmVn
aXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBub2RlLT5zdHJ1Y3R1cmUoKTsKICAgICAgICAg
c2l6ZV90IGFsbG9jYXRpb25TaXplID0gSlNGaW5hbE9iamVjdDo6YWxsb2NhdGlvblNpemUoc3Ry
dWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgpKTsKICAgICAgICAgTWFya2VkQWxsb2NhdG9yKiBhbGxv
Y2F0b3JQdHIgPSBzdWJzcGFjZUZvcjxKU0ZpbmFsT2JqZWN0PigqbV9qaXQudm0oKSktPmFsbG9j
YXRvckZvcihhbGxvY2F0aW9uU2l6ZSk7CiAKQEAgLTQ0MTYsOCArNDQxNSw4IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICB9CiAgICAgICAgIAogICAgIGNh
c2UgUHV0U3RydWN0dXJlOiB7Ci0gICAgICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gbm9k
ZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91czsKLSAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1
cmUgPSBub2RlLT50cmFuc2l0aW9uKCktPm5leHQ7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUgb2xkU3RydWN0dXJlID0gbm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91czsKKyAgICAgICAg
UmVnaXN0ZXJlZFN0cnVjdHVyZSBuZXdTdHJ1Y3R1cmUgPSBub2RlLT50cmFuc2l0aW9uKCktPm5l
eHQ7CiAKICAgICAgICAgbV9qaXQuaml0Q29kZSgpLT5jb21tb24ubm90aWZ5Q29tcGlsaW5nU3Ry
dWN0dXJlVHJhbnNpdGlvbihtX2ppdC5ncmFwaCgpLm1fcGxhbiwgbV9qaXQuY29kZUJsb2NrKCks
IG5vZGUpOwogCkBAIC00NDI3LDcgKzQ0MjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEFTU0VSVF9VTlVTRUQob2xkU3RydWN0dXJlLCBvbGRT
dHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpID09IG5ld1N0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkp
OwogICAgICAgICBBU1NFUlQob2xkU3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBuZXdT
dHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpKTsKICAgICAgICAgQVNTRVJUKG9sZFN0cnVjdHVy
ZS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSA9PSBuZXdTdHJ1Y3R1cmUtPnR5cGVJbmZv
KCkuaW5saW5lVHlwZUZsYWdzKCkpOwotICAgICAgICBtX2ppdC5zdG9yZVB0cihNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihuZXdTdHJ1Y3R1cmUpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKKyAgICAgICAgbV9qaXQu
c3RvcmVQdHIoVHJ1c3RlZEltbVB0cihuZXdTdHJ1Y3R1cmUpLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKICAgICAgICAgCiAg
ICAgICAgIG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQ2OTEsNyArNDY5MCw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgaWYg
KCFoYXNJbnN0YW5jZVZhbHVlTm9kZS0+aXNDZWxsQ29uc3RhbnQoKSB8fCBkZWZhdWx0SGFzSW5z
dGFuY2VGdW5jdGlvbiAhPSBoYXNJbnN0YW5jZVZhbHVlTm9kZS0+YXNDZWxsKCkpIHsKICAgICAg
ICAgICAgIEpTVmFsdWVSZWdzIGhhc0luc3RhbmNlVmFsdWVSZWdzID0gaGFzSW5zdGFuY2VWYWx1
ZS5qc1ZhbHVlUmVncygpOwogICAgICAgICAgICAgbm90RGVmYXVsdEhhc0luc3RhbmNlVmFsdWUu
YXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChoYXNJbnN0YW5jZVZhbHVlUmVncykpOwotICAg
ICAgICAgICAgbm90RGVmYXVsdEhhc0luc3RhbmNlVmFsdWUuYXBwZW5kKG1faml0LmJyYW5jaFB0
cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGhhc0luc3RhbmNlVmFsdWVSZWdzLnBheWxvYWRH
UFIoKSwgVHJ1c3RlZEltbVB0cihkZWZhdWx0SGFzSW5zdGFuY2VGdW5jdGlvbikpKTsKKyAgICAg
ICAgICAgIG5vdERlZmF1bHRIYXNJbnN0YW5jZVZhbHVlLmFwcGVuZChtX2ppdC5icmFuY2hQdHIo
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBoYXNJbnN0YW5jZVZhbHVlUmVncy5wYXlsb2FkR1BS
KCksIFRydXN0ZWRJbW1QdHIobm9kZS0+Y2VsbE9wZXJhbmQoKSkpKTsKICAgICAgICAgfQogCiAg
ICAgICAgIC8vIENoZWNrIHRoYXQgY29uc3RydWN0b3IgJ0ltcGxlbWVudHNEZWZhdWx0SGFzSW5z
dGFuY2UnLgpAQCAtNDc1Myw3ICs0NzUyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICAgICAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmso
Jm1faml0KTsKICAgICAgICAgICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9IGxvY2Fs
R2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHJlbW90ZUdsb2JhbE9iamVj
dEdQUiA9IHJlbW90ZUdsb2JhbE9iamVjdC5ncHIoKTsKLSAgICAgICAgICAgIG1faml0Lm1vdmUo
VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CiAgICAgICAg
ICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHZhbHVlLnBheWxvYWRHUFIo
KSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAg
ICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0LmdwcigpLCBTdHJ1
Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSKTsgCiAg
ICAgICAgICAgICBtX2ppdC5jb21wYXJlMzIoSklUQ29tcGlsZXI6OkVxdWFsLCBsb2NhbEdsb2Jh
bE9iamVjdEdQUiwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSLCByZXN1bHQuZ3ByKCkpOwpAQCAtNTcx
MywxMyArNTcxMiwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2NhdGVOZXdB
CiAgICAgLy8gV2UgY2FuIHVzZSByZXN1bHQgYXMgYSBzY3JhdGNoIGZvciB0aGlzLgogICAgIGVt
aXRJbml0aWFsaXplQnV0dGVyZmx5KHN0b3JhZ2VHUFIsIHNpemVHUFIsIGVtcHR5VmFsdWVSZWdz
LCByZXN1bHRHUFIpOwogICAgICAgICAgICAgCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBn
bG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlv
bihpbmRleGluZ1R5cGUpOworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9q
aXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJl
Rm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpKTsKICAgICBlbWl0
QWxsb2NhdGVKU09iamVjdDxKU0FycmF5PihyZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0
dXJlKSwgc3RvcmFnZUdQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNlcyk7CiAg
ICAgICAgICAgICAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPENh
bGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJsZVNpemVTbG93UGF0aEdlbmVyYXRvcj4oCiAgICAg
ICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVzdWx0R1BS
LAogICAgICAgICBzdHJ1Y3R1cmUsCi0gICAgICAgIHNob3VsZENvbnZlcnRMYXJnZVNpemVUb0Fy
cmF5U3RvcmFnZSA/IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVE
dXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aEFycmF5U3RvcmFnZSkgOiBzdHJ1Y3R1cmUsCisgICAg
ICAgIHNob3VsZENvbnZlcnRMYXJnZVNpemVUb0FycmF5U3RvcmFnZSA/IG1faml0LmdyYXBoKCku
cmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5n
VHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSkgOiBzdHJ1Y3R1cmUs
CiAgICAgICAgIHNpemVHUFIsIHN0b3JhZ2VHUFIpKTsKIH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAy
MTExMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTAsNyArMjUwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6bm9uU3BlY3VsYXRpdmVOb25QZQogCiAgICAgICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVj
dEdQUiA9IGxvY2FsR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmVtb3RlR2xv
YmFsT2JqZWN0R1BSID0gcmVtb3RlR2xvYmFsT2JqZWN0LmdwcigpOwotICAgICAgICBtX2ppdC5t
b3ZlKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0
Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQ
Uik7CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQu
Z3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgbV9qaXQuZW1p
dExvYWRTdHJ1Y3R1cmUoYXJnR1BSLCByZXN1bHRHUFIsIHNjcmF0Y2guZ3ByKCkpOwogICAgICAg
ICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgU3RydWN0dXJl
OjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlbW90ZUdsb2JhbE9iamVjdEdQUik7CiAgICAgICAg
IG1faml0LmNvbXBhcmVQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBsb2NhbEdsb2JhbE9iamVjdEdQ
UiwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSLCByZXN1bHRHUFIpOwpAQCAtMzA1LDcgKzMwNSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGgKIAogICAgICAgICBHUFJS
ZWcgbG9jYWxHbG9iYWxPYmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVjdC5ncHIoKTsKICAgICAg
ICAgR1BSUmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9IHJlbW90ZUdsb2JhbE9iamVjdC5ncHIo
KTsKLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkuZ2xvYmFs
T2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9i
amVjdEdQUik7CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgbV9q
aXQuZW1pdExvYWRTdHJ1Y3R1cmUoYXJnR1BSLCByZXN1bHRHUFIsIHNjcmF0Y2guZ3ByKCkpOwog
ICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgU3Ry
dWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlbW90ZUdsb2JhbE9iamVjdEdQUik7CiAg
ICAgICAgIGJyYW5jaFB0cihKSVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2JqZWN0R1BS
LCByZW1vdGVHbG9iYWxPYmplY3RHUFIsIHRha2VuKTsKQEAgLTEwMDYsNyArMTAwNiw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICBtX2ppdC5lbWl0U3Rv
cmVDYWxsU2l0ZUluZGV4KGNhbGxTaXRlKTsKICAgICAKICAgICBKSVRDb21waWxlcjo6RGF0YUxh
YmVsUHRyIHRhcmdldFRvQ2hlY2s7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGggPSBt
X2ppdC5icmFuY2hQdHJXaXRoUGF0Y2goTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBjYWxsZWVH
UFIsIHRhcmdldFRvQ2hlY2ssIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKDApKTsKKyAg
ICBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aCA9IG1faml0LmJyYW5jaFB0cldpdGhQYXRjaChN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGNhbGxlZUdQUiwgdGFyZ2V0VG9DaGVjaywgVHJ1c3Rl
ZEltbVB0cigwKSk7CiAKICAgICBpZiAoaXNUYWlsKSB7CiAgICAgICAgIGlmIChub2RlLT5vcCgp
ID09IFRhaWxDYWxsKSB7CkBAIC0xMDM1LDcgKzEwMzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgICAgICAgICBtX2ppdC5lbWl0UmVzdG9yZUNhbGxl
ZVNhdmVzKCk7IC8vIFRoaXMgbmVlZHMgdG8gaGFwcGVuIGFmdGVyIHdlIG1vdmVkIGNhbGxlZUdQ
UiB0byByZWdUMAogICAgIH0KIAotICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6cmVnVDIpOyAvLyBMaW5rIGluZm8gbmVl
ZHMgdG8gYmUgaW4gcmVnVDIKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoY2FsbExpbmtJ
bmZvKSwgR1BSSW5mbzo6cmVnVDIpOyAvLyBMaW5rIGluZm8gbmVlZHMgdG8gYmUgaW4gcmVnVDIK
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBzbG93Q2FsbCA9IG1faml0Lm5lYXJDYWxsKCk7CiAKICAg
ICBkb25lLmxpbmsoJm1faml0KTsKQEAgLTE4NTYsNyArMTg1Niw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVPYmplY3RPck90aGUKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigK
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAogICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpnbG9iYWxP
YmplY3RPZmZzZXQoKSksIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpKSk7CisgICAgICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50
Tm9kZS0+b3JpZ2luLnNlbWFudGljKSkpKTsKIAogICAgICAgICBpc05vdE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQubGluaygmbV9qaXQpOwogICAgIH0KQEAgLTIwMDcsNyArMjAwNyw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnIKICAgICAgICAgICAgIG1faml0LmJy
YW5jaFB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAogICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJl
OjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpKSk7CisgICAgICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Io
bV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSkpKTsKIAogICAgICAgICBpc05vdE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQubGluaygmbV9qaXQpOwogICAgIH0KQEAgLTM3NTcsNyArMzc1Nyw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIE5l
d0FycmF5OiB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5n
cmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBp
ZiAoIWdsb2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpICYmICFoYXNBbnlBcnJheVN0b3Jh
Z2Uobm9kZS0+aW5kZXhpbmdUeXBlKCkpKSB7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdB
bGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKTsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9i
YWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihu
b2RlLT5pbmRleGluZ1R5cGUoKSkpOwogICAgICAgICAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFw
aCgpLCBub2RlLCBzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpID09IG5vZGUtPmluZGV4aW5nVHlw
ZSgpKTsKICAgICAgICAgICAgIEFTU0VSVCgKICAgICAgICAgICAgICAgICBoYXNVbmRlY2lkZWQo
c3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkKQEAgLTM4MzAsNyArMzgzMCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgaWYgKCFub2RlLT5udW1D
aGlsZHJlbigpKSB7CiAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICAgICAg
R1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgICAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb25OZXdFbXB0eUFycmF5LCByZXN1bHQuZ3ByKCksIGdsb2JhbE9iamVjdC0+
YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4
aW5nVHlwZSgpKSk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0VtcHR5
QXJyYXksIHJlc3VsdC5ncHIoKSwgbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9i
YWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihu
b2RlLT5pbmRleGluZ1R5cGUoKSkpKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CiAgICAgICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTM5MTIsNyArMzkxMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRo
aXMpOwogICAgICAgICAKICAgICAgICAgY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgIG9wZXJh
dGlvbk5ld0FycmF5LCByZXN1bHQuZ3ByKCksIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVG
b3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKSwKKyAg
ICAgICAgICAgIG9wZXJhdGlvbk5ld0FycmF5LCByZXN1bHQuZ3ByKCksIG1faml0LmdyYXBoKCku
cmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5n
VHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKSwKICAgICAgICAgICAg
IHN0YXRpY19jYXN0PHZvaWQqPihidWZmZXIpLCBub2RlLT5udW1DaGlsZHJlbigpKTsKICAgICAg
ICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKIApAQCAtMzk1NiwxMCArMzk1NiwxMCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlJlZyByZXN1
bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIgPSBzZWxl
Y3RTY3JhdGNoR1BSKHNpemVHUFIpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBiaWdM
ZW5ndGggPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBzaXpl
R1BSLCBUcnVzdGVkSW1tMzIoTUlOX0FSUkFZX1NUT1JBR0VfQ09OU1RSVUNUSU9OX0xFTkdUSCkp
OwotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0LT5hcnJheVN0
cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBl
KCkpKSwgc3RydWN0dXJlR1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1f
aml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVy
ZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKSks
IHN0cnVjdHVyZUdQUik7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUgPSBtX2pp
dC5qdW1wKCk7CiAgICAgICAgIGJpZ0xlbmd0aC5saW5rKCZtX2ppdCk7Ci0gICAgICAgIG1faml0
Lm1vdmUoVHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhp
bmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2UpKSwgc3RydWN0dXJl
R1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkucmVn
aXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlw
ZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSkpLCBzdHJ1Y3R1cmVHUFIp
OwogICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25OZXdBcnJheVdpdGhTaXplLCByZXN1bHRHUFIsIHN0cnVjdHVyZUdQUiwgc2l6ZUdQUiwg
bnVsbHB0cik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CkBAIC0zOTc5LDcgKzM5
NzksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
ICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVn
IHN0b3JhZ2VHUFIgPSBzdG9yYWdlLmdwcigpOwogCi0gICAgICAgICAgICBlbWl0QWxsb2NhdGVS
YXdPYmplY3QocmVzdWx0R1BSLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhp
bmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpLCBzdG9yYWdlR1BSLCBudW1FbGVt
ZW50cywgbnVtRWxlbWVudHMpOworICAgICAgICAgICAgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KHJl
c3VsdEdQUiwgbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFy
cmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUp
KSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMsIG51bUVsZW1lbnRzKTsKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBpbmRleGluZ1R5cGUg
JiBJc0FycmF5KTsKICAgICAgICAgICAgIEpTVmFsdWUqIGRhdGEgPSBtX2ppdC5jb2RlQmxvY2so
KS0+Y29uc3RhbnRCdWZmZXIobm9kZS0+c3RhcnRDb25zdGFudCgpKTsKQEAgLTQwMDUsNyArNDAw
NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
Zmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRo
aXMpOwogICAgICAgICAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheUJ1
ZmZlciwgcmVzdWx0LmdwcigpLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhp
bmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSksIG5vZGUtPnN0YXJ0
Q29uc3RhbnQoKSwgbm9kZS0+bnVtQ29uc3RhbnRzKCkpOworICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyLCByZXN1bHQuZ3ByKCksIG1faml0LmdyYXBoKCkucmVn
aXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlw
ZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKSwgbm9kZS0+c3RhcnRDb25z
dGFudCgpLCBub2RlLT5udW1Db25zdGFudHMoKSk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNo
ZWNrKCk7CiAgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7
CkBAIC00MDI5LDcgKzQwMjksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQu
Z3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAg
ICAgIGNhbGxPcGVyYXRpb24oCiAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRBcnJh
eVdpdGhPbmVBcmd1bWVudEZvclR5cGUobm9kZS0+dHlwZWRBcnJheVR5cGUoKSksCi0gICAgICAg
ICAgICAgICAgcmVzdWx0R1BSLCBnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25j
dXJyZW50bHkobm9kZS0+dHlwZWRBcnJheVR5cGUoKSksCisgICAgICAgICAgICAgICAgcmVzdWx0
R1BSLCBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRB
cnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseShub2RlLT50eXBlZEFycmF5VHlwZSgpKSksCiAgICAg
ICAgICAgICAgICAgYXJndW1lbnRHUFIpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKICAgICAgICAgICAgIApAQCAtNDE0Myw3ICs0MTQzLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXBMaXN0IHNsb3dQYXRoOwogCi0gICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
bm9kZS0+c3RydWN0dXJlKCk7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJl
ID0gbm9kZS0+c3RydWN0dXJlKCk7CiAgICAgICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IEpT
RmluYWxPYmplY3Q6OmFsbG9jYXRpb25TaXplKHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSk7
CiAgICAgICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yUHRyID0gc3Vic3BhY2VGb3I8SlNG
aW5hbE9iamVjdD4oKm1faml0LnZtKCkpLT5hbGxvY2F0b3JGb3IoYWxsb2NhdGlvblNpemUpOwog
CkBAIC00Mzc2LDggKzQzNzYsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgfQogICAgICAgICAKICAgICBjYXNlIFB1dFN0cnVjdHVyZTogewotICAgICAg
ICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IG5vZGUtPnRyYW5zaXRpb24oKS0+cHJldmlvdXM7
Ci0gICAgICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gbm9kZS0+dHJhbnNpdGlvbigpLT5u
ZXh0OworICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG9sZFN0cnVjdHVyZSA9IG5vZGUtPnRy
YW5zaXRpb24oKS0+cHJldmlvdXM7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgbmV3U3Ry
dWN0dXJlID0gbm9kZS0+dHJhbnNpdGlvbigpLT5uZXh0OwogCiAgICAgICAgIG1faml0LmppdENv
ZGUoKS0+Y29tbW9uLm5vdGlmeUNvbXBpbGluZ1N0cnVjdHVyZVRyYW5zaXRpb24obV9qaXQuZ3Jh
cGgoKS5tX3BsYW4sIG1faml0LmNvZGVCbG9jaygpLCBub2RlKTsKIApAQCAtNDY1Miw3ICs0NjUy
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAv
LyBzaW5jZSBpdCByZWxpZXMgb24gT1NSIGluZm9ybWF0aW9uLiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0ODMyCiAgICAgICAgIGlmICghaGFzSW5zdGFuY2VWYWx1
ZU5vZGUtPmlzQ2VsbENvbnN0YW50KCkgfHwgZGVmYXVsdEhhc0luc3RhbmNlRnVuY3Rpb24gIT0g
aGFzSW5zdGFuY2VWYWx1ZU5vZGUtPmFzQ2VsbCgpKSB7CiAgICAgICAgICAgICBHUFJSZWcgaGFz
SW5zdGFuY2VWYWx1ZUdQUiA9IGhhc0luc3RhbmNlVmFsdWUuZ3ByKCk7Ci0gICAgICAgICAgICBu
b3REZWZhdWx0ID0gbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgaGFz
SW5zdGFuY2VWYWx1ZUdQUiwgVHJ1c3RlZEltbVB0cihkZWZhdWx0SGFzSW5zdGFuY2VGdW5jdGlv
bikpOworICAgICAgICAgICAgbm90RGVmYXVsdCA9IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIGhhc0luc3RhbmNlVmFsdWVHUFIsIFRydXN0ZWRJbW1QdHIobm9kZS0+
Y2VsbE9wZXJhbmQoKSkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gQ2hlY2sgdGhhdCBiYXNl
ICdJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlJy4KQEAgLTQ3MTksNyArNDcxOSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGlzTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICBHUFJSZWcgbG9j
YWxHbG9iYWxPYmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVjdC5ncHIoKTsKICAgICAgICAgICAg
IEdQUlJlZyByZW1vdGVHbG9iYWxPYmplY3RHUFIgPSByZW1vdGVHbG9iYWxPYmplY3QuZ3ByKCk7
Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CisgICAg
ICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBo
KCksIG1faml0Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbG9jYWxH
bG9iYWxPYmplY3RHUFIpOwogICAgICAgICAgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUodmFs
dWUuZ3ByKCksIHJlc3VsdC5ncHIoKSwgc2NyYXRjaC5ncHIoKSk7CiAgICAgICAgICAgICBtX2pp
dC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdC5ncHIoKSwgU3RydWN0dXJlOjpn
bG9iYWxPYmplY3RPZmZzZXQoKSksIHJlbW90ZUdsb2JhbE9iamVjdEdQUik7IAogICAgICAgICAg
ICAgbV9qaXQuY29tcGFyZVB0cihKSVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2JqZWN0
R1BSLCByZW1vdGVHbG9iYWxPYmplY3RHUFIsIHJlc3VsdC5ncHIoKSk7CkBAIC00OTEyLDkgKzQ5
MTIsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
IG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChidWZmZXJHUFIsIGluZGV4
R1BSLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCksIGJ1Y2tldEdQUik7CiAgICAgICAgIG1f
aml0Lm1vdmUoYnVja2V0R1BSLCByZXN1bHRHUFIpOwogICAgICAgICBhdXRvIG5vdFByZXNlbnRJ
blRhYmxlID0gbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAg
ICAgICBidWNrZXRHUFIsIFRydXN0ZWRJbW1QdHIoSGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldDxI
YXNoTWFwQnVja2V0RGF0YUtleT4+OjplbXB0eVZhbHVlKCkpKTsKKyAgICAgICAgICAgIGJ1Y2tl
dEdQUiwgVHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8c2l6ZV90PihIYXNoTWFwSW1wbDxIYXNo
TWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46OmVtcHR5VmFsdWUoKSkpKTsKICAgICAg
ICAgbG9vcEFyb3VuZC5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpFcXVh
bCwgCi0gICAgICAgICAgICBidWNrZXRHUFIsIFRydXN0ZWRJbW1QdHIoSGFzaE1hcEltcGw8SGFz
aE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT4+OjpkZWxldGVkVmFsdWUoKSkpKTsKKyAg
ICAgICAgICAgIGJ1Y2tldEdQUiwgVHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8c2l6ZV90PihI
YXNoTWFwSW1wbDxIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46OmRlbGV0ZWRW
YWx1ZSgpKSkpKTsKIAogICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYnVja2V0R1BSLCBIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pjo6b2Zmc2V0
T2ZLZXkoKSksIGJ1Y2tldEdQUik7CiAKQEAgLTU5ODAsNyArNTk4MCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVBbGxvY2F0ZU5ld0EKICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVk
SW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSkpLCBzY3JhdGNoR1BSKTsKICAgICBlbWl0
SW5pdGlhbGl6ZUJ1dHRlcmZseShzdG9yYWdlR1BSLCBzaXplR1BSLCBKU1ZhbHVlUmVncyhzY3Jh
dGNoR1BSKSwgc2NyYXRjaDJHUFIpOwogCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9i
YWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihp
bmRleGluZ1R5cGUpOworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9qaXQu
Z3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9y
SW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpKTsKICAgICAKICAgICBl
bWl0QWxsb2NhdGVKU09iamVjdDxKU0FycmF5PihyZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3Ry
dWN0dXJlKSwgc3RvcmFnZUdQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNlcyk7
CiAgICAgCkBAIC01OTg5LDcgKzU5ODksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
QWxsb2NhdGVOZXdBCiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxD
YWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3I+KAogICAg
ICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIHJlc3VsdEdQ
UiwKICAgICAgICAgc3RydWN0dXJlLAotICAgICAgICBzaG91bGRDb252ZXJ0TGFyZ2VTaXplVG9B
cnJheVN0b3JhZ2UgPyBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBl
RHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2UpIDogc3RydWN0dXJlLAorICAg
ICAgICBzaG91bGRDb252ZXJ0TGFyZ2VTaXplVG9BcnJheVN0b3JhZ2UgPyBtX2ppdC5ncmFwaCgp
LnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGlu
Z1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aEFycmF5U3RvcmFnZSkpIDogc3RydWN0dXJl
LAogICAgICAgICBzaXplR1BSLCBzdG9yYWdlR1BSKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyMTEx
MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBTcGVjdWxhdGl2ZUpJVDo6flNwZWN1bGF0
aXZlSklUKCkKIHsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlUmF3T2Jq
ZWN0KEdQUlJlZyByZXN1bHRHUFIsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBHUFJSZWcgc3RvcmFn
ZUdQUiwgdW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCkKK3ZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZVJhd09iamVjdChHUFJSZWcgcmVzdWx0R1BSLCBS
ZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgR1BSUmVnIHN0b3JhZ2VHUFIsIHVuc2lnbmVk
IG51bUVsZW1lbnRzLCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpCiB7CiAgICAgSW5kZXhpbmdUeXBl
IGluZGV4aW5nVHlwZSA9IHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCk7CiAgICAgYm9vbCBoYXNJ
bmRleGluZ0hlYWRlciA9IGhhc0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSk7CkBAIC05
OCw3ICs5OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZVJhd09iamUKICAg
ICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKIAogICAgIEFTU0VSVCh2ZWN0
b3JMZW5ndGggPj0gbnVtRWxlbWVudHMpOwotICAgIHZlY3Rvckxlbmd0aCA9IEJ1dHRlcmZseTo6
b3B0aW1hbENvbnRpZ3VvdXNWZWN0b3JMZW5ndGgoc3RydWN0dXJlLCB2ZWN0b3JMZW5ndGgpOwor
ICAgIHZlY3Rvckxlbmd0aCA9IEJ1dHRlcmZseTo6b3B0aW1hbENvbnRpZ3VvdXNWZWN0b3JMZW5n
dGgoc3RydWN0dXJlLmdldCgpLCB2ZWN0b3JMZW5ndGgpOwogICAgIAogICAgIEpJVENvbXBpbGVy
OjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjplbWl0R2V0Q2FsbGVlKENvZGVPCiAgICAgICAgICAgICAgICAgY2FsbGVlR1BSKTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1faml0Lm1vdmUoCi0gICAgICAgICAgICAg
ICAgVHJ1c3RlZEltbVB0cihvcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVSZWNvdmVyeS5j
b25zdGFudCgpLmFzQ2VsbCgpKSwKKyAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2ppdC5ncmFwaCgpLCBvcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVSZWNv
dmVyeS5jb25zdGFudCgpLmFzQ2VsbCgpKSwKICAgICAgICAgICAgICAgICBjYWxsZWVHUFIpOwog
ICAgICAgICB9CiAgICAgfSBlbHNlCkBAIC02NDgsNyArNjQ4LDggQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6c2lsZW50RmlsbChjb25zdCBTaQogICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0z
MihwbGFuLm5vZGUoKS0+YXNCb29sZWFuKCkpLCBwbGFuLmdwcigpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBTZXRDZWxsQ29uc3RhbnQ6Ci0gICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZElt
bVB0cihwbGFuLm5vZGUoKS0+YXNDZWxsKCkpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgQVNTRVJU
KHBsYW4ubm9kZSgpLT5jb25zdGFudCgpLT52YWx1ZSgpLmlzQ2VsbCgpKTsKKyAgICAgICAgbV9q
aXQubW92ZShUcnVzdGVkSW1tUHRyKHBsYW4ubm9kZSgpLT5jb25zdGFudCgpKSwgcGxhbi5ncHIo
KSk7CiAgICAgICAgIGJyZWFrOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgY2FzZSBTZXRUcnVz
dGVkSlNDb25zdGFudDoKQEAgLTg3Nyw3ICs4NzgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
aGVja0FycmF5KE5vZGUqIG5vCiAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHRlbXAuZ3ByKCksIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpLAotICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoZXhwZWN0ZWRDbGFzc0luZm8pKSk7
CisgICAgICAgICAgICBUcnVzdGVkSW1tUHRyKGV4cGVjdGVkQ2xhc3NJbmZvKSkpOwogICAgIAog
ICAgIG5vUmVzdWx0KG1fY3VycmVudE5vZGUpOwogfQpAQCAtMjA1NSw3ICsyMDU2LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25TdAogICAgIGNvbnQ4Qml0Lmxpbmso
Jm1faml0KTsKIAogICAgIG1faml0LmxzaGlmdDMyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
MzIoc2l6ZW9mKHZvaWQqKSA9PSA0ID8gMiA6IDMpLCBzY3JhdGNoUmVnKTsKLSAgICBtX2ppdC5h
ZGRQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c21hbGxTdHJp
bmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZ3MoKSksIHNjcmF0Y2hSZWcpOworICAgIG1faml0LmFk
ZFB0cihUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0
ZXJTdHJpbmdzKCkpLCBzY3JhdGNoUmVnKTsKICAgICBtX2ppdC5sb2FkUHRyKHNjcmF0Y2hSZWcs
IHNjcmF0Y2hSZWcpOwogCiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCkBAIC0yMTQ2LDcgKzIx
NDcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRnJvbUNoYXJDb2RlCiAKICAgICBK
SVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9q
aXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcsIFRy
dXN0ZWRJbW0zMigweGZmKSkpOwotICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIobV9qaXQudm0oKS0+c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZ3Mo
KSksIHNtYWxsU3RyaW5nc1JlZyk7CisgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0
LnZtKCktPnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzKCkpLCBzbWFsbFN0cmlu
Z3NSZWcpOwogICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzbWFs
bFN0cmluZ3NSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6U2NhbGVQdHIsIDApLCBz
Y3JhdGNoUmVnKTsKIAogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdDMyKE1h
Y3JvQXNzZW1ibGVyOjpaZXJvLCBzY3JhdGNoUmVnKSk7CkBAIC0yNDY4LDcgKzI0NjksNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRG91YmxlUmVwKE5vCiAgICAgICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBpc1VuZGVmaW5lZCA9IG1faml0LmJyYW5jaDY0KEpJVENvbXBpbGVyOjpF
cXVhbCwgb3AxR1BSLCBUcnVzdGVkSW1tNjQoVmFsdWVVbmRlZmluZWQpKTsKIAogICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IGRvdWJsZSB6ZXJvID0gMDsKLSAgICAgICAgICAgIG1faml0LmxvYWRE
b3VibGUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJnplcm8pLCByZXN1bHRGUFIpOwor
ICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShUcnVzdGVkSW1tUHRyKCZ6ZXJvKSwgcmVzdWx0
RlBSKTsKIAogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOdWxsID0gbV9qaXQuYnJh
bmNoNjQoSklUQ29tcGlsZXI6OkVxdWFsLCBvcDFHUFIsIFRydXN0ZWRJbW02NChWYWx1ZU51bGwp
KTsKICAgICAgICAgICAgIGRvbmUuYXBwZW5kKGlzTnVsbCk7CkBAIC0yNDc4LDEzICsyNDc5LDEz
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVSZXAoTm8KIAogICAgICAgICAg
ICAgSklUQ29tcGlsZXI6Okp1bXAgaXNGYWxzZSA9IG1faml0LmJyYW5jaDY0KEpJVENvbXBpbGVy
OjpFcXVhbCwgb3AxR1BSLCBUcnVzdGVkSW1tNjQoVmFsdWVGYWxzZSkpOwogICAgICAgICAgICAg
c3RhdGljIGNvbnN0IGRvdWJsZSBvbmUgPSAxOwotICAgICAgICAgICAgbV9qaXQubG9hZERvdWJs
ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmb25lKSwgcmVzdWx0RlBSKTsKKyAgICAg
ICAgICAgIG1faml0LmxvYWREb3VibGUoVHJ1c3RlZEltbVB0cigmb25lKSwgcmVzdWx0RlBSKTsK
ICAgICAgICAgICAgIGRvbmUuYXBwZW5kKG1faml0Lmp1bXAoKSk7CiAgICAgICAgICAgICBkb25l
LmFwcGVuZChpc0ZhbHNlKTsKIAogICAgICAgICAgICAgaXNVbmRlZmluZWQubGluaygmbV9qaXQp
OwogICAgICAgICAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBOYU4gPSBQTmFOOwotICAgICAgICAg
ICAgbV9qaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmTmFOKSwg
cmVzdWx0RlBSKTsKKyAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoVHJ1c3RlZEltbVB0cigm
TmFOKSwgcmVzdWx0RlBSKTsKICAgICAgICAgICAgIGRvbmUuYXBwZW5kKG1faml0Lmp1bXAoKSk7
CiAKICAgICAgICAgICAgIGlzTnVtYmVyLmxpbmsoJm1faml0KTsKQEAgLTI1MTcsNyArMjUxOCw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVSZXAoTm8KICAgICAgICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wIGlzVW5kZWZpbmVkID0gbV9qaXQuYnJhbmNoMzIoSklUQ29tcGls
ZXI6OkVxdWFsLCBvcDFUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpVbmRlZmluZWRUYWcp
KTsKIAogICAgICAgICAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSB6ZXJvID0gMDsKLSAgICAgICAg
ICAgIG1faml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJnplcm8p
LCByZXN1bHRGUFIpOworICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShUcnVzdGVkSW1tUHRy
KCZ6ZXJvKSwgcmVzdWx0RlBSKTsKIAogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNO
dWxsID0gbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6OkVxdWFsLCBvcDFUYWdHUFIsIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpOdWxsVGFnKSk7CiAgICAgICAgICAgICBkb25lLmFwcGVuZChpc051
bGwpOwpAQCAtMjUyNiwxMyArMjUyNywxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
RG91YmxlUmVwKE5vCiAKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzRmFsc2UgPSBt
X2ppdC5icmFuY2hUZXN0MzIoSklUQ29tcGlsZXI6Olplcm8sIG9wMVBheWxvYWRHUFIsIFRydXN0
ZWRJbW0zMigxKSk7CiAgICAgICAgICAgICBzdGF0aWMgY29uc3QgZG91YmxlIG9uZSA9IDE7Ci0g
ICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KCZvbmUpLCByZXN1bHRGUFIpOworICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShUcnVzdGVk
SW1tUHRyKCZvbmUpLCByZXN1bHRGUFIpOwogICAgICAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQu
anVtcCgpKTsKICAgICAgICAgICAgIGRvbmUuYXBwZW5kKGlzRmFsc2UpOwogCiAgICAgICAgICAg
ICBpc1VuZGVmaW5lZC5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICBzdGF0aWMgY29uc3QgZG91
YmxlIE5hTiA9IFBOYU47Ci0gICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKCZOYU4pLCByZXN1bHRGUFIpOworICAgICAgICAgICAgbV9qaXQu
bG9hZERvdWJsZShUcnVzdGVkSW1tUHRyKCZOYU4pLCByZXN1bHRGUFIpOwogICAgICAgICAgICAg
ZG9uZS5hcHBlbmQobV9qaXQuanVtcCgpKTsKIAogICAgICAgICAgICAgaXNOdW1iZXIubGluaygm
bV9qaXQpOwpAQCAtMjY0NywxMiArMjY0OCwxMiBAQCBzdGF0aWMgdm9pZCBjb21waWxlQ2xhbXBE
b3VibGVUb0J5dGUoSklUCiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSB6ZXJvID0gMDsKICAgICBz
dGF0aWMgY29uc3QgZG91YmxlIGJ5dGVNYXggPSAyNTU7CiAgICAgc3RhdGljIGNvbnN0IGRvdWJs
ZSBoYWxmID0gMC41OwotICAgIGppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKCZ6ZXJvKSwgc2NyYXRjaCk7CisgICAgaml0LmxvYWREb3VibGUoSklUQ29tcGlsZXI6
OlRydXN0ZWRJbW1QdHIoJnplcm8pLCBzY3JhdGNoKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCB0b29TbWFsbCA9IGppdC5icmFuY2hEb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUxlc3NU
aGFuT3JFcXVhbE9yVW5vcmRlcmVkLCBzb3VyY2UsIHNjcmF0Y2gpOwotICAgIGppdC5sb2FkRG91
YmxlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZieXRlTWF4KSwgc2NyYXRjaCk7Cisg
ICAgaml0LmxvYWREb3VibGUoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIoJmJ5dGVNYXgpLCBz
Y3JhdGNoKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCB0b29CaWcgPSBqaXQuYnJhbmNoRG91
YmxlKE1hY3JvQXNzZW1ibGVyOjpEb3VibGVHcmVhdGVyVGhhbiwgc291cmNlLCBzY3JhdGNoKTsK
ICAgICAKLSAgICBqaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigm
aGFsZiksIHNjcmF0Y2gpOworICAgIGppdC5sb2FkRG91YmxlKEpJVENvbXBpbGVyOjpUcnVzdGVk
SW1tUHRyKCZoYWxmKSwgc2NyYXRjaCk7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2Jh
Ymx5IGp1c3QgdXNlIGEgZmxvYXRpbmcgcG9pbnQgcm91bmQhCiAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMDU0CiAgICAgaml0LmFkZERvdWJsZShzb3Vy
Y2UsIHNjcmF0Y2gpOwpAQCAtMzkwMCw3ICszOTAxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZU1ha2VSb3BlKE5vZAogICAgIE1hcmtlZEFsbG9jYXRvciogbWFya2VkQWxsb2NhdG9y
ID0gc3Vic3BhY2VGb3I8SlNTdHJpbmc+KCptX2ppdC52bSgpKS0+YWxsb2NhdG9yRm9yKHNpemVv
ZihKU1JvcGVTdHJpbmcpKTsKICAgICBSRUxFQVNFX0FTU0VSVChtYXJrZWRBbGxvY2F0b3IpOwog
ICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtYXJrZWRBbGxvY2F0b3IpLCBhbGxvY2F0b3JH
UFIpOwotICAgIGVtaXRBbGxvY2F0ZUpTQ2VsbChyZXN1bHRHUFIsIG1hcmtlZEFsbG9jYXRvciwg
YWxsb2NhdG9yR1BSLCBUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSksIHNjcmF0Y2hHUFIsIHNsb3dQYXRoKTsKKyAgICBlbWl0QWxsb2NhdGVKU0NlbGwocmVz
dWx0R1BSLCBtYXJrZWRBbGxvY2F0b3IsIGFsbG9jYXRvckdQUiwgVHJ1c3RlZEltbVB0cihtX2pp
dC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSkpLCBzY3JhdGNoR1BSLCBzbG93UGF0aCk7CiAgICAgICAgIAogICAgIG1faml0LnN0b3Jl
UHRyKFRydXN0ZWRJbW1QdHIoMCksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNT
dHJpbmc6Om9mZnNldE9mVmFsdWUoKSkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
dW1PcEdQUnM7ICsraSkKQEAgLTUwOTcsNyArNTA5OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVBcml0aFJvdW5kaW4KICAgICAgICAgICAgICAgICBGUFJSZWcgcmVzdWx0RlBSID0g
cmVzdWx0LmZwcigpOwogICAgICAgICAgICAgICAgIGlmIChwcm9kdWNlc0ludGVnZXIobm9kZS0+
YXJpdGhSb3VuZGluZ01vZGUoKSkgJiYgIXNob3VsZENoZWNrTmVnYXRpdmVaZXJvKG5vZGUtPmFy
aXRoUm91bmRpbmdNb2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBk
b3VibGUgaGFsZkNvbnN0YW50ID0gMC41OwotICAgICAgICAgICAgICAgICAgICBtX2ppdC5sb2Fk
RG91YmxlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZoYWxmQ29uc3RhbnQpLCByZXN1
bHRGUFIpOworICAgICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKFRydXN0ZWRJbW1Q
dHIoJmhhbGZDb25zdGFudCksIHJlc3VsdEZQUik7CiAgICAgICAgICAgICAgICAgICAgIG1faml0
LmFkZERvdWJsZSh2YWx1ZUZQUiwgcmVzdWx0RlBSKTsKICAgICAgICAgICAgICAgICAgICAgbV9q
aXQuZmxvb3JEb3VibGUocmVzdWx0RlBSLCByZXN1bHRGUFIpOwogICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CkBAIC01MTA5LDExICs1MTEwLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVBcml0aFJvdW5kaW4KICAgICAgICAgICAgICAgICAgICAgRlBSVGVtcG9yYXJ5IHNjcmF0Y2go
dGhpcyk7CiAgICAgICAgICAgICAgICAgICAgIEZQUlJlZyBzY3JhdGNoRlBSID0gc2NyYXRjaC5m
cHIoKTsKICAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBoYWxmQ29uc3Rh
bnQgPSAwLjU7Ci0gICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIoJmhhbGZDb25zdGFudCksIHNjcmF0Y2hGUFIpOworICAgICAg
ICAgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKFRydXN0ZWRJbW1QdHIoJmhhbGZDb25zdGFu
dCksIHNjcmF0Y2hGUFIpOwogCiAgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1w
IHNob3VsZFVzZUNlaWxlZCA9IG1faml0LmJyYW5jaERvdWJsZShKSVRDb21waWxlcjo6RG91Ymxl
TGVzc1RoYW5PckVxdWFsLCByZWFsUGFydEZQUiwgc2NyYXRjaEZQUik7CiAgICAgICAgICAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBkb3VibGUgb25lQ29uc3RhbnQgPSAtMS4wOwotICAgICAgICAg
ICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KCZvbmVDb25zdGFudCksIHNjcmF0Y2hGUFIpOworICAgICAgICAgICAgICAgICAgICBtX2ppdC5s
b2FkRG91YmxlKFRydXN0ZWRJbW1QdHIoJm9uZUNvbnN0YW50KSwgc2NyYXRjaEZQUik7CiAgICAg
ICAgICAgICAgICAgICAgIG1faml0LmFkZERvdWJsZShzY3JhdGNoRlBSLCByZXN1bHRGUFIpOwog
ICAgICAgICAgICAgICAgICAgICBzaG91bGRVc2VDZWlsZWQubGluaygmbV9qaXQpOwogICAgICAg
ICAgICAgICAgIH0KQEAgLTYzNTMsMTIgKzYzNTQsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUNoZWNrU3RyaW5nSQogICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgQ2xhc3NUeXBlPiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3RnVuY3Rp
b25Db21tb24oR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBz
Y3JhdGNoMUdQUiwgR1BSUmVnIHNjcmF0Y2gyR1BSLCBHUFJSZWcgc2NvcGVHUFIsIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wTGlzdCYgc2xvd1BhdGgsIHNpemVfdCBzaXplLCBGdW5jdGlvbkV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUsIHB0cmRpZmZfdCBvZmZzZXRPZlNjb3BlQ2hhaW4sIHB0cmRpZmZfdCBv
ZmZzZXRPZkV4ZWN1dGFibGUsIHB0cmRpZmZfdCBvZmZzZXRPZlJhcmVEYXRhKQordGVtcGxhdGUg
PHR5cGVuYW1lIENsYXNzVHlwZT4gdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0
aW9uQ29tbW9uKEdQUlJlZyByZXN1bHRHUFIsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJl
LCBHUFJSZWcgc2NyYXRjaDFHUFIsIEdQUlJlZyBzY3JhdGNoMkdQUiwgR1BSUmVnIHNjb3BlR1BS
LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIHNsb3dQYXRoLCBzaXplX3Qgc2l6ZSwgRnVuY3Rp
b25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBwdHJkaWZmX3Qgb2Zmc2V0T2ZTY29wZUNoYWluLCBw
dHJkaWZmX3Qgb2Zmc2V0T2ZFeGVjdXRhYmxlLCBwdHJkaWZmX3Qgb2Zmc2V0T2ZSYXJlRGF0YSkK
IHsKICAgICBlbWl0QWxsb2NhdGVKU09iamVjdFdpdGhLbm93blNpemU8Q2xhc3NUeXBlPihyZXN1
bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgVHJ1c3RlZEltbVB0cigwKSwgc2NyYXRj
aDFHUFIsIHNjcmF0Y2gyR1BSLCBzbG93UGF0aCwgc2l6ZSk7CiAgICAgCiAgICAgbV9qaXQuc3Rv
cmVQdHIoc2NvcGVHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0T2ZT
Y29wZUNoYWluKSk7Ci0gICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihleGVjdXRhYmxl
KSwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRPZkV4ZWN1dGFibGUpKTsK
KyAgICBtX2ppdC5zdG9yZVB0cihUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFw
aCgpLCBleGVjdXRhYmxlKSwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRP
ZkV4ZWN1dGFibGUpKTsKICAgICBtX2ppdC5zdG9yZVB0cihUcnVzdGVkSW1tUHRyKDApLCBKSVRD
b21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9mZnNldE9mUmFyZURhdGEpKTsKICAgICAKICAg
ICBtX2ppdC5tdXRhdG9yRmVuY2UoKTsKQEAgLTYzOTEsMTAgKzYzOTIsMTAgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKAogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPQorICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3Ry
dWN0dXJlID0gbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZSgKICAgICAgICAgbm9kZVR5
cGUgPT0gTmV3R2VuZXJhdG9yRnVuY3Rpb24gPyBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpIDoK
ICAgICAgICAgbm9kZVR5cGUgPT0gTmV3QXN5bmNGdW5jdGlvbiA/IG1faml0LmdyYXBoKCkuZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFzeW5jRnVuY3Rpb25TdHJ1Y3R1
cmUoKSA6Ci0gICAgICAgIG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyktPmZ1bmN0aW9uU3RydWN0dXJlKCk7CisgICAgICAgIG1faml0LmdyYXBoKCku
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmZ1bmN0aW9uU3RydWN0dXJl
KCkpOwogICAgIAogICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgR1BSVGVtcG9y
YXJ5IHNjcmF0Y2gxKHRoaXMpOwpAQCAtNjUxMCw4ICs2NTExLDggQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUZvcndhcmRWYXJhcgogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNy
ZWF0ZUFjdGl2YXRpb24oTm9kZSogbm9kZSkKIHsKICAgICBTeW1ib2xUYWJsZSogdGFibGUgPSBu
b2RlLT5jYXN0T3BlcmFuZDxTeW1ib2xUYWJsZSo+KCk7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcigKLSAgICAgICAgbm9kZS0+b3JpZ2lu
LnNlbWFudGljKS0+YWN0aXZhdGlvblN0cnVjdHVyZSgpOworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUgc3RydWN0dXJlID0gbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShtX2ppdC5ncmFw
aCgpLmdsb2JhbE9iamVjdEZvcigKKyAgICAgICAgbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YWN0
aXZhdGlvblN0cnVjdHVyZSgpKTsKICAgICAgICAgCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
c2NvcGUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEdQUlJlZyBzY29wZUdQUiA9IHNjb3Bl
LmdwcigpOwpAQCAtNjU1Miw3ICs2NTUzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUNyZWF0ZUFjdGl2YQogICAgIC8vIGFjdGl2YXRpb24gbXVzdCBiZSB5b3VuZy4KICAgICBtX2pp
dC5zdG9yZVB0cihzY29wZUdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU1Nj
b3BlOjpvZmZzZXRPZk5leHQoKSkpOwogICAgIG1faml0LnN0b3JlUHRyKAotICAgICAgICBUcnVz
dGVkSW1tUHRyKHRhYmxlKSwKKyAgICAgICAgVHJ1c3RlZEltbVB0cihub2RlLT5jZWxsT3BlcmFu
ZCgpKSwKICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0xleGljYWxF
bnZpcm9ubWVudDo6b2Zmc2V0T2ZTeW1ib2xUYWJsZSgpKSk7CiAgICAgICAgIAogICAgIC8vIE11
c3QgaW5pdGlhbGl6ZSBhbGwgbWVtYmVycyB0byB1bmRlZmluZWQgb3IgdGhlIFREWiBlbXB0eSB2
YWx1ZS4KQEAgLTY2MTUsOCArNjYxNiw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVD
cmVhdGVEaXJlY3QKICAgICAgICAgbV9qaXQuc3ViMzIoVHJ1c3RlZEltbTMyKDEpLCBsZW5ndGhH
UFIpOwogICAgIH0KICAgICAgICAgCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPQotICAgICAg
ICBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5k
aXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUoKTsKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVj
dHVyZSA9CisgICAgICAgIG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUobV9qaXQuZ3Jh
cGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZGlyZWN0QXJndW1l
bnRzU3RydWN0dXJlKCkpOwogICAgICAgICAKICAgICAvLyBVc2UgYSBkaWZmZXJlbnQgc3RyYXRl
Z3kgZm9yIGFsbG9jYXRpbmcgdGhlIG9iamVjdCBkZXBlbmRpbmcgb24gd2hldGhlciB3ZSBrbm93
IGl0cwogICAgIC8vIHNpemUgc3RhdGljYWxseS4KQEAgLTY2ODEsOCArNjY4Miw4IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVEaXJlY3QKICAgICAgICAgICAgICAgICBzY3Jh
dGNoMUdQUik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKAotICAg
ICAgICAgICAgICAgIFRydXN0ZWRJbW1QdHIoCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm9y
aWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUtPmNhbGxlZVJlY292ZXJ5LmNvbnN0YW50KCku
YXNDZWxsKCkpLAorICAgICAgICAgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKAor
ICAgICAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMu
aW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVSZWNvdmVyeS5jb25zdGFudCgpLmFzQ2VsbCgpKSwKICAg
ICAgICAgICAgICAgICBzY3JhdGNoMUdQUik7CiAgICAgICAgIH0KICAgICB9IGVsc2UKQEAgLTY3
OTgsNyArNjc5OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVTY29wZWQK
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50KAogICAgICAgICAxLCBbJl0gKEdQUlJlZyBkZXN0R1BS
KSB7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKAotICAgICAgICAgICAgICAgIFRydXN0ZWRJbW1Q
dHIobV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnNjb3BlZEFy
Z3VtZW50c1N0cnVjdHVyZSgpKSwKKyAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2ppdC5ncmFwaCgpLCBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKS0+c2NvcGVkQXJndW1lbnRzU3RydWN0dXJlKCkpLAogICAgICAgICAgICAgICAg
IGRlc3RHUFIpOwogICAgICAgICB9KTsKICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50KDAsIFsmXSAo
R1BSUmVnIGRlc3RHUFIpIHsgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
ZGVzdEdQUik7IH0pOwpAQCAtNjgyNSw4ICs2ODI2LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUNyZWF0ZUNsb25lZAogICAgIG1faml0LnNldHVwQXJndW1lbnQoCiAgICAgICAgIDEs
IFsmXSAoR1BSUmVnIGRlc3RHUFIpIHsKICAgICAgICAgICAgIG1faml0Lm1vdmUoCi0gICAgICAg
ICAgICAgICAgVHJ1c3RlZEltbVB0cigKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQuZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmNsb25lZEFyZ3VtZW50c1N0cnVjdHVy
ZSgpKSwKKyAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcigKKyAgICAg
ICAgICAgICAgICAgICAgbV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyktPmNsb25lZEFyZ3VtZW50c1N0cnVjdHVyZSgpKSwKICAgICAgICAg
ICAgICAgICBkZXN0R1BSKTsKICAgICAgICAgfSk7CiAgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgw
LCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7IG1faml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIGRlc3RHUFIpOyB9KTsKQEAgLTY5NDksNyArNjk1MCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVTcHJlYWQoTm9kZSoKICAgICAgICAgbV9qaXQubHNoaWZ0MzIoVHJ1c3Rl
ZEltbTMyKDMpLCBzY3JhdGNoMUdQUik7CiAgICAgICAgIG1faml0LmFkZDMyKFRydXN0ZWRJbW0z
MihKU0ZpeGVkQXJyYXk6Om9mZnNldE9mRGF0YSgpKSwgc2NyYXRjaDFHUFIpOwogCi0gICAgICAg
IG1faml0LmVtaXRBbGxvY2F0ZVZhcmlhYmxlU2l6ZWRDZWxsPEpTRml4ZWRBcnJheT4ocmVzdWx0
R1BSLCBUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkubV92bS5maXhlZEFycmF5U3RydWN0dXJl
LmdldCgpKSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd1BhdGgp
OworICAgICAgICBtX2ppdC5lbWl0QWxsb2NhdGVWYXJpYWJsZVNpemVkQ2VsbDxKU0ZpeGVkQXJy
YXk+KHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cihtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0
dXJlKG1faml0LmdyYXBoKCkubV92bS5maXhlZEFycmF5U3RydWN0dXJlLmdldCgpKSksIHNjcmF0
Y2gxR1BSLCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIsIHNsb3dQYXRoKTsKICAgICAgICAgbV9q
aXQuc3RvcmUzMihsZW5ndGhHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwg
SlNGaXhlZEFycmF5OjpvZmZzZXRPZlNpemUoKSkpOwogCiAgICAgICAgIG1faml0LmxvYWRQdHIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYXJndW1lbnQsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZz
ZXQoKSksIHNjcmF0Y2gxR1BSKTsKQEAgLTcyNjYsMTcgKzcyNjcsMTcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUFycmF5U2xpY2UoTgogICAgICAgICAvLyB0byBlbnN1cmUgdGhlIGlu
Y29taW5nIGFycmF5IGlzIG9uZSB0byBiZSBvbmUgb2YgdGhlIG9yaWdpbmFsIGFycmF5IHN0cnVj
dHVyZXMKICAgICAgICAgLy8gd2l0aCBvbmUgb2YgdGhlIGZvbGxvd2luZyBpbmRleGluZyBzaGFw
ZXM6IEludDMyLCBDb250aWd1b3VzLCBEb3VibGUuIFRoZXJlZm9yZSwKICAgICAgICAgLy8gd2Un
cmUgYSBkb3VibGUgYXJyYXkgaGVyZS4KLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRy
KGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0
aW9uKEFycmF5V2l0aERvdWJsZSkpLCB0ZW1wVmFsdWUpOworICAgICAgICBtX2ppdC5tb3ZlKFRy
dXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3Qt
PmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhE
b3VibGUpKSksIHRlbXBWYWx1ZSk7CiAgICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZShqc05hTigp
KTsKICAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuanVtcCgpKTsKIAogICAgICAgICBpc0NvbnRp
Z3VvdXMubGluaygmbV9qaXQpOwotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoZ2xv
YmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24o
QXJyYXlXaXRoQ29udGlndW91cykpLCB0ZW1wVmFsdWUpOworICAgICAgICBtX2ppdC5tb3ZlKFRy
dXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3Qt
PmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhD
b250aWd1b3VzKSkpLCB0ZW1wVmFsdWUpOwogICAgICAgICBlbWl0TW92ZUVtcHR5VmFsdWUoSlNW
YWx1ZSgpKTsKICAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuanVtcCgpKTsKIAogICAgICAgICBp
c0ludDMyLmxpbmsoJm1faml0KTsKLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKGds
b2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9u
KEFycmF5V2l0aEludDMyKSksIHRlbXBWYWx1ZSk7CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3Rl
ZEltbVB0cihtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJy
YXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aEludDMy
KSkpLCB0ZW1wVmFsdWUpOwogICAgICAgICBlbWl0TW92ZUVtcHR5VmFsdWUoSlNWYWx1ZSgpKTsK
IAogICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKQEAgLTc0NTYsNyArNzQ1Nyw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUeXBlT2YoTm9kZSoKICAgICBtX2ppdC5lbWl0VHlwZU9m
KAogICAgICAgICB2YWx1ZVJlZ3MsIHJlc3VsdEdQUiwKICAgICAgICAgWyZdIChUeXBlb2ZUeXBl
IHR5cGUsIGJvb2wgZmFsbHNUaHJvdWdoKSB7Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0
ZWRJbW1QdHIobV9qaXQudm0oKS0+c21hbGxTdHJpbmdzLnR5cGVTdHJpbmcodHlwZSkpLCByZXN1
bHRHUFIpOworICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2ppdC5ncmFwaCgpLCBtX2ppdC52bSgpLT5zbWFsbFN0cmluZ3MudHlwZVN0cmluZyh0eXBl
KSksIHJlc3VsdEdQUik7CiAgICAgICAgICAgICBpZiAoIWZhbGxzVGhyb3VnaCkKICAgICAgICAg
ICAgICAgICBkb25lLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogICAgICAgICB9LApAQCAtNzU4MCw3
ICs3NTgxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFsbG9jYXRlUHJvcAogICAg
IEdQUlJlZyBzY3JhdGNoR1BSMiA9IHNjcmF0Y2gyLmdwcigpOwogICAgIEdQUlJlZyBzY3JhdGNo
R1BSMyA9IHNjcmF0Y2gzLmdwcigpOwogICAgICAgICAKLSAgICBtX2ppdC5tb3ZlKEpJVENvbXBp
bGVyOjpUcnVzdGVkSW1tUHRyKGFsbG9jYXRvciksIHNjcmF0Y2hHUFIyKTsKKyAgICBtX2ppdC5t
b3ZlKFRydXN0ZWRJbW1QdHIoYWxsb2NhdG9yKSwgc2NyYXRjaEdQUjIpOwogICAgIEpJVENvbXBp
bGVyOjpKdW1wTGlzdCBzbG93UGF0aDsKICAgICBtX2ppdC5lbWl0QWxsb2NhdGUoc2NyYXRjaEdQ
UjEsIGFsbG9jYXRvciwgc2NyYXRjaEdQUjIsIHNjcmF0Y2hHUFIzLCBzbG93UGF0aCk7CiAgICAg
bV9qaXQuYWRkUHRyKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoc2l6ZSArIHNpemVvZihJbmRl
eGluZ0hlYWRlcikpLCBzY3JhdGNoR1BSMSk7CkBAIC03NjI4LDcgKzc2MjksNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlUmVhbGxvY2F0ZVByCiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIz
ID0gc2NyYXRjaDMuZ3ByKCk7CiAgICAgCiAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dQ
YXRoOwotICAgIG1faml0Lm1vdmUoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIoYWxsb2NhdG9y
KSwgc2NyYXRjaEdQUjIpOworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihhbGxvY2F0b3Ip
LCBzY3JhdGNoR1BSMik7CiAgICAgbV9qaXQuZW1pdEFsbG9jYXRlKHNjcmF0Y2hHUFIxLCBhbGxv
Y2F0b3IsIHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMywgc2xvd1BhdGgpOwogICAgIAogICAgIG1f
aml0LmFkZFB0cihKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKG5ld1NpemUgKyBzaXplb2YoSW5k
ZXhpbmdIZWFkZXIpKSwgc2NyYXRjaEdQUjEpOwpAQCAtNzg1NywxMCArNzg1OCwxMCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdPckNhCiAgICAgICAgIEdQUlJlZyByZXN1
bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVy
OjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVzdWx0R1BS
KTsKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNTdHJpbmcgPSBtX2ppdC5icmFuY2hTdHJ1
Y3R1cmUoCisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzU3RyaW5nID0gbV9qaXQuYnJhbmNo
V2Vha1N0cnVjdHVyZSgKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpFcXVhbCwKICAgICAgICAg
ICAgIHJlc3VsdEdQUiwKLSAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSk7CisgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKG1faml0
LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogCiAgICAgICAgIHNwZWN1bGF0ZVN0cmlu
Z09iamVjdEZvclN0cnVjdHVyZShub2RlLT5jaGlsZDEoKSwgcmVzdWx0R1BSKTsKICAgICAgICAg
CkBAIC03OTU2LDggKzc5NTcsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlw
ZWRBcnJhCiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBo
KCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgVHlwZWRBcnJh
eVR5cGUgdHlwZSA9IG5vZGUtPnR5cGVkQXJyYXlUeXBlKCk7Ci0gICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlw
ZSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoc3RydWN0dXJlKTsKKyAgICBSZWdpc3RlcmVkU3RydWN0
dXJlIHN0cnVjdHVyZSA9IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2Jq
ZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGUpKTsKKyAgICBSRUxFQVNF
X0FTU0VSVChzdHJ1Y3R1cmUuZ2V0KCkpOwogICAgIAogICAgIFNwZWN1bGF0ZUludDMyT3BlcmFu
ZCBzaXplKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBHUFJSZWcgc2l6ZUdQUiA9IHNpemUu
Z3ByKCk7CkBAIC04NDAxLDEwICs4NDAyLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1
bGF0ZVN0cmluZ09yU3QKICAgICBHUFJSZWcgc3RydWN0dXJlSURHUFIgPSBzdHJ1Y3R1cmVJRC5n
cHIoKTsKIAogICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6QWRkcmVzcyhncHIsIEpTQ2Vs
bDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHN0cnVjdHVyZUlER1BSKTsgCi0gICAgSklUQ29tcGls
ZXI6Okp1bXAgaXNTdHJpbmcgPSBtX2ppdC5icmFuY2hTdHJ1Y3R1cmUoCisgICAgSklUQ29tcGls
ZXI6Okp1bXAgaXNTdHJpbmcgPSBtX2ppdC5icmFuY2hXZWFrU3RydWN0dXJlKAogICAgICAgICBK
SVRDb21waWxlcjo6RXF1YWwsCiAgICAgICAgIHN0cnVjdHVyZUlER1BSLCAKLSAgICAgICAgbV9q
aXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKTsKKyAgICAgICAgbV9qaXQuZ3JhcGgoKS5y
ZWdpc3RlclN0cnVjdHVyZShtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAg
ICAKICAgICBzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JTdHJ1Y3R1cmUoZWRnZSwgc3RydWN0dXJl
SURHUFIpOwogICAgIApAQCAtOTI2Nyw4ICs5MjY4LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUxhenlKU0NvbnN0YQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWF0ZXJp
YWxpemVOZXdPYmplY3QoTm9kZSogbm9kZSkKIHsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IG5vZGUtPnN0cnVjdHVyZVNldCgpWzBdOwotICAgIEFTU0VSVChtX2ppdC5ncmFwaCgpLnZhckFy
Z0NoaWxkKG5vZGUsIDApLT5keW5hbWljQ2FzdENvbnN0YW50PFN0cnVjdHVyZSo+KCkgPT0gc3Ry
dWN0dXJlKTsKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG5vZGUtPnN0cnVj
dHVyZVNldCgpLmF0KDApOworICAgIEFTU0VSVChtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5v
ZGUsIDApLT5keW5hbWljQ2FzdENvbnN0YW50PFN0cnVjdHVyZSo+KCkgPT0gc3RydWN0dXJlLmdl
dCgpKTsKIAogICAgIE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEmIGRhdGEgPSBub2RlLT5vYmpl
Y3RNYXRlcmlhbGl6YXRpb25EYXRhKCk7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMjExMTA3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNv
cHkpCkBAIC03NSw3ICs3NSw2IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKIHByaXZhdGU6CiAg
ICAgdHlwZWRlZiBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyIFRydXN0ZWRJbW0zMjsKICAgICB0
eXBlZGVmIEpJVENvbXBpbGVyOjpJbW0zMiBJbW0zMjsKLSAgICB0eXBlZGVmIEpJVENvbXBpbGVy
OjpUcnVzdGVkSW1tUHRyIFRydXN0ZWRJbW1QdHI7CiAgICAgdHlwZWRlZiBKSVRDb21waWxlcjo6
SW1tUHRyIEltbVB0cjsKICAgICB0eXBlZGVmIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tNjQgVHJ1
c3RlZEltbTY0OwogICAgIHR5cGVkZWYgSklUQ29tcGlsZXI6OkltbTY0IEltbTY0OwpAQCAtMTEy
LDYgKzExMSw1OCBAQCBwdWJsaWM6CiAgICAgU3BlY3VsYXRpdmVKSVQoSklUQ29tcGlsZXImKTsK
ICAgICB+U3BlY3VsYXRpdmVKSVQoKTsKIAorICAgIHN0cnVjdCBUcnVzdGVkSW1tUHRyIHsKKyAg
ICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1Q
dHIoVCogdmFsdWUpCisgICAgICAgICAgICA6IG1fdmFsdWUodmFsdWUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxIZWFwQ2VsbCwgVD46OnZh
bHVlLCAiVG8gdXNlIGEgR0MgcG9pbnRlciwgdGhlIGdyYXBoIG11c3QgYmUgYXdhcmUgb2YgaXQu
IFVzZSBTcGVjdWxhdGl2ZUpJVDo6VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIgaW5zdGVhZC4i
KTsKKyAgICAgICAgfQorCisgICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIoUmVnaXN0ZXJl
ZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpCisgICAgICAgICAgICA6IG1fdmFsdWUoc3RydWN0dXJlLmdl
dCgpKQorICAgICAgICB7IH0KKyAgICAgICAgCisgICAgICAgIC8vIFRoaXMgaXMgb25seSBoZXJl
IHNvIHRoYXQgVHJ1c3RlZEltbVB0cigwKSBkb2VzIG5vdCBjb25mdXNlIHRoZSBDKysKKyAgICAg
ICAgLy8gb3ZlcmxvYWQgaGFuZGxpbmcgcnVsZXMuCisgICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJ
bW1QdHIoaW50IHZhbHVlKQorICAgICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgICAgICB7
CisgICAgICAgICAgICBBU1NFUlQoIXZhbHVlKTsKKyAgICAgICAgfQorCisgICAgICAgIGV4cGxp
Y2l0IFRydXN0ZWRJbW1QdHIoc3RkOjpudWxscHRyX3QpCisgICAgICAgICAgICA6IG1fdmFsdWUo
MCkKKyAgICAgICAgeyB9CisKKyAgICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbVB0cihGcm96ZW5W
YWx1ZSogdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHZhbHVl
LT52YWx1ZSgpLmlzQ2VsbCgpKTsKKyAgICAgICAgICAgIG1fdmFsdWUgPSBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cih2YWx1ZS0+Y2VsbCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGV4
cGxpY2l0IFRydXN0ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQorICAgICAgICAgICAgOiBtX3ZhbHVl
KGJpdHdpc2VfY2FzdDx2b2lkKj4odmFsdWUpKQorICAgICAgICB7CisgICAgICAgIH0KKworICAg
ICAgICBzdGF0aWMgVHJ1c3RlZEltbVB0ciB3ZWFrUG9pbnRlcihHcmFwaCYgZ3JhcGgsIEpTQ2Vs
bCogY2VsbCkKKyAgICAgICAgeworICAgICAgICAgICAgZ3JhcGgubV9wbGFuLndlYWtSZWZlcmVu
Y2VzLmFkZExhemlseShjZWxsKTsKKyAgICAgICAgICAgIHJldHVybiBUcnVzdGVkSW1tUHRyKGJp
dHdpc2VfY2FzdDxzaXplX3Q+KGNlbGwpKTsKKyAgICAgICAgfQorCisgICAgICAgIG9wZXJhdG9y
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsg
fQorCisgICAgICAgIGludHB0cl90IGFzSW50cHRyKCkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIG1fdmFsdWUuYXNJbnRwdHIoKTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIgbV92YWx1ZTsKKyAgICB9OworCiAg
ICAgYm9vbCBjb21waWxlKCk7CiAgICAgCiAgICAgdm9pZCBjcmVhdGVPU1JFbnRyaWVzKCk7CkBA
IC05ODIsMTcgKzEwMzMsMTcgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUob2JqLCBpbXBsKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VTdCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oUF9KSVRPcGVyYXRpb25fRVN0IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgUmVnaXN0ZXJl
ZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsKICAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VTdFpQIG9wZXJhdGlv
biwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBhcmcyLCBHUFJS
ZWcgYXJnMykKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0
aW9uX0VTdFpQIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBz
dHJ1Y3R1cmUsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKICAgICB7CiAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGFy
ZzIsIGFyZzMpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9K
SVRPcGVyYXRpb25fRVN0WlAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgc2l6ZV90IGFyZzIsIEdQUlJlZyBhcmczKQorICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVN0WlAgb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgc2l6ZV90IGFyZzIsIEdQUlJlZyBh
cmczKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRy
dXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgVHJ1c3RlZEltbTMyKGFyZzIpLCBhcmczKTsKICAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwpAQCAtMTAw
MiwxMiArMTA1MywxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VTdFpCIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYnV0dGVyZmx5
KQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVN0
WkIgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVy
ZSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBidXR0ZXJmbHkpCiAgICAgewogICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBhcmcy
LCBidXR0ZXJmbHkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
UF9KSVRPcGVyYXRpb25fRVN0WkIgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgc2l6ZV90IGFyZzIsIEdQUlJlZyBidXR0ZXJmbHkpCisgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RaQiBvcGVyYXRpb24sIEdQ
UlJlZyByZXN1bHQsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCBzaXplX3QgYXJnMiwg
R1BSUmVnIGJ1dHRlcmZseSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0ZWRJbW0zMihhcmcyKSwg
YnV0dGVyZmx5KTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHQpOwpAQCAtMTAyMiwxMiArMTA3MywxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBUcnVzdGVkSW1tUHRyKGJ1
dHRlcmZseSkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9K
SVRPcGVyYXRpb25fRVN0UFMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgdm9pZCogcG9pbnRlciwgc2l6ZV90IHNpemUpCisgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RQUyBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHQsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCB2b2lkKiBwb2ludGVyLCBzaXpl
X3Qgc2l6ZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0ZWRJbW1QdHIocG9pbnRlciksIFRydXN0
ZWRJbW1QdHIoc2l6ZSkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oUF9KSVRPcGVyYXRpb25fRVN0U1Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgc2l6ZV90IGluZGV4LCBzaXplX3Qgc2l6ZSkKKyAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VTdFNTIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIHNpemVfdCBpbmRleCwg
c2l6ZV90IHNpemUpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKGluZGV4KSwgVHJ1
c3RlZEltbVB0cihzaXplKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKQEAgLTEwNDQsNyArMTA5NSw3IEBAIHB1YmxpYzoKICAgICB9CiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FQyBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHQsIEpTQ2VsbCogY2VsbCkKICAgICB7Ci0gICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGNlbGwpKTsKKyAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1faml0LmdyYXBoKCksIGNlbGwpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VDWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKQEAgLTEwNTksNyArMTExMCw3IEBAIHB1Ymxp
YzoKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJh
dGlvbl9FSnNjQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBKU0NlbGwq
IGNlbGwpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFw
aCgpLCBjZWxsKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihD
X0pJVE9wZXJhdGlvbl9FSWNmIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgSW5saW5lQ2FsbEZy
YW1lKiBpbmxpbmVDYWxsRnJhbWUpCkBAIC0xMDY3LDQ2ICsxMTE4LDQ2IEBAIHB1YmxpYzoKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoaW5s
aW5lQ2FsbEZyYW1lKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihDX0pJVE9wZXJhdGlvbl9FU3Qgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3Bl
cmF0aW9uX0VTdCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
c3RydWN0dXJlKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
U2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKICNpZiBVU0UoSlNWQUxVRTY0
KQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRVN0
SnNjU3ltdGFiSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBHUFJSZWcgc2NvcGUsIFN5bWJvbFRhYmxlKiB0YWJsZSwgVHJ1c3RlZEltbTY0IGluaXRpYWxW
YWx1ZSkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9u
X0VTdEpzY1N5bXRhYkogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBSZWdpc3RlcmVkU3RydWN0
dXJlIHN0cnVjdHVyZSwgR1BSUmVnIHNjb3BlLCBTeW1ib2xUYWJsZSogdGFibGUsIFRydXN0ZWRJ
bW02NCBpbml0aWFsVmFsdWUpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBzY29wZSwgVHJ1c3RlZEltbVB0
cih0YWJsZSksIGluaXRpYWxWYWx1ZSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIHNjb3BlLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCB0YWJsZSksIGluaXRpYWxWYWx1ZSk7CiAgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9
CiAjZWxzZQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRp
b25fRVN0SnNjU3ltdGFiSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBHUFJSZWcgc2NvcGUsIFN5bWJvbFRhYmxlKiB0YWJsZSwgVHJ1c3RlZEltbTMyIHRh
ZywgVHJ1c3RlZEltbTMyIHBheWxvYWQpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihDX0pJVE9wZXJhdGlvbl9FU3RKc2NTeW10YWJKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIEdQUlJlZyBzY29wZSwgU3ltYm9sVGFi
bGUqIHRhYmxlLCBUcnVzdGVkSW1tMzIgdGFnLCBUcnVzdGVkSW1tMzIgcGF5bG9hZCkKICAgICB7
Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRy
KHN0cnVjdHVyZSksIHNjb3BlLCBUcnVzdGVkSW1tUHRyKHRhYmxlKSwgcGF5bG9hZCwgdGFnKTsK
KyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIo
c3RydWN0dXJlKSwgc2NvcGUsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBo
KCksIHRhYmxlKSwgcGF5bG9hZCwgdGFnKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICNlbmRpZgotICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRVN0WiBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBrbm93bkxlbmd0aCkKKyAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdFogb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgdW5z
aWduZWQga25vd25MZW5ndGgpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tMzIoa25vd25M
ZW5ndGgpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklU
T3BlcmF0aW9uX0VTdFpaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIHVuc2lnbmVkIGtub3duTGVuZ3RoLCB1bnNpZ25lZCBtaW5DYXBhY2l0eSkKKyAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdFpaIG9wZXJh
dGlvbiwgR1BSUmVnIHJlc3VsdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIHVuc2ln
bmVkIGtub3duTGVuZ3RoLCB1bnNpZ25lZCBtaW5DYXBhY2l0eSkKICAgICB7CiAgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSks
IFRydXN0ZWRJbW0zMihrbm93bkxlbmd0aCksIFRydXN0ZWRJbW0zMihtaW5DYXBhY2l0eSkpOwog
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAg
ICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25f
RVN0WiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBHUFJS
ZWcgbGVuZ3RoKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVy
YXRpb25fRVN0WiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
c3RydWN0dXJlLCBHUFJSZWcgbGVuZ3RoKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgbGVuZ3RoKTsKICAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAg
IH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VT
dFpaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJl
ZyBsZW5ndGgsIHVuc2lnbmVkIG1pbkNhcGFjaXR5KQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRVN0Wlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgR1BSUmVnIGxlbmd0aCwgdW5zaWduZWQg
bWluQ2FwYWNpdHkpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBsZW5ndGgsIFRydXN0ZWRJbW0zMihtaW5D
YXBhY2l0eSkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19K
SVRPcGVyYXRpb25fRUpzc1N0IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oQ19KSVRPcGVyYXRpb25fRUpzc1N0IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVn
IGFyZzEsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKQogICAgIHsKICAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoc3RydWN0
dXJlKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKQEAgLTExNDAsMTMgKzExOTEsMTMgQEAgcHVibGljOgogCiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FR0Mgb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBHUFJSZWcgYXJnMikKICAgICB7
Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRy
KGdsb2JhbE9iamVjdCksIGFyZzIpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgZ2xvYmFs
T2JqZWN0KSwgYXJnMik7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0KTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKENfSklUT3BlcmF0aW9uX0VHQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEdQUlJlZyBhcmcyKQogICAgIHsKLSAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwg
YXJnMik7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3QpLCBhcmcyKTsK
ICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwog
ICAgIH0KIApAQCAtMTE3MCw3ICsxMjIxLDcgQEAgcHVibGljOgogCiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FQyBvcGVyYXRpb24sIEpTQ2VsbCog
YXJnMSkKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShU
cnVzdGVkSW1tUHRyKGFyZzEpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGFyZzEpKTsK
ICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAKQEAgLTExOTcs
MTIgKzEyNDgsMTIgQEAgcHVibGljOgogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VDQyBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBKU0Nl
bGwqIGFyZzIpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgVHJ1c3RlZEltbVB0cihhcmcyKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5n
cmFwaCgpLCBhcmcyKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAg
ICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25f
RUNDIG9wZXJhdGlvbiwgSlNDZWxsKiBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7Ci0gICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGFyZzEpLCBh
cmcyKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGFyZzEpLCBhcmcyKTsKICAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAKQEAgLTEyNzMsMTMgKzEzMjQs
MTMgQEAgcHVibGljOgogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJ
VE9wZXJhdGlvbl9FSnNjQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBK
U0NlbGwqIGNlbGwpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSk7CisgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2pp
dC5ncmFwaCgpLCBjZWxsKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNjQ0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
LCBHUFJSZWcgYXJnMSwgSlNDZWxsKiBjZWxsLCBHUFJSZWcgYXJnMikKICAgICB7Ci0gICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGNl
bGwpLCBhcmcyKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGNlbGwpLCBhcmcy
KTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OwogICAgIH0KIApAQCAtMTQ3NCw3ICsxNTI1LDcgQEAgcHVibGljOgogICAgIH0KICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VDIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdCwgSlNDZWxsKiBjZWxsKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoY2VsbCkpOworICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9qaXQuZ3JhcGgoKSwgY2VsbCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUNaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGFyZzEsIEdQUlJlZyBhcmcyKQpAQCAtMTU0NCw3ICsxNTk1LDcgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAg
fQogCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9F
U3RKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJl
ZyBhcmcyKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRp
b25fRVN0SiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3Ry
dWN0dXJlLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGFyZzIpOwogICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CkBAIC0xNTUyLDcg
KzE2MDMsNyBAQCBwdWJsaWM6CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KENfSklUT3BlcmF0aW9uX0VHSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEdQUlJlZyBhcmcxKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwgYXJn
MSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3QpLCBhcmcxKTsKICAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAg
IH0KIApAQCAtMTkwMCw3ICsxOTUxLDcgQEAgcHVibGljOgogICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKERfSklUT3BlcmF0aW9uX0cgb3BlcmF0aW9uLCBGUFJSZWcg
cmVzdWx0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHsKLSAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHMoVHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QpKTsKKyAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHMoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3Jh
cGgoKSwgZ2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihaX0pJVE9wZXJhdGlvbl9EIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgRlBSUmVn
IGFyZzEpCkBAIC0yMDA5LDcgKzIwNjAsNyBAQCBwdWJsaWM6CiAKICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VDIG9wZXJhdGlvbiwgSlNWYWx1ZVJl
Z3MgcmVzdWx0LCBKU0NlbGwqIGNlbGwpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihjZWxsKSk7CisgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2pp
dC5ncmFwaCgpLCBjZWxsKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKICAgICB9CiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FQ1ogb3Bl
cmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKQEAg
LTIwMTksMTIgKzIwNzAsMTIgQEAgcHVibGljOgogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKc2NDIG9wZXJhdGlvbiwgSlNWYWx1ZVJl
Z3MgcmVzdWx0LCBHUFJSZWcgYXJnMSwgSlNDZWxsKiBjZWxsKQogICAgIHsKLSAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCkp
OworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgY2VsbCkpOwogICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXlsb2FkR1BSKCksIHJl
c3VsdC50YWdHUFIoKSk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oSl9KSVRPcGVyYXRpb25fRUpzY0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVn
IGFyZzEsIEpTQ2VsbCogY2VsbCwgSlNWYWx1ZVJlZ3MgYXJnMikKICAgICB7Ci0gICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGNlbGwp
LCBFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcyLnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSk7
CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVk
SW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBjZWxsKSwgRUFCSV8zMkJJVF9EVU1N
WV9BUkcgYXJnMi5wYXlsb2FkR1BSKCksIGFyZzIudGFnR1BSKCkpOwogICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUdSZW9KIG9wZXJhdGlv
biwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEpTVmFsdWVS
ZWdzIGFyZzMpCkBAIC0yMTA5LDcgKzIxNjAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKLSAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VTdEogb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNWYWx1ZVJlZ3MgYXJnMikK
KyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VTdEog
b3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwg
SlNWYWx1ZVJlZ3MgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGFyZzIucGF5bG9hZEdQUigpLCBh
cmcyLnRhZ0dQUigpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHQpOwpAQCAtMjExNyw3ICsyMTY4LDcgQEAgcHVibGljOgogCiAgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FR0ogb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlUmVncyBh
cmcxKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRy
dXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwgYXJnMS5wYXlsb2FkR1BSKCksIGFyZzEudGFnR1BS
KCkpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0KSwgYXJnMS5wYXls
b2FkR1BSKCksIGFyZzEudGFnR1BSKCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCkBAIC0yNjY3LDcgKzI3MTgsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KEdQUlJlZyBi
YXNlLCBHUFJSZWcgcHJvcGVydHksIE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdm9pZCBj
b21waWxlR2V0QnlWYWxPbkZsb2F0VHlwZWRBcnJheShOb2RlKiwgVHlwZWRBcnJheVR5cGUpOwog
ICAgIHZvaWQgY29tcGlsZVB1dEJ5VmFsRm9yRmxvYXRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBH
UFJSZWcgcHJvcGVydHksIE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7Ci0gICAgdGVtcGxhdGUgPHR5
cGVuYW1lIENsYXNzVHlwZT4gdm9pZCBjb21waWxlTmV3RnVuY3Rpb25Db21tb24oR1BSUmVnLCBT
dHJ1Y3R1cmUqLCBHUFJSZWcsIEdQUlJlZywgR1BSUmVnLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExp
c3QmLCBzaXplX3QsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIHB0cmRpZmZfdCwgcHRyZGlmZl90LCBw
dHJkaWZmX3QpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGU+IHZvaWQgY29tcGls
ZU5ld0Z1bmN0aW9uQ29tbW9uKEdQUlJlZywgUmVnaXN0ZXJlZFN0cnVjdHVyZSwgR1BSUmVnLCBH
UFJSZWcsIEdQUlJlZywgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0Jiwgc2l6ZV90LCBGdW5jdGlv
bkV4ZWN1dGFibGUqLCBwdHJkaWZmX3QsIHB0cmRpZmZfdCwgcHRyZGlmZl90KTsKICAgICB2b2lk
IGNvbXBpbGVOZXdGdW5jdGlvbihOb2RlKik7CiAgICAgdm9pZCBjb21waWxlU2V0RnVuY3Rpb25O
YW1lKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVGb3J3YXJkVmFyYXJncyhOb2RlKik7CkBAIC0y
NzUzLDEzICsyODA0LDEzIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDbGFzc1R5cGU+Ci0gICAgdm9pZCBlbWl0QWxsb2NhdGVEZXN0cnVjdGlibGVPYmplY3QoR1BS
UmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIAorICAgIHZvaWQgZW1pdEFsbG9j
YXRlRGVzdHJ1Y3RpYmxlT2JqZWN0KEdQUlJlZyByZXN1bHRHUFIsIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUgc3RydWN0dXJlLCAKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIxLCBHUFJSZWcgc2NyYXRj
aEdQUjIsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYgc2xvd1BhdGgpCiAgICAgewotICAgICAg
ICBtX2ppdC5lbWl0QWxsb2NhdGVEZXN0cnVjdGlibGVPYmplY3Q8Q2xhc3NUeXBlPihyZXN1bHRH
UFIsIHN0cnVjdHVyZSwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBzbG93UGF0aCk7CisgICAg
ICAgIG1faml0LmVtaXRBbGxvY2F0ZURlc3RydWN0aWJsZU9iamVjdDxDbGFzc1R5cGU+KHJlc3Vs
dEdQUiwgc3RydWN0dXJlLmdldCgpLCBzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIHNsb3dQYXRo
KTsKICAgICB9CiAKLSAgICB2b2lkIGVtaXRBbGxvY2F0ZVJhd09iamVjdChHUFJSZWcgcmVzdWx0
R1BSLCBTdHJ1Y3R1cmUqLCBHUFJSZWcgc3RvcmFnZUdQUiwgdW5zaWduZWQgbnVtRWxlbWVudHMs
IHVuc2lnbmVkIHZlY3Rvckxlbmd0aCk7CisgICAgdm9pZCBlbWl0QWxsb2NhdGVSYXdPYmplY3Qo
R1BSUmVnIHJlc3VsdEdQUiwgUmVnaXN0ZXJlZFN0cnVjdHVyZSwgR1BSUmVnIHN0b3JhZ2VHUFIs
IHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpOwogICAgIAogICAg
IHZvaWQgZW1pdEdldExlbmd0aChJbmxpbmVDYWxsRnJhbWUqLCBHUFJSZWcgbGVuZ3RoR1BSLCBi
b29sIGluY2x1ZGVUaGlzID0gZmFsc2UpOwogICAgIHZvaWQgZW1pdEdldExlbmd0aChDb2RlT3Jp
Z2luLCBHUFJSZWcgbGVuZ3RoR1BSLCBib29sIGluY2x1ZGVUaGlzID0gZmFsc2UpOwpAQCAtMzc3
NCwxMyArMzgyNSwxMyBAQCBwcml2YXRlOgogdGVtcGxhdGU8dHlwZW5hbWUgU3RydWN0dXJlTG9j
YXRpb25UeXBlPgogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nT2JqZWN0Rm9y
U3RydWN0dXJlKEVkZ2UgZWRnZSwgU3RydWN0dXJlTG9jYXRpb25UeXBlIHN0cnVjdHVyZUxvY2F0
aW9uKQogewotICAgIFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0U3RydWN0dXJlID0KLSAgICAgICAg
bV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnN0
cmluZ09iamVjdFN0cnVjdHVyZSgpOworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RyaW5nT2Jq
ZWN0U3RydWN0dXJlID0KKyAgICAgICAgbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZSht
X2ppdC5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKS0+c3Ry
aW5nT2JqZWN0U3RydWN0dXJlKCkpOwogICAgIAotICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKGVk
Z2UpLm1fc3RydWN0dXJlLmlzU3Vic2V0T2YoU3RydWN0dXJlU2V0KHN0cmluZ09iamVjdFN0cnVj
dHVyZSkpKSB7CisgICAgaWYgKCFtX3N0YXRlLmZvck5vZGUoZWRnZSkubV9zdHJ1Y3R1cmUuaXNT
dWJzZXRPZihSZWdpc3RlcmVkU3RydWN0dXJlU2V0KHN0cmluZ09iamVjdFN0cnVjdHVyZSkpKSB7
CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICBOb3RTdHJpbmdPYmplY3Qs
IEpTVmFsdWVSZWdzKCksIDAsCi0gICAgICAgICAgICBtX2ppdC5icmFuY2hTdHJ1Y3R1cmUoCisg
ICAgICAgICAgICBtX2ppdC5icmFuY2hXZWFrU3RydWN0dXJlKAogICAgICAgICAgICAgICAgIEpJ
VENvbXBpbGVyOjpOb3RFcXVhbCwgc3RydWN0dXJlTG9jYXRpb24sIHN0cmluZ09iamVjdFN0cnVj
dHVyZSkpOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Ry
ZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjExMTA3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTQwLDcgKzU0MCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAg
ICAgIGlmIChtX25vZGUtPm9wKCkgPT0gUmVnRXhwRXhlYykgewogICAgICAgICAgICAgICAgIGlm
IChyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlU2V0KiBzdHJ1Y3R1cmVT
ZXQgPSBtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAg
ICAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0KiBzdHJ1Y3R1cmVTZXQgPSBtX2dyYXBoLmFkZFN0
cnVjdHVyZVNldChzdHJ1Y3R1cmUpOwogCiAgICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBh
biBhcnJheSBtb2RlbGluZyB0aGUgSlMgYXJyYXkgdGhhdCB3ZSB3aWxsIHRyeSB0byBhbGxvY2F0
ZS4gVGhpcyBpcwogICAgICAgICAgICAgICAgICAgICAvLyBiYXNpY2FsbHkgY3JlYXRlUmVnRXhw
TWF0Y2hlc0FycmF5IGJ1dCBvdmVyIEMrKyBzdHJpbmdzIGluc3RlYWQgb2YgSlNTdHJpbmdzLgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVy
ZUFic3RyYWN0VmFsdWUuY3BwCShyZXZpc2lvbiAyMTExMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSw3ICszOSw3IEBAIHZvaWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6YXNzZXJ0SXNSZWcK
ICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IHNpemUoKTsgaS0t
OykKLSAgICAgICAgZ3JhcGguYXNzZXJ0SXNSZWdpc3RlcmVkKGF0KGkpKTsKKyAgICAgICAgZ3Jh
cGguYXNzZXJ0SXNSZWdpc3RlcmVkKGF0KGkpLmdldCgpKTsKIH0KICNlbmRpZiAvLyAhQVNTRVJU
X0RJU0FCTEVECiAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVl
OjpjbG9iYmVyKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBTdHJ1Y3R1cmVT
ZXQ6Ok91dE9mTGluZUxpc3QqIGxpc3QgPSBtX3NldC5saXN0KCk7CisgICAgUmVnaXN0ZXJlZFN0
cnVjdHVyZVNldDo6T3V0T2ZMaW5lTGlzdCogbGlzdCA9IG1fc2V0Lmxpc3QoKTsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBsaXN0LT5tX2xlbmd0aDsgaS0tOykgewogICAgICAgICBpZiAoIWxpc3Qt
Pmxpc3QoKVtpXS0+ZGZnU2hvdWxkV2F0Y2goKSkgewogICAgICAgICAgICAgbWFrZVRvcCgpOwpA
QCAtNzEsNyArNzEsNyBAQCB2b2lkIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmNsb2JiZXIoKQog
ICAgIH0KIH0KIAotdm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpvYnNlcnZlVHJhbnNpdGlv
bihTdHJ1Y3R1cmUqIGZyb20sIFN0cnVjdHVyZSogdG8pCit2b2lkIFN0cnVjdHVyZUFic3RyYWN0
VmFsdWU6Om9ic2VydmVUcmFuc2l0aW9uKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgZnJvbSwgUmVnaXN0
ZXJlZFN0cnVjdHVyZSB0bykKIHsKICAgICBBU1NFUlQoIWZyb20tPmRmZ1Nob3VsZFdhdGNoKCkp
OwogCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6b2JzZXJ2
ZVRyYW4KICAgICBpZiAoaXNUb3AoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFN0cnVj
dHVyZVNldCBuZXdTdHJ1Y3R1cmVzOworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgbmV3U3Ry
dWN0dXJlczsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSB2ZWN0b3Iuc2l6ZSgpOyBpLS07KSB7CiAg
ICAgICAgIEFTU0VSVCghdmVjdG9yW2ldLnByZXZpb3VzLT5kZmdTaG91bGRXYXRjaCgpKTsKIApA
QCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6b2JzZXJ2ZVRy
YW4KICAgICAgICAgbWFrZVRvcCgpOwogfQogCi1ib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6
OmFkZChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK2Jvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6
YWRkKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKQogewogICAgIGlmIChpc1RvcCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMjQsNyArMTI0LDcgQEAgYm9vbCBTdHJ1Y3R1cmVB
YnN0cmFjdFZhbHVlOjphZGQoU3RydWN0dQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFN0
cnVjdHVyZUFic3RyYWN0VmFsdWU6Om1lcmdlKGNvbnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpCiti
b29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om1lcmdlKGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1
cmVTZXQmIG90aGVyKQogewogICAgIGlmIChpc1RvcCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0xNzUsNyArMTc1LDcgQEAgYm9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjptZXJnZVNs
b3coYwogICAgIHJldHVybiBjaGFuZ2VkOwogfQogCi1ib29sIFN0cnVjdHVyZUFic3RyYWN0VmFs
dWU6Om1lcmdlTm90VG9wKGNvbnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpCitib29sIFN0cnVjdHVy
ZUFic3RyYWN0VmFsdWU6Om1lcmdlTm90VG9wKGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQm
IG90aGVyKQogewogICAgIGlmICghbV9zZXQubWVyZ2Uob3RoZXIpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0xODYsNyArMTg2LDcgQEAgYm9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpt
ZXJnZU5vdFRvcAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFN0cnVjdHVyZUFic3RyYWN0
VmFsdWU6OmZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKQordm9pZCBTdHJ1Y3R1cmVB
YnN0cmFjdFZhbHVlOjpmaWx0ZXIoY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgb3RoZXIp
CiB7CiAgICAgaWYgKGlzVG9wKCkpIHsKICAgICAgICAgbV9zZXQgPSBvdGhlcjsKQEAgLTIyOSw3
ICsyMjksNyBAQCB2b2lkIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmZpbHRlcihjb25zCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgICAgICBpZiAoIWlzQ2xvYmJlcmVkKCkpIHsK
LSAgICAgICAgICAgIC8vIFNlZSBqdXN0aWZpY2F0aW9uIGluIGZpbHRlcihjb25zdCBTdHJ1Y3R1
cmVTZXQmKSwgYWJvdmUuIEFuIHVuY2xvYmJlcmVkIHNldCBpcworICAgICAgICAgICAgLy8gU2Vl
IGp1c3RpZmljYXRpb24gaW4gZmlsdGVyKGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmKSwg
YWJvdmUuIEFuIHVuY2xvYmJlcmVkIHNldCBpcwogICAgICAgICAgICAgLy8gYWxtb3N0IGFsd2F5
cyBiZXR0ZXIuCiAgICAgICAgICAgICBpZiAobV9zZXQuc2l6ZSgpID4gb3RoZXIubV9zZXQuc2l6
ZSgpICsgY2xvYmJlcmVkU3VwcmVtYWN5VGhyZXNob2xkKQogICAgICAgICAgICAgICAgICp0aGlz
ID0gb3RoZXI7IC8vIEtlZXAgdGhlIGNsb2JiZXJlZCBzZXQuCkBAIC0yNTMsOCArMjUzLDggQEAg
dm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpmaWx0ZXJTbG93KAogICAgIEFTU0VSVCghaXNU
b3AoKSk7CiAgICAgCiAgICAgbV9zZXQuZ2VuZXJpY0ZpbHRlcigKLSAgICAgICAgWyZdIChTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkgewotICAgICAgICAgICAgcmV0dXJuICEhKHNwZWN1bGF0aW9uRnJv
bVN0cnVjdHVyZShzdHJ1Y3R1cmUpICYgdHlwZSk7CisgICAgICAgIFsmXSAoUmVnaXN0ZXJlZFN0
cnVjdHVyZSBzdHJ1Y3R1cmUpIHsKKyAgICAgICAgICAgIHJldHVybiAhIShzcGVjdWxhdGlvbkZy
b21TdHJ1Y3R1cmUoc3RydWN0dXJlLmdldCgpKSAmIHR5cGUpOwogICAgICAgICB9KTsKIH0KIApA
QCAtMjYyLDEyICsyNjIsMTIgQEAgdm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpmaWx0ZXJD
bGFzcwogewogICAgIEFTU0VSVCghaXNUb3AoKSk7CiAgICAgbV9zZXQuZ2VuZXJpY0ZpbHRlcigK
LSAgICAgICAgWyZdIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgeworICAgICAgICBbJl0gKFJlZ2lz
dGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSB7CiAgICAgICAgICAgICByZXR1cm4gc3RydWN0dXJl
LT5jbGFzc0luZm8oKS0+aXNTdWJDbGFzc09mKGNsYXNzSW5mbyk7CiAgICAgICAgIH0pOwogfQog
Ci1ib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmNvbnRhaW5zKFN0cnVjdHVyZSogc3RydWN0
dXJlKSBjb25zdAorYm9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpjb250YWlucyhSZWdpc3Rl
cmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgY29uc3QKIHsKICAgICBpZiAoaXNJbmZpbml0ZSgpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI3NSw3ICsyNzUsMTUgQEAgYm9vbCBTdHJ1Y3R1cmVB
YnN0cmFjdFZhbHVlOjpjb250YWlucyhTdAogICAgIHJldHVybiBtX3NldC5jb250YWlucyhzdHJ1
Y3R1cmUpOwogfQogCi1ib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3Vic2V0T2YoY29u
c3QgU3RydWN0dXJlU2V0JiBvdGhlcikgY29uc3QKK2Jvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1
ZTo6Y29udGFpbnMoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIGNvbnN0Cit7CisgICAgaWYgKGlzSW5m
aW5pdGUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCisgICAgcmV0dXJuIG1fc2V0LnRv
U3RydWN0dXJlU2V0KCkuY29udGFpbnMoc3RydWN0dXJlKTsKK30KKworYm9vbCBTdHJ1Y3R1cmVB
YnN0cmFjdFZhbHVlOjppc1N1YnNldE9mKGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIG90
aGVyKSBjb25zdAogewogICAgIGlmIChpc0luZmluaXRlKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTMwNCw3ICszMTIsNyBAQCBib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3Vi
c2V0T2YoCiAgICAgcmV0dXJuIG1fc2V0LmlzU3Vic2V0T2Yob3RoZXIubV9zZXQpOwogfQogCi1i
b29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3VwZXJzZXRPZihjb25zdCBTdHJ1Y3R1cmVT
ZXQmIG90aGVyKSBjb25zdAorYm9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjppc1N1cGVyc2V0
T2YoY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0CiB7CiAgICAgaWYg
KGlzSW5maW5pdGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0zMTIsNyArMzIwLDcgQEAg
Ym9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjppc1N1cGVyc2V0TwogICAgIHJldHVybiBtX3Nl
dC5pc1N1cGVyc2V0T2Yob3RoZXIpOwogfQogCi1ib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6
Om92ZXJsYXBzKGNvbnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0Citib29sIFN0cnVjdHVy
ZUFic3RyYWN0VmFsdWU6Om92ZXJsYXBzKGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIG90
aGVyKSBjb25zdAogewogICAgIGlmIChpc0luZmluaXRlKCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwpAQCAtMzM0LDcgKzM0Miw3IEBAIGJvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6aXNTdWJD
bGFzc08KICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gTm90ZSB0YWh0IHRoaXMgZnVu
Y3Rpb24gcmV0dXJucyB0cnVlIGlmIHRoZSBzdHJ1Y3R1cmUgc2V0IGlzIGVtcHR5LgotICAgIGZv
ciAoY29uc3QgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgOiBtX3NldCkgeworICAgIGZvciAoY29uc3Qg
UmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgOiBtX3NldCkgewogICAgICAgICBpZiAoIXN0
cnVjdHVyZS0+Y2xhc3NJbmZvKCktPmlzU3ViQ2xhc3NPZihjbGFzc0luZm8pKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTM1OSw3ICszNjcsNyBAQCB2b2lkIFN0cnVjdHVy
ZUFic3RyYWN0VmFsdWU6OmR1bXBJbkNvbnRlCiAgICAgaWYgKGlzVG9wKCkpCiAgICAgICAgIG91
dC5wcmludCgiVE9QIik7CiAgICAgZWxzZQotICAgICAgICBvdXQucHJpbnQoaW5Db250ZXh0KG1f
c2V0LCBjb250ZXh0KSk7CisgICAgICAgIG91dC5wcmludChpbkNvbnRleHQobV9zZXQudG9TdHJ1
Y3R1cmVTZXQoKSwgY29udGV4dCkpOwogfQogCiB2b2lkIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6
OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oCShyZXZpc2lvbiAy
MTExMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0
VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkpTQ2Vs
bC5oIgogI2luY2x1ZGUgIlNwZWN1bGF0ZWRUeXBlLmgiCiAjaW5jbHVkZSAiRHVtcENvbnRleHQu
aCIKKyNpbmNsdWRlICJERkdSZWdpc3RlcmVkU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiU3RydWN0
dXJlU2V0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDIsMTIgKzQzLDEyIEBAIG5hbWVzcGFj
ZSBERkcgewogY2xhc3MgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSB7CiBwdWJsaWM6CiAgICAgU3Ry
dWN0dXJlQWJzdHJhY3RWYWx1ZSgpIHsgfQotICAgIFN0cnVjdHVyZUFic3RyYWN0VmFsdWUoU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgIDogbV9zZXQoU3RydWN0dXJlU2V0KHN0cnVjdHVy
ZSkpCisgICAgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZShSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVj
dHVyZSkKKyAgICAgICAgOiBtX3NldChzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBzZXRDbG9i
YmVyZWQoZmFsc2UpOwogICAgIH0KLSAgICBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlKGNvbnN0IFN0
cnVjdHVyZVNldCYgb3RoZXIpCisgICAgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZShjb25zdCBSZWdp
c3RlcmVkU3RydWN0dXJlU2V0JiBvdGhlcikKICAgICAgICAgOiBtX3NldChvdGhlcikKICAgICB7
CiAgICAgICAgIHNldENsb2JiZXJlZChmYWxzZSk7CkBAIC01OCwxMyArNTksMTMgQEAgcHVibGlj
OgogICAgICAgICBzZXRDbG9iYmVyZWQob3RoZXIuaXNDbG9iYmVyZWQoKSk7CiAgICAgfQogICAg
IAotICAgIEFMV0FZU19JTkxJTkUgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSYgb3BlcmF0b3I9KFN0
cnVjdHVyZSogc3RydWN0dXJlKQorICAgIEFMV0FZU19JTkxJTkUgU3RydWN0dXJlQWJzdHJhY3RW
YWx1ZSYgb3BlcmF0b3I9KFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKQogICAgIHsKLSAg
ICAgICAgbV9zZXQgPSBTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKTsKKyAgICAgICAgbV9zZXQgPSBS
ZWdpc3RlcmVkU3RydWN0dXJlU2V0KHN0cnVjdHVyZSk7CiAgICAgICAgIHNldENsb2JiZXJlZChm
YWxzZSk7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9Ci0gICAgQUxXQVlTX0lOTElORSBT
dHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvcGVyYXRvcj0oY29uc3QgU3RydWN0dXJlU2V0JiBvdGhl
cikKKyAgICBBTFdBWVNfSU5MSU5FIFN0cnVjdHVyZUFic3RyYWN0VmFsdWUmIG9wZXJhdG9yPShj
b25zdCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0JiBvdGhlcikKICAgICB7CiAgICAgICAgIG1fc2V0
ID0gb3RoZXI7CiAgICAgICAgIHNldENsb2JiZXJlZChmYWxzZSk7CkBAIC05OCw3ICs5OSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGNsb2JiZXIoKTsKICAgICB2b2lkIG9ic2VydmVJbnZhbGlkYXRp
b25Qb2ludCgpIHsgc2V0Q2xvYmJlcmVkKGZhbHNlKTsgfQogICAgIAotICAgIHZvaWQgb2JzZXJ2
ZVRyYW5zaXRpb24oU3RydWN0dXJlKiBmcm9tLCBTdHJ1Y3R1cmUqIHRvKTsKKyAgICB2b2lkIG9i
c2VydmVUcmFuc2l0aW9uKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgZnJvbSwgUmVnaXN0ZXJlZFN0cnVj
dHVyZSB0byk7CiAgICAgdm9pZCBvYnNlcnZlVHJhbnNpdGlvbnMoY29uc3QgVHJhbnNpdGlvblZl
Y3RvciYpOwogICAgIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlIHRvcCgpCkBA
IC0xMzEsOSArMTMyLDkgQEAgcHVibGljOgogICAgIC8vIEFuIGluZmluaXRlIHN0cnVjdHVyZSBh
YnN0cmFjdCB2YWx1ZSBtYXkgY3VycmVudGx5IGhhdmUgYW55IHN0cnVjdHVyZS4KICAgICBib29s
IGlzSW5maW5pdGUoKSBjb25zdCB7IHJldHVybiAhaXNGaW5pdGUoKTsgfQogICAgIAotICAgIGJv
b2wgYWRkKFN0cnVjdHVyZSogc3RydWN0dXJlKTsKKyAgICBib29sIGFkZChSZWdpc3RlcmVkU3Ry
dWN0dXJlIHN0cnVjdHVyZSk7CiAgICAgCi0gICAgYm9vbCBtZXJnZShjb25zdCBTdHJ1Y3R1cmVT
ZXQmIG90aGVyKTsKKyAgICBib29sIG1lcmdlKGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQm
IG90aGVyKTsKICAgICAKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgbWVyZ2UoY29uc3QgU3RydWN0
dXJlQWJzdHJhY3RWYWx1ZSYgb3RoZXIpCiAgICAgewpAQCAtMTUxLDcgKzE1Miw3IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIG1lcmdlU2xvdyhvdGhlcik7CiAgICAgfQogICAgIAotICAgIHZv
aWQgZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpOworICAgIHZvaWQgZmlsdGVyKGNv
bnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIG90aGVyKTsKICAgICB2b2lkIGZpbHRlcihjb25z
dCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcik7CiAgICAgCiAgICAgQUxXQVlTX0lOTElO
RSB2b2lkIGZpbHRlcihTcGVjdWxhdGVkVHlwZSB0eXBlKQpAQCAtMTc4LDExICsxNzksMTcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gZXF1YWxzU2xvdyhvdGhlcik7CiAgICAgfQogICAgIAot
ICAgIGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0KCkgY29uc3QKKyAgICBjb25zdCBSZWdpc3RlcmVk
U3RydWN0dXJlU2V0JiBzZXQoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKCFpc1RvcCgp
KTsKICAgICAgICAgcmV0dXJuIG1fc2V0OwogICAgIH0KKworICAgIFN0cnVjdHVyZVNldCB0b1N0
cnVjdHVyZVNldCgpIGNvbnN0CisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0Zpbml0
ZSgpKTsKKyAgICAgICAgcmV0dXJuIG1fc2V0LnRvU3RydWN0dXJlU2V0KCk7CisgICAgfQogICAg
IAogICAgIHNpemVfdCBzaXplKCkgY29uc3QKICAgICB7CkBAIC0xOTAsMjEgKzE5NywyMSBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBtX3NldC5zaXplKCk7CiAgICAgfQogICAgIAotICAgIFN0
cnVjdHVyZSogYXQoc2l6ZV90IGkpIGNvbnN0CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBhdChz
aXplX3QgaSkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVCghaXNUb3AoKSk7CiAgICAgICAg
IHJldHVybiBtX3NldC5hdChpKTsKICAgICB9CiAgICAgCi0gICAgU3RydWN0dXJlKiBvcGVyYXRv
cltdKHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBhdChpKTsgfQorICAgIFJlZ2lzdGVyZWRTdHJ1
Y3R1cmUgb3BlcmF0b3JbXShzaXplX3QgaSkgY29uc3QgeyByZXR1cm4gYXQoaSk7IH0KIAogICAg
IC8vIEluIG1vc3QgY2FzZXMsIHdoYXQgeW91IHJlYWxseSB3YW50IHRvIGRvIGlzIHZlcmlmeSB3
aGV0aGVyIHRoZSBzZXQgaXMgdG9wIG9yIGNsb2JiZXJlZCwgYW5kCiAgICAgLy8gaWYgbm90LCBl
bnVtZXJhdGUgdGhlIHNldCBvZiBzdHJ1Y3R1cmVzLiBVc2UgdGhpcyBvbmx5IGluIGNhc2VzIHdo
ZXJlIHRoZSBzaW5nbGV0b24gY2FzZSBpcwogICAgIC8vIG1lYW5pbmdmdWxseSBzcGVjaWFsLCBs
aWtlIGZvciB0cmFuc2l0aW9ucy4KLSAgICBTdHJ1Y3R1cmUqIG9ubHlTdHJ1Y3R1cmUoKSBjb25z
dAorICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgb25seVN0cnVjdHVyZSgpIGNvbnN0CiAgICAgewog
ICAgICAgICBpZiAoaXNJbmZpbml0ZSgpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgICAgICByZXR1cm4gUmVnaXN0ZXJlZFN0cnVjdHVyZSgpOwogICAgICAgICByZXR1cm4g
bV9zZXQub25seVN0cnVjdHVyZSgpOwogICAgIH0KIApAQCAtMjI0LDE4ICsyMzEsMTkgQEAgcHVi
bGljOgogICAgIC8vIG9wdGltaXphdGlvbnMgYXMgYSBjb25zZXF1ZW5jZSBvZiB0aGUgInRoaXMg
aXMgc21hbGxlciIgcmV0dXJuIHZhbHVlIC0gc28gZmFsc2UgZm9yCiAgICAgLy8gY29udGFpbnMo
KSwgdHJ1ZSBmb3IgaXNTdWJzZXRPZigpLCBmYWxzZSBmb3IgaXNTdXBlcnNldE9mKCksIGFuZCBm
YWxzZSBmb3Igb3ZlcmxhcHMoKS4KIAorICAgIGJvb2wgY29udGFpbnMoUmVnaXN0ZXJlZFN0cnVj
dHVyZSBzdHJ1Y3R1cmUpIGNvbnN0OwogICAgIGJvb2wgY29udGFpbnMoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpIGNvbnN0OwogICAgIAotICAgIGJvb2wgaXNTdWJzZXRPZihjb25zdCBTdHJ1Y3R1cmVT
ZXQmIG90aGVyKSBjb25zdDsKKyAgICBib29sIGlzU3Vic2V0T2YoY29uc3QgUmVnaXN0ZXJlZFN0
cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0OwogICAgIGJvb2wgaXNTdWJzZXRPZihjb25zdCBTdHJ1
Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcikgY29uc3Q7CiAgICAgCi0gICAgYm9vbCBpc1N1cGVy
c2V0T2YoY29uc3QgU3RydWN0dXJlU2V0JiBvdGhlcikgY29uc3Q7CisgICAgYm9vbCBpc1N1cGVy
c2V0T2YoY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0OwogICAgIGJv
b2wgaXNTdXBlcnNldE9mKGNvbnN0IFN0cnVjdHVyZUFic3RyYWN0VmFsdWUmIG90aGVyKSBjb25z
dAogICAgIHsKICAgICAgICAgcmV0dXJuIG90aGVyLmlzU3Vic2V0T2YoKnRoaXMpOwogICAgIH0K
ICAgICAKLSAgICBib29sIG92ZXJsYXBzKGNvbnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0
OworICAgIGJvb2wgb3ZlcmxhcHMoY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgb3RoZXIp
IGNvbnN0OwogICAgIGJvb2wgb3ZlcmxhcHMoY29uc3QgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSYg
b3RoZXIpIGNvbnN0OwogCiAgICAgYm9vbCBpc1N1YkNsYXNzT2YoY29uc3QgQ2xhc3NJbmZvKikg
Y29uc3Q7CkBAIC0yNDMsOCArMjUxLDggQEAgcHVibGljOgogICAgIHZvaWQgdmFsaWRhdGVSZWZl
cmVuY2VzKGNvbnN0IFRyYWNrZWRSZWZlcmVuY2VzJikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgot
ICAgIHN0YXRpYyBjb25zdCB1aW50cHRyX3QgY2xvYmJlcmVkRmxhZyA9IFN0cnVjdHVyZVNldDo6
cmVzZXJ2ZWRGbGFnOwotICAgIHN0YXRpYyBjb25zdCB1aW50cHRyX3QgdG9wVmFsdWUgPSBTdHJ1
Y3R1cmVTZXQ6OnJlc2VydmVkVmFsdWU7CisgICAgc3RhdGljIGNvbnN0IHVpbnRwdHJfdCBjbG9i
YmVyZWRGbGFnID0gUmVnaXN0ZXJlZFN0cnVjdHVyZVNldDo6cmVzZXJ2ZWRGbGFnOworICAgIHN0
YXRpYyBjb25zdCB1aW50cHRyX3QgdG9wVmFsdWUgPSBSZWdpc3RlcmVkU3RydWN0dXJlU2V0Ojpy
ZXNlcnZlZFZhbHVlOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBwb2x5bW9ycGhpc21MaW1p
dCA9IDEwOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjbG9iYmVyZWRTdXByZW1hY3lUaHJl
c2hvbGQgPSAyOwogICAgIApAQCAtMjYwLDcgKzI2OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1f
c2V0Lm1fcG9pbnRlciA9IHRvcFZhbHVlOwogICAgIH0KICAgICAKLSAgICBib29sIG1lcmdlTm90
VG9wKGNvbnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpOworICAgIGJvb2wgbWVyZ2VOb3RUb3AoY29u
c3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgb3RoZXIpOwogICAgIAogICAgIHZvaWQgc2V0Q2xv
YmJlcmVkKGJvb2wgY2xvYmJlcmVkKQogICAgIHsKQEAgLTI2OCw3ICsyNzYsNyBAQCBwcml2YXRl
OgogICAgICAgICBtX3NldC5zZXRSZXNlcnZlZEZsYWcoY2xvYmJlcmVkKTsKICAgICB9CiAgICAg
Ci0gICAgU3RydWN0dXJlU2V0IG1fc2V0OworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgbV9z
ZXQ7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBo
YXNlLmNwcAkocmV2aXNpb24gMjExMTA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMjUg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJERkdTdHJ1Y3R1cmVSZWdpc3RyYXRp
b25QaGFzZS5oIgotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdCYXNpY0Js
b2NrSW5saW5lcy5oIgotI2luY2x1ZGUgIkRGR0dyYXBoLmgiCi0jaW5jbHVkZSAiREZHUGhhc2Uu
aCIKLSNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCi0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
REZHIHsKLQotY2xhc3MgU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2Ug
ewotcHVibGljOgotICAgIFN0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlKEdyYXBoJiBncmFwaCkK
LSAgICAgICAgOiBQaGFzZShncmFwaCwgInN0cnVjdHVyZSByZWdpc3RyYXRpb24iKQotICAgIHsK
LSAgICB9Ci0gICAgCi0gICAgYm9vbCBydW4oKQotICAgIHsKLSAgICAgICAgLy8gRklYTUU6IFRo
aXMgcGhhc2Ugc2hvdWxkbid0IGV4aXN0LiBXZSBzaG91bGQgaGF2ZSByZWdpc3RlcmVkIGFsbCBz
dHJ1Y3R1cmVzIGJ5IG5vdywgc2luY2UKLSAgICAgICAgLy8gd2UgbWF5IGFscmVhZHkgaGF2ZSBk
b25lIG9wdGltaXphdGlvbnMgdGhhdCByZWx5IG9uIHN0cnVjdHVyZXMgaGF2aW5nIGJlZW4gcmVn
aXN0ZXJlZC4KLSAgICAgICAgLy8gQ3VycmVudGx5LCB3ZSBzdGlsbCBoYXZlIHBsYWNlcyB3aGVy
ZSB3ZSBkb24ndCByZWdpc3RlciBzdHJ1Y3R1cmVzIHByaW9yIHRvIHRoaXMgcGhhc2UsCi0gICAg
ICAgIC8vIGJ1dCBzdHJ1Y3R1cmVzIGRvbid0IGVuZCB1cCBiZWluZyB1c2VkIGZvciBvcHRpbWl6
YXRpb24gcHJpb3IgdG8gdGhpcyBwaGFzZS4gVGhhdCdzIGEKLSAgICAgICAgLy8gcHJldHR5IGZy
YWdpbGUgc2l0dWF0aW9uIGFuZCB3ZSBzaG91bGQgZml4IGl0IGV2ZW50dWFsbHkuCi0gICAgICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc4ODkKLSAgICAg
ICAgCi0gICAgICAgIC8vIFdlIG5lZWQgdG8gc2V0IHRoaXMgYmVmb3JlIHRoaXMgcGhhc2UgZmlu
aXNoZXMuIFRoaXMgcGhhc2UgZG9lc24ndCBkbyBhbnl0aGluZwotICAgICAgICAvLyBjb25kaXRp
b25lZCBvbiB0aGlzIGZpZWxkLCBleGNlcHQgZm9yIGFzc2VydElzUmVnaXN0ZXJlZCgpIGJlbG93
LiBXZSBpbnRlbmQgZm9yIHRoYXQKLSAgICAgICAgLy8gbWV0aG9kIHRvIGJlaGF2ZSBhcyBpZiB0
aGUgcGhhc2Ugd2FzIGFscmVhZHkgZmluaXNoZWQuIFNvLCB3ZSBzZXQgdGhpcyB1cCBoZXJlLgot
ICAgICAgICBtX2dyYXBoLm1fc3RydWN0dXJlUmVnaXN0cmF0aW9uU3RhdGUgPSBBbGxTdHJ1Y3R1
cmVzQXJlUmVnaXN0ZXJlZDsKLSAgICAgICAgCi0gICAgICAgIC8vIFRoZXNlIGFyZSBwcmV0dHkg
ZHVtYiwgYnV0IG5lZWRlZCB0byBwbGFjYXRlIHN1YnNlcXVlbnQgYXNzZXJ0aW9ucy4gV2UgZG9u
J3QgYWN0dWFsbHkKLSAgICAgICAgLy8gaGF2ZSB0byB3YXRjaCB0aGVzZSBiZWNhdXNlIHRoZXJl
IGlzIG5vIHdheSB0byB0cmFuc2l0aW9uIGF3YXkgZnJvbSBpdCwgYnV0IHRoZXkgYXJlCi0gICAg
ICAgIC8vIHdhdGNoYWJsZSBhbmQgc28gd2Ugd2lsbCBhc3NlcnQgaWYgdGhleSBhcmVuJ3Qgd2F0
Y2hlZC4KLSAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5tX3ZtLnN0cnVjdHVyZVN0
cnVjdHVyZS5nZXQoKSk7Ci0gICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGgubV92bS5z
dHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOwotICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBo
Lm1fdm0uc3ltYm9sU3RydWN0dXJlLmdldCgpKTsKLSAgICAgICAgCi0gICAgICAgIGZvciAoRnJv
emVuVmFsdWUqIHZhbHVlIDogbV9ncmFwaC5tX2Zyb3plblZhbHVlcykKLSAgICAgICAgICAgIGFz
c2VydElzUmVnaXN0ZXJlZCh2YWx1ZS0+c3RydWN0dXJlKCkpOwotICAgICAgICAKLSAgICAgICAg
Zm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0lu
ZGV4LS07KSB7Ci0gICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2so
YmxvY2tJbmRleCk7Ci0gICAgICAgICAgICBpZiAoIWJsb2NrKQotICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAKLSAgICAgICAgICAgIGZvciAoYXV0byogbm9kZSA6ICpibG9jaykg
ewotICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAgICAgICAg
IGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydEFyZVJlZ2lz
dGVyZWQobm9kZS0+c3RydWN0dXJlU2V0KCkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBjYXNlIE5ld09iamVjdDoKLSAgICAg
ICAgICAgICAgICBjYXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBOZXdTdHJpbmdPYmplY3Q6Ci0gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJl
KG5vZGUtPnN0cnVjdHVyZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6Ci0gICAgICAgICAg
ICAgICAgY2FzZSBBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKLSAgICAgICAgICAgICAgICBjYXNl
IFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6Ci0gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVy
U3RydWN0dXJlKG5vZGUtPnRyYW5zaXRpb24oKS0+cHJldmlvdXMpOwotICAgICAgICAgICAgICAg
ICAgICByZWdpc3RlclN0cnVjdHVyZShub2RlLT50cmFuc2l0aW9uKCktPm5leHQpOwotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgIGNhc2UgR2V0R2V0dGVyU2V0
dGVyQnlPZmZzZXQ6Ci0gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmdldHRlclNldHRlclN0
cnVjdHVyZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAg
ICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qg
TXVsdGlHZXRCeU9mZnNldENhc2UmIGdldENhc2UgOiBub2RlLT5tdWx0aUdldEJ5T2Zmc2V0RGF0
YSgpLmNhc2VzKQotICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmVzKGdl
dENhc2Uuc2V0KCkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgotICAgICAgICAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBub2RlLT5tdWx0aVB1dEJ5T2Zmc2V0RGF0YSgp
LnZhcmlhbnRzLnNpemUoKTsgaS0tOykgewotICAgICAgICAgICAgICAgICAgICAgICAgUHV0QnlJ
ZFZhcmlhbnQmIHZhcmlhbnQgPSBub2RlLT5tdWx0aVB1dEJ5T2Zmc2V0RGF0YSgpLnZhcmlhbnRz
W2ldOwotICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmVzKHZhcmlhbnQu
b2xkU3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhbnQua2lu
ZCgpID09IFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICBjYXNlIE5ld0FycmF5OgotICAgICAgICAgICAgICAg
IGNhc2UgTmV3QXJyYXlCdWZmZXI6Ci0gICAgICAgICAgICAgICAgY2FzZSBOZXdBcnJheVdpdGhT
aXplOiB7Ci0gICAgICAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAg
ICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0
dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSkp
OwotICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm9y
aWdpbmFsQXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGUoQXJyYXlXaXRoU2xvd1B1dEFycmF5
U3RvcmFnZSkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNwcmVhZDogewotICAgICAgICAg
ICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KG1fZ3JhcGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludChub2RlKSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gV2UndmUgY29tcGlsZWQgYXNzdW1pbmcgd2UncmUgbm90
IGhhdmluZyBhIGJhZCB0aW1lLCBzbyB0byBiZSBjb25zaXN0ZW50Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAvLyB3aXRoIEFJIHdlIG11c3Qgc2F5IHdlIHByb2R1Y2UgYW4gb3JpZ2luYWwgYXJy
YXkgYWxsb2NhdGlvbiBzdHJ1Y3R1cmUuCi0gICAgICAgICAgICAgICAgICAgICAgICByZWdpc3Rl
clN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGlu
Z1R5cGUoQXJyYXlXaXRoQ29udGlndW91cykpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+
YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aENv
bnRpZ3VvdXMpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAgICAgY2FzZSBTcHJlYWQ6IHsKLSAgICAgICAgICAgICAgICAgICAg
cmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5tX3ZtLmZpeGVkQXJyYXlTdHJ1Y3R1cmUuZ2V0KCkp
OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICBjYXNlIENyZWF0ZVJlc3Q6IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1f
Z3JhcGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludChub2RlKSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICByZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnJlc3RQYXJhbWV0ZXJTdHJ1
Y3R1cmUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6Ci0gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3Ry
dWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnR5
cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkobm9kZS0+dHlwZWRBcnJheVR5cGUoKSkpOwot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgY2FzZSBUb1N0cmluZzoKLSAgICAgICAgICAgICAgICBjYXNlIENhbGxTdHJpbmdD
b25zdHJ1Y3RvcjoKLSAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+c3RyaW5nT2JqZWN0U3Ry
dWN0dXJlKCkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgotICAgICAgICAgICAg
ICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpLT5hY3RpdmF0aW9uU3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgY2FzZSBD
cmVhdGVEaXJlY3RBcmd1bWVudHM6Ci0gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0
dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmRpcmVj
dEFyZ3VtZW50c1N0cnVjdHVyZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNhc2UgQ3JlYXRlU2NvcGVkQXJndW1l
bnRzOgotICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5zY29wZWRBcmd1bWVudHNTdHJ1Y3R1
cmUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgICAgY2Fz
ZSBDcmVhdGVDbG9uZWRBcmd1bWVudHM6Ci0gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3Ry
dWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmNs
b25lZEFyZ3VtZW50c1N0cnVjdHVyZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0K
LSAgICAgICAgICAgICAgICBjYXNlIE5ld1JlZ2V4cDoKLSAgICAgICAgICAgICAgICAgICAgcmVn
aXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKS0+cmVnRXhwU3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgotICAgICAgICAgICAgICAgICAgICByZWdp
c3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGdW5jdGlvbjoKLSAgICAgICAgICAgICAg
ICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKS0+Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgTmV3QXN5bmNGdW5jdGlvbjoK
LSAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpKTsK
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQot
cHJpdmF0ZToKLSAgICB2b2lkIHJlZ2lzdGVyU3RydWN0dXJlcyhjb25zdCBTdHJ1Y3R1cmVTZXQm
IHNldCkKLSAgICB7Ci0gICAgICAgIGZvciAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgOiBzZXQpCi0g
ICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpOwotICAgIH0KLSAgICAKLSAg
ICB2b2lkIHJlZ2lzdGVyU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgIHsKLSAg
ICAgICAgaWYgKHN0cnVjdHVyZSkKLSAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1
cmUoc3RydWN0dXJlKTsKLSAgICB9Ci0KLSAgICB2b2lkIGFzc2VydEFyZVJlZ2lzdGVyZWQoY29u
c3QgU3RydWN0dXJlU2V0JiBzZXQpCi0gICAgewotICAgICAgICBmb3IgKFN0cnVjdHVyZSogc3Ry
dWN0dXJlIDogc2V0KQotICAgICAgICAgICAgYXNzZXJ0SXNSZWdpc3RlcmVkKHN0cnVjdHVyZSk7
Ci0gICAgfQotCi0gICAgdm9pZCBhc3NlcnRJc1JlZ2lzdGVyZWQoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCi0gICAgewotICAgICAgICBpZiAoc3RydWN0dXJlKQotICAgICAgICAgICAgbV9ncmFwaC5h
c3NlcnRJc1JlZ2lzdGVyZWQoc3RydWN0dXJlKTsKLSAgICB9Ci19OwotCi1ib29sIHBlcmZvcm1T
dHJ1Y3R1cmVSZWdpc3RyYXRpb24oR3JhcGgmIGdyYXBoKQotewotICAgIHJldHVybiBydW5QaGFz
ZTxTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZT4oZ3JhcGgpOwotfQotCi19IH0gLy8gbmFtZXNw
YWNlIEpTQzo6REZHCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKLQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0
aW9uUGhhc2UuaAkocmV2aXNpb24gMjExMTA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5oCShub25leGlzdGVudCkKQEAgLTEsNTAg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShERkdfSklUKQotCi1uYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7Ci0KLWNsYXNzIEdyYXBoOwotCi0vLyBSZWdpc3RlcnMgYW55IHN0cnVjdHVy
ZXMgd2Uga25vdyBhYm91dCBhcyB3ZWFrIHJlZmVyZW5jZXMsIGFuZCBzZXRzIHdhdGNocG9pbnRz
IG9uIGFueQotLy8gc3VjaCBzdHJ1Y3R1cmVzIHRoYXQgd2Uga25vdyBvZiB0aGF0IGFyZSBjdXJy
ZW50bHkgd2F0Y2hhYmxlLiBJdCdzIHNvbWV3aGF0Ci0vLyBjb3VudGVyaW50dWl0aXZlLCBidXQg
dGhpcyBlbmRzIHVwIGJlaW5nIHRoZSBjbGVhbmVzdCBhbmQgbW9zdCBlZmZlY3RpdmUgd2F5IG9m
IHJlZHVjaW5nCi0vLyBzdHJ1Y3R1cmUgY2hlY2tzIG9uIHRlcm1pbmFsIHN0cnVjdHVyZXM6Ci0v
LwotLy8gLSBXZSB1c2VkIHRvIG9ubHkgc2V0IHdhdGNocG9pbnRzIG9uIHdhdGNoYWJsZSBzdHJ1
Y3R1cmVzIGlmIHdlIGtuZXcgdGhhdCB0aGlzIHdvdWxkCi0vLyAgIHJlbW92ZSBhIHN0cnVjdHVy
ZSBjaGVjay4gRXhwZXJpbWVudHMgc2hvdyB0aGF0IHN3aXRjaGluZyBmcm9tIHRoYXQsIHRvIGJs
aW5kbHkKLS8vICAgc2V0dGluZyB3YXRjaHBvaW50cyBvbiBhbGwgd2F0Y2hhYmxlIHN0cnVjdHVy
ZXMsIHdhcyBub3QgYSByZWdyZXNzaW9uLgotLy8KLS8vIC0gSXQgbWFrZXMgYWJzdHJhY3QgaW50
ZXJwcmV0YXRpb24gYSB3aG9sZSBsb3QgZWFzaWVyLiBXZSBqdXN0IGFzc3VtZSB0aGF0IHdhdGNo
YWJsZQotLy8gICBzdHJ1Y3R1cmVzIGFyZSB1bmNsb2JiZXJhYmxlIHdpdGhvdXQgaGF2aW5nIHRv
IGRvIGFueSBvdGhlciBsb2dpYy4KLQotYm9vbCBwZXJmb3JtU3RydWN0dXJlUmVnaXN0cmF0aW9u
KEdyYXBoJik7Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotI2VuZGlmIC8vIEVOQUJM
RShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUcmFuc2l0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RyYW5zaXRp
b24uY3BwCShyZXZpc2lvbiAyMTExMDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1RyYW5zaXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogdm9pZCBUcmFuc2l0aW9uOjpkdW1wSW5Db250ZXh0
KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAogewotICAgIG91
dC5wcmludChwb2ludGVyRHVtcEluQ29udGV4dChwcmV2aW91cywgY29udGV4dCksICIgLT4gIiwg
cG9pbnRlckR1bXBJbkNvbnRleHQobmV4dCwgY29udGV4dCkpOworICAgIG91dC5wcmludChwb2lu
dGVyRHVtcEluQ29udGV4dChwcmV2aW91cy5nZXQoKSwgY29udGV4dCksICIgLT4gIiwgcG9pbnRl
ckR1bXBJbkNvbnRleHQobmV4dC5nZXQoKSwgY29udGV4dCkpOwogfQogCiB2b2lkIFRyYW5zaXRp
b246OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVHJhbnNpdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVHJhbnNpdGlvbi5oCShyZXZpc2lvbiAyMTExMDcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1RyYW5zaXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiAr
MjcsNyBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKKyNpbmNsdWRlICJERkdSZWdpc3RlcmVk
U3RydWN0dXJlLmgiCiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogCkBAIC0zOCwxNiArMzksMTIgQEAgc3RydWN0IER1bXBDb250ZXh0OwogbmFt
ZXNwYWNlIERGRyB7CiAKIHN0cnVjdCBUcmFuc2l0aW9uIHsKLSAgICBTdHJ1Y3R1cmUqIHByZXZp
b3VzOwotICAgIFN0cnVjdHVyZSogbmV4dDsKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHByZXZp
b3VzOworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgbmV4dDsKICAgICAKLSAgICBUcmFuc2l0aW9u
KCkKLSAgICAgICAgOiBwcmV2aW91cyhudWxscHRyKQotICAgICAgICAsIG5leHQobnVsbHB0cikK
LSAgICB7Ci0gICAgfQorICAgIFRyYW5zaXRpb24oKSA9IGRlZmF1bHQ7CiAgICAgCi0gICAgVHJh
bnNpdGlvbihTdHJ1Y3R1cmUqIHByZXZpb3VzLCBTdHJ1Y3R1cmUqIG5leHQpCisgICAgVHJhbnNp
dGlvbihSZWdpc3RlcmVkU3RydWN0dXJlIHByZXZpb3VzLCBSZWdpc3RlcmVkU3RydWN0dXJlIG5l
eHQpCiAgICAgICAgIDogcHJldmlvdXMocHJldmlvdXMpCiAgICAgICAgICwgbmV4dChuZXh0KQog
ICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3Rp
bmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdU
eXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjExMTA3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDY1LDIzICs0NjUsMjMgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogICAgIAotICAgIHZvaWQgbm90aWNlU3RydWN0dXJlQ2hlY2soVmFyaWFibGVBY2Nl
c3NEYXRhKiB2YXJpYWJsZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgdm9pZCBub3RpY2VT
dHJ1Y3R1cmVDaGVjayhWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlLCBSZWdpc3RlcmVkU3Ry
dWN0dXJlIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEhhc2hNYXA8VmFyaWFibGVBY2Nlc3NE
YXRhKiwgQ2hlY2tEYXRhPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZCh2YXJpYWJsZSwg
Q2hlY2tEYXRhKHN0cnVjdHVyZSkpOworICAgICAgICBIYXNoTWFwPFZhcmlhYmxlQWNjZXNzRGF0
YSosIENoZWNrRGF0YT46OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQodmFyaWFibGUsIENo
ZWNrRGF0YShzdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5
KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAocmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZS5tX3N0cnVjdHVyZSA9PSBzdHJ1Y3R1cmUpCisgICAgICAgIGlmIChyZXN1bHQuaXRlcmF0b3It
PnZhbHVlLm1fc3RydWN0dXJlID09IHN0cnVjdHVyZS5nZXQoKSkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5tX3N0cnVjdHVyZSA9IDA7CiAgICAg
fQogICAgIAotICAgIHZvaWQgbm90aWNlU3RydWN0dXJlQ2hlY2soVmFyaWFibGVBY2Nlc3NEYXRh
KiB2YXJpYWJsZSwgY29uc3QgU3RydWN0dXJlU2V0JiBzZXQpCisgICAgdm9pZCBub3RpY2VTdHJ1
Y3R1cmVDaGVjayhWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlLCBSZWdpc3RlcmVkU3RydWN0
dXJlU2V0IHNldCkKICAgICB7CiAgICAgICAgIGlmIChzZXQuc2l6ZSgpICE9IDEpIHsKLSAgICAg
ICAgICAgIG5vdGljZVN0cnVjdHVyZUNoZWNrKHZhcmlhYmxlLCAwKTsKKyAgICAgICAgICAgIG5v
dGljZVN0cnVjdHVyZUNoZWNrKHZhcmlhYmxlLCBSZWdpc3RlcmVkU3RydWN0dXJlKCkpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIG5vdGljZVN0cnVjdHVyZUNoZWNr
KHZhcmlhYmxlLCBzZXQub25seVN0cnVjdHVyZSgpKTsKKyAgICAgICAgbm90aWNlU3RydWN0dXJl
Q2hlY2sodmFyaWFibGUsIHNldC5hdCgwKSk7CiAgICAgfQogCiAgICAgdm9pZCBub3RpY2VDaGVj
a0FycmF5KFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUsIEFycmF5TW9kZSBhcnJheU1vZGUp
CkBAIC01MDEsMjIgKzUwMSwyMiBAQCBwcml2YXRlOgogICAgICAgICByZXN1bHQuaXRlcmF0b3It
PnZhbHVlLmRpc2FibGVDaGVja0FycmF5SG9pc3RpbmcoKTsKICAgICB9CiAKLSAgICB2b2lkIG5v
dGljZVN0cnVjdHVyZUNoZWNrQWNjb3VudGluZ0ZvckFycmF5TW9kZShWYXJpYWJsZUFjY2Vzc0Rh
dGEqIHZhcmlhYmxlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB2b2lkIG5vdGljZVN0cnVj
dHVyZUNoZWNrQWNjb3VudGluZ0ZvckFycmF5TW9kZShWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlh
YmxlLCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAgIEhhc2hN
YXA8VmFyaWFibGVBY2Nlc3NEYXRhKiwgQ2hlY2tEYXRhPjo6aXRlcmF0b3IgcmVzdWx0ID0gbV9t
YXAuZmluZCh2YXJpYWJsZSk7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gbV9tYXAuZW5kKCkpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmICghcmVzdWx0LT52YWx1ZS5tX2FycmF5TW9k
ZUhvaXN0aW5nT2theSB8fCAhcmVzdWx0LT52YWx1ZS5tX2FycmF5TW9kZUlzVmFsaWQpCiAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChyZXN1bHQtPnZhbHVlLm1fYXJyYXlNb2RlLnN0
cnVjdHVyZVdvdWxkUGFzc0FycmF5TW9kZUZpbHRlcmluZyhzdHJ1Y3R1cmUpKQorICAgICAgICBp
ZiAocmVzdWx0LT52YWx1ZS5tX2FycmF5TW9kZS5zdHJ1Y3R1cmVXb3VsZFBhc3NBcnJheU1vZGVG
aWx0ZXJpbmcoc3RydWN0dXJlLmdldCgpKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
cmVzdWx0LT52YWx1ZS5kaXNhYmxlQ2hlY2tBcnJheUhvaXN0aW5nKCk7CiAgICAgfQogCi0gICAg
dm9pZCBub3RpY2VTdHJ1Y3R1cmVDaGVja0FjY291bnRpbmdGb3JBcnJheU1vZGUoVmFyaWFibGVB
Y2Nlc3NEYXRhKiB2YXJpYWJsZSwgY29uc3QgU3RydWN0dXJlU2V0JiBzZXQpCisgICAgdm9pZCBu
b3RpY2VTdHJ1Y3R1cmVDaGVja0FjY291bnRpbmdGb3JBcnJheU1vZGUoVmFyaWFibGVBY2Nlc3NE
YXRhKiB2YXJpYWJsZSwgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBzZXQpCiAgICAgewogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2V0LnNpemUoKTsgaSsrKQotICAgICAgICAgICAg
bm90aWNlU3RydWN0dXJlQ2hlY2tBY2NvdW50aW5nRm9yQXJyYXlNb2RlKHZhcmlhYmxlLCBzZXRb
aV0pOworICAgICAgICAgICAgbm90aWNlU3RydWN0dXJlQ2hlY2tBY2NvdW50aW5nRm9yQXJyYXlN
b2RlKHZhcmlhYmxlLCBzZXQuYXQoaSkpOwogICAgIH0KIAogICAgIEhhc2hNYXA8VmFyaWFibGVB
Y2Nlc3NEYXRhKiwgQ2hlY2tEYXRhPiBtX21hcDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAyMTExMDcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA5LDcgKzIw
OSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5vZGUtPm9yaWdpbi5m
b3JFeGl0ICE9IHByZXZpb3VzTm9kZS0+b3JpZ2luLmZvckV4aXQpOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFu
b2RlLT5oYXNTdHJ1Y3R1cmUoKSB8fCAhIW5vZGUtPnN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAg
ICAgICBWQUxJREFURSgobm9kZSksICFub2RlLT5oYXNTdHJ1Y3R1cmUoKSB8fCAhIW5vZGUtPnN0
cnVjdHVyZSgpLmdldCgpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFub2Rl
LT5oYXNDZWxsT3BlcmFuZCgpIHx8IG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkuaXNDZWxs
KCkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIW5vZGUtPmhhc0NlbGxPcGVy
YW5kKCkgfHwgISFub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpKTsKICAgICAgICAgICAgICAg
ICAKQEAgLTI4NSw3ICsyODUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6
ZU5ld09iamVjdDoKLSAgICAgICAgICAgICAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA6IG5vZGUtPnN0cnVjdHVyZVNldCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoUmVn
aXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgOiBub2RlLT5zdHJ1Y3R1cmVTZXQoKSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBvbmx5IHN1cHBvcnRzIHN0cnVjdHVyZXMgdGhh
dCBhcmUgSlNGaW5hbE9iamVjdCBvciBKU0FycmF5LgogICAgICAgICAgICAgICAgICAgICAgICAg
VkFMSURBVEUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vZGUpLApAQCAtNTY1LDcg
KzU2NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIC8vIENQUyBkaXNhbGxvd3Mg
aW50MzIgYW5kIGRvdWJsZSBhcnJheXMuIFRob3NlIHJlcXVpcmUgd2VpcmQgdHlwZSBjaGVja3Mg
YW5kCiAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnZlcnNpb25zLiBUaGV5IGFyZSBub3QgbmVl
ZGVkIGluIHRoZSBERkcgcmlnaHQgbm93LiBXZSBzaG91bGQgYWRkIHN1cHBvcnQKICAgICAgICAg
ICAgICAgICAgICAgLy8gZm9yIHRoZXNlIGlmIHRoZSBERkcgZXZlciBuZWVkcyBpdC4KLSAgICAg
ICAgICAgICAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6IG5vZGUtPnN0cnVjdHVy
ZVNldCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBz
dHJ1Y3R1cmUgOiBub2RlLT5zdHJ1Y3R1cmVTZXQoKSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgVkFMSURBVEUoKG5vZGUpLCAhaGFzSW50MzIoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkp
OwogICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhaGFzRG91YmxlKHN0
cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKTsKICAgICAgICAgICAgICAgICAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNp
b24gMjExMTA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsNyArMTk2LDcgQEAgcHVibGljOgogICAgICAgICBt
X3Byb2MuYWRkRmFzdENvbnN0YW50KG1fdGFnVHlwZU51bWJlci0+a2V5KCkpOwogICAgICAgICBt
X3Byb2MuYWRkRmFzdENvbnN0YW50KG1fdGFnTWFzay0+a2V5KCkpOwogICAgICAgICAKLSAgICAg
ICAgbV9vdXQuc3RvcmVQdHIobV9vdXQuY29uc3RJbnRQdHIoY29kZUJsb2NrKCkpLCBhZGRyZXNz
Rm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaykpOworICAgICAgICBtX291dC5zdG9yZVB0cih3
ZWFrUG9pbnRlcihjb2RlQmxvY2soKSksIGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJs
b2NrKSk7CiAKICAgICAgICAgLy8gU3RhY2sgT3ZlcmZsb3cgQ2hlY2suCiAgICAgICAgIHVuc2ln
bmVkIGV4aXRGcmFtZVNpemUgPSBtX2dyYXBoLnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZvckV4aXQo
KSAqIHNpemVvZihSZWdpc3Rlcik7CkBAIC0xNTYwLDcgKzE1NjAsNyBAQCBwcml2YXRlOgogICAg
ICAgICBtX291dC5icmFuY2goaXNPYmplY3QodmFsdWUpLCB1c3VhbGx5KGNvbnRpbnVhdGlvbiks
IHJhcmVseShzbG93Q2FzZSkpOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBj
b250aW51YXRpb24pOwotICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQu
YW5jaG9yKHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk9iamVjdENvbnN0
cnVjdG9yKSwgbV9jYWxsRnJhbWUsIG1fb3V0LmNvbnN0SW50UHRyKGdsb2JhbE9iamVjdCksIHZh
bHVlKSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Io
dm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uT2JqZWN0Q29uc3RydWN0b3Ip
LCBtX2NhbGxGcmFtZSwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgdmFsdWUpKTsKICAgICAg
ICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNv
bnRpbnVhdGlvbiwgbGFzdE5leHQpOwpAQCAtMjY2NCw3ICsyNjY0LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIGNoZWNrU3RydWN0dXJlKAogICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQzMihj
ZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCksIGpzVmFsdWVWYWx1ZShjZWxsKSwKICAg
ICAgICAgICAgICAgICBleGl0S2luZCwgbV9ub2RlLT5zdHJ1Y3R1cmVTZXQoKSwKLSAgICAgICAg
ICAgICAgICBbJl0gKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7CisgICAgICAgICAgICAgICAgWyZd
IChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgewogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gd2Vha1N0cnVjdHVyZUlEKHN0cnVjdHVyZSk7CiAgICAgICAgICAgICAgICAgfSk7CiAg
ICAgICAgICAgICByZXR1cm47CkBAIC0yNjg0LDcgKzI2ODQsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgY2hlY2tTdHJ1Y3R1cmUoCiAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyKHZhbHVl
LCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCksIGpzVmFsdWVWYWx1ZSh2YWx1ZSksCiAgICAg
ICAgICAgICAgICAgZXhpdEtpbmQsIG1fbm9kZS0+c3RydWN0dXJlU2V0KCksCi0gICAgICAgICAg
ICAgICAgWyZdIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgeworICAgICAgICAgICAgICAgIFsmXSAo
UmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIHsKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHdlYWtTdHJ1Y3R1cmVJRChzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgICAgIH0pOwogICAg
ICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwpAQCAtMjc5OCw4ICsyNzk4LDggQEAg
cHJpdmF0ZToKICAgICB7CiAgICAgICAgIG1fZnRsU3RhdGUuaml0Q29kZS0+Y29tbW9uLm5vdGlm
eUNvbXBpbGluZ1N0cnVjdHVyZVRyYW5zaXRpb24obV9ncmFwaC5tX3BsYW4sIGNvZGVCbG9jaygp
LCBtX25vZGUpOwogICAgICAgICAKLSAgICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBt
X25vZGUtPnRyYW5zaXRpb24oKS0+cHJldmlvdXM7Ci0gICAgICAgIFN0cnVjdHVyZSogbmV3U3Ry
dWN0dXJlID0gbV9ub2RlLT50cmFuc2l0aW9uKCktPm5leHQ7CisgICAgICAgIFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgb2xkU3RydWN0dXJlID0gbV9ub2RlLT50cmFuc2l0aW9uKCktPnByZXZpb3VzOwor
ICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG5ld1N0cnVjdHVyZSA9IG1fbm9kZS0+dHJhbnNp
dGlvbigpLT5uZXh0OwogICAgICAgICBBU1NFUlRfVU5VU0VEKG9sZFN0cnVjdHVyZSwgb2xkU3Ry
dWN0dXJlLT5pbmRleGluZ1R5cGUoKSA9PSBuZXdTdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKTsK
ICAgICAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3Mo
KSA9PSBuZXdTdHJ1Y3R1cmUtPnR5cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdzKCkpOwogICAgICAg
ICBBU1NFUlQob2xkU3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBuZXdTdHJ1Y3R1cmUt
PnR5cGVJbmZvKCkudHlwZSgpKTsKQEAgLTM4OTksMTAgKzM4OTksMTAgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIC8vIHdpdGggb25lIG9mIHRoZSBmb2xsb3dpbmcgaW5kZXhpbmcgc2hhcGVzOiBJ
bnQzMiwgQ29udGlndW91cywgRG91YmxlLgogICAgICAgICAgICAgTFZhbHVlIHN0cnVjdHVyZSA9
IG1fb3V0LnNlbGVjdCgKICAgICAgICAgICAgICAgICBtX291dC5lcXVhbChpbmRleGluZ1R5cGUs
IG1fb3V0LmNvbnN0SW50MzIoQXJyYXlXaXRoSW50MzIpKSwKLSAgICAgICAgICAgICAgICBtX291
dC5jb25zdEludFB0cihnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBl
RHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhJbnQzMikpLAorICAgICAgICAgICAgICAgIHdlYWtT
dHJ1Y3R1cmUobV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3Ry
dWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhJbnQzMikpKSwK
ICAgICAgICAgICAgICAgICBtX291dC5zZWxlY3QobV9vdXQuZXF1YWwoaW5kZXhpbmdUeXBlLCBt
X291dC5jb25zdEludDMyKEFycmF5V2l0aENvbnRpZ3VvdXMpKSwKLSAgICAgICAgICAgICAgICAg
ICAgbV9vdXQuY29uc3RJbnRQdHIoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4
aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91cykpLAotICAgICAgICAg
ICAgICAgICAgICBtX291dC5jb25zdEludFB0cihnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJl
Rm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhEb3VibGUpKSkpOworICAg
ICAgICAgICAgICAgICAgICB3ZWFrU3RydWN0dXJlKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUo
Z2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRp
b24oQXJyYXlXaXRoQ29udGlndW91cykpKSwKKyAgICAgICAgICAgICAgICAgICAgd2Vha1N0cnVj
dHVyZShtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1
cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aERvdWJsZSkpKSkpOwog
ICAgICAgICAgICAgYXJyYXlSZXN1bHQgPSBhbGxvY2F0ZUpTQXJyYXkocmVzdWx0TGVuZ3RoLCBz
dHJ1Y3R1cmUsIGluZGV4aW5nVHlwZSwgZmFsc2UsIGZhbHNlKTsKICAgICAgICAgfQogCkBAIC0z
OTk0LDEzICszOTk0LDEzIEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBMVmFsdWUgc2NvcGUg
PSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBTeW1ib2xUYWJsZSogdGFibGUg
PSBtX25vZGUtPmNhc3RPcGVyYW5kPFN5bWJvbFRhYmxlKj4oKTsKLSAgICAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1h
bnRpYyktPmFjdGl2YXRpb25TdHJ1Y3R1cmUoKTsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YWN0aXZhdGlvblN0cnVjdHVyZSgpKTsK
ICAgICAgICAgSlNWYWx1ZSBpbml0aWFsaXphdGlvblZhbHVlID0gbV9ub2RlLT5pbml0aWFsaXph
dGlvblZhbHVlRm9yQWN0aXZhdGlvbigpOwogICAgICAgICBBU1NFUlQoaW5pdGlhbGl6YXRpb25W
YWx1ZS5pc1VuZGVmaW5lZCgpIHx8IGluaXRpYWxpemF0aW9uVmFsdWUgPT0ganNURFpWYWx1ZSgp
KTsKICAgICAgICAgaWYgKHRhYmxlLT5zaW5nbGV0b25TY29wZSgpLT5pc1N0aWxsVmFsaWQoKSkg
ewogICAgICAgICAgICAgTFZhbHVlIGNhbGxSZXN1bHQgPSB2bUNhbGwoCiAgICAgICAgICAgICAg
ICAgSW50NjQsCi0gICAgICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0
ZUFjdGl2YXRpb25EaXJlY3QpLCBtX2NhbGxGcmFtZSwgd2Vha1BvaW50ZXIoc3RydWN0dXJlKSwK
KyAgICAgICAgICAgICAgICBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlv
bkRpcmVjdCksIG1fY2FsbEZyYW1lLCB3ZWFrU3RydWN0dXJlKHN0cnVjdHVyZSksCiAgICAgICAg
ICAgICAgICAgc2NvcGUsIHdlYWtQb2ludGVyKHRhYmxlKSwgbV9vdXQuY29uc3RJbnQ2NChKU1Zh
bHVlOjplbmNvZGUoaW5pdGlhbGl6YXRpb25WYWx1ZSkpKTsKICAgICAgICAgICAgIHNldEpTVmFs
dWUoY2FsbFJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC00MDM1LDcgKzQwMzUsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgWz1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2Nh
dGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gewogICAgICAgICAgICAg
ICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICAgICAg
b3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlvbkRpcmVjdCwgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigp
LAotICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0
dXJlKSwgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpLAorICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlLmdldCgpKSwgbG9jYXRpb25zWzFdLmRp
cmVjdEdQUigpLAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIodGFibGUpLAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02
NChKU1ZhbHVlOjplbmNvZGUoaW5pdGlhbGl6YXRpb25WYWx1ZSkpKTsKICAgICAgICAgICAgIH0s
CkBAIC00MDY1LDEwICs0MDY1LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0KKyAgICAg
ICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0
dXJlKAogICAgICAgICAgICAgaXNHZW5lcmF0b3JGdW5jdGlvbiA/IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1
cmUoKSA6CiAgICAgICAgICAgICBpc0FzeW5jRnVuY3Rpb24gPyBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKSA6
Ci0gICAgICAgICAgICBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1h
bnRpYyktPmZ1bmN0aW9uU3RydWN0dXJlKCk7CisgICAgICAgICAgICBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmZ1bmN0aW9uU3RydWN0dXJlKCkpOwog
ICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd1BhdGggPSBtX291dC5uZXdCbG9jaygp
OwogICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwpA
QCAtNDEyOCw4ICs0MTI4LDggQEAgcHJpdmF0ZToKICAgICAgICAgLy8gdGhlbSBiZSBleHBsaWNp
dCBhcmd1bWVudHMgdG8gdGhpcyBub2RlLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyMjA3CiAgICAgICAgIAotICAgICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9Ci0gICAgICAgICAgICBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUt
Pm9yaWdpbi5zZW1hbnRpYyktPmRpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZSgpOworICAgICAgICBS
ZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9CisgICAgICAgICAgICBtX2dyYXBoLnJlZ2lz
dGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFu
dGljKS0+ZGlyZWN0QXJndW1lbnRzU3RydWN0dXJlKCkpOwogICAgICAgICAKICAgICAgICAgdW5z
aWduZWQgbWluQ2FwYWNpdHkgPSBtX2dyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljKS0+bnVtUGFyYW1ldGVycygpIC0gMTsKICAgICAgICAgCkBAIC00MTcx
LDcgKzQxNzEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgWz1dIChjb25zdCBWZWN0b3I8TG9j
YXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gewog
ICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcigKICAgICAgICAg
ICAgICAgICAgICAgb3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzLCBsb2NhdGlvbnNbMF0u
ZGlyZWN0R1BSKCksCi0gICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihzdHJ1Y3R1cmUpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksCisgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUuZ2V0KCkpLCBsb2Nh
dGlvbnNbMV0uZGlyZWN0R1BSKCksCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKG1pbkNhcGFjaXR5KSk7CiAgICAgICAgICAgICB9LCBsZW5ndGgudmFsdWUp
OwogICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGNhbGxS
ZXN1bHQpOwpAQCAtNDI1OSw3ICs0MjU5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIExWYWx1
ZSBhcnJheUxlbmd0aCA9IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAg
TEJhc2ljQmxvY2sgbG9vcFN0YXJ0ID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IGdsb2JhbE9iamVjdC0+cmVzdFBhcmFtZXRlclN0cnVjdHVyZSgpOworICAgICAgICAgICAgUmVn
aXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGds
b2JhbE9iamVjdC0+cmVzdFBhcmFtZXRlclN0cnVjdHVyZSgpKTsKICAgICAgICAgICAgIEFycmF5
VmFsdWVzIGFycmF5VmFsdWVzID0gYWxsb2NhdGVVbmluaXRpYWxpemVkQ29udGlndW91c0pTQXJy
YXkoYXJyYXlMZW5ndGgsIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBMVmFsdWUgYXJyYXkgPSBh
cnJheVZhbHVlcy5hcnJheTsKICAgICAgICAgICAgIExWYWx1ZSBidXR0ZXJmbHkgPSBhcnJheVZh
bHVlcy5idXR0ZXJmbHk7CkBAIC00MzI3LDggKzQzMjcsOCBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgc3BlY3VsYXRlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCBvcGVyYW5kSW5kZXgpKTsK
ICAgICAgICAgCiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5n
VHlwZUR1cmluZ0FsbG9jYXRpb24oCi0gICAgICAgICAgICBtX25vZGUtPmluZGV4aW5nVHlwZSgp
KTsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lz
dGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVE
dXJpbmdBbGxvY2F0aW9uKAorICAgICAgICAgICAgbV9ub2RlLT5pbmRleGluZ1R5cGUoKSkpOwog
CiAgICAgICAgIGlmICghZ2xvYmFsT2JqZWN0LT5pc0hhdmluZ0FCYWRUaW1lKCkgJiYgIWhhc0Fu
eUFycmF5U3RvcmFnZShtX25vZGUtPmluZGV4aW5nVHlwZSgpKSkgewogICAgICAgICAgICAgdW5z
aWduZWQgbnVtRWxlbWVudHMgPSBtX25vZGUtPm51bUNoaWxkcmVuKCk7CkBAIC00MzczLDcgKzQz
NzMsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIW1fbm9kZS0+bnVtQ2hpbGRyZW4oKSkgewog
ICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoCiAgICAgICAgICAgICAgICAgSW50NjQsIG1f
b3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdFbXB0eUFycmF5KSwgbV9jYWxsRnJhbWUsCi0gICAg
ICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoc3RydWN0dXJlKSkpOworICAgICAgICAgICAg
ICAgIHdlYWtTdHJ1Y3R1cmUoc3RydWN0dXJlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgICAgIApAQCAtNDM5NCw3ICs0Mzk0LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
CiAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoCiAgICAgICAgICAgICBJbnQ2NCwgbV9v
dXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5KSwgbV9jYWxsRnJhbWUsCi0gICAgICAgICAg
ICBtX291dC5jb25zdEludFB0cihzdHJ1Y3R1cmUpLCBtX291dC5jb25zdEludFB0cihidWZmZXIp
LAorICAgICAgICAgICAgd2Vha1N0cnVjdHVyZShzdHJ1Y3R1cmUpLCBtX291dC5jb25zdEludFB0
cihidWZmZXIpLAogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIobV9ub2RlLT5udW1DaGls
ZHJlbigpKSk7CiAgICAgICAgIAogICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5pbnRQdHJa
ZXJvLCBtX291dC5hYnNvbHV0ZShzY3JhdGNoQnVmZmVyLT5hY3RpdmVMZW5ndGhQdHIoKSkpOwpA
QCAtNDQzNCw3ICs0NDM0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5vcmlnaW5hbEFycmF5U3RydWN0
dXJlRm9ySW5kZXhpbmdUeXBlKEFycmF5V2l0aENvbnRpZ3VvdXMpOworICAgICAgICAgICAgUmVn
aXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+b3JpZ2luYWxB
cnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZShBcnJheVdpdGhDb250aWd1b3VzKSk7CiAgICAg
ICAgICAgICBBcnJheVZhbHVlcyBhcnJheVZhbHVlcyA9IGFsbG9jYXRlVW5pbml0aWFsaXplZENv
bnRpZ3VvdXNKU0FycmF5KGxlbmd0aCwgc3RydWN0dXJlKTsKICAgICAgICAgICAgIExWYWx1ZSBy
ZXN1bHQgPSBhcnJheVZhbHVlcy5hcnJheTsKICAgICAgICAgICAgIExWYWx1ZSBzdG9yYWdlID0g
YXJyYXlWYWx1ZXMuYnV0dGVyZmx5OwpAQCAtNDY1Niw4ICs0NjU2LDggQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGNvbXBpbGVOZXdBcnJheUJ1ZmZlcigpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmln
aW4uc2VtYW50aWMpOwotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVj
dC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKAotICAgICAg
ICAgICAgbV9ub2RlLT5pbmRleGluZ1R5cGUoKSk7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFy
cmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbigKKyAgICAgICAgICAg
IG1fbm9kZS0+aW5kZXhpbmdUeXBlKCkpKTsKICAgICAgICAgCiAgICAgICAgIGlmICghZ2xvYmFs
T2JqZWN0LT5pc0hhdmluZ0FCYWRUaW1lKCkgJiYgIWhhc0FueUFycmF5U3RvcmFnZShtX25vZGUt
PmluZGV4aW5nVHlwZSgpKSkgewogICAgICAgICAgICAgdW5zaWduZWQgbnVtRWxlbWVudHMgPSBt
X25vZGUtPm51bUNvbnN0YW50cygpOwpAQCAtNDY4Niw3ICs0Njg2LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgCiAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKAogICAgICAgICAgICAgSW50NjQsIG1f
b3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciksIG1fY2FsbEZyYW1lLAotICAg
ICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoc3RydWN0dXJlKSwgbV9vdXQuY29uc3RJbnRQdHIo
bV9ub2RlLT5zdGFydENvbnN0YW50KCkpLAorICAgICAgICAgICAgd2Vha1N0cnVjdHVyZShzdHJ1
Y3R1cmUpLCBtX291dC5jb25zdEludFB0cihtX25vZGUtPnN0YXJ0Q29uc3RhbnQoKSksCiAgICAg
ICAgICAgICBtX291dC5jb25zdEludFB0cihtX25vZGUtPm51bUNvbnN0YW50cygpKSkpOwogICAg
IH0KIApAQCAtNDY5NSwyMyArNDY5NSwyMiBAQCBwcml2YXRlOgogICAgICAgICBMVmFsdWUgcHVi
bGljTGVuZ3RoID0gbG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIAogICAgICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0
aW9uKAotICAgICAgICAgICAgbV9ub2RlLT5pbmRleGluZ1R5cGUoKSk7CisgICAgICAgIFJlZ2lz
dGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9i
YWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbigK
KyAgICAgICAgICAgIG1fbm9kZS0+aW5kZXhpbmdUeXBlKCkpKTsKICAgICAgICAgCiAgICAgICAg
IGlmICghZ2xvYmFsT2JqZWN0LT5pc0hhdmluZ0FCYWRUaW1lKCkgJiYgIWhhc0FueUFycmF5U3Rv
cmFnZShtX25vZGUtPmluZGV4aW5nVHlwZSgpKSkgewogICAgICAgICAgICAgSW5kZXhpbmdUeXBl
IGluZGV4aW5nVHlwZSA9IG1fbm9kZS0+aW5kZXhpbmdUeXBlKCk7CiAgICAgICAgICAgICBzZXRK
U1ZhbHVlKAogICAgICAgICAgICAgICAgIGFsbG9jYXRlSlNBcnJheSgKLSAgICAgICAgICAgICAg
ICAgICAgcHVibGljTGVuZ3RoLCBtX291dC5jb25zdEludFB0cihnbG9iYWxPYmplY3QtPmFycmF5
U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpKSwg
bV9vdXQuY29uc3RJbnQzMihpbmRleGluZ1R5cGUpKS5hcnJheSk7CisgICAgICAgICAgICAgICAg
ICAgIHB1YmxpY0xlbmd0aCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVy
ZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oaW5kZXhpbmdUeXBlKSksIG1fb3V0LmNv
bnN0SW50MzIoaW5kZXhpbmdUeXBlKSkuYXJyYXkpOwogICAgICAgICAgICAgbXV0YXRvckZlbmNl
KCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIExW
YWx1ZSBzdHJ1Y3R1cmVWYWx1ZSA9IG1fb3V0LnNlbGVjdCgKICAgICAgICAgICAgIG1fb3V0LmFi
b3ZlT3JFcXVhbChwdWJsaWNMZW5ndGgsIG1fb3V0LmNvbnN0SW50MzIoTUlOX0FSUkFZX1NUT1JB
R0VfQ09OU1RSVUNUSU9OX0xFTkdUSCkpLAotICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIo
Ci0gICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5n
VHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSksCi0gICAgICAgICAg
ICBtX291dC5jb25zdEludFB0cihzdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgIHdlYWtTdHJ1Y3R1
cmUobV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJl
Rm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2UpKSks
CisgICAgICAgICAgICB3ZWFrU3RydWN0dXJlKHN0cnVjdHVyZSkpOwogICAgICAgICBzZXRKU1Zh
bHVlKHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNp
emUpLCBtX2NhbGxGcmFtZSwgc3RydWN0dXJlVmFsdWUsIHB1YmxpY0xlbmd0aCwgbV9vdXQuaW50
UHRyWmVybykpOwogICAgIH0KIApAQCAtNDcyMiw3ICs0NzIxLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgCiAgICAgICAgIHN3aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICAg
ICAgY2FzZSBJbnQzMlVzZTogewotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBn
bG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZSk7CisgICAg
ICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJT
dHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5
cGUpKTsKIAogICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBsb3dJbnQzMihtX25vZGUtPmNoaWxk
MSgpKTsKIApAQCAtNDc4MSw3ICs0NzgwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBb
PV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93
UGF0aDo6R2VuZXJhdG9yPiB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5
Q2FsbEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld1R5cGVk
QXJyYXlXaXRoU2l6ZUZvclR5cGUodHlwZSksIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1
cmUpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksCisgICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlLmdldCgpKSwgbG9jYXRpb25zWzFd
LmRpcmVjdEdQUigpLAogICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzJdLmRpcmVj
dEdQUigpKTsKICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIHNpemUsIHN0b3Jh
Z2VWYWx1ZSk7CkBAIC00ODEzLDcgKzQ4MTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGls
ZUFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKCkKICAgICB7CiAgICAgICAgIExWYWx1ZSBvYmplY3Qg
PSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBzZXRTdG9yYWdlKGFsbG9jYXRl
UHJvcGVydHlTdG9yYWdlKG9iamVjdCwgbV9ub2RlLT50cmFuc2l0aW9uKCktPnByZXZpb3VzKSk7
CisgICAgICAgIHNldFN0b3JhZ2UoYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2Uob2JqZWN0LCBtX25v
ZGUtPnRyYW5zaXRpb24oKS0+cHJldmlvdXMuZ2V0KCkpKTsKICAgICB9CiAKICAgICB2b2lkIGNv
bXBpbGVSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKCkKQEAgLTQ4MjQsNyArNDgyMyw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIAogICAgICAgICBzZXRTdG9yYWdlKAogICAgICAgICAgICAgcmVhbGxv
Y2F0ZVByb3BlcnR5U3RvcmFnZSgKLSAgICAgICAgICAgICAgICBvYmplY3QsIG9sZFN0b3JhZ2Us
IHRyYW5zaXRpb24tPnByZXZpb3VzLCB0cmFuc2l0aW9uLT5uZXh0KSk7CisgICAgICAgICAgICAg
ICAgb2JqZWN0LCBvbGRTdG9yYWdlLCB0cmFuc2l0aW9uLT5wcmV2aW91cy5nZXQoKSwgdHJhbnNp
dGlvbi0+bmV4dC5nZXQoKSkpOwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVOdWtlU3Ry
dWN0dXJlQW5kU2V0QnV0dGVyZmx5KCkKQEAgLTUyODYsMTEgKzUyODUsMTEgQEAgcHJpdmF0ZToK
ICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKICAg
ICAgICAgCiAgICAgICAgIFZlY3RvcjxTd2l0Y2hDYXNlLCAyPiBjYXNlczsKLSAgICAgICAgU3Ry
dWN0dXJlU2V0IGJhc2VTZXQ7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgYmFzZVNl
dDsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS5jYXNlcy5zaXplKCk7IGktLTspIHsK
ICAgICAgICAgICAgIE11bHRpR2V0QnlPZmZzZXRDYXNlIGdldENhc2UgPSBkYXRhLmNhc2VzW2ld
OwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gZ2V0Q2FzZS5zZXQoKS5zaXplKCk7IGot
LTspIHsKLSAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdldENhc2Uuc2V0
KClbal07CisgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBn
ZXRDYXNlLnNldCgpW2pdOwogICAgICAgICAgICAgICAgIGJhc2VTZXQuYWRkKHN0cnVjdHVyZSk7
CiAgICAgICAgICAgICAgICAgY2FzZXMuYXBwZW5kKFN3aXRjaENhc2Uod2Vha1N0cnVjdHVyZUlE
KHN0cnVjdHVyZSksIGJsb2Nrc1tpXSwgV2VpZ2h0KDEpKSk7CiAgICAgICAgICAgICB9CkBAIC01
MzY4LDExICs1MzY3LDExIEBAIHByaXZhdGU6CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVh
dGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIAogICAgICAgICBWZWN0b3I8U3dpdGNo
Q2FzZSwgMj4gY2FzZXM7Ci0gICAgICAgIFN0cnVjdHVyZVNldCBiYXNlU2V0OworICAgICAgICBS
ZWdpc3RlcmVkU3RydWN0dXJlU2V0IGJhc2VTZXQ7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IGRhdGEudmFyaWFudHMuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICBQdXRCeUlkVmFyaWFu
dCB2YXJpYW50ID0gZGF0YS52YXJpYW50c1tpXTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aiA9IHZhcmlhbnQub2xkU3RydWN0dXJlKCkuc2l6ZSgpOyBqLS07KSB7Ci0gICAgICAgICAgICAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2YXJpYW50Lm9sZFN0cnVjdHVyZSgpW2pdOworICAg
ICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdp
c3RlclN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpW2pdKTsKICAgICAgICAgICAgICAg
ICBiYXNlU2V0LmFkZChzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgICAgIGNhc2VzLmFwcGVuZChT
d2l0Y2hDYXNlKHdlYWtTdHJ1Y3R1cmVJRChzdHJ1Y3R1cmUpLCBibG9ja3NbaV0sIFdlaWdodCgx
KSkpOwogICAgICAgICAgICAgfQpAQCAtNTQxMyw3ICs1NDEyLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBBU1NFUlQodmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCktPnR5
cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdzKCkgPT0gdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKS0+dHlw
ZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHZhcmlh
bnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLT50eXBlSW5mbygpLnR5cGUoKSA9PSB2YXJp
YW50Lm5ld1N0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSk7CiAgICAgICAgICAgICAgICAg
bV9vdXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICAgICAgd2Vha1N0cnVjdHVyZUlEKHZhcmlh
bnQubmV3U3RydWN0dXJlKCkpLCBiYXNlLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCk7Cisg
ICAgICAgICAgICAgICAgICAgIHdlYWtTdHJ1Y3R1cmVJRChtX2dyYXBoLnJlZ2lzdGVyU3RydWN0
dXJlKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpKSwgYmFzZSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0
dXJlSUQpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CkBAIC03NzQ2LDExICs3NzQ1LDExIEBAIHByaXZhdGU6CiAgICAg
ICAgIExWYWx1ZSBpbmRleCA9IG1fb3V0LmJpdEFuZChtYXNrLCB1bm1hc2tlZEluZGV4KTsKICAg
ICAgICAgTFZhbHVlIGhhc2hNYXBCdWNrZXQgPSBtX291dC5sb2FkNjQobV9vdXQuYmFzZUluZGV4
KG1faGVhcHMucHJvcGVydGllcy5hdEFueU51bWJlcigpLCBidWZmZXIsIG1fb3V0Lnplcm9FeHQo
aW5kZXgsIEludDY0KSwgU2NhbGVFaWdodCkpOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBidWNr
ZXRSZXN1bHQgPSBtX291dC5hbmNob3IoaGFzaE1hcEJ1Y2tldCk7Ci0gICAgICAgIG1fb3V0LmJy
YW5jaChtX291dC5lcXVhbChoYXNoTWFwQnVja2V0LCBtX291dC5jb25zdEludFB0cihIYXNoTWFw
SW1wbDxIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46OmVtcHR5VmFsdWUoKSkp
LAorICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwoaGFzaE1hcEJ1Y2tldCwgbV9vdXQu
Y29uc3RJbnRQdHIoYml0d2lzZV9jYXN0PGludHB0cl90PihIYXNoTWFwSW1wbDxIYXNoTWFwQnVj
a2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46OmVtcHR5VmFsdWUoKSkpKSwKICAgICAgICAgICAg
IHVuc3VyZShub3RQcmVzZW50SW5UYWJsZSksIHVuc3VyZShub3RFbXB0eVZhbHVlKSk7CiAKICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8obm90RW1wdHlWYWx1ZSwgbm90RGVsZXRlZFZhbHVlKTsKLSAg
ICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKGhhc2hNYXBCdWNrZXQsIG1fb3V0LmNvbnN0
SW50UHRyKEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+Pjo6
ZGVsZXRlZFZhbHVlKCkpKSwKKyAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKGhhc2hN
YXBCdWNrZXQsIG1fb3V0LmNvbnN0SW50UHRyKGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oSGFzaE1h
cEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT4+OjpkZWxldGVkVmFsdWUo
KSkpKSwKICAgICAgICAgICAgIHVuc3VyZShsb29wQXJvdW5kKSwgdW5zdXJlKG5vdERlbGV0ZWRW
YWx1ZSkpOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdERlbGV0ZWRWYWx1ZSwgbG9vcEFy
b3VuZCk7CkBAIC04MjIyLDcgKzgyMjEsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21waWxl
T3ZlcnJpZGVzSGFzSW5zdGFuY2UoKQogICAgIHsKLSAgICAgICAgSlNGdW5jdGlvbiogZGVmYXVs
dEhhc0luc3RhbmNlRnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG1fbm9kZS0+Y2VsbE9w
ZXJhbmQoKS0+dmFsdWUoKSk7CisgICAgICAgIEZyb3plblZhbHVlKiBkZWZhdWx0SGFzSW5zdGFu
Y2VGdW5jdGlvbiA9IG1fbm9kZS0+Y2VsbE9wZXJhbmQoKTsKKyAgICAgICAgQVNTRVJUKGRlZmF1
bHRIYXNJbnN0YW5jZUZ1bmN0aW9uLT5jZWxsKCktPmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8o
KSkpOwogCiAgICAgICAgIExWYWx1ZSBjb25zdHJ1Y3RvciA9IGxvd0NlbGwobV9ub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgIExWYWx1ZSBoYXNJbnN0YW5jZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5j
aGlsZDIoKSk7CkBAIC04MjMzLDcgKzgyMzMsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBVbmxp
a2UgaW4gdGhlIERGRywgd2UgZG9uJ3Qgd29ycnkgYWJvdXQgY2xlYW5pbmcgdGhpcyBjb2RlIHVw
IGZvciB0aGUgY2FzZSB3aGVyZSB3ZSBoYXZlIHByb3ZlbiB0aGUgaGFzSW5zdGFuY2VWYWx1ZSBp
cyBhIGNvbnN0YW50IGFzIEIzIHNob3VsZCBmaXggaXQgZm9yIHVzLgogCiAgICAgICAgIFZhbHVl
RnJvbUJsb2NrIG5vdERlZmF1bHRIYXNJbnN0YW5jZVJlc3VsdCA9IG1fb3V0LmFuY2hvcihtX291
dC5ib29sZWFuVHJ1ZSk7Ci0gICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5ub3RFcXVhbChoYXNJ
bnN0YW5jZSwgbV9vdXQuY29uc3RJbnRQdHIoZGVmYXVsdEhhc0luc3RhbmNlRnVuY3Rpb24pKSwg
dW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShkZWZhdWx0SGFzSW5zdGFuY2UpKTsKKyAgICAg
ICAgbV9vdXQuYnJhbmNoKG1fb3V0Lm5vdEVxdWFsKGhhc0luc3RhbmNlLCBmcm96ZW5Qb2ludGVy
KGRlZmF1bHRIYXNJbnN0YW5jZUZ1bmN0aW9uKSksIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1
cmUoZGVmYXVsdEhhc0luc3RhbmNlKSk7CiAKICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQg
PSBtX291dC5hcHBlbmRUbyhkZWZhdWx0SGFzSW5zdGFuY2UsIGNvbnRpbnVhdGlvbik7CiAgICAg
ICAgIFZhbHVlRnJvbUJsb2NrIGltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2VSZXN1bHQgPSBt
X291dC5hbmNob3IobV9vdXQudGVzdElzWmVybzMyKApAQCAtODU4MSw3ICs4NTgxLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgTFZhbHVlIHN0cnVjdHVyZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEo
KSk7CiAgICAgICAgIGNoZWNrU3RydWN0dXJlKAogICAgICAgICAgICAgc3RydWN0dXJlLCBub1Zh
bHVlKCksIEJhZENhY2hlLCBtX25vZGUtPnN0cnVjdHVyZVNldCgpLAotICAgICAgICAgICAgW3Ro
aXNdIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgeworICAgICAgICAgICAgW3RoaXNdIChSZWdpc3Rl
cmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgewogICAgICAgICAgICAgICAgIHJldHVybiB3ZWFrU3Ry
dWN0dXJlKHN0cnVjdHVyZSk7CiAgICAgICAgICAgICB9KTsKICAgICB9CkBAIC04NjA2LDcgKzg2
MDYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAotICAg
ICAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCA9IG1fbm9kZS0+c3RydWN0dXJlU2V0KCk7Cisg
ICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgc2V0ID0gbV9ub2RlLT5zdHJ1Y3R1cmVTZXQo
KTsKIAogICAgICAgICBWZWN0b3I8TEJhc2ljQmxvY2ssIDE+IGJsb2NrcyhzZXQuc2l6ZSgpKTsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gc2V0LnNpemUoKTsgaS0tOykKQEAgLTg2MTYsNyAr
ODYxNiw3IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBWZWN0b3I8U3dpdGNoQ2FzZSwg
MT4gY2FzZXMoc2V0LnNpemUoKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHNldC5zaXpl
KCk7IGktLTspCi0gICAgICAgICAgICBjYXNlc1tpXSA9IFN3aXRjaENhc2Uod2Vha1N0cnVjdHVy
ZShzZXRbaV0pLCBibG9ja3NbaV0sIFdlaWdodCgxKSk7CisgICAgICAgICAgICBjYXNlc1tpXSA9
IFN3aXRjaENhc2Uod2Vha1N0cnVjdHVyZShzZXQuYXQoaSkpLCBibG9ja3NbaV0sIFdlaWdodCgx
KSk7CiAgICAgICAgIG1fb3V0LnN3aXRjaEluc3RydWN0aW9uKAogICAgICAgICAgICAgbG93Q2Vs
bChtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCkpLCBjYXNlcywgZHVtbXlEZWZhdWx0LCBX
ZWlnaHQoMCkpOwogICAgICAgICAKQEAgLTg2MjcsNyArODYyNyw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IHNldC5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIG1f
b3V0LmFwcGVuZFRvKGJsb2Nrc1tpXSwgaSArIDEgPCBzZXQuc2l6ZSgpID8gYmxvY2tzW2kgKyAx
XSA6IGR1bW15RGVmYXVsdCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gc2V0W2ldOworICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1
Y3R1cmUgPSBzZXQuYXQoaSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIExWYWx1ZSBvYmpl
Y3Q7CiAgICAgICAgICAgICBMVmFsdWUgYnV0dGVyZmx5OwpAQCAtODcwOSw3ICs4NzA5LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIFs9XSAoY29uc3QgVmVjdG9yPExvY2F0
aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3Io
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld09iamVjdFdpdGhC
dXR0ZXJmbHlXaXRoSW5kZXhpbmdIZWFkZXJBbmRWZWN0b3JMZW5ndGgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KHN0cnVjdHVyZS5nZXQoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0
aW9uc1sxXS5kaXJlY3RHUFIoKSwgbG9jYXRpb25zWzJdLmRpcmVjdEdQUigpKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3JMZW5ndGgs
IGJ1dHRlcmZseVZhbHVlKTsKQEAgLTg3MTgsNyArODcxOCw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgICAgICAgICBbPV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykg
LT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5LCBsb2NhdGlv
bnNbMF0uZGlyZWN0R1BSKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BS
KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoc3RydWN0dXJlLmdldCgpKSwgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICBidXR0ZXJm
bHlWYWx1ZSk7CiAgICAgICAgICAgICAgICAgfQpAQCAtODg5MSw3ICs4ODkxLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgTFZhbHVlIHNjb3BlID0gbG93Q2VsbChtX2dyYXBoLnZhckFyZ0NoaWxkKG1f
bm9kZSwgMSkpOwogICAgICAgICBTeW1ib2xUYWJsZSogdGFibGUgPSBtX25vZGUtPmNhc3RPcGVy
YW5kPFN5bWJvbFRhYmxlKj4oKTsKICAgICAgICAgQVNTRVJUKHRhYmxlID09IG1fZ3JhcGgudmFy
QXJnQ2hpbGQobV9ub2RlLCAwKS0+Y2FzdENvbnN0YW50PFN5bWJvbFRhYmxlKj4oKSk7Ci0gICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLT5hY3RpdmF0aW9uU3RydWN0dXJlKCk7CisgICAgICAgIFJlZ2lz
dGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFjdGl2YXRpb25T
dHJ1Y3R1cmUoKSk7CiAKICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd1BhdGggPSBtX291dC5uZXdC
bG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9j
aygpOwpAQCAtODkxOCw3ICs4OTE4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFs9XSAoY29u
c3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpH
ZW5lcmF0b3I+IHsKICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0
b3IoCiAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb25EaXJlY3Qs
IGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSwK
KyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVy
ZS5nZXQoKSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSwKICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhYmxlKSwKICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
KSk7CiAgICAgICAgICAgICB9LCBzY29wZSk7CkBAIC05MDQzLDExICs5MDQzLDEyIEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGNvbXBpbGVOZXdSZWdleHAoKQogICAgIHsKLSAgICAgICAgUmVnRXhw
KiByZWdleHAgPSBtX25vZGUtPmNhc3RPcGVyYW5kPFJlZ0V4cCo+KCk7CisgICAgICAgIEZyb3pl
blZhbHVlKiByZWdleHAgPSBtX25vZGUtPmNlbGxPcGVyYW5kKCk7CisgICAgICAgIEFTU0VSVChy
ZWdleHAtPmNlbGwoKS0+aW5oZXJpdHMoUmVnRXhwOjppbmZvKCkpKTsKICAgICAgICAgTFZhbHVl
IHJlc3VsdCA9IHZtQ2FsbCgKICAgICAgICAgICAgIHBvaW50ZXJUeXBlKCksCiAgICAgICAgICAg
ICBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3UmVnZXhwKSwgbV9jYWxsRnJhbWUsCi0gICAg
ICAgICAgICBtX291dC5jb25zdEludFB0cihyZWdleHApKTsKKyAgICAgICAgICAgIGZyb3plblBv
aW50ZXIocmVnZXhwKSk7CiAgICAgICAgIAogICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAg
ICAgfQpAQCAtOTE0MCwxMCArOTE0MSwxMCBAQCBwcml2YXRlOgogICAgICAgICBDYWxsU2l0ZUlu
ZGV4IGNhbGxTaXRlSW5kZXggPSBtX2Z0bFN0YXRlLmppdENvZGUtPmNvbW1vbi5hZGRDb2RlT3Jp
Z2luKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LnN0
b3JlUHRyKG1fY2FsbEZyYW1lLCBwYWNrZXQsIG1faGVhcHMuU2hhZG93Q2hpY2tlbl9QYWNrZXRf
ZnJhbWUpOwotICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5jb25zdEludFB0cihTaGFkb3dD
aGlja2VuOjpQYWNrZXQ6OnRhaWxNYXJrZXIoKSksIHBhY2tldCwgbV9oZWFwcy5TaGFkb3dDaGlj
a2VuX1BhY2tldF9jYWxsZWUpOworICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5jb25zdElu
dFB0cihiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KFNoYWRvd0NoaWNrZW46OlBhY2tldDo6dGFpbE1h
cmtlcigpKSksIHBhY2tldCwgbV9oZWFwcy5TaGFkb3dDaGlja2VuX1BhY2tldF9jYWxsZWUpOwog
ICAgICAgICBtX291dC5zdG9yZTY0KHRoaXNWYWx1ZSwgcGFja2V0LCBtX2hlYXBzLlNoYWRvd0No
aWNrZW5fUGFja2V0X3RoaXNWYWx1ZSk7CiAgICAgICAgIG1fb3V0LnN0b3JlUHRyKHNjb3BlLCBw
YWNrZXQsIG1faGVhcHMuU2hhZG93Q2hpY2tlbl9QYWNrZXRfc2NvcGUpOwotICAgICAgICBtX291
dC5zdG9yZVB0cihtX291dC5jb25zdEludFB0cihjb2RlQmxvY2soKSksIHBhY2tldCwgbV9oZWFw
cy5TaGFkb3dDaGlja2VuX1BhY2tldF9jb2RlQmxvY2spOworICAgICAgICBtX291dC5zdG9yZVB0
cih3ZWFrUG9pbnRlcihjb2RlQmxvY2soKSksIHBhY2tldCwgbV9oZWFwcy5TaGFkb3dDaGlja2Vu
X1BhY2tldF9jb2RlQmxvY2spOwogICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50
MzIoY2FsbFNpdGVJbmRleC5iaXRzKCkpLCBwYWNrZXQsIG1faGVhcHMuU2hhZG93Q2hpY2tlbl9Q
YWNrZXRfY2FsbFNpdGVJbmRleCk7CiAgICAgfQogCkBAIC05MjM0LDcgKzkyMzUsNyBAQCBwcml2
YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiAgICAgdm9pZCBjaGVja1N0cnVj
dHVyZSgKICAgICAgICAgTFZhbHVlIHN0cnVjdHVyZURpc2NyaW1pbmFudCwgY29uc3QgRm9ybWF0
dGVkVmFsdWUmIGZvcm1hdHRlZFZhbHVlLCBFeGl0S2luZCBleGl0S2luZCwKLSAgICAgICAgY29u
c3QgU3RydWN0dXJlU2V0JiBzZXQsIGNvbnN0IEZ1bmN0b3ImIHdlYWtTdHJ1Y3R1cmVEaXNjcmlt
aW5hbnQpCisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgc2V0LCBjb25zdCBGdW5jdG9y
JiB3ZWFrU3RydWN0dXJlRGlzY3JpbWluYW50KQogICAgIHsKICAgICAgICAgaWYgKHNldC5pc0Vt
cHR5KCkpIHsKICAgICAgICAgICAgIHRlcm1pbmF0ZShleGl0S2luZCk7CkBAIC05MzY5LDE2ICs5
MzcwLDE4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzcGVjdWxhdGUoQmFkVHlwZSwganNWYWx1
ZVZhbHVlKHZhbHVlKSwgZWRnZS5ub2RlKCksIGlzTm90U3ltYm9sKHZhbHVlLCBwcm92ZW5UeXBl
KGVkZ2UpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgY2FzZSBJbmZlcnJlZFR5
cGU6Ok9iamVjdFdpdGhTdHJ1Y3R1cmU6CisgICAgICAgIGNhc2UgSW5mZXJyZWRUeXBlOjpPYmpl
Y3RXaXRoU3RydWN0dXJlOiB7CisgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVj
dHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodHlwZS5zdHJ1Y3R1cmUoKSk7CiAgICAg
ICAgICAgICBzcGVjdWxhdGUoQmFkVHlwZSwganNWYWx1ZVZhbHVlKHZhbHVlKSwgZWRnZS5ub2Rl
KCksIGlzTm90Q2VsbCh2YWx1ZSwgcHJvdmVuVHlwZShlZGdlKSkpOwotICAgICAgICAgICAgaWYg
KCFhYnN0cmFjdFZhbHVlKGVkZ2UpLm1fc3RydWN0dXJlLmlzU3Vic2V0T2YoU3RydWN0dXJlU2V0
KHR5cGUuc3RydWN0dXJlKCkpKSkgeworICAgICAgICAgICAgaWYgKCFhYnN0cmFjdFZhbHVlKGVk
Z2UpLm1fc3RydWN0dXJlLmlzU3Vic2V0T2YoUmVnaXN0ZXJlZFN0cnVjdHVyZVNldChzdHJ1Y3R1
cmUpKSkgewogICAgICAgICAgICAgICAgIHNwZWN1bGF0ZSgKICAgICAgICAgICAgICAgICAgICAg
QmFkVHlwZSwganNWYWx1ZVZhbHVlKHZhbHVlKSwgZWRnZS5ub2RlKCksCiAgICAgICAgICAgICAg
ICAgICAgIG1fb3V0Lm5vdEVxdWFsKAogICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9h
ZDMyKHZhbHVlLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICB3ZWFrU3RydWN0dXJlSUQodHlwZS5zdHJ1Y3R1cmUoKSkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHdlYWtTdHJ1Y3R1cmVJRChzdHJ1Y3R1cmUpKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAogICAgICAgICBjYXNlIEluZmVycmVk
VHlwZTo6T2JqZWN0V2l0aFN0cnVjdHVyZU9yT3RoZXI6IHsKICAgICAgICAgICAgIExCYXNpY0Js
b2NrIGNlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKQEAgLTkzODksMTIgKzkzOTIsMTMgQEAg
cHJpdmF0ZToKIAogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBl
bmRUbyhjZWxsQ2FzZSwgbm90Q2VsbENhc2UpOwogCi0gICAgICAgICAgICBpZiAoIWFic3RyYWN0
VmFsdWUoZWRnZSkubV9zdHJ1Y3R1cmUuaXNTdWJzZXRPZihTdHJ1Y3R1cmVTZXQodHlwZS5zdHJ1
Y3R1cmUoKSkpKSB7CisgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9
IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodHlwZS5zdHJ1Y3R1cmUoKSk7CisgICAgICAgICAg
ICBpZiAoIWFic3RyYWN0VmFsdWUoZWRnZSkubV9zdHJ1Y3R1cmUuaXNTdWJzZXRPZihSZWdpc3Rl
cmVkU3RydWN0dXJlU2V0KHN0cnVjdHVyZSkpKSB7CiAgICAgICAgICAgICAgICAgc3BlY3VsYXRl
KAogICAgICAgICAgICAgICAgICAgICBCYWRUeXBlLCBqc1ZhbHVlVmFsdWUodmFsdWUpLCBlZGdl
Lm5vZGUoKSwKICAgICAgICAgICAgICAgICAgICAgbV9vdXQubm90RXF1YWwoCiAgICAgICAgICAg
ICAgICAgICAgICAgICBtX291dC5sb2FkMzIodmFsdWUsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVy
ZUlEKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHdlYWtTdHJ1Y3R1cmVJRCh0eXBlLnN0cnVj
dHVyZSgpKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgd2Vha1N0cnVjdHVyZUlEKHN0cnVj
dHVyZSkpKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOwpAQCAtMTA0OTMsOSArMTA0OTcsOSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KIAotICAgIExWYWx1ZSBhbGxvY2F0ZU9iamVjdChMVmFsdWUgYWxsb2Nh
dG9yLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTFZhbHVlIGJ1dHRlcmZseSwgTEJhc2ljQmxvY2sg
c2xvd1BhdGgpCisgICAgTFZhbHVlIGFsbG9jYXRlT2JqZWN0KExWYWx1ZSBhbGxvY2F0b3IsIFJl
Z2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCBMVmFsdWUgYnV0dGVyZmx5LCBMQmFzaWNCbG9j
ayBzbG93UGF0aCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhbGxvY2F0ZU9iamVjdChhbGxvY2F0
b3IsIG1fb3V0LmNvbnN0SW50UHRyKHN0cnVjdHVyZSksIGJ1dHRlcmZseSwgc2xvd1BhdGgpOwor
ICAgICAgICByZXR1cm4gYWxsb2NhdGVPYmplY3QoYWxsb2NhdG9yLCB3ZWFrU3RydWN0dXJlKHN0
cnVjdHVyZSksIGJ1dHRlcmZseSwgc2xvd1BhdGgpOwogICAgIH0KIAogICAgIExWYWx1ZSBhbGxv
Y2F0ZU9iamVjdChMVmFsdWUgYWxsb2NhdG9yLCBMVmFsdWUgc3RydWN0dXJlLCBMVmFsdWUgYnV0
dGVyZmx5LCBMQmFzaWNCbG9jayBzbG93UGF0aCkKQEAgLTEwNTg5LDcgKzEwNTkzLDcgQEAgcHJp
dmF0ZToKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDbGFzc1R5cGU+CiAgICAgTFZhbHVl
IGFsbG9jYXRlVmFyaWFibGVTaXplZE9iamVjdCgKLSAgICAgICAgTFZhbHVlIHNpemUsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBMVmFsdWUgYnV0dGVyZmx5LCBMQmFzaWNCbG9jayBzbG93UGF0aCkK
KyAgICAgICAgTFZhbHVlIHNpemUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCBMVmFs
dWUgYnV0dGVyZmx5LCBMQmFzaWNCbG9jayBzbG93UGF0aCkKICAgICB7CiAgICAgICAgIExWYWx1
ZSBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKAogICAgICAgICAgICAgKnN1YnNwYWNlRm9y
PENsYXNzVHlwZT4odm0oKSksIHNpemUsIHNsb3dQYXRoKTsKQEAgLTEwNjA1LDkgKzEwNjA5LDkg
QEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGFsbG9jYXRlQ2VsbChhbGxvY2F0b3IsIHN0cnVj
dHVyZSwgc2xvd1BhdGgpOwogICAgIH0KICAgICAKLSAgICBMVmFsdWUgYWxsb2NhdGVPYmplY3Qo
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgTFZhbHVlIGFsbG9jYXRlT2JqZWN0KFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgc2l6ZV90IGFsbG9jYXRpb25T
aXplID0gSlNGaW5hbE9iamVjdDo6YWxsb2NhdGlvblNpemUoc3RydWN0dXJlLT5pbmxpbmVDYXBh
Y2l0eSgpKTsKKyAgICAgICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0gSlNGaW5hbE9iamVjdDo6
YWxsb2NhdGlvblNpemUoc3RydWN0dXJlLmdldCgpLT5pbmxpbmVDYXBhY2l0eSgpKTsKICAgICAg
ICAgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSBzdWJzcGFjZUZvcjxKU0ZpbmFsT2JqZWN0
Pih2bSgpKS0+YWxsb2NhdG9yRm9yKGFsbG9jYXRpb25TaXplKTsKICAgICAgICAgCiAgICAgICAg
IC8vIEZJWE1FOiBJZiB0aGUgYWxsb2NhdG9yIGlzIG51bGwsIHdlIGNvdWxkIHNpbXBseSBlbWl0
IGEgbm9ybWFsIEMgY2FsbCB0byB0aGUgYWxsb2NhdG9yCkBAIC0xMDYzMCw3ICsxMDYzNCw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBbPV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0
aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKAogICAgICAgICAgICAgICAgICAgICBv
cGVyYXRpb25OZXdPYmplY3QsIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwKLSAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOworICAgICAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlLmdldCgp
KSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9
IG1fb3V0LmFuY2hvcihzbG93UmVzdWx0VmFsdWUpOwogICAgICAgICBtX291dC5qdW1wKGNvbnRp
bnVhdGlvbik7CkBAIC0xMDczMyw4ICsxMDczNyw3IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAg
ICAgICBtX291dC5hcHBlbmRUbyhsYXJnZUNhc2UsIGZhaWxDYXNlKTsKICAgICAgICAgVmFsdWVG
cm9tQmxvY2sgbGFyZ2VTdHJ1Y3R1cmUgPSBtX291dC5hbmNob3IoCi0gICAgICAgICAgICBtX291
dC5jb25zdEludFB0cigKLSAgICAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0
dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2Up
KSk7CisgICAgICAgICAgICB3ZWFrU3RydWN0dXJlKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUo
Z2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRp
b24oQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSkpKTsKICAgICAgICAgbV9vdXQuanVtcChzbG93Q2Fz
ZSk7CiAgICAgICAgIAogICAgICAgICBtX291dC5hcHBlbmRUbyhmYWlsQ2FzZSwgc2xvd0Nhc2Up
OwpAQCAtMTA3NjMsMTIgKzEwNzY2LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX291dC5w
aGkocG9pbnRlclR5cGUoKSwgZmFzdEJ1dHRlcmZseSwgc2xvd0J1dHRlcmZseSkpOwogICAgIH0K
ICAgICAKLSAgICBBcnJheVZhbHVlcyBhbGxvY2F0ZVVuaW5pdGlhbGl6ZWRDb250aWd1b3VzSlNB
cnJheShMVmFsdWUgcHVibGljTGVuZ3RoLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICBBcnJh
eVZhbHVlcyBhbGxvY2F0ZVVuaW5pdGlhbGl6ZWRDb250aWd1b3VzSlNBcnJheShMVmFsdWUgcHVi
bGljTGVuZ3RoLCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAg
IGJvb2wgc2hvdWxkSW5pdGlhbGl6ZUVsZW1lbnRzID0gZmFsc2U7CiAgICAgICAgIGJvb2wgc2hv
dWxkTGFyZ2VBcnJheVNpemVDcmVhdGVBcnJheVN0b3JhZ2UgPSBmYWxzZTsKICAgICAgICAgcmV0
dXJuIGFsbG9jYXRlSlNBcnJheSgKLSAgICAgICAgICAgIHB1YmxpY0xlbmd0aCwgbV9vdXQuY29u
c3RJbnRQdHIoc3RydWN0dXJlKSwgbV9vdXQuY29uc3RJbnQzMihzdHJ1Y3R1cmUtPmluZGV4aW5n
VHlwZSgpKSwgc2hvdWxkSW5pdGlhbGl6ZUVsZW1lbnRzLAorICAgICAgICAgICAgcHVibGljTGVu
Z3RoLCB3ZWFrU3RydWN0dXJlKHN0cnVjdHVyZSksIG1fb3V0LmNvbnN0SW50MzIoc3RydWN0dXJl
LT5pbmRleGluZ1R5cGUoKSksIHNob3VsZEluaXRpYWxpemVFbGVtZW50cywKICAgICAgICAgICAg
IHNob3VsZExhcmdlQXJyYXlTaXplQ3JlYXRlQXJyYXlTdG9yYWdlKTsKICAgICB9CiAgICAgCkBA
IC0xMDkxMCw3ICsxMDkxMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8obWFzcXVlcmFkZXNDYXNlKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICBpc1RydXRoeU9iamVjdCA9IG1fb3V0Lm5vdEVxdWFsKAotICAgICAgICAgICAgICAgICAgICBt
X291dC5jb25zdEludFB0cihtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLAorICAgICAgICAgICAgICAgICAgICB3ZWFrUG9pbnRlcihtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykpLAogICAgICAgICAgICAgICAgICAg
ICBtX291dC5sb2FkUHRyKGxvYWRTdHJ1Y3R1cmUodmFsdWUpLCBtX2hlYXBzLlN0cnVjdHVyZV9n
bG9iYWxPYmplY3QpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5k
KG1fb3V0LmFuY2hvcihpc1RydXRoeU9iamVjdCkpOwpAQCAtMTEwMDksNyArMTEwMTIsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgCiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5h
bmNob3IoCiAgICAgICAgICAgICAgICAgbV9vdXQuZXF1YWwoCi0gICAgICAgICAgICAgICAgICAg
IG1fb3V0LmNvbnN0SW50UHRyKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2lu
LnNlbWFudGljKSksCisgICAgICAgICAgICAgICAgICAgIHdlYWtQb2ludGVyKG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSksCiAgICAgICAgICAgICAgICAg
ICAgIG1fb3V0LmxvYWRQdHIoc3RydWN0dXJlLCBtX2hlYXBzLlN0cnVjdHVyZV9nbG9iYWxPYmpl
Y3QpKSkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICB9
CkBAIC0xMTkzMSwxMiArMTE5MzQsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgREZHX0FTU0VSVCht
X2dyYXBoLCBtX25vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IERGRzo6
aXNDZWxsKGVkZ2UudXNlS2luZCgpKSk7CiAgICAgICAgIAogICAgICAgICBpZiAoZWRnZS0+b3Ao
KSA9PSBKU0NvbnN0YW50KSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZWRnZS0+YXNK
U1ZhbHVlKCk7Ci0gICAgICAgICAgICBpZiAoIXZhbHVlLmlzQ2VsbCgpKSB7CisgICAgICAgICAg
ICBGcm96ZW5WYWx1ZSogdmFsdWUgPSBlZGdlLT5jb25zdGFudCgpOworICAgICAgICAgICAgaWYg
KCF2YWx1ZS0+dmFsdWUoKS5pc0NlbGwoKSkgewogICAgICAgICAgICAgICAgIHRlcm1pbmF0ZShV
bmNvdW50YWJsZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmludFB0clplcm87CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gbV9vdXQuY29uc3RJbnRQdHIodmFsdWUu
YXNDZWxsKCkpOworICAgICAgICAgICAgcmV0dXJuIGZyb3plblBvaW50ZXIodmFsdWUpOwogICAg
ICAgICB9CiAgICAgICAgIAogICAgICAgICBMb3dlcmVkTm9kZVZhbHVlIHZhbHVlID0gbV9qc1Zh
bHVlVmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CkBAIC0xMjkwMSwxMCArMTI5MDQsMTAgQEAgcHJp
dmF0ZToKICAgICAKICAgICB2b2lkIHNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZUlE
KEVkZ2UgZWRnZSwgTFZhbHVlIHN0cnVjdHVyZUlEKQogICAgIHsKLSAgICAgICAgU3RydWN0dXJl
KiBzdHJpbmdPYmplY3RTdHJ1Y3R1cmUgPQotICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKTsK
LSAgICAgICAgCi0gICAgICAgIGlmIChhYnN0cmFjdFN0cnVjdHVyZShlZGdlKS5pc1N1YnNldE9m
KFN0cnVjdHVyZVNldChzdHJpbmdPYmplY3RTdHJ1Y3R1cmUpKSkKKyAgICAgICAgUmVnaXN0ZXJl
ZFN0cnVjdHVyZSBzdHJpbmdPYmplY3RTdHJ1Y3R1cmUgPQorICAgICAgICAgICAgbV9ncmFwaC5y
ZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5z
ZW1hbnRpYyktPnN0cmluZ09iamVjdFN0cnVjdHVyZSgpKTsKKworICAgICAgICBpZiAoYWJzdHJh
Y3RTdHJ1Y3R1cmUoZWRnZSkuaXNTdWJzZXRPZihSZWdpc3RlcmVkU3RydWN0dXJlU2V0KHN0cmlu
Z09iamVjdFN0cnVjdHVyZSkpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICAg
ICAgc3BlY3VsYXRlKApAQCAtMTM2OTAsMTggKzEzNjkzLDIzIEBAIHByaXZhdGU6CiAgICAgTFZh
bHVlIHdlYWtQb2ludGVyKEpTQ2VsbCogcG9pbnRlcikKICAgICB7CiAgICAgICAgIGFkZFdlYWtS
ZWZlcmVuY2UocG9pbnRlcik7Ci0gICAgICAgIHJldHVybiBtX291dC5jb25zdEludFB0cihwb2lu
dGVyKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LndlYWtQb2ludGVyKG1fZ3JhcGgsIHBvaW50ZXIp
OworICAgIH0KKworICAgIExWYWx1ZSBmcm96ZW5Qb2ludGVyKEZyb3plblZhbHVlKiB2YWx1ZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBtX291dC53ZWFrUG9pbnRlcih2YWx1ZSk7CiAgICAgfQog
Ci0gICAgTFZhbHVlIHdlYWtTdHJ1Y3R1cmVJRChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICBM
VmFsdWUgd2Vha1N0cnVjdHVyZUlEKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKQogICAg
IHsKLSAgICAgICAgYWRkV2Vha1JlZmVyZW5jZShzdHJ1Y3R1cmUpOwogICAgICAgICByZXR1cm4g
bV9vdXQuY29uc3RJbnQzMihzdHJ1Y3R1cmUtPmlkKCkpOwogICAgIH0KICAgICAKLSAgICBMVmFs
dWUgd2Vha1N0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICBMVmFsdWUgd2Vha1N0
cnVjdHVyZShSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiB3ZWFrUG9pbnRlcihzdHJ1Y3R1cmUpOworICAgICAgICBBU1NFUlQoISFzdHJ1Y3R1cmUu
Z2V0KCkpOworICAgICAgICByZXR1cm4gbV9vdXQud2Vha1BvaW50ZXIobV9ncmFwaCwgc3RydWN0
dXJlLmdldCgpKTsKICAgICB9CiAgICAgCiAgICAgVHlwZWRQb2ludGVyIGFkZHJlc3NGb3IoTFZh
bHVlIGJhc2UsIGludCBvcGVyYW5kLCBwdHJkaWZmX3Qgb2Zmc2V0ID0gMCkKQEAgLTEzODA5LDcg
KzEzODE3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9vdXQuY2FsbCgKICAgICAgICAgICAgIFZv
aWQsCiAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihmdGxVbnJlYWNoYWJsZSksCi0gICAg
ICAgICAgICBtX291dC5jb25zdEludFB0cihjb2RlQmxvY2soKSksIG1fb3V0LmNvbnN0SW50MzIo
YmxvY2tJbmRleCksCisgICAgICAgICAgICB3ZWFrUG9pbnRlcihjb2RlQmxvY2soKSksIG1fb3V0
LmNvbnN0SW50MzIoYmxvY2tJbmRleCksCiAgICAgICAgICAgICBtX291dC5jb25zdEludDMyKG5v
ZGVJbmRleCkpOwogI2VuZGlmCiAgICAgICAgIG1fb3V0LnVucmVhY2hhYmxlKCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgJKHJldmlzaW9uIDIxMTEwNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJGVExWYWx1ZUZyb21CbG9jay5oIgogI2luY2x1ZGUgIkZU
TFdlaWdodC5oIgogI2luY2x1ZGUgIkZUTFdlaWdodGVkVGFyZ2V0LmgiCisjaW5jbHVkZSAiSGVh
cENlbGwuaCIKICNpbmNsdWRlIDx3dGYvT3JkZXJNYWtlci5oPgogI2luY2x1ZGUgPHd0Zi9TdHJp
bmdQcmludFN0cmVhbS5oPgogCkBAIC0xMDQsOSArMTA1LDI5IEBAIHB1YmxpYzoKIAogICAgIExW
YWx1ZSBjb25zdEJvb2woYm9vbCB2YWx1ZSk7CiAgICAgTFZhbHVlIGNvbnN0SW50MzIoaW50MzJf
dCB2YWx1ZSk7CisKKyAgICBMVmFsdWUgd2Vha1BvaW50ZXIoREZHOjpHcmFwaCYgZ3JhcGgsIEpT
Q2VsbCogY2VsbCkKKyAgICB7CisgICAgICAgIEFTU0VSVChncmFwaC5tX3BsYW4ud2Vha1JlZmVy
ZW5jZXMuY29udGFpbnMoY2VsbCkpOworCisgICAgICAgIGlmIChzaXplb2Yodm9pZCopID09IDgp
CisgICAgICAgICAgICByZXR1cm4gY29uc3RJbnQ2NChiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KGNl
bGwpKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0SW50MzIoYml0d2lzZV9jYXN0PGludHB0cl90Pihj
ZWxsKSk7CisgICAgfQorCisgICAgTFZhbHVlIHdlYWtQb2ludGVyKERGRzo6RnJvemVuVmFsdWUq
IHZhbHVlKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQodmFsdWUtPnZhbHVlKCkuaXND
ZWxsKCkpOworCisgICAgICAgIGlmIChzaXplb2Yodm9pZCopID09IDgpCisgICAgICAgICAgICBy
ZXR1cm4gY29uc3RJbnQ2NChiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KHZhbHVlLT5jZWxsKCkpKTsK
KyAgICAgICAgcmV0dXJuIGNvbnN0SW50MzIoYml0d2lzZV9jYXN0PGludHB0cl90Pih2YWx1ZS0+
Y2VsbCgpKSk7CisgICAgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBMVmFsdWUg
Y29uc3RJbnRQdHIoVCogdmFsdWUpCiAgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6
OmlzX2Jhc2Vfb2Y8SGVhcENlbGwsIFQ+Ojp2YWx1ZSwgIlRvIHVzZSBhIEdDIHBvaW50ZXIsIHRo
ZSBncmFwaCBtdXN0IGJlIGF3YXJlIG9mIGl0LiBVc2UgZ2NQb2ludGVyIGluc3RlYWQgYW5kIG1h
a2Ugc3VyZSB0aGUgZ3JhcGggaXMgYXdhcmUgb2YgdGhpcyByZWZlcmVuY2UuIik7CiAgICAgICAg
IGlmIChzaXplb2Yodm9pZCopID09IDgpCiAgICAgICAgICAgICByZXR1cm4gY29uc3RJbnQ2NChi
aXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KHZhbHVlKSk7CiAgICAgICAgIHJldHVybiBjb25zdEludDMy
KGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4odmFsdWUpKTsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTExMDcp
CisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBA
CisyMDE3LTAxLTI0ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IEhhcmRlbiBob3cgdGhlIGNvbXBpbGVyIHJlZmVyZW5jZXMgR0Mgb2JqZWN0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3Mjc3CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8zMDE3OTUwNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHd0Zi9UaW55UHRyU2V0Lmg6CisgICAgICAgIChXVEY6OlRpbnlQ
dHJTZXQ6OnNpbmdsZUVudHJ5KToKKwogMjAxNy0wMS0yNCAgS29uc3RhbnRpbiBUb2thcmV2ICA8
YW5udWxlbkB5YW5kZXgucnU+CiAKICAgICAgICAgVlMyMDE1IHN1cHBvcnRzIHJlZiBxdWFsaWZp
ZXJzCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9UaW55UHRyU2V0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvVGlueVB0clNldC5oCShyZXZpc2lvbiAyMTExMDcpCisrKyBTb3VyY2UvV1RG
L3d0Zi9UaW55UHRyU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNw
YWNlIFdURiB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjbGFzcyBUaW55UHRyU2V0IHsKKyAg
ICBzdGF0aWNfYXNzZXJ0KHNpemVvZihUKSA9PSBzaXplb2Yodm9pZCopLCAiSXQncyBpbiB0aGUg
dGl0bGUgb2YgdGhlIGNsYXNzLiIpOwogcHVibGljOgogICAgIFRpbnlQdHJTZXQoKQogICAgICAg
ICA6IG1fcG9pbnRlcigwKQpAQCAtNDc1LDcgKzQ3Niw3IEBAIHByaXZhdGU6CiAgICAgVCBzaW5n
bGVFbnRyeSgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoaXNUaGluKCkpOwotICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4ocG9pbnRlcigpKTsKKyAgICAgICAgcmV0dXJuIGJpdHdp
c2VfY2FzdDxUPihwb2ludGVyKCkpOwogICAgIH0KICAgICAKICAgICBPdXRPZkxpbmVMaXN0KiBs
aXN0KCkgY29uc3QK
</data>
<flag name="review"
          id="321620"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
    <flag name="commit-queue"
          id="321625"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>299679</attachid>
            <date>2017-01-24 21:10:32 -0800</date>
            <delta_ts>2017-01-26 14:03:15 -0800</delta_ts>
            <desc>Archive of layout-test-results from ews101 for mac-elcapitan</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>853068</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
BBQAAgAIAM2iOEowO7ixSwAAAGgAAAA8ABwAY3J5cHRvL3N1YnRsZS9yc2EtaW1wb3J0LWtleS1t
YWxmb3JtZWQtcGFyYW1ldGVycy1zdGRlcnIudHh0VVQJAAMCKIhYniGIWHV4CwABBPUBAAAEFAAA
AG3LsQ2AMAxE0Z4pbh8aVrBkS7GAOHIuRGwPDR31f39Lv4SG3e6O6SwxCFF1elQ5oEKBpKEG0Udr
kTRd1o/jjDeySAVnoKWf1n+GB1BLAwQKAAAAAADlnjhKAAAAAAAAAAAAAAAADwAcAGNyeXB0by93
b3JrZXJzL1VUCQADnSGIWIcqiFh1eAsAAQT1AQAABBQAAABQSwMECgAAAAAA5Z44SgAAAAAAAAAA
AAAAABYAHABjcnlwdG8vd29ya2Vycy9zdWJ0bGUvVVQJAAOdIYhYhyqIWHV4CwABBPUBAAAEFAAA
AFBLAwQKAAIAAADNojhKJeDTCCwAAAAsAAAAMQAcAGNyeXB0by93b3JrZXJzL3N1YnRsZS9yc2Et
Z2VuZXJhdGUta2V5LXN0ZGVyci50eHRVVAkAAwIoiFidIYhYdXgLAAEE9QEAAAQUAAAAQ291bGQg
bm90IGdlbmVyYXRlIGEga2V5IHBhaXIsIHN0YXR1cyAtNDMwNApQSwMECgAAAAAA5544SgAAAAAA
AAAAAAAAAA0AHABkaXNwbGF5bGlzdHMvVVQJAAOiIYhYhyqIWHV4CwABBPUBAAAEFAAAAFBLAwQU
AAIACADPojhKo1f96FAAAACOAAAAMgAcAGRpc3BsYXlsaXN0cy9leHRlbnQtaW5jbHVkZXMtdHJh
bnNmb3Jtcy1zdGRlcnIudHh0VVQJAAMGKIhYoiGIWHV4CwABBPUBAAAEFAAAAHMvSizIyEwuds7P
K0mtKLGySk8tcQ7x1dBUyCxWyMsvUahMLVFIzs8tSCzJTMpJVSjPLMlQKEpNzi9KycxLB8qAtRXr
cbmjG1SMZhAxhgAAUEsDBBQAAgAIAM+iOErylpXVRwAAAEkAAAApABwAZGlzcGxheWxpc3RzL2xh
eWVyLWRpc3BheS1saXN0LXN0ZGVyci50eHRVVAkAAwYoiFiiIYhYdXgLAAEE9QEAAAQUAAAAcy9K
LMjITC52zs8rSa0osbJKTy1xDvHV0FTILFbIyy9RqEwtUUjOzy1ILMlMyklVKM8syVAoSk3OL0rJ
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
GRc1ZYRjCJPXUCb31aM7n59QJm+f/z6QocRnt2vHgsYf2qO7oBGIXNOjuySu69HtenS7Ht2uR7fr
0d1rj66xy8olVOFlkLuZ77g1svgPUEsDBAoAAAAAAAefOEoAAAAAAAAAAAAAAAAFABwAZmFzdC9V
VAkAA90hiFiHKohYdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAPWeOEoAAAAAAAAAAAAAAAAMABwA
ZmFzdC9jYW52YXMvVVQJAAO+IYhYhyqIWHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACADdojhKjpou
Ln0AAAACAQAAJgAcAGZhc3QvY2FudmFzL2NhbnZhcy1saW5lRGFzaC1zdGRlcnIudHh0VVQJAAMi
KIhYviGIWHV4CwABBPUBAAAEFAAAAMXOMQrCQBRF0d5VvA0oMokYB7FJRAhWaicWX+aBgcwf+ZmI
unqzC8t7qtuKwpVwS++cX1VAM8bniRpoFyOvm2JdVDds92bJdh71oU6a+c5n5mOnbGR4eHT6kr4L
CFNBzOTjIRk9ZchISrBnpGbEcYI7oUnnX1pazNp/D/wAUEsDBAoAAAAAAACfOEoAAAAAAAAAAAAA
AAAMABwAZmFzdC9pbWFnZXMvVVQJAAPPIYhYhyqIWHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACADo
ojhKIY+9ODIAAAAzAAAALAAcAGZhc3QvaW1hZ2VzL3BkZi1hcy1pbWFnZS1jcm9wLWJveC1zdGRl
cnIudHh0VVQJAAM0KIhYzyGIWHV4CwABBPUBAAAEFAAAAHPLSSxJdUlNzk9JtVJIAdGZeekKqUVF
+UVWCpl5yflFRanJJQopiSWJCskZqcnZelwAUEsDBAoAAAAAAAefOEoAAAAAAAAAAAAAAAAKABwA
ZmFzdC90ZXh0L1VUCQAD3SGIWIcqiFh1eAsAAQT1AQAABBQAAABQSwMEFAACAAgA76I4Sini6ex6
AQAAjQkAACMAHABmYXN0L3RleHQvZW1vamktZ2VuZGVyLTItc3RkZXJyLnR4dFVUCQADQSiIWN0h
iFh1eAsAAQT1AQAABBQAAADtlctKw0AUhtfmKYYsS1vmlkwSNKAtxVUXbVxJF5PJpAaaC8kEqiXg
G7j2TXweX8BXcFJrUSi4CdhFZncu859/zrcYDBEbQTTCFGDoYeJhd4wsG0zrtFjILJJlUEp57xJG
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
dGVzdHMvbWlzYy9VVAkAAx0iiFiHKohYdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIABCjOEoVNTWS
egAAALwAAAAqABwAaHR0cC90ZXN0cy9taXNjL3hzbHQtYmFkLWltcG9ydC1zdGRlcnIudHh0VVQJ
AAOAKIhYHSKIWHV4CwABBPUBAAAEFAAAAI2OQQ7DIAwE73mFP0Ag7aEVvyHEVSwZjIyR+vwS5QPV
XlY7h9kspREnI6mAqqIRPsQIp1mL3m+P1xpmtvgOIfhCPXvFLkMzdv/tbG5Ph6PSRM0NpXVuwFQR
noCMBavBTZdJ4l0hwqhpnxoTYEnHf7oqfeTzupcsMS8/UEsDBAoAAAAAACKfOEoAAAAAAAAAAAAA
AAAUABwAaHR0cC90ZXN0cy9zZWN1cml0eS9VVAkAAxAiiFiHKohYdXgLAAEE9QEAAAQUAAAAUEsD
BAoAAAAAABufOEoAAAAAAAAAAAAAAAAqABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kvVVQJAAMFIohYhyqIWHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACAAGozhKY6qs
bIIAAACoAAAAQAAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3hz
bC1hbGxvd2VkLXN0ZGVyci50eHRVVAkAA2soiFgFIohYdXgLAAEE9QEAAAQUAAAALY1BCsMwDATv
eYVeEDu9pPgVhb4guBtiUCwjKaX+fU0pe1qG2c1ytsKbF6kEVdFEe2HQ4d5SCMttnePIku4xxmDI
lxbvIUt1VH/++0O45B4UJpdmWDDvjPljTFwqaCUwziHQD9gB+DRoekNtXCeSyp2WOdKOza8xRJuC
7GpN1PGavlBLAwQUAAIACAAGozhKY6qsbIIAAACoAAAAUgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5L3hzbC11bmFmZmVjdGVkLWJ5LXN0eWxlLXNyYy0yLXN0ZGVy
ci50eHRVVAkAA2soiFgFIohYdXgLAAEE9QEAAAQUAAAALY1BCsMwDATveYVeEDu9pPgVhb4guBti
UCwjKaX+fU0pe1qG2c1ytsKbF6kEVdFEe2HQ4d5SCMttnePIku4xxmDIlxbvIUt1VH/++0O45B4U
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
Lxa2esV/AVBLAwQKAAAAAAAinzhKAAAAAAAAAAAAAAAACQAcAGltcG9ydGVkL1VUCQADECKIWIcq
iFh1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAJJ84SgAAAAAAAAAAAAAAAA0AHABpbXBvcnRlZC93
M2MvVVQJAAMUIohYhyqIWHV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAAAinzhKAAAAAAAAAAAAAAAA
GgAcAGltcG9ydGVkL3czYy9XZWJDcnlwdG9BUEkvVVQJAAMQIohYhyqIWHV4CwABBPUBAAAEFAAA
AFBLAwQKAAAAAAAknzhKAAAAAAAAAAAAAAAAJgAcAGltcG9ydGVkL3czYy9XZWJDcnlwdG9BUEkv
Z2VuZXJhdGVLZXkvVVQJAAMTIohYhyqIWHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACAAKozhKjzQa
cEQAAACgCQAARwAcAGltcG9ydGVkL3czYy9XZWJDcnlwdG9BUEkvZ2VuZXJhdGVLZXkvdGVzdF9m
YWlsdXJlc19SU0EtT0FFUC1zdGRlcnIudHh0VVQJAANzKIhYECKIWHV4CwABBPUBAAAEFAAAAHPO
L81JUcjLL1FIT81LLUosSVVIVMhOrVQoSMws0lEoLkksKS1W0DUxNjDhch5VO6p2VO2o2lG1o2pH
1Y6qHVVLc7UAUEsDBBQAAgAIAAyjOEpUAsmyNgAAAMACAABQABwAaW1wb3J0ZWQvdzNjL1dlYkNy
eXB0b0FQSS9nZW5lcmF0ZUtleS90ZXN0X2ZhaWx1cmVzX1JTQVNTQS1QS0NTMS12MV81LXN0ZGVy
ci50eHRVVAkAA3goiFgTIohYdXgLAAEE9QEAAAQUAAAAc84vzUlRyMsvUUhPzUstSixJVUhUyE6t
VChIzCzSUSguSSwpLVbQNTE2MOFyHlU7qnaQqQUAUEsDBAoAAAAAACafOEoAAAAAAAAAAAAAAAAg
ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9VVAkAAxgiiFiHKohYdXgLAAEE9QEA
AAQUAAAAUEsDBAoAAAAAACSfOEoAAAAAAAAAAAAAAAAmABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9mZXRjaC9VVAkAAxQiiFiHKohYdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAACSf
OEoAAAAAAAAAAAAAAAAqABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9h
cGkvVVQJAAMUIohYhyqIWHV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAAAnnzhKAAAAAAAAAAAAAAAA
LwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2NvcnMvVVQJAAMa
IohYhyqIWHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACAAMozhKrh3hNgkCAAC9DAAARQAcAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2NvcnMvY29ycy1vcmlnaW4tc3Rk
ZXJyLnR4dFVUCQADeCiIWBQiiFh1eAsAAQT1AQAABBQAAADtlltv00AQRt/5FX5p3ibe+yVShKyQ
FiQglQLP1ewtiXDjKDaC/nvWqVpIVakpEQKUyn5aW3Ps4/E3O5l9nM/eT4sP0/m8upiOitl2tVit
i2XXbUZlWTce62XTdiNjCClWbbFuugLruvkWQ+Fuisr72LYwadbdtqmh6q/AbY3hq8nD4uex88ui
unxXeFz3leoGwx2LMj0k+aA7Vpn6e0vcrMptbJuv28wpN9uY6tVi2Q03N6+75ktcj7k2NBnvIfBI
QFDBAAkzoJgKVBMehGKDa/x+hYs4JoNm92jjHnnGqzN2ns97cF7p0YPd+11dx27ZhHZ8Mf00/LNa
/p7zPRY91LlEZZORDGSyDgTxCMYEBi4Jhh6FtCY94fwefOucnpDzvT4/2DkKTagWBKhQFgRHk3UT
Btxbg0oGzRl9Xp+fjPN2T7oVgh8cLpJIYh0FGngOF6c8WB8cGE4Ml+iEIuZx6e2j1nv2KVn/CXuO
dSJZJCQlkDoFEEJycMI58EkyhpYEQdVT1n/Nl1Oy/ttzNKIzylgLjLMs3REO6IWEqKUPSUUauThu
jl7O5i/S96Vrr631wkNMJEs3Ioe6EwK0ogQTBh20PE7622n1ZvjfeWGoMaSgIfmUczcHApi8BMFY
5lT+/YNXRzbj55defJC6yus87xygiDSnbt5lWKIl+GhpJM7kj4D/2Eb6B1BLAwQUAAIACAANozhK
9MjR2ZcBAADeBQAASAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBp
L2NvcnMvY29ycy1wcmVmbGlnaHQtc3RkZXJyLnR4dFVUCQADeiiIWBciiFh1eAsAAQT1AQAABBQA
AADN1EtrGzEQAOB7f4VOvY139FpJhlAWd9sU8qJ26bHoMcqabnddr0Ljf991cunBkBxKMLoIaYTm
Y6RZ3d6sb69adt2u183ndsk+UYkda+6+sOiHYSysH31iXSm7ZVVxYRY4D760FrHKx9jK77bVnqbx
YR9pqnZ7yv32viuL3eFDGX/ScBEMIRJKIIwBlPMIoU4IXEmXM9e1Ueb9L//4w9/TBS7YNZVuTOxj
e9VuWrad2DEN3/fjH0osHFgT54smWI1D2Y89NMcdeD40Ld6t3kKkAhFPFpA7DyqRBSvQgc9kI4rs
jFEnRHffNufJcdFa0gKycTWonA14aQhqsoG8UzEkeYrTbFaXZwmSMsqQ0ADpPINM4hAoBOBcWB+T
RGtP1eem/X6WnCSVcyJl8FHOz22u1jwLApxyHC1H7UL4l/OVfj/QVFhHPtGe5S31iT1CmdfgeY2/
1nn5FP5m38oGzYUHpMxB6TyLtY4QUNeeRB0V6Redx/xpKLA57OgslSZzaWOc26EOFlT0BE6SACFJ
1dYabbH+T83jL1BLAwQUAAIACAAPozhK7V2Bt8wCAAC/EwAAUQAcAGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2NvcnMvY29ycy1yZWRpcmVjdC1wcmVmbGlnaHQtc3Rk
ZXJyLnR4dFVUCQADfSiIWBoiiFh1eAsAAQT1AQAABBQAAADtl9uK20gQhu/3KXQT35Vdfe4eMIsZ
JgfI7oTMA4Su7urYrNeaWBoy8/YpDZtMIMYE4ovdHUtCEt2SKD79f1X15fWfN9dvr7o/rm5uVq+u
LrqXPJZ1t3r3pit5t+vHbtvn2q3H8fZisVA6zFF2dREj4qJNzy7y7Wax56G/2xceFrd7btvNx/U4
v334/e98/yF/5CXOxv4v3i2dJW0TIVifPdjkNVAIDZhMUTYVj9Rme66bPZfxwzDm8W5YGlSzbV/y
uOl3yymQF2b1Qr+U41s4MjIFJEOPIclVgpJz6feDXOZzOX0LUe6/D3JW+rvduFTz7j1/uuNh7Nac
K++7tuFt7e7hsyndZugmFnm77T9z7eihWxX51ACX/W7c91tYTTPw+vHNYf7b5amxfoUyUf2HZVS6
uMignBKgZCJQygwtUs2uRcVezZ5+wM9TnUa3634Yf4Xqf42m9w4jpwomZQPWkAOB6KFo5bzW1RQ0
p6Cp/oc0j1oeA5JCp8EyWrDNI2TtCLxLziJVtGwO4NRny/8o0qCcS5okacYcJH1mDdGECj4EYuOa
zPJRkeqz5Z9oRl1DapXAJZ/AxmKBbFUQdNK2FOfY+1PQfHaWt+gokEbA7KTKR6WASs5gqtWFkVMq
+gBOc7b8jyK1xNhabUAYlKTPUiGTZwgtYcWEXF06KlJztvwTzYwcU/MFGF2UKo8ZSKUAyTdNqrKr
qZ6C5rOzPEdylaSnT9q5qX2SZpQtQsnVoDfNq5oP4Axnyx9o7GsOnryCpiMJy2QgVulHWTfUjmtS
VI6KNJwt/13PVDgoL3qUvr4KTeEayWrQHlkU2rLX8RQ0n1+VD4GzLEJBIMqKSScL2fIkWHZS5I0v
8VCVj2fLH7B8ISP5U0NTjYVgRLF81ICy9NSNZGM6KtJ4tvwTTVVcJEwNcm6iRy/L+EiSRcmG7BNb
o1M7Bc1/geW/AFBLAwQKAAAAAAAmnzhKAAAAAAAAAAAAAAAAJQAcAGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9VVAkAAxgiiFiHKohYdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAA
ACafOEoAAAAAAAAAAAAAAAAuABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2Jyb3dzZXJzL1VUCQADGCKIWIcqiFh1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAJp84SgAAAAAA
AAAAAAAAADYAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMv
aGlzdG9yeS9VVAkAAxgiiFiHKohYdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAACafOEoAAAAAAAAA
AAAAAABNABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL2hp
c3RvcnkvdGhlLWxvY2F0aW9uLWludGVyZmFjZS9VVAkAAxgiiFiHKohYdXgLAAEE9QEAAAQUAAAA
UEsDBBQAAgAIAA+jOEqjC2N7yQAAAAIDAAB7ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2Jyb3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9uLWludGVyZmFjZS9sb2NhdGlv
bi1wcm90b2NvbC1zZXR0ZXItbm9uLWJyb2tlbi1hY3R1YWwudHh0VVQJAAN9KIhYGCKIWHV4CwAB
BPUBAAAEFAAAAJ2SsW7CMBCGdz/FLUyVsrCxRVEoSCFEOH0AxzlI6OGzzCF4/EIkhNouNoun//u/
8+mKba23VQmbUuv8s1xAzQKGiK/YgzAQm/7+WEMQ8MyXYHEBZxtGL7N5qYp38I6M+84GOZFSTa41
aBRYtW0DX7sK9sGccGJkZJf5wMKW6dF2g1e+N2JS8jH9U6da5usqWjFl2gGBuyNaAWscuPsOOgRL
7LDP0kbYj4SJv/yDRFnEp0p+ETGOA/sBQ6LmHxRjGkT8R+ptPCH1A1BLAwQUAAIACAAPozhKAWtq
5xQBAAC5AgAAeQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vy
cy9oaXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRlcmZhY2UvbG9jYXRpb24tcHJvdG9jb2wtc2V0dGVy
LW5vbi1icm9rZW4tZGlmZi50eHRVVAkAA30oiFh9KIhYdXgLAAEE9QEAAAQUAAAA1VFNT8MwDL33
V/jCqWQRmrjs1AEVSIxtWgY7p6mnRXPrKnHV7d+TTkziiODExZY/np+frZQC/cHUNxj1kxWry53R
O6xevXy5h95TrTdIaCNqsmfuRQlGUQFjTxK1bzoOgrUepk4PWKmOrOw5NJe2qA/SkK4CDxFDinwU
DmctB1TEzornVvlWMOytSwTXVBdY2DGpiJKKqk25NOSIrcJThy4RTuQkWZ7n/1CCddJbuggoClB3
t/eQj6YosvxxtTSrRQlvpTHz53IGSxawRDxgDcJAbGsYSQjS/twHhzOILvhObqZlBr/CV2Tb42TU
mam/LpDBem4MGBR42W7X8L5ZwD7YBuF6msn1NOO403dAnT74A8AnUEsDBBQAAgAIAA+jOEqO9ghA
yQAAAAIDAAB9ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJz
L2hpc3RvcnkvdGhlLWxvY2F0aW9uLWludGVyZmFjZS9sb2NhdGlvbi1wcm90b2NvbC1zZXR0ZXIt
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
UEsDBBQAAgAIADyjOErb7EnW0AAAAIUBAABEABwAbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xz
L2ZvcndhcmQtYnV0dG9uL2ZvcndhcmQtYnV0dG9uLWFjdHVhbC50eHRVVAkAA9MoiFjTKIhYdXgL
AAEE9QEAAAQUAAAAlY5NasMwEIX3OsVDqxSKD9Bd2jpQcJqAdQHZHqcCWQOaMca3j2z6swt0MwzM
9958p+NH8wIXJhrAs2LxQUO6YeSMxBrG9Z0TQRkdofcx0mAcyc7oF+HEefF5eJ1VOaGPXqQy5pIg
c9+TyDNWnrGEGCFE8GXmQAIeYa/HtrWYCuVvVMiRY+SliHQrrKtbh7fL+drUrral02z45vX3r6JI
EyWtIhe1Tz8RgsB2+9E+CuyiTZCycVIfkhxsKKt92ho0z/Tf9Df5uGB78av5kzDmDlBLAwQUAAIA
CAA8ozhKvmXak3YBAAAXAwAAQgAcAG1lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9mb3J3YXJk
LWJ1dHRvbi9mb3J3YXJkLWJ1dHRvbi1kaWZmLnR4dFVUCQAD0yiIWNQoiFh1eAsAAQT1AQAABBQA
AADFkUFP3DAQhe/+FaOcirKOhVqpqKdAWSTUpbtqonKeJBOwcGyUGSvk39ebXRDl0IoTF3tGejPv
87PWGszv4OJAbC5R0KxvK3NLzQ8rx+siWteZX+QImYzDOUTRQix6JI5O2AzUWTRD6Gj0eml0G7yM
wbHpwzjh2OkmigT/ptX09EitUFfIk6g8zz+SBVuJ6BaSsgR9uvoM+enqC5Slyq/OrzffoLZpISRL
mNCK9XeQVoAPYvv5MngCCdAQtOgcdQrqxLUXyT3B1cHrYrGC1iFzoUDB1gPHtiXmFaTHwGSdAyYC
TOdoiSH0kO3OqyqDFAvjHSVlH5wLU2JpZsjqdVXD9+3NbrOu11mxwH9dnUF+doCH/TT0rwGKFOBA
XooFZGM5VSkktJ4/ZTaV2QlYBhkjvXv8qPzPhr3JTxxoL3oZUfofXiyzo2Ki5sHKDfLD9ZCyKKxv
Xewo+Q7YbqvnPy1f2R+WHlPuo3PzDkdO4b3wKf1XhkqrP1BLAwQUAAIACAA8ozhKNYgC9eIAAADU
AQAARgAcAG1lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9mb3J3YXJkLWJ1dHRvbi9mb3J3YXJk
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
aWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL3RyYWNrcy1wYW5lbC90cmFja3MtcGFuZWwtaGlkZS1l
c2Mta2V5LWFjdHVhbC50eHRVVAkAA9goiFhxIohYdXgLAAEE9QEAAAQUAAAATY7BisIwFEX3+YpL
Vw4MpWt34lQQFAvND8T01T6MeZKXUvr3Zrpyc7mLw+GcDufLHpZfNEDmjMVx5vjAKAlRMo/rn0RC
FtwJ3oVAg7GkG+Ngk/NP7VykAFZMPAwUMb8llp83KE+EVn2NJ621MbcInb0n1V+sMmPhEKBERaaU
mBQyouoOfV/hVSj3oEKOEoIsJfG+orJtb3G8XbtLa9uqOE2JZ3eUmJMErXWS5Sts92NMl4rqq8a9
6b/HNM2+abYxH1BLAwQUAAIACABAozhKcx2DA3wBAADVAgAASwAcAG1lZGlhL21vZGVybi1tZWRp
YS1jb250cm9scy90cmFja3MtcGFuZWwvdHJhY2tzLXBhbmVsLWhpZGUtZXNjLWtleS1kaWZmLnR4
dFVUCQAD2CiIWNgoiFh1eAsAAQT1AQAABBQAAADNkd1O4zAQhe/zFKNesUodt9oVK3FVfrISghUR
jeDadSbUwrWjzFglb78TUwnYJ+DG8UQnZ75zopQC/RR9OiDpG8NG189b/Yy7O8enx1VyvtOP6NEQ
am+mmFgxEqsRKXkmfcDOGX2IHY5B5UHZGHiMnjSPxr6SGkxA/2VQe9ehQrLqFSeFbwNaxq7iNy7K
svwWUMZyMj4jbTag1sufUK6Xv2CzKco/l7f3F9A6cQbZDUfj2IUX6OMIIbLrp5sYEDjCDsEa77Er
oBXAWWSgzUubeSc4AlnbYYA0xCB3ziLeI9RkKxCUqoACHgJQshaJliB54ei8B0IUO8LRIUHsYdFc
brcLkObIvKAo++h9PArlboJFW29buH7429zXbb2ocqzz5XoN5e/3XJCbuj4VVdE+Hj+hnv2YORqp
mD4RmgFnxkIVSrSBpAiJgaGTyGrG+c+UPwyrQbwwyI+fW+iNJ5xt8kenrH3yfmrMSO8aHlOWfEki
L8rV6mK1ykfxD1BLAwQUAAIACABAozhKG5yPl8kAAAA/AQAATwAcAG1lZGlhL21vZGVybi1tZWRp
YS1jb250cm9scy90cmFja3MtcGFuZWwvdHJhY2tzLXBhbmVsLWhpZGUtZXNjLWtleS1leHBlY3Rl
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
D93CNTO0w6FOAoNlQVp7rnX+9Kqelsu21YldR36/7+d9yOSOBhydey5spOrjw75d7Z26RWsHtq7s
ciMvtWOHrPPGwTcnrxP23oKyj37kzz8eDJwY0Em7tNj8oyceKzzsl+MiXVbDZ4f0hX2+yPIY/BTb
EtwZaiMWvTlZHlbsRR0LFA1VO3KU8jwbxYWsvbxjJ5m5PUSjRV4lO8OvZUKSP+2wXzvshuR+huXY
McdCZnyCSw7/G+MTnvlLzWQ+bod+TUmsZvE1lw96SCmlfo1vY06Jg9s8ncCUdW1oDvVNllmJtkAU
ORyvE70dUIlfAKx8tRVgoLQZX3GvT7eiTjtD0dSGLhfMjLuoVTMCLsaSUT9i5OEhP/dDAL4o2WFY
dRJmjYc9o/wewIqzPXl0BiM0JwLsDKlGmIat/WWOwBqkrA24OT6h87SdoTjm4sAaEOAe3NEOMrLM
6GPpApQFmFP5lFEtTGJmkZmXyIQ6bv/sWGQ10gK3nYB18sg3loGPGhSFymGfhjQYQ+8Z8c9nildM
lbwzVK/7VNf02f8HUEsDBAoAAAAAALmgOEoAAAAAAAAAAAAAAAAIABwAcmV0cmllcy9VVAkAAx0k
iFiHKohYdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAALmgOEoAAAAAAAAAAAAAAAARABwAcmV0cmll
cy9pbXBvcnRlZC9VVAkAAx0kiFiHKohYdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAALmgOEoAAAAA
AAAAAAAAAAAVABwAcmV0cmllcy9pbXBvcnRlZC93M2MvVVQJAAMdJIhYhyqIWHV4CwABBPUBAAAE
FAAAAFBLAwQKAAAAAAC5oDhKAAAAAAAAAAAAAAAAKAAcAHJldHJpZXMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9VVAkAAx0kiFiHKohYdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAALmg
OEoAAAAAAAAAAAAAAAAtABwAcmV0cmllcy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvVVQJAAMdJIhYhyqIWHV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAAC5oDhKAAAAAAAAAAAA
AAAANgAcAHJldHJpZXMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dz
ZXJzL1VUCQADHSSIWIcqiFh1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAuaA4SgAAAAAAAAAAAAAA
AD4AHAByZXRyaWVzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vy
cy9oaXN0b3J5L1VUCQADHSSIWIcqiFh1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAuaA4SgAAAAAA
AAAAAAAAAFUAHAByZXRyaWVzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9i
cm93c2Vycy9oaXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRlcmZhY2UvVVQJAAMdJIhYhyqIWHV4CwAB
BPUBAAAEFAAAAFBLAwQUAAIACAAjpDhKowtje8kAAAACAwAAgwAcAHJldHJpZXMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9u
LWludGVyZmFjZS9sb2NhdGlvbi1wcm90b2NvbC1zZXR0ZXItbm9uLWJyb2tlbi1hY3R1YWwudHh0
VVQJAAOBKohYHSSIWHV4CwABBPUBAAAEFAAAAJ2SsW7CMBCGdz/FLUyVsrCxRVEoSCFEOH0AxzlI
6OGzzCF4/EIkhNouNoun//u/8+mKba23VQmbUuv8s1xAzQKGiK/YgzAQm/7+WEMQ8MyXYHEBZxtG
L7N5qYp38I6M+84GOZFSTa41aBRYtW0DX7sK9sGccGJkZJf5wMKW6dF2g1e+N2JS8jH9U6da5usq
WjFl2gGBuyNaAWscuPsOOgRL7LDP0kbYj4SJv/yDRFnEp0p+ETGOA/sBQ6LmHxRjGkT8R+ptPCH1
A1BLAwQUAAIACAAjpDhKbHREPBgBAADJAgAAgQAcAHJldHJpZXMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9uLWludGVyZmFj
ZS9sb2NhdGlvbi1wcm90b2NvbC1zZXR0ZXItbm9uLWJyb2tlbi1kaWZmLnR4dFVUCQADgSqIWIIq
iFh1eAsAAQT1AQAABBQAAADVUU1PwzAMvfdX+MKpZBGauOzUARVIjG1aBjunqadFc+sqcdXt35NO
TOKI4MTFlj+en5+tlAL9wdQ3GPWTFavLndE7rF69fLmH3lOtN0hoI2qyZ+5FCUZRAWNPEnVACT7h
fdNxEKz1MHV6wEp1ZGXPobm0R32QhnQVeIgYUuSjcDhrOaAidlY8t8q3gmFvXSK6prrAwo5JRZRU
VG3KpSFHbBWeOnSJcCInyfI8/8dSrJPe0kVIUYC6u72HfDRFkeWPq6VZLUp4K42ZP5czWLKAJeIB
axAGYlvDSEKQdHAfHM4guuA7uZmWGfwKX5Ftj5NRZ6b+ukAG67kxYFDgZbtdw/tmAftgG4TraSbX
04zjTt8BdfrkDwCfUEsDBBQAAgAIACOkOEqO9ghAyQAAAAIDAACFABwAcmV0cmllcy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRp
b24taW50ZXJmYWNlL2xvY2F0aW9uLXByb3RvY29sLXNldHRlci1ub24tYnJva2VuLWV4cGVjdGVk
LnR4dFVUCQADgSqIWB0kiFh1eAsAAQT1AQAABBQAAACdkrFuwjAQhnc/xS1MlbKwsUVRKEghRDh9
AMc5SOjhs8whePxCJITaLjaLp//7v/Ppim2tt1UJm1Lr/LNcQM0Choiv2IMwEJv+/lhDEPDMl2Bx
AR0Z950NciJVvMOfbRi9zOalUk2uNWgUWLVtA1+7CvbBnHBCZGSX+cDClulRdoNXvjdiUvIx/VOn
WubrKloxZdoBgbsjWgFrHLj7CjoES+ywz9JG2I+Eib/8g0RZxKdKfhExjgP7AUOi5h8UYxpE/Efq
bTwh9QNQSwMEFAACAAgAI6Q4StztPKQDCAAAbxsAAIkAHAByZXRyaWVzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9oaXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRl
cmZhY2UvbG9jYXRpb24tcHJvdG9jb2wtc2V0dGVyLW5vbi1icm9rZW4tcHJldHR5LWRpZmYuaHRt
bFVUCQADgiqIWB0kiFh1eAsAAQT1AQAABBQAAADlWW1z2zYS/u5fwbGn55mOSUqWlLMkxzeJLV9n
mqaZKm0/3oAkKCIGCR4AWnJ6999v8UaRFCkrc537cs00IoEF8Ozusy9gbjOZ07uz2wyjBH5yLJEX
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
AAOEKohYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA5Z44SgAAAAAAAAAAAAAAAAcAGAAAAAAA
AAAQAO1BgGADAGNyeXB0by9VVAUAA54hiFh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADlnjhK
AAAAAAAAAAAAAAAADgAYAAAAAAAAABAA7UHBYAMAY3J5cHRvL3N1YnRsZS9VVAUAA54hiFh1eAsA
AQT1AQAABBQAAABQSwECHgMKAAIAAADNojhKJeDTCCwAAAAsAAAAPgAYAAAAAAABAAAApIEJYQMA
Y3J5cHRvL3N1YnRsZS9yc2EtZ2VuZXJhdGUta2V5LW1hbGZvcm1lZC1wYXJhbWV0ZXJzLXN0ZGVy
ci50eHRVVAUAAwEoiFh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADNojhKMDu4sUsAAABoAAAA
PAAYAAAAAAABAAAApIGtYQMAY3J5cHRvL3N1YnRsZS9yc2EtaW1wb3J0LWtleS1tYWxmb3JtZWQt
cGFyYW1ldGVycy1zdGRlcnIudHh0VVQFAAMCKIhYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA
5Z44SgAAAAAAAAAAAAAAAA8AGAAAAAAAAAAQAO1BbmIDAGNyeXB0by93b3JrZXJzL1VUBQADnSGI
WHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAOWeOEoAAAAAAAAAAAAAAAAWABgAAAAAAAAAEADt
QbdiAwBjcnlwdG8vd29ya2Vycy9zdWJ0bGUvVVQFAAOdIYhYdXgLAAEE9QEAAAQUAAAAUEsBAh4D
CgACAAAAzaI4SiXg0wgsAAAALAAAADEAGAAAAAAAAQAAAKSBB2MDAGNyeXB0by93b3JrZXJzL3N1
YnRsZS9yc2EtZ2VuZXJhdGUta2V5LXN0ZGVyci50eHRVVAUAAwIoiFh1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAAAAADnnjhKAAAAAAAAAAAAAAAADQAYAAAAAAAAABAA7UGeYwMAZGlzcGxheWxpc3Rz
L1VUBQADoiGIWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAM+iOEqjV/3oUAAAAI4AAAAyABgA
AAAAAAEAAACkgeVjAwBkaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXRyYW5zZm9ybXMtc3Rk
ZXJyLnR4dFVUBQADBiiIWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAM+iOErylpXVRwAAAEkA
AAApABgAAAAAAAEAAACkgaFkAwBkaXNwbGF5bGlzdHMvbGF5ZXItZGlzcGF5LWxpc3Qtc3RkZXJy
LnR4dFVUBQADBiiIWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAABefOEoAAAAAAAAAAAAAAAAI
ABgAAAAAAAAAEADtQUtlAwBlZGl0aW5nL1VUBQAD/iGIWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoA
AAAAABefOEoAAAAAAAAAAAAAAAARABgAAAAAAAAAEADtQY1lAwBlZGl0aW5nL2RlbGV0aW5nL1VU
BQAD/iGIWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAACjOErWfJxxugEAABATAAAoABgAAAAA
AAEAAACkgdhlAwBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS1lbW9qaS1zdGRlcnIudHh0VVQFAANf
KIhYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAJKQ4SsMyxR8jDwAA/IcAAA0AGAAAAAAAAQAA
AKSB9GcDAGVycm9yX2xvZy50eHRVVAUAA4QqiFh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAH
nzhKAAAAAAAAAAAAAAAABQAYAAAAAAAAABAA7UFedwMAZmFzdC9VVAUAA90hiFh1eAsAAQT1AQAA
BBQAAABQSwECHgMKAAAAAAD1njhKAAAAAAAAAAAAAAAADAAYAAAAAAAAABAA7UGddwMAZmFzdC9j
YW52YXMvVVQFAAO+IYhYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA3aI4So6aLi59AAAAAgEA
ACYAGAAAAAAAAQAAAKSB43cDAGZhc3QvY2FudmFzL2NhbnZhcy1saW5lRGFzaC1zdGRlcnIudHh0
VVQFAAMiKIhYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAAJ84SgAAAAAAAAAAAAAAAAwAGAAA
AAAAAAAQAO1BwHgDAGZhc3QvaW1hZ2VzL1VUBQADzyGIWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAOiiOEohj704MgAAADMAAAAsABgAAAAAAAEAAACkgQZ5AwBmYXN0L2ltYWdlcy9wZGYtYXMt
aW1hZ2UtY3JvcC1ib3gtc3RkZXJyLnR4dFVUBQADNCiIWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoA
AAAAAAefOEoAAAAAAAAAAAAAAAAKABgAAAAAAAAAEADtQZ55AwBmYXN0L3RleHQvVVQFAAPdIYhY
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA76I4Sini6ex6AQAAjQkAACMAGAAAAAAAAQAAAKSB
4nkDAGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItMi1zdGRlcnIudHh0VVQFAANBKIhYdXgLAAEE9QEA
AAQUAAAAUEsBAh4DCgAAAAAABp84SgAAAAAAAAAAAAAAAAkAGAAAAAAAAAAQAO1BuXsDAGZhc3Qv
eHNsL1VUBQAD2yGIWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAO6iOEpO+yD4iAAAAOcAAAAl
ABgAAAAAAAEAAACkgfx7AwBmYXN0L3hzbC90cmFuc2Zvcm0teGhyLWRvYy1zdGRlcnIudHh0VVQF
AAM/KIhYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA7qI4Sv2iLmSPAAAA7gAAACcAGAAAAAAA
AQAAAKSB43wDAGZhc3QveHNsL3hzbHQtYmFkLWltcG9ydC11cmktc3RkZXJyLnR4dFVUBQADPyiI
WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAO6iOErPj2YOUAAAAKAAAAAkABgAAAAAAAEAAACk
gdN9AwBmYXN0L3hzbC94c2x0LWNvbnRlbnRUeXBlLXN0ZGVyci50eHRVVAUAAz8oiFh1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACADuojhKgUp3rUsAAACsAAAANAAYAAAAAAABAAAApIGBfgMAZmFz
dC94c2wveHNsdC10cmFuc2Zvcm0tdG8tZnJhZ21lbnQtY3Jhc2gtc3RkZXJyLnR4dFVUBQADPyiI
WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACWkOEpYr+Hg8QEAAAcEAAARABgAAAAAAAEAAACk
gTp/AwBmdWxsX3Jlc3VsdHMuanNvblVUBQADhiqIWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAA
AA+fOEoAAAAAAAAAAAAAAAAFABgAAAAAAAAAEADtQXaBAwBodHRwL1VUBQAD7iGIWHV4CwABBPUB
AAAEFAAAAFBLAQIeAwoAAAAAACmfOEoAAAAAAAAAAAAAAAALABgAAAAAAAAAEADtQbWBAwBodHRw
L3Rlc3RzL1VUBQADHSKIWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAA+fOEoAAAAAAAAAAAAA
AAARABgAAAAAAAAAEADtQfqBAwBodHRwL3Rlc3RzL21lZGlhL1VUBQAD7iGIWHV4CwABBPUBAAAE
FAAAAFBLAQIeAwoAAAAAABGfOEoAAAAAAAAAAAAAAAAVABgAAAAAAAAAEADtQUWCAwBodHRwL3Rl
c3RzL21lZGlhL2hscy9VVAUAA/IhiFh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAD7ojhKPswR
mC0AAAAuAAAAOgAYAAAAAAABAAAApIGUggMAaHR0cC90ZXN0cy9tZWRpYS9obHMvdmlkZW8tY29u
dHJvbHMtbGl2ZS1zdHJlYW0tYWN0dWFsLnR4dFVUBQADWiiIWHV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAPuiOEql1xOhJQIAAF0HAAA4ABgAAAAAAAEAAACkgTWDAwBodHRwL3Rlc3RzL21lZGlh
L2hscy92aWRlby1jb250cm9scy1saXZlLXN0cmVhbS1kaWZmLnR4dFVUBQADWiiIWHV4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAPuiOEoJftllogEAAAsGAAA8ABgAAAAAAAEAAACkgcyFAwBodHRw
L3Rlc3RzL21lZGlhL2hscy92aWRlby1jb250cm9scy1saXZlLXN0cmVhbS1leHBlY3RlZC50eHRV
VAUAA1ooiFh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAD7ojhK7G3pHWoJAAD1LgAAQAAYAAAA
AAABAAAApIHkhwMAaHR0cC90ZXN0cy9tZWRpYS9obHMvdmlkZW8tY29udHJvbHMtbGl2ZS1zdHJl
YW0tcHJldHR5LWRpZmYuaHRtbFVUBQADWiiIWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABGf
OEo+zBGYLQAAAC4AAAA8ABgAAAAAAAEAAACkgciRAwBodHRwL3Rlc3RzL21lZGlhL2hscy92aWRl
by1kdXJhdGlvbi1hY2Nlc3NpYmlsaXR5LWFjdHVhbC50eHRVVAUAA/IhiFh1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAARnzhKplfZlzQBAADIAwAAOgAYAAAAAAABAAAApIFrkgMAaHR0cC90ZXN0
cy9tZWRpYS9obHMvdmlkZW8tZHVyYXRpb24tYWNjZXNzaWJpbGl0eS1kaWZmLnR4dFVUBQAD8iGI
WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABGfOEqRn80frgAAAH4CAAA+ABgAAAAAAAEAAACk
gROUAwBodHRwL3Rlc3RzL21lZGlhL2hscy92aWRlby1kdXJhdGlvbi1hY2Nlc3NpYmlsaXR5LWV4
cGVjdGVkLnR4dFVUBQAD8iGIWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABGfOEqFdEpgaAgA
AJ4kAABCABgAAAAAAAEAAACkgTmVAwBodHRwL3Rlc3RzL21lZGlhL2hscy92aWRlby1kdXJhdGlv
bi1hY2Nlc3NpYmlsaXR5LXByZXR0eS1kaWZmLmh0bWxVVAUAA/IhiFh1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAAAAAApnzhKAAAAAAAAAAAAAAAAEAAYAAAAAAAAABAA7UEdngMAaHR0cC90ZXN0cy9t
aXNjL1VUBQADHSKIWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABCjOEoVNTWSegAAALwAAAAq
ABgAAAAAAAEAAACkgWeeAwBodHRwL3Rlc3RzL21pc2MveHNsdC1iYWQtaW1wb3J0LXN0ZGVyci50
eHRVVAUAA4AoiFh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAinzhKAAAAAAAAAAAAAAAAFAAY
AAAAAAAAABAA7UFFnwMAaHR0cC90ZXN0cy9zZWN1cml0eS9VVAUAAxAiiFh1eAsAAQT1AQAABBQA
AABQSwECHgMKAAAAAAAbnzhKAAAAAAAAAAAAAAAAKgAYAAAAAAAAABAA7UGTnwMAaHR0cC90ZXN0
cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvVVQFAAMFIohYdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgABqM4SmOqrGyCAAAAqAAAAEAAGAAAAAAAAQAAAKSB958DAGh0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3hzbC1hbGxvd2VkLXN0ZGVyci50eHRVVAUA
A2soiFh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAGozhKY6qsbIIAAACoAAAAUgAYAAAAAAAB
AAAApIHzoAMAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kveHNsLXVu
YWZmZWN0ZWQtYnktc3R5bGUtc3JjLTItc3RkZXJyLnR4dFVUBQADayiIWHV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAAyjOEpgS2YQkQAAAPsBAABFABgAAAAAAAEAAACkgQGiAwBodHRwL3Rlc3Rz
L3NlY3VyaXR5L3hzcy1ERU5JRUQteHNsLWRvY3VtZW50LXNlY3VyaXR5T3JpZ2luLXN0ZGVyci50
eHRVVAUAA3coiFh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAhpDhKWwRYDqIFAABNEAAACgAY
AAAAAAABAAAApIERowMAaHR0cGQuY29uZlVUBQADfSqIWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoA
AAAAACKfOEoAAAAAAAAAAAAAAAAJABgAAAAAAAAAEADtQfeoAwBpbXBvcnRlZC9VVAUAAxAiiFh1
eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAknzhKAAAAAAAAAAAAAAAADQAYAAAAAAAAABAA7UE6
qQMAaW1wb3J0ZWQvdzNjL1VUBQADFCKIWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAACKfOEoA
AAAAAAAAAAAAAAAaABgAAAAAAAAAEADtQYGpAwBpbXBvcnRlZC93M2MvV2ViQ3J5cHRvQVBJL1VU
BQADECKIWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAACSfOEoAAAAAAAAAAAAAAAAmABgAAAAA
AAAAEADtQdWpAwBpbXBvcnRlZC93M2MvV2ViQ3J5cHRvQVBJL2dlbmVyYXRlS2V5L1VUBQADEyKI
WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAAqjOEqPNBpwRAAAAKAJAABHABgAAAAAAAEAAACk
gTWqAwBpbXBvcnRlZC93M2MvV2ViQ3J5cHRvQVBJL2dlbmVyYXRlS2V5L3Rlc3RfZmFpbHVyZXNf
UlNBLU9BRVAtc3RkZXJyLnR4dFVUBQADcyiIWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAAyj
OEpUAsmyNgAAAMACAABQABgAAAAAAAEAAACkgfqqAwBpbXBvcnRlZC93M2MvV2ViQ3J5cHRvQVBJ
L2dlbmVyYXRlS2V5L3Rlc3RfZmFpbHVyZXNfUlNBU1NBLVBLQ1MxLXYxXzUtc3RkZXJyLnR4dFVU
BQADeCiIWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAACafOEoAAAAAAAAAAAAAAAAgABgAAAAA
AAAAEADtQbqrAwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL1VUBQADGCKIWHV4CwAB
BPUBAAAEFAAAAFBLAQIeAwoAAAAAACSfOEoAAAAAAAAAAAAAAAAmABgAAAAAAAAAEADtQRSsAwBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL1VUBQADFCKIWHV4CwABBPUBAAAE
FAAAAFBLAQIeAwoAAAAAACSfOEoAAAAAAAAAAAAAAAAqABgAAAAAAAAAEADtQXSsAwBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9VVAUAAxQiiFh1eAsAAQT1AQAABBQA
AABQSwECHgMKAAAAAAAnnzhKAAAAAAAAAAAAAAAALwAYAAAAAAAAABAA7UHYrAMAaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvY29ycy9VVAUAAxoiiFh1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAAMozhKrh3hNgkCAAC9DAAARQAYAAAAAAABAAAApIFBrQMAaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvY29ycy9jb3JzLW9yaWdpbi1zdGRl
cnIudHh0VVQFAAN4KIhYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgADaM4SvTI0dmXAQAA3gUA
AEgAGAAAAAAAAQAAAKSBya8DAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gv
YXBpL2NvcnMvY29ycy1wcmVmbGlnaHQtc3RkZXJyLnR4dFVUBQADeiiIWHV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAA+jOErtXYG3zAIAAL8TAABRABgAAAAAAAEAAACkgeKxAwBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9jb3JzL2NvcnMtcmVkaXJlY3QtcHJlZmxp
Z2h0LXN0ZGVyci50eHRVVAUAA30oiFh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAAmnzhKAAAA
AAAAAAAAAAAAJQAYAAAAAAAAABAA7UE5tQMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL1VUBQADGCKIWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAACafOEoAAAAAAAAAAAAA
AAAuABgAAAAAAAAAEADtQZi1AwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
YnJvd3NlcnMvVVQFAAMYIohYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAJp84SgAAAAAAAAAA
AAAAADYAGAAAAAAAAAAQAO1BALYDAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9icm93c2Vycy9oaXN0b3J5L1VUBQADGCKIWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAACaf
OEoAAAAAAAAAAAAAAABNABgAAAAAAAAAEADtQXC2AwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRpb24taW50ZXJmYWNlL1VUBQAD
GCKIWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAA+jOEqjC2N7yQAAAAIDAAB7ABgAAAAAAAEA
AACkgfe2AwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlz
dG9yeS90aGUtbG9jYXRpb24taW50ZXJmYWNlL2xvY2F0aW9uLXByb3RvY29sLXNldHRlci1ub24t
YnJva2VuLWFjdHVhbC50eHRVVAUAA30oiFh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAPozhK
AWtq5xQBAAC5AgAAeQAYAAAAAAABAAAApIF1uAMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2Jyb3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9uLWludGVyZmFjZS9sb2NhdGlv
bi1wcm90b2NvbC1zZXR0ZXItbm9uLWJyb2tlbi1kaWZmLnR4dFVUBQADfSiIWHV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAA+jOEqO9ghAyQAAAAIDAAB9ABgAAAAAAAEAAACkgTy6AwBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRp
b24taW50ZXJmYWNlL2xvY2F0aW9uLXByb3RvY29sLXNldHRlci1ub24tYnJva2VuLWV4cGVjdGVk
LnR4dFVUBQADfSiIWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAA+jOEqWELbP/gcAAGcbAACB
ABgAAAAAAAEAAACkgby7AwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJv
d3NlcnMvaGlzdG9yeS90aGUtbG9jYXRpb24taW50ZXJmYWNlL2xvY2F0aW9uLXByb3RvY29sLXNl
dHRlci1ub24tYnJva2VuLXByZXR0eS1kaWZmLmh0bWxVVAUAA30oiFh1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAAAAABWnzhKAAAAAAAAAAAAAAAABgAYAAAAAAAAABAA7UF1xAMAbWVkaWEvVVQFAANz
IohYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAPKM4SgAAAAAAAAAAAAAAABwAGAAAAAAAAAAQ
AO1BtcQDAG1lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9VVAUAA9MoiFh1eAsAAQT1AQAABBQA
AABQSwECHgMKAAAAAAA8ozhKAAAAAAAAAAAAAAAAKwAYAAAAAAAAABAA7UELxQMAbWVkaWEvbW9k
ZXJuLW1lZGlhLWNvbnRyb2xzL2ZvcndhcmQtYnV0dG9uL1VUBQAD1CiIWHV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIADyjOErb7EnW0AAAAIUBAABEABgAAAAAAAEAAACkgXDFAwBtZWRpYS9tb2Rl
cm4tbWVkaWEtY29udHJvbHMvZm9yd2FyZC1idXR0b24vZm9yd2FyZC1idXR0b24tYWN0dWFsLnR4
dFVUBQAD0yiIWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADyjOEq+ZdqTdgEAABcDAABCABgA
AAAAAAEAAACkgb7GAwBtZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvZm9yd2FyZC1idXR0b24v
Zm9yd2FyZC1idXR0b24tZGlmZi50eHRVVAUAA9MoiFh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CAA8ozhKNYgC9eIAAADUAQAARgAYAAAAAAABAAAApIGwyAMAbWVkaWEvbW9kZXJuLW1lZGlhLWNv
bnRyb2xzL2ZvcndhcmQtYnV0dG9uL2ZvcndhcmQtYnV0dG9uLWV4cGVjdGVkLnR4dFVUBQAD0yiI
WHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADyjOEoAZs3dlggAAIkgAABKABgAAAAAAAEAAACk
gRLKAwBtZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvZm9yd2FyZC1idXR0b24vZm9yd2FyZC1i
dXR0b24tcHJldHR5LWRpZmYuaHRtbFVUBQAD1CiIWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAA
AFWfOEoAAAAAAAAAAAAAAAApABgAAAAAAAAAEADtQSzTAwBtZWRpYS9tb2Rlcm4tbWVkaWEtY29u
dHJvbHMvdHJhY2tzLXBhbmVsL1VUBQADcSKIWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAECj
OEpeqSHpwQAAAAkBAABNABgAAAAAAAEAAACkgY/TAwBtZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJv
bHMvdHJhY2tzLXBhbmVsL3RyYWNrcy1wYW5lbC1oaWRlLWVzYy1rZXktYWN0dWFsLnR4dFVUBQAD
2CiIWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAECjOEpzHYMDfAEAANUCAABLABgAAAAAAAEA
AACkgdfUAwBtZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvdHJhY2tzLXBhbmVsL3RyYWNrcy1w
YW5lbC1oaWRlLWVzYy1rZXktZGlmZi50eHRVVAUAA9goiFh1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACABAozhKG5yPl8kAAAA/AQAATwAYAAAAAAABAAAApIHY1gMAbWVkaWEvbW9kZXJuLW1lZGlh
LWNvbnRyb2xzL3RyYWNrcy1wYW5lbC90cmFja3MtcGFuZWwtaGlkZS1lc2Mta2V5LWV4cGVjdGVk
LnR4dFVUBQAD2CiIWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAECjOErJcq44tAgAANMhAABT
ABgAAAAAAAEAAACkgSrYAwBtZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvdHJhY2tzLXBhbmVs
L3RyYWNrcy1wYW5lbC1oaWRlLWVzYy1rZXktcHJldHR5LWRpZmYuaHRtbFVUBQAD2CiIWHV4CwAB
BPUBAAAEFAAAAFBLAQIeAwoAAAAAAFafOEoAAAAAAAAAAAAAAAAMABgAAAAAAAAAEADtQWvhAwBt
ZWRpYS90cmFjay9VVAUAA3MiiFh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABBozhKjekYVEsB
AABUAgAAKgAYAAAAAAABAAAApIGx4QMAbWVkaWEvdHJhY2svdHJhY2staW4tYmFuZC1zdHlsZS1h
Y3R1YWwudHh0VVQFAAPZKIhYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAQaM4SuPleoBwAQAA
vQIAACgAGAAAAAAAAQAAAKSBYOMDAG1lZGlhL3RyYWNrL3RyYWNrLWluLWJhbmQtc3R5bGUtZGlm
Zi50eHRVVAUAA9koiFh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABBozhKDPrk6jYBAAAzAgAA
LAAYAAAAAAABAAAApIEy5QMAbWVkaWEvdHJhY2svdHJhY2staW4tYmFuZC1zdHlsZS1leHBlY3Rl
ZC50eHRVVAUAA9koiFh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABBozhKFPniv5YIAADQIAAA
MAAYAAAAAAABAAAApIHO5gMAbWVkaWEvdHJhY2svdHJhY2staW4tYmFuZC1zdHlsZS1wcmV0dHkt
ZGlmZi5odG1sVVQFAAPZKIhYdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAC6M4SsZp3WJMAgAA
kBAAABoAGAAAAAAAAQAAAKSBzu8DAHB5d2Vic29ja2V0LndzLmxvZy1lcnIudHh0VVQFAAN1KIhY
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAC6M4Sn0P8y0IAQAAjwIAABoAGAAAAAAAAQAAAKSB
bvIDAHB5d2Vic29ja2V0LndzLmxvZy1vdXQudHh0VVQFAAN1KIhYdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DCgAAAAAAx6I4SgAAAAAAAAAAAAAAABsAGAAAAAAAAAAAAKSByvMDAHB5d2Vic29ja2V0Lndz
cy5sb2ctZXJyLnR4dFVUBQAD9SeIWHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAMeiOEoAAAAA
AAAAAAAAAAAbABgAAAAAAAAAAACkgR/0AwBweXdlYnNvY2tldC53c3MubG9nLW91dC50eHRVVAUA
A/UniFh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAlpDhKRSYdOdEnAADLqgAADAAYAAAAAAAB
AAAApIF09AMAcmVzdWx0cy5odG1sVVQFAAOGKohYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA
uaA4SgAAAAAAAAAAAAAAAAgAGAAAAAAAAAAQAO1BixwEAHJldHJpZXMvVVQFAAMdJIhYdXgLAAEE
9QEAAAQUAAAAUEsBAh4DCgAAAAAAuaA4SgAAAAAAAAAAAAAAABEAGAAAAAAAAAAQAO1BzRwEAHJl
dHJpZXMvaW1wb3J0ZWQvVVQFAAMdJIhYdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAuaA4SgAA
AAAAAAAAAAAAABUAGAAAAAAAAAAQAO1BGB0EAHJldHJpZXMvaW1wb3J0ZWQvdzNjL1VUBQADHSSI
WHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAALmgOEoAAAAAAAAAAAAAAAAoABgAAAAAAAAAEADt
QWcdBAByZXRyaWVzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvVVQFAAMdJIhYdXgL
AAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAuaA4SgAAAAAAAAAAAAAAAC0AGAAAAAAAAAAQAO1ByR0E
AHJldHJpZXMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL1VUBQADHSSIWHV4
CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAALmgOEoAAAAAAAAAAAAAAAA2ABgAAAAAAAAAEADtQTAe
BAByZXRyaWVzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9V
VAUAAx0kiFh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAC5oDhKAAAAAAAAAAAAAAAAPgAYAAAA
AAAAABAA7UGgHgQAcmV0cmllcy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
YnJvd3NlcnMvaGlzdG9yeS9VVAUAAx0kiFh1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAC5oDhK
AAAAAAAAAAAAAAAAVQAYAAAAAAAAABAA7UEYHwQAcmV0cmllcy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRpb24taW50ZXJmYWNl
L1VUBQADHSSIWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACOkOEqjC2N7yQAAAAIDAACDABgA
AAAAAAEAAACkgacfBAByZXRyaWVzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9icm93c2Vycy9oaXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRlcmZhY2UvbG9jYXRpb24tcHJvdG9j
b2wtc2V0dGVyLW5vbi1icm9rZW4tYWN0dWFsLnR4dFVUBQADgSqIWHV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIACOkOEpsdEQ8GAEAAMkCAACBABgAAAAAAAEAAACkgS0hBAByZXRyaWVzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9oaXN0b3J5L3RoZS1sb2Nh
dGlvbi1pbnRlcmZhY2UvbG9jYXRpb24tcHJvdG9jb2wtc2V0dGVyLW5vbi1icm9rZW4tZGlmZi50
eHRVVAUAA4EqiFh1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAjpDhKjvYIQMkAAAACAwAAhQAY
AAAAAAABAAAApIEAIwQAcmV0cmllcy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRpb24taW50ZXJmYWNlL2xvY2F0aW9uLXByb3Rv
Y29sLXNldHRlci1ub24tYnJva2VuLWV4cGVjdGVkLnR4dFVUBQADgSqIWHV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIACOkOErc7TykAwgAAG8bAACJABgAAAAAAAEAAACkgYgkBAByZXRyaWVzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9oaXN0b3J5L3RoZS1s
b2NhdGlvbi1pbnRlcmZhY2UvbG9jYXRpb24tcHJvdG9jb2wtc2V0dGVyLW5vbi1icm9rZW4tcHJl
dHR5LWRpZmYuaHRtbFVUBQADgiqIWHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACWkOEoUIacJ
pJ4IAPbaLwAKABgAAAAAAAEAAACkgU4tBABzdGF0cy5qc29uVVQFAAOGKohYdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAJaQ4SprFTbo0AwAArBkAABkAGAAAAAAAAQAAAKSBNswMAHdwdHdrX3By
b2Nlc3NfbG9nLm91dC50eHRVVAUAA4UqiFh1eAsAAQT1AQAABBQAAABQSwUGAAAAAHYAdgB5NAAA
vc8MAAAA
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299847</attachid>
            <date>2017-01-26 14:03:15 -0800</date>
            <delta_ts>2017-01-26 14:11:01 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>253627</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjExMjMwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4NCBA
QAorMjAxNy0wMS0yNiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBIYXJkZW4gaG93IHRoZSBjb21waWxlciByZWZlcmVuY2VzIEdDIG9iamVjdHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NzI3NworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzAxNzk1MDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAgUGl6
bG8uCisKKyAgICAgICAgU2luY2UgcjIxMDk3MSwgdGhlIERGRy9GVEwgd2lsbCBmbGFzaCBzYWZl
cG9pbnRzIGJlZm9yZQorICAgICAgICBlYWNoIHBoYXNlLiBUaGlzIG1lYW5zIHRoYXQgdGhlcmUg
YXJlIG1vcmUgb3Bwb3J0dW5pdGllcyBmb3IKKyAgICAgICAgYSBHQyB0byBoYXBwZW4gd2hpbGUg
dGhlIGNvbXBpbGVyIGlzIHJ1bm5pbmcuIEJlY2F1c2Ugb2YgdGhpcywKKyAgICAgICAgdGhlIGNv
bXBpbGVyIG11c3QgYmUgdHJhY2sgb2YgYWxsIHRoZSBoZWFwIHBvaW50ZXJzIHRoYXQgYXJlIHBh
cnQKKyAgICAgICAgb2YgdGhlIEdyYXBoIGRhdGEgc3RydWN0dXJlLiBUbyBhY2NvbXBsaXNoIHRo
aXMsIEkndmUgZGVzaWduZWQKKyAgICAgICAgYSBuZXcgdHlwZSBjYWxsZWQgUmVnaXN0ZXJlZFN0
cnVjdHVyZSB0aGF0IGNhbiBvbmx5IGJlIGNvbnN0cnVjdGVkCisgICAgICAgIGFmdGVyIHRoZSBH
cmFwaCBiZWNvbWVzIGF3YXJlIG9mIGl0cyB1bmRlcmx5aW5nIFN0cnVjdHVyZSouIEkKKyAgICAg
ICAgZGVzaWduZWQgdGhpcyBuZXcgdHlwZSB0byBoYXZlIHRoZSB0eXBlIHN5c3RlbSBpbiBDKysg
aGVscCB1cyBjYXRjaAorICAgICAgICBlcnJvcnMgd2hlcmUgd2UncmUgbm90IGluZm9ybWluZyB0
aGUgZ3JhcGgvcGxhbiBvZiBhIGhlYXAgcG9pbnRlci4KKyAgICAgICAgSSd2ZSBtYWRlIGl0IGEg
Y29tcGlsZSBlcnJvciB0byBjcmVhdGUgYW4gT3BJbmZvIHdpdGggYSBwb2ludGVyCisgICAgICAg
IFQqIHdoZXJlIFQgaW5oZXJpdHMgZnJvbSBIZWFwQ2VsbC4gVGhpcyBlbmNvdXJhZ2VzIGFuIE9w
SW5mbworICAgICAgICB0byBiZSBjcmVhdGVkIHdpdGggZWl0aGVyIGEgRnJvemVuVmFsdWUqIG9y
IGEgUmVnaXN0ZXJlZFN0cnVjdHVyZS4KKyAgICAgICAgSSd2ZSBhZGRlZCBzaW1pbGFyIGNvbXBp
bGUgdGltZSBhc3NlcnRpb25zIGZvciBUcnVzdGVkSW1tUHRyIGluIERGRzo6U3BlY3VsYXRpdmVK
SVQKKyAgICAgICAgYW5kIEZUTDo6T3V0cHV0Ojpjb25zdEludFB0ci4gVGhlc2Ugc3RhdGljIGFz
c2VydHMgZG9uJ3Qgc2F2ZSB1cyBmcm9tIGFsbCBiYWQKKyAgICAgICAgcHJvZ3JhbXMgYmVjYXVz
ZSB0aGVyZSBhcmUgd2F5cyB0byB3cml0ZSBjb2RlIHRoYXQncyBpbmNvcnJlY3QgdGhhdCBjb21w
aWxlcywKKyAgICAgICAgYnV0IHRoZSBuZXcgdHlwZXMgZG8gaGVscCB1cyBlbnN1cmUgdGhhdCB0
aGUgbW9zdCBvYnZpb3VzIHdheSBvZiB3cml0aW5nIHRoZQorICAgICAgICBjb2RlIGlzIGNvcnJl
Y3QuCisgICAgICAgIAorICAgICAgICBUaGUgcmVhc29uIHRoaXMgcGF0Y2ggaXMgc28gYmlnIGlz
IHRoYXQgSSd2ZSBzdHJ1bmcgUmVnaXN0ZXJlZFN0cnVjdHVyZSBhbmQKKyAgICAgICAgUmVnaXN0
ZXJlZFN0cnVjdHVyZVNldCB0aHJvdWdoIHRoZSBlbnRpcmUgREZHL0ZUTC4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpkZXRlcm1pbmVMaXZlbmVzcyk6CisgICAgICAgICogYnl0ZWNvZGUv
U3RydWN0dXJlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2V0OjpmaWx0ZXIpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTZXQ6OmZpbHRlckFycmF5TW9kZXMpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTZXQ6OnNwZWN1bGF0aW9uRnJvbVN0cnVj
dHVyZXMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTZXQ6OmFycmF5TW9kZXNG
cm9tU3RydWN0dXJlcyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlN0cnVjdHVyZVNldDo6dmFs
aWRhdGVSZWZlcmVuY2VzKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVT
ZXQuaDoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI6OmZpbHRlcik6CisgICAgICAgICogZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmJvb2xlYW5SZXN1bHQpOgorICAgICAg
ICAoSlNDOjpERkc6OmlzVG9UaGlzQW5JZGVudGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAg
ICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
b2JzZXJ2ZVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpmaWx0ZXIpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFj
dFZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpzZXQpOgorICAg
ICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OnNldFR5cGUpOgorICAgICAgICAoSlNDOjpE
Rkc6OkFic3RyYWN0VmFsdWU6Om1lcmdlT1NSRW50cnlWYWx1ZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6QWJzdHJhY3RWYWx1ZTo6ZmlsdGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZh
bHVlOjpjaGFuZ2VTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6
OmNvbnRhaW5zKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RWYWx1ZS5oOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0VmFsdWU6Om9ic2VydmVUcmFuc2l0aW9uKToKKyAgICAgICAgKEpT
Qzo6REZHOjpBYnN0cmFjdFZhbHVlOjpUcmFuc2l0aW9uT2JzZXJ2ZXI6OlRyYW5zaXRpb25PYnNl
cnZlcik6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdBcnJheU1vZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5
TW9kZTo6YWxyZWFkeUNoZWNrZWQpOgorICAgICAgICAqIGRmZy9ERkdBcnJheWlmeVNsb3dQYXRo
R2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlpZnlTbG93UGF0aEdlbmVyYXRv
cjo6QXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvcik6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29u
c3RhbnRJbnRlcm5hbEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6bG9hZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5
SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKToK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNr
RW50cnkpOgorICAgICAgICAqIGRmZy9ERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpERkc6OkNhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2Vu
ZXJhdG9yOjpDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvcik6CisgICAgICAgIChK
U0M6OkRGRzo6Q2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJh
dG9yOjpDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3Ip
OgorICAgICAgICAqIGRmZy9ERkdDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xvd1BhdGhHZW5l
cmF0b3IuaDoKKyAgICAgICAgKEpTQzo6REZHOjpDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xv
d1BhdGhHZW5lcmF0b3I6OkNhbGxDcmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRv
cik6CisgICAgICAgICogZGZnL0RGR0NvbW1vbkRhdGEuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkNvbW1vbkRhdGE6Om5vdGlmeUNvbXBpbGluZ1N0cnVjdHVyZVRyYW5zaXRpb24pOgorICAgICAg
ICAqIGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAgICAgICAoSlNDOjpERkc6
OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjplbWl0R2V0QnlPZmZzZXQpOgorICAgICAgICAoSlNDOjpE
Rkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjplbWl0UHV0QnlPZmZzZXQpOgorICAgICAgICAoSlND
OjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjphZGRCYXNlQ2hlY2spOgorICAgICAgICAoSlND
OjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjphZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2sp
OgorICAgICAgICAqIGRmZy9ERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkRlc2lyZWRXZWFrUmVmZXJlbmNlczo6cmVhbGx5QWRkKToKKyAgICAgICAgKiBk
ZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Y2hl
Y2tBcnJheSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpHcmFwaDo6R3JhcGgpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpkdW1wKToKKyAgICAg
ICAgKEpTQzo6REZHOjpHcmFwaDo6dHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eSk6CisgICAgICAgIChK
U0M6OkRGRzo6R3JhcGg6OmluZmVycmVkVmFsdWVGb3JQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6
OkRGRzo6R3JhcGg6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpm
cmVlemUpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpyZWdpc3RlclN0cnVjdHVyZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmFzc2VydElzUmVnaXN0ZXJlZCk6CisgICAgICAgICog
ZGZnL0RGR0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OnJlZ2lzdGVyU3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6YWRkU3RydWN0dXJlU2V0KToKKyAgICAg
ICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxl
cjo6YnJhbmNoV2Vha1N0cnVjdHVyZSk6CisgICAgICAgICogZGZnL0RGR011bHRpR2V0QnlPZmZz
ZXREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpNdWx0aUdldEJ5T2Zmc2V0Q2FzZTo6ZHVt
cEluQ29udGV4dCk6CisgICAgICAgICogZGZnL0RGR011bHRpR2V0QnlPZmZzZXREYXRhLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6TXVsdGlHZXRCeU9mZnNldENhc2U6Ok11bHRpR2V0QnlPZmZzZXRD
YXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpNdWx0aUdldEJ5T2Zmc2V0Q2FzZTo6c2V0KToKKyAg
ICAgICAgKiBkZmcvREZHTm9kZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVy
dFRvUHV0U3RydWN0dXJlSGludCk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0VG9DaGVja1N0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
OkRGRzo6Tm9kZTo6c3RydWN0dXJlU2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzdHJ1
Y3R1cmUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Ok9wSW5mb1dyYXBwZXI6Ok9wSW5mb1dy
YXBwZXIpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Ok9wSW5mb1dyYXBwZXI6Om9wZXJhdG9y
PSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6T3BJbmZvV3JhcHBlcjo6YXNSZWdpc3RlcmVk
U3RydWN0dXJlKToKKyAgICAgICAgKiBkZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFz
ZS5jcHA6CisgICAgICAgICogZGZnL0RGR09wSW5mby5oOgorICAgICAgICAoSlNDOjpERkc6Ok9w
SW5mbzo6T3BJbmZvKToKKyAgICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6UGxhbjo6Y29tcGlsZUluVGhyZWFkSW1wbCk6CisgICAgICAgIChKU0M6OkRGRzo6UGxh
bjo6ZmluYWxpemVXaXRob3V0Tm90aWZ5aW5nQ2FsbGJhY2spOgorICAgICAgICAqIGRmZy9ERkdS
ZWdpc3RlcmVkU3RydWN0dXJlLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVy
ZWRTdHJ1Y3R1cmU6OmdldCk6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJlZFN0cnVjdHVy
ZTo6b3BlcmF0b3ItPik6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZTo6
b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZTo6b3Bl
cmF0b3IhPSk6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZTo6b3BlcmF0
b3IgYm9vbCk6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZTo6UmVnaXN0
ZXJlZFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZTo6
Y3JlYXRlUHJpdmF0ZSk6CisgICAgICAgICogZGZnL0RGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlcmVkU3RydWN0dXJlU2V0Ojpm
aWx0ZXIpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQ6OmZpbHRl
ckFycmF5TW9kZXMpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQ6
OnNwZWN1bGF0aW9uRnJvbVN0cnVjdHVyZXMpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVy
ZWRTdHJ1Y3R1cmVTZXQ6OmFycmF5TW9kZXNGcm9tU3RydWN0dXJlcyk6CisgICAgICAgIChKU0M6
OkRGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZVNldDo6dmFsaWRhdGVSZWZlcmVuY2VzKToKKyAgICAg
ICAgKiBkZmcvREZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNldC5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6REZHOjpSZWdpc3RlcmVkU3RydWN0dXJlU2V0OjpSZWdpc3RlcmVkU3RydWN0dXJlU2V0KToK
KyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlcmVkU3RydWN0dXJlU2V0Ojpvbmx5U3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlcmVkU3RydWN0dXJlU2V0Ojp0b1N0cnVjdHVy
ZVNldCk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVSYXdPYmpl
Y3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0R2V0Q2FsbGVlKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c2lsZW50RmlsbCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJyYXkpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPblN0cmluZyk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVGcm9tQ2hhckNvZGUpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRG91YmxlUmVwKToKKyAgICAgICAgKEpT
Qzo6REZHOjpjb21waWxlQ2xhbXBEb3VibGVUb0J5dGUpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTWFrZVJvcGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlQXJpdGhSb3VuZGluZyk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbik6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVBY3RpdmF0aW9uKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZURpcmVjdEFyZ3VtZW50cyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVTY29wZWRBcmd1
bWVudHMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRl
Q2xvbmVkQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVNwcmVhZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVB
cnJheVNsaWNlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVR5
cGVPZik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBbGxvY2F0
ZVByb3BlcnR5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3JPbkNlbGwp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJh
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0cmluZ09y
U3RyaW5nT2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU1hdGVyaWFsaXplTmV3T2JqZWN0KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6VHJ1c3RlZEltbVB0cjo6VHJ1
c3RlZEltbVB0cik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OlRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
VHJ1c3RlZEltbVB0cjo6b3BlcmF0b3IgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpUcnVzdGVkSW1tUHRyOjphc0ludHB0
cik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhbGxPcGVyYXRpb24pOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVEZXN0cnVjdGli
bGVPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVT
dHJpbmdPYmplY3RGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3Vs
YXRpdmVOb25QZWVwaG9sZUNvbXBhcmVOdWxsT3JVbmRlZmluZWQpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoTnVsbE9yVW5k
ZWZpbmVkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RPck90aGVyTG9n
aWNhbE5vdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RP
ck90aGVyQnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBbGxvY2F0ZU5l
d0FycmF5V2l0aFNpemUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVw
aG9sZUNvbXBhcmVOdWxsT3JVbmRlZmluZWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoTnVsbE9yVW5kZWZpbmVkKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3QpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJyYW5j
aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2NhdGVOZXdBcnJheVdpdGhT
aXplKToKKyAgICAgICAgKiBkZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlTm9kZSk6CisgICAg
ICAgICogZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmFzc2VydElzUmVnaXN0ZXJlZCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6Y2xvYmJlcik6CisgICAgICAgIChK
U0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6b2JzZXJ2ZVRyYW5zaXRpb24pOgorICAg
ICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om9ic2VydmVUcmFuc2l0aW9u
cyk6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6YWRkKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjptZXJnZSk6CisgICAgICAg
IChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6bWVyZ2VOb3RUb3ApOgorICAgICAg
ICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmZpbHRlcik6CisgICAgICAgIChK
U0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyU2xvdyk6CisgICAgICAgIChK
U0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyQ2xhc3NJbmZvU2xvdyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6Y29udGFpbnMpOgorICAg
ICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3Vic2V0T2YpOgorICAg
ICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3VwZXJzZXRPZik6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6b3ZlcmxhcHMpOgorICAg
ICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3ViQ2xhc3NPZik6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZHVtcEluQ29udGV4dCk6
CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlKToK
KyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpvcGVyYXRvcj0pOgor
ICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OnNldCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6dG9TdHJ1Y3R1cmVTZXQpOgorICAg
ICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmF0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpvcGVyYXRvcltdKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpvbmx5U3RydWN0dXJlKToKKyAgICAgICAg
KiBkZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlN0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFz
ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlUmVnaXN0cmF0aW9uUGhh
c2U6OnJ1bik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlUmVnaXN0cmF0
aW9uUGhhc2U6OnJlZ2lzdGVyU3RydWN0dXJlcyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRG
Rzo6U3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2U6OnJlZ2lzdGVyU3RydWN0dXJlKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZTo6YXNzZXJ0
QXJlUmVnaXN0ZXJlZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlUmVn
aXN0cmF0aW9uUGhhc2U6OmFzc2VydElzUmVnaXN0ZXJlZCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkRGRzo6cGVyZm9ybVN0cnVjdHVyZVJlZ2lzdHJhdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmg6CisgICAgICAgICogZGZnL0RG
R1RyYW5zaXRpb24uY3BwOgorICAgICAgICAoSlNDOjpERkc6OlRyYW5zaXRpb246OmR1bXBJbkNv
bnRleHQpOgorICAgICAgICAqIGRmZy9ERkdUcmFuc2l0aW9uLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6VHJhbnNpdGlvbjo6VHJhbnNpdGlvbik6CisgICAgICAgICogZGZnL0RGR1R5cGVDaGVja0hv
aXN0aW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlR5cGVDaGVja0hvaXN0aW5nUGhh
c2U6Om5vdGljZVN0cnVjdHVyZUNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpUeXBlQ2hlY2tI
b2lzdGluZ1BoYXNlOjpub3RpY2VTdHJ1Y3R1cmVDaGVja0FjY291bnRpbmdGb3JBcnJheU1vZGUp
OgorICAgICAgICAqIGRmZy9ERkdWYWxpZGF0ZS5jcHA6CisgICAgICAgICogZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6Omxvd2Vy
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxPYmpl
Y3RDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVDaGVja1N0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVQdXRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlQXJyYXlTbGljZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVDcmVhdGVBY3RpdmF0aW9uKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNyZWF0ZURpcmVjdEFyZ3VtZW50cyk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDcmVhdGVSZXN0KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld0FycmF5KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld0FycmF5V2l0aFNw
cmVhZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOZXdB
cnJheUJ1ZmZlcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVOZXdBcnJheVdpdGhTaXplKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZU5ld1R5cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVNdWx0aUdldEJ5
T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU11
bHRpUHV0QnlPZmZzZXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlR2V0TWFwQnVja2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZU92ZXJyaWRlc0hhc0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNoZWNrU3RydWN0dXJlSW1tZWRpYXRlKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU1hdGVyaWFs
aXplQ3JlYXRlQWN0aXZhdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVOZXdSZWdleHApOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlTG9nU2hhZG93Q2hpY2tlblRhaWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjaGVja1N0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNoZWNrSW5mZXJyZWRUeXBlKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6YWxsb2NhdGVPYmplY3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjphbGxvY2F0ZVZhcmlhYmxlU2l6ZWRPYmplY3QpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjphbGxvY2F0ZUpTQXJyYXkpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjphbGxvY2F0ZVVuaW5pdGlhbGl6ZWRDb250aWd1
b3VzSlNBcnJheSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmJvb2xp
ZnkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjplcXVhbE51bGxPclVu
ZGVmaW5lZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6Omxvd0NlbGwp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVjdWxhdGVTdHJpbmdP
YmplY3RGb3JTdHJ1Y3R1cmVJRCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OndlYWtQb2ludGVyKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
ZnJvemVuUG9pbnRlcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6Ondl
YWtTdHJ1Y3R1cmVJRCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6Ondl
YWtTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjcmFz
aCk6CisgICAgICAgICogZnRsL0ZUTE91dHB1dC5oOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1
dDo6d2Vha1BvaW50ZXIpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Y29uc3RJbnRQdHIp
OgorCiAyMDE3LTAxLTI2ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBPU1IgZW50cnk6IGRlbGF5IG91dGVyLWxvb3AgY29tcGlsYXRpb24gd2hlbiBhdCBpbm5l
ci1sb29wCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAy
MTEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTM3Myw2ICszNzMsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAg
IGRmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAKICAgICBkZmcvREZHUHVyZVZhbHVlLmNw
cAogICAgIGRmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAKKyAgICBkZmcvREZHUmVnaXN0
ZXJlZFN0cnVjdHVyZVNldC5jcHAKICAgICBkZmcvREZHU1NBQ2FsY3VsYXRvci5jcHAKICAgICBk
ZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAogICAgIGRmZy9ERkdTU0FMb3dlcmluZ1BoYXNl
LmNwcApAQCAtMzg2LDcgKzM4Nyw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAg
ZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdTdHJlbmd0
aFJlZHVjdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmNw
cAotICAgIGRmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAKICAgICBkZmcvREZH
VGhyZWFkRGF0YS5jcHAKICAgICBkZmcvREZHVGh1bmtzLmNwcAogICAgIGRmZy9ERkdUaWVyVXBD
aGVja0luamVjdGlvblBoYXNlLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01MjAsOCArNTIw
LDYgQEAKIAkJMEY3NjZEMzgxNUFFNEExQzAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmlu
Z1dhdGNocG9pbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY3NjZEMzYxNUFFNEExQTAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dh
dGNocG9pbnQuY3BwICovOyB9OwogCQkwRjc2NkQzOTE1QUU0QTFGMDA4RjM2M0UgLyogU3RydWN0
dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY3NjZEMzcxNUFFNEExQTAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0
dWJDbGVhcmluZ1dhdGNocG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjc3MDA5MjE0MDJGRjNDMDA3OEVCMzkgLyogU2FtcGxpbmdDb3Vu
dGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NzcwMDkxMTQwMkZGMjgwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwICovOyB9OwotCQkw
Rjc5MDg1NTE5QTI5MEIyMDBGNjMxMEMgLyogREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2Uu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3OTA4
NTMxOUEyOTBCMjAwRjYzMTBDIC8qIERGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcCAq
LzsgfTsKLQkJMEY3OTA4NTYxOUEyOTBCMjAwRjYzMTBDIC8qIERGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjc5MDg1NDE5QTI5MEIyMDBGNjMxMEMgLyogREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhh
c2UuaCAqLzsgfTsKIAkJMEY3QjI5NEIxNEMzQ0QyRjAwN0MzREIxIC8qIERGR0NhcGFiaWxpdGll
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEODJF
MUYxNDE3MkMyRjAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5oICovOyB9OwogCQkwRjdCMjk0
RDE0QzNDRDRDMDA3QzNEQjEgLyogREZHQ29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMwOTc3RTE0NjlFQkM0MDBDRjI0NDIgLyogREZHQ29t
bW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEY3QzM5RkIxQzhGNjI5MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0MzOUZBMUM4RjYyOTMwMDQ4MDE1
MSAvKiBSZWdFeHBJbmxpbmVzLmggKi87IH07CkBAIC0xNDQxLDYgKzE0MzksOCBAQAogCQk3OTZG
QjQzQTFERkY4QzNGMDAzOUM5NUQgLyogSlNXZWJBc3NlbWJseUhlbHBlcnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5NkZCNDM5MURGRjhDM0YwMDM5
Qzk1RCAvKiBKU1dlYkFzc2VtYmx5SGVscGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc5N0UwN0E5MUI4RkNGQjkwMDg0MDBCQSAvKiBKU0ds
b2JhbExleGljYWxFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3OTdFMDdBNzFCOEZDRkI5MDA4NDAwQkEgLyogSlNHbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnQuY3BwICovOyB9OwogCQk3OTdFMDdBQTFCOEZDRkI5MDA4NDAwQkEgLyog
SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDc5N0UwN0E4MUI4RkNGQjkwMDg0MDBCQSAvKiBKU0dsb2JhbExl
eGljYWxFbnZpcm9ubWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTc5ODBDMTZDMUUzQTk0MEUwMEI3MTYxNSAvKiBERkdSZWdpc3RlcmVkU3Ry
dWN0dXJlU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDc5ODBDMTZBMUUzQTk0MEUwMEI3MTYxNSAvKiBERkdSZWdpc3RlcmVkU3RydWN0dXJlU2V0
LmNwcCAqLzsgfTsKKwkJNzk4MEMxNkQxRTNBOTQwRTAwQjcxNjE1IC8qIERGR1JlZ2lzdGVyZWRT
dHJ1Y3R1cmVTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDc5ODBDMTZCMUUzQTk0MEUwMEI3MTYxNSAvKiBERkdSZWdpc3RlcmVkU3RydWN0dXJlU2V0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzk4
OTM3NzgxRENBQjU3MzAwRjhENEZCIC8qIEpTRml4ZWRBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OTg5Mzc3NjFEQ0FCNTczMDBGOEQ0RkIg
LyogSlNGaXhlZEFycmF5LmNwcCAqLzsgfTsKIAkJNzk4OTM3NzkxRENBQjU3MzAwRjhENEZCIC8q
IEpTRml4ZWRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzk4OTM3NzcxRENBQjU3MzAwRjhENEZCIC8qIEpTRml4ZWRBcnJheS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc5OUVGN0M0MUM1NkVE
OTYwMDJCMDUzNCAvKiBCM1BDVG9PcmlnaW5NYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5OUVGN0MzMUM1NkVEOTYwMDJCMDUzNCAvKiBCM1BDVG9P
cmlnaW5NYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTQ3MSw2ICsxNDcxLDcgQEAKIAkJNzlFRTBDMDAxQjRBRkI4NTAwMDM4NUM5IC8qIFZh
cmlhYmxlRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDc5RUUwQkZFMUI0QUZCODUwMDAzODVDOSAvKiBWYXJpYWJsZUVudmlyb25tZW50
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzlG
OEZDMUUxQjlGRUQwRjAwQ0E2NkFCIC8qIERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RjhGQzFD
MUI5RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAgKi87
IH07CiAJCTc5RjhGQzFGMUI5RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJbnNlcnRp
b25QaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzlGOEZDMUQxQjlGRUQwRjAwQ0E2NkFCIC8qIERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNl
LmggKi87IH07CisJCTc5RkM4QTA4MUUzMkU5RjAwMEQ4OEYwRSAvKiBERkdSZWdpc3RlcmVkU3Ry
dWN0dXJlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
OUZDOEEwNzFFMzJFOUYwMDBEODhGMEUgLyogREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCQzU0N0QzMUI2
OTU5QTEwMDk1OUI1OCAvKiBXYXNtRm9ybWF0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QkM1NDdEMjFCNjk1OTlCMDA5NTlCNTggLyogV2FzbUZvcm1h
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdD
MDA4Q0RBMTg3MTI0QkIwMDk1NUMyNCAvKiBKU1Byb21pc2VEZWZlcnJlZC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzAwOENEODE4NzEyNEJCMDA5
NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQuY3BwICovOyB9OwogCQk3QzAwOENEQjE4NzEyNEJC
MDA5NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMDA4Q0Q5MTg3MTI0QkIwMDk1NUMyNCAvKiBKU1Byb21p
c2VEZWZlcnJlZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0yOTc3LDggKzI5NzgsNiBAQAogCQkwRjc2NkQzNzE1QUU0QTFBMDA4RjM2M0UgLyog
U3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGNzcwMDhFMTQwMkZERDYwMDc4RUIzOSAvKiBTYW1wbGluZ0Nv
dW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2FtcGxpbmdDb3VudGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzcwMDkxMTQwMkZGMjgwMDc4RUIz
OSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2FtcGxpbmdDb3VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MEY3OTA4NTMxOUEyOTBCMjAwRjYzMTBDIC8qIERGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1N0cnVjdHVyZVJl
Z2lzdHJhdGlvblBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGNzkwODU0MTlBMjkwQjIw
MEY2MzEwQyAvKiBERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5oOyBwYXRo
ID0gZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGN0MzOUZBMUM4RjYyOTMwMDQ4MDE1MSAvKiBSZWdFeHBJbmxpbmVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cElubGluZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3QzM5RkMxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4
cE9iamVjdElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhw
T2JqZWN0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjdDMzlGRTFD
OTBDNTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IERGR09wSW5mby5oOyBwYXRoID0gZGZnL0RGR09wSW5mby5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMzkxMSw2ICszOTEwLDggQEAKIAkJNzk2RkI0MzkxREZGOEMzRjAw
MzlDOTVEIC8qIEpTV2ViQXNzZW1ibHlIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEpTV2ViQXNzZW1ibHlIZWxwZXJzLmg7IHBhdGggPSBqcy9KU1dlYkFzc2VtYmx5
SGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3OTdFMDdBNzFCOEZDRkI5
MDA4NDAwQkEgLyogSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3OTdFMDdBODFCOEZDRkI5MDA4NDAwQkEgLyog
SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNzk4MEMxNkExRTNBOTQwRTAwQjcxNjE1IC8qIERGR1JlZ2lzdGVyZWRTdHJ1Y3R1
cmVTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHUmVnaXN0
ZXJlZFN0cnVjdHVyZVNldC5jcHA7IHBhdGggPSBkZmcvREZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNl
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc5ODBDMTZCMUUzQTk0MEUwMEI3
MTYxNSAvKiBERkdSZWdpc3RlcmVkU3RydWN0dXJlU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IERGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQuaDsgcGF0aCA9IGRmZy9ERkdS
ZWdpc3RlcmVkU3RydWN0dXJlU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc5
ODkzNzc2MURDQUI1NzMwMEY4RDRGQiAvKiBKU0ZpeGVkQXJyYXkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGaXhlZEFycmF5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzk4OTM3NzcxRENBQjU3MzAwRjhENEZCIC8qIEpTRml4ZWRBcnJheS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ZpeGVkQXJyYXkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzk5RUY3QzMxQzU2RUQ5NjAwMkIwNTM0IC8qIEIzUENU
b09yaWdpbk1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1BDVG9Pcmln
aW5NYXAuaDsgcGF0aCA9IGIzL0IzUENUb09yaWdpbk1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMzk0MSw2ICszOTQyLDcgQEAKIAkJNzlFRTBCRkUxQjRBRkI4NTAwMDM4NUM5
IC8qIFZhcmlhYmxlRW52aXJvbm1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVmFyaWFibGVFbnZpcm9ubWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
OUY4RkMxQzFCOUZFRDBGMDBDQTY2QUIgLyogREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHTWF4aW1hbEZsdXNo
SW5zZXJ0aW9uUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBo
YXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzlGOEZDMUQxQjlGRUQwRjAw
Q0E2NkFCIC8qIERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmg7IHBhdGgg
PSBkZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNzlGQzhBMDcxRTMyRTlGMDAwRDg4RjBFIC8qIERGR1JlZ2lzdGVyZWRTdHJ1
Y3R1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHUmVnaXN0ZXJlZFN0
cnVjdHVyZS5oOyBwYXRoID0gZGZnL0RGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JDNTQ3RDIxQjY5NTk5QjAwOTU5QjU4IC8qIFdhc21Gb3Jt
YXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbUZvcm1hdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzAwOENEODE4NzEyNEJCMDA5NTVDMjQgLyogSlNQ
cm9taXNlRGVmZXJyZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNQcm9taXNlRGVmZXJyZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzAw
OENEOTE4NzEyNEJCMDA5NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9taXNlRGVmZXJyZWQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTcwOTEsNiArNzA5Myw5IEBACiAJCQkJMEZCMTc2NUYxOTZCOEY5RTAw
OTEwNTJBIC8qIERGR1B1cmVWYWx1ZS5oICovLAogCQkJCTBGM0ExQkY3MUE5RUNCN0QwMDBERTAx
QSAvKiBERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAgKi8sCiAJCQkJMEYzQTFCRjgxQTlFQ0I3
RDAwMERFMDFBIC8qIERGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmggKi8sCisJCQkJNzlGQzhBMDcx
RTMyRTlGMDAwRDg4RjBFIC8qIERGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaCAqLywKKwkJCQk3OTgw
QzE2QTFFM0E5NDBFMDBCNzE2MTUgLyogREZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNldC5jcHAgKi8s
CisJCQkJNzk4MEMxNkIxRTNBOTQwRTAwQjcxNjE1IC8qIERGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmVT
ZXQuaCAqLywKIAkJCQk4NkVDOURDMTEzMjhERjgyMDAyQjJBRDcgLyogREZHUmVnaXN0ZXJCYW5r
LmggKi8sCiAJCQkJMEYyRkNDRjQxOEE2MDA3MDAwMUEyN0Y4IC8qIERGR1NhZmVwb2ludC5jcHAg
Ki8sCiAJCQkJMEYyRkNDRjUxOEE2MDA3MDAwMUEyN0Y4IC8qIERGR1NhZmVwb2ludC5oICovLApA
QCAtNzEyMyw4ICs3MTI4LDYgQEAKIAkJCQkwRjg5M0JEQTE5MzZFMjNDMDAxMjExRjQgLyogREZH
U3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5jcHAgKi8sCiAJCQkJMEY2Mzk0NzYxNURDRTM0NzAwNkE1
OTdDIC8qIERGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaCAqLywKIAkJCQkwRjUwQUYzQjE5M0U4
QjM5MDA2NzRFRTggLyogREZHU3RydWN0dXJlQ2xvYmJlclN0YXRlLmggKi8sCi0JCQkJMEY3OTA4
NTMxOUEyOTBCMjAwRjYzMTBDIC8qIERGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcCAq
LywKLQkJCQkwRjc5MDg1NDE5QTI5MEIyMDBGNjMxMEMgLyogREZHU3RydWN0dXJlUmVnaXN0cmF0
aW9uUGhhc2UuaCAqLywKIAkJCQkwRjJGQ0NGNzE4QTYwMDcwMDAxQTI3RjggLyogREZHVGhyZWFk
RGF0YS5jcHAgKi8sCiAJCQkJMEYyRkNDRjgxOEE2MDA3MDAwMUEyN0Y4IC8qIERGR1RocmVhZERh
dGEuaCAqLywKIAkJCQkwRkMwOTc5RjE0NkIyOEM3MDBDRjI0NDIgLyogREZHVGh1bmtzLmNwcCAq
LywKQEAgLTgwNzYsNiArODA3OSw3IEBACiAJCQkJMEYyMUMyN0QxNEJFNzI3QTAwQURDNjRCIC8q
IENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0E3MTRC
Q0Y1MDcwMDg4NUI0RiAvKiBDb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNzYyMDUx
REI5MjQyOTAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NzlGQzhBMDgxRTMyRTlGMDAwRDg4RjBFIC8qIERGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1MzI0Mzk4MTg1NkE0ODkwMDJFRDY5MiAvKiBDb21iaW5lZERvbWFp
bnMuanNvbiBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0YzMEUxNkY1Q0QwMEIzNDQ2MCAvKiBD
b21tb25JZGVudGlmaWVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxNUYxNUYxNEI3QTczRTAw
NURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MjkxLDcgKzgy
OTUsNiBAQAogCQkJCTBGQzIwQ0I2MTg1MkUyQzYwMEM5RTk1NCAvKiBERkdTdHJlbmd0aFJlZHVj
dGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYzOTQ3ODE1RENFMzRCMDA2QTU5N0Mg
LyogREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1MEFG
M0MxOTNFOEIzOTAwNjc0RUU4IC8qIERGR1N0cnVjdHVyZUNsb2JiZXJTdGF0ZS5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJMEY3OTA4NTYxOUEyOTBCMjAwRjYzMTBDIC8qIERGR1N0cnVjdHVyZVJlZ2lz
dHJhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJGQ0NGRjE4QTYwMDcwMDAxQTI3
RjggLyogREZHVGhyZWFkRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3QTIxNDZCMjhD
QzAwQ0YyNDQyIC8qIERGR1RodW5rcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEzMjgxN0Q1
MUY1NzAwQ0EyQzQwIC8qIERGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuaCBpbiBIZWFkZXJz
ICovLApAQCAtODY3OSw2ICs4NjgyLDcgQEAKIAkJCQlBNTBFNEI2NDE4ODA5REQ1MDA2OEE0NkQg
LyogSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MDNG
QTJBMTg4RjEwNTkwMDExMEYxNCAvKiBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNTEzRTVDMDE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3Rl
ZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTc5ODBDMTZEMUUzQTk0MEUwMEI3MTYx
NSAvKiBERkdSZWdpc3RlcmVkU3RydWN0dXJlU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTEz
RTVDMjE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUM0NDJDQjI1MUE2Q0RCOEMwMDVEM0Q3QyAvKiBKU0lucHV0cy5q
c29uIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RjgxN0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50
MTZBcnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC05OTk3LDcgKzEwMDAxLDYgQEAKIAkJCQkwRkMy
MENCNTE4NTJFMkM2MDBDOUU5NTQgLyogREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjdERjEzQjFFMjk3MTExMDA5NTk1MUIgLyogSlNEZXN0cnVjdGli
bGVPYmplY3RTdWJzcGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjg5M0JEQjE5MzZFMjND
MDAxMjExRjQgLyogREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQkwRjc5MDg1NTE5QTI5MEIyMDBGNjMxMEMgLyogREZHU3RydWN0dXJlUmVnaXN0cmF0aW9u
UGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyRkNDRkUxOEE2MDA3MDAwMUEyN0Y4IC8q
IERGR1RocmVhZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDMDk3QTExNDZCMjhDQTAw
Q0YyNDQyIC8qIERGR1RodW5rcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4QTMyNzE3RDUx
RjU3MDBDQTJDNDAgLyogREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTEwMDM5LDYgKzEwMDQyLDcgQEAKIAkJCQkxNEFEOTExNzFEQ0E5N0ZEMDAxNEY5
RkUgLyogRXZhbENvZGVCbG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDczNDFFMjFEQzJD
RTk2MDBBQTI5QkEgLyogRXZhbEV4ZWN1dGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU0
OTgyMDMxODkxRDBCMDAwODFFNUI4IC8qIEV2ZW50TG9vcC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk3OTgwQzE2QzFFM0E5NDBFMDBCNzE2MTUgLyogREZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNldC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTFDMEZGRjFCMTk0RkQxMDBCNTNGQ0EgLyogRXhjZXB0
aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFODBDMTlCMUQ3NzZBOTgwMDg1MTBDMCAvKiBF
eGNlcHRpb25FdmVudExvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMTJERTBGMTk3
OUQ1RkQwMDA2RkY0RSAvKiBFeGNlcHRpb25GdXp6LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9u
IDIxMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNzI1LDYgKzI3MjUsNyBAQCB2b2lkIENvZGVCbG9jazo6ZGV0
ZXJtaW5lTGl2ZW5lc3MoY29uc3QgCiAgICAgLy8gR0Mgd2Ugc3RpbGwgaGF2ZSBub3QgcHJvdmVk
IGxpdmVuZXNzLCB0aGVuIHRoaXMgY29kZSBibG9jayBpcyB0b2FzdC4KICAgICBib29sIGFsbEFy
ZUxpdmVTb0ZhciA9IHRydWU7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRmZ0NvbW1v
bi0+d2Vha1JlZmVyZW5jZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgQVNTRVJUKCFqc0R5bmFt
aWNDYXN0PENvZGVCbG9jayo+KGRmZ0NvbW1vbi0+d2Vha1JlZmVyZW5jZXNbaV0uZ2V0KCkpKTsK
ICAgICAgICAgaWYgKCFIZWFwOjppc01hcmtlZENvbmN1cnJlbnRseShkZmdDb21tb24tPndlYWtS
ZWZlcmVuY2VzW2ldLmdldCgpKSkgewogICAgICAgICAgICAgYWxsQXJlTGl2ZVNvRmFyID0gZmFs
c2U7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuY3BwCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjYsNjQgKzI2LDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3RydWN0
dXJlU2V0LmgiCiAKLSNpbmNsdWRlICJERkdBYnN0cmFjdFZhbHVlLmgiCiAjaW5jbHVkZSAiVHJh
Y2tlZFJlZmVyZW5jZXMuaCIKICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewogCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLXZvaWQgU3RydWN0dXJlU2V0Ojpm
aWx0ZXIoY29uc3QgREZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcikKLXsKLSAgICBn
ZW5lcmljRmlsdGVyKFsmXSAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIC0+IGJvb2wgeyByZXR1cm4g
b3RoZXIuY29udGFpbnMoc3RydWN0dXJlKTsgfSk7Ci19Ci0KLXZvaWQgU3RydWN0dXJlU2V0Ojpm
aWx0ZXIoU3BlY3VsYXRlZFR5cGUgdHlwZSkKLXsKLSAgICBnZW5lcmljRmlsdGVyKAotICAgICAg
ICBbJl0gKFN0cnVjdHVyZSogc3RydWN0dXJlKSAtPiBib29sIHsKLSAgICAgICAgICAgIHJldHVy
biB0eXBlICYgc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKHN0cnVjdHVyZSk7Ci0gICAgICAgIH0p
OwotfQotCi12b2lkIFN0cnVjdHVyZVNldDo6ZmlsdGVyQXJyYXlNb2RlcyhBcnJheU1vZGVzIGFy
cmF5TW9kZXMpCi17Ci0gICAgZ2VuZXJpY0ZpbHRlcigKLSAgICAgICAgWyZdIChTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkgLT4gYm9vbCB7Ci0gICAgICAgICAgICByZXR1cm4gYXJyYXlNb2RlcyAmIGFy
cmF5TW9kZUZyb21TdHJ1Y3R1cmUoc3RydWN0dXJlKTsKLSAgICAgICAgfSk7Ci19Ci0KLXZvaWQg
U3RydWN0dXJlU2V0OjpmaWx0ZXIoY29uc3QgREZHOjpBYnN0cmFjdFZhbHVlJiBvdGhlcikKLXsK
LSAgICBmaWx0ZXIob3RoZXIubV9zdHJ1Y3R1cmUpOwotICAgIGZpbHRlcihvdGhlci5tX3R5cGUp
OwotICAgIGZpbHRlckFycmF5TW9kZXMob3RoZXIubV9hcnJheU1vZGVzKTsKLX0KLQotI2VuZGlm
IC8vIEVOQUJMRShERkdfSklUKQotCi1TcGVjdWxhdGVkVHlwZSBTdHJ1Y3R1cmVTZXQ6OnNwZWN1
bGF0aW9uRnJvbVN0cnVjdHVyZXMoKSBjb25zdAotewotICAgIFNwZWN1bGF0ZWRUeXBlIHJlc3Vs
dCA9IFNwZWNOb25lOwotICAgIGZvckVhY2goCi0gICAgICAgIFsmXSAoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpIHsKLSAgICAgICAgICAgIG1lcmdlU3BlY3VsYXRpb24ocmVzdWx0LCBzcGVjdWxhdGlv
bkZyb21TdHJ1Y3R1cmUoc3RydWN0dXJlKSk7Ci0gICAgICAgIH0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLUFycmF5TW9kZXMgU3RydWN0dXJlU2V0OjphcnJheU1vZGVzRnJvbVN0cnVjdHVy
ZXMoKSBjb25zdAotewotICAgIEFycmF5TW9kZXMgcmVzdWx0ID0gMDsKLSAgICBmb3JFYWNoKAot
ICAgICAgICBbJl0gKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7Ci0gICAgICAgICAgICBtZXJnZUFy
cmF5TW9kZXMocmVzdWx0LCBhc0FycmF5TW9kZXMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkp
OwotICAgICAgICB9KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiB2b2lkIFN0cnVjdHVyZVNl
dDo6ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkg
Y29uc3QKIHsKICAgICBDb21tYVByaW50ZXIgY29tbWE7CkBAIC05NywxMyArNDQsNSBAQCB2b2lk
IFN0cnVjdHVyZVNldDo6ZHVtcChQcmludFN0cmVhbSYgb3V0CiAgICAgZHVtcEluQ29udGV4dChv
dXQsIG51bGxwdHIpOwogfQogCi12b2lkIFN0cnVjdHVyZVNldDo6dmFsaWRhdGVSZWZlcmVuY2Vz
KGNvbnN0IFRyYWNrZWRSZWZlcmVuY2VzJiB0cmFja2VkUmVmZXJlbmNlcykgY29uc3QKLXsKLSAg
ICBmb3JFYWNoKAotICAgICAgICBbJl0gKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7Ci0gICAgICAg
ICAgICB0cmFja2VkUmVmZXJlbmNlcy5jaGVjayhzdHJ1Y3R1cmUpOwotICAgICAgICB9KTsKLX0K
LQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU2V0LmgJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUs
MTEgKzM1LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIFRyYWNrZWRSZWZlcmVuY2VzOwog
Ci1uYW1lc3BhY2UgREZHIHsKLWNsYXNzIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU7Ci1zdHJ1Y3Qg
QWJzdHJhY3RWYWx1ZTsKLX0KLQogY2xhc3MgU3RydWN0dXJlU2V0IDogcHVibGljIFRpbnlQdHJT
ZXQ8U3RydWN0dXJlKj4gewogcHVibGljOgogICAgIC8vIEkgcmVhbGx5IHdhbnQgdG8gZG8gdGhp
czoKQEAgLTY2LDIwICs2MSw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG9ubHlFbnRyeSgp
OwogICAgIH0KICAgICAKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICB2b2lkIGZpbHRlcihjb25z
dCBERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWUmKTsKLSAgICB2b2lkIGZpbHRlcihTcGVjdWxh
dGVkVHlwZSk7Ci0gICAgdm9pZCBmaWx0ZXJBcnJheU1vZGVzKEFycmF5TW9kZXMpOwotICAgIHZv
aWQgZmlsdGVyKGNvbnN0IERGRzo6QWJzdHJhY3RWYWx1ZSYpOwotI2VuZGlmIC8vIEVOQUJMRShE
RkdfSklUKQotICAgIAotICAgIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbVN0cnVjdHVy
ZXMoKSBjb25zdDsKLSAgICBBcnJheU1vZGVzIGFycmF5TW9kZXNGcm9tU3RydWN0dXJlcygpIGNv
bnN0OwotICAgIAogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250
ZXh0KikgY29uc3Q7CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7Ci0gICAgCi0g
ICAgdm9pZCB2YWxpZGF0ZVJlZmVyZW5jZXMoY29uc3QgVHJhY2tlZFJlZmVyZW5jZXMmKSBjb25z
dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgJKHJldmlzaW9uIDIxMTIyOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogICAgIHZvaWQgZHVtcChQ
cmludFN0cmVhbSYgb3V0KTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIEZp
bHRyYXRpb25SZXN1bHQgZmlsdGVyKFQgbm9kZSwgY29uc3QgU3RydWN0dXJlU2V0JiBzZXQsIFNw
ZWN1bGF0ZWRUeXBlIGFkbWl0dGVkVHlwZXMgPSBTcGVjTm9uZSkKKyAgICBGaWx0cmF0aW9uUmVz
dWx0IGZpbHRlcihUIG5vZGUsIGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIHNldCwgU3Bl
Y3VsYXRlZFR5cGUgYWRtaXR0ZWRUeXBlcyA9IFNwZWNOb25lKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGZpbHRlcihmb3JOb2RlKG5vZGUpLCBzZXQsIGFkbWl0dGVkVHlwZXMpOwogICAgIH0KQEAg
LTE0MSw3ICsxNDEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBmaWx0ZXJDbGFzc0luZm8o
Zm9yTm9kZShub2RlKSwgY2xhc3NJbmZvKTsKICAgICB9CiAKLSAgICBGaWx0cmF0aW9uUmVzdWx0
IGZpbHRlcihBYnN0cmFjdFZhbHVlJiwgY29uc3QgU3RydWN0dXJlU2V0JiwgU3BlY3VsYXRlZFR5
cGUgYWRtaXR0ZWRUeXBlcyA9IFNwZWNOb25lKTsKKyAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRl
cihBYnN0cmFjdFZhbHVlJiwgY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYsIFNwZWN1bGF0
ZWRUeXBlIGFkbWl0dGVkVHlwZXMgPSBTcGVjTm9uZSk7CiAgICAgRmlsdHJhdGlvblJlc3VsdCBm
aWx0ZXJBcnJheU1vZGVzKEFic3RyYWN0VmFsdWUmLCBBcnJheU1vZGVzKTsKICAgICBGaWx0cmF0
aW9uUmVzdWx0IGZpbHRlcihBYnN0cmFjdFZhbHVlJiwgU3BlY3VsYXRlZFR5cGUpOwogICAgIEZp
bHRyYXRpb25SZXN1bHQgZmlsdGVyQnlWYWx1ZShBYnN0cmFjdFZhbHVlJiwgRnJvemVuVmFsdWUp
OwpAQCAtMTU2LDcgKzE1Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmb3JBbGxWYWx1ZXModW5z
aWduZWQgaW5kZXhJbkJsb2NrLCBGdW5jdG9yJik7CiAgICAgCiAgICAgdm9pZCBjbG9iYmVyU3Ry
dWN0dXJlcyh1bnNpZ25lZCBpbmRleEluQmxvY2spOwotICAgIHZvaWQgb2JzZXJ2ZVRyYW5zaXRp
b24odW5zaWduZWQgaW5kZXhJbkJsb2NrLCBTdHJ1Y3R1cmUqIGZyb20sIFN0cnVjdHVyZSogdG8p
OworICAgIHZvaWQgb2JzZXJ2ZVRyYW5zaXRpb24odW5zaWduZWQgaW5kZXhJbkJsb2NrLCBSZWdp
c3RlcmVkU3RydWN0dXJlIGZyb20sIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgdG8pOwogICAgIHZvaWQg
b2JzZXJ2ZVRyYW5zaXRpb25zKHVuc2lnbmVkIGluZGV4SW5CbG9jaywgY29uc3QgVHJhbnNpdGlv
blZlY3RvciYpOwogICAgIHZvaWQgc2V0RGlkQ2xvYmJlcigpOwogICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaAkocmV2aXNpb24gMjExMjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3
ICs3Myw3IEBAIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjoKICAgICBp
ZiAoaXNDZWxsU3BlY3VsYXRpb24odmFsdWUubV90eXBlKSAmJiAhdmFsdWUubV9zdHJ1Y3R1cmUu
aXNUb3AoKSkgewogICAgICAgICBib29sIGFsbFRydWUgPSB0cnVlOwogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSB2YWx1ZS5tX3N0cnVjdHVyZS5zaXplKCk7IGktLTspIHsKLSAgICAgICAgICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gdmFsdWUubV9zdHJ1Y3R1cmVbaV07CisgICAgICAgICAg
ICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IHZhbHVlLm1fc3RydWN0dXJlW2ldOwog
ICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChtX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpCiAgICAgICAgICAg
ICAgICAgfHwgc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBTdHJpbmdUeXBlKSB7CiAg
ICAgICAgICAgICAgICAgYWxsVHJ1ZSA9IGZhbHNlOwpAQCAtMTUyLDcgKzE1Miw3IEBAIGlubGlu
ZSBib29sIGlzVG9UaGlzQW5JZGVudGl0eShib29sIGlzU3QKIAogICAgIGlmICgoaXNTdHJpY3RN
b2RlIHx8ICh2YWx1ZUZvck5vZGUubV90eXBlICYmICEodmFsdWVGb3JOb2RlLm1fdHlwZSAmIH5T
cGVjT2JqZWN0KSkpICYmIHZhbHVlRm9yTm9kZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKSB7CiAg
ICAgICAgIGJvb2wgb3ZlcnJpZGVzVG9UaGlzID0gZmFsc2U7Ci0gICAgICAgIHZhbHVlRm9yTm9k
ZS5tX3N0cnVjdHVyZS5mb3JFYWNoKFsmXShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgeworICAgICAg
ICB2YWx1ZUZvck5vZGUubV9zdHJ1Y3R1cmUuZm9yRWFjaChbJl0oUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBzdHJ1Y3R1cmUpIHsKICAgICAgICAgICAgIFR5cGVJbmZvIHR5cGUgPSBzdHJ1Y3R1cmUtPnR5
cGVJbmZvKCk7CiAgICAgICAgICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpIHx8IHR5cGUudHlw
ZSgpID09IFN0cmluZ1R5cGUgfHwgdHlwZS50eXBlKCkgPT0gU3ltYm9sVHlwZSk7CiAgICAgICAg
ICAgICBpZiAoIWlzU3RyaWN0TW9kZSkKQEAgLTE2NTYsMTAgKzE2NTYsMTAgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogCiAgICAgICAgIC8vIEZJWE1FOiBXZSBj
b3VsZCBkbyBiZXR0ZXIgaGVyZSBpZiB3ZSBwcm92ZSB0aGF0IHRoZQogICAgICAgICAvLyBpbmNv
bWluZyB2YWx1ZSBoYXMgb25seSBhIHNpbmdsZSBzdHJ1Y3R1cmUuCi0gICAgICAgIFN0cnVjdHVy
ZVNldCBzdHJ1Y3R1cmVTZXQ7Ci0gICAgICAgIHN0cnVjdHVyZVNldC5hZGQoZ2xvYmFsT2JqZWN0
LT5vcmlnaW5hbEFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlKEFycmF5V2l0aEludDMyKSk7
Ci0gICAgICAgIHN0cnVjdHVyZVNldC5hZGQoZ2xvYmFsT2JqZWN0LT5vcmlnaW5hbEFycmF5U3Ry
dWN0dXJlRm9ySW5kZXhpbmdUeXBlKEFycmF5V2l0aENvbnRpZ3VvdXMpKTsKLSAgICAgICAgc3Ry
dWN0dXJlU2V0LmFkZChnbG9iYWxPYmplY3QtPm9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVGb3JJbmRl
eGluZ1R5cGUoQXJyYXlXaXRoRG91YmxlKSk7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVT
ZXQgc3RydWN0dXJlU2V0OworICAgICAgICBzdHJ1Y3R1cmVTZXQuYWRkKG1fZ3JhcGgucmVnaXN0
ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5vcmlnaW5hbEFycmF5U3RydWN0dXJlRm9ySW5kZXhp
bmdUeXBlKEFycmF5V2l0aEludDMyKSkpOworICAgICAgICBzdHJ1Y3R1cmVTZXQuYWRkKG1fZ3Jh
cGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5vcmlnaW5hbEFycmF5U3RydWN0dXJl
Rm9ySW5kZXhpbmdUeXBlKEFycmF5V2l0aENvbnRpZ3VvdXMpKSk7CisgICAgICAgIHN0cnVjdHVy
ZVNldC5hZGQobV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm9yaWdpbmFs
QXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGUoQXJyYXlXaXRoRG91YmxlKSkpOwogCiAgICAg
ICAgIGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIHN0cnVjdHVyZVNldCk7CiAgICAgICAgIGJy
ZWFrOwpAQCAtMTg1Niw3ICsxODU2LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeQogICAgICAgICAgICAgLy8gc3RydWN0dXJlLgogICAgICAgICAgICAgZmlsdGVy
KAogICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkMSgpLAotICAgICAgICAgICAgICAgIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnN0cmluZ09iamVjdFN0
cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnN0cmluZ09iamVj
dFN0cnVjdHVyZSgpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTdHJpbmdP
clN0cmluZ09iamVjdFVzZToKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTk2Myw3ICsxOTYzLDcg
QEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgIH0KICAgICAg
ICAgCiAgICAgY2FzZSBOZXdPYmplY3Q6Ci0gICAgICAgIEFTU0VSVChub2RlLT5zdHJ1Y3R1cmUo
KSk7CisgICAgICAgIEFTU0VSVCghIW5vZGUtPnN0cnVjdHVyZSgpLmdldCgpKTsKICAgICAgICAg
Zm9yTm9kZShub2RlKS5zZXQobV9ncmFwaCwgbm9kZS0+c3RydWN0dXJlKCkpOwogICAgICAgICBi
cmVhazsKIApAQCAtMjEyMSw3ICsyMTIxLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG51bGxwdHI7CiAgICAgICAgICAgICBib29sIG9rID0gdHJ1ZTsKICAgICAgICAgICAgIGZvck5v
ZGUobm9kZS0+Y2hpbGQxKCkpLm1fc3RydWN0dXJlLmZvckVhY2goCi0gICAgICAgICAgICAgICAg
WyZdIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgeworICAgICAgICAgICAgICAgIFsmXSAoUmVnaXN0
ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFnbG9i
YWxPYmplY3QpCiAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxPYmplY3QgPSBzdHJ1Y3R1
cmUtPmdsb2JhbE9iamVjdCgpOwogICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChnbG9iYWxP
YmplY3QgIT0gc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSkKQEAgLTIxODQsNyArMjE4NCw3IEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgaWYgKHZh
bHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkKICAgICAgICAgICAgICYmIChub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gQ2VsbFVzZSB8fCAhKHZhbHVlLm1fdHlwZSAmIH5TcGVjQ2VsbCkpKSB7
CiAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVy
cygpW25vZGUtPmlkZW50aWZpZXJOdW1iZXIoKV07Ci0gICAgICAgICAgICBHZXRCeUlkU3RhdHVz
IHN0YXR1cyA9IEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IodmFsdWUubV9zdHJ1Y3R1cmUuc2V0
KCksIHVpZCk7CisgICAgICAgICAgICBHZXRCeUlkU3RhdHVzIHN0YXR1cyA9IEdldEJ5SWRTdGF0
dXM6OmNvbXB1dGVGb3IodmFsdWUubV9zdHJ1Y3R1cmUudG9TdHJ1Y3R1cmVTZXQoKSwgdWlkKTsK
ICAgICAgICAgICAgIGlmIChzdGF0dXMuaXNTaW1wbGUoKSkgewogICAgICAgICAgICAgICAgIC8v
IEZpZ3VyZSBvdXQgd2hhdCB0aGUgcmVzdWx0IGlzIGdvaW5nIHRvIGJlIC0gaXMgaXQgVE9QLCBh
IGNvbnN0YW50LCBvciBtYXliZQogICAgICAgICAgICAgICAgIC8vIHNvbWV0aGluZyBtb3JlIHN1
YnRsZT8KQEAgLTIyMzgsNyArMjIzOCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHkKICAgICBjYXNlIENoZWNrU3RydWN0dXJlOiB7CiAgICAgICAgIEFic3RyYWN0
VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CiAKLSAgICAgICAgU3RydWN0
dXJlU2V0JiBzZXQgPSBub2RlLT5zdHJ1Y3R1cmVTZXQoKTsKKyAgICAgICAgY29uc3QgUmVnaXN0
ZXJlZFN0cnVjdHVyZVNldCYgc2V0ID0gbm9kZS0+c3RydWN0dXJlU2V0KCk7CiAgICAgICAgIAog
ICAgICAgICAvLyBJdCdzIGludGVyZXN0aW5nIHRoYXQgd2UgY291bGQgaGF2ZSBwcm92ZW4gdGhh
dCB0aGUgb2JqZWN0IGhhcyBhIGxhcmdlciBzdHJ1Y3R1cmUgc2V0CiAgICAgICAgIC8vIHRoYXQg
aW5jbHVkZXMgdGhlIHNldCB3ZSdyZSB0ZXN0aW5nLiBJbiB0aGF0IGNhc2Ugd2UgY291bGQgbWFr
ZSB0aGUgc3RydWN0dXJlIGNoZWNrCkBAIC0yMjcwLDExICsyMjcwLDExIEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjk4OAogICAgICAgICAKICAgICAgICAgQWJzdHJh
Y3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgU3RydWN0
dXJlU2V0JiBzZXQgPSBub2RlLT5zdHJ1Y3R1cmVTZXQoKTsKKyAgICAgICAgY29uc3QgUmVnaXN0
ZXJlZFN0cnVjdHVyZVNldCYgc2V0ID0gbm9kZS0+c3RydWN0dXJlU2V0KCk7CiAgICAgICAgIAog
ICAgICAgICBpZiAodmFsdWUudmFsdWUoKSkgewogICAgICAgICAgICAgaWYgKFN0cnVjdHVyZSog
c3RydWN0dXJlID0ganNEeW5hbWljQ2FzdDxTdHJ1Y3R1cmUqPih2YWx1ZS52YWx1ZSgpKSkgewot
ICAgICAgICAgICAgICAgIGlmIChzZXQuY29udGFpbnMoc3RydWN0dXJlKSkgeworICAgICAgICAg
ICAgICAgIGlmIChzZXQuY29udGFpbnMobV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1
cmUpKSkgewogICAgICAgICAgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRy
dWUpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CkBAIC0y
Mjg5LDcgKzIyODksNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
CiAgICAgICAgICAgICAgICAgbm9kZSwKICAgICAgICAgICAgICAgICBbJl0gKE5vZGUqIGluY29t
aW5nKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGlu
Y29taW5nLT5keW5hbWljQ2FzdENvbnN0YW50PFN0cnVjdHVyZSo+KCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChzZXQuY29udGFpbnMoc3RydWN0dXJlKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChzZXQuY29udGFpbnMobV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1
Y3R1cmUpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgYWxsR29vZCA9IGZhbHNlOwpAQCAtMjMw
MCw4ICsyMzAwLDggQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgaWYgKFN0cnVj
dHVyZSogc3RydWN0dXJlID0gc2V0Lm9ubHlTdHJ1Y3R1cmUoKSkgewotICAgICAgICAgICAgZmls
dGVyQnlWYWx1ZShub2RlLT5jaGlsZDEoKSwgKm1fZ3JhcGguZnJlZXplKHN0cnVjdHVyZSkpOwor
ICAgICAgICBpZiAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBzZXQub25seVN0cnVj
dHVyZSgpKSB7CisgICAgICAgICAgICBmaWx0ZXJCeVZhbHVlKG5vZGUtPmNoaWxkMSgpLCAqbV9n
cmFwaC5mcmVlemUoc3RydWN0dXJlLmdldCgpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICAKQEAgLTI0MzIsNyArMjQzMiw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICB9CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJl
OiB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEo
KSk7Ci0gICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc1N1YnNldE9mKFN0cnVjdHVyZVNl
dChub2RlLT5zdHJ1Y3R1cmUoKSkpKQorICAgICAgICBpZiAodmFsdWUubV9zdHJ1Y3R1cmUuaXNT
dWJzZXRPZihSZWdpc3RlcmVkU3RydWN0dXJlU2V0KG5vZGUtPnN0cnVjdHVyZSgpKSkpCiAgICAg
ICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRydWUpOwogICAgICAgICBjbG9iYmVy
U3RydWN0dXJlcyhjbG9iYmVyTGltaXQpOwogICAgICAgICAKQEAgLTI1NDYsMTAgKzI1NDYsMTAg
QEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW25vZGUtPm11bHRpR2V0
QnlPZmZzZXREYXRhKCkuaWRlbnRpZmllck51bWJlcl07CiAKICAgICAgICAgQWJzdHJhY3RWYWx1
ZSBiYXNlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIFN0cnVjdHVyZVNldCBi
YXNlU2V0OworICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0IGJhc2VTZXQ7CiAgICAgICAg
IEFic3RyYWN0VmFsdWUgcmVzdWx0OwogICAgICAgICBmb3IgKGNvbnN0IE11bHRpR2V0QnlPZmZz
ZXRDYXNlJiBnZXRDYXNlIDogbm9kZS0+bXVsdGlHZXRCeU9mZnNldERhdGEoKS5jYXNlcykgewot
ICAgICAgICAgICAgU3RydWN0dXJlU2V0IHNldCA9IGdldENhc2Uuc2V0KCk7CisgICAgICAgICAg
ICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0IHNldCA9IGdldENhc2Uuc2V0KCk7CiAgICAgICAgICAg
ICBzZXQuZmlsdGVyKGJhc2UpOwogICAgICAgICAgICAgaWYgKHNldC5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CkBAIC0yNTkxLDcgKzI1OTEsNyBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIE11
bHRpUHV0QnlPZmZzZXQ6IHsKLSAgICAgICAgU3RydWN0dXJlU2V0IG5ld1NldDsKKyAgICAgICAg
UmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBuZXdTZXQ7CiAgICAgICAgIFRyYW5zaXRpb25WZWN0b3Ig
dHJhbnNpdGlvbnM7CiAgICAgICAgIAogICAgICAgICAvLyBPcmRpbmFyaWx5IHlvdSBoYXZlIHRv
IGJlIGNhcmVmdWwgd2l0aCBjYWxsaW5nIHNldEZvdW5kQ29uc3RhbnRzKCkKQEAgLTI2MDQsNyAr
MjYwNCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAg
ICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG5vZGUtPm11bHRpUHV0QnlPZmZzZXREYXRh
KCkudmFyaWFudHMuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICBjb25zdCBQdXRCeUlkVmFy
aWFudCYgdmFyaWFudCA9IG5vZGUtPm11bHRpUHV0QnlPZmZzZXREYXRhKCkudmFyaWFudHNbaV07
Ci0gICAgICAgICAgICBTdHJ1Y3R1cmVTZXQgdGhpc1NldCA9IHZhcmlhbnQub2xkU3RydWN0dXJl
KCk7CisgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0IHRoaXNTZXQgPSAqbV9ncmFw
aC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSk7CiAgICAgICAgICAgICB0
aGlzU2V0LmZpbHRlcihiYXNlKTsKICAgICAgICAgICAgIGlmICh0aGlzU2V0LmlzRW1wdHkoKSkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTI2MTQsMTEgKzI2MTQsMTIgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgcmVzdWx0aW5n
VmFsdWUubWVyZ2UodGhpc1ZhbHVlKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKHZh
cmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHRoaXNTZXQub25seVN0cnVjdHVyZSgpICE9IHZhcmlhbnQubmV3U3RydWN0dXJl
KCkpIHsKKyAgICAgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG5ld1N0cnVjdHVyZSA9
IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7CisgICAg
ICAgICAgICAgICAgaWYgKHRoaXNTZXQub25seVN0cnVjdHVyZSgpICE9IG5ld1N0cnVjdHVyZSkg
ewogICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9ucy5hcHBlbmQoCi0gICAgICAgICAgICAg
ICAgICAgICAgICBUcmFuc2l0aW9uKHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigp
LCB2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBUcmFu
c2l0aW9uKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JU
cmFuc2l0aW9uKCkpLCBuZXdTdHJ1Y3R1cmUpKTsKICAgICAgICAgICAgICAgICB9IC8vIGVsc2Ug
dGhpcyBpcyByZWFsbHkgYSByZXBsYWNlLgotICAgICAgICAgICAgICAgIG5ld1NldC5hZGQodmFy
aWFudC5uZXdTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICAgICAgbmV3U2V0LmFkZChuZXdTdHJ1
Y3R1cmUpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBBU1NFUlQodmFy
aWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlJlcGxhY2UpOwogICAgICAgICAgICAgICAg
IG5ld1NldC5tZXJnZSh0aGlzU2V0KTsKQEAgLTI3MDUsMjUgKzI3MDYsMjUgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBpZiAodmFsdWUubV9zdHJ1
Y3R1cmUuaXNGaW5pdGUoKSkgewogICAgICAgICAgICAgUHV0QnlJZFN0YXR1cyBzdGF0dXMgPSBQ
dXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgdmFsdWUu
bV9zdHJ1Y3R1cmUuc2V0KCksCisgICAgICAgICAgICAgICAgdmFsdWUubV9zdHJ1Y3R1cmUudG9T
dHJ1Y3R1cmVTZXQoKSwKICAgICAgICAgICAgICAgICBtX2dyYXBoLmlkZW50aWZpZXJzKClbbm9k
ZS0+aWRlbnRpZmllck51bWJlcigpXSwKICAgICAgICAgICAgICAgICBub2RlLT5vcCgpID09IFB1
dEJ5SWREaXJlY3QpOwogCiAgICAgICAgICAgICBpZiAoc3RhdHVzLmlzU2ltcGxlKCkpIHsKLSAg
ICAgICAgICAgICAgICBTdHJ1Y3R1cmVTZXQgbmV3U2V0OworICAgICAgICAgICAgICAgIFJlZ2lz
dGVyZWRTdHJ1Y3R1cmVTZXQgbmV3U2V0OwogICAgICAgICAgICAgICAgIFRyYW5zaXRpb25WZWN0
b3IgdHJhbnNpdGlvbnM7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gc3RhdHVzLm51bVZhcmlhbnRzKCk7IGktLTspIHsKICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQgPSBzdGF0dXNbaV07CiAgICAgICAg
ICAgICAgICAgICAgIGlmICh2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6VHJhbnNp
dGlvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBuZXdT
dHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQubmV3U3RydWN0dXJl
KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbnMuYXBwZW5kKAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLCB2YXJpYW50Lm5l
d1N0cnVjdHVyZSgpKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVy
U3RydWN0dXJlKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgbmV3U2V0LmFkZCh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0cnVj
dHVyZUZvclRyYW5zaXRpb24oKSksIG5ld1N0cnVjdHVyZSkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgbmV3U2V0LmFkZChuZXdTdHJ1Y3R1cmUpOwogICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQua2luZCgpID09IFB1
dEJ5SWRWYXJpYW50OjpSZXBsYWNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NldC5t
ZXJnZSh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5l
d1NldC5tZXJnZSgqbV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5vbGRTdHJ1Y3R1cmUo
KSkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIApAQCAtMzA1OSw3ICszMDYwLDcgQEAgdm9pZCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBYnN0cmFjdFN0YXRlVHlwZT4KIHZv
aWQgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46Om9ic2VydmVUcmFuc2l0
aW9uKAotICAgIHVuc2lnbmVkIGNsb2JiZXJMaW1pdCwgU3RydWN0dXJlKiBmcm9tLCBTdHJ1Y3R1
cmUqIHRvKQorICAgIHVuc2lnbmVkIGNsb2JiZXJMaW1pdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBm
cm9tLCBSZWdpc3RlcmVkU3RydWN0dXJlIHRvKQogewogICAgIEFic3RyYWN0VmFsdWU6OlRyYW5z
aXRpb25PYnNlcnZlciB0cmFuc2l0aW9uT2JzZXJ2ZXIoZnJvbSwgdG8pOwogICAgIGZvckFsbFZh
bHVlcyhjbG9iYmVyTGltaXQsIHRyYW5zaXRpb25PYnNlcnZlcik7CkBAIC0zMTMyLDcgKzMxMzMs
NyBAQCB2b2lkIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIEFic3RyYWN0U3RhdGVUeXBlPgogRmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZmlsdGVyKAotICAgIEFic3RyYWN0VmFsdWUm
IHZhbHVlLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCwgU3BlY3VsYXRlZFR5cGUgYWRtaXR0ZWRU
eXBlcykKKyAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSwgY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVy
ZVNldCYgc2V0LCBTcGVjdWxhdGVkVHlwZSBhZG1pdHRlZFR5cGVzKQogewogICAgIGlmICh2YWx1
ZS5maWx0ZXIobV9ncmFwaCwgc2V0LCBhZG1pdHRlZFR5cGVzKSA9PSBGaWx0cmF0aW9uT0spCiAg
ICAgICAgIHJldHVybiBGaWx0cmF0aW9uT0s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUyLDggKzUyLDEwIEBAIHZvaWQgQWJzdHJhY3RWYWx1ZTo6c2V0KEdyYXBoJiBncmFwaCwg
Y28KIHsKICAgICBpZiAoISF2YWx1ZSAmJiB2YWx1ZS52YWx1ZSgpLmlzQ2VsbCgpKSB7CiAgICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdmFsdWUuc3RydWN0dXJlKCk7Ci0gICAgICAgIGlm
IChncmFwaC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpID09IFN0cnVjdHVyZVJlZ2lzdGVy
ZWRBbmRXYXRjaGVkKSB7Ci0gICAgICAgICAgICBtX3N0cnVjdHVyZSA9IHN0cnVjdHVyZTsKKyAg
ICAgICAgU3RydWN0dXJlUmVnaXN0cmF0aW9uUmVzdWx0IHJlc3VsdDsKKyAgICAgICAgUmVnaXN0
ZXJlZFN0cnVjdHVyZSBSZWdpc3RlcmVkU3RydWN0dXJlID0gZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1
cmUoc3RydWN0dXJlLCByZXN1bHQpOworICAgICAgICBpZiAocmVzdWx0ID09IFN0cnVjdHVyZVJl
Z2lzdGVyZWRBbmRXYXRjaGVkKSB7CisgICAgICAgICAgICBtX3N0cnVjdHVyZSA9IFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmU7CiAgICAgICAgICAgICBpZiAoY2xvYmJlclN0YXRlID09IFN0cnVjdHVyZXNB
cmVDbG9iYmVyZWQpIHsKICAgICAgICAgICAgICAgICBtX2FycmF5TW9kZXMgPSBBTExfQVJSQVlf
TU9ERVM7CiAgICAgICAgICAgICAgICAgbV9zdHJ1Y3R1cmUuY2xvYmJlcigpOwpAQCAtNzcsMTgg
Kzc5LDIzIEBAIHZvaWQgQWJzdHJhY3RWYWx1ZTo6c2V0KEdyYXBoJiBncmFwaCwgY28KIAogdm9p
ZCBBYnN0cmFjdFZhbHVlOjpzZXQoR3JhcGgmIGdyYXBoLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
IHsKKyAgICBzZXQoZ3JhcGgsIGdyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkpOwor
fQorCit2b2lkIEFic3RyYWN0VmFsdWU6OnNldChHcmFwaCYgZ3JhcGgsIFJlZ2lzdGVyZWRTdHJ1
Y3R1cmUgc3RydWN0dXJlKQorewogICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZSk7CiAgICAg
CiAgICAgbV9zdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CiAgICAgbV9hcnJheU1vZGVzID0gYXNBcnJh
eU1vZGVzKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpOwotICAgIG1fdHlwZSA9IHNwZWN1bGF0
aW9uRnJvbVN0cnVjdHVyZShzdHJ1Y3R1cmUpOworICAgIG1fdHlwZSA9IHNwZWN1bGF0aW9uRnJv
bVN0cnVjdHVyZShzdHJ1Y3R1cmUuZ2V0KCkpOwogICAgIG1fdmFsdWUgPSBKU1ZhbHVlKCk7CiAg
ICAgCiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgIGFzc2VydElzUmVnaXN0ZXJlZChncmFw
aCk7CiB9CiAKLXZvaWQgQWJzdHJhY3RWYWx1ZTo6c2V0KEdyYXBoJiBncmFwaCwgY29uc3QgU3Ry
dWN0dXJlU2V0JiBzZXQpCit2b2lkIEFic3RyYWN0VmFsdWU6OnNldChHcmFwaCYgZ3JhcGgsIGNv
bnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIHNldCkKIHsKICAgICBtX3N0cnVjdHVyZSA9IHNl
dDsKICAgICBtX2FycmF5TW9kZXMgPSBzZXQuYXJyYXlNb2Rlc0Zyb21TdHJ1Y3R1cmVzKCk7CkBA
IC0xMDQsOSArMTExLDkgQEAgdm9pZCBBYnN0cmFjdFZhbHVlOjpzZXRUeXBlKEdyYXBoJiBncmFw
aAogICAgIFNwZWN1bGF0ZWRUeXBlIGNlbGxUeXBlID0gdHlwZSAmIFNwZWNDZWxsOwogICAgIGlm
IChjZWxsVHlwZSkgewogICAgICAgICBpZiAoIShjZWxsVHlwZSAmIH5TcGVjU3RyaW5nKSkKLSAg
ICAgICAgICAgIG1fc3RydWN0dXJlID0gZ3JhcGgubV92bS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCk7
CisgICAgICAgICAgICBtX3N0cnVjdHVyZSA9IGdyYXBoLnN0cmluZ1N0cnVjdHVyZTsKICAgICAg
ICAgZWxzZSBpZiAoaXNTeW1ib2xTcGVjdWxhdGlvbihjZWxsVHlwZSkpCi0gICAgICAgICAgICBt
X3N0cnVjdHVyZSA9IGdyYXBoLm1fdm0uc3ltYm9sU3RydWN0dXJlLmdldCgpOworICAgICAgICAg
ICAgbV9zdHJ1Y3R1cmUgPSBncmFwaC5zeW1ib2xTdHJ1Y3R1cmU7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIG1fc3RydWN0dXJlLm1ha2VUb3AoKTsKICAgICAgICAgbV9hcnJheU1vZGVzID0g
QUxMX0FSUkFZX01PREVTOwpAQCAtMjE3LDcgKzIyNCw3IEBAIGJvb2wgQWJzdHJhY3RWYWx1ZTo6
bWVyZ2VPU1JFbnRyeVZhbHVlKEcKICAgICBpZiAoaXNDbGVhcigpKSB7CiAgICAgICAgIEZyb3pl
blZhbHVlKiBmcm96ZW5WYWx1ZSA9IGdyYXBoLmZyZWV6ZSh2YWx1ZSk7CiAgICAgICAgIGlmIChm
cm96ZW5WYWx1ZS0+cG9pbnRzVG9IZWFwKCkpIHsKLSAgICAgICAgICAgIG1fc3RydWN0dXJlID0g
ZnJvemVuVmFsdWUtPnN0cnVjdHVyZSgpOworICAgICAgICAgICAgbV9zdHJ1Y3R1cmUgPSBncmFw
aC5yZWdpc3RlclN0cnVjdHVyZShmcm96ZW5WYWx1ZS0+c3RydWN0dXJlKCkpOwogICAgICAgICAg
ICAgbV9hcnJheU1vZGVzID0gYXNBcnJheU1vZGVzKGZyb3plblZhbHVlLT5zdHJ1Y3R1cmUoKS0+
aW5kZXhpbmdUeXBlKCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV9zdHJ1Y3R1
cmUuY2xlYXIoKTsKQEAgLTIyOSwxMCArMjM2LDkgQEAgYm9vbCBBYnN0cmFjdFZhbHVlOjptZXJn
ZU9TUkVudHJ5VmFsdWUoRwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1lcmdlU3BlY3VsYXRpb24o
bV90eXBlLCBzcGVjdWxhdGlvbkZyb21WYWx1ZSh2YWx1ZSkpOwogICAgICAgICBpZiAoISF2YWx1
ZSAmJiB2YWx1ZS5pc0NlbGwoKSkgewotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSB2YWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCk7Ci0gICAgICAgICAgICBncmFwaC5yZWdpc3Rl
clN0cnVjdHVyZShzdHJ1Y3R1cmUpOworICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBz
dHJ1Y3R1cmUgPSBncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YWx1ZS5hc0NlbGwoKS0+c3RydWN0
dXJlKCkpOwogICAgICAgICAgICAgbWVyZ2VBcnJheU1vZGVzKG1fYXJyYXlNb2RlcywgYXNBcnJh
eU1vZGVzKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKTsKLSAgICAgICAgICAgIG1fc3RydWN0
dXJlLm1lcmdlKFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgIG1fc3RydWN0
dXJlLm1lcmdlKFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSk7CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKG1fdmFsdWUgIT0gdmFsdWUpCiAgICAgICAgICAgICBtX3ZhbHVlID0gSlNW
YWx1ZSgpOwpAQCAtMjU2LDcgKzI2Miw3IEBAIGJvb2wgQWJzdHJhY3RWYWx1ZTo6aXNUeXBlKEdy
YXBoJiBncmFwaCwKIH0KIAogRmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdFZhbHVlOjpmaWx0ZXIo
Ci0gICAgR3JhcGgmIGdyYXBoLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyLCBTcGVjdWxhdGVk
VHlwZSBhZG1pdHRlZFR5cGVzKQorICAgIEdyYXBoJiBncmFwaCwgY29uc3QgUmVnaXN0ZXJlZFN0
cnVjdHVyZVNldCYgb3RoZXIsIFNwZWN1bGF0ZWRUeXBlIGFkbWl0dGVkVHlwZXMpCiB7CiAgICAg
QVNTRVJUKCEoYWRtaXR0ZWRUeXBlcyAmIFNwZWNDZWxsKSk7CiAgICAgCkBAIC0yNzIsMTAgKzI3
OCwxMCBAQCBGaWx0cmF0aW9uUmVzdWx0IEFic3RyYWN0VmFsdWU6OmZpbHRlcigKICAgICBtX3N0
cnVjdHVyZS5maWx0ZXIob3RoZXIpOwogICAgIAogICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCBw
cmlvciB0byB0aGUgYWJvdmUgdHdvIHN0YXRlbWVudHMgd2UgaGFkIChGb28sIFRPUCksIHdoZXJl
Ci0gICAgLy8gRm9vIGlzIGEgU3BlY3VsYXRlZFR5cGUgdGhhdCBpcyBkaXNqb2ludCB3aXRoIHRo
ZSBwYXNzZWQgU3RydWN0dXJlU2V0LiBJbiB0aGF0CisgICAgLy8gRm9vIGlzIGEgU3BlY3VsYXRl
ZFR5cGUgdGhhdCBpcyBkaXNqb2ludCB3aXRoIHRoZSBwYXNzZWQgUmVnaXN0ZXJlZFN0cnVjdHVy
ZVNldC4gSW4gdGhhdAogICAgIC8vIGNhc2UsIHdlIHdpbGwgbm93IGhhdmUgKE5vbmUsIFtzb21l
U3RydWN0dXJlXSkuIEluIGdlbmVyYWwsIHdlIG5lZWQgdG8gbWFrZQogICAgIC8vIHN1cmUgdGhh
dCBuZXcgaW5mb3JtYXRpb24gZ2xlYW5lZCBmcm9tIHRoZSBTcGVjdWxhdGVkVHlwZSBuZWVkcyB0
byBiZSBmZWQgYmFjawotICAgIC8vIGludG8gdGhlIGluZm9ybWF0aW9uIGdsZWFuZWQgZnJvbSB0
aGUgU3RydWN0dXJlU2V0LgorICAgIC8vIGludG8gdGhlIGluZm9ybWF0aW9uIGdsZWFuZWQgZnJv
bSB0aGUgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldC4KICAgICBtX3N0cnVjdHVyZS5maWx0ZXIobV90
eXBlKTsKICAgICAKICAgICBmaWx0ZXJBcnJheU1vZGVzQnlUeXBlKCk7CkBAIC0yODMsNyArMjg5
LDcgQEAgRmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdFZhbHVlOjpmaWx0ZXIoCiAgICAgcmV0dXJu
IG5vcm1hbGl6ZUNsYXJpdHkoZ3JhcGgpOwogfQogCi1GaWx0cmF0aW9uUmVzdWx0IEFic3RyYWN0
VmFsdWU6OmNoYW5nZVN0cnVjdHVyZShHcmFwaCYgZ3JhcGgsIGNvbnN0IFN0cnVjdHVyZVNldCYg
b3RoZXIpCitGaWx0cmF0aW9uUmVzdWx0IEFic3RyYWN0VmFsdWU6OmNoYW5nZVN0cnVjdHVyZShH
cmFwaCYgZ3JhcGgsIGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIG90aGVyKQogewogICAg
IG1fdHlwZSAmPSBvdGhlci5zcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmVzKCk7CiAgICAgbV9hcnJh
eU1vZGVzID0gb3RoZXIuYXJyYXlNb2Rlc0Zyb21TdHJ1Y3R1cmVzKCk7CkBAIC0zNjEsMTAgKzM2
NywxMCBAQCBGaWx0cmF0aW9uUmVzdWx0IEFic3RyYWN0VmFsdWU6OmZpbHRlckJ5CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBBYnN0cmFjdFZhbHVlOjpjb250YWlucyhTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkgY29uc3QKK2Jvb2wgQWJzdHJhY3RWYWx1ZTo6Y29udGFpbnMoUmVnaXN0ZXJl
ZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvdWxkQmVUeXBlKHNw
ZWN1bGF0aW9uRnJvbVN0cnVjdHVyZShzdHJ1Y3R1cmUpKQotICAgICAgICAmJiAobV9hcnJheU1v
ZGVzICYgYXJyYXlNb2RlRnJvbVN0cnVjdHVyZShzdHJ1Y3R1cmUpKQorICAgIHJldHVybiBjb3Vs
ZEJlVHlwZShzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmUoc3RydWN0dXJlLmdldCgpKSkKKyAgICAg
ICAgJiYgKG1fYXJyYXlNb2RlcyAmIGFycmF5TW9kZUZyb21TdHJ1Y3R1cmUoc3RydWN0dXJlLmdl
dCgpKSkKICAgICAgICAgJiYgbV9zdHJ1Y3R1cmUuY29udGFpbnMoc3RydWN0dXJlKTsKIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgJKHJl
dmlzaW9uIDIxMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RW
YWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiUmVzdWx0
VHlwZS5oIgogI2luY2x1ZGUgIlNwZWN1bGF0ZWRUeXBlLmgiCiAjaW5jbHVkZSAiRHVtcENvbnRl
eHQuaCIKLSNpbmNsdWRlICJTdHJ1Y3R1cmVTZXQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAg
LTEyMCw3ICsxMTksNyBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgIHZhbHVlLm9i
c2VydmVJbnZhbGlkYXRpb25Qb2ludCgpOwogICAgIH0KICAgICAKLSAgICB2b2lkIG9ic2VydmVU
cmFuc2l0aW9uKFN0cnVjdHVyZSogZnJvbSwgU3RydWN0dXJlKiB0bykKKyAgICB2b2lkIG9ic2Vy
dmVUcmFuc2l0aW9uKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgZnJvbSwgUmVnaXN0ZXJlZFN0cnVjdHVy
ZSB0bykKICAgICB7CiAgICAgICAgIGlmIChtX3R5cGUgJiBTcGVjQ2VsbCkgewogICAgICAgICAg
ICAgbV9zdHJ1Y3R1cmUub2JzZXJ2ZVRyYW5zaXRpb24oZnJvbSwgdG8pOwpAQCAtMTMzLDcgKzEz
Miw3IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAKICAgICBjbGFzcyBUcmFuc2l0aW9u
T2JzZXJ2ZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAgVHJhbnNpdGlvbk9ic2VydmVyKFN0cnVj
dHVyZSogZnJvbSwgU3RydWN0dXJlKiB0bykKKyAgICAgICAgVHJhbnNpdGlvbk9ic2VydmVyKFJl
Z2lzdGVyZWRTdHJ1Y3R1cmUgZnJvbSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSB0bykKICAgICAgICAg
ICAgIDogbV9mcm9tKGZyb20pCiAgICAgICAgICAgICAsIG1fdG8odG8pCiAgICAgICAgIHsKQEAg
LTE0NCw4ICsxNDMsOCBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgICAgICB2YWx1
ZS5vYnNlcnZlVHJhbnNpdGlvbihtX2Zyb20sIG1fdG8pOwogICAgICAgICB9CiAgICAgcHJpdmF0
ZToKLSAgICAgICAgU3RydWN0dXJlKiBtX2Zyb207Ci0gICAgICAgIFN0cnVjdHVyZSogbV90bzsK
KyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBtX2Zyb207CisgICAgICAgIFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgbV90bzsKICAgICB9OwogICAgIAogICAgIGNsYXNzIFRyYW5zaXRpb25zT2JzZXJ2
ZXIgewpAQCAtMjA5LDcgKzIwOCw4IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAKICAg
ICB2b2lkIHNldChHcmFwaCYsIGNvbnN0IEZyb3plblZhbHVlJiwgU3RydWN0dXJlQ2xvYmJlclN0
YXRlKTsKICAgICB2b2lkIHNldChHcmFwaCYsIFN0cnVjdHVyZSopOwotICAgIHZvaWQgc2V0KEdy
YXBoJiwgY29uc3QgU3RydWN0dXJlU2V0Jik7CisgICAgdm9pZCBzZXQoR3JhcGgmLCBSZWdpc3Rl
cmVkU3RydWN0dXJlKTsKKyAgICB2b2lkIHNldChHcmFwaCYsIGNvbnN0IFJlZ2lzdGVyZWRTdHJ1
Y3R1cmVTZXQmKTsKICAgICAKICAgICAvLyBTZXQgdGhpcyB2YWx1ZSB0byByZXByZXNlbnQgdGhl
IGdpdmVuIHNldCBvZiB0eXBlcyBhcyBwcmVjaXNlbHkgYXMgcG9zc2libGUuCiAgICAgdm9pZCBz
ZXRUeXBlKEdyYXBoJiwgU3BlY3VsYXRlZFR5cGUpOwpAQCAtMzAxLDcgKzMwMSw3IEBAIHN0cnVj
dCBBYnN0cmFjdFZhbHVlIHsKICAgICAvLyBTcGVjQ2VsbC4gSGVuY2UsIGFmdGVyIHRoaXMgY2Fs
bCwgdGhlIHZhbHVlIHdpbGwgbm8gbG9uZ2VyIGhhdmUgYW55IG5vbi1jZWxsIG1lbWJlcnMuIEJ1
dCwgeW91IGNhbgogICAgIC8vIHVzZSBhZG1pdHRlZFR5cGVzIHRvIHByZXNlcnZlIHNvbWUgbm9u
LWNlbGwgdHlwZXMuIE5vdGUgdGhhdCBpdCdzIHdyb25nIGZvciBhZG1pdHRlZFR5cGVzIHRvIG92
ZXJsYXAKICAgICAvLyB3aXRoIFNwZWNDZWxsLgotICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVy
KEdyYXBoJiwgY29uc3QgU3RydWN0dXJlU2V0JiwgU3BlY3VsYXRlZFR5cGUgYWRtaXR0ZWRUeXBl
cyA9IFNwZWNOb25lKTsKKyAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlcihHcmFwaCYsIGNvbnN0
IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmLCBTcGVjdWxhdGVkVHlwZSBhZG1pdHRlZFR5cGVzID0g
U3BlY05vbmUpOwogICAgIAogICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyQXJyYXlNb2RlcyhB
cnJheU1vZGVzKTsKICAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlcihTcGVjdWxhdGVkVHlwZSk7
CkBAIC0zMTEsOSArMzExLDkgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogCiAgICAgRmlsdHJh
dGlvblJlc3VsdCBmaWx0ZXIoR3JhcGgmLCBjb25zdCBJbmZlcnJlZFR5cGU6OkRlc2NyaXB0b3Im
KTsKICAgICAKLSAgICBGaWx0cmF0aW9uUmVzdWx0IGNoYW5nZVN0cnVjdHVyZShHcmFwaCYsIGNv
bnN0IFN0cnVjdHVyZVNldCYpOworICAgIEZpbHRyYXRpb25SZXN1bHQgY2hhbmdlU3RydWN0dXJl
KEdyYXBoJiwgY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYpOwogICAgIAotICAgIGJvb2wg
Y29udGFpbnMoU3RydWN0dXJlKikgY29uc3Q7CisgICAgYm9vbCBjb250YWlucyhSZWdpc3RlcmVk
U3RydWN0dXJlKSBjb25zdDsKIAogICAgIGJvb2wgdmFsaWRhdGUoSlNWYWx1ZSB2YWx1ZSkgY29u
c3QKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0Vs
aW1pbmF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIxMTIyOSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM5Myw3ICszOTMsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUpOwogCi0g
ICAgICAgICAgICAgICAgICAgIGlmICghbm9kZS0+c3RydWN0dXJlU2V0KCkuY29udGFpbnMoc3Ry
dWN0dXJlKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlLT5zdHJ1Y3R1cmVTZXQoKS5j
b250YWlucyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkpKQogICAgICAgICAg
ICAgICAgICAgICAgICAgZXNjYXBlKG5vZGUtPmNoaWxkMSgpLCBub2RlKTsKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAkocmV2aXNpb24gMjExMjI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NjAsMTIgKzM2MCwxMiBAQCBib29sIEFycmF5TW9kZTo6YWxyZWFkeUNoZWNrZWQoR3JhcGgmIGdy
CiAgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc1RvcCgpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSB2YWx1ZS5tX3N0cnVjdHVyZS5z
aXplKCk7IGktLTspIHsKLSAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdmFsdWUu
bV9zdHJ1Y3R1cmVbaV07CisgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVy
ZSA9IHZhbHVlLm1fc3RydWN0dXJlW2ldOwogICAgICAgICAgICAgaWYgKChzdHJ1Y3R1cmUtPmlu
ZGV4aW5nVHlwZSgpICYgSW5kZXhpbmdTaGFwZU1hc2spICE9IHNoYXBlKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGlmICghKHN0cnVjdHVyZS0+aW5kZXhpbmdU
eXBlKCkgJiBJc0FycmF5KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICBpZiAoIWdyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5p
c09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmUoc3RydWN0dXJlKSkKKyAgICAgICAgICAgIGlmICghZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmlzT3JpZ2luYWxBcnJh
eVN0cnVjdHVyZShzdHJ1Y3R1cmUuZ2V0KCkpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM3Nyw3ICszNzcsNyBAQCBi
b29sIEFycmF5TW9kZTo6YWxyZWFkeUNoZWNrZWQoR3JhcGgmIGdyCiAgICAgICAgIGlmICh2YWx1
ZS5tX3N0cnVjdHVyZS5pc1RvcCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSB2YWx1ZS5tX3N0cnVjdHVyZS5zaXplKCk7IGktLTspIHsKLSAg
ICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdmFsdWUubV9zdHJ1Y3R1cmVbaV07Cisg
ICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IHZhbHVlLm1fc3RydWN0
dXJlW2ldOwogICAgICAgICAgICAgaWYgKChzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpICYgSW5k
ZXhpbmdTaGFwZU1hc2spICE9IHNoYXBlKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIGlmICghKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkgJiBJc0FycmF5KSkK
QEAgLTM5Miw3ICszOTIsNyBAQCBib29sIEFycmF5TW9kZTo6YWxyZWFkeUNoZWNrZWQoR3JhcGgm
IGdyCiAgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc1RvcCgpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSB2YWx1ZS5tX3N0cnVjdHVy
ZS5zaXplKCk7IGktLTspIHsKLSAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdmFs
dWUubV9zdHJ1Y3R1cmVbaV07CisgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVj
dHVyZSA9IHZhbHVlLm1fc3RydWN0dXJlW2ldOwogICAgICAgICAgICAgaWYgKChzdHJ1Y3R1cmUt
PmluZGV4aW5nVHlwZSgpICYgSW5kZXhpbmdTaGFwZU1hc2spICE9IHNoYXBlKQogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtNDQwLDcgKzQ0MCw3IEBAIGJvb2wg
QXJyYXlNb2RlOjphbHJlYWR5Q2hlY2tlZChHcmFwaCYgZ3IKICAgICAgICAgICAgIGlmICh2YWx1
ZS5tX3N0cnVjdHVyZS5pc1RvcCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHZhbHVlLm1fc3RydWN0dXJlLnNpemUoKTsgaS0t
OykgewotICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdmFsdWUubV9zdHJ1
Y3R1cmVbaV07CisgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUg
PSB2YWx1ZS5tX3N0cnVjdHVyZVtpXTsKICAgICAgICAgICAgICAgICBpZiAoIWhhc0FueUFycmF5
U3RvcmFnZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGlmICghKHN0cnVjdHVyZS0+aW5kZXhpbmdU
eXBlKCkgJiBJc0FycmF5KSkKQEAgLTQ1NSw3ICs0NTUsNyBAQCBib29sIEFycmF5TW9kZTo6YWxy
ZWFkeUNoZWNrZWQoR3JhcGgmIGdyCiAgICAgICAgICAgICBpZiAodmFsdWUubV9zdHJ1Y3R1cmUu
aXNUb3AoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSB2YWx1ZS5tX3N0cnVjdHVyZS5zaXplKCk7IGktLTspIHsKLSAgICAgICAg
ICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZhbHVlLm1fc3RydWN0dXJlW2ldOworICAg
ICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gdmFsdWUubV9zdHJ1
Y3R1cmVbaV07CiAgICAgICAgICAgICAgICAgaWYgKCFoYXNBbnlBcnJheVN0b3JhZ2Uoc3RydWN0
dXJlLT5pbmRleGluZ1R5cGUoKSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlp
ZnlTbG93UGF0aEdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oCShyZXZpc2lvbiAyMTEyMjkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgICAgIDogSnVt
cGluZ1Nsb3dQYXRoR2VuZXJhdG9yPE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdD4oZnJvbSwgaml0
KQogICAgICAgICAsIG1fb3Aobm9kZS0+b3AoKSkKICAgICAgICAgLCBtX2FycmF5TW9kZShub2Rl
LT5hcnJheU1vZGUoKSkKLSAgICAgICAgLCBtX3N0cnVjdHVyZShub2RlLT5vcCgpID09IEFycmF5
aWZ5VG9TdHJ1Y3R1cmUgPyBub2RlLT5zdHJ1Y3R1cmUoKSA6IDApCisgICAgICAgICwgbV9zdHJ1
Y3R1cmUobm9kZS0+b3AoKSA9PSBBcnJheWlmeVRvU3RydWN0dXJlID8gbm9kZS0+c3RydWN0dXJl
KCkgOiBSZWdpc3RlcmVkU3RydWN0dXJlKCkpCiAgICAgICAgICwgbV9iYXNlR1BSKGJhc2VHUFIp
CiAgICAgICAgICwgbV9wcm9wZXJ0eUdQUihwcm9wZXJ0eUdQUikKICAgICAgICAgLCBtX3RlbXBH
UFIodGVtcEdQUikKQEAgLTExNSw3ICsxMTUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGppdC0+
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgCiAgICAgICAgIGlmIChtX29wID09IEFy
cmF5aWZ5VG9TdHJ1Y3R1cmUpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX3N0cnVjdHVyZSk7Cisg
ICAgICAgICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUuZ2V0KCkpOwogICAgICAgICAgICAgbV9iYWRJ
bmRleGluZ1R5cGVKdW1wLmZpbGwoCiAgICAgICAgICAgICAgICAgaml0LCBqaXQtPm1faml0LmJy
YW5jaFdlYWtTdHJ1Y3R1cmUoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhtX2Jhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIG1fc3Ry
dWN0dXJlKSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0xMzYsNyArMTM2LDcgQEAgcHJvdGVjdGVk
OgogcHJpdmF0ZToKICAgICBOb2RlVHlwZSBtX29wOwogICAgIEFycmF5TW9kZSBtX2FycmF5TW9k
ZTsKLSAgICBTdHJ1Y3R1cmUqIG1fc3RydWN0dXJlOworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
bV9zdHJ1Y3R1cmU7CiAgICAgR1BSUmVnIG1fYmFzZUdQUjsKICAgICBHUFJSZWcgbV9wcm9wZXJ0
eUdQUjsKICAgICBHUFJSZWcgbV90ZW1wR1BSOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOTYwLDcgKzI5NjAsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25z
dGFudEludGVyCiAgICAgICAgICAgICByZXN1bHQgPSBhZGRUb0dyYXBoKENhbGxTdHJpbmdDb25z
dHJ1Y3RvciwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0
KSkpOwogICAgICAgICAKICAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCkKLSAg
ICAgICAgICAgIHJlc3VsdCA9IGFkZFRvR3JhcGgoTmV3U3RyaW5nT2JqZWN0LCBPcEluZm8oZnVu
Y3Rpb24tPmdsb2JhbE9iamVjdCgpLT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSksIHJlc3VsdCk7
CisgICAgICAgICAgICByZXN1bHQgPSBhZGRUb0dyYXBoKE5ld1N0cmluZ09iamVjdCwgT3BJbmZv
KG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgpLT5zdHJp
bmdPYmplY3RTdHJ1Y3R1cmUoKSkpLCByZXN1bHQpOwogICAgICAgICAKICAgICAgICAgc2V0KFZp
cnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CkBAIC0yOTcyLDcgKzI5NzIsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25z
dGFudEludGVyCiAKICAgICAgICAgTm9kZSogcmVzdWx0OwogICAgICAgICBpZiAoYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgPD0gMSkKLSAgICAgICAgICAgIHJlc3VsdCA9IGFkZFRvR3JhcGgo
TmV3T2JqZWN0LCBPcEluZm8oZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgpLT5vYmplY3RTdHJ1Y3R1
cmVGb3JPYmplY3RDb25zdHJ1Y3RvcigpKSk7CisgICAgICAgICAgICByZXN1bHQgPSBhZGRUb0dy
YXBoKE5ld09iamVjdCwgT3BJbmZvKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZnVuY3Rpb24t
Pmdsb2JhbE9iamVjdCgpLT5vYmplY3RTdHJ1Y3R1cmVGb3JPYmplY3RDb25zdHJ1Y3RvcigpKSkp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXN1bHQgPSBhZGRUb0dyYXBoKENhbGxPYmpl
Y3RDb25zdHJ1Y3RvciwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVy
T2Zmc2V0KSkpOwogICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBy
ZXN1bHQpOwpAQCAtMzM4Myw3ICszMzgzLDcgQEAgTm9kZSogQnl0ZUNvZGVQYXJzZXI6OmxvYWQo
CiAgICAgICAgICAgICAvLyBXZSBkaWQgZW1pdCBhIHN0cnVjdHVyZSBjaGVjay4gVGhhdCBtZWFu
cyB0aGF0IHdlIGhhdmUgYW4gb3Bwb3J0dW5pdHkgdG8gZG8gY29uc3RhbnQgZm9sZGluZwogICAg
ICAgICAgICAgLy8gaGVyZSwgc2luY2Ugd2UgZGlkbid0IGRvIGl0IGFib3ZlLgogICAgICAgICAg
ICAgSlNWYWx1ZSBjb25zdGFudCA9IG1fZ3JhcGgudHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eSgKLSAg
ICAgICAgICAgICAgICBiYXNlLT5hc0pTVmFsdWUoKSwgdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSwg
dmFyaWFudC5vZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgYmFzZS0+YXNKU1ZhbHVlKCksICpt
X2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50LnN0cnVjdHVyZVNldCgpKSwgdmFyaWFudC5v
ZmZzZXQoKSk7CiAgICAgICAgICAgICBpZiAoY29uc3RhbnQpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHdlYWtKU0NvbnN0YW50KGNvbnN0YW50KTsKICAgICAgICAgfQpAQCAtMzQyOSw3ICszNDI5
LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgICAgICBpZiAob2spCi0gICAgICAgICAgICBnZXRCeUlkU3RhdHVzLmZp
bHRlcihiYXNlLT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICBnZXRCeUlkU3RhdHVzLmZpbHRl
cihiYXNlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CiAgICAgfQogICAgIAogICAgIE5vZGVUeXBlIGdl
dEJ5SWQ7CkBAIC0zNDgyLDcgKzM0ODIsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVH
ZXRCeUlkKAogICAgICAgICAgICAgaWYgKHZhcmlhbnQuY29uZGl0aW9uU2V0KCkuaXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICAgICAgY2FzZXMuYXBwZW5kKAogICAgICAgICAgICAgICAgICAgICBN
dWx0aUdldEJ5T2Zmc2V0Q2FzZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQuc3Ry
dWN0dXJlU2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAqbV9ncmFwaC5hZGRTdHJ1Y3R1
cmVTZXQodmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICBH
ZXRCeU9mZnNldE1ldGhvZDo6bG9hZCh2YXJpYW50Lm9mZnNldCgpKSkpOwogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQpAQCAtMzQ5NCw3ICszNDk0LDcgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2VzLmFwcGVuZChNdWx0
aUdldEJ5T2Zmc2V0Q2FzZSh2YXJpYW50LnN0cnVjdHVyZVNldCgpLCBtZXRob2QpKTsKKyAgICAg
ICAgICAgIGNhc2VzLmFwcGVuZChNdWx0aUdldEJ5T2Zmc2V0Q2FzZSgqbV9ncmFwaC5hZGRTdHJ1
Y3R1cmVTZXQodmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSksIG1ldGhvZCkpOwogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKG1fZ3JhcGguY29tcGlsYXRpb24oKSkKQEAgLTM2MjEsOCArMzYyMSwxMyBA
QCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgICAgICBpZiAobV9ncmFw
aC5jb21waWxhdGlvbigpKQogICAgICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5ub3Rp
Y2VJbmxpbmVkUHV0QnlJZCgpOwogCi0gICAgICAgIGZvciAoY29uc3QgUHV0QnlJZFZhcmlhbnQm
IHZhcmlhbnQgOiBwdXRCeUlkU3RhdHVzLnZhcmlhbnRzKCkpCisgICAgICAgIGZvciAoY29uc3Qg
UHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBwdXRCeUlkU3RhdHVzLnZhcmlhbnRzKCkpIHsKICAg
ICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJJbmZlcnJlZFR5cGUodmFyaWFudC5yZXF1aXJlZFR5
cGUoKSk7CisgICAgICAgICAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogdmFyaWFudC5v
bGRTdHJ1Y3R1cmUoKSkKKyAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJl
KHN0cnVjdHVyZSk7CisgICAgICAgICAgICBpZiAodmFyaWFudC5raW5kKCkgPT0gUHV0QnlJZFZh
cmlhbnQ6OlRyYW5zaXRpb24pCisgICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVj
dHVyZSh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKTsKKyAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgTXVsdGlQdXRCeU9mZnNldERhdGEqIGRhdGEgPSBtX2dyYXBoLm1fbXVsdGlQdXRCeU9mZnNl
dERhdGEuYWRkKCk7CiAgICAgICAgIGRhdGEtPnZhcmlhbnRzID0gcHV0QnlJZFN0YXR1cy52YXJp
YW50cygpOwpAQCAtMzY1Myw3ICszNjU4LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
UHV0QnlJZCgKICAgICAKICAgICAgICAgTm9kZSogcHJvcGVydHlTdG9yYWdlOwogICAgICAgICBU
cmFuc2l0aW9uKiB0cmFuc2l0aW9uID0gbV9ncmFwaC5tX3RyYW5zaXRpb25zLmFkZCgKLSAgICAg
ICAgICAgIHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLCB2YXJpYW50Lm5ld1N0
cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFu
dC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCkpLCBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJl
KHZhcmlhbnQubmV3U3RydWN0dXJlKCkpKTsKIAogICAgICAgICBpZiAodmFyaWFudC5yZWFsbG9j
YXRlc1N0b3JhZ2UoKSkgewogCkBAIC0zOTAwLDcgKzM5MDUsNyBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBo
LndhdGNocG9pbnRzKCkuYWRkTGF6aWx5KHJhcmVEYXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNo
cG9pbnRTZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgY2FsbGVlIGlzIHN0
aWxsIGxpdmUgdXAgdG8gdGhpcyBwb2ludC4KICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoUGhhbnRvbSwgY2FsbGVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNldChWaXJ0
dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGFkZFRvR3JhcGgo
TmV3T2JqZWN0LCBPcEluZm8oc3RydWN0dXJlKSkpOworICAgICAgICAgICAgICAgICAgICAgICAg
c2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRk
VG9HcmFwaChOZXdPYmplY3QsIE9wSW5mbyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVj
dHVyZSkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBhbHJlYWR5RW1pdHRlZCA9IHRydWU7
CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0zOTE1LDcgKzM5
MjAsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAg
IGNhc2Ugb3BfbmV3X29iamVjdDogewogICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3Rlcihj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwKICAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKE5ld09iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgT3BJbmZvKGN1cnJlbnRJbnN0cnVj
dGlvblszXS51Lm9iamVjdEFsbG9jYXRpb25Qcm9maWxlLT5zdHJ1Y3R1cmUoKSkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoY3VycmVudElu
c3RydWN0aW9uWzNdLnUub2JqZWN0QWxsb2NhdGlvblByb2ZpbGUtPnN0cnVjdHVyZSgpKSkpKTsK
ICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19vYmplY3QpOwogICAgICAgICB9CiAgICAg
ICAgICAgICAKQEAgLTU2NzgsNyArNTY4Myw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFj
a0VudHJ5OjpJbmxpbmUKICAgICAgICAgQVNTRVJUKGNhbGxzaXRlQmxvY2tIZWFkKTsKICAgICAg
ICAgCiAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lID0gYnl0ZUNvZGVQYXJzZXItPm1fZ3JhcGgu
bV9wbGFuLmlubGluZUNhbGxGcmFtZXMtPmFkZCgpOwotICAgICAgICBieXRlQ29kZVBhcnNlci0+
bV9ncmFwaC5mcmVlemUoY29kZUJsb2NrLT5iYXNlbGluZVZlcnNpb24oKSk7CisKICAgICAgICAg
Ly8gVGhlIG93bmVyIGlzIHRoZSBtYWNoaW5lIGNvZGUgYmxvY2ssIGFuZCB3ZSBhbHJlYWR5IGhh
dmUgYSBiYXJyaWVyIG9uIHRoYXQgd2hlbiB0aGUKICAgICAgICAgLy8gcGxhbiBmaW5pc2hlcy4K
ICAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLnNldFdpdGhvdXRX
cml0ZUJhcnJpZXIoY29kZUJsb2NrLT5iYXNlbGluZVZlcnNpb24oKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxsQXJyYXlB
bGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgQ2FsbEFycmF5QWxsb2Nh
dG9yU2xvd1BhdGhHZW5lcmF0bwogcHVibGljOgogICAgIENhbGxBcnJheUFsbG9jYXRvclNsb3dQ
YXRoR2VuZXJhdG9yKAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZnJvbSwgU3Bl
Y3VsYXRpdmVKSVQqIGppdCwgUF9KSVRPcGVyYXRpb25fRVN0WkIgZnVuY3Rpb24sCi0gICAgICAg
IEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzdG9yYWdlR1BSLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgc2l6ZV90IHNpemUpCisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzdG9yYWdl
R1BSLCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgc2l6ZV90IHNpemUpCiAgICAgICAg
IDogSnVtcGluZ1Nsb3dQYXRoR2VuZXJhdG9yPE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdD4oZnJv
bSwgaml0KQogICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCiAgICAgICAgICwgbV9yZXN1
bHRHUFIocmVzdWx0R1BSKQpAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogICAgIFBfSklUT3Bl
cmF0aW9uX0VTdFpCIG1fZnVuY3Rpb247CiAgICAgR1BSUmVnIG1fcmVzdWx0R1BSOwogICAgIEdQ
UlJlZyBtX3N0b3JhZ2VHUFI7Ci0gICAgU3RydWN0dXJlKiBtX3N0cnVjdHVyZTsKKyAgICBSZWdp
c3RlcmVkU3RydWN0dXJlIG1fc3RydWN0dXJlOwogICAgIHNpemVfdCBtX3NpemU7CiAgICAgVmVj
dG9yPFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4sIDI+IG1fcGxhbnM7CiB9OwpAQCAtNzgsNyArNzgs
NyBAQCBjbGFzcyBDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTaXplCiBwdWJsaWM6CiAg
ICAgQ2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yKAog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGpp
dCwgUF9KSVRPcGVyYXRpb25fRVN0WkIgZnVuY3Rpb24sCi0gICAgICAgIEdQUlJlZyByZXN1bHRH
UFIsIFN0cnVjdHVyZSogY29udGlndW91c1N0cnVjdHVyZSwgU3RydWN0dXJlKiBhcnJheVN0b3Jh
Z2VTdHJ1Y3R1cmUsIEdQUlJlZyBzaXplR1BSLCBHUFJSZWcgc3RvcmFnZUdQUikKKyAgICAgICAg
R1BSUmVnIHJlc3VsdEdQUiwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBjb250aWd1b3VzU3RydWN0dXJl
LCBSZWdpc3RlcmVkU3RydWN0dXJlIGFycmF5U3RvcmFnZVN0cnVjdHVyZSwgR1BSUmVnIHNpemVH
UFIsIEdQUlJlZyBzdG9yYWdlR1BSKQogICAgICAgICA6IEp1bXBpbmdTbG93UGF0aEdlbmVyYXRv
cjxNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Q+KGZyb20sIGppdCkKICAgICAgICAgLCBtX2Z1bmN0
aW9uKGZ1bmN0aW9uKQogICAgICAgICAsIG1fcmVzdWx0R1BSKHJlc3VsdEdQUikKQEAgLTk3LDE1
ICs5NywxNSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X3BsYW5zLnNpemUoKTsgKytpKQogICAgICAgICAgICAgaml0LT5zaWxlbnRTcGlsbChtX3BsYW5z
W2ldKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVj
dFNjcmF0Y2hHUFIobV9zaXplR1BSLCBtX3N0b3JhZ2VHUFIpOwotICAgICAgICBpZiAobV9jb250
aWd1b3VzU3RydWN0dXJlICE9IG1fYXJyYXlTdG9yYWdlT3JDb250aWd1b3VzU3RydWN0dXJlKSB7
CisgICAgICAgIGlmIChtX2NvbnRpZ3VvdXNTdHJ1Y3R1cmUuZ2V0KCkgIT0gbV9hcnJheVN0b3Jh
Z2VPckNvbnRpZ3VvdXNTdHJ1Y3R1cmUuZ2V0KCkpIHsKICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIGJpZ0xlbmd0aCA9IGppdC0+bV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6
OkFib3ZlT3JFcXVhbCwgbV9zaXplR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1J
Tl9BUlJBWV9TVE9SQUdFX0NPTlNUUlVDVElPTl9MRU5HVEgpKTsKLSAgICAgICAgICAgIGppdC0+
bV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2NvbnRpZ3VvdXNTdHJ1
Y3R1cmUpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIGppdC0+bV9qaXQubW92ZShTcGVjdWxh
dGl2ZUpJVDo6VHJ1c3RlZEltbVB0cihtX2NvbnRpZ3VvdXNTdHJ1Y3R1cmUpLCBzY3JhdGNoR1BS
KTsKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUgPSBqaXQtPm1faml0Lmp1
bXAoKTsKICAgICAgICAgICAgIGJpZ0xlbmd0aC5saW5rKCZqaXQtPm1faml0KTsKLSAgICAgICAg
ICAgIGppdC0+bV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2FycmF5
U3RvcmFnZU9yQ29udGlndW91c1N0cnVjdHVyZSksIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAg
aml0LT5tX2ppdC5tb3ZlKFNwZWN1bGF0aXZlSklUOjpUcnVzdGVkSW1tUHRyKG1fYXJyYXlTdG9y
YWdlT3JDb250aWd1b3VzU3RydWN0dXJlKSwgc2NyYXRjaEdQUik7CiAgICAgICAgICAgICBkb25l
LmxpbmsoJmppdC0+bV9qaXQpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGppdC0+bV9q
aXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2NvbnRpZ3VvdXNTdHJ1Y3R1
cmUpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIGppdC0+bV9qaXQubW92ZShTcGVjdWxhdGl2
ZUpJVDo6VHJ1c3RlZEltbVB0cihtX2NvbnRpZ3VvdXNTdHJ1Y3R1cmUpLCBzY3JhdGNoR1BSKTsK
ICAgICAgICAgaml0LT5jYWxsT3BlcmF0aW9uKG1fZnVuY3Rpb24sIG1fcmVzdWx0R1BSLCBzY3Jh
dGNoR1BSLCBtX3NpemVHUFIsIG1fc3RvcmFnZUdQUik7CiAgICAgICAgIEdQUlJlZyBjYW5UcmFt
cGxlID0gU3BlY3VsYXRpdmVKSVQ6OnBpY2tDYW5UcmFtcGxlKG1fcmVzdWx0R1BSKTsKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gbV9wbGFucy5zaXplKCk7IGktLTspCkBAIC0xMTcsOCArMTE3
LDggQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBQX0pJVE9wZXJhdGlvbl9FU3RaQiBtX2Z1
bmN0aW9uOwogICAgIEdQUlJlZyBtX3Jlc3VsdEdQUjsKLSAgICBTdHJ1Y3R1cmUqIG1fY29udGln
dW91c1N0cnVjdHVyZTsKLSAgICBTdHJ1Y3R1cmUqIG1fYXJyYXlTdG9yYWdlT3JDb250aWd1b3Vz
U3RydWN0dXJlOworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgbV9jb250aWd1b3VzU3RydWN0dXJl
OworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgbV9hcnJheVN0b3JhZ2VPckNvbnRpZ3VvdXNTdHJ1
Y3R1cmU7CiAgICAgR1BSUmVnIG1fc2l6ZUdQUjsKICAgICBHUFJSZWcgbV9zdG9yYWdlR1BSOwog
ICAgIFZlY3RvcjxTaWxlbnRSZWdpc3RlclNhdmVQbGFuLCAyPiBtX3BsYW5zOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xvd1Bh
dGhHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhbGxDcmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvci5oCShyZXZpc2lvbiAy
MTEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxDcmVhdGVEaXJlY3RB
cmd1bWVudHNTbG93UGF0aEdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIGNsYXNzIENhbGxDcmVhdGVEaXJl
Y3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvciA6IHB1YmxpYyBKdW1waW5nU2xvd1BhdGhHZW5l
cmF0b3I8TWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0PiB7CiBwdWJsaWM6CiAgICAgQ2FsbENyZWF0
ZURpcmVjdEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yKAotICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6SnVtcExpc3QgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgR1BSUmVnIHJlc3VsdEdQUiwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBm
cm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBHUFJSZWcgcmVzdWx0R1BSLCBSZWdpc3RlcmVkU3Ry
dWN0dXJlIHN0cnVjdHVyZSwKICAgICAgICAgR1BSUmVnIGxlbmd0aEdQUiwgdW5zaWduZWQgbWlu
Q2FwYWNpdHkpCiAgICAgICAgIDogSnVtcGluZ1Nsb3dQYXRoR2VuZXJhdG9yPE1hY3JvQXNzZW1i
bGVyOjpKdW1wTGlzdD4oZnJvbSwgaml0KQogICAgICAgICAsIG1fcmVzdWx0R1BSKHJlc3VsdEdQ
UikKQEAgLTY5LDcgKzY5LDcgQEAgcHJvdGVjdGVkOgogICAgIAogcHJpdmF0ZToKICAgICBHUFJS
ZWcgbV9yZXN1bHRHUFI7Ci0gICAgU3RydWN0dXJlKiBtX3N0cnVjdHVyZTsKKyAgICBSZWdpc3Rl
cmVkU3RydWN0dXJlIG1fc3RydWN0dXJlOwogICAgIEdQUlJlZyBtX2xlbmd0aEdQUjsKICAgICB1
bnNpZ25lZCBtX21pbkNhcGFjaXR5OwogICAgIFZlY3RvcjxTaWxlbnRSZWdpc3RlclNhdmVQbGFu
LCAyPiBtX3BsYW5zOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25E
YXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1v
bkRhdGEuY3BwCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbW1vbkRhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw4ICs0Myw4IEBAIHZvaWQg
Q29tbW9uRGF0YTo6bm90aWZ5Q29tcGlsaW5nU3RydWN0dXIKICAgICBwbGFuLnRyYW5zaXRpb25z
LmFkZExhemlseSgKICAgICAgICAgY29kZUJsb2NrLAogICAgICAgICBub2RlLT5vcmlnaW4uc2Vt
YW50aWMuY29kZU9yaWdpbk93bmVyKCksCi0gICAgICAgIG5vZGUtPnRyYW5zaXRpb24oKS0+cHJl
dmlvdXMsCi0gICAgICAgIG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dCk7CisgICAgICAgIG5vZGUt
PnRyYW5zaXRpb24oKS0+cHJldmlvdXMuZ2V0KCksCisgICAgICAgIG5vZGUtPnRyYW5zaXRpb24o
KS0+bmV4dC5nZXQoKSk7CiB9CiAKIENhbGxTaXRlSW5kZXggQ29tbW9uRGF0YTo6YWRkQ29kZU9y
aWdpbihDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjEx
MjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw3ICsxNDUsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICAgICAgICAgIGNhc2UgQXJyYXlpZnlUb1N0
cnVjdHVyZTogewogICAgICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gbV9zdGF0
ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVTZXQg
c2V0OworICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgc2V0OwogICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IEFycmF5aWZ5VG9TdHJ1Y3R1cmUpCiAgICAgICAg
ICAgICAgICAgICAgIHNldCA9IG5vZGUtPnN0cnVjdHVyZSgpOwogICAgICAgICAgICAgICAgIGVs
c2UKQEAgLTIwNiwxMSArMjA2LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlSW1tZWRpYXRlOiB7CiAgICAgICAgICAgICAgICAg
QWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwot
ICAgICAgICAgICAgICAgIFN0cnVjdHVyZVNldCYgc2V0ID0gbm9kZS0+c3RydWN0dXJlU2V0KCk7
CisgICAgICAgICAgICAgICAgY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgc2V0ID0gbm9k
ZS0+c3RydWN0dXJlU2V0KCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYg
KHZhbHVlLnZhbHVlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0ganNEeW5hbWljQ2FzdDxTdHJ1Y3R1cmUqPih2YWx1ZS52YWx1ZSgpKSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHNldC5jb250YWlucyhzdHJ1Y3R1cmUpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoc2V0LmNvbnRhaW5zKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1
Y3R1cmUoc3RydWN0dXJlKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2ludGVy
cHJldGVyLmV4ZWN1dGUoaW5kZXhJbkJsb2NrKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGltaW5hdGVk
ID0gdHJ1ZTsKQEAgLTIyNSw3ICsyMjUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICAgICAgbm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgIFsmXSAoTm9kZSogaW5jb21pbmcp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBpbmNvbWluZy0+ZHluYW1pY0Nhc3RDb25zdGFudDxTdHJ1Y3R1cmUqPigpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXQuY29udGFpbnMoc3RydWN0dXJlKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldC5jb250YWlucyhtX2dyYXBoLnJl
Z2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhbGxHb29kID0gZmFsc2U7CkBAIC00MjEsNyArNDIxLDkgQEAg
cHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRh
LnZhcmlhbnRzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgIFB1dEJ5SWRWYXJp
YW50JiB2YXJpYW50ID0gZGF0YS52YXJpYW50c1tpXTsKLSAgICAgICAgICAgICAgICAgICAgdmFy
aWFudC5vbGRTdHJ1Y3R1cmUoKS5maWx0ZXIoYmFzZVZhbHVlKTsKKyAgICAgICAgICAgICAgICAg
ICAgdmFyaWFudC5vbGRTdHJ1Y3R1cmUoKS5nZW5lcmljRmlsdGVyKFsmXSAoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpIC0+IGJvb2wgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJhc2VW
YWx1ZS5jb250YWlucyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkpOworICAg
ICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgIGlmICh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgZGF0YS52YXJpYW50c1tpLS1dID0gZGF0YS52YXJpYW50cy5sYXN0KCk7
CkBAIC00NjAsMTIgKzQ2MiwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1faW50ZXJw
cmV0ZXIuZXhlY3V0ZShpbmRleEluQmxvY2spOyAvLyBQdXNoIENGQSBvdmVyIHRoaXMgbm9kZSBh
ZnRlciB3ZSBnZXQgdGhlIHN0YXRlIGJlZm9yZS4KICAgICAgICAgICAgICAgICBhbHJlYWR5SGFu
ZGxlZCA9IHRydWU7IC8vIERvbid0IGFsbG93IHRoZSBkZWZhdWx0IGNvbnN0YW50IGZvbGRlciB0
byBkbyB0aGluZ3MgdG8gdGhpcy4KIAotICAgICAgICAgICAgICAgIGlmIChiYXNlVmFsdWUubV9z
dHJ1Y3R1cmUuaXNUb3AoKSB8fCBiYXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNDbG9iYmVyZWQoKQor
ICAgICAgICAgICAgICAgIGlmICghYmFzZVZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkKICAg
ICAgICAgICAgICAgICAgICAgfHwgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVk
VXNlIHx8IChiYXNlVmFsdWUubV90eXBlICYgflNwZWNDZWxsKSkpCiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIEdldEJ5SWRTdGF0
dXMgc3RhdHVzID0gR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKLSAgICAgICAgICAgICAgICAg
ICAgYmFzZVZhbHVlLm1fc3RydWN0dXJlLnNldCgpLCBtX2dyYXBoLmlkZW50aWZpZXJzKClbaWRl
bnRpZmllck51bWJlcl0pOworICAgICAgICAgICAgICAgICAgICBiYXNlVmFsdWUubV9zdHJ1Y3R1
cmUudG9TdHJ1Y3R1cmVTZXQoKSwgbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1i
ZXJdKTsKICAgICAgICAgICAgICAgICBpZiAoIXN0YXR1cy5pc1NpbXBsZSgpKQogICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKQEAgLTQ5MCw3ICs0OTIsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIGZvciAoY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlh
bnQgOiBzdGF0dXMudmFyaWFudHMoKSkgewogICAgICAgICAgICAgICAgICAgICBkYXRhLT5jYXNl
cy5hcHBlbmQoCiAgICAgICAgICAgICAgICAgICAgICAgICBNdWx0aUdldEJ5T2Zmc2V0Q2FzZSgK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50LnN0cnVjdHVyZVNldCgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICptX2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50
LnN0cnVjdHVyZVNldCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRCeU9mZnNl
dE1ldGhvZDo6bG9hZCh2YXJpYW50Lm9mZnNldCgpKSkpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBkYXRhLT5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsK
QEAgLTUxNSwxMiArNTE3LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9pbnRlcnBy
ZXRlci5leGVjdXRlKGluZGV4SW5CbG9jayk7IC8vIFB1c2ggQ0ZBIG92ZXIgdGhpcyBub2RlIGFm
dGVyIHdlIGdldCB0aGUgc3RhdGUgYmVmb3JlLgogICAgICAgICAgICAgICAgIGFscmVhZHlIYW5k
bGVkID0gdHJ1ZTsgLy8gRG9uJ3QgYWxsb3cgdGhlIGRlZmF1bHQgY29uc3RhbnQgZm9sZGVyIHRv
IGRvIHRoaW5ncyB0byB0aGlzLgogCi0gICAgICAgICAgICAgICAgaWYgKGJhc2VWYWx1ZS5tX3N0
cnVjdHVyZS5pc1RvcCgpIHx8IGJhc2VWYWx1ZS5tX3N0cnVjdHVyZS5pc0Nsb2JiZXJlZCgpKQor
ICAgICAgICAgICAgICAgIGlmICghYmFzZVZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpCiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIFB1dEJ5SWRTdGF0dXMgc3RhdHVzID0gUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iob3JpZ2luLnNlbWFudGlj
KSwKLSAgICAgICAgICAgICAgICAgICAgYmFzZVZhbHVlLm1fc3RydWN0dXJlLnNldCgpLAorICAg
ICAgICAgICAgICAgICAgICBiYXNlVmFsdWUubV9zdHJ1Y3R1cmUudG9TdHJ1Y3R1cmVTZXQoKSwK
ICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1i
ZXJdLAogICAgICAgICAgICAgICAgICAgICBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QpOwog
ICAgICAgICAgICAgICAgIApAQCAtNzEzLDcgKzcxNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8v
IFdlIGFyZW4ndCBzZXQgdXAgdG8gaGFuZGxlIHByb3RvdHlwZSBzdHVmZi4KICAgICAgICAgREZH
X0FTU0VSVChtX2dyYXBoLCBub2RlLCB2YXJpYW50LmNvbmRpdGlvblNldCgpLmlzRW1wdHkoKSk7
CiAKLSAgICAgICAgaWYgKEpTVmFsdWUgdmFsdWUgPSBtX2dyYXBoLnRyeUdldENvbnN0YW50UHJv
cGVydHkoYmFzZVZhbHVlLm1fdmFsdWUsIHZhcmlhbnQuc3RydWN0dXJlU2V0KCksIHZhcmlhbnQu
b2Zmc2V0KCkpKSB7CisgICAgICAgIGlmIChKU1ZhbHVlIHZhbHVlID0gbV9ncmFwaC50cnlHZXRD
b25zdGFudFByb3BlcnR5KGJhc2VWYWx1ZS5tX3ZhbHVlLCAqbV9ncmFwaC5hZGRTdHJ1Y3R1cmVT
ZXQodmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSksIHZhcmlhbnQub2Zmc2V0KCkpKSB7CiAgICAgICAg
ICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG5vZGUsIG1fZ3JhcGguZnJlZXplKHZhbHVl
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTc1OSw3ICs3NjEsNyBAQCBw
cml2YXRlOgogICAgICAgICBUcmFuc2l0aW9uKiB0cmFuc2l0aW9uID0gMDsKICAgICAgICAgaWYg
KHZhcmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uKSB7CiAgICAgICAg
ICAgICB0cmFuc2l0aW9uID0gbV9ncmFwaC5tX3RyYW5zaXRpb25zLmFkZCgKLSAgICAgICAgICAg
ICAgICB2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKSwgdmFyaWFudC5uZXdTdHJ1
Y3R1cmUoKSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJp
YW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKSksIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1
cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkpOwogICAgICAgICB9CiAKICAgICAgICAgRWRnZSBw
cm9wZXJ0eVN0b3JhZ2U7CkBAIC04MjEsNiArODIzLDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBh
ZGRCYXNlQ2hlY2soCiAgICAgICAgIHVuc2lnbmVkIGluZGV4SW5CbG9jaywgTm9kZSogbm9kZSwg
Y29uc3QgQWJzdHJhY3RWYWx1ZSYgYmFzZVZhbHVlLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCkK
ICAgICB7CisgICAgICAgIGFkZEJhc2VDaGVjayhpbmRleEluQmxvY2ssIG5vZGUsIGJhc2VWYWx1
ZSwgKm1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHNldCkpOworICAgIH0KKworICAgIHZvaWQgYWRk
QmFzZUNoZWNrKAorICAgICAgICB1bnNpZ25lZCBpbmRleEluQmxvY2ssIE5vZGUqIG5vZGUsIGNv
bnN0IEFic3RyYWN0VmFsdWUmIGJhc2VWYWx1ZSwgY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNl
dCYgc2V0KQorICAgIHsKICAgICAgICAgaWYgKCFiYXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNTdWJz
ZXRPZihzZXQpKSB7CiAgICAgICAgICAgICAvLyBBcmlzZXMgd2hlbiB3ZSBwcnVuZSBNdWx0aUdl
dEJ5T2Zmc2V0LiBXZSBjb3VsZCBoYXZlIGEKICAgICAgICAgICAgIC8vIE11bHRpR2V0QnlPZmZz
ZXQgd2l0aCBhIHNpbmdsZSB2YXJpYW50IHRoYXQgY2hlY2tzIGZvciBzdHJ1Y3R1cmUgUywKQEAg
LTgyOCw3ICs4MzYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgQVNTRVJUKG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAg
ICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2tTdHJ1Y3R1cmUsIG5vZGUtPm9yaWdp
biwKLSAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoc2V0KSks
IG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5hZGRTdHJ1
Y3R1cmVTZXQoc2V0LnRvU3RydWN0dXJlU2V0KCkpKSwgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIApAQCAtODM4LDggKzg0NiwxMiBAQCBw
cml2YXRlOgogICAgIAogICAgIHZvaWQgYWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKE5vZGVP
cmlnaW4gb3JpZ2luLCB1bnNpZ25lZCBpbmRleEluQmxvY2ssIEpTQ2VsbCogY2VsbCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBpZiAobV9ncmFwaC5yZWdpc3RlclN0cnVj
dHVyZShjZWxsLT5zdHJ1Y3R1cmUoKSkgPT0gU3RydWN0dXJlUmVnaXN0ZXJlZEFuZFdhdGNoZWQp
Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIHsKKyAgICAgICAgICAgIFN0cnVjdHVyZVJl
Z2lzdHJhdGlvblJlc3VsdCByZXN1bHQ7CisgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3Ry
dWN0dXJlKGNlbGwtPnN0cnVjdHVyZSgpLCByZXN1bHQpOworICAgICAgICAgICAgaWYgKHJlc3Vs
dCA9PSBTdHJ1Y3R1cmVSZWdpc3RlcmVkQW5kV2F0Y2hlZCkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1
cmUoc3RydWN0dXJlKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNp
cmVkV2Vha1JlZmVyZW5jZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmNwcAkocmV2aXNpb24gMjExMjI5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3MiwxMiBAQCB2b2lkIERlc2lyZWRXZWFrUmVmZXJlbmNl
czo6cmVhbGx5QWRkKFZNCiAgICAgICAgICAgICBjb21tb24tPndlYWtTdHJ1Y3R1cmVSZWZlcmVu
Y2VzLmFwcGVuZCgKICAgICAgICAgICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPih2bSwg
bV9jb2RlQmxvY2ssIHN0cnVjdHVyZSkpOwogICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
Ly8gVGhlcmUgYXJlIHdlaXJkIHJlbGF0aW9uc2hpcHMgaW4gaG93IG9wdGltaXplZCBDb2RlQmxv
Y2tzCisgICAgICAgICAgICAvLyBwb2ludCB0byBvdGhlciBDb2RlQmxvY2tzLiBXZSBkb24ndCB3
YW50IHRvIGhhdmUgdGhlbSBiZQorICAgICAgICAgICAgLy8gcGFydCBvZiB0aGUgd2VhayBwb2lu
dGVyIHNldC4gRm9yIGV4YW1wbGUsIGFuIG9wdGltaXplZCBDb2RlQmxvY2sKKyAgICAgICAgICAg
IC8vIGhhdmluZyBhIHdlYWsgcG9pbnRlciB0byBpdHNlbGYgd2lsbCBjYXVzZSBpdCB0byBnZXQg
Y29sbGVjdGVkLgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWpzRHluYW1pY0Nhc3Q8Q29k
ZUJsb2NrKj4odGFyZ2V0KSk7CisKICAgICAgICAgICAgIGNvbW1vbi0+d2Vha1JlZmVyZW5jZXMu
YXBwZW5kKAogICAgICAgICAgICAgICAgIFdyaXRlQmFycmllcjxKU0NlbGw+KHZtLCBtX2NvZGVC
bG9jaywgdGFyZ2V0KSk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMjExMjI5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM2NSw3
ICsyMzY1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlKSB7CiAg
ICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIEFycmF5aWZ5VG9TdHJ1Y3R1
cmUsIG9yaWdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhzdHJ1Y3R1cmUpLCBP
cEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgRWRnZShhcnJheSwgQ2VsbFVzZSksIGluZGV4RWRn
ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5yZWdpc3RlclN0cnVj
dHVyZShzdHJ1Y3R1cmUpKSwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIEVkZ2UoYXJyYXks
IENlbGxVc2UpLCBpbmRleEVkZ2UpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIEFycmF5aWZ5LCBvcmlnaW4sCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMjExMjI5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTg4LDYgKzg4LDEwIEBAIEdyYXBoOjpHcmFwaChWTSYgdm0sIFBsYW4mIHBsYW4sIExvbmdM
aXYKICAgICAKICAgICBtX2luZGV4aW5nQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb3dJbmRl
eGluZz4oKnRoaXMpOwogICAgIG1fYWJzdHJhY3RWYWx1ZXNDYWNoZSA9IHN0ZDo6bWFrZV91bmlx
dWU8Rmxvd01hcDxBYnN0cmFjdFZhbHVlPj4oKnRoaXMpOworCisgICAgcmVnaXN0ZXJTdHJ1Y3R1
cmUodm0uc3RydWN0dXJlU3RydWN0dXJlLmdldCgpKTsKKyAgICB0aGlzLT5zdHJpbmdTdHJ1Y3R1
cmUgPSByZWdpc3RlclN0cnVjdHVyZSh2bS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOworICAgIHRo
aXMtPnN5bWJvbFN0cnVjdHVyZSA9IHJlZ2lzdGVyU3RydWN0dXJlKHZtLnN5bWJvbFN0cnVjdHVy
ZS5nZXQoKSk7CiB9CiAKIEdyYXBoOjp+R3JhcGgoKQpAQCAtMjQ1LDE1ICsyNDksMTUgQEAgdm9p
ZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdAogICAgIGlmIChub2RlLT5oYXNQ
cm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcigpKQogICAgICAgICBvdXQucHJpbnQoY29tbWEsIG5v
ZGUtPnByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yKCkpOwogICAgIGlmIChub2RlLT5oYXNTdHJ1
Y3R1cmVTZXQoKSkKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCBpbkNvbnRleHQobm9kZS0+c3Ry
dWN0dXJlU2V0KCksIGNvbnRleHQpKTsKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCBpbkNvbnRl
eHQobm9kZS0+c3RydWN0dXJlU2V0KCkudG9TdHJ1Y3R1cmVTZXQoKSwgY29udGV4dCkpOwogICAg
IGlmIChub2RlLT5oYXNTdHJ1Y3R1cmUoKSkKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCBpbkNv
bnRleHQoKm5vZGUtPnN0cnVjdHVyZSgpLCBjb250ZXh0KSk7CisgICAgICAgIG91dC5wcmludChj
b21tYSwgaW5Db250ZXh0KCpub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSwgY29udGV4dCkpOwogICAg
IGlmIChub2RlLT5oYXNUcmFuc2l0aW9uKCkpIHsKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBw
b2ludGVyRHVtcEluQ29udGV4dChub2RlLT50cmFuc2l0aW9uKCksIGNvbnRleHQpKTsKICNpZiBV
U0UoSlNWQUxVRTY0KQogICAgICAgICBvdXQucHJpbnQoIiwgSUQ6Iiwgbm9kZS0+dHJhbnNpdGlv
bigpLT5uZXh0LT5pZCgpKTsKICNlbHNlCi0gICAgICAgIG91dC5wcmludCgiLCBJRDoiLCBSYXdQ
b2ludGVyKG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dCkpOworICAgICAgICBvdXQucHJpbnQoIiwg
SUQ6IiwgUmF3UG9pbnRlcihub2RlLT50cmFuc2l0aW9uKCktPm5leHQuZ2V0KCkpKTsKICNlbmRp
ZgogICAgIH0KICAgICBpZiAobm9kZS0+aGFzQ2VsbE9wZXJhbmQoKSkgewpAQCAtMTIwNyw3ICsx
MjExLDcgQEAgdW5zaWduZWQgR3JhcGg6OnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZvcgogfQogCiBK
U1ZhbHVlIEdyYXBoOjp0cnlHZXRDb25zdGFudFByb3BlcnR5KAotICAgIEpTVmFsdWUgYmFzZSwg
Y29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkK
KyAgICBKU1ZhbHVlIGJhc2UsIGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVy
ZVNldCwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogewogICAgIGlmICghYmFzZSB8fCAhYmFzZS5p
c09iamVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwpAQCAtMTIxNSw4ICsxMjE5LDcg
QEAgSlNWYWx1ZSBHcmFwaDo6dHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eSgKICAgICBKU09iamVjdCog
b2JqZWN0ID0gYXNPYmplY3QoYmFzZSk7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gc3Ry
dWN0dXJlU2V0LnNpemUoKTsgaS0tOykgewotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IHN0cnVjdHVyZVNldFtpXTsKLSAgICAgICAgYXNzZXJ0SXNSZWdpc3RlcmVkKHN0cnVjdHVyZSk7
CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gc3RydWN0dXJlU2V0W2ld
OwogICAgICAgICAKICAgICAgICAgV2F0Y2hwb2ludFNldCogc2V0ID0gc3RydWN0dXJlLT5wcm9w
ZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNldChvZmZzZXQpOwogICAgICAgICBpZiAoIXNldCB8
fCAhc2V0LT5pc1N0aWxsVmFsaWQoKSkKQEAgLTEyNDgsNyArMTI1MSw3IEBAIEpTVmFsdWUgR3Jh
cGg6OnRyeUdldENvbnN0YW50UHJvcGVydHkoCiAgICAgLy8gaW5jb21wYXRpYmxlIHdpdGggdGhl
IGdldERpcmVjdCB3ZSdyZSB0cnlpbmcgdG8gZG8uIFRoZSBlYXNpZXN0IHdheSB0byBkbyB0aGF0
IGlzIHRvCiAgICAgLy8gZGV0ZXJtaW5lIGlmIHRoZSBzdHJ1Y3R1cmUgYmVsb25ncyB0byB0aGUg
cHJvdmVuIHNldC4KICAgICAKLSAgICBpZiAoIXN0cnVjdHVyZVNldC5jb250YWlucyhvYmplY3Qt
PnN0cnVjdHVyZSgpKSkKKyAgICBpZiAoIXN0cnVjdHVyZVNldC50b1N0cnVjdHVyZVNldCgpLmNv
bnRhaW5zKG9iamVjdC0+c3RydWN0dXJlKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwog
ICAgIAogICAgIHJldHVybiBvYmplY3QtPmdldERpcmVjdChvZmZzZXQpOwpAQCAtMTI1Niw3ICsx
MjU5LDcgQEAgSlNWYWx1ZSBHcmFwaDo6dHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eSgKIAogSlNWYWx1
ZSBHcmFwaDo6dHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eShKU1ZhbHVlIGJhc2UsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiB7Ci0gICAgcmV0dXJuIHRyeUdldENv
bnN0YW50UHJvcGVydHkoYmFzZSwgU3RydWN0dXJlU2V0KHN0cnVjdHVyZSksIG9mZnNldCk7Cisg
ICAgcmV0dXJuIHRyeUdldENvbnN0YW50UHJvcGVydHkoYmFzZSwgUmVnaXN0ZXJlZFN0cnVjdHVy
ZVNldChyZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpKSwgb2Zmc2V0KTsKIH0KIAogSlNWYWx1
ZSBHcmFwaDo6dHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eSgKQEAgLTEyNzgsMTMgKzEyODEsMTMgQEAg
SlNWYWx1ZSBHcmFwaDo6dHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eShjbwogfQogCiBBYnN0cmFjdFZh
bHVlIEdyYXBoOjppbmZlcnJlZFZhbHVlRm9yUHJvcGVydHkoCi0gICAgY29uc3QgU3RydWN0dXJl
U2V0JiBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUg
Y2xvYmJlclN0YXRlKQorICAgIGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIGJhc2UsIFVu
aXF1ZWRTdHJpbmdJbXBsKiB1aWQsIFN0cnVjdHVyZUNsb2JiZXJTdGF0ZSBjbG9iYmVyU3RhdGUp
CiB7CiAgICAgQWJzdHJhY3RWYWx1ZSByZXN1bHQ7CiAgICAgYmFzZS5mb3JFYWNoKAotICAgICAg
ICBbJl0gKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7CisgICAgICAgIFsmXSAoUmVnaXN0ZXJlZFN0
cnVjdHVyZSBzdHJ1Y3R1cmUpIHsKICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUgdmFsdWU7Ci0g
ICAgICAgICAgICB2YWx1ZS5zZXQoKnRoaXMsIGluZmVycmVkVHlwZUZvclByb3BlcnR5KHN0cnVj
dHVyZSwgdWlkKSk7CisgICAgICAgICAgICB2YWx1ZS5zZXQoKnRoaXMsIGluZmVycmVkVHlwZUZv
clByb3BlcnR5KHN0cnVjdHVyZS5nZXQoKSwgdWlkKSk7CiAgICAgICAgICAgICByZXN1bHQubWVy
Z2UodmFsdWUpOwogICAgICAgICB9KTsKICAgICBpZiAoY2xvYmJlclN0YXRlID09IFN0cnVjdHVy
ZXNBcmVDbG9iYmVyZWQpCkBAIC0xNDEzLDYxICsxNDE2LDE4IEBAIHZvaWQgR3JhcGg6OnZpc2l0
Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHYKICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJl
ZCh2YWx1ZS0+dmFsdWUoKSk7CiAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQodmFs
dWUtPnN0cnVjdHVyZSgpKTsKICAgICB9Ci0gICAgCi0gICAgZm9yIChCbG9ja0luZGV4IGJsb2Nr
SW5kZXggPSBudW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewotICAgICAgICBCYXNpY0Jsb2Nr
KiBibG9jayA9IHRoaXMtPmJsb2NrKGJsb2NrSW5kZXgpOwotICAgICAgICBpZiAoIWJsb2NrKQot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAotICAgICAgICBmb3IgKGF1dG8qIG5vZGUg
OiAqYmxvY2spIHsKLSAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAg
ICAgY2FzZSBDaGVja1N0cnVjdHVyZToKLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBub2RlLT5zdHJ1Y3R1cmVTZXQoKS5zaXplKCk7IGktLTspCi0gICAgICAgICAgICAgICAgICAg
IHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQobm9kZS0+c3RydWN0dXJlU2V0KClbaV0pOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSBO
ZXdPYmplY3Q6Ci0gICAgICAgICAgICBjYXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6Ci0gICAgICAg
ICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKLSAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVu
ZFVuYmFycmllcmVkKG5vZGUtPnN0cnVjdHVyZSgpKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgUHV0U3RydWN0dXJlOgotICAgICAg
ICAgICAgY2FzZSBBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKLSAgICAgICAgICAgIGNhc2UgUmVh
bGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKLSAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVu
YmFycmllcmVkKG5vZGUtPnRyYW5zaXRpb24oKS0+cHJldmlvdXMpOwotICAgICAgICAgICAgICAg
IHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQobm9kZS0+dHJhbnNpdGlvbigpLT5uZXh0KTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2Ug
TXVsdGlHZXRCeU9mZnNldDoKLSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IE11bHRpR2V0QnlP
ZmZzZXRDYXNlJiBnZXRDYXNlIDogbm9kZS0+bXVsdGlHZXRCeU9mZnNldERhdGEoKS5jYXNlcykg
ewotICAgICAgICAgICAgICAgICAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogZ2V0Q2Fz
ZS5zZXQoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVy
ZWQoc3RydWN0dXJlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0
OgotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG5vZGUtPm11bHRpUHV0QnlPZmZz
ZXREYXRhKCkudmFyaWFudHMuc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgICAgICAgICAgICAgIFB1
dEJ5SWRWYXJpYW50JiB2YXJpYW50ID0gbm9kZS0+bXVsdGlQdXRCeU9mZnNldERhdGEoKS52YXJp
YW50c1tpXTsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RydWN0dXJlU2V0JiBzZXQgPSB2
YXJpYW50Lm9sZFN0cnVjdHVyZSgpOwotICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGogPSBzZXQuc2l6ZSgpOyBqLS07KQotICAgICAgICAgICAgICAgICAgICAgICAgdmlzaXRvci5h
cHBlbmRVbmJhcnJpZXJlZChzZXRbal0pOwotICAgICAgICAgICAgICAgICAgICBpZiAodmFyaWFu
dC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb24pCi0gICAgICAgICAgICAgICAg
ICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKHZhcmlhbnQubmV3U3RydWN0dXJlKCkp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9CiB9CiAKIEZyb3plblZhbHVlKiBHcmFwaDo6ZnJl
ZXplKEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKFVOTElLRUxZKCF2YWx1ZSkpCiAgICAgICAg
IHJldHVybiBGcm96ZW5WYWx1ZTo6ZW1wdHlTaW5nbGV0b24oKTsKKworICAgIC8vIFRoZXJlIGFy
ZSB3ZWlyZCByZWxhdGlvbnNoaXBzIGluIGhvdyBvcHRpbWl6ZWQgQ29kZUJsb2NrcworICAgIC8v
IHBvaW50IHRvIG90aGVyIENvZGVCbG9ja3MuIFdlIGRvbid0IHdhbnQgdG8gaGF2ZSB0aGVtIGJl
CisgICAgLy8gcGFydCBvZiB0aGUgd2VhayBwb2ludGVyIHNldC4gRm9yIGV4YW1wbGUsIGFuIG9w
dGltaXplZCBDb2RlQmxvY2sKKyAgICAvLyBoYXZpbmcgYSB3ZWFrIHBvaW50ZXIgdG8gaXRzZWxm
IHdpbGwgY2F1c2UgaXQgdG8gZ2V0IGNvbGxlY3RlZC4KKyAgICBSRUxFQVNFX0FTU0VSVCghanNE
eW5hbWljQ2FzdDxDb2RlQmxvY2sqPih2YWx1ZSkpOwogICAgIAogICAgIGF1dG8gcmVzdWx0ID0g
bV9mcm96ZW5WYWx1ZU1hcC5hZGQoSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKSwgbnVsbHB0cik7CiAg
ICAgaWYgKExJS0VMWSghcmVzdWx0LmlzTmV3RW50cnkpKQpAQCAtMTUwNywxNiArMTQ2NywxOSBA
QCB2b2lkIEdyYXBoOjpjb252ZXJ0VG9TdHJvbmdDb25zdGFudChOb2RlCiAgICAgY29udmVydFRv
Q29uc3RhbnQobm9kZSwgZnJlZXplU3Ryb25nKHZhbHVlKSk7CiB9CiAKLVN0cnVjdHVyZVJlZ2lz
dHJhdGlvblJlc3VsdCBHcmFwaDo6cmVnaXN0ZXJTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCitSZWdpc3RlcmVkU3RydWN0dXJlIEdyYXBoOjpyZWdpc3RlclN0cnVjdHVyZShTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlUmVnaXN0cmF0aW9uUmVzdWx0JiByZXN1bHQpCiB7CiAg
ICAgbV9wbGFuLndlYWtSZWZlcmVuY2VzLmFkZExhemlseShzdHJ1Y3R1cmUpOwogICAgIGlmICht
X3BsYW4ud2F0Y2hwb2ludHMuY29uc2lkZXIoc3RydWN0dXJlKSkKLSAgICAgICAgcmV0dXJuIFN0
cnVjdHVyZVJlZ2lzdGVyZWRBbmRXYXRjaGVkOwotICAgIHJldHVybiBTdHJ1Y3R1cmVSZWdpc3Rl
cmVkTm9ybWFsbHk7CisgICAgICAgIHJlc3VsdCA9IFN0cnVjdHVyZVJlZ2lzdGVyZWRBbmRXYXRj
aGVkOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gU3RydWN0dXJlUmVnaXN0ZXJlZE5vcm1h
bGx5OworICAgIHJldHVybiBSZWdpc3RlcmVkU3RydWN0dXJlOjpjcmVhdGVQcml2YXRlKHN0cnVj
dHVyZSk7CiB9CiAKIHZvaWQgR3JhcGg6OmFzc2VydElzUmVnaXN0ZXJlZChTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKIHsKKyAgICByZXR1cm47CiAgICAgLy8gSXQncyBjb252ZW5pZW50IHRvIGJlIGFi
bGUgdG8gY2FsbCB0aGlzIHdpdGggYSBtYXliZS1udWxsIHN0cnVjdHVyZS4KICAgICBpZiAoIXN0
cnVjdHVyZSkKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguaAkocmV2aXNpb24gMjExMjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTMsNyArMjEzLDEyIEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNvbnZlcnRUb0NvbnN0YW50KE5vZGUqIG5vZGUsIEpTVmFsdWUgdmFsdWUpOwogICAg
IHZvaWQgY29udmVydFRvU3Ryb25nQ29uc3RhbnQoTm9kZSogbm9kZSwgSlNWYWx1ZSB2YWx1ZSk7
CiAgICAgCi0gICAgU3RydWN0dXJlUmVnaXN0cmF0aW9uUmVzdWx0IHJlZ2lzdGVyU3RydWN0dXJl
KFN0cnVjdHVyZSogc3RydWN0dXJlKTsKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHJlZ2lzdGVy
U3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgU3RydWN0dXJl
UmVnaXN0cmF0aW9uUmVzdWx0IGlnbm9yZWQ7CisgICAgICAgIHJldHVybiByZWdpc3RlclN0cnVj
dHVyZShzdHJ1Y3R1cmUsIGlnbm9yZWQpOworICAgIH0KKyAgICBSZWdpc3RlcmVkU3RydWN0dXJl
IHJlZ2lzdGVyU3RydWN0dXJlKFN0cnVjdHVyZSosIFN0cnVjdHVyZVJlZ2lzdHJhdGlvblJlc3Vs
dCYpOwogICAgIHZvaWQgYXNzZXJ0SXNSZWdpc3RlcmVkKFN0cnVjdHVyZSogc3RydWN0dXJlKTsK
ICAgICAKICAgICAvLyBDb2RlQmxvY2sgaXMgb3B0aW9uYWwsIGJ1dCBtYXkgYWxsb3cgYWRkaXRp
b25hbCBpbmZvcm1hdGlvbiB0byBiZSBkdW1wZWQgKGUuZy4gSWRlbnRpZmllciBuYW1lcykuCkBA
IC0zNDEsMTIgKzM0NiwyNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgc3RhdGljIGNvbnN0IGNoYXIg
Km9wTmFtZShOb2RlVHlwZSk7CiAgICAgCi0gICAgU3RydWN0dXJlU2V0KiBhZGRTdHJ1Y3R1cmVT
ZXQoY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQpCisgICAgUmVnaXN0ZXJlZFN0cnVj
dHVyZVNldCogYWRkU3RydWN0dXJlU2V0KGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0
KQogICAgIHsKKyAgICAgICAgbV9zdHJ1Y3R1cmVTZXRzLmFwcGVuZCgpOworICAgICAgICBSZWdp
c3RlcmVkU3RydWN0dXJlU2V0KiByZXN1bHQgPSAmbV9zdHJ1Y3R1cmVTZXRzLmxhc3QoKTsKKwog
ICAgICAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogc3RydWN0dXJlU2V0KQotICAgICAg
ICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKTsKLSAgICAgICAgbV9zdHJ1Y3R1cmVT
ZXQuYXBwZW5kKHN0cnVjdHVyZVNldCk7Ci0gICAgICAgIHJldHVybiAmbV9zdHJ1Y3R1cmVTZXQu
bGFzdCgpOworICAgICAgICAgICAgcmVzdWx0LT5hZGQocmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0
dXJlKSk7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBSZWdpc3RlcmVk
U3RydWN0dXJlU2V0KiBhZGRTdHJ1Y3R1cmVTZXQoY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNl
dCYgc3RydWN0dXJlU2V0KQorICAgIHsKKyAgICAgICAgbV9zdHJ1Y3R1cmVTZXRzLmFwcGVuZCgp
OworICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0KiByZXN1bHQgPSAmbV9zdHJ1Y3R1cmVT
ZXRzLmxhc3QoKTsKKworICAgICAgICBmb3IgKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJl
IDogc3RydWN0dXJlU2V0KQorICAgICAgICAgICAgcmVzdWx0LT5hZGQoc3RydWN0dXJlKTsKKwor
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0Rm9yKENvZGVPcmlnaW4gY29kZU9yaWdpbikKQEAgLTcxNSw3ICs3MzQsNyBA
QCBwdWJsaWM6CiAgICAgfQogCiAgICAgQWJzdHJhY3RWYWx1ZSBpbmZlcnJlZFZhbHVlRm9yUHJv
cGVydHkoCi0gICAgICAgIGNvbnN0IFN0cnVjdHVyZVNldCYgYmFzZSwgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCwgU3RydWN0dXJlQ2xvYmJlclN0YXRlID0gU3RydWN0dXJlc0FyZVdhdGNoZWQpOwor
ICAgICAgICBjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0JiBiYXNlLCBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkLCBTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZCk7
CiAKICAgICAvLyBUaGlzIHVzZXMgZWl0aGVyIGNvbnN0YW50IHByb3BlcnR5IGluZmVyZW5jZSBv
ciBwcm9wZXJ0eSB0eXBlIGluZmVyZW5jZSB0byBkZXJpdmUgYSBnb29kIGFic3RyYWN0CiAgICAg
Ly8gdmFsdWUgZm9yIHNvbWUgcHJvcGVydHkgYWNjZXNzZWQgd2l0aCB0aGUgZ2l2ZW4gYWJzdHJh
Y3QgdmFsdWUgYmFzZS4KQEAgLTgxOCw3ICs4MzcsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQg
cmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhpdCgpOwogICAgIHVuc2lnbmVkIHJlcXVpcmVkUmVn
aXN0ZXJDb3VudEZvckV4ZWN1dGlvbkFuZEV4aXQoKTsKICAgICAKLSAgICBKU1ZhbHVlIHRyeUdl
dENvbnN0YW50UHJvcGVydHkoSlNWYWx1ZSBiYXNlLCBjb25zdCBTdHJ1Y3R1cmVTZXQmLCBQcm9w
ZXJ0eU9mZnNldCk7CisgICAgSlNWYWx1ZSB0cnlHZXRDb25zdGFudFByb3BlcnR5KEpTVmFsdWUg
YmFzZSwgY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYsIFByb3BlcnR5T2Zmc2V0KTsKICAg
ICBKU1ZhbHVlIHRyeUdldENvbnN0YW50UHJvcGVydHkoSlNWYWx1ZSBiYXNlLCBTdHJ1Y3R1cmUq
LCBQcm9wZXJ0eU9mZnNldCk7CiAgICAgSlNWYWx1ZSB0cnlHZXRDb25zdGFudFByb3BlcnR5KEpT
VmFsdWUgYmFzZSwgY29uc3QgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSYsIFByb3BlcnR5T2Zmc2V0
KTsKICAgICBKU1ZhbHVlIHRyeUdldENvbnN0YW50UHJvcGVydHkoY29uc3QgQWJzdHJhY3RWYWx1
ZSYsIFByb3BlcnR5T2Zmc2V0KTsKQEAgLTkxMCw3ICs5MjksNiBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgU2VnbWVudGVkVmVjdG9yPFZhcmlhYmxlQWNjZXNzRGF0YSwgMTY+IG1fdmFyaWFibGVBY2Nl
c3NEYXRhOwogICAgIFNlZ21lbnRlZFZlY3RvcjxBcmd1bWVudFBvc2l0aW9uLCA4PiBtX2FyZ3Vt
ZW50UG9zaXRpb25zOwotICAgIFNlZ21lbnRlZFZlY3RvcjxTdHJ1Y3R1cmVTZXQsIDE2PiBtX3N0
cnVjdHVyZVNldDsKICAgICBCYWc8VHJhbnNpdGlvbj4gbV90cmFuc2l0aW9uczsKICAgICBTZWdt
ZW50ZWRWZWN0b3I8TmV3QXJyYXlCdWZmZXJEYXRhLCA0PiBtX25ld0FycmF5QnVmZmVyRGF0YTsK
ICAgICBCYWc8QnJhbmNoRGF0YT4gbV9icmFuY2hEYXRhOwpAQCAtOTYwLDYgKzk3OCw5IEBAIHB1
YmxpYzoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rmxvd0luZGV4aW5nPiBtX2luZGV4aW5nQ2FjaGU7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEZsb3dNYXA8QWJzdHJhY3RWYWx1ZT4+IG1fYWJzdHJhY3RW
YWx1ZXNDYWNoZTsKIAorICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RyaW5nU3RydWN0dXJlOwor
ICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3ltYm9sU3RydWN0dXJlOworCiBwcml2YXRlOgogICAg
IHZvaWQgYWRkTm9kZVRvTWFwQnlJbmRleChOb2RlKik7CiAKQEAgLTk5Nyw2ICsxMDE4LDcgQEAg
cHJpdmF0ZToKIAogICAgIFZlY3RvcjxOb2RlKiwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IG1f
bm9kZXNCeUluZGV4OwogICAgIFZlY3Rvcjx1bnNpZ25lZCwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZs
b3c+IG1fbm9kZUluZGV4RnJlZUxpc3Q7CisgICAgU2VnbWVudGVkVmVjdG9yPFJlZ2lzdGVyZWRT
dHJ1Y3R1cmVTZXQsIDE2PiBtX3N0cnVjdHVyZVNldHM7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxl
ci5oCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0MiwxNCArMjQyLDE0IEBAIHB1YmxpYzoK
ICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIEp1bXAgYnJhbmNoV2Vha1N0
cnVjdHVyZShSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFQgbGVmdCwgU3RydWN0dXJlKiB3ZWFr
U3RydWN0dXJlKQorICAgIEp1bXAgYnJhbmNoV2Vha1N0cnVjdHVyZShSZWxhdGlvbmFsQ29uZGl0
aW9uIGNvbmQsIFQgbGVmdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSB3ZWFrU3RydWN0dXJlKQogICAg
IHsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB3ZWFrU3RydWN0dXJlLmdldCgpOwog
I2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIEp1bXAgcmVzdWx0ID0gYnJhbmNoMzIoY29uZCwg
bGVmdCwgVHJ1c3RlZEltbTMyKHdlYWtTdHJ1Y3R1cmUtPmlkKCkpKTsKLSAgICAgICAgYWRkV2Vh
a1JlZmVyZW5jZSh3ZWFrU3RydWN0dXJlKTsKKyAgICAgICAgSnVtcCByZXN1bHQgPSBicmFuY2gz
Mihjb25kLCBsZWZ0LCBUcnVzdGVkSW1tMzIoc3RydWN0dXJlLT5pZCgpKSk7CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAjZWxzZQotICAgICAgICByZXR1cm4gYnJhbmNoV2Vha1B0cihjb25kLCBs
ZWZ0LCB3ZWFrU3RydWN0dXJlKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaFB0cihjb25kLCBsZWZ0
LCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOwogI2VuZGlmCiAgICAgfQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR011bHRpR2V0QnlPZmZzZXREYXRhLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR011bHRpR2V0QnlPZmZzZXREYXRh
LmNwcAkocmV2aXNpb24gMjExMjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdN
dWx0aUdldEJ5T2Zmc2V0RGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAg
dm9pZCBHZXRCeU9mZnNldE1ldGhvZDo6ZHVtcChQcmludFN0cmVhbQogCiB2b2lkIE11bHRpR2V0
QnlPZmZzZXRDYXNlOjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0
KiBjb250ZXh0KSBjb25zdAogewotICAgIG91dC5wcmludChpbkNvbnRleHQobV9zZXQsIGNvbnRl
eHQpLCAiOiIsIGluQ29udGV4dChtX21ldGhvZCwgY29udGV4dCkpOworICAgIG91dC5wcmludChp
bkNvbnRleHQobV9zZXQudG9TdHJ1Y3R1cmVTZXQoKSwgY29udGV4dCksICI6IiwgaW5Db250ZXh0
KG1fbWV0aG9kLCBjb250ZXh0KSk7CiB9CiAKIHZvaWQgTXVsdGlHZXRCeU9mZnNldENhc2U6OmR1
bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTXVsdGlHZXRCeU9mZnNldERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR011bHRpR2V0QnlPZmZzZXREYXRhLmgJKHJldmlzaW9uIDIxMTIyOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTXVsdGlHZXRCeU9mZnNldERhdGEuaAko
d29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAK
KyNpbmNsdWRlICJERkdSZWdpc3RlcmVkU3RydWN0dXJlU2V0LmgiCiAjaW5jbHVkZSAiRHVtcENv
bnRleHQuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVNldC5o
IgpAQCAtMTE5LDIxICsxMjAsMjEgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAgCi0gICAg
TXVsdGlHZXRCeU9mZnNldENhc2UoY29uc3QgU3RydWN0dXJlU2V0JiBzZXQsIGNvbnN0IEdldEJ5
T2Zmc2V0TWV0aG9kJiBtZXRob2QpCisgICAgTXVsdGlHZXRCeU9mZnNldENhc2UoY29uc3QgUmVn
aXN0ZXJlZFN0cnVjdHVyZVNldCYgc2V0LCBjb25zdCBHZXRCeU9mZnNldE1ldGhvZCYgbWV0aG9k
KQogICAgICAgICA6IG1fc2V0KHNldCkKICAgICAgICAgLCBtX21ldGhvZChtZXRob2QpCiAgICAg
ewogICAgIH0KICAgICAKLSAgICBTdHJ1Y3R1cmVTZXQmIHNldCgpIHsgcmV0dXJuIG1fc2V0OyB9
Ci0gICAgY29uc3QgU3RydWN0dXJlU2V0JiBzZXQoKSBjb25zdCB7IHJldHVybiBtX3NldDsgfQor
ICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIHNldCgpIHsgcmV0dXJuIG1fc2V0OyB9CisgICAg
Y29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zZXQ7
IH0KICAgICBjb25zdCBHZXRCeU9mZnNldE1ldGhvZCYgbWV0aG9kKCkgY29uc3QgeyByZXR1cm4g
bV9tZXRob2Q7IH0KICAgICAKICAgICB2b2lkIGR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mLCBE
dW1wQ29udGV4dCopIGNvbnN0OwogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0Owog
CiBwcml2YXRlOgotICAgIFN0cnVjdHVyZVNldCBtX3NldDsKKyAgICBSZWdpc3RlcmVkU3RydWN0
dXJlU2V0IG1fc2V0OwogICAgIEdldEJ5T2Zmc2V0TWV0aG9kIG1fbWV0aG9kOwogfTsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCShyZXZpc2lvbiAyMTEyMjkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzUsNyArMTc1LDcgQEAgdm9pZCBOb2RlOjpjb252ZXJ0VG9QdXRIaW50KGNvbnN0IFByb21v
dAogdm9pZCBOb2RlOjpjb252ZXJ0VG9QdXRTdHJ1Y3R1cmVIaW50KE5vZGUqIHN0cnVjdHVyZSkK
IHsKICAgICBBU1NFUlQobV9vcCA9PSBQdXRTdHJ1Y3R1cmUpOwotICAgIEFTU0VSVChzdHJ1Y3R1
cmUtPmNhc3RDb25zdGFudDxTdHJ1Y3R1cmUqPigpID09IHRyYW5zaXRpb24oKS0+bmV4dCk7Cisg
ICAgQVNTRVJUKHN0cnVjdHVyZS0+Y2FzdENvbnN0YW50PFN0cnVjdHVyZSo+KCkgPT0gdHJhbnNp
dGlvbigpLT5uZXh0LmdldCgpKTsKICAgICBjb252ZXJ0VG9QdXRIaW50KFN0cnVjdHVyZVBMb2Ms
IGNoaWxkMSgpLm5vZGUoKSwgc3RydWN0dXJlKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw4IEBACiAjaW5jbHVk
ZSAiREZHTm9kZVR5cGUuaCIKICNpbmNsdWRlICJERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRh
LmgiCiAjaW5jbHVkZSAiREZHT3BJbmZvLmgiCisjaW5jbHVkZSAiREZHUmVnaXN0ZXJlZFN0cnVj
dHVyZS5oIgorI2luY2x1ZGUgIkRGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQuaCIKICNpbmNsdWRl
ICJERkdUcmFuc2l0aW9uLmgiCiAjaW5jbHVkZSAiREZHVXNlS2luZC5oIgogI2luY2x1ZGUgIkRG
R1ZhcmlhYmxlQWNjZXNzRGF0YS5oIgpAQCAtNDEwLDEwICs0MTIsMTAgQEAgcHVibGljOgogCiAg
ICAgdm9pZCByZW1vdmUoKTsKIAotICAgIHZvaWQgY29udmVydFRvQ2hlY2tTdHJ1Y3R1cmUoU3Ry
dWN0dXJlU2V0KiBzZXQpCisgICAgdm9pZCBjb252ZXJ0VG9DaGVja1N0cnVjdHVyZShSZWdpc3Rl
cmVkU3RydWN0dXJlU2V0KiBzZXQpCiAgICAgewogICAgICAgICBzZXRPcEFuZERlZmF1bHRGbGFn
cyhDaGVja1N0cnVjdHVyZSk7Ci0gICAgICAgIG1fb3BJbmZvID0gc2V0OyAKKyAgICAgICAgbV9v
cEluZm8gPSBzZXQ7CiAgICAgfQogCiAgICAgdm9pZCBjb252ZXJ0VG9DaGVja1N0cnVjdHVyZUlt
bWVkaWF0ZShOb2RlKiBzdHJ1Y3R1cmUpCkBAIC0xNjE0LDEwICsxNjE2LDEwIEBAIHB1YmxpYzoK
ICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCgp
CisgICAgY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0KCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChoYXNTdHJ1Y3R1cmVTZXQoKSk7Ci0gICAgICAgIHJldHVybiAqbV9v
cEluZm8uYXM8U3RydWN0dXJlU2V0Kj4oKTsKKyAgICAgICAgcmV0dXJuICptX29wSW5mby5hczxS
ZWdpc3RlcmVkU3RydWN0dXJlU2V0Kj4oKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBoYXNTdHJ1
Y3R1cmUoKQpAQCAtMTYzMiwxMCArMTYzNCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9
CiAgICAgCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUoKQorICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUgc3RydWN0dXJlKCkKICAgICB7CiAgICAgICAgIEFTU0VSVChoYXNTdHJ1Y3R1cmUoKSk7Ci0g
ICAgICAgIHJldHVybiBtX29wSW5mby5hczxTdHJ1Y3R1cmUqPigpOworICAgICAgICByZXR1cm4g
bV9vcEluZm8uYXNSZWdpc3RlcmVkU3RydWN0dXJlKCk7CiAgICAgfQogICAgIAogICAgIGJvb2wg
aGFzU3RvcmFnZUFjY2Vzc0RhdGEoKQpAQCAtMjUxMyw2ICsyNTE1LDExIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICB1LmludDY0ID0gMDsKICAgICAgICAgICAgIHUuY29uc3RQb2ludGVyID0gY29u
c3RQb2ludGVyOwogICAgICAgICB9CisgICAgICAgIE9wSW5mb1dyYXBwZXIoUmVnaXN0ZXJlZFN0
cnVjdHVyZSBzdHJ1Y3R1cmUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHUuaW50NjQgPSAwOwor
ICAgICAgICAgICAgdS5wb2ludGVyID0gYml0d2lzZV9jYXN0PHZvaWQqPihzdHJ1Y3R1cmUpOwor
ICAgICAgICB9CiAgICAgICAgIE9wSW5mb1dyYXBwZXImIG9wZXJhdG9yPSh1aW50MzJfdCBpbnQz
MikKICAgICAgICAgewogICAgICAgICAgICAgdS5pbnQ2NCA9IDA7CkBAIC0yNTQyLDYgKzI1NDks
MTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHUuY29uc3RQb2ludGVyID0gY29uc3RQb2ludGVy
OwogICAgICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgICAgICB9CisgICAgICAgIE9wSW5mb1dy
YXBwZXImIG9wZXJhdG9yPShSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkKKyAgICAgICAg
eworICAgICAgICAgICAgdS5pbnQ2NCA9IDA7CisgICAgICAgICAgICB1LnBvaW50ZXIgPSBiaXR3
aXNlX2Nhc3Q8dm9pZCo+KHN0cnVjdHVyZSk7CisgICAgICAgICAgICByZXR1cm4gKnRoaXM7Cisg
ICAgICAgIH0KICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgICAgIEFMV0FZU19J
TkxJTkUgYXV0byBhcygpIGNvbnN0IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNf
cG9pbnRlcjxUPjo6dmFsdWUgJiYgIXN0ZDo6aXNfY29uc3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVf
cG9pbnRlcjxUPjo6dHlwZT46OnZhbHVlLCBUPjo6dHlwZQogICAgICAgICB7CkBAIC0yNTYyLDYg
KzI1NzUsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIHUuaW50
NjQ7CiAgICAgICAgIH0KKyAgICAgICAgQUxXQVlTX0lOTElORSBSZWdpc3RlcmVkU3RydWN0dXJl
IGFzUmVnaXN0ZXJlZFN0cnVjdHVyZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBiaXR3aXNlX2Nhc3Q8UmVnaXN0ZXJlZFN0cnVjdHVyZT4odS5wb2ludGVyKTsKKyAgICAg
ICAgfQorCiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIHVpbnQzMl90IGludDMyOwogICAg
ICAgICAgICAgdWludDY0X3QgaW50NjQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAJ
KHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0
QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NiwyOCArMTg2
LDI4IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAgIEFsbG9jYXRpb24mIHNldFN0
cnVjdHVyZXMoY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVzKQorICAgIEFsbG9jYXRpb24m
IHNldFN0cnVjdHVyZXMoY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgc3RydWN0dXJlcykK
ICAgICB7CiAgICAgICAgIEFTU0VSVChoYXNTdHJ1Y3R1cmVzKCkgJiYgIXN0cnVjdHVyZXMuaXNF
bXB0eSgpKTsKICAgICAgICAgbV9zdHJ1Y3R1cmVzID0gc3RydWN0dXJlczsKICAgICAgICAgcmV0
dXJuICp0aGlzOwogICAgIH0KIAotICAgIEFsbG9jYXRpb24mIG1lcmdlU3RydWN0dXJlcyhjb25z
dCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZXMpCisgICAgQWxsb2NhdGlvbiYgbWVyZ2VTdHJ1Y3R1
cmVzKGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZXMpCiAgICAgewogICAg
ICAgICBBU1NFUlQoaGFzU3RydWN0dXJlcygpIHx8IHN0cnVjdHVyZXMuaXNFbXB0eSgpKTsKICAg
ICAgICAgbV9zdHJ1Y3R1cmVzLm1lcmdlKHN0cnVjdHVyZXMpOwogICAgICAgICByZXR1cm4gKnRo
aXM7CiAgICAgfQogCi0gICAgQWxsb2NhdGlvbiYgZmlsdGVyU3RydWN0dXJlcyhjb25zdCBTdHJ1
Y3R1cmVTZXQmIHN0cnVjdHVyZXMpCisgICAgQWxsb2NhdGlvbiYgZmlsdGVyU3RydWN0dXJlcyhj
b25zdCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVzKQogICAgIHsKICAgICAgICAg
QVNTRVJUKGhhc1N0cnVjdHVyZXMoKSk7CiAgICAgICAgIG1fc3RydWN0dXJlcy5maWx0ZXIoc3Ry
dWN0dXJlcyk7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKLSAgICBjb25zdCBTdHJ1
Y3R1cmVTZXQmIHN0cnVjdHVyZXMoKSBjb25zdAorICAgIGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1
cmVTZXQmIHN0cnVjdHVyZXMoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fc3RydWN0
dXJlczsKICAgICB9CkBAIC0yODMsNyArMjgzLDcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAg
ICAgIG91dC5wcmludCgiQWxsb2NhdGlvbigiKTsKICAgICAgICAgaWYgKCFtX3N0cnVjdHVyZXMu
aXNFbXB0eSgpKQotICAgICAgICAgICAgb3V0LnByaW50KGluQ29udGV4dChtX3N0cnVjdHVyZXMs
IGNvbnRleHQpKTsKKyAgICAgICAgICAgIG91dC5wcmludChpbkNvbnRleHQobV9zdHJ1Y3R1cmVz
LnRvU3RydWN0dXJlU2V0KCksIGNvbnRleHQpKTsKICAgICAgICAgaWYgKCFtX2ZpZWxkcy5pc0Vt
cHR5KCkpIHsKICAgICAgICAgICAgIGlmICghbV9zdHJ1Y3R1cmVzLmlzRW1wdHkoKSkKICAgICAg
ICAgICAgICAgICBvdXQucHJpbnQoIiwgIik7CkBAIC0yOTYsNyArMjk2LDcgQEAgcHJpdmF0ZToK
ICAgICBOb2RlKiBtX2lkZW50aWZpZXI7IC8vIFRoaXMgaXMgdGhlIGFjdHVhbCBub2RlIHRoYXQg
Y3JlYXRlZCB0aGUgYWxsb2NhdGlvbgogICAgIEtpbmQgbV9raW5kOwogICAgIEhhc2hNYXA8UHJv
bW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IsIE5vZGUqPiBtX2ZpZWxkczsKLSAgICBTdHJ1Y3R1cmVT
ZXQgbV9zdHJ1Y3R1cmVzOworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgbV9zdHJ1Y3R1cmVz
OwogfTsKIAogY2xhc3MgTG9jYWxIZWFwIHsKQEAgLTgzMiw3ICs4MzIsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgdGFyZ2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9uKG5vZGUsIEFsbG9jYXRp
b246OktpbmQ6Ok9iamVjdCk7CiAgICAgICAgICAgICB0YXJnZXQtPnNldFN0cnVjdHVyZXMobm9k
ZS0+c3RydWN0dXJlKCkpOwogICAgICAgICAgICAgd3JpdGVzLmFkZCgKLSAgICAgICAgICAgICAg
ICBTdHJ1Y3R1cmVQTG9jLCBMYXp5Tm9kZShtX2dyYXBoLmZyZWV6ZShub2RlLT5zdHJ1Y3R1cmUo
KSkpKTsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVQTG9jLCBMYXp5Tm9kZShtX2dyYXBoLmZy
ZWV6ZShub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSkpKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAg
ICAgICAgIGNhc2UgTmV3RnVuY3Rpb246CkBAIC04NzksNyArODc5LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CiAgICAgICAgICAgICB0YXJnZXQgPSBtX2hlYXAub25s
eUxvY2FsQWxsb2NhdGlvbihub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwogICAgICAgICAgICAgaWYg
KHRhcmdldCAmJiB0YXJnZXQtPmlzT2JqZWN0QWxsb2NhdGlvbigpKSB7Ci0gICAgICAgICAgICAg
ICAgd3JpdGVzLmFkZChTdHJ1Y3R1cmVQTG9jLCBMYXp5Tm9kZShtX2dyYXBoLmZyZWV6ZShKU1Zh
bHVlKG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dCkpKSk7CisgICAgICAgICAgICAgICAgd3JpdGVz
LmFkZChTdHJ1Y3R1cmVQTG9jLCBMYXp5Tm9kZShtX2dyYXBoLmZyZWV6ZShKU1ZhbHVlKG5vZGUt
PnRyYW5zaXRpb24oKS0+bmV4dC5nZXQoKSkpKSk7CiAgICAgICAgICAgICAgICAgdGFyZ2V0LT5z
ZXRTdHJ1Y3R1cmVzKG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dCk7CiAgICAgICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgICAgICBtX2hlYXAuZXNjYXBlKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSk7
CkBAIC05MTIsNyArOTEyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEFsbG9jYXRpb24qIGFs
bG9jYXRpb24gPSBtX2hlYXAub25seUxvY2FsQWxsb2NhdGlvbihub2RlLT5jaGlsZDEoKS5ub2Rl
KCkpOwogICAgICAgICAgICAgaWYgKGFsbG9jYXRpb24gJiYgYWxsb2NhdGlvbi0+aXNPYmplY3RB
bGxvY2F0aW9uKCkpIHsKICAgICAgICAgICAgICAgICBNdWx0aUdldEJ5T2Zmc2V0RGF0YSYgZGF0
YSA9IG5vZGUtPm11bHRpR2V0QnlPZmZzZXREYXRhKCk7Ci0gICAgICAgICAgICAgICAgU3RydWN0
dXJlU2V0IHZhbGlkU3RydWN0dXJlczsKKyAgICAgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0
dXJlU2V0IHZhbGlkU3RydWN0dXJlczsKICAgICAgICAgICAgICAgICBib29sIGhhc0ludmFsaWRT
dHJ1Y3R1cmVzID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBtdWx0
aUdldEJ5T2Zmc2V0Q2FzZSA6IGRhdGEuY2FzZXMpIHsKICAgICAgICAgICAgICAgICAgICAgaWYg
KCFhbGxvY2F0aW9uLT5zdHJ1Y3R1cmVzKCkub3ZlcmxhcHMobXVsdGlHZXRCeU9mZnNldENhc2Uu
c2V0KCkpKQpAQCAtMTQ0NCwxMiArMTQ0NCwxMSBAQCBwcml2YXRlOgogICAgICAgICBzd2l0Y2gg
KGFsbG9jYXRpb24ua2luZCgpKSB7CiAgICAgICAgIGNhc2UgQWxsb2NhdGlvbjo6S2luZDo6T2Jq
ZWN0OiB7CiAgICAgICAgICAgICBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhKiBkYXRhID0gbV9n
cmFwaC5tX29iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEuYWRkKCk7Ci0gICAgICAgICAgICBTdHJ1
Y3R1cmVTZXQqIHNldCA9IG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KGFsbG9jYXRpb24uc3RydWN0
dXJlcygpKTsKIAogICAgICAgICAgICAgcmV0dXJuIG1fZ3JhcGguYWRkTm9kZSgKICAgICAgICAg
ICAgICAgICBhbGxvY2F0aW9uLmlkZW50aWZpZXIoKS0+cHJlZGljdGlvbigpLCBOb2RlOjpWYXJB
cmcsIE1hdGVyaWFsaXplTmV3T2JqZWN0LAogICAgICAgICAgICAgICAgIHdoZXJlLT5vcmlnaW4u
d2l0aFNlbWFudGljKGFsbG9jYXRpb24uaWRlbnRpZmllcigpLT5vcmlnaW4uc2VtYW50aWMpLAot
ICAgICAgICAgICAgICAgIE9wSW5mbyhzZXQpLCBPcEluZm8oZGF0YSksIDAsIDApOworICAgICAg
ICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChhbGxvY2F0aW9uLnN0cnVj
dHVyZXMoKSkpLCBPcEluZm8oZGF0YSksIDAsIDApOwogICAgICAgICB9CiAKICAgICAgICAgY2Fz
ZSBBbGxvY2F0aW9uOjpLaW5kOjpBc3luY0Z1bmN0aW9uOgpAQCAtMjEwMyw3ICsyMTAyLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgY2FzZSBOYW1lZFByb3BlcnR5UExvYzogewogICAgICAgICAgICAg
QWxsb2NhdGlvbiYgYWxsb2NhdGlvbiA9IG1faGVhcC5nZXRBbGxvY2F0aW9uKGxvY2F0aW9uLmJh
c2UoKSk7CiAKLSAgICAgICAgICAgIFZlY3RvcjxTdHJ1Y3R1cmUqPiBzdHJ1Y3R1cmVzOworICAg
ICAgICAgICAgVmVjdG9yPFJlZ2lzdGVyZWRTdHJ1Y3R1cmU+IHN0cnVjdHVyZXM7CiAgICAgICAg
ICAgICBzdHJ1Y3R1cmVzLmFwcGVuZFJhbmdlKGFsbG9jYXRpb24uc3RydWN0dXJlcygpLmJlZ2lu
KCksIGFsbG9jYXRpb24uc3RydWN0dXJlcygpLmVuZCgpKTsKICAgICAgICAgICAgIHVuc2lnbmVk
IGlkZW50aWZpZXJOdW1iZXIgPSBsb2NhdGlvbi5pbmZvKCk7CiAgICAgICAgICAgICBVbmlxdWVk
U3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJd
OwpAQCAtMjExMSw3ICsyMTEwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHN0ZDo6c29ydCgK
ICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVzLmJlZ2luKCksCiAgICAgICAgICAgICAgICAgc3Ry
dWN0dXJlcy5lbmQoKSwKLSAgICAgICAgICAgICAgICBbdWlkXSAoU3RydWN0dXJlICphLCBTdHJ1
Y3R1cmUqIGIpIC0+IGJvb2wgeworICAgICAgICAgICAgICAgIFt1aWRdIChSZWdpc3RlcmVkU3Ry
dWN0dXJlIGEsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgYikgLT4gYm9vbCB7CiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBhLT5nZXRDb25jdXJyZW50bHkodWlkKSA8IGItPmdldENvbmN1cnJlbnRs
eSh1aWQpOwogICAgICAgICAgICAgICAgIH0pOwogCkBAIC0yMTQyLDcgKzIxNDEsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IGN1cnJl
bnRPZmZzZXQgPSBmaXJzdE9mZnNldDsKICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVTZXQgY3Vy
cmVudFNldDsKLSAgICAgICAgICAgICAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogc3Ry
dWN0dXJlcykgeworICAgICAgICAgICAgICAgIGZvciAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1
Y3R1cmUgOiBzdHJ1Y3R1cmVzKSB7CiAgICAgICAgICAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0
IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0Q29uY3VycmVudGx5KHVpZCk7CiAgICAgICAgICAgICAg
ICAgICAgIGlmIChvZmZzZXQgIT0gY3VycmVudE9mZnNldCkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gQmVjYXVzZSBvdXIgYW5hbHlzaXMgdHJlYXRzIE11bHRpUHV0QnlPZmZzZXQgbGlr
ZSBhbiBlc2NhcGUsIHdlIG9ubHkgaGF2ZSB0bwpAQCAtMjE1NSw3ICsyMTU0LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRPZmZzZXQgPSBvZmZzZXQ7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2V0LmNsZWFyKCk7CiAgICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgY3VycmVudFNldC5hZGQoc3RydWN0dXJlKTsKKyAg
ICAgICAgICAgICAgICAgICAgY3VycmVudFNldC5hZGQoc3RydWN0dXJlLmdldCgpKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZGF0YS0+dmFyaWFudHMuYXBwZW5kKAogICAg
ICAgICAgICAgICAgICAgICBQdXRCeUlkVmFyaWFudDo6cmVwbGFjZShjdXJyZW50U2V0LCBjdXJy
ZW50T2Zmc2V0LCBJbmZlcnJlZFR5cGU6OlRvcCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcEluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wSW5mby5oCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDYgKzI1LDggQEAKIAogI3ByYWdt
YSBvbmNlCiAKKyNpbmNsdWRlICJERkdSZWdpc3RlcmVkU3RydWN0dXJlLmgiCisjaW5jbHVkZSAi
SGVhcENlbGwuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKICNpZiBFTkFCTEUo
REZHX0pJVCkKQEAgLTQyLDggKzQ0LDE3IEBAIHN0cnVjdCBPcEluZm8gewogI2lmIE9TKERBUldJ
TikKICAgICBleHBsaWNpdCBPcEluZm8odWludHB0cl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KHZhbHVlKSkgeyB9CiAjZW5kaWYKLSAgICBleHBsaWNpdCBPcEluZm8o
dm9pZCogdmFsdWUpIDogbV92YWx1ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRf
Y2FzdDx1aW50cHRyX3Q+KHZhbHVlKSkpIHsgfQotICAgIGV4cGxpY2l0IE9wSW5mbyhjb25zdCB2
b2lkKiB2YWx1ZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4odmFsdWUpKSkgeyB9CisgICAgZXhwbGljaXQgT3BJbmZvKFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGJp
dHdpc2VfY2FzdDx1aW50cHRyX3Q+KHN0cnVjdHVyZSkpKSB7IH0KKworCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CisgICAgZXhwbGljaXQgT3BJbmZvKFQqIHB0cikKKyAgICB7CisgICAgICAg
IHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxIZWFwQ2VsbCwgVD46OnZhbHVlLCAiVG8g
bWFrZSBhbiBPcEluZm8gd2l0aCBhIGNlbGwgaW4gaXQsIHRoZSBjZWxsIG11c3QgYmUgcmVnaXN0
ZXJlZCBvciBmcm96ZW4uIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9v
ZjxTdHJ1Y3R1cmVTZXQsIFQ+Ojp2YWx1ZSwgIlRvIG1ha2UgYW4gT3BJbmZvIHdpdGggYSBzdHJ1
Y3R1cmUgc2V0IGluLCBtYWtlIHN1cmUgdG8gdXNlIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQuIik7
CisgICAgICAgIG1fdmFsdWUgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2Fz
dDx1aW50cHRyX3Q+KHB0cikpOworICAgIH0KKwogICAgIHVpbnQ2NF90IG1fdmFsdWU7CiB9Owog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHJldmlzaW9uIDIxMTIy
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY3LDcgKzY3LDYgQEAKICNpbmNsdWRlICJERkdTdG9yZUJhcnJpZXJDbHVzdGVyaW5n
UGhhc2UuaCIKICNpbmNsdWRlICJERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5oIgogI2lu
Y2x1ZGUgIkRGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuaCIKLSNpbmNsdWRlICJERkdTdHJ1Y3R1
cmVSZWdpc3RyYXRpb25QaGFzZS5oIgogI2luY2x1ZGUgIkRGR1RpZXJVcENoZWNrSW5qZWN0aW9u
UGhhc2UuaCIKICNpbmNsdWRlICJERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmgiCiAjaW5jbHVk
ZSAiREZHVW5pZmljYXRpb25QaGFzZS5oIgpAQCAtMzExLDcgKzMxMCw2IEBAIFBsYW46OkNvbXBp
bGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHIKICAgICBSVU5fUEhBU0UocGVyZm9ybUJhY2t3
YXJkc1Byb3BhZ2F0aW9uKTsKICAgICBSVU5fUEhBU0UocGVyZm9ybVByZWRpY3Rpb25Qcm9wYWdh
dGlvbik7CiAgICAgUlVOX1BIQVNFKHBlcmZvcm1GaXh1cCk7Ci0gICAgUlVOX1BIQVNFKHBlcmZv
cm1TdHJ1Y3R1cmVSZWdpc3RyYXRpb24pOwogICAgIFJVTl9QSEFTRShwZXJmb3JtSW52YWxpZGF0
aW9uUG9pbnRJbmplY3Rpb24pOwogICAgIFJVTl9QSEFTRShwZXJmb3JtVHlwZUNoZWNrSG9pc3Rp
bmcpOwogICAgIApAQCAtNjA4LDYgKzYwNiwxMSBAQCBDb21waWxhdGlvblJlc3VsdCBQbGFuOjpm
aW5hbGl6ZVdpdGhvdXROCiAgICAgICAgICAgICB0cmFja2VkUmVmZXJlbmNlcy5hZGQocmVmZXJl
bmNlLmdldCgpKTsKICAgICAgICAgZm9yIChXcml0ZUJhcnJpZXI8VW5rbm93bj4mIGNvbnN0YW50
IDogY29kZUJsb2NrLT5jb25zdGFudHMoKSkKICAgICAgICAgICAgIHRyYWNrZWRSZWZlcmVuY2Vz
LmFkZChjb25zdGFudC5nZXQoKSk7CisKKyAgICAgICAgZm9yIChhdXRvKiBpbmxpbmVDYWxsRnJh
bWUgOiAqaW5saW5lQ2FsbEZyYW1lcykgeworICAgICAgICAgICAgQVNTRVJUKGlubGluZUNhbGxG
cmFtZS0+YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkpOworICAgICAgICAgICAgdHJhY2tlZFJlZmVy
ZW5jZXMuYWRkKGlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkpOworICAg
ICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBDaGVjayB0aGF0IGFueSBvdGhlciByZWZlcmVu
Y2VzIHRoYXQgd2UgaGF2ZSBhbnl3aGVyZSBpbiB0aGUgSklUQ29kZSBhcmUgYWxzbwogICAgICAg
ICAvLyB0cmFja2VkIGVpdGhlciBzdHJvbmdseSBvciB3ZWFrbHkuCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyZWRTdHJ1Y3R1
cmUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKERG
R19KSVQpCisKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVTZXQu
aCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCitjbGFzcyBHcmFwaDsKKwor
Y2xhc3MgUmVnaXN0ZXJlZFN0cnVjdHVyZSB7CitwdWJsaWM6CisgICAgUmVnaXN0ZXJlZFN0cnVj
dHVyZSgpID0gZGVmYXVsdDsKKworICAgIEFMV0FZU19JTkxJTkUgU3RydWN0dXJlKiBnZXQoKSBj
b25zdCB7IHJldHVybiBtX3N0cnVjdHVyZTsgfQorICAgIFN0cnVjdHVyZSogb3BlcmF0b3ItPigp
IGNvbnN0IHsgcmV0dXJuIGdldCgpOyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVn
aXN0ZXJlZFN0cnVjdHVyZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZ2V0
KCkgPT0gb3RoZXIuZ2V0KCk7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJl
Z2lzdGVyZWRTdHJ1Y3R1cmUmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEo
KnRoaXMgPT0gb3RoZXIpOworICAgIH0KKworICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEhZ2V0KCk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIGZyaWVuZCBjbGFzcyBHcmFwaDsKKworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUoU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogbV9zdHJ1Y3R1cmUoc3RydWN0dXJlKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSk7CisgICAgfQorCisgICAgc3RhdGljIFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmUgY3JlYXRlUHJpdmF0ZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBSZWdpc3RlcmVkU3RydWN0dXJlKHN0cnVjdHVyZSk7CisgICAgfQorCisg
ICAgU3RydWN0dXJlKiBtX3N0cnVjdHVyZSB7IG51bGxwdHIgfTsKK307CisKK30gfSAvLyBuYW1l
c3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZWdpc3RlcmVkU3RydWN0dXJlU2V0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmVT
ZXQuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVn
aXN0ZXJlZFN0cnVjdHVyZVNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiREZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNldC5oIgorCisjaWYg
RU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJERkdBYnN0cmFjdFZhbHVlLmgiCisjaW5jbHVk
ZSAiVHJhY2tlZFJlZmVyZW5jZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
eworCit2b2lkIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQ6OmZpbHRlcihjb25zdCBERkc6OlN0cnVj
dHVyZUFic3RyYWN0VmFsdWUmIG90aGVyKQoreworICAgIGdlbmVyaWNGaWx0ZXIoCisgICAgICAg
IFsmXSAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIC0+IGJvb2wgeworICAgICAgICAg
ICAgcmV0dXJuIG90aGVyLmNvbnRhaW5zKHN0cnVjdHVyZSk7IAorICAgICAgICB9KTsKK30KKwor
dm9pZCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0OjpmaWx0ZXIoU3BlY3VsYXRlZFR5cGUgdHlwZSkK
K3sKKyAgICBnZW5lcmljRmlsdGVyKAorICAgICAgICBbJl0gKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
c3RydWN0dXJlKSAtPiBib29sIHsKKyAgICAgICAgICAgIHJldHVybiB0eXBlICYgc3BlY3VsYXRp
b25Gcm9tU3RydWN0dXJlKHN0cnVjdHVyZS5nZXQoKSk7CisgICAgICAgIH0pOworfQorCit2b2lk
IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQ6OmZpbHRlckFycmF5TW9kZXMoQXJyYXlNb2RlcyBhcnJh
eU1vZGVzKQoreworICAgIGdlbmVyaWNGaWx0ZXIoCisgICAgICAgIFsmXSAoUmVnaXN0ZXJlZFN0
cnVjdHVyZSBzdHJ1Y3R1cmUpIC0+IGJvb2wgeworICAgICAgICAgICAgcmV0dXJuIGFycmF5TW9k
ZXMgJiBhcnJheU1vZGVGcm9tU3RydWN0dXJlKHN0cnVjdHVyZS5nZXQoKSk7CisgICAgICAgIH0p
OworfQorCit2b2lkIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQ6OmZpbHRlcihjb25zdCBERkc6OkFi
c3RyYWN0VmFsdWUmIG90aGVyKQoreworICAgIGZpbHRlcihvdGhlci5tX3N0cnVjdHVyZSk7Cisg
ICAgZmlsdGVyKG90aGVyLm1fdHlwZSk7CisgICAgZmlsdGVyQXJyYXlNb2RlcyhvdGhlci5tX2Fy
cmF5TW9kZXMpOworfQorCitTcGVjdWxhdGVkVHlwZSBSZWdpc3RlcmVkU3RydWN0dXJlU2V0Ojpz
cGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmVzKCkgY29uc3QKK3sKKyAgICBTcGVjdWxhdGVkVHlwZSBy
ZXN1bHQgPSBTcGVjTm9uZTsKKyAgICBmb3JFYWNoKAorICAgICAgICBbJl0gKFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgc3RydWN0dXJlKSB7CisgICAgICAgICAgICBtZXJnZVNwZWN1bGF0aW9uKHJlc3Vs
dCwgc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKHN0cnVjdHVyZS5nZXQoKSkpOworICAgICAgICB9
KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitBcnJheU1vZGVzIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmVTZXQ6OmFycmF5TW9kZXNGcm9tU3RydWN0dXJlcygpIGNvbnN0Cit7CisgICAgQXJyYXlNb2Rl
cyByZXN1bHQgPSAwOworICAgIGZvckVhY2goCisgICAgICAgIFsmXSAoUmVnaXN0ZXJlZFN0cnVj
dHVyZSBzdHJ1Y3R1cmUpIHsKKyAgICAgICAgICAgIG1lcmdlQXJyYXlNb2RlcyhyZXN1bHQsIGFz
QXJyYXlNb2RlcyhzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSk7CisgICAgICAgIH0pOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldDo6dmFsaWRh
dGVSZWZlcmVuY2VzKGNvbnN0IFRyYWNrZWRSZWZlcmVuY2VzJiB0cmFja2VkUmVmZXJlbmNlcykg
Y29uc3QKK3sKKyAgICAvLyBUaGUgdHlwZSBzeXN0ZW0gc2hvdWxkIGhlbHAgdXMgaGVyZSwgYnV0
IHByb3RlY3QgcGVvcGxlIGZyb20gZ2V0dGluZyB0aGF0IHdyb25nIHVzaW5nIGJpdHdpc2VfY2Fz
dCBvciBzb21ldGhpbmcgY3JhenkuCisgICAgZm9yRWFjaCgKKyAgICAgICAgWyZdIChSZWdpc3Rl
cmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgeworICAgICAgICAgICAgdHJhY2tlZFJlZmVyZW5jZXMu
Y2hlY2soc3RydWN0dXJlLmdldCgpKTsKKyAgICAgICAgfSk7Cit9CisKK30gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdSZWdpc3RlcmVkU3RydWN0dXJlU2V0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZWdpc3RlcmVkU3RydWN0dXJlU2V0LmgJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZWdpc3RlcmVk
U3RydWN0dXJlU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IEVOQUJMRShERkdfSklUKQorCisjaW5jbHVkZSAiREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5oIgor
I2luY2x1ZGUgIlN0cnVjdHVyZVNldC5oIgorI2luY2x1ZGUgPHd0Zi9UaW55UHRyU2V0Lmg+CisK
K25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBUcmFja2VkUmVmZXJlbmNlczsKKworbmFtZXNwYWNl
IERGRyB7CisKK3N0cnVjdCBBYnN0cmFjdFZhbHVlOworY2xhc3MgU3RydWN0dXJlQWJzdHJhY3RW
YWx1ZTsKKworY2xhc3MgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCA6IHB1YmxpYyBUaW55UHRyU2V0
PFJlZ2lzdGVyZWRTdHJ1Y3R1cmU+IHsKK3B1YmxpYzoKKworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmVTZXQoKQorICAgIHsgfQorICAgIAorICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQoUmVnaXN0
ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpCisgICAgICAgIDogVGlueVB0clNldChzdHJ1Y3R1cmUp
CisgICAgeworICAgIH0KKyAgICAKKyAgICBBTFdBWVNfSU5MSU5FIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmVTZXQoY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgb3RoZXIpCisgICAgICAgIDogVGlu
eVB0clNldChvdGhlcikKKyAgICB7CisgICAgfQorICAgIAorICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUgb25seVN0cnVjdHVyZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gb25seUVudHJ5
KCk7CisgICAgfQorCisgICAgU3RydWN0dXJlU2V0IHRvU3RydWN0dXJlU2V0KCkgY29uc3QKKyAg
ICB7CisgICAgICAgIFN0cnVjdHVyZVNldCByZXN1bHQ7CisgICAgICAgIGZvckVhY2goWyZdIChS
ZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgeyByZXN1bHQuYWRkKHN0cnVjdHVyZS5nZXQo
KSk7IH0pOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHZvaWQgZmlsdGVy
KGNvbnN0IERGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZSYpOworICAgIHZvaWQgZmlsdGVyKFNw
ZWN1bGF0ZWRUeXBlKTsKKyAgICB2b2lkIGZpbHRlckFycmF5TW9kZXMoQXJyYXlNb2Rlcyk7Cisg
ICAgdm9pZCBmaWx0ZXIoY29uc3QgREZHOjpBYnN0cmFjdFZhbHVlJik7CisgICAgCisgICAgU3Bl
Y3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlcygpIGNvbnN0OworICAgIEFycmF5
TW9kZXMgYXJyYXlNb2Rlc0Zyb21TdHJ1Y3R1cmVzKCkgY29uc3Q7CisKKyAgICB2b2lkIHZhbGlk
YXRlUmVmZXJlbmNlcyhjb25zdCBUcmFja2VkUmVmZXJlbmNlcyYpIGNvbnN0OworfTsKKworfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNp
b24gMjExMjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyNSw3ICs0MjUsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUo
QWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToK
ICAgICBjYXNlIFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgIHJldHVybiBzdGF0
ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3N0cnVjdHVyZS5pc1N1YnNldE9mKAotICAgICAg
ICAgICAgU3RydWN0dXJlU2V0KG5vZGUtPnRyYW5zaXRpb24oKS0+cHJldmlvdXMpKTsKKyAgICAg
ICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQobm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91
cykpOwogICAgICAgICAKICAgICBjYXNlIEdldEJ5T2Zmc2V0OgogICAgIGNhc2UgR2V0R2V0dGVy
U2V0dGVyQnlPZmZzZXQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI5NCw3ICsyOTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxh
dGl2ZU5vblBlCiAgICAgICAgIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKCZtX2ppdCk7
CiAgICAgICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9IGxvY2FsR2xvYmFsT2JqZWN0
LmdwcigpOwogICAgICAgICBHUFJSZWcgcmVtb3RlR2xvYmFsT2JqZWN0R1BSID0gcmVtb3RlR2xv
YmFsT2JqZWN0LmdwcigpOwotICAgICAgICBtX2ppdC5tb3ZlKEpJVENvbXBpbGVyOjpUcnVzdGVk
SW1tUHRyKG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CisgICAgICAgIG1faml0Lm1vdmUo
VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5n
bG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxvY2FsR2xv
YmFsT2JqZWN0R1BSKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVz
cyhhcmdQYXlsb2FkR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZXN1bHRQYXls
b2FkR1BSKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1
bHRQYXlsb2FkR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVtb3RlR2xv
YmFsT2JqZWN0R1BSKTsKICAgICAgICAgbV9qaXQuY29tcGFyZTMyKEpJVENvbXBpbGVyOjpFcXVh
bCwgbG9jYWxHbG9iYWxPYmplY3RHUFIsIHJlbW90ZUdsb2JhbE9iamVjdEdQUiwgcmVzdWx0UGF5
bG9hZEdQUik7CkBAIC0zNTgsNyArMzU4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3Bl
Y3VsYXRpdmVQZWVwaAogICAgCiAgICAgICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9
IGxvY2FsR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmVtb3RlR2xvYmFsT2Jq
ZWN0R1BSID0gcmVtb3RlR2xvYmFsT2JqZWN0LmdwcigpOwotICAgICAgICBtX2ppdC5tb3ZlKFRy
dXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+
b3JpZ2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKKyAgICAgICAgbV9qaXQu
bW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBtX2ppdC5ncmFw
aCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbG9j
YWxHbG9iYWxPYmplY3RHUFIpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpB
ZGRyZXNzKGFyZ1BheWxvYWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlc3Vs
dEdQUik7CiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0
R1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVtb3RlR2xvYmFsT2JqZWN0
R1BSKTsKICAgICAgICAgYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgbG9jYWxHbG9iYWxP
YmplY3RHUFIsIHJlbW90ZUdsb2JhbE9iamVjdEdQUiwgaW52ZXJ0ID8gbm90VGFrZW4gOiB0YWtl
bik7CkBAIC0xMDgyLDcgKzEwODIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChO
b2RlKiBub2RlCiAgICAgICAgICAgICBtX2ppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CiAg
ICAgfQogCi0gICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihpbmZv
KSwgR1BSSW5mbzo6cmVnVDIpOworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihpbmZvKSwg
R1BSSW5mbzo6cmVnVDIpOwogICAgIEpJVENvbXBpbGVyOjpDYWxsIHNsb3dDYWxsID0gbV9qaXQu
bmVhckNhbGwoKTsKIAogICAgIGRvbmUubGluaygmbV9qaXQpOwpAQCAtMTI0MiwxMCArMTI0Miw5
IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwKICAgICBzd2l0Y2gg
KGluZm8ucmVnaXN0ZXJGb3JtYXQoKSkgewogICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6IHsKICAg
ICAgICAgaWYgKGVkZ2UtPmhhc0NvbnN0YW50KCkpIHsKLSAgICAgICAgICAgIEpTVmFsdWUganNW
YWx1ZSA9IGVkZ2UtPmFzSlNWYWx1ZSgpOwogICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9j
YXRlKCk7CiAgICAgICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBT
cGlsbE9yZGVyQ29uc3RhbnQpOwotICAgICAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihqc1ZhbHVlLmFzQ2VsbCgpKSwgZ3ByKTsKKyAgICAgICAgICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbVB0cihlZGdlLT5jb25zdGFudCgpKSwgZ3ByKTsKICAgICAgICAg
ICAgIGluZm8uZmlsbENlbGwoKm1fc3RyZWFtLCBncHIpOwogICAgICAgICAgICAgcmV0dXJuIGdw
cjsKICAgICAgICAgfQpAQCAtMTcyNCw3ICsxNzIzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZU9iamVjdE9yT3RoZQogICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAogICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCiAgICAgICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9m
ZnNldCgpKSwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
bV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFu
dGljKSkpKTsKKyAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2pp
dC5ncmFwaCgpLCBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5v
cmlnaW4uc2VtYW50aWMpKSkpOwogCiAgICAgICAgIGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZC5saW5rKCZtX2ppdCk7CiAgICAgfQpAQCAtMTg0Myw3ICsxODQyLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcgogICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRy
KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCiAgICAgICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgU3RydWN0dXJlOjpnbG9iYWxP
YmplY3RPZmZzZXQoKSksIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdp
bi5zZW1hbnRpYykpKSk7CisgICAgICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50
Tm9kZS0+b3JpZ2luLnNlbWFudGljKSkpKTsKIAogICAgICAgICBpc05vdE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQubGluaygmbV9qaXQpOwogICAgIH0KQEAgLTM3NzgsNyArMzc3Nyw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIE5ld0FycmF5OiB7
CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBpZiAoIWdsb2Jh
bE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpICYmICFoYXNBbnlBcnJheVN0b3JhZ2Uobm9kZS0+
aW5kZXhpbmdUeXBlKCkpKSB7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGds
b2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9u
KG5vZGUtPmluZGV4aW5nVHlwZSgpKTsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
c3RydWN0dXJlID0gbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3Qt
PmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRl
eGluZ1R5cGUoKSkpOwogICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBl
KCkgPT0gbm9kZS0+aW5kZXhpbmdUeXBlKCkpOwogICAgICAgICAgICAgQVNTRVJUKAogICAgICAg
ICAgICAgICAgIGhhc1VuZGVjaWRlZChzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKQpAQCAtMzg1
Myw3ICszODUyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgICAgIEdQUkZsdXNoZWRDYWxs
UmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oCi0gICAgICAg
ICAgICAgICAgb3BlcmF0aW9uTmV3RW1wdHlBcnJheSwgcmVzdWx0LmdwcigpLCBnbG9iYWxPYmpl
Y3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5p
bmRleGluZ1R5cGUoKSkpOworICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld0VtcHR5QXJyYXks
IHJlc3VsdC5ncHIoKSwgbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmpl
Y3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5p
bmRleGluZ1R5cGUoKSkpKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAg
ICAgICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTM5MzAsNyArMzkyOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwog
ICAgICAgICAKICAgICAgICAgY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgIG9wZXJhdGlvbk5l
d0FycmF5LCByZXN1bHQuZ3ByKCksIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRl
eGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKSwKKyAgICAgICAg
ICAgIG9wZXJhdGlvbk5ld0FycmF5LCByZXN1bHQuZ3ByKCksIG1faml0LmdyYXBoKCkucmVnaXN0
ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1
cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKSwKICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PHZvaWQqPihidWZmZXIpLCBub2RlLT5udW1DaGlsZHJlbigpKTsKICAgICAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKIApAQCAtMzk3NiwxMCArMzk3NSwxMCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIgPSBzZWxlY3RTY3Jh
dGNoR1BSKHNpemVHUFIpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBiaWdMZW5ndGgg
PSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBzaXplR1BSLCBU
cnVzdGVkSW1tMzIoTUlOX0FSUkFZX1NUT1JBR0VfQ09OU1RSVUNUSU9OX0xFTkdUSCkpOwotICAg
ICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVy
ZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKSwg
c3RydWN0dXJlR1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0Lmdy
YXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvcklu
ZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKSksIHN0cnVj
dHVyZUdQUik7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1w
KCk7CiAgICAgICAgIGJpZ0xlbmd0aC5saW5rKCZtX2ppdCk7Ci0gICAgICAgIG1faml0Lm1vdmUo
VHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBl
RHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2UpKSwgc3RydWN0dXJlR1BSKTsK
KyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkucmVnaXN0ZXJT
dHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmlu
Z0FsbG9jYXRpb24oQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSkpLCBzdHJ1Y3R1cmVHUFIpOwogICAg
ICAgICBkb25lLmxpbmsoJm1faml0KTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25O
ZXdBcnJheVdpdGhTaXplLCByZXN1bHRHUFIsIHN0cnVjdHVyZUdQUiwgc2l6ZUdQUiwgbnVsbHB0
cik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CkBAIC0zOTk5LDcgKzM5OTgsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHN0b3Jh
Z2VHUFIgPSBzdG9yYWdlLmdwcigpOwogCi0gICAgICAgICAgICBlbWl0QWxsb2NhdGVSYXdPYmpl
Y3QocmVzdWx0R1BSLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBl
RHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cywg
bnVtRWxlbWVudHMpOworICAgICAgICAgICAgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQ
UiwgbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3Ry
dWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpKSwgc3Rv
cmFnZUdQUiwgbnVtRWxlbWVudHMsIG51bUVsZW1lbnRzKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgaWYgKG5vZGUtPmluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aERvdWJsZSkgewogICAg
ICAgICAgICAgICAgIEpTVmFsdWUqIGRhdGEgPSBtX2ppdC5jb2RlQmxvY2soKS0+Y29uc3RhbnRC
dWZmZXIobm9kZS0+c3RhcnRDb25zdGFudCgpKTsKQEAgLTQwMjcsNyArNDAyNiw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3Rl
cnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAg
ICAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwgcmVzdWx0
LmdwcigpLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5n
QWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSksIG5vZGUtPnN0YXJ0Q29uc3RhbnQoKSwg
bm9kZS0+bnVtQ29uc3RhbnRzKCkpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5l
d0FycmF5QnVmZmVyLCByZXN1bHQuZ3ByKCksIG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1
cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9j
YXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKSwgbm9kZS0+c3RhcnRDb25zdGFudCgpLCBub2Rl
LT5udW1Db25zdGFudHMoKSk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAg
ICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CkBAIC00MDUxLDcg
KzQwNTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgICAgIGNhbGxPcGVy
YXRpb24oCiAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhPbmVBcmd1
bWVudEZvclR5cGUobm9kZS0+dHlwZWRBcnJheVR5cGUoKSksCi0gICAgICAgICAgICAgICAgcmVz
dWx0R1BSLCBnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkobm9k
ZS0+dHlwZWRBcnJheVR5cGUoKSksIGFyZ3VtZW50UmVncyk7CisgICAgICAgICAgICAgICAgcmVz
dWx0R1BSLCBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlw
ZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseShub2RlLT50eXBlZEFycmF5VHlwZSgpKSksIGFy
Z3VtZW50UmVncyk7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC00MTcx
LDcgKzQxNzAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd1BhdGg7CiAgICAg
ICAgIAotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5vZGUtPnN0cnVjdHVyZSgpOwor
ICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG5vZGUtPnN0cnVjdHVyZSgp
OwogICAgICAgICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBKU0ZpbmFsT2JqZWN0OjphbGxvY2F0
aW9uU2l6ZShzdHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkpOwogICAgICAgICBNYXJrZWRBbGxv
Y2F0b3IqIGFsbG9jYXRvclB0ciA9IHN1YnNwYWNlRm9yPEpTRmluYWxPYmplY3Q+KCptX2ppdC52
bSgpKS0+YWxsb2NhdG9yRm9yKGFsbG9jYXRpb25TaXplKTsKIApAQCAtNDQxNiw4ICs0NDE1LDgg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIH0KICAgICAg
ICAgCiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6IHsKLSAgICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1
Y3R1cmUgPSBub2RlLT50cmFuc2l0aW9uKCktPnByZXZpb3VzOwotICAgICAgICBTdHJ1Y3R1cmUq
IG5ld1N0cnVjdHVyZSA9IG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dDsKKyAgICAgICAgUmVnaXN0
ZXJlZFN0cnVjdHVyZSBvbGRTdHJ1Y3R1cmUgPSBub2RlLT50cmFuc2l0aW9uKCktPnByZXZpb3Vz
OworICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG5ld1N0cnVjdHVyZSA9IG5vZGUtPnRyYW5z
aXRpb24oKS0+bmV4dDsKIAogICAgICAgICBtX2ppdC5qaXRDb2RlKCktPmNvbW1vbi5ub3RpZnlD
b21waWxpbmdTdHJ1Y3R1cmVUcmFuc2l0aW9uKG1faml0LmdyYXBoKCkubV9wbGFuLCBtX2ppdC5j
b2RlQmxvY2soKSwgbm9kZSk7CiAKQEAgLTQ0MjcsNyArNDQyNiw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgQVNTRVJUX1VOVVNFRChvbGRTdHJ1
Y3R1cmUsIG9sZFN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkgPT0gbmV3U3RydWN0dXJlLT5pbmRl
eGluZ1R5cGUoKSk7CiAgICAgICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlw
ZSgpID09IG5ld1N0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkpOwogICAgICAgICBBU1NFUlQo
b2xkU3RydWN0dXJlLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpID09IG5ld1N0cnVjdHVy
ZS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSk7Ci0gICAgICAgIG1faml0LnN0b3JlUHRy
KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG5ld1N0cnVjdHVyZSksIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOworICAg
ICAgICBtX2ppdC5zdG9yZVB0cihUcnVzdGVkSW1tUHRyKG5ld1N0cnVjdHVyZSksIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOwog
ICAgICAgICAKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDY5
MSw3ICs0NjkwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICBpZiAoIWhhc0luc3RhbmNlVmFsdWVOb2RlLT5pc0NlbGxDb25zdGFudCgpIHx8IGRl
ZmF1bHRIYXNJbnN0YW5jZUZ1bmN0aW9uICE9IGhhc0luc3RhbmNlVmFsdWVOb2RlLT5hc0NlbGwo
KSkgewogICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgaGFzSW5zdGFuY2VWYWx1ZVJlZ3MgPSBoYXNJ
bnN0YW5jZVZhbHVlLmpzVmFsdWVSZWdzKCk7CiAgICAgICAgICAgICBub3REZWZhdWx0SGFzSW5z
dGFuY2VWYWx1ZS5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGhhc0luc3RhbmNlVmFsdWVS
ZWdzKSk7Ci0gICAgICAgICAgICBub3REZWZhdWx0SGFzSW5zdGFuY2VWYWx1ZS5hcHBlbmQobV9q
aXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgaGFzSW5zdGFuY2VWYWx1ZVJl
Z3MucGF5bG9hZEdQUigpLCBUcnVzdGVkSW1tUHRyKGRlZmF1bHRIYXNJbnN0YW5jZUZ1bmN0aW9u
KSkpOworICAgICAgICAgICAgbm90RGVmYXVsdEhhc0luc3RhbmNlVmFsdWUuYXBwZW5kKG1faml0
LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGhhc0luc3RhbmNlVmFsdWVSZWdz
LnBheWxvYWRHUFIoKSwgVHJ1c3RlZEltbVB0cihub2RlLT5jZWxsT3BlcmFuZCgpKSkpOwogICAg
ICAgICB9CiAKICAgICAgICAgLy8gQ2hlY2sgdGhhdCBjb25zdHJ1Y3RvciAnSW1wbGVtZW50c0Rl
ZmF1bHRIYXNJbnN0YW5jZScuCkBAIC00NzUzLDcgKzQ3NTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBpc01hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQubGluaygmbV9qaXQpOwogICAgICAgICAgICAgR1BSUmVnIGxvY2FsR2xvYmFsT2JqZWN0
R1BSID0gbG9jYWxHbG9iYWxPYmplY3QuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgcmVtb3Rl
R2xvYmFsT2JqZWN0R1BSID0gcmVtb3RlR2xvYmFsT2JqZWN0LmdwcigpOwotICAgICAgICAgICAg
bV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpKSwgbG9jYWxHbG9iYWxPYmplY3RHUFIpOworICAgICAgICAgICAgbV9qaXQu
bW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBtX2ppdC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BS
KTsKICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWUu
cGF5bG9hZEdQUigpLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZXN1bHQuZ3ByKCkp
OwogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHQu
Z3ByKCksIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZW1vdGVHbG9iYWxPYmpl
Y3RHUFIpOyAKICAgICAgICAgICAgIG1faml0LmNvbXBhcmUzMihKSVRDb21waWxlcjo6RXF1YWws
IGxvY2FsR2xvYmFsT2JqZWN0R1BSLCByZW1vdGVHbG9iYWxPYmplY3RHUFIsIHJlc3VsdC5ncHIo
KSk7CkBAIC01NzEzLDEzICs1NzEyLDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVB
bGxvY2F0ZU5ld0EKICAgICAvLyBXZSBjYW4gdXNlIHJlc3VsdCBhcyBhIHNjcmF0Y2ggZm9yIHRo
aXMuCiAgICAgZW1pdEluaXRpYWxpemVCdXR0ZXJmbHkoc3RvcmFnZUdQUiwgc2l6ZUdQUiwgZW1w
dHlWYWx1ZVJlZ3MsIHJlc3VsdEdQUik7CiAgICAgICAgICAgICAKLSAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJp
bmdBbGxvY2F0aW9uKGluZGV4aW5nVHlwZSk7CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1
Y3R1cmUgPSBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJy
YXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4aW5nVHlwZSkp
OwogICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0PEpTQXJyYXk+KHJlc3VsdEdQUiwgVHJ1c3RlZElt
bVB0cihzdHJ1Y3R1cmUpLCBzdG9yYWdlR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiwgc2xv
d0Nhc2VzKTsKICAgICAgICAgICAgIAogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6bWFr
ZV91bmlxdWU8Q2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJh
dG9yPigKICAgICAgICAgc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXpl
LCByZXN1bHRHUFIsCiAgICAgICAgIHN0cnVjdHVyZSwKLSAgICAgICAgc2hvdWxkQ29udmVydExh
cmdlU2l6ZVRvQXJyYXlTdG9yYWdlID8gZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvcklu
ZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSA6IHN0cnVj
dHVyZSwKKyAgICAgICAgc2hvdWxkQ29udmVydExhcmdlU2l6ZVRvQXJyYXlTdG9yYWdlID8gbV9q
aXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJl
Rm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2UpKSA6
IHN0cnVjdHVyZSwKICAgICAgICAgc2l6ZUdQUiwgc3RvcmFnZUdQUikpOwogfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJ
KHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlCiAKICAgICAgICAgR1BSUmVnIGxvY2Fs
R2xvYmFsT2JqZWN0R1BSID0gbG9jYWxHbG9iYWxPYmplY3QuZ3ByKCk7CiAgICAgICAgIEdQUlJl
ZyByZW1vdGVHbG9iYWxPYmplY3RHUFIgPSByZW1vdGVHbG9iYWxPYmplY3QuZ3ByKCk7Ci0gICAg
ICAgIG1faml0Lm1vdmUoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5n
bG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxvY2FsR2xv
YmFsT2JqZWN0R1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2ppdC5ncmFwaCgpLCBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJl
bnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbG9jYWxHbG9iYWxPYmplY3RHUFIpOwogICAgICAg
ICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVyZShhcmdHUFIsIHJlc3VsdEdQUiwgc2NyYXRjaC5ncHIo
KSk7CiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BS
LCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVtb3RlR2xvYmFsT2JqZWN0R1BS
KTsKICAgICAgICAgbV9qaXQuY29tcGFyZVB0cihKSVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xv
YmFsT2JqZWN0R1BSLCByZW1vdGVHbG9iYWxPYmplY3RHUFIsIHJlc3VsdEdQUik7CkBAIC0zMDUs
NyArMzA1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaAogCiAg
ICAgICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9IGxvY2FsR2xvYmFsT2JqZWN0Lmdw
cigpOwogICAgICAgICBHUFJSZWcgcmVtb3RlR2xvYmFsT2JqZWN0R1BSID0gcmVtb3RlR2xvYmFs
T2JqZWN0LmdwcigpOwotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQuZ3Jh
cGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxv
Y2FsR2xvYmFsT2JqZWN0R1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvciht
X2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbG9jYWxHbG9iYWxPYmplY3RHUFIpOwog
ICAgICAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVyZShhcmdHUFIsIHJlc3VsdEdQUiwgc2NyYXRj
aC5ncHIoKSk7CiAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVz
dWx0R1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVtb3RlR2xvYmFsT2Jq
ZWN0R1BSKTsKICAgICAgICAgYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgbG9jYWxHbG9i
YWxPYmplY3RHUFIsIHJlbW90ZUdsb2JhbE9iamVjdEdQUiwgdGFrZW4pOwpAQCAtMTAwNiw3ICsx
MDA2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgIG1f
aml0LmVtaXRTdG9yZUNhbGxTaXRlSW5kZXgoY2FsbFNpdGUpOwogICAgIAogICAgIEpJVENvbXBp
bGVyOjpEYXRhTGFiZWxQdHIgdGFyZ2V0VG9DaGVjazsKLSAgICBKSVRDb21waWxlcjo6SnVtcCBz
bG93UGF0aCA9IG1faml0LmJyYW5jaFB0cldpdGhQYXRjaChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIGNhbGxlZUdQUiwgdGFyZ2V0VG9DaGVjaywgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIoMCkpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoID0gbV9qaXQuYnJhbmNoUHRy
V2l0aFBhdGNoKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgY2FsbGVlR1BSLCB0YXJnZXRUb0No
ZWNrLCBUcnVzdGVkSW1tUHRyKDApKTsKIAogICAgIGlmIChpc1RhaWwpIHsKICAgICAgICAgaWYg
KG5vZGUtPm9wKCkgPT0gVGFpbENhbGwpIHsKQEAgLTEwMzUsNyArMTAzNSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICAgICAgICAgIG1faml0LmVtaXRS
ZXN0b3JlQ2FsbGVlU2F2ZXMoKTsgLy8gVGhpcyBuZWVkcyB0byBoYXBwZW4gYWZ0ZXIgd2UgbW92
ZWQgY2FsbGVlR1BSIHRvIHJlZ1QwCiAgICAgfQogCi0gICAgbV9qaXQubW92ZShNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8pLCBHUFJJbmZvOjpyZWdUMik7IC8vIExp
bmsgaW5mbyBuZWVkcyB0byBiZSBpbiByZWdUMgorICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0
cihjYWxsTGlua0luZm8pLCBHUFJJbmZvOjpyZWdUMik7IC8vIExpbmsgaW5mbyBuZWVkcyB0byBi
ZSBpbiByZWdUMgogICAgIEpJVENvbXBpbGVyOjpDYWxsIHNsb3dDYWxsID0gbV9qaXQubmVhckNh
bGwoKTsKIAogICAgIGRvbmUubGluaygmbV9qaXQpOwpAQCAtMTg1Niw3ICsxODU2LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZQogICAgICAgICAgICAgbV9qaXQu
YnJhbmNoUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCiAgICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1
cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50
Tm9kZS0+b3JpZ2luLnNlbWFudGljKSkpKTsKKyAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZv
cihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSkpOwogCiAgICAgICAgIGlzTm90TWFz
cXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKCZtX2ppdCk7CiAgICAgfQpAQCAtMjAwNyw3ICsyMDA3
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcgogICAgICAgICAg
ICAgbV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVh
bCwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BS
LCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgCi0gICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Io
bV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSkpKTsKKyAgICAgICAgICAgICAgICBUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBtX2ppdC5ncmFwaCgpLmdsb2Jh
bE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSkpOwogCiAgICAgICAg
IGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKCZtX2ppdCk7CiAgICAgfQpAQCAtMzc1
Nyw3ICszNzU3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgIGNhc2UgTmV3QXJyYXk6IHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
CiAgICAgICAgIGlmICghZ2xvYmFsT2JqZWN0LT5pc0hhdmluZ0FCYWRUaW1lKCkgJiYgIWhhc0Fu
eUFycmF5U3RvcmFnZShub2RlLT5pbmRleGluZ1R5cGUoKSkpIHsKLSAgICAgICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5n
VHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpOworICAgICAgICAgICAg
UmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3Ry
dWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdB
bGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKSk7CiAgICAgICAgICAgICBERkdfQVNTRVJU
KG1faml0LmdyYXBoKCksIG5vZGUsIHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkgPT0gbm9kZS0+
aW5kZXhpbmdUeXBlKCkpOwogICAgICAgICAgICAgQVNTRVJUKAogICAgICAgICAgICAgICAgIGhh
c1VuZGVjaWRlZChzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKQpAQCAtMzgzMCw3ICszODMwLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBpZiAo
IW5vZGUtPm51bUNoaWxkcmVuKCkpIHsKICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAg
ICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgICAgICAg
ICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0VtcHR5QXJyYXksIHJlc3VsdC5ncHIoKSwgZ2xv
YmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24o
bm9kZS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0
aW9uTmV3RW1wdHlBcnJheSwgcmVzdWx0LmdwcigpLCBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3Ry
dWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdB
bGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKSkpOwogICAgICAgICAgICAgbV9qaXQuZXhj
ZXB0aW9uQ2hlY2soKTsKICAgICAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBub2Rl
KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzkxMiw3ICszOTEyLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3Vs
dCByZXN1bHQodGhpcyk7CiAgICAgICAgIAogICAgICAgICBjYWxsT3BlcmF0aW9uKAotICAgICAg
ICAgICAgb3BlcmF0aW9uTmV3QXJyYXksIHJlc3VsdC5ncHIoKSwgZ2xvYmFsT2JqZWN0LT5hcnJh
eVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdU
eXBlKCkpLAorICAgICAgICAgICAgb3BlcmF0aW9uTmV3QXJyYXksIHJlc3VsdC5ncHIoKSwgbV9q
aXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJl
Rm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSkpLAog
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dm9pZCo+KGJ1ZmZlciksIG5vZGUtPm51bUNoaWxkcmVu
KCkpOwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCkBAIC0zOTU2LDEwICszOTU2
LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
R1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHN0cnVjdHVy
ZUdQUiA9IHNlbGVjdFNjcmF0Y2hHUFIoc2l6ZUdQUik7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIGJpZ0xlbmd0aCA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9y
RXF1YWwsIHNpemVHUFIsIFRydXN0ZWRJbW0zMihNSU5fQVJSQVlfU1RPUkFHRV9DT05TVFJVQ1RJ
T05fTEVOR1RIKSk7Ci0gICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihnbG9iYWxPYmpl
Y3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5p
bmRleGluZ1R5cGUoKSkpLCBzdHJ1Y3R1cmVHUFIpOworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0
ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFy
cmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGlu
Z1R5cGUoKSkpKSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAg
ZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICAgICAgYmlnTGVuZ3RoLmxpbmsoJm1faml0KTsKLSAg
ICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1
cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aEFycmF5U3RvcmFnZSkp
LCBzdHJ1Y3R1cmVHUFIpOworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQu
Z3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9y
SW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2UpKSksIHN0
cnVjdHVyZUdQUik7CiAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwogICAgICAgICBjYWxsT3Bl
cmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIHJlc3VsdEdQUiwgc3RydWN0dXJlR1BS
LCBzaXplR1BSLCBudWxscHRyKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAg
LTM5NzksNyArMzk3OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAg
ICAgICBHUFJSZWcgc3RvcmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CiAKLSAgICAgICAgICAgIGVt
aXRBbGxvY2F0ZVJhd09iamVjdChyZXN1bHRHUFIsIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1
cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4aW5nVHlwZSksIHN0b3JhZ2VH
UFIsIG51bUVsZW1lbnRzLCBudW1FbGVtZW50cyk7CisgICAgICAgICAgICBlbWl0QWxsb2NhdGVS
YXdPYmplY3QocmVzdWx0R1BSLCBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2Jh
bE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGlu
ZGV4aW5nVHlwZSkpLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cywgbnVtRWxlbWVudHMpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIGlu
ZGV4aW5nVHlwZSAmIElzQXJyYXkpOwogICAgICAgICAgICAgSlNWYWx1ZSogZGF0YSA9IG1faml0
LmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZlcihub2RlLT5zdGFydENvbnN0YW50KCkpOwpAQCAt
NDAwNSw3ICs0MDA1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3Vs
dCByZXN1bHQodGhpcyk7CiAgICAgICAgIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bk5ld0FycmF5QnVmZmVyLCByZXN1bHQuZ3ByKCksIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1
cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKSwg
bm9kZS0+c3RhcnRDb25zdGFudCgpLCBub2RlLT5udW1Db25zdGFudHMoKSk7CisgICAgICAgIGNh
bGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXlCdWZmZXIsIHJlc3VsdC5ncHIoKSwgbV9qaXQu
Z3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9y
SW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSkpLCBub2Rl
LT5zdGFydENvbnN0YW50KCksIG5vZGUtPm51bUNvbnN0YW50cygpKTsKICAgICAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0Lmdw
cigpLCBub2RlKTsKQEAgLTQwMjksNyArNDAyOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
OwogICAgICAgICAgICAgY2FsbE9wZXJhdGlvbigKICAgICAgICAgICAgICAgICBvcGVyYXRpb25O
ZXdUeXBlZEFycmF5V2l0aE9uZUFyZ3VtZW50Rm9yVHlwZShub2RlLT50eXBlZEFycmF5VHlwZSgp
KSwKLSAgICAgICAgICAgICAgICByZXN1bHRHUFIsIGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0
cnVjdHVyZUNvbmN1cnJlbnRseShub2RlLT50eXBlZEFycmF5VHlwZSgpKSwKKyAgICAgICAgICAg
ICAgICByZXN1bHRHUFIsIG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2Jq
ZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KG5vZGUtPnR5cGVkQXJyYXlUeXBl
KCkpKSwKICAgICAgICAgICAgICAgICBhcmd1bWVudEdQUik7CiAgICAgICAgICAgICBtX2ppdC5l
eGNlcHRpb25DaGVjaygpOwogICAgICAgICAgICAgCkBAIC00MTQzLDcgKzQxNDMsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd1BhdGg7CiAKLSAgICAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBub2RlLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBzdHJ1Y3R1cmUgPSBub2RlLT5zdHJ1Y3R1cmUoKTsKICAgICAgICAgc2l6ZV90IGFsbG9jYXRp
b25TaXplID0gSlNGaW5hbE9iamVjdDo6YWxsb2NhdGlvblNpemUoc3RydWN0dXJlLT5pbmxpbmVD
YXBhY2l0eSgpKTsKICAgICAgICAgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3JQdHIgPSBzdWJz
cGFjZUZvcjxKU0ZpbmFsT2JqZWN0PigqbV9qaXQudm0oKSktPmFsbG9jYXRvckZvcihhbGxvY2F0
aW9uU2l6ZSk7CiAKQEAgLTQzNzYsOCArNDM3Niw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgUHV0U3RydWN0dXJl
OiB7Ci0gICAgICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gbm9kZS0+dHJhbnNpdGlvbigp
LT5wcmV2aW91czsKLSAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBub2RlLT50cmFu
c2l0aW9uKCktPm5leHQ7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgb2xkU3RydWN0dXJl
ID0gbm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91czsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVj
dHVyZSBuZXdTdHJ1Y3R1cmUgPSBub2RlLT50cmFuc2l0aW9uKCktPm5leHQ7CiAKICAgICAgICAg
bV9qaXQuaml0Q29kZSgpLT5jb21tb24ubm90aWZ5Q29tcGlsaW5nU3RydWN0dXJlVHJhbnNpdGlv
bihtX2ppdC5ncmFwaCgpLm1fcGxhbiwgbV9qaXQuY29kZUJsb2NrKCksIG5vZGUpOwogCkBAIC00
NjUyLDcgKzQ2NTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIC8vIHNpbmNlIGl0IHJlbGllcyBvbiBPU1IgaW5mb3JtYXRpb24uIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ4MzIKICAgICAgICAgaWYgKCFoYXNJ
bnN0YW5jZVZhbHVlTm9kZS0+aXNDZWxsQ29uc3RhbnQoKSB8fCBkZWZhdWx0SGFzSW5zdGFuY2VG
dW5jdGlvbiAhPSBoYXNJbnN0YW5jZVZhbHVlTm9kZS0+YXNDZWxsKCkpIHsKICAgICAgICAgICAg
IEdQUlJlZyBoYXNJbnN0YW5jZVZhbHVlR1BSID0gaGFzSW5zdGFuY2VWYWx1ZS5ncHIoKTsKLSAg
ICAgICAgICAgIG5vdERlZmF1bHQgPSBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCBoYXNJbnN0YW5jZVZhbHVlR1BSLCBUcnVzdGVkSW1tUHRyKGRlZmF1bHRIYXNJbnN0
YW5jZUZ1bmN0aW9uKSk7CisgICAgICAgICAgICBub3REZWZhdWx0ID0gbV9qaXQuYnJhbmNoUHRy
KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgaGFzSW5zdGFuY2VWYWx1ZUdQUiwgVHJ1c3RlZElt
bVB0cihub2RlLT5jZWxsT3BlcmFuZCgpKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBDaGVj
ayB0aGF0IGJhc2UgJ0ltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UnLgpAQCAtNDcxOSw3ICs0
NzE5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICAgICAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsoJm1faml0KTsKICAgICAgICAgICAg
IEdQUlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9IGxvY2FsR2xvYmFsT2JqZWN0LmdwcigpOwog
ICAgICAgICAgICAgR1BSUmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9IHJlbW90ZUdsb2JhbE9i
amVjdC5ncHIoKTsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0
R1BSKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CiAgICAgICAgICAgICBtX2ppdC5lbWl0TG9hZFN0
cnVjdHVyZSh2YWx1ZS5ncHIoKSwgcmVzdWx0LmdwcigpLCBzY3JhdGNoLmdwcigpKTsKICAgICAg
ICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0LmdwcigpLCBT
dHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSKTsg
CiAgICAgICAgICAgICBtX2ppdC5jb21wYXJlUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgbG9jYWxH
bG9iYWxPYmplY3RHUFIsIHJlbW90ZUdsb2JhbE9iamVjdEdQUiwgcmVzdWx0LmdwcigpKTsKQEAg
LTQ5MTIsOSArNDkxMiw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KGJ1ZmZl
ckdQUiwgaW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0KSwgYnVja2V0R1BSKTsK
ICAgICAgICAgbV9qaXQubW92ZShidWNrZXRHUFIsIHJlc3VsdEdQUik7CiAgICAgICAgIGF1dG8g
bm90UHJlc2VudEluVGFibGUgPSBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFs
LCAKLSAgICAgICAgICAgIGJ1Y2tldEdQUiwgVHJ1c3RlZEltbVB0cihIYXNoTWFwSW1wbDxIYXNo
TWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46OmVtcHR5VmFsdWUoKSkpOworICAgICAg
ICAgICAgYnVja2V0R1BSLCBUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDxzaXplX3Q+KEhhc2hN
YXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+Pjo6ZW1wdHlWYWx1ZSgp
KSkpOwogICAgICAgICBsb29wQXJvdW5kLmFwcGVuZChtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3Nl
bWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAgIGJ1Y2tldEdQUiwgVHJ1c3RlZEltbVB0cihIYXNo
TWFwSW1wbDxIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46OmRlbGV0ZWRWYWx1
ZSgpKSkpOworICAgICAgICAgICAgYnVja2V0R1BSLCBUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2Fz
dDxzaXplX3Q+KEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+
Pjo6ZGVsZXRlZFZhbHVlKCkpKSkpOwogCiAgICAgICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhidWNrZXRHUFIsIEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFL
ZXk+OjpvZmZzZXRPZktleSgpKSwgYnVja2V0R1BSKTsKIApAQCAtNTk4Miw3ICs1OTgyLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFsbG9jYXRlTmV3QQogICAgICAgICBtX2ppdC5t
b3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKSksIHNjcmF0Y2hHUFIp
OwogICAgIGVtaXRJbml0aWFsaXplQnV0dGVyZmx5KHN0b3JhZ2VHUFIsIHNpemVHUFIsIEpTVmFs
dWVSZWdzKHNjcmF0Y2hHUFIpLCBzY3JhdGNoMkdQUik7CiAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdB
bGxvY2F0aW9uKGluZGV4aW5nVHlwZSk7CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1
cmUgPSBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlT
dHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4aW5nVHlwZSkpOwog
ICAgIAogICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0PEpTQXJyYXk+KHJlc3VsdEdQUiwgVHJ1c3Rl
ZEltbVB0cihzdHJ1Y3R1cmUpLCBzdG9yYWdlR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiwg
c2xvd0Nhc2VzKTsKICAgICAKQEAgLTU5OTEsNyArNTk5MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVBbGxvY2F0ZU5ld0EKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1h
a2VfdW5pcXVlPENhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJsZVNpemVTbG93UGF0aEdlbmVy
YXRvcj4oCiAgICAgICAgIHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6
ZSwgcmVzdWx0R1BSLAogICAgICAgICBzdHJ1Y3R1cmUsCi0gICAgICAgIHNob3VsZENvbnZlcnRM
YXJnZVNpemVUb0FycmF5U3RvcmFnZSA/IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJ
bmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aEFycmF5U3RvcmFnZSkgOiBzdHJ1
Y3R1cmUsCisgICAgICAgIHNob3VsZENvbnZlcnRMYXJnZVNpemVUb0FycmF5U3RvcmFnZSA/IG1f
aml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVy
ZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSkg
OiBzdHJ1Y3R1cmUsCiAgICAgICAgIHNpemVHUFIsIHN0b3JhZ2VHUFIpKTsKIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJl
dmlzaW9uIDIxMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIFNwZWN1bGF0aXZlSklU
Ojp+U3BlY3VsYXRpdmVKSVQoKQogewogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxs
b2NhdGVSYXdPYmplY3QoR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQ
UlJlZyBzdG9yYWdlR1BSLCB1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgdmVjdG9yTGVu
Z3RoKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlUmF3T2JqZWN0KEdQUlJlZyBy
ZXN1bHRHUFIsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCBHUFJSZWcgc3RvcmFnZUdQ
UiwgdW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCkKIHsKICAgICBJ
bmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlID0gc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKTsKICAg
ICBib29sIGhhc0luZGV4aW5nSGVhZGVyID0gaGFzSW5kZXhlZFByb3BlcnRpZXMoaW5kZXhpbmdU
eXBlKTsKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRl
UmF3T2JqZQogICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOwogCiAgICAg
QVNTRVJUKHZlY3Rvckxlbmd0aCA+PSBudW1FbGVtZW50cyk7Ci0gICAgdmVjdG9yTGVuZ3RoID0g
QnV0dGVyZmx5OjpvcHRpbWFsQ29udGlndW91c1ZlY3Rvckxlbmd0aChzdHJ1Y3R1cmUsIHZlY3Rv
ckxlbmd0aCk7CisgICAgdmVjdG9yTGVuZ3RoID0gQnV0dGVyZmx5OjpvcHRpbWFsQ29udGlndW91
c1ZlY3Rvckxlbmd0aChzdHJ1Y3R1cmUuZ2V0KCksIHZlY3Rvckxlbmd0aCk7CiAgICAgCiAgICAg
SklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKIApAQCAtMTk1LDcgKzE5NSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRHZXRDYWxsZWUoQ29kZU8KICAgICAgICAgICAgICAgICBj
YWxsZWVHUFIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV9qaXQubW92ZSgKLSAg
ICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyKG9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmNhbGxl
ZVJlY292ZXJ5LmNvbnN0YW50KCkuYXNDZWxsKCkpLAorICAgICAgICAgICAgICAgIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIG9yaWdpbi5pbmxpbmVDYWxsRnJhbWUt
PmNhbGxlZVJlY292ZXJ5LmNvbnN0YW50KCkuYXNDZWxsKCkpLAogICAgICAgICAgICAgICAgIGNh
bGxlZUdQUik7CiAgICAgICAgIH0KICAgICB9IGVsc2UKQEAgLTY0OCw3ICs2NDgsOCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpzaWxlbnRGaWxsKGNvbnN0IFNpCiAgICAgICAgIG1faml0Lm1vdmUo
VHJ1c3RlZEltbTMyKHBsYW4ubm9kZSgpLT5hc0Jvb2xlYW4oKSksIHBsYW4uZ3ByKCkpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFNldENlbGxDb25zdGFudDoKLSAgICAgICAgbV9qaXQubW92
ZShUcnVzdGVkSW1tUHRyKHBsYW4ubm9kZSgpLT5hc0NlbGwoKSksIHBsYW4uZ3ByKCkpOworICAg
ICAgICBBU1NFUlQocGxhbi5ub2RlKCktPmNvbnN0YW50KCktPnZhbHVlKCkuaXNDZWxsKCkpOwor
ICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIocGxhbi5ub2RlKCktPmNvbnN0YW50KCkp
LCBwbGFuLmdwcigpKTsKICAgICAgICAgYnJlYWs7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBj
YXNlIFNldFRydXN0ZWRKU0NvbnN0YW50OgpAQCAtODc3LDcgKzg3OCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNoZWNrQXJyYXkoTm9kZSogbm8KICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAog
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAogICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQo
KSksCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihleHBlY3RlZENs
YXNzSW5mbykpKTsKKyAgICAgICAgICAgIFRydXN0ZWRJbW1QdHIoZXhwZWN0ZWRDbGFzc0luZm8p
KSk7CiAgICAgCiAgICAgbm9SZXN1bHQobV9jdXJyZW50Tm9kZSk7CiB9CkBAIC0yMDU1LDcgKzIw
NTYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPblN0CiAgICAgY29u
dDhCaXQubGluaygmbV9qaXQpOwogCiAgICAgbV9qaXQubHNoaWZ0MzIoTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW0zMihzaXplb2Yodm9pZCopID09IDQgPyAyIDogMyksIHNjcmF0Y2hSZWcpOwot
ICAgIG1faml0LmFkZFB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgp
LT5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5ncygpKSwgc2NyYXRjaFJlZyk7Cisg
ICAgbV9qaXQuYWRkUHRyKFRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c21hbGxTdHJpbmdzLnNp
bmdsZUNoYXJhY3RlclN0cmluZ3MoKSksIHNjcmF0Y2hSZWcpOwogICAgIG1faml0LmxvYWRQdHIo
c2NyYXRjaFJlZywgc2NyYXRjaFJlZyk7CiAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKQEAg
LTIxNDYsNyArMjE0Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVGcm9tQ2hhckNv
ZGUKIAogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgc2xvd0Nhc2Vz
LmFwcGVuZChtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9w
ZXJ0eVJlZywgVHJ1c3RlZEltbTMyKDB4ZmYpKSk7Ci0gICAgbV9qaXQubW92ZShNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFj
dGVyU3RyaW5ncygpKSwgc21hbGxTdHJpbmdzUmVnKTsKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJ
bW1QdHIobV9qaXQudm0oKS0+c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZ3MoKSks
IHNtYWxsU3RyaW5nc1JlZyk7CiAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QmFz
ZUluZGV4KHNtYWxsU3RyaW5nc1JlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpTY2Fs
ZVB0ciwgMCksIHNjcmF0Y2hSZWcpOwogCiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFu
Y2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHNjcmF0Y2hSZWcpKTsKQEAgLTI0NjgsNyAr
MjQ2OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVSZXAoTm8KICAgICAg
ICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzVW5kZWZpbmVkID0gbV9qaXQuYnJhbmNoNjQoSklU
Q29tcGlsZXI6OkVxdWFsLCBvcDFHUFIsIFRydXN0ZWRJbW02NChWYWx1ZVVuZGVmaW5lZCkpOwog
CiAgICAgICAgICAgICBzdGF0aWMgY29uc3QgZG91YmxlIHplcm8gPSAwOwotICAgICAgICAgICAg
bV9qaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmemVybyksIHJl
c3VsdEZQUik7CisgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKFRydXN0ZWRJbW1QdHIoJnpl
cm8pLCByZXN1bHRGUFIpOwogCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc051bGwg
PSBtX2ppdC5icmFuY2g2NChKSVRDb21waWxlcjo6RXF1YWwsIG9wMUdQUiwgVHJ1c3RlZEltbTY0
KFZhbHVlTnVsbCkpOwogICAgICAgICAgICAgZG9uZS5hcHBlbmQoaXNOdWxsKTsKQEAgLTI0Nzgs
MTMgKzI0NzksMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVJlcChObwog
CiAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc0ZhbHNlID0gbV9qaXQuYnJhbmNoNjQo
SklUQ29tcGlsZXI6OkVxdWFsLCBvcDFHUFIsIFRydXN0ZWRJbW02NChWYWx1ZUZhbHNlKSk7CiAg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgZG91YmxlIG9uZSA9IDE7Ci0gICAgICAgICAgICBtX2pp
dC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZvbmUpLCByZXN1bHRG
UFIpOworICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShUcnVzdGVkSW1tUHRyKCZvbmUpLCBy
ZXN1bHRGUFIpOwogICAgICAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuanVtcCgpKTsKICAgICAg
ICAgICAgIGRvbmUuYXBwZW5kKGlzRmFsc2UpOwogCiAgICAgICAgICAgICBpc1VuZGVmaW5lZC5s
aW5rKCZtX2ppdCk7CiAgICAgICAgICAgICBzdGF0aWMgY29uc3QgZG91YmxlIE5hTiA9IFBOYU47
Ci0gICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKCZOYU4pLCByZXN1bHRGUFIpOworICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShUcnVz
dGVkSW1tUHRyKCZOYU4pLCByZXN1bHRGUFIpOwogICAgICAgICAgICAgZG9uZS5hcHBlbmQobV9q
aXQuanVtcCgpKTsKIAogICAgICAgICAgICAgaXNOdW1iZXIubGluaygmbV9qaXQpOwpAQCAtMjUx
Nyw3ICsyNTE4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVJlcChObwog
ICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNVbmRlZmluZWQgPSBtX2ppdC5icmFuY2gz
MihKSVRDb21waWxlcjo6RXF1YWwsIG9wMVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlVu
ZGVmaW5lZFRhZykpOwogCiAgICAgICAgICAgICBzdGF0aWMgY29uc3QgZG91YmxlIHplcm8gPSAw
OwotICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cigmemVybyksIHJlc3VsdEZQUik7CisgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKFRy
dXN0ZWRJbW1QdHIoJnplcm8pLCByZXN1bHRGUFIpOwogCiAgICAgICAgICAgICBKSVRDb21waWxl
cjo6SnVtcCBpc051bGwgPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6RXF1YWwsIG9wMVRh
Z0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Ok51bGxUYWcpKTsKICAgICAgICAgICAgIGRvbmUu
YXBwZW5kKGlzTnVsbCk7CkBAIC0yNTI2LDEzICsyNTI3LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVEb3VibGVSZXAoTm8KIAogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
aXNGYWxzZSA9IG1faml0LmJyYW5jaFRlc3QzMihKSVRDb21waWxlcjo6WmVybywgb3AxUGF5bG9h
ZEdQUiwgVHJ1c3RlZEltbTMyKDEpKTsKICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBkb3VibGUg
b25lID0gMTsKLSAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIoJm9uZSksIHJlc3VsdEZQUik7CisgICAgICAgICAgICBtX2ppdC5sb2FkRG91
YmxlKFRydXN0ZWRJbW1QdHIoJm9uZSksIHJlc3VsdEZQUik7CiAgICAgICAgICAgICBkb25lLmFw
cGVuZChtX2ppdC5qdW1wKCkpOwogICAgICAgICAgICAgZG9uZS5hcHBlbmQoaXNGYWxzZSk7CiAK
ICAgICAgICAgICAgIGlzVW5kZWZpbmVkLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBkb3VibGUgTmFOID0gUE5hTjsKLSAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUo
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJk5hTiksIHJlc3VsdEZQUik7CisgICAgICAg
ICAgICBtX2ppdC5sb2FkRG91YmxlKFRydXN0ZWRJbW1QdHIoJk5hTiksIHJlc3VsdEZQUik7CiAg
ICAgICAgICAgICBkb25lLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogCiAgICAgICAgICAgICBpc051
bWJlci5saW5rKCZtX2ppdCk7CkBAIC0yNjQ3LDEyICsyNjQ4LDEyIEBAIHN0YXRpYyB2b2lkIGNv
bXBpbGVDbGFtcERvdWJsZVRvQnl0ZShKSVQKICAgICBzdGF0aWMgY29uc3QgZG91YmxlIHplcm8g
PSAwOwogICAgIHN0YXRpYyBjb25zdCBkb3VibGUgYnl0ZU1heCA9IDI1NTsKICAgICBzdGF0aWMg
Y29uc3QgZG91YmxlIGhhbGYgPSAwLjU7Ci0gICAgaml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIoJnplcm8pLCBzY3JhdGNoKTsKKyAgICBqaXQubG9hZERvdWJsZShK
SVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cigmemVybyksIHNjcmF0Y2gpOwogICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wIHRvb1NtYWxsID0gaml0LmJyYW5jaERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6
RG91YmxlTGVzc1RoYW5PckVxdWFsT3JVbm9yZGVyZWQsIHNvdXJjZSwgc2NyYXRjaCk7Ci0gICAg
aml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJmJ5dGVNYXgpLCBz
Y3JhdGNoKTsKKyAgICBqaXQubG9hZERvdWJsZShKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cigm
Ynl0ZU1heCksIHNjcmF0Y2gpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHRvb0JpZyA9IGpp
dC5icmFuY2hEb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUdyZWF0ZXJUaGFuLCBzb3VyY2Us
IHNjcmF0Y2gpOwogICAgIAotICAgIGppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKCZoYWxmKSwgc2NyYXRjaCk7CisgICAgaml0LmxvYWREb3VibGUoSklUQ29tcGls
ZXI6OlRydXN0ZWRJbW1QdHIoJmhhbGYpLCBzY3JhdGNoKTsKICAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGQgcHJvYmFibHkganVzdCB1c2UgYSBmbG9hdGluZyBwb2ludCByb3VuZCEKICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIwNTQKICAgICBqaXQuYWRk
RG91YmxlKHNvdXJjZSwgc2NyYXRjaCk7CkBAIC0zOTAwLDcgKzM5MDEsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlTWFrZVJvcGUoTm9kCiAgICAgTWFya2VkQWxsb2NhdG9yKiBtYXJr
ZWRBbGxvY2F0b3IgPSBzdWJzcGFjZUZvcjxKU1N0cmluZz4oKm1faml0LnZtKCkpLT5hbGxvY2F0
b3JGb3Ioc2l6ZW9mKEpTUm9wZVN0cmluZykpOwogICAgIFJFTEVBU0VfQVNTRVJUKG1hcmtlZEFs
bG9jYXRvcik7CiAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1hcmtlZEFsbG9jYXRvciks
IGFsbG9jYXRvckdQUik7Ci0gICAgZW1pdEFsbG9jYXRlSlNDZWxsKHJlc3VsdEdQUiwgbWFya2Vk
QWxsb2NhdG9yLCBhbGxvY2F0b3JHUFIsIFRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5n
U3RydWN0dXJlLmdldCgpKSwgc2NyYXRjaEdQUiwgc2xvd1BhdGgpOworICAgIGVtaXRBbGxvY2F0
ZUpTQ2VsbChyZXN1bHRHUFIsIG1hcmtlZEFsbG9jYXRvciwgYWxsb2NhdG9yR1BSLCBUcnVzdGVk
SW1tUHRyKG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUobV9qaXQudm0oKS0+c3RyaW5n
U3RydWN0dXJlLmdldCgpKSksIHNjcmF0Y2hHUFIsIHNsb3dQYXRoKTsKICAgICAgICAgCiAgICAg
bV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cigwKSwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVz
dWx0R1BSLCBKU1N0cmluZzo6b2Zmc2V0T2ZWYWx1ZSgpKSk7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bU9wR1BSczsgKytpKQpAQCAtNTA5Nyw3ICs1MDk4LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoUm91bmRpbgogICAgICAgICAgICAgICAgIEZQUlJlZyBy
ZXN1bHRGUFIgPSByZXN1bHQuZnByKCk7CiAgICAgICAgICAgICAgICAgaWYgKHByb2R1Y2VzSW50
ZWdlcihub2RlLT5hcml0aFJvdW5kaW5nTW9kZSgpKSAmJiAhc2hvdWxkQ2hlY2tOZWdhdGl2ZVpl
cm8obm9kZS0+YXJpdGhSb3VuZGluZ01vZGUoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IGRvdWJsZSBoYWxmQ29uc3RhbnQgPSAwLjU7Ci0gICAgICAgICAgICAgICAgICAg
IG1faml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJmhhbGZDb25z
dGFudCksIHJlc3VsdEZQUik7CisgICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUo
VHJ1c3RlZEltbVB0cigmaGFsZkNvbnN0YW50KSwgcmVzdWx0RlBSKTsKICAgICAgICAgICAgICAg
ICAgICAgbV9qaXQuYWRkRG91YmxlKHZhbHVlRlBSLCByZXN1bHRGUFIpOwogICAgICAgICAgICAg
ICAgICAgICBtX2ppdC5mbG9vckRvdWJsZShyZXN1bHRGUFIsIHJlc3VsdEZQUik7CiAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKQEAgLTUxMDksMTEgKzUxMTAsMTEgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUFyaXRoUm91bmRpbgogICAgICAgICAgICAgICAgICAgICBGUFJUZW1wb3Jh
cnkgc2NyYXRjaCh0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgRlBSUmVnIHNjcmF0Y2hGUFIg
PSBzY3JhdGNoLmZwcigpOwogICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgZG91Ymxl
IGhhbGZDb25zdGFudCA9IDAuNTsKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQubG9hZERvdWJs
ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmaGFsZkNvbnN0YW50KSwgc2NyYXRjaEZQ
Uik7CisgICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoVHJ1c3RlZEltbVB0cigm
aGFsZkNvbnN0YW50KSwgc2NyYXRjaEZQUik7CiAKICAgICAgICAgICAgICAgICAgICAgSklUQ29t
cGlsZXI6Okp1bXAgc2hvdWxkVXNlQ2VpbGVkID0gbV9qaXQuYnJhbmNoRG91YmxlKEpJVENvbXBp
bGVyOjpEb3VibGVMZXNzVGhhbk9yRXF1YWwsIHJlYWxQYXJ0RlBSLCBzY3JhdGNoRlBSKTsKICAg
ICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBvbmVDb25zdGFudCA9IC0xLjA7
Ci0gICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIoJm9uZUNvbnN0YW50KSwgc2NyYXRjaEZQUik7CisgICAgICAgICAgICAgICAg
ICAgIG1faml0LmxvYWREb3VibGUoVHJ1c3RlZEltbVB0cigmb25lQ29uc3RhbnQpLCBzY3JhdGNo
RlBSKTsKICAgICAgICAgICAgICAgICAgICAgbV9qaXQuYWRkRG91YmxlKHNjcmF0Y2hGUFIsIHJl
c3VsdEZQUik7CiAgICAgICAgICAgICAgICAgICAgIHNob3VsZFVzZUNlaWxlZC5saW5rKCZtX2pp
dCk7CiAgICAgICAgICAgICAgICAgfQpAQCAtNjM1MywxMiArNjM1NCwxMiBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlQ2hlY2tTdHJpbmdJCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAK
LXRlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGU+IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgR1BSUmVnIHNjcmF0Y2gxR1BSLCBHUFJSZWcgc2NyYXRjaDJHUFIsIEdQUlJlZyBzY29wZUdQ
UiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBzbG93UGF0aCwgc2l6ZV90IHNpemUsIEZ1bmN0
aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgcHRyZGlmZl90IG9mZnNldE9mU2NvcGVDaGFpbiwg
cHRyZGlmZl90IG9mZnNldE9mRXhlY3V0YWJsZSwgcHRyZGlmZl90IG9mZnNldE9mUmFyZURhdGEp
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlPiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlTmV3RnVuY3Rpb25Db21tb24oR1BSUmVnIHJlc3VsdEdQUiwgUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBzdHJ1Y3R1cmUsIEdQUlJlZyBzY3JhdGNoMUdQUiwgR1BSUmVnIHNjcmF0Y2gyR1BSLCBHUFJS
ZWcgc2NvcGVHUFIsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYgc2xvd1BhdGgsIHNpemVfdCBz
aXplLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIHB0cmRpZmZfdCBvZmZzZXRPZlNj
b3BlQ2hhaW4sIHB0cmRpZmZfdCBvZmZzZXRPZkV4ZWN1dGFibGUsIHB0cmRpZmZfdCBvZmZzZXRP
ZlJhcmVEYXRhKQogewogICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0V2l0aEtub3duU2l6ZTxDbGFz
c1R5cGU+KHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRy
KDApLCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIsIHNsb3dQYXRoLCBzaXplKTsKICAgICAKICAg
ICBtX2ppdC5zdG9yZVB0cihzY29wZUdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BS
LCBvZmZzZXRPZlNjb3BlQ2hhaW4pKTsKLSAgICBtX2ppdC5zdG9yZVB0cihUcnVzdGVkSW1tUHRy
KGV4ZWN1dGFibGUpLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9mZnNldE9mRXhl
Y3V0YWJsZSkpOworICAgIG1faml0LnN0b3JlUHRyKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1faml0LmdyYXBoKCksIGV4ZWN1dGFibGUpLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRH
UFIsIG9mZnNldE9mRXhlY3V0YWJsZSkpOwogICAgIG1faml0LnN0b3JlUHRyKFRydXN0ZWRJbW1Q
dHIoMCksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0T2ZSYXJlRGF0YSkp
OwogICAgIAogICAgIG1faml0Lm11dGF0b3JGZW5jZSgpOwpAQCAtNjM5MSwxMCArNjM5MiwxMCBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3RnVuY3Rpb24oCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9CisgICAgUmVnaXN0ZXJlZFN0
cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKAogICAg
ICAgICBub2RlVHlwZSA9PSBOZXdHZW5lcmF0b3JGdW5jdGlvbiA/IG1faml0LmdyYXBoKCkuZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmdlbmVyYXRvckZ1bmN0aW9uU3Ry
dWN0dXJlKCkgOgogICAgICAgICBub2RlVHlwZSA9PSBOZXdBc3luY0Z1bmN0aW9uID8gbV9qaXQu
Z3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXN5bmNGdW5j
dGlvblN0cnVjdHVyZSgpIDoKLSAgICAgICAgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKTsKKyAgICAgICAgbV9q
aXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rp
b25TdHJ1Y3R1cmUoKSk7CiAgICAgCiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDEodGhpcyk7CkBAIC02NTEwLDggKzY1MTEsOCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlRm9yd2FyZFZhcmFyCiB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQ3JlYXRlQWN0aXZhdGlvbihOb2RlKiBub2RlKQogewogICAgIFN5bWJvbFRhYmxl
KiB0YWJsZSA9IG5vZGUtPmNhc3RPcGVyYW5kPFN5bWJvbFRhYmxlKj4oKTsKLSAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKAotICAgICAgICBu
b2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hY3RpdmF0aW9uU3RydWN0dXJlKCk7CisgICAgUmVnaXN0
ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJl
KG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKAorICAgICAgICBub2RlLT5vcmlnaW4uc2Vt
YW50aWMpLT5hY3RpdmF0aW9uU3RydWN0dXJlKCkpOwogICAgICAgICAKICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBzY29wZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgR1BSUmVnIHNjb3Bl
R1BSID0gc2NvcGUuZ3ByKCk7CkBAIC02NTUyLDcgKzY1NTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlQ3JlYXRlQWN0aXZhCiAgICAgLy8gYWN0aXZhdGlvbiBtdXN0IGJlIHlvdW5n
LgogICAgIG1faml0LnN0b3JlUHRyKHNjb3BlR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1
bHRHUFIsIEpTU2NvcGU6Om9mZnNldE9mTmV4dCgpKSk7CiAgICAgbV9qaXQuc3RvcmVQdHIoCi0g
ICAgICAgIFRydXN0ZWRJbW1QdHIodGFibGUpLAorICAgICAgICBUcnVzdGVkSW1tUHRyKG5vZGUt
PmNlbGxPcGVyYW5kKCkpLAogICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIs
IEpTTGV4aWNhbEVudmlyb25tZW50OjpvZmZzZXRPZlN5bWJvbFRhYmxlKCkpKTsKICAgICAgICAg
CiAgICAgLy8gTXVzdCBpbml0aWFsaXplIGFsbCBtZW1iZXJzIHRvIHVuZGVmaW5lZCBvciB0aGUg
VERaIGVtcHR5IHZhbHVlLgpAQCAtNjYxNSw4ICs2NjE2LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUNyZWF0ZURpcmVjdAogICAgICAgICBtX2ppdC5zdWIzMihUcnVzdGVkSW1tMzIo
MSksIGxlbmd0aEdQUik7CiAgICAgfQogICAgICAgICAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9Ci0gICAgICAgIG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyktPmRpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZSgpOworICAgIFJlZ2lzdGVyZWRTdHJ1
Y3R1cmUgc3RydWN0dXJlID0KKyAgICAgICAgbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVy
ZShtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5k
aXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUoKSk7CiAgICAgICAgIAogICAgIC8vIFVzZSBhIGRpZmZl
cmVudCBzdHJhdGVneSBmb3IgYWxsb2NhdGluZyB0aGUgb2JqZWN0IGRlcGVuZGluZyBvbiB3aGV0
aGVyIHdlIGtub3cgaXRzCiAgICAgLy8gc2l6ZSBzdGF0aWNhbGx5LgpAQCAtNjY4MSw4ICs2Njgy
LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZURpcmVjdAogICAgICAgICAg
ICAgICAgIHNjcmF0Y2gxR1BSKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1faml0
Lm1vdmUoCi0gICAgICAgICAgICAgICAgVHJ1c3RlZEltbVB0cigKLSAgICAgICAgICAgICAgICAg
ICAgbm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZS0+Y2FsbGVlUmVjb3Zlcnku
Y29uc3RhbnQoKS5hc0NlbGwoKSksCisgICAgICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vh
a1BvaW50ZXIoCisgICAgICAgICAgICAgICAgICAgIG1faml0LmdyYXBoKCksIG5vZGUtPm9yaWdp
bi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUtPmNhbGxlZVJlY292ZXJ5LmNvbnN0YW50KCkuYXND
ZWxsKCkpLAogICAgICAgICAgICAgICAgIHNjcmF0Y2gxR1BSKTsKICAgICAgICAgfQogICAgIH0g
ZWxzZQpAQCAtNjc5OCw3ICs2Nzk5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNy
ZWF0ZVNjb3BlZAogICAgIG1faml0LnNldHVwQXJndW1lbnQoCiAgICAgICAgIDEsIFsmXSAoR1BS
UmVnIGRlc3RHUFIpIHsKICAgICAgICAgICAgIG1faml0Lm1vdmUoCi0gICAgICAgICAgICAgICAg
VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KS0+c2NvcGVkQXJndW1lbnRzU3RydWN0dXJlKCkpLAorICAgICAgICAgICAgICAgIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIG1faml0Lmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpLT5zY29wZWRBcmd1bWVudHNTdHJ1Y3R1cmUoKSksCiAgICAg
ICAgICAgICAgICAgZGVzdEdQUik7CiAgICAgICAgIH0pOwogICAgIG1faml0LnNldHVwQXJndW1l
bnQoMCwgWyZdIChHUFJSZWcgZGVzdEdQUikgeyBtX2ppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyLCBkZXN0R1BSKTsgfSk7CkBAIC02ODI1LDggKzY4MjYsOCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlQ2xvbmVkCiAgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgK
ICAgICAgICAgMSwgWyZdIChHUFJSZWcgZGVzdEdQUikgewogICAgICAgICAgICAgbV9qaXQubW92
ZSgKLSAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyKAotICAgICAgICAgICAgICAgICAgICBt
X2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+Y2xvbmVkQXJndW1l
bnRzU3RydWN0dXJlKCkpLAorICAgICAgICAgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKAorICAgICAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLCBtX2ppdC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+Y2xvbmVkQXJndW1lbnRzU3RydWN0dXJlKCkp
LAogICAgICAgICAgICAgICAgIGRlc3RHUFIpOwogICAgICAgICB9KTsKICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50KDAsIFsmXSAoR1BSUmVnIGRlc3RHUFIpIHsgbV9qaXQubW92ZShHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgZGVzdEdQUik7IH0pOwpAQCAtNjk0OSw3ICs2OTUwLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVNwcmVhZChOb2RlKgogICAgICAgICBtX2ppdC5sc2hp
ZnQzMihUcnVzdGVkSW1tMzIoMyksIHNjcmF0Y2gxR1BSKTsKICAgICAgICAgbV9qaXQuYWRkMzIo
VHJ1c3RlZEltbTMyKEpTRml4ZWRBcnJheTo6b2Zmc2V0T2ZEYXRhKCkpLCBzY3JhdGNoMUdQUik7
CiAKLSAgICAgICAgbV9qaXQuZW1pdEFsbG9jYXRlVmFyaWFibGVTaXplZENlbGw8SlNGaXhlZEFy
cmF5PihyZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5tX3ZtLmZpeGVkQXJy
YXlTdHJ1Y3R1cmUuZ2V0KCkpLCBzY3JhdGNoMUdQUiwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BS
LCBzbG93UGF0aCk7CisgICAgICAgIG1faml0LmVtaXRBbGxvY2F0ZVZhcmlhYmxlU2l6ZWRDZWxs
PEpTRml4ZWRBcnJheT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkucmVn
aXN0ZXJTdHJ1Y3R1cmUobV9qaXQuZ3JhcGgoKS5tX3ZtLmZpeGVkQXJyYXlTdHJ1Y3R1cmUuZ2V0
KCkpKSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd1BhdGgpOwog
ICAgICAgICBtX2ppdC5zdG9yZTMyKGxlbmd0aEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
cmVzdWx0R1BSLCBKU0ZpeGVkQXJyYXk6Om9mZnNldE9mU2l6ZSgpKSk7CiAKICAgICAgICAgbV9q
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhhcmd1bWVudCwgSlNPYmplY3Q6OmJ1
dHRlcmZseU9mZnNldCgpKSwgc2NyYXRjaDFHUFIpOwpAQCAtNzI2NiwxNyArNzI2NywxNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJyYXlTbGljZShOCiAgICAgICAgIC8vIHRvIGVu
c3VyZSB0aGUgaW5jb21pbmcgYXJyYXkgaXMgb25lIHRvIGJlIG9uZSBvZiB0aGUgb3JpZ2luYWwg
YXJyYXkgc3RydWN0dXJlcwogICAgICAgICAvLyB3aXRoIG9uZSBvZiB0aGUgZm9sbG93aW5nIGlu
ZGV4aW5nIHNoYXBlczogSW50MzIsIENvbnRpZ3VvdXMsIERvdWJsZS4gVGhlcmVmb3JlLAogICAg
ICAgICAvLyB3ZSdyZSBhIGRvdWJsZSBhcnJheSBoZXJlLgotICAgICAgICBtX2ppdC5tb3ZlKFRy
dXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1
cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoRG91YmxlKSksIHRlbXBWYWx1ZSk7CisgICAgICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGds
b2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9u
KEFycmF5V2l0aERvdWJsZSkpKSwgdGVtcFZhbHVlKTsKICAgICAgICAgZW1pdE1vdmVFbXB0eVZh
bHVlKGpzTmFOKCkpOwogICAgICAgICBkb25lLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogCiAgICAg
ICAgIGlzQ29udGlndW91cy5saW5rKCZtX2ppdCk7Ci0gICAgICAgIG1faml0Lm1vdmUoVHJ1c3Rl
ZEltbVB0cihnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5n
QWxsb2NhdGlvbihBcnJheVdpdGhDb250aWd1b3VzKSksIHRlbXBWYWx1ZSk7CisgICAgICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGds
b2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9u
KEFycmF5V2l0aENvbnRpZ3VvdXMpKSksIHRlbXBWYWx1ZSk7CiAgICAgICAgIGVtaXRNb3ZlRW1w
dHlWYWx1ZShKU1ZhbHVlKCkpOwogICAgICAgICBkb25lLmFwcGVuZChtX2ppdC5qdW1wKCkpOwog
CiAgICAgICAgIGlzSW50MzIubGluaygmbV9qaXQpOwotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0
ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmlu
Z0FsbG9jYXRpb24oQXJyYXlXaXRoSW50MzIpKSwgdGVtcFZhbHVlKTsKKyAgICAgICAgbV9qaXQu
bW92ZShUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFs
T2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJy
YXlXaXRoSW50MzIpKSksIHRlbXBWYWx1ZSk7CiAgICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZShK
U1ZhbHVlKCkpOwogCiAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwpAQCAtNzQ1Niw3ICs3NDU3
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVR5cGVPZihOb2RlKgogICAgIG1faml0
LmVtaXRUeXBlT2YoCiAgICAgICAgIHZhbHVlUmVncywgcmVzdWx0R1BSLAogICAgICAgICBbJl0g
KFR5cGVvZlR5cGUgdHlwZSwgYm9vbCBmYWxsc1Rocm91Z2gpIHsKLSAgICAgICAgICAgIG1faml0
Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zbWFsbFN0cmluZ3MudHlwZVN0cmluZyh0
eXBlKSksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIG1faml0LnZtKCktPnNtYWxsU3RyaW5ncy50eXBl
U3RyaW5nKHR5cGUpKSwgcmVzdWx0R1BSKTsKICAgICAgICAgICAgIGlmICghZmFsbHNUaHJvdWdo
KQogICAgICAgICAgICAgICAgIGRvbmUuYXBwZW5kKG1faml0Lmp1bXAoKSk7CiAgICAgICAgIH0s
CkBAIC03NTgwLDcgKzc1ODEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2Nh
dGVQcm9wCiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIyID0gc2NyYXRjaDIuZ3ByKCk7CiAgICAgR1BS
UmVnIHNjcmF0Y2hHUFIzID0gc2NyYXRjaDMuZ3ByKCk7CiAgICAgICAgIAotICAgIG1faml0Lm1v
dmUoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIoYWxsb2NhdG9yKSwgc2NyYXRjaEdQUjIpOwor
ICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihhbGxvY2F0b3IpLCBzY3JhdGNoR1BSMik7CiAg
ICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dQYXRoOwogICAgIG1faml0LmVtaXRBbGxvY2F0
ZShzY3JhdGNoR1BSMSwgYWxsb2NhdG9yLCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjMsIHNsb3dQ
YXRoKTsKICAgICBtX2ppdC5hZGRQdHIoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihzaXplICsg
c2l6ZW9mKEluZGV4aW5nSGVhZGVyKSksIHNjcmF0Y2hHUFIxKTsKQEAgLTc2MjgsNyArNzYyOSw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZWFsbG9jYXRlUHIKICAgICBHUFJSZWcg
c2NyYXRjaEdQUjMgPSBzY3JhdGNoMy5ncHIoKTsKICAgICAKICAgICBKSVRDb21waWxlcjo6SnVt
cExpc3Qgc2xvd1BhdGg7Ci0gICAgbV9qaXQubW92ZShKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0
cihhbGxvY2F0b3IpLCBzY3JhdGNoR1BSMik7CisgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRy
KGFsbG9jYXRvciksIHNjcmF0Y2hHUFIyKTsKICAgICBtX2ppdC5lbWl0QWxsb2NhdGUoc2NyYXRj
aEdQUjEsIGFsbG9jYXRvciwgc2NyYXRjaEdQUjIsIHNjcmF0Y2hHUFIzLCBzbG93UGF0aCk7CiAg
ICAgCiAgICAgbV9qaXQuYWRkUHRyKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIobmV3U2l6ZSAr
IHNpemVvZihJbmRleGluZ0hlYWRlcikpLCBzY3JhdGNoR1BSMSk7CkBAIC03ODU3LDEwICs3ODU4
LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1N0cmluZ09yQ2EKICAgICAgICAg
R1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAogICAgICAgICBtX2ppdC5sb2FkMzIo
SklUQ29tcGlsZXI6OkFkZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkp
LCByZXN1bHRHUFIpOwotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc1N0cmluZyA9IG1faml0
LmJyYW5jaFN0cnVjdHVyZSgKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNTdHJpbmcgPSBt
X2ppdC5icmFuY2hXZWFrU3RydWN0dXJlKAogICAgICAgICAgICAgSklUQ29tcGlsZXI6OkVxdWFs
LAogICAgICAgICAgICAgcmVzdWx0R1BSLAotICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5n
U3RydWN0dXJlLmdldCgpKTsKKyAgICAgICAgICAgIG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1
Y3R1cmUobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAKICAgICAgICAgc3Bl
Y3VsYXRlU3RyaW5nT2JqZWN0Rm9yU3RydWN0dXJlKG5vZGUtPmNoaWxkMSgpLCByZXN1bHRHUFIp
OwogICAgICAgICAKQEAgLTc5NTYsOCArNzk1Nyw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVOZXdUeXBlZEFycmEKIHsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAg
ICBUeXBlZEFycmF5VHlwZSB0eXBlID0gbm9kZS0+dHlwZWRBcnJheVR5cGUoKTsKLSAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1
cnJlbnRseSh0eXBlKTsKLSAgICBSRUxFQVNFX0FTU0VSVChzdHJ1Y3R1cmUpOworICAgIFJlZ2lz
dGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVy
ZShnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZSkpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZS5nZXQoKSk7CiAgICAgCiAgICAgU3BlY3VsYXRl
SW50MzJPcGVyYW5kIHNpemUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEdQUlJlZyBzaXpl
R1BSID0gc2l6ZS5ncHIoKTsKQEAgLTg0MDEsMTAgKzg0MDIsMTAgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6c3BlY3VsYXRlU3RyaW5nT3JTdAogICAgIEdQUlJlZyBzdHJ1Y3R1cmVJREdQUiA9IHN0
cnVjdHVyZUlELmdwcigpOwogCiAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpBZGRyZXNz
KGdwciwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc3RydWN0dXJlSURHUFIpOyAKLSAg
ICBKSVRDb21waWxlcjo6SnVtcCBpc1N0cmluZyA9IG1faml0LmJyYW5jaFN0cnVjdHVyZSgKKyAg
ICBKSVRDb21waWxlcjo6SnVtcCBpc1N0cmluZyA9IG1faml0LmJyYW5jaFdlYWtTdHJ1Y3R1cmUo
CiAgICAgICAgIEpJVENvbXBpbGVyOjpFcXVhbCwKICAgICAgICAgc3RydWN0dXJlSURHUFIsIAot
ICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOworICAgICAgICBtX2pp
dC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSkpOwogICAgIAogICAgIHNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZShlZGdl
LCBzdHJ1Y3R1cmVJREdQUik7CiAgICAgCkBAIC05MjY3LDggKzkyNjgsOCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlTGF6eUpTQ29uc3RhCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVNYXRlcmlhbGl6ZU5ld09iamVjdChOb2RlKiBub2RlKQogewotICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gbm9kZS0+c3RydWN0dXJlU2V0KClbMF07Ci0gICAgQVNTRVJUKG1faml0Lmdy
YXBoKCkudmFyQXJnQ2hpbGQobm9kZSwgMCktPmR5bmFtaWNDYXN0Q29uc3RhbnQ8U3RydWN0dXJl
Kj4oKSA9PSBzdHJ1Y3R1cmUpOworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0g
bm9kZS0+c3RydWN0dXJlU2V0KCkuYXQoMCk7CisgICAgQVNTRVJUKG1faml0LmdyYXBoKCkudmFy
QXJnQ2hpbGQobm9kZSwgMCktPmR5bmFtaWNDYXN0Q29uc3RhbnQ8U3RydWN0dXJlKj4oKSA9PSBz
dHJ1Y3R1cmUuZ2V0KCkpOwogCiAgICAgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSYgZGF0YSA9
IG5vZGUtPm9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEoKTsKICAgICAgICAgCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAy
MTEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJ
KHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDYgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewog
cHJpdmF0ZToKICAgICB0eXBlZGVmIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIgVHJ1c3RlZElt
bTMyOwogICAgIHR5cGVkZWYgSklUQ29tcGlsZXI6OkltbTMyIEltbTMyOwotICAgIHR5cGVkZWYg
SklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIgVHJ1c3RlZEltbVB0cjsKICAgICB0eXBlZGVmIEpJ
VENvbXBpbGVyOjpJbW1QdHIgSW1tUHRyOwogICAgIHR5cGVkZWYgSklUQ29tcGlsZXI6OlRydXN0
ZWRJbW02NCBUcnVzdGVkSW1tNjQ7CiAgICAgdHlwZWRlZiBKSVRDb21waWxlcjo6SW1tNjQgSW1t
NjQ7CkBAIC0xMTIsNiArMTExLDU4IEBAIHB1YmxpYzoKICAgICBTcGVjdWxhdGl2ZUpJVChKSVRD
b21waWxlciYpOwogICAgIH5TcGVjdWxhdGl2ZUpJVCgpOwogCisgICAgc3RydWN0IFRydXN0ZWRJ
bW1QdHIgeworICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICAgICAgZXhwbGljaXQg
VHJ1c3RlZEltbVB0cihUKiB2YWx1ZSkKKyAgICAgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKKyAg
ICAgICAgeworICAgICAgICAgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPEhlYXBD
ZWxsLCBUPjo6dmFsdWUsICJUbyB1c2UgYSBHQyBwb2ludGVyLCB0aGUgZ3JhcGggbXVzdCBiZSBh
d2FyZSBvZiBpdC4gVXNlIFNwZWN1bGF0aXZlSklUOjpUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
ciBpbnN0ZWFkLiIpOworICAgICAgICB9CisKKyAgICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbVB0
cihSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkKKyAgICAgICAgICAgIDogbV92YWx1ZShz
dHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgIHsgfQorICAgICAgICAKKyAgICAgICAgLy8gVGhpcyBp
cyBvbmx5IGhlcmUgc28gdGhhdCBUcnVzdGVkSW1tUHRyKDApIGRvZXMgbm90IGNvbmZ1c2UgdGhl
IEMrKworICAgICAgICAvLyBvdmVybG9hZCBoYW5kbGluZyBydWxlcy4KKyAgICAgICAgZXhwbGlj
aXQgVHJ1c3RlZEltbVB0cihpbnQgdmFsdWUpCisgICAgICAgICAgICA6IG1fdmFsdWUodmFsdWUp
CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVCghdmFsdWUpOworICAgICAgICB9CisKKyAg
ICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbVB0cihzdGQ6Om51bGxwdHJfdCkKKyAgICAgICAgICAg
IDogbV92YWx1ZSgwKQorICAgICAgICB7IH0KKworICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1t
UHRyKEZyb3plblZhbHVlKiB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQodmFsdWUtPnZhbHVlKCkuaXNDZWxsKCkpOworICAgICAgICAgICAgbV92YWx1ZSA9IE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHZhbHVlLT5jZWxsKCkpOworICAgICAgICB9CisK
KyAgICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbVB0cihzaXplX3QgdmFsdWUpCisgICAgICAgICAg
ICA6IG1fdmFsdWUoYml0d2lzZV9jYXN0PHZvaWQqPih2YWx1ZSkpCisgICAgICAgIHsKKyAgICAg
ICAgfQorCisgICAgICAgIHN0YXRpYyBUcnVzdGVkSW1tUHRyIHdlYWtQb2ludGVyKEdyYXBoJiBn
cmFwaCwgSlNDZWxsKiBjZWxsKQorICAgICAgICB7CisgICAgICAgICAgICBncmFwaC5tX3BsYW4u
d2Vha1JlZmVyZW5jZXMuYWRkTGF6aWx5KGNlbGwpOworICAgICAgICAgICAgcmV0dXJuIFRydXN0
ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHNpemVfdD4oY2VsbCkpOworICAgICAgICB9CisKKyAgICAg
ICAgb3BlcmF0b3IgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoKSBjb25zdCB7IHJldHVy
biBtX3ZhbHVlOyB9CisKKyAgICAgICAgaW50cHRyX3QgYXNJbnRwdHIoKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gbV92YWx1ZS5hc0ludHB0cigpOworICAgICAgICB9CisKKyAgICBw
cml2YXRlOgorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0ciBtX3ZhbHVlOwor
ICAgIH07CisKICAgICBib29sIGNvbXBpbGUoKTsKICAgICAKICAgICB2b2lkIGNyZWF0ZU9TUkVu
dHJpZXMoKTsKQEAgLTk4MiwxNyArMTAzMywxNyBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShvYmosIGltcGwpOwogICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVN0IG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3Qgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAg
fQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVN0
WlAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVn
IGFyZzIsIEdQUlJlZyBhcmczKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
UF9KSVRPcGVyYXRpb25fRVN0WlAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBSZWdpc3RlcmVk
U3RydWN0dXJlIHN0cnVjdHVyZSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQogICAgIHsKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3Ry
dWN0dXJlKSwgYXJnMiwgYXJnMyk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RaUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RaUCBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHQsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCBzaXplX3QgYXJn
MiwgR1BSUmVnIGFyZzMpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tMzIoYXJnMiksIGFy
ZzMpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CkBAIC0xMDAyLDEyICsxMDUzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVN0WkIgb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIGFyZzIsIEdQUlJl
ZyBidXR0ZXJmbHkpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9w
ZXJhdGlvbl9FU3RaQiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUgc3RydWN0dXJlLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGJ1dHRlcmZseSkKICAgICB7CiAgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVj
dHVyZSksIGFyZzIsIGJ1dHRlcmZseSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RaQiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgYXJnMiwgR1BSUmVnIGJ1dHRlcmZseSkKKyAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VTdFpCIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIHNp
emVfdCBhcmcyLCBHUFJSZWcgYnV0dGVyZmx5KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgVHJ1c3RlZElt
bTMyKGFyZzIpLCBidXR0ZXJmbHkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdCk7CkBAIC0xMDIyLDEyICsxMDczLDEyIEBAIHB1YmxpYzoKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIFRydXN0
ZWRJbW1QdHIoYnV0dGVyZmx5KSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RQUyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCB2b2lkKiBwb2ludGVyLCBzaXplX3Qgc2l6ZSkKKyAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VTdFBTIG9wZXJhdGlv
biwgR1BSUmVnIHJlc3VsdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIHZvaWQqIHBv
aW50ZXIsIHNpemVfdCBzaXplKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgVHJ1c3RlZEltbVB0cihwb2lu
dGVyKSwgVHJ1c3RlZEltbVB0cihzaXplKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RTUyBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgaW5kZXgsIHNpemVfdCBzaXplKQorICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVN0U1Mgb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgc2l6
ZV90IGluZGV4LCBzaXplX3Qgc2l6ZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0ZWRJbW1QdHIo
aW5kZXgpLCBUcnVzdGVkSW1tUHRyKHNpemUpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwpAQCAtMTA0NCw3ICsxMDk1LDcgQEAgcHVibGlj
OgogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0
aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgSlNDZWxsKiBjZWxsKQogICAgIHsKLSAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoY2Vs
bCkpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgY2VsbCkpOwogICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUNaIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQpAQCAtMTA1OSw3ICsxMTEw
LDcgQEAgcHVibGljOgogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KENfSklUT3BlcmF0aW9uX0VKc2NDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFy
ZzEsIEpTQ2VsbCogY2VsbCkKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGNlbGwpKTsKKyAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1faml0LmdyYXBoKCksIGNlbGwpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1
bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VJY2Ygb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBJ
bmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkKQEAgLTEwNjcsNDYgKzExMTgsNDYgQEAg
cHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbVB0cihpbmxpbmVDYWxsRnJhbWUpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oQ19KSVRPcGVyYXRpb25fRVN0IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgUmVnaXN0ZXJl
ZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsKICAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAogI2lmIFVT
RShKU1ZBTFVFNjQpCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9w
ZXJhdGlvbl9FU3RKc2NTeW10YWJKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEdQUlJlZyBzY29wZSwgU3ltYm9sVGFibGUqIHRhYmxlLCBUcnVzdGVkSW1t
NjQgaW5pdGlhbFZhbHVlKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19K
SVRPcGVyYXRpb25fRVN0SnNjU3ltdGFiSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFJlZ2lz
dGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCBHUFJSZWcgc2NvcGUsIFN5bWJvbFRhYmxlKiB0YWJs
ZSwgVHJ1c3RlZEltbTY0IGluaXRpYWxWYWx1ZSkKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIHNjb3BlLCBU
cnVzdGVkSW1tUHRyKHRhYmxlKSwgaW5pdGlhbFZhbHVlKTsKKyAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgc2NvcGUsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIHRhYmxlKSwgaW5pdGlhbFZh
bHVlKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOwogICAgIH0KICNlbHNlCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihD
X0pJVE9wZXJhdGlvbl9FU3RKc2NTeW10YWJKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBzY29wZSwgU3ltYm9sVGFibGUqIHRhYmxlLCBUcnVz
dGVkSW1tMzIgdGFnLCBUcnVzdGVkSW1tMzIgcGF5bG9hZCkKKyAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdEpzY1N5bXRhYkogb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgR1BSUmVnIHNjb3Bl
LCBTeW1ib2xUYWJsZSogdGFibGUsIFRydXN0ZWRJbW0zMiB0YWcsIFRydXN0ZWRJbW0zMiBwYXls
b2FkKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRy
dXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgc2NvcGUsIFRydXN0ZWRJbW1QdHIodGFibGUpLCBwYXls
b2FkLCB0YWcpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1
c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBzY29wZSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9qaXQuZ3JhcGgoKSwgdGFibGUpLCBwYXlsb2FkLCB0YWcpOwogICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogI2VuZGlmCi0gICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FU3RaIG9wZXJh
dGlvbiwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGtub3du
TGVuZ3RoKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRp
b25fRVN0WiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3Ry
dWN0dXJlLCB1bnNpZ25lZCBrbm93bkxlbmd0aCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0ZWRJ
bW0zMihrbm93bkxlbmd0aCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oQ19KSVRPcGVyYXRpb25fRVN0Wlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQga25vd25MZW5ndGgsIHVuc2lnbmVkIG1pbkNhcGFj
aXR5KQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25f
RVN0Wlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVj
dHVyZSwgdW5zaWduZWQga25vd25MZW5ndGgsIHVuc2lnbmVkIG1pbkNhcGFjaXR5KQogICAgIHsK
ICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIo
c3RydWN0dXJlKSwgVHJ1c3RlZEltbTMyKGtub3duTGVuZ3RoKSwgVHJ1c3RlZEltbTMyKG1pbkNh
cGFjaXR5KSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJ
VE9wZXJhdGlvbl9FU3RaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEdQUlJlZyBsZW5ndGgpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihDX0pJVE9wZXJhdGlvbl9FU3RaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgUmVnaXN0ZXJl
ZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIEdQUlJlZyBsZW5ndGgpCiAgICAgewogICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBs
ZW5ndGgpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRP
cGVyYXRpb25fRVN0Wlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgR1BSUmVnIGxlbmd0aCwgdW5zaWduZWQgbWluQ2FwYWNpdHkpCisgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FU3RaWiBvcGVyYXRpb24sIEdQ
UlJlZyByZXN1bHQsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCBHUFJSZWcgbGVuZ3Ro
LCB1bnNpZ25lZCBtaW5DYXBhY2l0eSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGxlbmd0aCwgVHJ1c3Rl
ZEltbTMyKG1pbkNhcGFjaXR5KSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FSnNzU3Qgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBH
UFJSZWcgYXJnMSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FSnNzU3Qgb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBHUFJSZWcgYXJnMSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpCiAgICAgewog
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZElt
bVB0cihzdHJ1Y3R1cmUpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOwpAQCAtMTE0MCwxMyArMTE5MSwxMyBAQCBwdWJsaWM6CiAKICAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9uX0VHQyBvcGVyYXRp
b24sIEdQUlJlZyByZXN1bHQsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEdQUlJlZyBh
cmcyKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRy
dXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwgYXJnMik7CisgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFw
aCgpLCBnbG9iYWxPYmplY3QpLCBhcmcyKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRS
ZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUdDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgR1BSUmVnIGFyZzIpCiAgICAgewotICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihnbG9i
YWxPYmplY3QpLCBhcmcyKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGdsb2JhbE9iamVj
dCksIGFyZzIpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CiAgICAgfQogCkBAIC0xMTcwLDcgKzEyMjEsNyBAQCBwdWJsaWM6CiAKICAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VDIG9wZXJhdGlv
biwgSlNDZWxsKiBhcmcxKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoYXJnMSkpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgo
KSwgYXJnMSkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0K
IApAQCAtMTE5NywxMiArMTI0OCwxMiBAQCBwdWJsaWM6CiAgICAgfQogICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUNDIG9wZXJhdGlvbiwgR1BSUmVn
IGFyZzEsIEpTQ2VsbCogYXJnMikKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGFyZzIpKTsKKyAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1faml0LmdyYXBoKCksIGFyZzIpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3Bl
cmF0aW9uKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJ
VE9wZXJhdGlvbl9FQ0Mgb3BlcmF0aW9uLCBKU0NlbGwqIGFyZzEsIEdQUlJlZyBhcmcyKQogICAg
IHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1Q
dHIoYXJnMSksIGFyZzIpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgYXJnMSksIGFyZzIp
OwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KIApAQCAtMTI3
MywxMyArMTMyNCwxMyBAQCBwdWJsaWM6CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKc2NDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGFyZzEsIEpTQ2VsbCogY2VsbCkKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGNlbGwpKTsKKyAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1faml0LmdyYXBoKCksIGNlbGwpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICAKICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKc2NDSiBvcGVyYXRpb24sIEdQ
UlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwsIEdQUlJlZyBhcmcyKQogICAg
IHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0
ZWRJbW1QdHIoY2VsbCksIGFyZzIpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwg
Y2VsbCksIGFyZzIpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CiAgICAgfQogCkBAIC0xNDc0LDcgKzE1MjUsNyBAQCBwdWJsaWM6CiAgICAg
fQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUMg
b3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBKU0NlbGwqIGNlbGwpCiAgICAgewotICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihjZWxsKSk7Cisg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBjZWxsKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FQ1ogb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCkBAIC0xNTQ0LDcgKzE1OTUsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKICAgICB9CiAKLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklU
T3BlcmF0aW9uX0VTdEogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgR1BSUmVnIGFyZzIpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQ
X0pJVE9wZXJhdGlvbl9FU3RKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgUmVnaXN0ZXJlZFN0
cnVjdHVyZSBzdHJ1Y3R1cmUsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgYXJnMik7
CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
QEAgLTE1NTIsNyArMTYwMyw3IEBAIHB1YmxpYzoKIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUdKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgR1BSUmVnIGFyZzEpCiAgICAgewotICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihnbG9iYWxP
YmplY3QpLCBhcmcxKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGdsb2JhbE9iamVjdCks
IGFyZzEpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CiAgICAgfQogCkBAIC0xOTAwLDcgKzE5NTEsNyBAQCBwdWJsaWM6CiAgICAgfQogICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oRF9KSVRPcGVyYXRpb25fRyBvcGVyYXRp
b24sIEZQUlJlZyByZXN1bHQsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgewot
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50cyhUcnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdCkp
OworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50cyhUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3QpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKFpfSklUT3BlcmF0aW9uX0Qgb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBGUFJSZWcgYXJnMSkKQEAgLTIwMDksNyArMjA2MCw3IEBAIHB1YmxpYzoKIAogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUMgb3BlcmF0aW9u
LCBKU1ZhbHVlUmVncyByZXN1bHQsIEpTQ2VsbCogY2VsbCkKICAgICB7Ci0gICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGNlbGwpKTsKKyAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHI6OndlYWtQ
b2ludGVyKG1faml0LmdyYXBoKCksIGNlbGwpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQucGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCkp
OwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0
aW9uX0VDWiBvcGVyYXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJl
ZyBhcmcyKQpAQCAtMjAxOSwxMiArMjA3MCwxMiBAQCBwdWJsaWM6CiAgICAgfQogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0Mgb3BlcmF0aW9u
LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwpCiAgICAgewot
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZElt
bVB0cihjZWxsKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBjZWxsKSk7CiAg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0LnBheWxv
YWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNjQ0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBHUFJSZWcgYXJnMSwgSlNDZWxsKiBjZWxsLCBKU1ZhbHVlUmVncyBhcmcyKQogICAgIHsK
LSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJ
bW1QdHIoY2VsbCksIEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzIucGF5bG9hZEdQUigpLCBhcmcy
LnRhZ0dQUigpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGNlbGwpLCBFQUJJ
XzMyQklUX0RVTU1ZX0FSRyBhcmcyLnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSk7CiAgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9
CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FR1Jl
b0ogb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJn
MiwgSlNWYWx1ZVJlZ3MgYXJnMykKQEAgLTIxMDksNyArMjE2MCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0K
IAotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVN0
SiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1ZhbHVl
UmVncyBhcmcyKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVy
YXRpb25fRVN0SiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
c3RydWN0dXJlLCBKU1ZhbHVlUmVncyBhcmcyKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgYXJnMi5wYXls
b2FkR1BSKCksIGFyZzIudGFnR1BSKCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CkBAIC0yMTE3LDcgKzIxNjgsNyBAQCBwdWJsaWM6CiAK
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VHSiBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWVSZWdzIGFyZzEpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoVHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QpLCBhcmcxLnBheWxvYWRHUFIoKSwg
YXJnMS50YWdHUFIoKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3Qp
LCBhcmcxLnBheWxvYWRHUFIoKSwgYXJnMS50YWdHUFIoKSk7CiAgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKQEAgLTI2NjcsNyAr
MjcxOCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJy
YXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJyYXlUeXBlKTsK
ICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5vZGUqLCBUeXBlZEFy
cmF5VHlwZSk7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVkQXJyYXkoR1BS
UmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJyYXlUeXBlKTsKLSAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlPiB2b2lkIGNvbXBpbGVOZXdGdW5jdGlvbkNvbW1v
bihHUFJSZWcsIFN0cnVjdHVyZSosIEdQUlJlZywgR1BSUmVnLCBHUFJSZWcsIE1hY3JvQXNzZW1i
bGVyOjpKdW1wTGlzdCYsIHNpemVfdCwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgcHRyZGlmZl90LCBw
dHJkaWZmX3QsIHB0cmRpZmZfdCk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzVHlwZT4g
dm9pZCBjb21waWxlTmV3RnVuY3Rpb25Db21tb24oR1BSUmVnLCBSZWdpc3RlcmVkU3RydWN0dXJl
LCBHUFJSZWcsIEdQUlJlZywgR1BSUmVnLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmLCBzaXpl
X3QsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIHB0cmRpZmZfdCwgcHRyZGlmZl90LCBwdHJkaWZmX3Qp
OwogICAgIHZvaWQgY29tcGlsZU5ld0Z1bmN0aW9uKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVT
ZXRGdW5jdGlvbk5hbWUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUZvcndhcmRWYXJhcmdzKE5v
ZGUqKTsKQEAgLTI3NTMsMTMgKzI4MDQsMTMgQEAgcHVibGljOgogICAgIH0KIAogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENsYXNzVHlwZT4KLSAgICB2b2lkIGVtaXRBbGxvY2F0ZURlc3RydWN0aWJs
ZU9iamVjdChHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgCisgICAgdm9p
ZCBlbWl0QWxsb2NhdGVEZXN0cnVjdGlibGVPYmplY3QoR1BSUmVnIHJlc3VsdEdQUiwgUmVnaXN0
ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIAogICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUjEsIEdQ
UlJlZyBzY3JhdGNoR1BSMiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBzbG93UGF0aCkKICAg
ICB7Ci0gICAgICAgIG1faml0LmVtaXRBbGxvY2F0ZURlc3RydWN0aWJsZU9iamVjdDxDbGFzc1R5
cGU+KHJlc3VsdEdQUiwgc3RydWN0dXJlLCBzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIHNsb3dQ
YXRoKTsKKyAgICAgICAgbV9qaXQuZW1pdEFsbG9jYXRlRGVzdHJ1Y3RpYmxlT2JqZWN0PENsYXNz
VHlwZT4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmUuZ2V0KCksIHNjcmF0Y2hHUFIxLCBzY3JhdGNoR1BS
Miwgc2xvd1BhdGgpOwogICAgIH0KIAotICAgIHZvaWQgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KEdQ
UlJlZyByZXN1bHRHUFIsIFN0cnVjdHVyZSosIEdQUlJlZyBzdG9yYWdlR1BSLCB1bnNpZ25lZCBu
dW1FbGVtZW50cywgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKTsKKyAgICB2b2lkIGVtaXRBbGxvY2F0
ZVJhd09iamVjdChHUFJSZWcgcmVzdWx0R1BSLCBSZWdpc3RlcmVkU3RydWN0dXJlLCBHUFJSZWcg
c3RvcmFnZUdQUiwgdW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCk7
CiAgICAgCiAgICAgdm9pZCBlbWl0R2V0TGVuZ3RoKElubGluZUNhbGxGcmFtZSosIEdQUlJlZyBs
ZW5ndGhHUFIsIGJvb2wgaW5jbHVkZVRoaXMgPSBmYWxzZSk7CiAgICAgdm9pZCBlbWl0R2V0TGVu
Z3RoKENvZGVPcmlnaW4sIEdQUlJlZyBsZW5ndGhHUFIsIGJvb2wgaW5jbHVkZVRoaXMgPSBmYWxz
ZSk7CkBAIC0zNzc0LDEzICszODI1LDEzIEBAIHByaXZhdGU6CiB0ZW1wbGF0ZTx0eXBlbmFtZSBT
dHJ1Y3R1cmVMb2NhdGlvblR5cGU+CiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJp
bmdPYmplY3RGb3JTdHJ1Y3R1cmUoRWRnZSBlZGdlLCBTdHJ1Y3R1cmVMb2NhdGlvblR5cGUgc3Ry
dWN0dXJlTG9jYXRpb24pCiB7Ci0gICAgU3RydWN0dXJlKiBzdHJpbmdPYmplY3RTdHJ1Y3R1cmUg
PQotICAgICAgICBtX2ppdC5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNl
bWFudGljKS0+c3RyaW5nT2JqZWN0U3RydWN0dXJlKCk7CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBzdHJpbmdPYmplY3RTdHJ1Y3R1cmUgPQorICAgICAgICBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVy
U3RydWN0dXJlKG1faml0Lmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2Vt
YW50aWMpLT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSk7CiAgICAgCi0gICAgaWYgKCFtX3N0YXRl
LmZvck5vZGUoZWRnZSkubV9zdHJ1Y3R1cmUuaXNTdWJzZXRPZihTdHJ1Y3R1cmVTZXQoc3RyaW5n
T2JqZWN0U3RydWN0dXJlKSkpIHsKKyAgICBpZiAoIW1fc3RhdGUuZm9yTm9kZShlZGdlKS5tX3N0
cnVjdHVyZS5pc1N1YnNldE9mKFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQoc3RyaW5nT2JqZWN0U3Ry
dWN0dXJlKSkpIHsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgIE5vdFN0
cmluZ09iamVjdCwgSlNWYWx1ZVJlZ3MoKSwgMCwKLSAgICAgICAgICAgIG1faml0LmJyYW5jaFN0
cnVjdHVyZSgKKyAgICAgICAgICAgIG1faml0LmJyYW5jaFdlYWtTdHJ1Y3R1cmUoCiAgICAgICAg
ICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBzdHJ1Y3R1cmVMb2NhdGlvbiwgc3RyaW5n
T2JqZWN0U3RydWN0dXJlKSk7CiAgICAgfQogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCShyZXZpc2lv
biAyMTEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0
aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDAsNyArNTQwLDcgQEAgcHJpdmF0ZToK
IAogICAgICAgICAgICAgaWYgKG1fbm9kZS0+b3AoKSA9PSBSZWdFeHBFeGVjKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVTZXQq
IHN0cnVjdHVyZVNldCA9IG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHN0cnVjdHVyZSk7CisgICAg
ICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQqIHN0cnVjdHVyZVNldCA9IG1f
Z3JhcGguYWRkU3RydWN0dXJlU2V0KHN0cnVjdHVyZSk7CiAKICAgICAgICAgICAgICAgICAgICAg
Ly8gQ3JlYXRlIGFuIGFycmF5IG1vZGVsaW5nIHRoZSBKUyBhcnJheSB0aGF0IHdlIHdpbGwgdHJ5
IHRvIGFsbG9jYXRlLiBUaGlzIGlzCiAgICAgICAgICAgICAgICAgICAgIC8vIGJhc2ljYWxseSBj
cmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkgYnV0IG92ZXIgQysrIHN0cmluZ3MgaW5zdGVhZCBvZiBK
U1N0cmluZ3MuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZUFi
c3RyYWN0VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5jcHAJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgdm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjph
c3NlcnRJc1JlZwogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
c2l6ZSgpOyBpLS07KQotICAgICAgICBncmFwaC5hc3NlcnRJc1JlZ2lzdGVyZWQoYXQoaSkpOwor
ICAgICAgICBncmFwaC5hc3NlcnRJc1JlZ2lzdGVyZWQoYXQoaSkuZ2V0KCkpOwogfQogI2VuZGlm
IC8vICFBU1NFUlRfRElTQUJMRUQKIApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIFN0cnVjdHVyZUFi
c3RyYWN0VmFsdWU6OmNsb2JiZXIoKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAg
IFN0cnVjdHVyZVNldDo6T3V0T2ZMaW5lTGlzdCogbGlzdCA9IG1fc2V0Lmxpc3QoKTsKKyAgICBS
ZWdpc3RlcmVkU3RydWN0dXJlU2V0OjpPdXRPZkxpbmVMaXN0KiBsaXN0ID0gbV9zZXQubGlzdCgp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IGxpc3QtPm1fbGVuZ3RoOyBpLS07KSB7CiAgICAgICAg
IGlmICghbGlzdC0+bGlzdCgpW2ldLT5kZmdTaG91bGRXYXRjaCgpKSB7CiAgICAgICAgICAgICBt
YWtlVG9wKCk7CkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6
Y2xvYmJlcigpCiAgICAgfQogfQogCi12b2lkIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om9ic2Vy
dmVUcmFuc2l0aW9uKFN0cnVjdHVyZSogZnJvbSwgU3RydWN0dXJlKiB0bykKK3ZvaWQgU3RydWN0
dXJlQWJzdHJhY3RWYWx1ZTo6b2JzZXJ2ZVRyYW5zaXRpb24oUmVnaXN0ZXJlZFN0cnVjdHVyZSBm
cm9tLCBSZWdpc3RlcmVkU3RydWN0dXJlIHRvKQogewogICAgIEFTU0VSVCghZnJvbS0+ZGZnU2hv
dWxkV2F0Y2goKSk7CiAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZh
bHVlOjpvYnNlcnZlVHJhbgogICAgIGlmIChpc1RvcCgpKQogICAgICAgICByZXR1cm47CiAgICAg
Ci0gICAgU3RydWN0dXJlU2V0IG5ld1N0cnVjdHVyZXM7CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVy
ZVNldCBuZXdTdHJ1Y3R1cmVzOwogICAgIGZvciAodW5zaWduZWQgaSA9IHZlY3Rvci5zaXplKCk7
IGktLTspIHsKICAgICAgICAgQVNTRVJUKCF2ZWN0b3JbaV0ucHJldmlvdXMtPmRmZ1Nob3VsZFdh
dGNoKCkpOwogCkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVl
OjpvYnNlcnZlVHJhbgogICAgICAgICBtYWtlVG9wKCk7CiB9CiAKLWJvb2wgU3RydWN0dXJlQWJz
dHJhY3RWYWx1ZTo6YWRkKFN0cnVjdHVyZSogc3RydWN0dXJlKQorYm9vbCBTdHJ1Y3R1cmVBYnN0
cmFjdFZhbHVlOjphZGQoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpCiB7CiAgICAgaWYg
KGlzVG9wKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEyNCw3ICsxMjQsNyBAQCBib29s
IFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmFkZChTdHJ1Y3R1CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6bWVyZ2UoY29uc3QgU3RydWN0dXJlU2V0
JiBvdGhlcikKK2Jvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6bWVyZ2UoY29uc3QgUmVnaXN0
ZXJlZFN0cnVjdHVyZVNldCYgb3RoZXIpCiB7CiAgICAgaWYgKGlzVG9wKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTE3NSw3ICsxNzUsNyBAQCBib29sIFN0cnVjdHVyZUFic3RyYWN0VmFs
dWU6Om1lcmdlU2xvdyhjCiAgICAgcmV0dXJuIGNoYW5nZWQ7CiB9CiAKLWJvb2wgU3RydWN0dXJl
QWJzdHJhY3RWYWx1ZTo6bWVyZ2VOb3RUb3AoY29uc3QgU3RydWN0dXJlU2V0JiBvdGhlcikKK2Jv
b2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6bWVyZ2VOb3RUb3AoY29uc3QgUmVnaXN0ZXJlZFN0
cnVjdHVyZVNldCYgb3RoZXIpCiB7CiAgICAgaWYgKCFtX3NldC5tZXJnZShvdGhlcikpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTE4Niw3ICsxODYsNyBAQCBib29sIFN0cnVjdHVyZUFic3Ry
YWN0VmFsdWU6Om1lcmdlTm90VG9wCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgU3RydWN0
dXJlQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpCit2b2lk
IFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmZpbHRlcihjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJl
U2V0JiBvdGhlcikKIHsKICAgICBpZiAoaXNUb3AoKSkgewogICAgICAgICBtX3NldCA9IG90aGVy
OwpAQCAtMjI5LDcgKzIyOSw3IEBAIHZvaWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZmlsdGVy
KGNvbnMKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgICAgIGlmICghaXNDbG9i
YmVyZWQoKSkgewotICAgICAgICAgICAgLy8gU2VlIGp1c3RpZmljYXRpb24gaW4gZmlsdGVyKGNv
bnN0IFN0cnVjdHVyZVNldCYpLCBhYm92ZS4gQW4gdW5jbG9iYmVyZWQgc2V0IGlzCisgICAgICAg
ICAgICAvLyBTZWUganVzdGlmaWNhdGlvbiBpbiBmaWx0ZXIoY29uc3QgUmVnaXN0ZXJlZFN0cnVj
dHVyZVNldCYpLCBhYm92ZS4gQW4gdW5jbG9iYmVyZWQgc2V0IGlzCiAgICAgICAgICAgICAvLyBh
bG1vc3QgYWx3YXlzIGJldHRlci4KICAgICAgICAgICAgIGlmIChtX3NldC5zaXplKCkgPiBvdGhl
ci5tX3NldC5zaXplKCkgKyBjbG9iYmVyZWRTdXByZW1hY3lUaHJlc2hvbGQpCiAgICAgICAgICAg
ICAgICAgKnRoaXMgPSBvdGhlcjsgLy8gS2VlcCB0aGUgY2xvYmJlcmVkIHNldC4KQEAgLTI1Myw4
ICsyNTMsOCBAQCB2b2lkIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmZpbHRlclNsb3coCiAgICAg
QVNTRVJUKCFpc1RvcCgpKTsKICAgICAKICAgICBtX3NldC5nZW5lcmljRmlsdGVyKAotICAgICAg
ICBbJl0gKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7Ci0gICAgICAgICAgICByZXR1cm4gISEoc3Bl
Y3VsYXRpb25Gcm9tU3RydWN0dXJlKHN0cnVjdHVyZSkgJiB0eXBlKTsKKyAgICAgICAgWyZdIChS
ZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgeworICAgICAgICAgICAgcmV0dXJuICEhKHNw
ZWN1bGF0aW9uRnJvbVN0cnVjdHVyZShzdHJ1Y3R1cmUuZ2V0KCkpICYgdHlwZSk7CiAgICAgICAg
IH0pOwogfQogCkBAIC0yNjIsMTIgKzI2MiwxMiBAQCB2b2lkIFN0cnVjdHVyZUFic3RyYWN0VmFs
dWU6OmZpbHRlckNsYXNzCiB7CiAgICAgQVNTRVJUKCFpc1RvcCgpKTsKICAgICBtX3NldC5nZW5l
cmljRmlsdGVyKAotICAgICAgICBbJl0gKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7CisgICAgICAg
IFsmXSAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIHsKICAgICAgICAgICAgIHJldHVy
biBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5pc1N1YkNsYXNzT2YoY2xhc3NJbmZvKTsKICAgICAg
ICAgfSk7CiB9CiAKLWJvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6Y29udGFpbnMoU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpIGNvbnN0Citib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmNvbnRh
aW5zKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSBjb25zdAogewogICAgIGlmIChpc0lu
ZmluaXRlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjc1LDcgKzI3NSwxNSBAQCBib29s
IFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmNvbnRhaW5zKFN0CiAgICAgcmV0dXJuIG1fc2V0LmNv
bnRhaW5zKHN0cnVjdHVyZSk7CiB9CiAKLWJvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6aXNT
dWJzZXRPZihjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKSBjb25zdAorYm9vbCBTdHJ1Y3R1cmVB
YnN0cmFjdFZhbHVlOjpjb250YWlucyhTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgY29uc3QKK3sKKyAg
ICBpZiAoaXNJbmZpbml0ZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICByZXR1
cm4gbV9zZXQudG9TdHJ1Y3R1cmVTZXQoKS5jb250YWlucyhzdHJ1Y3R1cmUpOworfQorCitib29s
IFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3Vic2V0T2YoY29uc3QgUmVnaXN0ZXJlZFN0cnVj
dHVyZVNldCYgb3RoZXIpIGNvbnN0CiB7CiAgICAgaWYgKGlzSW5maW5pdGUoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMzA0LDcgKzMxMiw3IEBAIGJvb2wgU3RydWN0dXJlQWJzdHJhY3RW
YWx1ZTo6aXNTdWJzZXRPZigKICAgICByZXR1cm4gbV9zZXQuaXNTdWJzZXRPZihvdGhlci5tX3Nl
dCk7CiB9CiAKLWJvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6aXNTdXBlcnNldE9mKGNvbnN0
IFN0cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0Citib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6
OmlzU3VwZXJzZXRPZihjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0JiBvdGhlcikgY29uc3QK
IHsKICAgICBpZiAoaXNJbmZpbml0ZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTMxMiw3
ICszMjAsNyBAQCBib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3VwZXJzZXRPCiAgICAg
cmV0dXJuIG1fc2V0LmlzU3VwZXJzZXRPZihvdGhlcik7CiB9CiAKLWJvb2wgU3RydWN0dXJlQWJz
dHJhY3RWYWx1ZTo6b3ZlcmxhcHMoY29uc3QgU3RydWN0dXJlU2V0JiBvdGhlcikgY29uc3QKK2Jv
b2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6b3ZlcmxhcHMoY29uc3QgUmVnaXN0ZXJlZFN0cnVj
dHVyZVNldCYgb3RoZXIpIGNvbnN0CiB7CiAgICAgaWYgKGlzSW5maW5pdGUoKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CkBAIC0zMzQsNyArMzQyLDcgQEAgYm9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZh
bHVlOjppc1N1YkNsYXNzTwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBOb3RlIHRh
aHQgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUgaWYgdGhlIHN0cnVjdHVyZSBzZXQgaXMgZW1w
dHkuCi0gICAgZm9yIChjb25zdCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6IG1fc2V0KSB7CisgICAg
Zm9yIChjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA6IG1fc2V0KSB7CiAgICAg
ICAgIGlmICghc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+aXNTdWJDbGFzc09mKGNsYXNzSW5mbykp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMzU5LDcgKzM2Nyw3IEBAIHZv
aWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZHVtcEluQ29udGUKICAgICBpZiAoaXNUb3AoKSkK
ICAgICAgICAgb3V0LnByaW50KCJUT1AiKTsKICAgICBlbHNlCi0gICAgICAgIG91dC5wcmludChp
bkNvbnRleHQobV9zZXQsIGNvbnRleHQpKTsKKyAgICAgICAgb3V0LnByaW50KGluQ29udGV4dCht
X3NldC50b1N0cnVjdHVyZVNldCgpLCBjb250ZXh0KSk7CiB9CiAKIHZvaWQgU3RydWN0dXJlQWJz
dHJhY3RWYWx1ZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmgJ
KHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0
dXJlQWJzdHJhY3RWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMCArMjcsMTEgQEAKIAog
I2lmIEVOQUJMRShERkdfSklUKQogCisjaW5jbHVkZSAiREZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNl
dC5oIgogI2luY2x1ZGUgIkRGR1RyYW5zaXRpb24uaCIKKyNpbmNsdWRlICJEdW1wQ29udGV4dC5o
IgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIlNwZWN1bGF0ZWRUeXBlLmgiCi0jaW5j
bHVkZSAiRHVtcENvbnRleHQuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVTZXQuaCIKIAogbmFtZXNw
YWNlIEpTQyB7CkBAIC00MiwxMiArNDMsMTIgQEAgbmFtZXNwYWNlIERGRyB7CiBjbGFzcyBTdHJ1
Y3R1cmVBYnN0cmFjdFZhbHVlIHsKIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVl
KCkgeyB9Ci0gICAgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
LSAgICAgICAgOiBtX3NldChTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSkKKyAgICBTdHJ1Y3R1cmVB
YnN0cmFjdFZhbHVlKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKQorICAgICAgICA6IG1f
c2V0KHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAgIHNldENsb2JiZXJlZChmYWxzZSk7CiAgICAg
fQotICAgIFN0cnVjdHVyZUFic3RyYWN0VmFsdWUoY29uc3QgU3RydWN0dXJlU2V0JiBvdGhlcikK
KyAgICBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlKGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQm
IG90aGVyKQogICAgICAgICA6IG1fc2V0KG90aGVyKQogICAgIHsKICAgICAgICAgc2V0Q2xvYmJl
cmVkKGZhbHNlKTsKQEAgLTU4LDEzICs1OSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHNldENsb2Ji
ZXJlZChvdGhlci5pc0Nsb2JiZXJlZCgpKTsKICAgICB9CiAgICAgCi0gICAgQUxXQVlTX0lOTElO
RSBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvcGVyYXRvcj0oU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CisgICAgQUxXQVlTX0lOTElORSBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvcGVyYXRvcj0oUmVn
aXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBtX3NldCA9IFN0cnVj
dHVyZVNldChzdHJ1Y3R1cmUpOworICAgICAgICBtX3NldCA9IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVT
ZXQoc3RydWN0dXJlKTsKICAgICAgICAgc2V0Q2xvYmJlcmVkKGZhbHNlKTsKICAgICAgICAgcmV0
dXJuICp0aGlzOwogICAgIH0KLSAgICBBTFdBWVNfSU5MSU5FIFN0cnVjdHVyZUFic3RyYWN0VmFs
dWUmIG9wZXJhdG9yPShjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKQorICAgIEFMV0FZU19JTkxJ
TkUgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSYgb3BlcmF0b3I9KGNvbnN0IFJlZ2lzdGVyZWRTdHJ1
Y3R1cmVTZXQmIG90aGVyKQogICAgIHsKICAgICAgICAgbV9zZXQgPSBvdGhlcjsKICAgICAgICAg
c2V0Q2xvYmJlcmVkKGZhbHNlKTsKQEAgLTk4LDcgKzk5LDcgQEAgcHVibGljOgogICAgIHZvaWQg
Y2xvYmJlcigpOwogICAgIHZvaWQgb2JzZXJ2ZUludmFsaWRhdGlvblBvaW50KCkgeyBzZXRDbG9i
YmVyZWQoZmFsc2UpOyB9CiAgICAgCi0gICAgdm9pZCBvYnNlcnZlVHJhbnNpdGlvbihTdHJ1Y3R1
cmUqIGZyb20sIFN0cnVjdHVyZSogdG8pOworICAgIHZvaWQgb2JzZXJ2ZVRyYW5zaXRpb24oUmVn
aXN0ZXJlZFN0cnVjdHVyZSBmcm9tLCBSZWdpc3RlcmVkU3RydWN0dXJlIHRvKTsKICAgICB2b2lk
IG9ic2VydmVUcmFuc2l0aW9ucyhjb25zdCBUcmFuc2l0aW9uVmVjdG9yJik7CiAgICAgCiAgICAg
c3RhdGljIFN0cnVjdHVyZUFic3RyYWN0VmFsdWUgdG9wKCkKQEAgLTEzMSw5ICsxMzIsOSBAQCBw
dWJsaWM6CiAgICAgLy8gQW4gaW5maW5pdGUgc3RydWN0dXJlIGFic3RyYWN0IHZhbHVlIG1heSBj
dXJyZW50bHkgaGF2ZSBhbnkgc3RydWN0dXJlLgogICAgIGJvb2wgaXNJbmZpbml0ZSgpIGNvbnN0
IHsgcmV0dXJuICFpc0Zpbml0ZSgpOyB9CiAgICAgCi0gICAgYm9vbCBhZGQoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpOworICAgIGJvb2wgYWRkKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUpOwogICAgIAotICAg
IGJvb2wgbWVyZ2UoY29uc3QgU3RydWN0dXJlU2V0JiBvdGhlcik7CisgICAgYm9vbCBtZXJnZShj
b25zdCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0JiBvdGhlcik7CiAgICAgCiAgICAgQUxXQVlTX0lO
TElORSBib29sIG1lcmdlKGNvbnN0IFN0cnVjdHVyZUFic3RyYWN0VmFsdWUmIG90aGVyKQogICAg
IHsKQEAgLTE1MSw3ICsxNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtZXJnZVNsb3co
b3RoZXIpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQm
IG90aGVyKTsKKyAgICB2b2lkIGZpbHRlcihjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0JiBv
dGhlcik7CiAgICAgdm9pZCBmaWx0ZXIoY29uc3QgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSYgb3Ro
ZXIpOwogICAgIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmaWx0ZXIoU3BlY3VsYXRlZFR5cGUg
dHlwZSkKQEAgLTE3OCwxMSArMTc5LDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGVxdWFs
c1Nsb3cob3RoZXIpOwogICAgIH0KICAgICAKLSAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCgp
IGNvbnN0CisgICAgY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgc2V0KCkgY29uc3QKICAg
ICB7CiAgICAgICAgIEFTU0VSVCghaXNUb3AoKSk7CiAgICAgICAgIHJldHVybiBtX3NldDsKICAg
ICB9CisKKyAgICBTdHJ1Y3R1cmVTZXQgdG9TdHJ1Y3R1cmVTZXQoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoaXNGaW5pdGUoKSk7CisgICAgICAgIHJldHVybiBtX3NldC50
b1N0cnVjdHVyZVNldCgpOworICAgIH0KICAgICAKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0CiAg
ICAgewpAQCAtMTkwLDIxICsxOTcsMjEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9zZXQu
c2l6ZSgpOwogICAgIH0KICAgICAKLSAgICBTdHJ1Y3R1cmUqIGF0KHNpemVfdCBpKSBjb25zdAor
ICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgYXQoc2l6ZV90IGkpIGNvbnN0CiAgICAgewogICAgICAg
ICBBU1NFUlQoIWlzVG9wKCkpOwogICAgICAgICByZXR1cm4gbV9zZXQuYXQoaSk7CiAgICAgfQog
ICAgIAotICAgIFN0cnVjdHVyZSogb3BlcmF0b3JbXShzaXplX3QgaSkgY29uc3QgeyByZXR1cm4g
YXQoaSk7IH0KKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG9wZXJhdG9yW10oc2l6ZV90IGkpIGNv
bnN0IHsgcmV0dXJuIGF0KGkpOyB9CiAKICAgICAvLyBJbiBtb3N0IGNhc2VzLCB3aGF0IHlvdSBy
ZWFsbHkgd2FudCB0byBkbyBpcyB2ZXJpZnkgd2hldGhlciB0aGUgc2V0IGlzIHRvcCBvciBjbG9i
YmVyZWQsIGFuZAogICAgIC8vIGlmIG5vdCwgZW51bWVyYXRlIHRoZSBzZXQgb2Ygc3RydWN0dXJl
cy4gVXNlIHRoaXMgb25seSBpbiBjYXNlcyB3aGVyZSB0aGUgc2luZ2xldG9uIGNhc2UgaXMKICAg
ICAvLyBtZWFuaW5nZnVsbHkgc3BlY2lhbCwgbGlrZSBmb3IgdHJhbnNpdGlvbnMuCi0gICAgU3Ry
dWN0dXJlKiBvbmx5U3RydWN0dXJlKCkgY29uc3QKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG9u
bHlTdHJ1Y3R1cmUoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKGlzSW5maW5pdGUoKSkKLSAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgcmV0dXJuIFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUoKTsKICAgICAgICAgcmV0dXJuIG1fc2V0Lm9ubHlTdHJ1Y3R1cmUoKTsKICAgICB9
CiAKQEAgLTIyNCwxOCArMjMxLDE5IEBAIHB1YmxpYzoKICAgICAvLyBvcHRpbWl6YXRpb25zIGFz
IGEgY29uc2VxdWVuY2Ugb2YgdGhlICJ0aGlzIGlzIHNtYWxsZXIiIHJldHVybiB2YWx1ZSAtIHNv
IGZhbHNlIGZvcgogICAgIC8vIGNvbnRhaW5zKCksIHRydWUgZm9yIGlzU3Vic2V0T2YoKSwgZmFs
c2UgZm9yIGlzU3VwZXJzZXRPZigpLCBhbmQgZmFsc2UgZm9yIG92ZXJsYXBzKCkuCiAKKyAgICBi
b29sIGNvbnRhaW5zKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUpIGNvbnN0OwogICAgIGJvb2wgY29udGFp
bnMoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIGNvbnN0OwogICAgIAotICAgIGJvb2wgaXNTdWJzZXRP
Zihjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKSBjb25zdDsKKyAgICBib29sIGlzU3Vic2V0T2Yo
Y29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0OwogICAgIGJvb2wgaXNT
dWJzZXRPZihjb25zdCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcikgY29uc3Q7CiAgICAg
Ci0gICAgYm9vbCBpc1N1cGVyc2V0T2YoY29uc3QgU3RydWN0dXJlU2V0JiBvdGhlcikgY29uc3Q7
CisgICAgYm9vbCBpc1N1cGVyc2V0T2YoY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgb3Ro
ZXIpIGNvbnN0OwogICAgIGJvb2wgaXNTdXBlcnNldE9mKGNvbnN0IFN0cnVjdHVyZUFic3RyYWN0
VmFsdWUmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG90aGVyLmlzU3Vic2V0
T2YoKnRoaXMpOwogICAgIH0KICAgICAKLSAgICBib29sIG92ZXJsYXBzKGNvbnN0IFN0cnVjdHVy
ZVNldCYgb3RoZXIpIGNvbnN0OworICAgIGJvb2wgb3ZlcmxhcHMoY29uc3QgUmVnaXN0ZXJlZFN0
cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0OwogICAgIGJvb2wgb3ZlcmxhcHMoY29uc3QgU3RydWN0
dXJlQWJzdHJhY3RWYWx1ZSYgb3RoZXIpIGNvbnN0OwogCiAgICAgYm9vbCBpc1N1YkNsYXNzT2Yo
Y29uc3QgQ2xhc3NJbmZvKikgY29uc3Q7CkBAIC0yNDMsOCArMjUxLDggQEAgcHVibGljOgogICAg
IHZvaWQgdmFsaWRhdGVSZWZlcmVuY2VzKGNvbnN0IFRyYWNrZWRSZWZlcmVuY2VzJikgY29uc3Q7
CiAgICAgCiBwcml2YXRlOgotICAgIHN0YXRpYyBjb25zdCB1aW50cHRyX3QgY2xvYmJlcmVkRmxh
ZyA9IFN0cnVjdHVyZVNldDo6cmVzZXJ2ZWRGbGFnOwotICAgIHN0YXRpYyBjb25zdCB1aW50cHRy
X3QgdG9wVmFsdWUgPSBTdHJ1Y3R1cmVTZXQ6OnJlc2VydmVkVmFsdWU7CisgICAgc3RhdGljIGNv
bnN0IHVpbnRwdHJfdCBjbG9iYmVyZWRGbGFnID0gUmVnaXN0ZXJlZFN0cnVjdHVyZVNldDo6cmVz
ZXJ2ZWRGbGFnOworICAgIHN0YXRpYyBjb25zdCB1aW50cHRyX3QgdG9wVmFsdWUgPSBSZWdpc3Rl
cmVkU3RydWN0dXJlU2V0OjpyZXNlcnZlZFZhbHVlOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBwb2x5bW9ycGhpc21MaW1pdCA9IDEwOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjbG9i
YmVyZWRTdXByZW1hY3lUaHJlc2hvbGQgPSAyOwogICAgIApAQCAtMjYwLDcgKzI2OCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIG1fc2V0Lm1fcG9pbnRlciA9IHRvcFZhbHVlOwogICAgIH0KICAgICAK
LSAgICBib29sIG1lcmdlTm90VG9wKGNvbnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpOworICAgIGJv
b2wgbWVyZ2VOb3RUb3AoY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgb3RoZXIpOwogICAg
IAogICAgIHZvaWQgc2V0Q2xvYmJlcmVkKGJvb2wgY2xvYmJlcmVkKQogICAgIHsKQEAgLTI2OCw3
ICsyNzYsNyBAQCBwcml2YXRlOgogICAgICAgICBtX3NldC5zZXRSZXNlcnZlZEZsYWcoY2xvYmJl
cmVkKTsKICAgICB9CiAgICAgCi0gICAgU3RydWN0dXJlU2V0IG1fc2V0OworICAgIFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmVTZXQgbV9zZXQ7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVj
dHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjExMjI5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsMjI1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiREZH
U3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuaCIKLQotI2lmIEVOQUJMRShERkdfSklUKQotCi0j
aW5jbHVkZSAiREZHQmFzaWNCbG9ja0lubGluZXMuaCIKLSNpbmNsdWRlICJERkdHcmFwaC5oIgot
I2luY2x1ZGUgIkRGR1BoYXNlLmgiCi0jaW5jbHVkZSAiSlNDSW5saW5lcy5oIgotCi1uYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0KLWNsYXNzIFN0cnVjdHVyZVJlZ2lzdHJhdGlvblBo
YXNlIDogcHVibGljIFBoYXNlIHsKLXB1YmxpYzoKLSAgICBTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZShHcmFwaCYgZ3JhcGgpCi0gICAgICAgIDogUGhhc2UoZ3JhcGgsICJzdHJ1Y3R1cmUgcmVn
aXN0cmF0aW9uIikKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGJvb2wgcnVuKCkKLSAgICB7Ci0g
ICAgICAgIC8vIEZJWE1FOiBUaGlzIHBoYXNlIHNob3VsZG4ndCBleGlzdC4gV2Ugc2hvdWxkIGhh
dmUgcmVnaXN0ZXJlZCBhbGwgc3RydWN0dXJlcyBieSBub3csIHNpbmNlCi0gICAgICAgIC8vIHdl
IG1heSBhbHJlYWR5IGhhdmUgZG9uZSBvcHRpbWl6YXRpb25zIHRoYXQgcmVseSBvbiBzdHJ1Y3R1
cmVzIGhhdmluZyBiZWVuIHJlZ2lzdGVyZWQuCi0gICAgICAgIC8vIEN1cnJlbnRseSwgd2Ugc3Rp
bGwgaGF2ZSBwbGFjZXMgd2hlcmUgd2UgZG9uJ3QgcmVnaXN0ZXIgc3RydWN0dXJlcyBwcmlvciB0
byB0aGlzIHBoYXNlLAotICAgICAgICAvLyBidXQgc3RydWN0dXJlcyBkb24ndCBlbmQgdXAgYmVp
bmcgdXNlZCBmb3Igb3B0aW1pemF0aW9uIHByaW9yIHRvIHRoaXMgcGhhc2UuIFRoYXQncyBhCi0g
ICAgICAgIC8vIHByZXR0eSBmcmFnaWxlIHNpdHVhdGlvbiBhbmQgd2Ugc2hvdWxkIGZpeCBpdCBl
dmVudHVhbGx5LgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQ3ODg5Ci0gICAgICAgIAotICAgICAgICAvLyBXZSBuZWVkIHRvIHNldCB0aGlzIGJl
Zm9yZSB0aGlzIHBoYXNlIGZpbmlzaGVzLiBUaGlzIHBoYXNlIGRvZXNuJ3QgZG8gYW55dGhpbmcK
LSAgICAgICAgLy8gY29uZGl0aW9uZWQgb24gdGhpcyBmaWVsZCwgZXhjZXB0IGZvciBhc3NlcnRJ
c1JlZ2lzdGVyZWQoKSBiZWxvdy4gV2UgaW50ZW5kIGZvciB0aGF0Ci0gICAgICAgIC8vIG1ldGhv
ZCB0byBiZWhhdmUgYXMgaWYgdGhlIHBoYXNlIHdhcyBhbHJlYWR5IGZpbmlzaGVkLiBTbywgd2Ug
c2V0IHRoaXMgdXAgaGVyZS4KLSAgICAgICAgbV9ncmFwaC5tX3N0cnVjdHVyZVJlZ2lzdHJhdGlv
blN0YXRlID0gQWxsU3RydWN0dXJlc0FyZVJlZ2lzdGVyZWQ7Ci0gICAgICAgIAotICAgICAgICAv
LyBUaGVzZSBhcmUgcHJldHR5IGR1bWIsIGJ1dCBuZWVkZWQgdG8gcGxhY2F0ZSBzdWJzZXF1ZW50
IGFzc2VydGlvbnMuIFdlIGRvbid0IGFjdHVhbGx5Ci0gICAgICAgIC8vIGhhdmUgdG8gd2F0Y2gg
dGhlc2UgYmVjYXVzZSB0aGVyZSBpcyBubyB3YXkgdG8gdHJhbnNpdGlvbiBhd2F5IGZyb20gaXQs
IGJ1dCB0aGV5IGFyZQotICAgICAgICAvLyB3YXRjaGFibGUgYW5kIHNvIHdlIHdpbGwgYXNzZXJ0
IGlmIHRoZXkgYXJlbid0IHdhdGNoZWQuCi0gICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3Jh
cGgubV92bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUuZ2V0KCkpOwotICAgICAgICByZWdpc3RlclN0cnVj
dHVyZShtX2dyYXBoLm1fdm0uc3RyaW5nU3RydWN0dXJlLmdldCgpKTsKLSAgICAgICAgcmVnaXN0
ZXJTdHJ1Y3R1cmUobV9ncmFwaC5tX3ZtLnN5bWJvbFN0cnVjdHVyZS5nZXQoKSk7Ci0gICAgICAg
IAotICAgICAgICBmb3IgKEZyb3plblZhbHVlKiB2YWx1ZSA6IG1fZ3JhcGgubV9mcm96ZW5WYWx1
ZXMpCi0gICAgICAgICAgICBhc3NlcnRJc1JlZ2lzdGVyZWQodmFsdWUtPnN0cnVjdHVyZSgpKTsK
LSAgICAgICAgCi0gICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5u
dW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewotICAgICAgICAgICAgQmFzaWNCbG9jayogYmxv
Y2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwotICAgICAgICAgICAgaWYgKCFibG9jaykK
LSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAgICAgICAgICBmb3IgKGF1
dG8qIG5vZGUgOiAqYmxvY2spIHsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkp
IHsKLSAgICAgICAgICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgotICAgICAgICAgICAgICAg
ICAgICBhc3NlcnRBcmVSZWdpc3RlcmVkKG5vZGUtPnN0cnVjdHVyZVNldCgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgY2Fz
ZSBOZXdPYmplY3Q6Ci0gICAgICAgICAgICAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgot
ICAgICAgICAgICAgICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgotICAgICAgICAgICAgICAgICAg
ICByZWdpc3RlclN0cnVjdHVyZShub2RlLT5zdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNhc2UgUHV0U3Ry
dWN0dXJlOgotICAgICAgICAgICAgICAgIGNhc2UgQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6Ci0g
ICAgICAgICAgICAgICAgY2FzZSBSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgotICAgICAgICAg
ICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShub2RlLT50cmFuc2l0aW9uKCktPnByZXZpb3Vz
KTsKLSAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobm9kZS0+dHJhbnNpdGlv
bigpLT5uZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAg
ICBjYXNlIEdldEdldHRlclNldHRlckJ5T2Zmc2V0OgotICAgICAgICAgICAgICAgICAgICByZWdp
c3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpLT5nZXR0ZXJTZXR0ZXJTdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgICAgICAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0OgotICAgICAgICAgICAg
ICAgICAgICBmb3IgKGNvbnN0IE11bHRpR2V0QnlPZmZzZXRDYXNlJiBnZXRDYXNlIDogbm9kZS0+
bXVsdGlHZXRCeU9mZnNldERhdGEoKS5jYXNlcykKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
Z2lzdGVyU3RydWN0dXJlcyhnZXRDYXNlLnNldCgpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNhc2UgTXVsdGlQdXRC
eU9mZnNldDoKLSAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbm9kZS0+bXVs
dGlQdXRCeU9mZnNldERhdGEoKS52YXJpYW50cy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50ID0gbm9kZS0+bXVsdGlQdXRCeU9m
ZnNldERhdGEoKS52YXJpYW50c1tpXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVy
U3RydWN0dXJlcyh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICh2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6VHJhbnNpdGlvbikKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm5ld1N0
cnVjdHVyZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgY2FzZSBOZXdBcnJh
eToKLSAgICAgICAgICAgICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgotICAgICAgICAgICAgICAg
IGNhc2UgTmV3QXJyYXlXaXRoU2l6ZTogewotICAgICAgICAgICAgICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKLSAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFs
T2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9k
ZS0+aW5kZXhpbmdUeXBlKCkpKTsKLSAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1
cmUoZ2xvYmFsT2JqZWN0LT5vcmlnaW5hbEFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlKEFy
cmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgY2FzZSBOZXdBcnJheVdpdGhT
cHJlYWQ6IHsKLSAgICAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNo
cG9pbnQobm9kZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlJ3ZlIGNvbXBpbGVk
IGFzc3VtaW5nIHdlJ3JlIG5vdCBoYXZpbmcgYSBiYWQgdGltZSwgc28gdG8gYmUgY29uc2lzdGVu
dAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2l0aCBBSSB3ZSBtdXN0IHNheSB3ZSBwcm9k
dWNlIGFuIG9yaWdpbmFsIGFycmF5IGFsbG9jYXRpb24gc3RydWN0dXJlLgotICAgICAgICAgICAg
ICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5vcmlnaW5hbEFycmF5
U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlKEFycmF5V2l0aENvbnRpZ3VvdXMpKTsKLSAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVj
dHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxs
b2NhdGlvbihBcnJheVdpdGhDb250aWd1b3VzKSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGNhc2UgU3ByZWFkOiB7Ci0g
ICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGgubV92bS5maXhlZEFy
cmF5U3RydWN0dXJlLmdldCgpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgY2FzZSBDcmVhdGVSZXN0OiB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9p
bnQobm9kZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
OwotICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0
LT5yZXN0UGFyYW1ldGVyU3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgY2FzZSBOZXdUeXBlZEFycmF5OgotICAgICAgICAgICAg
ICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpLT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KG5vZGUtPnR5
cGVkQXJyYXlUeXBlKCkpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNhc2UgVG9TdHJpbmc6Ci0gICAgICAgICAgICAg
ICAgY2FzZSBDYWxsU3RyaW5nQ29uc3RydWN0b3I6Ci0gICAgICAgICAgICAgICAgICAgIHJlZ2lz
dGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YyktPnN0cmluZ09iamVjdFN0cnVjdHVyZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNhc2UgQ3JlYXRlQWN0aXZh
dGlvbjoKLSAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YWN0aXZhdGlvblN0cnVjdHVyZSgp
KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgotICAgICAgICAgICAgICAg
ICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpLT5kaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBjYXNl
IENyZWF0ZVNjb3BlZEFyZ3VtZW50czoKLSAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1
Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+c2Nv
cGVkQXJndW1lbnRzU3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLQot
ICAgICAgICAgICAgICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOgotICAgICAgICAgICAg
ICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpLT5jbG9uZWRBcmd1bWVudHNTdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgICAgY2FzZSBOZXdSZWdleHA6Ci0gICAg
ICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnJlZ0V4cFN0cnVjdHVyZSgpKTsKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKLSAgICAg
ICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rp
b246Ci0gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0
dXJlKCkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNl
IE5ld0FzeW5jRnVuY3Rpb246Ci0gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJl
KG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFzeW5jRnVu
Y3Rpb25TdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCByZWdpc3RlclN0cnVjdHVyZXMo
Y29uc3QgU3RydWN0dXJlU2V0JiBzZXQpCi0gICAgewotICAgICAgICBmb3IgKFN0cnVjdHVyZSog
c3RydWN0dXJlIDogc2V0KQotICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJl
KTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCByZWdpc3RlclN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKLSAgICB7Ci0gICAgICAgIGlmIChzdHJ1Y3R1cmUpCi0gICAgICAgICAgICBtX2dy
YXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSk7Ci0gICAgfQotCi0gICAgdm9pZCBhc3Nl
cnRBcmVSZWdpc3RlcmVkKGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0KQotICAgIHsKLSAgICAgICAg
Zm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6IHNldCkKLSAgICAgICAgICAgIGFzc2VydElzUmVn
aXN0ZXJlZChzdHJ1Y3R1cmUpOwotICAgIH0KLQotICAgIHZvaWQgYXNzZXJ0SXNSZWdpc3RlcmVk
KFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgIHsKLSAgICAgICAgaWYgKHN0cnVjdHVyZSkKLSAg
ICAgICAgICAgIG1fZ3JhcGguYXNzZXJ0SXNSZWdpc3RlcmVkKHN0cnVjdHVyZSk7Ci0gICAgfQot
fTsKLQotYm9vbCBwZXJmb3JtU3RydWN0dXJlUmVnaXN0cmF0aW9uKEdyYXBoJiBncmFwaCkKLXsK
LSAgICByZXR1cm4gcnVuUGhhc2U8U3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2U+KGdyYXBoKTsK
LX0KLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19K
SVQpCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0
cmF0aW9uUGhhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmgJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKERGR19KSVQpCi0K
LW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLQotY2xhc3MgR3JhcGg7Ci0KLS8vIFJl
Z2lzdGVycyBhbnkgc3RydWN0dXJlcyB3ZSBrbm93IGFib3V0IGFzIHdlYWsgcmVmZXJlbmNlcywg
YW5kIHNldHMgd2F0Y2hwb2ludHMgb24gYW55Ci0vLyBzdWNoIHN0cnVjdHVyZXMgdGhhdCB3ZSBr
bm93IG9mIHRoYXQgYXJlIGN1cnJlbnRseSB3YXRjaGFibGUuIEl0J3Mgc29tZXdoYXQKLS8vIGNv
dW50ZXJpbnR1aXRpdmUsIGJ1dCB0aGlzIGVuZHMgdXAgYmVpbmcgdGhlIGNsZWFuZXN0IGFuZCBt
b3N0IGVmZmVjdGl2ZSB3YXkgb2YgcmVkdWNpbmcKLS8vIHN0cnVjdHVyZSBjaGVja3Mgb24gdGVy
bWluYWwgc3RydWN0dXJlczoKLS8vCi0vLyAtIFdlIHVzZWQgdG8gb25seSBzZXQgd2F0Y2hwb2lu
dHMgb24gd2F0Y2hhYmxlIHN0cnVjdHVyZXMgaWYgd2Uga25ldyB0aGF0IHRoaXMgd291bGQKLS8v
ICAgcmVtb3ZlIGEgc3RydWN0dXJlIGNoZWNrLiBFeHBlcmltZW50cyBzaG93IHRoYXQgc3dpdGNo
aW5nIGZyb20gdGhhdCwgdG8gYmxpbmRseQotLy8gICBzZXR0aW5nIHdhdGNocG9pbnRzIG9uIGFs
bCB3YXRjaGFibGUgc3RydWN0dXJlcywgd2FzIG5vdCBhIHJlZ3Jlc3Npb24uCi0vLwotLy8gLSBJ
dCBtYWtlcyBhYnN0cmFjdCBpbnRlcnByZXRhdGlvbiBhIHdob2xlIGxvdCBlYXNpZXIuIFdlIGp1
c3QgYXNzdW1lIHRoYXQgd2F0Y2hhYmxlCi0vLyAgIHN0cnVjdHVyZXMgYXJlIHVuY2xvYmJlcmFi
bGUgd2l0aG91dCBoYXZpbmcgdG8gZG8gYW55IG90aGVyIGxvZ2ljLgotCi1ib29sIHBlcmZvcm1T
dHJ1Y3R1cmVSZWdpc3RyYXRpb24oR3JhcGgmKTsKLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRG
RwotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1RyYW5zaXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVHJhbnNpdGlvbi5jcHAJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVHJhbnNpdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDcgKzM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCiB2b2lkIFRyYW5z
aXRpb246OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRl
eHQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KHBvaW50ZXJEdW1wSW5Db250ZXh0KHByZXZpb3Vz
LCBjb250ZXh0KSwgIiAtPiAiLCBwb2ludGVyRHVtcEluQ29udGV4dChuZXh0LCBjb250ZXh0KSk7
CisgICAgb3V0LnByaW50KHBvaW50ZXJEdW1wSW5Db250ZXh0KHByZXZpb3VzLmdldCgpLCBjb250
ZXh0KSwgIiAtPiAiLCBwb2ludGVyRHVtcEluQ29udGV4dChuZXh0LmdldCgpLCBjb250ZXh0KSk7
CiB9CiAKIHZvaWQgVHJhbnNpdGlvbjo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUcmFuc2l0aW9uLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUcmFuc2l0aW9uLmgJKHJldmlzaW9uIDIx
MTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHJhbnNpdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAorI2lu
Y2x1ZGUgIkRGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJl
YW0uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTM4LDE2ICszOSwxMiBAQCBzdHJ1
Y3QgRHVtcENvbnRleHQ7CiBuYW1lc3BhY2UgREZHIHsKIAogc3RydWN0IFRyYW5zaXRpb24gewot
ICAgIFN0cnVjdHVyZSogcHJldmlvdXM7Ci0gICAgU3RydWN0dXJlKiBuZXh0OworICAgIFJlZ2lz
dGVyZWRTdHJ1Y3R1cmUgcHJldmlvdXM7CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBuZXh0Owog
ICAgIAotICAgIFRyYW5zaXRpb24oKQotICAgICAgICA6IHByZXZpb3VzKG51bGxwdHIpCi0gICAg
ICAgICwgbmV4dChudWxscHRyKQotICAgIHsKLSAgICB9CisgICAgVHJhbnNpdGlvbigpID0gZGVm
YXVsdDsKICAgICAKLSAgICBUcmFuc2l0aW9uKFN0cnVjdHVyZSogcHJldmlvdXMsIFN0cnVjdHVy
ZSogbmV4dCkKKyAgICBUcmFuc2l0aW9uKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgcHJldmlvdXMsIFJl
Z2lzdGVyZWRTdHJ1Y3R1cmUgbmV4dCkKICAgICAgICAgOiBwcmV2aW91cyhwcmV2aW91cykKICAg
ICAgICAgLCBuZXh0KG5leHQpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCShyZXZpc2lvbiAy
MTEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5n
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjUsMjMgKzQ2NSwyMyBAQCBwcml2YXRlOgog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBub3RpY2VTdHJ1Y3R1
cmVDaGVjayhWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKKyAgICB2b2lkIG5vdGljZVN0cnVjdHVyZUNoZWNrKFZhcmlhYmxlQWNjZXNzRGF0YSogdmFy
aWFibGUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgSGFz
aE1hcDxWYXJpYWJsZUFjY2Vzc0RhdGEqLCBDaGVja0RhdGE+OjpBZGRSZXN1bHQgcmVzdWx0ID0g
bV9tYXAuYWRkKHZhcmlhYmxlLCBDaGVja0RhdGEoc3RydWN0dXJlKSk7CisgICAgICAgIEhhc2hN
YXA8VmFyaWFibGVBY2Nlc3NEYXRhKiwgQ2hlY2tEYXRhPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1f
bWFwLmFkZCh2YXJpYWJsZSwgQ2hlY2tEYXRhKHN0cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICBp
ZiAocmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlLm1fc3RydWN0dXJlID09IHN0cnVjdHVyZSkKKyAgICAgICAg
aWYgKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUubV9zdHJ1Y3R1cmUgPT0gc3RydWN0dXJlLmdldCgp
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLm1f
c3RydWN0dXJlID0gMDsKICAgICB9CiAgICAgCi0gICAgdm9pZCBub3RpY2VTdHJ1Y3R1cmVDaGVj
ayhWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCkK
KyAgICB2b2lkIG5vdGljZVN0cnVjdHVyZUNoZWNrKFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFi
bGUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgc2V0KQogICAgIHsKICAgICAgICAgaWYgKHNldC5z
aXplKCkgIT0gMSkgewotICAgICAgICAgICAgbm90aWNlU3RydWN0dXJlQ2hlY2sodmFyaWFibGUs
IDApOworICAgICAgICAgICAgbm90aWNlU3RydWN0dXJlQ2hlY2sodmFyaWFibGUsIFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmUoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAg
bm90aWNlU3RydWN0dXJlQ2hlY2sodmFyaWFibGUsIHNldC5vbmx5U3RydWN0dXJlKCkpOworICAg
ICAgICBub3RpY2VTdHJ1Y3R1cmVDaGVjayh2YXJpYWJsZSwgc2V0LmF0KDApKTsKICAgICB9CiAK
ICAgICB2b2lkIG5vdGljZUNoZWNrQXJyYXkoVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSwg
QXJyYXlNb2RlIGFycmF5TW9kZSkKQEAgLTUwMSwyMiArNTAxLDIyIEBAIHByaXZhdGU6CiAgICAg
ICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZGlzYWJsZUNoZWNrQXJyYXlIb2lzdGluZygpOwog
ICAgIH0KIAotICAgIHZvaWQgbm90aWNlU3RydWN0dXJlQ2hlY2tBY2NvdW50aW5nRm9yQXJyYXlN
b2RlKFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQor
ICAgIHZvaWQgbm90aWNlU3RydWN0dXJlQ2hlY2tBY2NvdW50aW5nRm9yQXJyYXlNb2RlKFZhcmlh
YmxlQWNjZXNzRGF0YSogdmFyaWFibGUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKQog
ICAgIHsKICAgICAgICAgSGFzaE1hcDxWYXJpYWJsZUFjY2Vzc0RhdGEqLCBDaGVja0RhdGE+Ojpp
dGVyYXRvciByZXN1bHQgPSBtX21hcC5maW5kKHZhcmlhYmxlKTsKICAgICAgICAgaWYgKHJlc3Vs
dCA9PSBtX21hcC5lbmQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgaWYgKCFyZXN1
bHQtPnZhbHVlLm1fYXJyYXlNb2RlSG9pc3RpbmdPa2F5IHx8ICFyZXN1bHQtPnZhbHVlLm1fYXJy
YXlNb2RlSXNWYWxpZCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKHJlc3VsdC0+
dmFsdWUubV9hcnJheU1vZGUuc3RydWN0dXJlV291bGRQYXNzQXJyYXlNb2RlRmlsdGVyaW5nKHN0
cnVjdHVyZSkpCisgICAgICAgIGlmIChyZXN1bHQtPnZhbHVlLm1fYXJyYXlNb2RlLnN0cnVjdHVy
ZVdvdWxkUGFzc0FycmF5TW9kZUZpbHRlcmluZyhzdHJ1Y3R1cmUuZ2V0KCkpKQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICByZXN1bHQtPnZhbHVlLmRpc2FibGVDaGVja0FycmF5SG9pc3Rp
bmcoKTsKICAgICB9CiAKLSAgICB2b2lkIG5vdGljZVN0cnVjdHVyZUNoZWNrQWNjb3VudGluZ0Zv
ckFycmF5TW9kZShWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlLCBjb25zdCBTdHJ1Y3R1cmVT
ZXQmIHNldCkKKyAgICB2b2lkIG5vdGljZVN0cnVjdHVyZUNoZWNrQWNjb3VudGluZ0ZvckFycmF5
TW9kZShWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlLCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0
IHNldCkKICAgICB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzZXQuc2l6ZSgp
OyBpKyspCi0gICAgICAgICAgICBub3RpY2VTdHJ1Y3R1cmVDaGVja0FjY291bnRpbmdGb3JBcnJh
eU1vZGUodmFyaWFibGUsIHNldFtpXSk7CisgICAgICAgICAgICBub3RpY2VTdHJ1Y3R1cmVDaGVj
a0FjY291bnRpbmdGb3JBcnJheU1vZGUodmFyaWFibGUsIHNldC5hdChpKSk7CiAgICAgfQogCiAg
ICAgSGFzaE1hcDxWYXJpYWJsZUFjY2Vzc0RhdGEqLCBDaGVja0RhdGE+IG1fbWFwOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHJldmlzaW9uIDIxMTIy
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMDksNyArMjA5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAg
ICAgfHwgbm9kZS0+b3JpZ2luLmZvckV4aXQgIT0gcHJldmlvdXNOb2RlLT5vcmlnaW4uZm9yRXhp
dCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IFZBTElEQVRFKChub2RlKSwgIW5vZGUtPmhhc1N0cnVjdHVyZSgpIHx8ICEhbm9kZS0+c3RydWN0
dXJlKCkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIW5vZGUtPmhhc1N0cnVj
dHVyZSgpIHx8ICEhbm9kZS0+c3RydWN0dXJlKCkuZ2V0KCkpOwogICAgICAgICAgICAgICAgIFZB
TElEQVRFKChub2RlKSwgIW5vZGUtPmhhc0NlbGxPcGVyYW5kKCkgfHwgbm9kZS0+Y2VsbE9wZXJh
bmQoKS0+dmFsdWUoKS5pc0NlbGwoKSk7CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUp
LCAhbm9kZS0+aGFzQ2VsbE9wZXJhbmQoKSB8fCAhIW5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVl
KCkpOwogICAgICAgICAgICAgICAgIApAQCAtMjg1LDcgKzI4NSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgotICAgICAgICAgICAgICAgICAgICBmb3Ig
KFN0cnVjdHVyZSogc3RydWN0dXJlIDogbm9kZS0+c3RydWN0dXJlU2V0KCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgZm9yIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA6IG5vZGUtPnN0
cnVjdHVyZVNldCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIG9ubHkgc3Vw
cG9ydHMgc3RydWN0dXJlcyB0aGF0IGFyZSBKU0ZpbmFsT2JqZWN0IG9yIEpTQXJyYXkuCiAgICAg
ICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAobm9kZSksCkBAIC01NjUsNyArNTY1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgLy8gQ1BTIGRpc2FsbG93cyBpbnQzMiBhbmQgZG91YmxlIGFycmF5cy4gVGhvc2UgcmVxdWly
ZSB3ZWlyZCB0eXBlIGNoZWNrcyBhbmQKICAgICAgICAgICAgICAgICAgICAgLy8gY29udmVyc2lv
bnMuIFRoZXkgYXJlIG5vdCBuZWVkZWQgaW4gdGhlIERGRyByaWdodCBub3cuIFdlIHNob3VsZCBh
ZGQgc3VwcG9ydAogICAgICAgICAgICAgICAgICAgICAvLyBmb3IgdGhlc2UgaWYgdGhlIERGRyBl
dmVyIG5lZWRzIGl0LgotICAgICAgICAgICAgICAgICAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0
dXJlIDogbm9kZS0+c3RydWN0dXJlU2V0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChS
ZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA6IG5vZGUtPnN0cnVjdHVyZVNldCgpKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFoYXNJbnQzMihzdHJ1Y3R1
cmUtPmluZGV4aW5nVHlwZSgpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgo
bm9kZSksICFoYXNEb3VibGUoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpOwogICAgICAgICAg
ICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Niw3ICsxOTYsOSBA
QCBwdWJsaWM6CiAgICAgICAgIG1fcHJvYy5hZGRGYXN0Q29uc3RhbnQobV90YWdUeXBlTnVtYmVy
LT5rZXkoKSk7CiAgICAgICAgIG1fcHJvYy5hZGRGYXN0Q29uc3RhbnQobV90YWdNYXNrLT5rZXko
KSk7CiAgICAgICAgIAotICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5jb25zdEludFB0cihj
b2RlQmxvY2soKSksIGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJsb2NrKSk7CisgICAg
ICAgIC8vIFdlIGRvbid0IHdhbnQgdGhlIENvZGVCbG9jayB0byBoYXZlIGEgd2VhayBwb2ludGVy
IHRvIGl0c2VsZiBiZWNhdXNlCisgICAgICAgIC8vIHRoYXQgd291bGQgY2F1c2UgaXQgdG8gYWx3
YXlzIGdldCBjb2xsZWN0ZWQuCisgICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmNvbnN0SW50
UHRyKGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oY29kZUJsb2NrKCkpKSwgYWRkcmVzc0ZvcihDYWxs
RnJhbWVTbG90Ojpjb2RlQmxvY2spKTsKIAogICAgICAgICAvLyBTdGFjayBPdmVyZmxvdyBDaGVj
ay4KICAgICAgICAgdW5zaWduZWQgZXhpdEZyYW1lU2l6ZSA9IG1fZ3JhcGgucmVxdWlyZWRSZWdp
c3RlckNvdW50Rm9yRXhpdCgpICogc2l6ZW9mKFJlZ2lzdGVyKTsKQEAgLTE1NjAsNyArMTU2Miw3
IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0LmJyYW5jaChpc09iamVjdCh2YWx1ZSksIHVzdWFs
bHkoY29udGludWF0aW9uKSwgcmFyZWx5KHNsb3dDYXNlKSk7CiAKICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAgIFZhbHVlRnJvbUJsb2NrIHNs
b3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3Bl
cmF0aW9uT2JqZWN0Q29uc3RydWN0b3IpLCBtX2NhbGxGcmFtZSwgbV9vdXQuY29uc3RJbnRQdHIo
Z2xvYmFsT2JqZWN0KSwgdmFsdWUpKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3Vs
dCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25P
YmplY3RDb25zdHJ1Y3RvciksIG1fY2FsbEZyYW1lLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmplY3Qp
LCB2YWx1ZSkpOwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAg
bV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC0yNjY0LDcgKzI2NjYs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2hlY2tTdHJ1Y3R1cmUoCiAgICAgICAgICAgICAg
ICAgbV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKSwganNWYWx1
ZVZhbHVlKGNlbGwpLAogICAgICAgICAgICAgICAgIGV4aXRLaW5kLCBtX25vZGUtPnN0cnVjdHVy
ZVNldCgpLAotICAgICAgICAgICAgICAgIFsmXSAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIHsKKyAg
ICAgICAgICAgICAgICBbJl0gKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSB7CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB3ZWFrU3RydWN0dXJlSUQoc3RydWN0dXJlKTsKICAgICAg
ICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI2ODQsNyArMjY4Niw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBjaGVja1N0cnVjdHVyZSgKICAgICAgICAgICAgICAgICBt
X291dC5sb2FkMzIodmFsdWUsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKSwganNWYWx1ZVZh
bHVlKHZhbHVlKSwKICAgICAgICAgICAgICAgICBleGl0S2luZCwgbV9ub2RlLT5zdHJ1Y3R1cmVT
ZXQoKSwKLSAgICAgICAgICAgICAgICBbJl0gKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7CisgICAg
ICAgICAgICAgICAgWyZdIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgewogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gd2Vha1N0cnVjdHVyZUlEKHN0cnVjdHVyZSk7CiAgICAgICAg
ICAgICAgICAgfSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CkBAIC0y
Nzk4LDggKzI4MDAsOCBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgbV9mdGxTdGF0ZS5qaXRD
b2RlLT5jb21tb24ubm90aWZ5Q29tcGlsaW5nU3RydWN0dXJlVHJhbnNpdGlvbihtX2dyYXBoLm1f
cGxhbiwgY29kZUJsb2NrKCksIG1fbm9kZSk7CiAgICAgICAgIAotICAgICAgICBTdHJ1Y3R1cmUq
IG9sZFN0cnVjdHVyZSA9IG1fbm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91czsKLSAgICAgICAg
U3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBtX25vZGUtPnRyYW5zaXRpb24oKS0+bmV4dDsKKyAg
ICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBvbGRTdHJ1Y3R1cmUgPSBtX25vZGUtPnRyYW5zaXRp
b24oKS0+cHJldmlvdXM7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgbmV3U3RydWN0dXJl
ID0gbV9ub2RlLT50cmFuc2l0aW9uKCktPm5leHQ7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQob2xk
U3RydWN0dXJlLCBvbGRTdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpID09IG5ld1N0cnVjdHVyZS0+
aW5kZXhpbmdUeXBlKCkpOwogICAgICAgICBBU1NFUlQob2xkU3RydWN0dXJlLT50eXBlSW5mbygp
LmlubGluZVR5cGVGbGFncygpID09IG5ld1N0cnVjdHVyZS0+dHlwZUluZm8oKS5pbmxpbmVUeXBl
RmxhZ3MoKSk7CiAgICAgICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgp
ID09IG5ld1N0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkpOwpAQCAtMzg5OSwxMCArMzkwMSwx
MCBAQCBwcml2YXRlOgogICAgICAgICAgICAgLy8gd2l0aCBvbmUgb2YgdGhlIGZvbGxvd2luZyBp
bmRleGluZyBzaGFwZXM6IEludDMyLCBDb250aWd1b3VzLCBEb3VibGUuCiAgICAgICAgICAgICBM
VmFsdWUgc3RydWN0dXJlID0gbV9vdXQuc2VsZWN0KAogICAgICAgICAgICAgICAgIG1fb3V0LmVx
dWFsKGluZGV4aW5nVHlwZSwgbV9vdXQuY29uc3RJbnQzMihBcnJheVdpdGhJbnQzMikpLAotICAg
ICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1
cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aEludDMyKSksCisgICAg
ICAgICAgICAgICAgd2Vha1N0cnVjdHVyZShtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2Jh
bE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFy
cmF5V2l0aEludDMyKSkpLAogICAgICAgICAgICAgICAgIG1fb3V0LnNlbGVjdChtX291dC5lcXVh
bChpbmRleGluZ1R5cGUsIG1fb3V0LmNvbnN0SW50MzIoQXJyYXlXaXRoQ29udGlndW91cykpLAot
ICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihnbG9iYWxPYmplY3QtPmFycmF5
U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhDb250aWd1
b3VzKSksCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKGdsb2JhbE9iamVj
dC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0
aERvdWJsZSkpKSk7CisgICAgICAgICAgICAgICAgICAgIHdlYWtTdHJ1Y3R1cmUobV9ncmFwaC5y
ZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdU
eXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhDb250aWd1b3VzKSkpLAorICAgICAgICAgICAg
ICAgICAgICB3ZWFrU3RydWN0dXJlKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2Jq
ZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlX
aXRoRG91YmxlKSkpKSk7CiAgICAgICAgICAgICBhcnJheVJlc3VsdCA9IGFsbG9jYXRlSlNBcnJh
eShyZXN1bHRMZW5ndGgsIHN0cnVjdHVyZSwgaW5kZXhpbmdUeXBlLCBmYWxzZSwgZmFsc2UpOwog
ICAgICAgICB9CiAKQEAgLTM5OTQsMTMgKzM5OTYsMTMgQEAgcHJpdmF0ZToKICAgICB7CiAgICAg
ICAgIExWYWx1ZSBzY29wZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIFN5
bWJvbFRhYmxlKiB0YWJsZSA9IG1fbm9kZS0+Y2FzdE9wZXJhbmQ8U3ltYm9sVGFibGUqPigpOwot
ICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1f
bm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YWN0aXZhdGlvblN0cnVjdHVyZSgpOworICAgICAgICBS
ZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUo
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hY3RpdmF0
aW9uU3RydWN0dXJlKCkpOwogICAgICAgICBKU1ZhbHVlIGluaXRpYWxpemF0aW9uVmFsdWUgPSBt
X25vZGUtPmluaXRpYWxpemF0aW9uVmFsdWVGb3JBY3RpdmF0aW9uKCk7CiAgICAgICAgIEFTU0VS
VChpbml0aWFsaXphdGlvblZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgaW5pdGlhbGl6YXRpb25WYWx1
ZSA9PSBqc1REWlZhbHVlKCkpOwogICAgICAgICBpZiAodGFibGUtPnNpbmdsZXRvblNjb3BlKCkt
PmlzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IHZtQ2Fs
bCgKICAgICAgICAgICAgICAgICBJbnQ2NCwKLSAgICAgICAgICAgICAgICBtX291dC5vcGVyYXRp
b24ob3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlvbkRpcmVjdCksIG1fY2FsbEZyYW1lLCB3ZWFrUG9p
bnRlcihzdHJ1Y3R1cmUpLAorICAgICAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRp
b25DcmVhdGVBY3RpdmF0aW9uRGlyZWN0KSwgbV9jYWxsRnJhbWUsIHdlYWtTdHJ1Y3R1cmUoc3Ry
dWN0dXJlKSwKICAgICAgICAgICAgICAgICBzY29wZSwgd2Vha1BvaW50ZXIodGFibGUpLCBtX291
dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShpbml0aWFsaXphdGlvblZhbHVlKSkpOwogICAg
ICAgICAgICAgc2V0SlNWYWx1ZShjYWxsUmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTQwMzUsNyArNDAzNyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBbPV0gKGNvbnN0IFZlY3Rv
cjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9y
PiB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKAogICAg
ICAgICAgICAgICAgICAgICBvcGVyYXRpb25DcmVhdGVBY3RpdmF0aW9uRGlyZWN0LCBsb2NhdGlv
bnNbMF0uZGlyZWN0R1BSKCksCi0gICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksCisgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUuZ2V0KCkp
LCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbVB0cih0YWJsZSksCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShpbml0aWFsaXphdGlvblZhbHVlKSkp
OwogICAgICAgICAgICAgfSwKQEAgLTQwNjUsMTAgKzQwNjcsMTAgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPQorICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3Jh
cGgucmVnaXN0ZXJTdHJ1Y3R1cmUoCiAgICAgICAgICAgICBpc0dlbmVyYXRvckZ1bmN0aW9uID8g
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5nZW5lcmF0
b3JGdW5jdGlvblN0cnVjdHVyZSgpIDoKICAgICAgICAgICAgIGlzQXN5bmNGdW5jdGlvbiA/IG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXN5bmNGdW5j
dGlvblN0cnVjdHVyZSgpIDoKLSAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1f
bm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAg
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rp
b25TdHJ1Y3R1cmUoKSk7CiAgICAgICAgIAogICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CkBAIC00MTI4LDggKzQxMzAsOCBAQCBwcml2YXRlOgogICAgICAgICAv
LyB0aGVtIGJlIGV4cGxpY2l0IGFyZ3VtZW50cyB0byB0aGlzIG5vZGUuCiAgICAgICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDIyMDcKICAgICAgICAgCi0g
ICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0KLSAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZGlyZWN0QXJndW1lbnRzU3RydWN0
dXJlKCk7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0KKyAgICAgICAg
ICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9u
b2RlLT5vcmlnaW4uc2VtYW50aWMpLT5kaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUoKSk7CiAgICAg
ICAgIAogICAgICAgICB1bnNpZ25lZCBtaW5DYXBhY2l0eSA9IG1fZ3JhcGguYmFzZWxpbmVDb2Rl
QmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5udW1QYXJhbWV0ZXJzKCkgLSAxOwog
ICAgICAgICAKQEAgLTQxNzEsNyArNDE3Myw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBbPV0g
KGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0
aDo6R2VuZXJhdG9yPiB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2Vu
ZXJhdG9yKAogICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25DcmVhdGVEaXJlY3RBcmd1bWVu
dHMsIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIo
KSwKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVj
dHVyZS5nZXQoKSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSwKICAgICAgICAgICAgICAgICAg
ICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobWluQ2FwYWNpdHkpKTsKICAgICAgICAgICAg
IH0sIGxlbmd0aC52YWx1ZSk7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBt
X291dC5hbmNob3IoY2FsbFJlc3VsdCk7CkBAIC00MjU5LDcgKzQyNjEsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgTFZhbHVlIGFycmF5TGVuZ3RoID0gbG93SW50MzIobV9ub2RlLT5jaGlsZDEo
KSk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBsb29wU3RhcnQgPSBtX291dC5uZXdCbG9jaygp
OwogICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5yZXN0UGFyYW1ldGVyU3RydWN0dXJlKCk7
CisgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3JhcGgucmVn
aXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5yZXN0UGFyYW1ldGVyU3RydWN0dXJlKCkpOwog
ICAgICAgICAgICAgQXJyYXlWYWx1ZXMgYXJyYXlWYWx1ZXMgPSBhbGxvY2F0ZVVuaW5pdGlhbGl6
ZWRDb250aWd1b3VzSlNBcnJheShhcnJheUxlbmd0aCwgc3RydWN0dXJlKTsKICAgICAgICAgICAg
IExWYWx1ZSBhcnJheSA9IGFycmF5VmFsdWVzLmFycmF5OwogICAgICAgICAgICAgTFZhbHVlIGJ1
dHRlcmZseSA9IGFycmF5VmFsdWVzLmJ1dHRlcmZseTsKQEAgLTQzMjcsOCArNDMyOSw4IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBzcGVjdWxhdGUobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUs
IG9wZXJhbmRJbmRleCkpOwogICAgICAgICAKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmFycmF5U3Ry
dWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbigKLSAgICAgICAgICAgIG1fbm9k
ZS0+aW5kZXhpbmdUeXBlKCkpOworICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVy
ZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVy
ZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oCisgICAgICAgICAgICBtX25vZGUtPmlu
ZGV4aW5nVHlwZSgpKSk7CiAKICAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmlzSGF2aW5nQUJh
ZFRpbWUoKSAmJiAhaGFzQW55QXJyYXlTdG9yYWdlKG1fbm9kZS0+aW5kZXhpbmdUeXBlKCkpKSB7
CiAgICAgICAgICAgICB1bnNpZ25lZCBudW1FbGVtZW50cyA9IG1fbm9kZS0+bnVtQ2hpbGRyZW4o
KTsKQEAgLTQzNzMsNyArNDM3NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghbV9ub2RlLT5u
dW1DaGlsZHJlbigpKSB7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbCgKICAgICAgICAg
ICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0VtcHR5QXJyYXkpLCBt
X2NhbGxGcmFtZSwKLSAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihzdHJ1Y3R1cmUp
KSk7CisgICAgICAgICAgICAgICAgd2Vha1N0cnVjdHVyZShzdHJ1Y3R1cmUpKSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCkBAIC00Mzk0LDcgKzQzOTYsNyBAQCBw
cml2YXRlOgogICAgICAgICAKICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbCgKICAgICAg
ICAgICAgIEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXkpLCBtX2NhbGxG
cmFtZSwKLSAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHN0cnVjdHVyZSksIG1fb3V0LmNv
bnN0SW50UHRyKGJ1ZmZlciksCisgICAgICAgICAgICB3ZWFrU3RydWN0dXJlKHN0cnVjdHVyZSks
IG1fb3V0LmNvbnN0SW50UHRyKGJ1ZmZlciksCiAgICAgICAgICAgICBtX291dC5jb25zdEludFB0
cihtX25vZGUtPm51bUNoaWxkcmVuKCkpKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LnN0b3Jl
UHRyKG1fb3V0LmludFB0clplcm8sIG1fb3V0LmFic29sdXRlKHNjcmF0Y2hCdWZmZXItPmFjdGl2
ZUxlbmd0aFB0cigpKSk7CkBAIC00NDM0LDcgKzQ0MzYsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPm9y
aWdpbmFsQXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGUoQXJyYXlXaXRoQ29udGlndW91cyk7
CisgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3JhcGgucmVn
aXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2Vt
YW50aWMpLT5vcmlnaW5hbEFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlKEFycmF5V2l0aENv
bnRpZ3VvdXMpKTsKICAgICAgICAgICAgIEFycmF5VmFsdWVzIGFycmF5VmFsdWVzID0gYWxsb2Nh
dGVVbmluaXRpYWxpemVkQ29udGlndW91c0pTQXJyYXkobGVuZ3RoLCBzdHJ1Y3R1cmUpOwogICAg
ICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IGFycmF5VmFsdWVzLmFycmF5OwogICAgICAgICAgICAg
TFZhbHVlIHN0b3JhZ2UgPSBhcnJheVZhbHVlcy5idXR0ZXJmbHk7CkBAIC00NjU2LDggKzQ2NTgs
OCBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZU5ld0FycmF5QnVmZmVyKCkKICAgICB7CiAg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0Fs
bG9jYXRpb24oCi0gICAgICAgICAgICBtX25vZGUtPmluZGV4aW5nVHlwZSgpKTsKKyAgICAgICAg
UmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJl
KGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0
aW9uKAorICAgICAgICAgICAgbV9ub2RlLT5pbmRleGluZ1R5cGUoKSkpOwogICAgICAgICAKICAg
ICAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmlzSGF2aW5nQUJhZFRpbWUoKSAmJiAhaGFzQW55QXJy
YXlTdG9yYWdlKG1fbm9kZS0+aW5kZXhpbmdUeXBlKCkpKSB7CiAgICAgICAgICAgICB1bnNpZ25l
ZCBudW1FbGVtZW50cyA9IG1fbm9kZS0+bnVtQ29uc3RhbnRzKCk7CkBAIC00Njg2LDcgKzQ2ODgs
NyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoCiAgICAg
ICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyKSwg
bV9jYWxsRnJhbWUsCi0gICAgICAgICAgICBtX291dC5jb25zdEludFB0cihzdHJ1Y3R1cmUpLCBt
X291dC5jb25zdEludFB0cihtX25vZGUtPnN0YXJ0Q29uc3RhbnQoKSksCisgICAgICAgICAgICB3
ZWFrU3RydWN0dXJlKHN0cnVjdHVyZSksIG1fb3V0LmNvbnN0SW50UHRyKG1fbm9kZS0+c3RhcnRD
b25zdGFudCgpKSwKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKG1fbm9kZS0+bnVtQ29u
c3RhbnRzKCkpKSk7CiAgICAgfQogCkBAIC00Njk1LDIzICs0Njk3LDIyIEBAIHByaXZhdGU6CiAg
ICAgICAgIExWYWx1ZSBwdWJsaWNMZW5ndGggPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKTsK
ICAgICAgICAgCiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5n
VHlwZUR1cmluZ0FsbG9jYXRpb24oCi0gICAgICAgICAgICBtX25vZGUtPmluZGV4aW5nVHlwZSgp
KTsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lz
dGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVE
dXJpbmdBbGxvY2F0aW9uKAorICAgICAgICAgICAgbV9ub2RlLT5pbmRleGluZ1R5cGUoKSkpOwog
ICAgICAgICAKICAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmlzSGF2aW5nQUJhZFRpbWUoKSAm
JiAhaGFzQW55QXJyYXlTdG9yYWdlKG1fbm9kZS0+aW5kZXhpbmdUeXBlKCkpKSB7CiAgICAgICAg
ICAgICBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlID0gbV9ub2RlLT5pbmRleGluZ1R5cGUoKTsK
ICAgICAgICAgICAgIHNldEpTVmFsdWUoCiAgICAgICAgICAgICAgICAgYWxsb2NhdGVKU0FycmF5
KAotICAgICAgICAgICAgICAgICAgICBwdWJsaWNMZW5ndGgsIG1fb3V0LmNvbnN0SW50UHRyKGds
b2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9u
KGluZGV4aW5nVHlwZSkpLCBtX291dC5jb25zdEludDMyKGluZGV4aW5nVHlwZSkpLmFycmF5KTsK
KyAgICAgICAgICAgICAgICAgICAgcHVibGljTGVuZ3RoLCB3ZWFrUG9pbnRlcihnbG9iYWxPYmpl
Y3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGlu
Z1R5cGUpKSwgbV9vdXQuY29uc3RJbnQzMihpbmRleGluZ1R5cGUpKS5hcnJheSk7CiAgICAgICAg
ICAgICBtdXRhdG9yRmVuY2UoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
ICAgICAKICAgICAgICAgTFZhbHVlIHN0cnVjdHVyZVZhbHVlID0gbV9vdXQuc2VsZWN0KAogICAg
ICAgICAgICAgbV9vdXQuYWJvdmVPckVxdWFsKHB1YmxpY0xlbmd0aCwgbV9vdXQuY29uc3RJbnQz
MihNSU5fQVJSQVlfU1RPUkFHRV9DT05TVFJVQ1RJT05fTEVOR1RIKSksCi0gICAgICAgICAgICBt
X291dC5jb25zdEludFB0cigKLSAgICAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPmFycmF5U3Ry
dWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3Jh
Z2UpKSwKLSAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHN0cnVjdHVyZSkpOworICAgICAg
ICAgICAgd2Vha1N0cnVjdHVyZShtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVj
dC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0
aEFycmF5U3RvcmFnZSkpKSwKKyAgICAgICAgICAgIHdlYWtTdHJ1Y3R1cmUoc3RydWN0dXJlKSk7
CiAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0
aW9uTmV3QXJyYXlXaXRoU2l6ZSksIG1fY2FsbEZyYW1lLCBzdHJ1Y3R1cmVWYWx1ZSwgcHVibGlj
TGVuZ3RoLCBtX291dC5pbnRQdHJaZXJvKSk7CiAgICAgfQogCkBAIC00NzIyLDcgKzQ3MjMsNyBA
QCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVz
ZUtpbmQoKSkgewogICAgICAgICBjYXNlIEludDMyVXNlOiB7Ci0gICAgICAgICAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJl
bnRseSh0eXBlKTsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0g
bV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1
cmVDb25jdXJyZW50bHkodHlwZSkpOwogCiAgICAgICAgICAgICBMVmFsdWUgc2l6ZSA9IGxvd0lu
dDMyKG1fbm9kZS0+Y2hpbGQxKCkpOwogCkBAIC00NzgxLDcgKzQ3ODIsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIFs9XSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAt
PiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKAogICAgICAgICAgICAgICAgICAgICAgICAg
b3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhTaXplRm9yVHlwZSh0eXBlKSwgbG9jYXRpb25zWzBd
LmRpcmVjdEdQUigpLAotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKHN0cnVjdHVyZSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUuZ2V0
KCkpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksCiAgICAgICAgICAgICAgICAgICAgICAgICBs
b2NhdGlvbnNbMl0uZGlyZWN0R1BSKCkpOwogICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAg
ICAgICAgc2l6ZSwgc3RvcmFnZVZhbHVlKTsKQEAgLTQ4MTMsNyArNDgxNCw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjb21waWxlQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoKQogICAgIHsKICAgICAg
ICAgTFZhbHVlIG9iamVjdCA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIHNl
dFN0b3JhZ2UoYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2Uob2JqZWN0LCBtX25vZGUtPnRyYW5zaXRp
b24oKS0+cHJldmlvdXMpKTsKKyAgICAgICAgc2V0U3RvcmFnZShhbGxvY2F0ZVByb3BlcnR5U3Rv
cmFnZShvYmplY3QsIG1fbm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91cy5nZXQoKSkpOwogICAg
IH0KIAogICAgIHZvaWQgY29tcGlsZVJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoKQpAQCAtNDgy
NCw3ICs0ODI1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIHNldFN0b3JhZ2UoCiAg
ICAgICAgICAgICByZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKAotICAgICAgICAgICAgICAgIG9i
amVjdCwgb2xkU3RvcmFnZSwgdHJhbnNpdGlvbi0+cHJldmlvdXMsIHRyYW5zaXRpb24tPm5leHQp
KTsKKyAgICAgICAgICAgICAgICBvYmplY3QsIG9sZFN0b3JhZ2UsIHRyYW5zaXRpb24tPnByZXZp
b3VzLmdldCgpLCB0cmFuc2l0aW9uLT5uZXh0LmdldCgpKSk7CiAgICAgfQogICAgIAogICAgIHZv
aWQgY29tcGlsZU51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHkoKQpAQCAtNTI4NiwxMSArNTI4
NywxMSBAQCBwcml2YXRlOgogICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291
dC5uZXdCbG9jaygpOwogICAgICAgICAKICAgICAgICAgVmVjdG9yPFN3aXRjaENhc2UsIDI+IGNh
c2VzOwotICAgICAgICBTdHJ1Y3R1cmVTZXQgYmFzZVNldDsKKyAgICAgICAgUmVnaXN0ZXJlZFN0
cnVjdHVyZVNldCBiYXNlU2V0OwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLmNhc2Vz
LnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgTXVsdGlHZXRCeU9mZnNldENhc2UgZ2V0Q2Fz
ZSA9IGRhdGEuY2FzZXNbaV07CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSBnZXRDYXNl
LnNldCgpLnNpemUoKTsgai0tOykgewotICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gZ2V0Q2FzZS5zZXQoKVtqXTsKKyAgICAgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0
dXJlIHN0cnVjdHVyZSA9IGdldENhc2Uuc2V0KClbal07CiAgICAgICAgICAgICAgICAgYmFzZVNl
dC5hZGQoc3RydWN0dXJlKTsKICAgICAgICAgICAgICAgICBjYXNlcy5hcHBlbmQoU3dpdGNoQ2Fz
ZSh3ZWFrU3RydWN0dXJlSUQoc3RydWN0dXJlKSwgYmxvY2tzW2ldLCBXZWlnaHQoMSkpKTsKICAg
ICAgICAgICAgIH0KQEAgLTUzNjgsMTEgKzUzNjksMTEgQEAgcHJpdmF0ZToKICAgICAgICAgTEJh
c2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgCiAgICAg
ICAgIFZlY3RvcjxTd2l0Y2hDYXNlLCAyPiBjYXNlczsKLSAgICAgICAgU3RydWN0dXJlU2V0IGJh
c2VTZXQ7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgYmFzZVNldDsKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gZGF0YS52YXJpYW50cy5zaXplKCk7IGktLTspIHsKICAgICAgICAg
ICAgIFB1dEJ5SWRWYXJpYW50IHZhcmlhbnQgPSBkYXRhLnZhcmlhbnRzW2ldOwogICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBqID0gdmFyaWFudC5vbGRTdHJ1Y3R1cmUoKS5zaXplKCk7IGotLTsp
IHsKLSAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZhcmlhbnQub2xkU3Ry
dWN0dXJlKClbal07CisgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1
cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQub2xkU3RydWN0dXJlKClbal0p
OwogICAgICAgICAgICAgICAgIGJhc2VTZXQuYWRkKHN0cnVjdHVyZSk7CiAgICAgICAgICAgICAg
ICAgY2FzZXMuYXBwZW5kKFN3aXRjaENhc2Uod2Vha1N0cnVjdHVyZUlEKHN0cnVjdHVyZSksIGJs
b2Nrc1tpXSwgV2VpZ2h0KDEpKSk7CiAgICAgICAgICAgICB9CkBAIC01NDEzLDcgKzU0MTQsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIEFTU0VSVCh2YXJpYW50Lm9sZFN0cnVjdHVyZUZv
clRyYW5zaXRpb24oKS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSA9PSB2YXJpYW50Lm5l
d1N0cnVjdHVyZSgpLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpKTsKICAgICAgICAgICAg
ICAgICBBU1NFUlQodmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCktPnR5cGVJbmZv
KCkudHlwZSgpID09IHZhcmlhbnQubmV3U3RydWN0dXJlKCktPnR5cGVJbmZvKCkudHlwZSgpKTsK
ICAgICAgICAgICAgICAgICBtX291dC5zdG9yZTMyKAotICAgICAgICAgICAgICAgICAgICB3ZWFr
U3RydWN0dXJlSUQodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSksIGJhc2UsIG1faGVhcHMuSlNDZWxs
X3N0cnVjdHVyZUlEKTsKKyAgICAgICAgICAgICAgICAgICAgd2Vha1N0cnVjdHVyZUlEKG1fZ3Jh
cGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkpLCBiYXNlLCBtX2hl
YXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKQEAgLTc3NDYsMTEgKzc3NDcsMTEg
QEAgcHJpdmF0ZToKICAgICAgICAgTFZhbHVlIGluZGV4ID0gbV9vdXQuYml0QW5kKG1hc2ssIHVu
bWFza2VkSW5kZXgpOwogICAgICAgICBMVmFsdWUgaGFzaE1hcEJ1Y2tldCA9IG1fb3V0LmxvYWQ2
NChtX291dC5iYXNlSW5kZXgobV9oZWFwcy5wcm9wZXJ0aWVzLmF0QW55TnVtYmVyKCksIGJ1ZmZl
ciwgbV9vdXQuemVyb0V4dChpbmRleCwgSW50NjQpLCBTY2FsZUVpZ2h0KSk7CiAgICAgICAgIFZh
bHVlRnJvbUJsb2NrIGJ1Y2tldFJlc3VsdCA9IG1fb3V0LmFuY2hvcihoYXNoTWFwQnVja2V0KTsK
LSAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKGhhc2hNYXBCdWNrZXQsIG1fb3V0LmNv
bnN0SW50UHRyKEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+
Pjo6ZW1wdHlWYWx1ZSgpKSksCisgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5lcXVhbChoYXNo
TWFwQnVja2V0LCBtX291dC5jb25zdEludFB0cihiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KEhhc2hN
YXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+Pjo6ZW1wdHlWYWx1ZSgp
KSkpLAogICAgICAgICAgICAgdW5zdXJlKG5vdFByZXNlbnRJblRhYmxlKSwgdW5zdXJlKG5vdEVt
cHR5VmFsdWUpKTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhub3RFbXB0eVZhbHVlLCBub3RE
ZWxldGVkVmFsdWUpOwotICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwoaGFzaE1hcEJ1
Y2tldCwgbV9vdXQuY29uc3RJbnRQdHIoSGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNoTWFw
QnVja2V0RGF0YUtleT4+OjpkZWxldGVkVmFsdWUoKSkpLAorICAgICAgICBtX291dC5icmFuY2go
bV9vdXQuZXF1YWwoaGFzaE1hcEJ1Y2tldCwgbV9vdXQuY29uc3RJbnRQdHIoYml0d2lzZV9jYXN0
PGludHB0cl90PihIYXNoTWFwSW1wbDxIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5
Pj46OmRlbGV0ZWRWYWx1ZSgpKSkpLAogICAgICAgICAgICAgdW5zdXJlKGxvb3BBcm91bmQpLCB1
bnN1cmUobm90RGVsZXRlZFZhbHVlKSk7CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8obm90RGVs
ZXRlZFZhbHVlLCBsb29wQXJvdW5kKTsKQEAgLTgyMjIsNyArODIyMyw4IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIGNvbXBpbGVPdmVycmlkZXNIYXNJbnN0YW5jZSgpCiAgICAgewotICAgICAgICBK
U0Z1bmN0aW9uKiBkZWZhdWx0SGFzSW5zdGFuY2VGdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9u
Kj4obV9ub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpKTsKKyAgICAgICAgRnJvemVuVmFsdWUq
IGRlZmF1bHRIYXNJbnN0YW5jZUZ1bmN0aW9uID0gbV9ub2RlLT5jZWxsT3BlcmFuZCgpOworICAg
ICAgICBBU1NFUlQoZGVmYXVsdEhhc0luc3RhbmNlRnVuY3Rpb24tPmNlbGwoKS0+aW5oZXJpdHMo
SlNGdW5jdGlvbjo6aW5mbygpKSk7CiAKICAgICAgICAgTFZhbHVlIGNvbnN0cnVjdG9yID0gbG93
Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgTFZhbHVlIGhhc0luc3RhbmNlID0gbG93
SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKQEAgLTgyMzMsNyArODIzNSw3IEBAIHByaXZhdGU6
CiAgICAgICAgIC8vIFVubGlrZSBpbiB0aGUgREZHLCB3ZSBkb24ndCB3b3JyeSBhYm91dCBjbGVh
bmluZyB0aGlzIGNvZGUgdXAgZm9yIHRoZSBjYXNlIHdoZXJlIHdlIGhhdmUgcHJvdmVuIHRoZSBo
YXNJbnN0YW5jZVZhbHVlIGlzIGEgY29uc3RhbnQgYXMgQjMgc2hvdWxkIGZpeCBpdCBmb3IgdXMu
CiAKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm90RGVmYXVsdEhhc0luc3RhbmNlUmVzdWx0ID0g
bV9vdXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5UcnVlKTsKLSAgICAgICAgbV9vdXQuYnJhbmNoKG1f
b3V0Lm5vdEVxdWFsKGhhc0luc3RhbmNlLCBtX291dC5jb25zdEludFB0cihkZWZhdWx0SGFzSW5z
dGFuY2VGdW5jdGlvbikpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKGRlZmF1bHRIYXNJ
bnN0YW5jZSkpOworICAgICAgICBtX291dC5icmFuY2gobV9vdXQubm90RXF1YWwoaGFzSW5zdGFu
Y2UsIGZyb3plblBvaW50ZXIoZGVmYXVsdEhhc0luc3RhbmNlRnVuY3Rpb24pKSwgdW5zdXJlKGNv
bnRpbnVhdGlvbiksIHVuc3VyZShkZWZhdWx0SGFzSW5zdGFuY2UpKTsKIAogICAgICAgICBMQmFz
aWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGRlZmF1bHRIYXNJbnN0YW5jZSwgY29u
dGludWF0aW9uKTsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgaW1wbGVtZW50c0RlZmF1bHRIYXNJ
bnN0YW5jZVJlc3VsdCA9IG1fb3V0LmFuY2hvcihtX291dC50ZXN0SXNaZXJvMzIoCkBAIC04NTgx
LDcgKzg1ODMsNyBAQCBwcml2YXRlOgogICAgICAgICBMVmFsdWUgc3RydWN0dXJlID0gbG93Q2Vs
bChtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgY2hlY2tTdHJ1Y3R1cmUoCiAgICAgICAgICAg
ICBzdHJ1Y3R1cmUsIG5vVmFsdWUoKSwgQmFkQ2FjaGUsIG1fbm9kZS0+c3RydWN0dXJlU2V0KCks
Ci0gICAgICAgICAgICBbdGhpc10gKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7CisgICAgICAgICAg
ICBbdGhpc10gKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSB7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHdlYWtTdHJ1Y3R1cmUoc3RydWN0dXJlKTsKICAgICAgICAgICAgIH0pOwogICAg
IH0KQEAgLTg2MDYsNyArODYwOCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0ID0gbV9ub2RlLT5z
dHJ1Y3R1cmVTZXQoKTsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBzZXQgPSBtX25v
ZGUtPnN0cnVjdHVyZVNldCgpOwogCiAgICAgICAgIFZlY3RvcjxMQmFzaWNCbG9jaywgMT4gYmxv
Y2tzKHNldC5zaXplKCkpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBzZXQuc2l6ZSgpOyBp
LS07KQpAQCAtODYxNiw3ICs4NjE4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIFZl
Y3RvcjxTd2l0Y2hDYXNlLCAxPiBjYXNlcyhzZXQuc2l6ZSgpKTsKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gc2V0LnNpemUoKTsgaS0tOykKLSAgICAgICAgICAgIGNhc2VzW2ldID0gU3dpdGNo
Q2FzZSh3ZWFrU3RydWN0dXJlKHNldFtpXSksIGJsb2Nrc1tpXSwgV2VpZ2h0KDEpKTsKKyAgICAg
ICAgICAgIGNhc2VzW2ldID0gU3dpdGNoQ2FzZSh3ZWFrU3RydWN0dXJlKHNldC5hdChpKSksIGJs
b2Nrc1tpXSwgV2VpZ2h0KDEpKTsKICAgICAgICAgbV9vdXQuc3dpdGNoSW5zdHJ1Y3Rpb24oCiAg
ICAgICAgICAgICBsb3dDZWxsKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAwKSksIGNhc2Vz
LCBkdW1teURlZmF1bHQsIFdlaWdodCgwKSk7CiAgICAgICAgIApAQCAtODYyNyw3ICs4NjI5LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gc2V0LnNpemUoKTsgaS0tOykg
ewogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oYmxvY2tzW2ldLCBpICsgMSA8IHNldC5zaXpl
KCkgPyBibG9ja3NbaSArIDFdIDogZHVtbXlEZWZhdWx0KTsKICAgICAgICAgICAgIAotICAgICAg
ICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzZXRbaV07CisgICAgICAgICAgICBSZWdpc3Rl
cmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IHNldC5hdChpKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgTFZhbHVlIG9iamVjdDsKICAgICAgICAgICAgIExWYWx1ZSBidXR0ZXJmbHk7CkBAIC04
NzA5LDcgKzg3MTEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgWz1dIChj
b25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6
OkdlbmVyYXRvcj4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVM
YXp5Q2FsbEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0
aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseVdpdGhJbmRleGluZ0hlYWRlckFuZFZlY3Rvckxlbmd0
aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzBdLmRpcmVjdEdQ
UigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLCBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlLmdldCgpKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpLCBsb2NhdGlvbnNbMl0uZGlyZWN0
R1BSKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAg
ICAgIHZlY3Rvckxlbmd0aCwgYnV0dGVyZmx5VmFsdWUpOwpAQCAtODcxOCw3ICs4NzIwLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIFs9XSAoY29uc3QgVmVjdG9yPExvY2F0
aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3Io
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld09iamVjdFdpdGhC
dXR0ZXJmbHksIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGxvY2F0
aW9uc1sxXS5kaXJlY3RHUFIoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUuZ2V0KCkpLCBsb2NhdGlvbnNbMV0u
ZGlyZWN0R1BSKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAg
ICAgICAgICAgIGJ1dHRlcmZseVZhbHVlKTsKICAgICAgICAgICAgICAgICB9CkBAIC04ODkxLDcg
Kzg4OTMsNyBAQCBwcml2YXRlOgogICAgICAgICBMVmFsdWUgc2NvcGUgPSBsb3dDZWxsKG1fZ3Jh
cGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxKSk7CiAgICAgICAgIFN5bWJvbFRhYmxlKiB0YWJsZSA9
IG1fbm9kZS0+Y2FzdE9wZXJhbmQ8U3ltYm9sVGFibGUqPigpOwogICAgICAgICBBU1NFUlQodGFi
bGUgPT0gbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDApLT5jYXN0Q29uc3RhbnQ8U3ltYm9s
VGFibGUqPigpKTsKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFjdGl2YXRpb25TdHJ1Y3R1cmUo
KTsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lz
dGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFu
dGljKS0+YWN0aXZhdGlvblN0cnVjdHVyZSgpKTsKIAogICAgICAgICBMQmFzaWNCbG9jayBzbG93
UGF0aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlv
biA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC04OTE4LDcgKzg5MjAsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgWz1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0
cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gewogICAgICAgICAgICAgICAgIHJldHVybiBjcmVh
dGVMYXp5Q2FsbEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uQ3JlYXRl
QWN0aXZhdGlvbkRpcmVjdCwgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLAotICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgbG9jYXRpb25z
WzFdLmRpcmVjdEdQUigpLAorICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoc3RydWN0dXJlLmdldCgpKSwgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpLAogICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIodGFibGUpLAogICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSkpKTsKICAgICAgICAgICAgIH0sIHNjb3BlKTsKQEAgLTkwNDMsMTEg
KzkwNDUsMTIgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29tcGlsZU5ld1JlZ2V4cCgpCiAgICAg
ewotICAgICAgICBSZWdFeHAqIHJlZ2V4cCA9IG1fbm9kZS0+Y2FzdE9wZXJhbmQ8UmVnRXhwKj4o
KTsKKyAgICAgICAgRnJvemVuVmFsdWUqIHJlZ2V4cCA9IG1fbm9kZS0+Y2VsbE9wZXJhbmQoKTsK
KyAgICAgICAgQVNTRVJUKHJlZ2V4cC0+Y2VsbCgpLT5pbmhlcml0cyhSZWdFeHA6OmluZm8oKSkp
OwogICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKAogICAgICAgICAgICAgcG9pbnRlclR5
cGUoKSwKICAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdSZWdleHApLCBt
X2NhbGxGcmFtZSwKLSAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHJlZ2V4cCkpOworICAg
ICAgICAgICAgZnJvemVuUG9pbnRlcihyZWdleHApKTsKICAgICAgICAgCiAgICAgICAgIHNldEpT
VmFsdWUocmVzdWx0KTsKICAgICB9CkBAIC05MTQwLDEwICs5MTQzLDEyIEBAIHByaXZhdGU6CiAg
ICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9IG1fZnRsU3RhdGUuaml0Q29kZS0+
Y29tbW9uLmFkZENvZGVPcmlnaW4obV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICAK
ICAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9jYWxsRnJhbWUsIHBhY2tldCwgbV9oZWFwcy5TaGFk
b3dDaGlja2VuX1BhY2tldF9mcmFtZSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmNv
bnN0SW50UHRyKFNoYWRvd0NoaWNrZW46OlBhY2tldDo6dGFpbE1hcmtlcigpKSwgcGFja2V0LCBt
X2hlYXBzLlNoYWRvd0NoaWNrZW5fUGFja2V0X2NhbGxlZSk7CisgICAgICAgIG1fb3V0LnN0b3Jl
UHRyKG1fb3V0LmNvbnN0SW50UHRyKGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oU2hhZG93Q2hpY2tl
bjo6UGFja2V0Ojp0YWlsTWFya2VyKCkpKSwgcGFja2V0LCBtX2hlYXBzLlNoYWRvd0NoaWNrZW5f
UGFja2V0X2NhbGxlZSk7CiAgICAgICAgIG1fb3V0LnN0b3JlNjQodGhpc1ZhbHVlLCBwYWNrZXQs
IG1faGVhcHMuU2hhZG93Q2hpY2tlbl9QYWNrZXRfdGhpc1ZhbHVlKTsKICAgICAgICAgbV9vdXQu
c3RvcmVQdHIoc2NvcGUsIHBhY2tldCwgbV9oZWFwcy5TaGFkb3dDaGlja2VuX1BhY2tldF9zY29w
ZSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmNvbnN0SW50UHRyKGNvZGVCbG9jaygp
KSwgcGFja2V0LCBtX2hlYXBzLlNoYWRvd0NoaWNrZW5fUGFja2V0X2NvZGVCbG9jayk7CisgICAg
ICAgIC8vIFdlIGRvbid0IHdhbnQgdGhlIENvZGVCbG9jayB0byBoYXZlIGEgd2VhayBwb2ludGVy
IHRvIGl0c2VsZiBiZWNhdXNlCisgICAgICAgIC8vIHRoYXQgd291bGQgY2F1c2UgaXQgdG8gYWx3
YXlzIGdldCBjb2xsZWN0ZWQuCisgICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmNvbnN0SW50
UHRyKGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oY29kZUJsb2NrKCkpKSwgcGFja2V0LCBtX2hlYXBz
LlNoYWRvd0NoaWNrZW5fUGFja2V0X2NvZGVCbG9jayk7CiAgICAgICAgIG1fb3V0LnN0b3JlMzIo
bV9vdXQuY29uc3RJbnQzMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksIHBhY2tldCwgbV9oZWFwcy5T
aGFkb3dDaGlja2VuX1BhY2tldF9jYWxsU2l0ZUluZGV4KTsKICAgICB9CiAKQEAgLTkyMzQsNyAr
OTIzOSw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KICAgICB2
b2lkIGNoZWNrU3RydWN0dXJlKAogICAgICAgICBMVmFsdWUgc3RydWN0dXJlRGlzY3JpbWluYW50
LCBjb25zdCBGb3JtYXR0ZWRWYWx1ZSYgZm9ybWF0dGVkVmFsdWUsIEV4aXRLaW5kIGV4aXRLaW5k
LAotICAgICAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCwgY29uc3QgRnVuY3RvciYgd2Vha1N0
cnVjdHVyZURpc2NyaW1pbmFudCkKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBzZXQs
IGNvbnN0IEZ1bmN0b3ImIHdlYWtTdHJ1Y3R1cmVEaXNjcmltaW5hbnQpCiAgICAgewogICAgICAg
ICBpZiAoc2V0LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgdGVybWluYXRlKGV4aXRLaW5kKTsK
QEAgLTkzNjksMTYgKzkzNzQsMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHNwZWN1bGF0ZShC
YWRUeXBlLCBqc1ZhbHVlVmFsdWUodmFsdWUpLCBlZGdlLm5vZGUoKSwgaXNOb3RTeW1ib2wodmFs
dWUsIHByb3ZlblR5cGUoZWRnZSkpKTsKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBj
YXNlIEluZmVycmVkVHlwZTo6T2JqZWN0V2l0aFN0cnVjdHVyZToKKyAgICAgICAgY2FzZSBJbmZl
cnJlZFR5cGU6Ok9iamVjdFdpdGhTdHJ1Y3R1cmU6IHsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh0eXBlLnN0cnVj
dHVyZSgpKTsKICAgICAgICAgICAgIHNwZWN1bGF0ZShCYWRUeXBlLCBqc1ZhbHVlVmFsdWUodmFs
dWUpLCBlZGdlLm5vZGUoKSwgaXNOb3RDZWxsKHZhbHVlLCBwcm92ZW5UeXBlKGVkZ2UpKSk7Ci0g
ICAgICAgICAgICBpZiAoIWFic3RyYWN0VmFsdWUoZWRnZSkubV9zdHJ1Y3R1cmUuaXNTdWJzZXRP
ZihTdHJ1Y3R1cmVTZXQodHlwZS5zdHJ1Y3R1cmUoKSkpKSB7CisgICAgICAgICAgICBpZiAoIWFi
c3RyYWN0VmFsdWUoZWRnZSkubV9zdHJ1Y3R1cmUuaXNTdWJzZXRPZihSZWdpc3RlcmVkU3RydWN0
dXJlU2V0KHN0cnVjdHVyZSkpKSB7CiAgICAgICAgICAgICAgICAgc3BlY3VsYXRlKAogICAgICAg
ICAgICAgICAgICAgICBCYWRUeXBlLCBqc1ZhbHVlVmFsdWUodmFsdWUpLCBlZGdlLm5vZGUoKSwK
ICAgICAgICAgICAgICAgICAgICAgbV9vdXQubm90RXF1YWwoCiAgICAgICAgICAgICAgICAgICAg
ICAgICBtX291dC5sb2FkMzIodmFsdWUsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHdlYWtTdHJ1Y3R1cmVJRCh0eXBlLnN0cnVjdHVyZSgpKSkp
OworICAgICAgICAgICAgICAgICAgICAgICAgd2Vha1N0cnVjdHVyZUlEKHN0cnVjdHVyZSkpKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCiAgICAgICAg
IGNhc2UgSW5mZXJyZWRUeXBlOjpPYmplY3RXaXRoU3RydWN0dXJlT3JPdGhlcjogewogICAgICAg
ICAgICAgTEJhc2ljQmxvY2sgY2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygpOwpAQCAtOTM4OSwx
MiArOTM5NiwxMyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4
dCA9IG1fb3V0LmFwcGVuZFRvKGNlbGxDYXNlLCBub3RDZWxsQ2FzZSk7CiAKLSAgICAgICAgICAg
IGlmICghYWJzdHJhY3RWYWx1ZShlZGdlKS5tX3N0cnVjdHVyZS5pc1N1YnNldE9mKFN0cnVjdHVy
ZVNldCh0eXBlLnN0cnVjdHVyZSgpKSkpIHsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh0eXBlLnN0cnVjdHVyZSgp
KTsKKyAgICAgICAgICAgIGlmICghYWJzdHJhY3RWYWx1ZShlZGdlKS5tX3N0cnVjdHVyZS5pc1N1
YnNldE9mKFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSkpIHsKICAgICAgICAgICAg
ICAgICBzcGVjdWxhdGUoCiAgICAgICAgICAgICAgICAgICAgIEJhZFR5cGUsIGpzVmFsdWVWYWx1
ZSh2YWx1ZSksIGVkZ2Uubm9kZSgpLAogICAgICAgICAgICAgICAgICAgICBtX291dC5ub3RFcXVh
bCgKICAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQzMih2YWx1ZSwgbV9oZWFwcy5K
U0NlbGxfc3RydWN0dXJlSUQpLAotICAgICAgICAgICAgICAgICAgICAgICAgd2Vha1N0cnVjdHVy
ZUlEKHR5cGUuc3RydWN0dXJlKCkpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB3ZWFrU3Ry
dWN0dXJlSUQoc3RydWN0dXJlKSkpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBtX291
dC5qdW1wKGNvbnRpbnVhdGlvbik7CkBAIC0xMDQ5Myw5ICsxMDUwMSw5IEBAIHByaXZhdGU6CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgTFZhbHVlIGFsbG9jYXRlT2JqZWN0
KExWYWx1ZSBhbGxvY2F0b3IsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBMVmFsdWUgYnV0dGVyZmx5
LCBMQmFzaWNCbG9jayBzbG93UGF0aCkKKyAgICBMVmFsdWUgYWxsb2NhdGVPYmplY3QoTFZhbHVl
IGFsbG9jYXRvciwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIExWYWx1ZSBidXR0ZXJm
bHksIExCYXNpY0Jsb2NrIHNsb3dQYXRoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFsbG9jYXRl
T2JqZWN0KGFsbG9jYXRvciwgbV9vdXQuY29uc3RJbnRQdHIoc3RydWN0dXJlKSwgYnV0dGVyZmx5
LCBzbG93UGF0aCk7CisgICAgICAgIHJldHVybiBhbGxvY2F0ZU9iamVjdChhbGxvY2F0b3IsIHdl
YWtTdHJ1Y3R1cmUoc3RydWN0dXJlKSwgYnV0dGVyZmx5LCBzbG93UGF0aCk7CiAgICAgfQogCiAg
ICAgTFZhbHVlIGFsbG9jYXRlT2JqZWN0KExWYWx1ZSBhbGxvY2F0b3IsIExWYWx1ZSBzdHJ1Y3R1
cmUsIExWYWx1ZSBidXR0ZXJmbHksIExCYXNpY0Jsb2NrIHNsb3dQYXRoKQpAQCAtMTA1ODksNyAr
MTA1OTcsNyBAQCBwcml2YXRlOgogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENsYXNzVHlw
ZT4KICAgICBMVmFsdWUgYWxsb2NhdGVWYXJpYWJsZVNpemVkT2JqZWN0KAotICAgICAgICBMVmFs
dWUgc2l6ZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIExWYWx1ZSBidXR0ZXJmbHksIExCYXNpY0Js
b2NrIHNsb3dQYXRoKQorICAgICAgICBMVmFsdWUgc2l6ZSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBz
dHJ1Y3R1cmUsIExWYWx1ZSBidXR0ZXJmbHksIExCYXNpY0Jsb2NrIHNsb3dQYXRoKQogICAgIHsK
ICAgICAgICAgTFZhbHVlIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvclNpemUoCiAgICAgICAgICAg
ICAqc3Vic3BhY2VGb3I8Q2xhc3NUeXBlPih2bSgpKSwgc2l6ZSwgc2xvd1BhdGgpOwpAQCAtMTA2
MDUsOSArMTA2MTMsOSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gYWxsb2NhdGVDZWxsKGFs
bG9jYXRvciwgc3RydWN0dXJlLCBzbG93UGF0aCk7CiAgICAgfQogICAgIAotICAgIExWYWx1ZSBh
bGxvY2F0ZU9iamVjdChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICBMVmFsdWUgYWxsb2NhdGVP
YmplY3QoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBzaXpl
X3QgYWxsb2NhdGlvblNpemUgPSBKU0ZpbmFsT2JqZWN0OjphbGxvY2F0aW9uU2l6ZShzdHJ1Y3R1
cmUtPmlubGluZUNhcGFjaXR5KCkpOworICAgICAgICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBK
U0ZpbmFsT2JqZWN0OjphbGxvY2F0aW9uU2l6ZShzdHJ1Y3R1cmUuZ2V0KCktPmlubGluZUNhcGFj
aXR5KCkpOwogICAgICAgICBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciA9IHN1YnNwYWNlRm9y
PEpTRmluYWxPYmplY3Q+KHZtKCkpLT5hbGxvY2F0b3JGb3IoYWxsb2NhdGlvblNpemUpOwogICAg
ICAgICAKICAgICAgICAgLy8gRklYTUU6IElmIHRoZSBhbGxvY2F0b3IgaXMgbnVsbCwgd2UgY291
bGQgc2ltcGx5IGVtaXQgYSBub3JtYWwgQyBjYWxsIHRvIHRoZSBhbGxvY2F0b3IKQEAgLTEwNjMw
LDcgKzEwNjM4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFs9XSAoY29uc3QgVmVjdG9yPExv
Y2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsK
ICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3IoCiAgICAgICAg
ICAgICAgICAgICAgIG9wZXJhdGlvbk5ld09iamVjdCwgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigp
LAotICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0
dXJlKSk7CisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihz
dHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICBWYWx1ZUZyb21CbG9j
ayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHNsb3dSZXN1bHRWYWx1ZSk7CiAgICAgICAgIG1f
b3V0Lmp1bXAoY29udGludWF0aW9uKTsKQEAgLTEwNzMzLDggKzEwNzQxLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxhcmdlQ2FzZSwgZmFpbENhc2UpOwog
ICAgICAgICBWYWx1ZUZyb21CbG9jayBsYXJnZVN0cnVjdHVyZSA9IG1fb3V0LmFuY2hvcigKLSAg
ICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKAotICAgICAgICAgICAgICAgIGdsb2JhbE9iamVj
dC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0
aEFycmF5U3RvcmFnZSkpKTsKKyAgICAgICAgICAgIHdlYWtTdHJ1Y3R1cmUobV9ncmFwaC5yZWdp
c3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBl
RHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2UpKSkpOwogICAgICAgICBtX291
dC5qdW1wKHNsb3dDYXNlKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGZhaWxD
YXNlLCBzbG93Q2FzZSk7CkBAIC0xMDc2MywxMiArMTA3NzAsMTIgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0QnV0dGVyZmx5LCBzbG93QnV0dGVy
Zmx5KSk7CiAgICAgfQogICAgIAotICAgIEFycmF5VmFsdWVzIGFsbG9jYXRlVW5pbml0aWFsaXpl
ZENvbnRpZ3VvdXNKU0FycmF5KExWYWx1ZSBwdWJsaWNMZW5ndGgsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQorICAgIEFycmF5VmFsdWVzIGFsbG9jYXRlVW5pbml0aWFsaXplZENvbnRpZ3VvdXNKU0Fy
cmF5KExWYWx1ZSBwdWJsaWNMZW5ndGgsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKQog
ICAgIHsKICAgICAgICAgYm9vbCBzaG91bGRJbml0aWFsaXplRWxlbWVudHMgPSBmYWxzZTsKICAg
ICAgICAgYm9vbCBzaG91bGRMYXJnZUFycmF5U2l6ZUNyZWF0ZUFycmF5U3RvcmFnZSA9IGZhbHNl
OwogICAgICAgICByZXR1cm4gYWxsb2NhdGVKU0FycmF5KAotICAgICAgICAgICAgcHVibGljTGVu
Z3RoLCBtX291dC5jb25zdEludFB0cihzdHJ1Y3R1cmUpLCBtX291dC5jb25zdEludDMyKHN0cnVj
dHVyZS0+aW5kZXhpbmdUeXBlKCkpLCBzaG91bGRJbml0aWFsaXplRWxlbWVudHMsCisgICAgICAg
ICAgICBwdWJsaWNMZW5ndGgsIHdlYWtTdHJ1Y3R1cmUoc3RydWN0dXJlKSwgbV9vdXQuY29uc3RJ
bnQzMihzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSwgc2hvdWxkSW5pdGlhbGl6ZUVsZW1lbnRz
LAogICAgICAgICAgICAgc2hvdWxkTGFyZ2VBcnJheVNpemVDcmVhdGVBcnJheVN0b3JhZ2UpOwog
ICAgIH0KICAgICAKQEAgLTEwOTEwLDcgKzEwOTE3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBtX291dC5hcHBlbmRUbyhtYXNxdWVyYWRlc0Nhc2UpOwogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIGlzVHJ1dGh5T2JqZWN0ID0gbV9vdXQubm90RXF1YWwoCi0gICAgICAg
ICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1f
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksCisgICAgICAgICAgICAgICAgICAgIHdlYWtQb2ludGVy
KG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSksCiAgICAg
ICAgICAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIobG9hZFN0cnVjdHVyZSh2YWx1ZSksIG1faGVh
cHMuU3RydWN0dXJlX2dsb2JhbE9iamVjdCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
cmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKGlzVHJ1dGh5T2JqZWN0KSk7CkBAIC0xMTAwOSw3
ICsxMTAxNiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHJlc3VsdHMu
YXBwZW5kKG1fb3V0LmFuY2hvcigKICAgICAgICAgICAgICAgICBtX291dC5lcXVhbCgKLSAgICAg
ICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwKKyAgICAgICAgICAgICAgICAgICAgd2Vha1BvaW50
ZXIobV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwKICAg
ICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZFB0cihzdHJ1Y3R1cmUsIG1faGVhcHMuU3RydWN0
dXJlX2dsb2JhbE9iamVjdCkpKSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlv
bik7CiAgICAgICAgIH0KQEAgLTExOTMxLDEyICsxMTkzOCwxMiBAQCBwcml2YXRlOgogICAgICAg
ICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbW9kZSA9PSBNYW51YWxPcGVyYW5kU3BlY3Vs
YXRpb24gfHwgREZHOjppc0NlbGwoZWRnZS51c2VLaW5kKCkpKTsKICAgICAgICAgCiAgICAgICAg
IGlmIChlZGdlLT5vcCgpID09IEpTQ29uc3RhbnQpIHsKLSAgICAgICAgICAgIEpTVmFsdWUgdmFs
dWUgPSBlZGdlLT5hc0pTVmFsdWUoKTsKLSAgICAgICAgICAgIGlmICghdmFsdWUuaXNDZWxsKCkp
IHsKKyAgICAgICAgICAgIEZyb3plblZhbHVlKiB2YWx1ZSA9IGVkZ2UtPmNvbnN0YW50KCk7Cisg
ICAgICAgICAgICBpZiAoIXZhbHVlLT52YWx1ZSgpLmlzQ2VsbCgpKSB7CiAgICAgICAgICAgICAg
ICAgdGVybWluYXRlKFVuY291bnRhYmxlKTsKICAgICAgICAgICAgICAgICByZXR1cm4gbV9vdXQu
aW50UHRyWmVybzsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBtX291dC5jb25z
dEludFB0cih2YWx1ZS5hc0NlbGwoKSk7CisgICAgICAgICAgICByZXR1cm4gZnJvemVuUG9pbnRl
cih2YWx1ZSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIExvd2VyZWROb2RlVmFsdWUg
dmFsdWUgPSBtX2pzVmFsdWVWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKQEAgLTEyOTAxLDEwICsx
MjkwOCwxMCBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgc3BlY3VsYXRlU3RyaW5nT2JqZWN0
Rm9yU3RydWN0dXJlSUQoRWRnZSBlZGdlLCBMVmFsdWUgc3RydWN0dXJlSUQpCiAgICAgewotICAg
ICAgICBTdHJ1Y3R1cmUqIHN0cmluZ09iamVjdFN0cnVjdHVyZSA9Ci0gICAgICAgICAgICBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnN0cmluZ09iamVj
dFN0cnVjdHVyZSgpOwotICAgICAgICAKLSAgICAgICAgaWYgKGFic3RyYWN0U3RydWN0dXJlKGVk
Z2UpLmlzU3Vic2V0T2YoU3RydWN0dXJlU2V0KHN0cmluZ09iamVjdFN0cnVjdHVyZSkpKQorICAg
ICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cmluZ09iamVjdFN0cnVjdHVyZSA9CisgICAgICAg
ICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1f
bm9kZS0+b3JpZ2luLnNlbWFudGljKS0+c3RyaW5nT2JqZWN0U3RydWN0dXJlKCkpOworCisgICAg
ICAgIGlmIChhYnN0cmFjdFN0cnVjdHVyZShlZGdlKS5pc1N1YnNldE9mKFJlZ2lzdGVyZWRTdHJ1
Y3R1cmVTZXQoc3RyaW5nT2JqZWN0U3RydWN0dXJlKSkpCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIAogICAgICAgICBzcGVjdWxhdGUoCkBAIC0xMzY4OSwxOSArMTM2OTYsMzAgQEAgcHJp
dmF0ZToKIAogICAgIExWYWx1ZSB3ZWFrUG9pbnRlcihKU0NlbGwqIHBvaW50ZXIpCiAgICAgewor
ICAgICAgICAvLyBUaGVyZSBhcmUgd2VpcmQgcmVsYXRpb25zaGlwcyBpbiBob3cgb3B0aW1pemVk
IENvZGVCbG9ja3MKKyAgICAgICAgLy8gcG9pbnQgdG8gb3RoZXIgQ29kZUJsb2Nrcy4gV2UgZG9u
J3Qgd2FudCB0byBoYXZlIHRoZW0gYmUKKyAgICAgICAgLy8gcGFydCBvZiB0aGUgd2VhayBwb2lu
dGVyIHNldC4gRm9yIGV4YW1wbGUsIGFuIG9wdGltaXplZCBDb2RlQmxvY2sKKyAgICAgICAgLy8g
aGF2aW5nIGEgd2VhayBwb2ludGVyIHRvIGl0c2VsZiB3aWxsIGNhdXNlIGl0IHRvIGdldCBjb2xs
ZWN0ZWQuCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFqc0R5bmFtaWNDYXN0PENvZGVCbG9jayo+
KHBvaW50ZXIpKTsKKwogICAgICAgICBhZGRXZWFrUmVmZXJlbmNlKHBvaW50ZXIpOwotICAgICAg
ICByZXR1cm4gbV9vdXQuY29uc3RJbnRQdHIocG9pbnRlcik7CisgICAgICAgIHJldHVybiBtX291
dC53ZWFrUG9pbnRlcihtX2dyYXBoLCBwb2ludGVyKTsKKyAgICB9CisKKyAgICBMVmFsdWUgZnJv
emVuUG9pbnRlcihGcm96ZW5WYWx1ZSogdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gbV9v
dXQud2Vha1BvaW50ZXIodmFsdWUpOwogICAgIH0KIAotICAgIExWYWx1ZSB3ZWFrU3RydWN0dXJl
SUQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgTFZhbHVlIHdlYWtTdHJ1Y3R1cmVJRChSZWdp
c3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIGFkZFdlYWtSZWZlcmVu
Y2Uoc3RydWN0dXJlKTsKICAgICAgICAgcmV0dXJuIG1fb3V0LmNvbnN0SW50MzIoc3RydWN0dXJl
LT5pZCgpKTsKICAgICB9CiAgICAgCi0gICAgTFZhbHVlIHdlYWtTdHJ1Y3R1cmUoU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCisgICAgTFZhbHVlIHdlYWtTdHJ1Y3R1cmUoUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICByZXR1cm4gd2Vha1BvaW50ZXIoc3RydWN0dXJl
KTsKKyAgICAgICAgQVNTRVJUKCEhc3RydWN0dXJlLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIG1f
b3V0LndlYWtQb2ludGVyKG1fZ3JhcGgsIHN0cnVjdHVyZS5nZXQoKSk7CiAgICAgfQogICAgIAog
ICAgIFR5cGVkUG9pbnRlciBhZGRyZXNzRm9yKExWYWx1ZSBiYXNlLCBpbnQgb3BlcmFuZCwgcHRy
ZGlmZl90IG9mZnNldCA9IDApCkBAIC0xMzgwOSw3ICsxMzgyNyw5IEBAIHByaXZhdGU6CiAgICAg
ICAgIG1fb3V0LmNhbGwoCiAgICAgICAgICAgICBWb2lkLAogICAgICAgICAgICAgbV9vdXQuY29u
c3RJbnRQdHIoZnRsVW5yZWFjaGFibGUpLAotICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIo
Y29kZUJsb2NrKCkpLCBtX291dC5jb25zdEludDMyKGJsb2NrSW5kZXgpLAorICAgICAgICAgICAg
Ly8gV2UgZG9uJ3Qgd2FudCB0aGUgQ29kZUJsb2NrIHRvIGhhdmUgYSB3ZWFrIHBvaW50ZXIgdG8g
aXRzZWxmIGJlY2F1c2UKKyAgICAgICAgICAgIC8vIHRoYXQgd291bGQgY2F1c2UgaXQgdG8gYWx3
YXlzIGdldCBjb2xsZWN0ZWQuCisgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihiaXR3aXNl
X2Nhc3Q8aW50cHRyX3Q+KGNvZGVCbG9jaygpKSksIG1fb3V0LmNvbnN0SW50MzIoYmxvY2tJbmRl
eCksCiAgICAgICAgICAgICBtX291dC5jb25zdEludDMyKG5vZGVJbmRleCkpOwogI2VuZGlmCiAg
ICAgICAgIG1fb3V0LnVucmVhY2hhYmxlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTE91dHB1dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMT3V0cHV0LmgJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMT3V0cHV0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRl
ICJGVExWYWx1ZUZyb21CbG9jay5oIgogI2luY2x1ZGUgIkZUTFdlaWdodC5oIgogI2luY2x1ZGUg
IkZUTFdlaWdodGVkVGFyZ2V0LmgiCisjaW5jbHVkZSAiSGVhcENlbGwuaCIKICNpbmNsdWRlIDx3
dGYvT3JkZXJNYWtlci5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogCkBA
IC0xMDQsOSArMTA1LDI5IEBAIHB1YmxpYzoKIAogICAgIExWYWx1ZSBjb25zdEJvb2woYm9vbCB2
YWx1ZSk7CiAgICAgTFZhbHVlIGNvbnN0SW50MzIoaW50MzJfdCB2YWx1ZSk7CisKKyAgICBMVmFs
dWUgd2Vha1BvaW50ZXIoREZHOjpHcmFwaCYgZ3JhcGgsIEpTQ2VsbCogY2VsbCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChncmFwaC5tX3BsYW4ud2Vha1JlZmVyZW5jZXMuY29udGFpbnMoY2VsbCkp
OworCisgICAgICAgIGlmIChzaXplb2Yodm9pZCopID09IDgpCisgICAgICAgICAgICByZXR1cm4g
Y29uc3RJbnQ2NChiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KGNlbGwpKTsKKyAgICAgICAgcmV0dXJu
IGNvbnN0SW50MzIoYml0d2lzZV9jYXN0PGludHB0cl90PihjZWxsKSk7CisgICAgfQorCisgICAg
TFZhbHVlIHdlYWtQb2ludGVyKERGRzo6RnJvemVuVmFsdWUqIHZhbHVlKQorICAgIHsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQodmFsdWUtPnZhbHVlKCkuaXNDZWxsKCkpOworCisgICAgICAgIGlm
IChzaXplb2Yodm9pZCopID09IDgpCisgICAgICAgICAgICByZXR1cm4gY29uc3RJbnQ2NChiaXR3
aXNlX2Nhc3Q8aW50cHRyX3Q+KHZhbHVlLT5jZWxsKCkpKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0
SW50MzIoYml0d2lzZV9jYXN0PGludHB0cl90Pih2YWx1ZS0+Y2VsbCgpKSk7CisgICAgfQorCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBMVmFsdWUgY29uc3RJbnRQdHIoVCogdmFsdWUp
CiAgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8SGVhcENlbGws
IFQ+Ojp2YWx1ZSwgIlRvIHVzZSBhIEdDIHBvaW50ZXIsIHRoZSBncmFwaCBtdXN0IGJlIGF3YXJl
IG9mIGl0LiBVc2UgZ2NQb2ludGVyIGluc3RlYWQgYW5kIG1ha2Ugc3VyZSB0aGUgZ3JhcGggaXMg
YXdhcmUgb2YgdGhpcyByZWZlcmVuY2UuIik7CiAgICAgICAgIGlmIChzaXplb2Yodm9pZCopID09
IDgpCiAgICAgICAgICAgICByZXR1cm4gY29uc3RJbnQ2NChiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+
KHZhbHVlKSk7CiAgICAgICAgIHJldHVybiBjb25zdEludDMyKGJpdHdpc2VfY2FzdDxpbnRwdHJf
dD4odmFsdWUpKTsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2UvV1RGL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE3LTAxLTI2ICBTYWFtIEJh
cmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIEhhcmRlbiBob3cgdGhlIGNvbXBp
bGVyIHJlZmVyZW5jZXMgR0Mgb2JqZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY3Mjc3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDE3OTUw
Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBGaWxpcCBQaXpsby4KKworICAgICAgICBJIG1hZGUg
VGlueVB0clNldCB1c2UgYml0d2lzZV9jYXN0IGluc3RlYWQgb2Ygc3RhdGljX2Nhc3QKKyAgICAg
ICAgZm9yIGl0cyBzaW5nbGVFbnRyeSgpIGZ1bmN0aW9uIHNvIHRoYXQgaXQgY2FuIHdvcmsgb24g
cG9pbnRlci1saWtlCisgICAgICAgIHR5cGVzIGp1c3QgYXMgaXQgY2FuIG9uIGFjdHVhbCBwb2lu
dGVyIHR5cGVzLgorICAgICAgICAKKyAgICAgICAgQW4gZXhhbXBsZSBvZiB3aGVyZSB0aGlzIG1h
dHRlcnMgaXMgd2hlbiB5b3UgaGF2ZSBUaW55UHRyU2V0PFQ+CisgICAgICAgIHdoZXJlIFQgaXMg
ZGVmaW5lZCB0byBiZSBhIHN0cnVjdCB3aGljaCB3cmFwcyBhIHBvaW50ZXIsIGUuZzoKKyAgICAg
ICAgCisgICAgICAgIHN0cnVjdCBUIHsKKyAgICAgICAgICAgIHZvaWQqIG1fcG9pbnRlcjsKKyAg
ICAgICAgfQorCisgICAgICAgICogd3RmL1RpbnlQdHJTZXQuaDoKKyAgICAgICAgKFdURjo6VGlu
eVB0clNldDo6c2luZ2xlRW50cnkpOgorCiAyMDE3LTAxLTI1ICBXZW5zb24gSHNpZWggIDx3ZW5z
b25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEludHJvZHVjZSBhbiBpdGVtLXByb3ZpZGVy
LWJhc2VkIHBhc3RlYm9hcmQgd3JhcHBlcgpJbmRleDogU291cmNlL1dURi93dGYvVGlueVB0clNl
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1RpbnlQdHJTZXQuaAkocmV2aXNpb24g
MjExMjI5KQorKysgU291cmNlL1dURi93dGYvVGlueVB0clNldC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBXVEYgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgog
Y2xhc3MgVGlueVB0clNldCB7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoVCkgPT0gc2l6ZW9m
KHZvaWQqKSwgIkl0J3MgaW4gdGhlIHRpdGxlIG9mIHRoZSBjbGFzcy4iKTsKIHB1YmxpYzoKICAg
ICBUaW55UHRyU2V0KCkKICAgICAgICAgOiBtX3BvaW50ZXIoMCkKQEAgLTQ3NSw3ICs0NzYsNyBA
QCBwcml2YXRlOgogICAgIFQgc2luZ2xlRW50cnkoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNT
RVJUKGlzVGhpbigpKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KHBvaW50ZXIoKSk7
CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VD4ocG9pbnRlcigpKTsKICAgICB9CiAgICAg
CiAgICAgT3V0T2ZMaW5lTGlzdCogbGlzdCgpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299849</attachid>
            <date>2017-01-26 14:11:01 -0800</date>
            <delta_ts>2017-01-26 14:14:19 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>253496</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjExMjMwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4NCBA
QAorMjAxNy0wMS0yNiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBIYXJkZW4gaG93IHRoZSBjb21waWxlciByZWZlcmVuY2VzIEdDIG9iamVjdHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NzI3NworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzAxNzk1MDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAgUGl6
bG8uCisKKyAgICAgICAgU2luY2UgcjIxMDk3MSwgdGhlIERGRy9GVEwgd2lsbCBmbGFzaCBzYWZl
cG9pbnRzIGJlZm9yZQorICAgICAgICBlYWNoIHBoYXNlLiBUaGlzIG1lYW5zIHRoYXQgdGhlcmUg
YXJlIG1vcmUgb3Bwb3J0dW5pdGllcyBmb3IKKyAgICAgICAgYSBHQyB0byBoYXBwZW4gd2hpbGUg
dGhlIGNvbXBpbGVyIGlzIHJ1bm5pbmcuIEJlY2F1c2Ugb2YgdGhpcywKKyAgICAgICAgdGhlIGNv
bXBpbGVyIG11c3QgYmUgdHJhY2sgb2YgYWxsIHRoZSBoZWFwIHBvaW50ZXJzIHRoYXQgYXJlIHBh
cnQKKyAgICAgICAgb2YgdGhlIEdyYXBoIGRhdGEgc3RydWN0dXJlLiBUbyBhY2NvbXBsaXNoIHRo
aXMsIEkndmUgZGVzaWduZWQKKyAgICAgICAgYSBuZXcgdHlwZSBjYWxsZWQgUmVnaXN0ZXJlZFN0
cnVjdHVyZSB0aGF0IGNhbiBvbmx5IGJlIGNvbnN0cnVjdGVkCisgICAgICAgIGFmdGVyIHRoZSBH
cmFwaCBiZWNvbWVzIGF3YXJlIG9mIGl0cyB1bmRlcmx5aW5nIFN0cnVjdHVyZSouIEkKKyAgICAg
ICAgZGVzaWduZWQgdGhpcyBuZXcgdHlwZSB0byBoYXZlIHRoZSB0eXBlIHN5c3RlbSBpbiBDKysg
aGVscCB1cyBjYXRjaAorICAgICAgICBlcnJvcnMgd2hlcmUgd2UncmUgbm90IGluZm9ybWluZyB0
aGUgZ3JhcGgvcGxhbiBvZiBhIGhlYXAgcG9pbnRlci4KKyAgICAgICAgSSd2ZSBtYWRlIGl0IGEg
Y29tcGlsZSBlcnJvciB0byBjcmVhdGUgYW4gT3BJbmZvIHdpdGggYSBwb2ludGVyCisgICAgICAg
IFQqIHdoZXJlIFQgaW5oZXJpdHMgZnJvbSBIZWFwQ2VsbC4gVGhpcyBlbmNvdXJhZ2VzIGFuIE9w
SW5mbworICAgICAgICB0byBiZSBjcmVhdGVkIHdpdGggZWl0aGVyIGEgRnJvemVuVmFsdWUqIG9y
IGEgUmVnaXN0ZXJlZFN0cnVjdHVyZS4KKyAgICAgICAgSSd2ZSBhZGRlZCBzaW1pbGFyIGNvbXBp
bGUgdGltZSBhc3NlcnRpb25zIGZvciBUcnVzdGVkSW1tUHRyIGluIERGRzo6U3BlY3VsYXRpdmVK
SVQKKyAgICAgICAgYW5kIEZUTDo6T3V0cHV0Ojpjb25zdEludFB0ci4gVGhlc2Ugc3RhdGljIGFz
c2VydHMgZG9uJ3Qgc2F2ZSB1cyBmcm9tIGFsbCBiYWQKKyAgICAgICAgcHJvZ3JhbXMgYmVjYXVz
ZSB0aGVyZSBhcmUgd2F5cyB0byB3cml0ZSBjb2RlIHRoYXQncyBpbmNvcnJlY3QgdGhhdCBjb21w
aWxlcywKKyAgICAgICAgYnV0IHRoZSBuZXcgdHlwZXMgZG8gaGVscCB1cyBlbnN1cmUgdGhhdCB0
aGUgbW9zdCBvYnZpb3VzIHdheSBvZiB3cml0aW5nIHRoZQorICAgICAgICBjb2RlIGlzIGNvcnJl
Y3QuCisgICAgICAgIAorICAgICAgICBUaGUgcmVhc29uIHRoaXMgcGF0Y2ggaXMgc28gYmlnIGlz
IHRoYXQgSSd2ZSBzdHJ1bmcgUmVnaXN0ZXJlZFN0cnVjdHVyZSBhbmQKKyAgICAgICAgUmVnaXN0
ZXJlZFN0cnVjdHVyZVNldCB0aHJvdWdoIHRoZSBlbnRpcmUgREZHL0ZUTC4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpkZXRlcm1pbmVMaXZlbmVzcyk6CisgICAgICAgICogYnl0ZWNvZGUv
U3RydWN0dXJlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2V0OjpmaWx0ZXIpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTZXQ6OmZpbHRlckFycmF5TW9kZXMpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTZXQ6OnNwZWN1bGF0aW9uRnJvbVN0cnVj
dHVyZXMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTZXQ6OmFycmF5TW9kZXNG
cm9tU3RydWN0dXJlcyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlN0cnVjdHVyZVNldDo6dmFs
aWRhdGVSZWZlcmVuY2VzKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVT
ZXQuaDoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI6OmZpbHRlcik6CisgICAgICAgICogZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmJvb2xlYW5SZXN1bHQpOgorICAgICAg
ICAoSlNDOjpERkc6OmlzVG9UaGlzQW5JZGVudGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAg
ICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
b2JzZXJ2ZVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpmaWx0ZXIpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFj
dFZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpzZXQpOgorICAg
ICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OnNldFR5cGUpOgorICAgICAgICAoSlNDOjpE
Rkc6OkFic3RyYWN0VmFsdWU6Om1lcmdlT1NSRW50cnlWYWx1ZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6QWJzdHJhY3RWYWx1ZTo6ZmlsdGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZh
bHVlOjpjaGFuZ2VTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6
OmNvbnRhaW5zKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RWYWx1ZS5oOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0VmFsdWU6Om9ic2VydmVUcmFuc2l0aW9uKToKKyAgICAgICAgKEpT
Qzo6REZHOjpBYnN0cmFjdFZhbHVlOjpUcmFuc2l0aW9uT2JzZXJ2ZXI6OlRyYW5zaXRpb25PYnNl
cnZlcik6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdBcnJheU1vZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5
TW9kZTo6YWxyZWFkeUNoZWNrZWQpOgorICAgICAgICAqIGRmZy9ERkdBcnJheWlmeVNsb3dQYXRo
R2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlpZnlTbG93UGF0aEdlbmVyYXRv
cjo6QXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvcik6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29u
c3RhbnRJbnRlcm5hbEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6bG9hZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5
SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKToK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNr
RW50cnkpOgorICAgICAgICAqIGRmZy9ERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpERkc6OkNhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2Vu
ZXJhdG9yOjpDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvcik6CisgICAgICAgIChK
U0M6OkRGRzo6Q2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJh
dG9yOjpDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3Ip
OgorICAgICAgICAqIGRmZy9ERkdDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xvd1BhdGhHZW5l
cmF0b3IuaDoKKyAgICAgICAgKEpTQzo6REZHOjpDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xv
d1BhdGhHZW5lcmF0b3I6OkNhbGxDcmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRv
cik6CisgICAgICAgICogZGZnL0RGR0NvbW1vbkRhdGEuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkNvbW1vbkRhdGE6Om5vdGlmeUNvbXBpbGluZ1N0cnVjdHVyZVRyYW5zaXRpb24pOgorICAgICAg
ICAqIGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAgICAgICAoSlNDOjpERkc6
OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjplbWl0R2V0QnlPZmZzZXQpOgorICAgICAgICAoSlNDOjpE
Rkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjplbWl0UHV0QnlPZmZzZXQpOgorICAgICAgICAoSlND
OjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjphZGRCYXNlQ2hlY2spOgorICAgICAgICAoSlND
OjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjphZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2sp
OgorICAgICAgICAqIGRmZy9ERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkRlc2lyZWRXZWFrUmVmZXJlbmNlczo6cmVhbGx5QWRkKToKKyAgICAgICAgKiBk
ZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Y2hl
Y2tBcnJheSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpHcmFwaDo6R3JhcGgpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpkdW1wKToKKyAgICAg
ICAgKEpTQzo6REZHOjpHcmFwaDo6dHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eSk6CisgICAgICAgIChK
U0M6OkRGRzo6R3JhcGg6OmluZmVycmVkVmFsdWVGb3JQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6
OkRGRzo6R3JhcGg6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpm
cmVlemUpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpyZWdpc3RlclN0cnVjdHVyZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmFzc2VydElzUmVnaXN0ZXJlZCk6CisgICAgICAgICog
ZGZnL0RGR0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OnJlZ2lzdGVyU3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6YWRkU3RydWN0dXJlU2V0KToKKyAgICAg
ICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxl
cjo6YnJhbmNoV2Vha1N0cnVjdHVyZSk6CisgICAgICAgICogZGZnL0RGR011bHRpR2V0QnlPZmZz
ZXREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpNdWx0aUdldEJ5T2Zmc2V0Q2FzZTo6ZHVt
cEluQ29udGV4dCk6CisgICAgICAgICogZGZnL0RGR011bHRpR2V0QnlPZmZzZXREYXRhLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6TXVsdGlHZXRCeU9mZnNldENhc2U6Ok11bHRpR2V0QnlPZmZzZXRD
YXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpNdWx0aUdldEJ5T2Zmc2V0Q2FzZTo6c2V0KToKKyAg
ICAgICAgKiBkZmcvREZHTm9kZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVy
dFRvUHV0U3RydWN0dXJlSGludCk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0VG9DaGVja1N0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
OkRGRzo6Tm9kZTo6c3RydWN0dXJlU2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzdHJ1
Y3R1cmUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Ok9wSW5mb1dyYXBwZXI6Ok9wSW5mb1dy
YXBwZXIpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Ok9wSW5mb1dyYXBwZXI6Om9wZXJhdG9y
PSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6T3BJbmZvV3JhcHBlcjo6YXNSZWdpc3RlcmVk
U3RydWN0dXJlKToKKyAgICAgICAgKiBkZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFz
ZS5jcHA6CisgICAgICAgICogZGZnL0RGR09wSW5mby5oOgorICAgICAgICAoSlNDOjpERkc6Ok9w
SW5mbzo6T3BJbmZvKToKKyAgICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6UGxhbjo6Y29tcGlsZUluVGhyZWFkSW1wbCk6CisgICAgICAgIChKU0M6OkRGRzo6UGxh
bjo6ZmluYWxpemVXaXRob3V0Tm90aWZ5aW5nQ2FsbGJhY2spOgorICAgICAgICAqIGRmZy9ERkdS
ZWdpc3RlcmVkU3RydWN0dXJlLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVy
ZWRTdHJ1Y3R1cmU6OmdldCk6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJlZFN0cnVjdHVy
ZTo6b3BlcmF0b3ItPik6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZTo6
b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZTo6b3Bl
cmF0b3IhPSk6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZTo6b3BlcmF0
b3IgYm9vbCk6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZTo6UmVnaXN0
ZXJlZFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZTo6
Y3JlYXRlUHJpdmF0ZSk6CisgICAgICAgICogZGZnL0RGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlcmVkU3RydWN0dXJlU2V0Ojpm
aWx0ZXIpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQ6OmZpbHRl
ckFycmF5TW9kZXMpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQ6
OnNwZWN1bGF0aW9uRnJvbVN0cnVjdHVyZXMpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVy
ZWRTdHJ1Y3R1cmVTZXQ6OmFycmF5TW9kZXNGcm9tU3RydWN0dXJlcyk6CisgICAgICAgIChKU0M6
OkRGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZVNldDo6dmFsaWRhdGVSZWZlcmVuY2VzKToKKyAgICAg
ICAgKiBkZmcvREZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNldC5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6REZHOjpSZWdpc3RlcmVkU3RydWN0dXJlU2V0OjpSZWdpc3RlcmVkU3RydWN0dXJlU2V0KToK
KyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlcmVkU3RydWN0dXJlU2V0Ojpvbmx5U3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlcmVkU3RydWN0dXJlU2V0Ojp0b1N0cnVjdHVy
ZVNldCk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVSYXdPYmpl
Y3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0R2V0Q2FsbGVlKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c2lsZW50RmlsbCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJyYXkpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPblN0cmluZyk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVGcm9tQ2hhckNvZGUpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRG91YmxlUmVwKToKKyAgICAgICAgKEpT
Qzo6REZHOjpjb21waWxlQ2xhbXBEb3VibGVUb0J5dGUpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTWFrZVJvcGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlQXJpdGhSb3VuZGluZyk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbik6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVBY3RpdmF0aW9uKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZURpcmVjdEFyZ3VtZW50cyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVTY29wZWRBcmd1
bWVudHMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRl
Q2xvbmVkQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVNwcmVhZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVB
cnJheVNsaWNlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVR5
cGVPZik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBbGxvY2F0
ZVByb3BlcnR5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3JPbkNlbGwp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJh
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0cmluZ09y
U3RyaW5nT2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU1hdGVyaWFsaXplTmV3T2JqZWN0KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6VHJ1c3RlZEltbVB0cjo6VHJ1
c3RlZEltbVB0cik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OlRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
VHJ1c3RlZEltbVB0cjo6b3BlcmF0b3IgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpUcnVzdGVkSW1tUHRyOjphc0ludHB0
cik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhbGxPcGVyYXRpb24pOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVEZXN0cnVjdGli
bGVPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVT
dHJpbmdPYmplY3RGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3Vs
YXRpdmVOb25QZWVwaG9sZUNvbXBhcmVOdWxsT3JVbmRlZmluZWQpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoTnVsbE9yVW5k
ZWZpbmVkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RPck90aGVyTG9n
aWNhbE5vdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RP
ck90aGVyQnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBbGxvY2F0ZU5l
d0FycmF5V2l0aFNpemUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVw
aG9sZUNvbXBhcmVOdWxsT3JVbmRlZmluZWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoTnVsbE9yVW5kZWZpbmVkKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3QpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJyYW5j
aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2NhdGVOZXdBcnJheVdpdGhT
aXplKToKKyAgICAgICAgKiBkZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlTm9kZSk6CisgICAg
ICAgICogZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmFzc2VydElzUmVnaXN0ZXJlZCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6Y2xvYmJlcik6CisgICAgICAgIChK
U0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6b2JzZXJ2ZVRyYW5zaXRpb24pOgorICAg
ICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om9ic2VydmVUcmFuc2l0aW9u
cyk6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6YWRkKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjptZXJnZSk6CisgICAgICAg
IChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6bWVyZ2VOb3RUb3ApOgorICAgICAg
ICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmZpbHRlcik6CisgICAgICAgIChK
U0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyU2xvdyk6CisgICAgICAgIChK
U0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyQ2xhc3NJbmZvU2xvdyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6Y29udGFpbnMpOgorICAg
ICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3Vic2V0T2YpOgorICAg
ICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3VwZXJzZXRPZik6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6b3ZlcmxhcHMpOgorICAg
ICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3ViQ2xhc3NPZik6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZHVtcEluQ29udGV4dCk6
CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlKToK
KyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpvcGVyYXRvcj0pOgor
ICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OnNldCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6dG9TdHJ1Y3R1cmVTZXQpOgorICAg
ICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmF0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpvcGVyYXRvcltdKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpvbmx5U3RydWN0dXJlKToKKyAgICAgICAg
KiBkZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlN0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFz
ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlUmVnaXN0cmF0aW9uUGhh
c2U6OnJ1bik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlUmVnaXN0cmF0
aW9uUGhhc2U6OnJlZ2lzdGVyU3RydWN0dXJlcyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRG
Rzo6U3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2U6OnJlZ2lzdGVyU3RydWN0dXJlKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZTo6YXNzZXJ0
QXJlUmVnaXN0ZXJlZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlUmVn
aXN0cmF0aW9uUGhhc2U6OmFzc2VydElzUmVnaXN0ZXJlZCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkRGRzo6cGVyZm9ybVN0cnVjdHVyZVJlZ2lzdHJhdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmg6CisgICAgICAgICogZGZnL0RG
R1RyYW5zaXRpb24uY3BwOgorICAgICAgICAoSlNDOjpERkc6OlRyYW5zaXRpb246OmR1bXBJbkNv
bnRleHQpOgorICAgICAgICAqIGRmZy9ERkdUcmFuc2l0aW9uLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6VHJhbnNpdGlvbjo6VHJhbnNpdGlvbik6CisgICAgICAgICogZGZnL0RGR1R5cGVDaGVja0hv
aXN0aW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlR5cGVDaGVja0hvaXN0aW5nUGhh
c2U6Om5vdGljZVN0cnVjdHVyZUNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpUeXBlQ2hlY2tI
b2lzdGluZ1BoYXNlOjpub3RpY2VTdHJ1Y3R1cmVDaGVja0FjY291bnRpbmdGb3JBcnJheU1vZGUp
OgorICAgICAgICAqIGRmZy9ERkdWYWxpZGF0ZS5jcHA6CisgICAgICAgICogZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6Omxvd2Vy
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxPYmpl
Y3RDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVDaGVja1N0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVQdXRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlQXJyYXlTbGljZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVDcmVhdGVBY3RpdmF0aW9uKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNyZWF0ZURpcmVjdEFyZ3VtZW50cyk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDcmVhdGVSZXN0KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld0FycmF5KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld0FycmF5V2l0aFNw
cmVhZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOZXdB
cnJheUJ1ZmZlcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVOZXdBcnJheVdpdGhTaXplKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZU5ld1R5cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVNdWx0aUdldEJ5
T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU11
bHRpUHV0QnlPZmZzZXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlR2V0TWFwQnVja2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZU92ZXJyaWRlc0hhc0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNoZWNrU3RydWN0dXJlSW1tZWRpYXRlKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU1hdGVyaWFs
aXplQ3JlYXRlQWN0aXZhdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVOZXdSZWdleHApOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlTG9nU2hhZG93Q2hpY2tlblRhaWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjaGVja1N0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNoZWNrSW5mZXJyZWRUeXBlKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6YWxsb2NhdGVPYmplY3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjphbGxvY2F0ZVZhcmlhYmxlU2l6ZWRPYmplY3QpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjphbGxvY2F0ZUpTQXJyYXkpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjphbGxvY2F0ZVVuaW5pdGlhbGl6ZWRDb250aWd1
b3VzSlNBcnJheSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmJvb2xp
ZnkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjplcXVhbE51bGxPclVu
ZGVmaW5lZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6Omxvd0NlbGwp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVjdWxhdGVTdHJpbmdP
YmplY3RGb3JTdHJ1Y3R1cmVJRCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OndlYWtQb2ludGVyKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
ZnJvemVuUG9pbnRlcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6Ondl
YWtTdHJ1Y3R1cmVJRCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6Ondl
YWtTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjcmFz
aCk6CisgICAgICAgICogZnRsL0ZUTE91dHB1dC5oOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1
dDo6d2Vha1BvaW50ZXIpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Y29uc3RJbnRQdHIp
OgorCiAyMDE3LTAxLTI2ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBPU1IgZW50cnk6IGRlbGF5IG91dGVyLWxvb3AgY29tcGlsYXRpb24gd2hlbiBhdCBpbm5l
ci1sb29wCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAy
MTEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTM3Myw2ICszNzMsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAg
IGRmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAKICAgICBkZmcvREZHUHVyZVZhbHVlLmNw
cAogICAgIGRmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAKKyAgICBkZmcvREZHUmVnaXN0
ZXJlZFN0cnVjdHVyZVNldC5jcHAKICAgICBkZmcvREZHU1NBQ2FsY3VsYXRvci5jcHAKICAgICBk
ZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAogICAgIGRmZy9ERkdTU0FMb3dlcmluZ1BoYXNl
LmNwcApAQCAtMzg2LDcgKzM4Nyw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAg
ZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdTdHJlbmd0
aFJlZHVjdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmNw
cAotICAgIGRmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAKICAgICBkZmcvREZH
VGhyZWFkRGF0YS5jcHAKICAgICBkZmcvREZHVGh1bmtzLmNwcAogICAgIGRmZy9ERkdUaWVyVXBD
aGVja0luamVjdGlvblBoYXNlLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01MjAsOCArNTIw
LDYgQEAKIAkJMEY3NjZEMzgxNUFFNEExQzAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmlu
Z1dhdGNocG9pbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY3NjZEMzYxNUFFNEExQTAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dh
dGNocG9pbnQuY3BwICovOyB9OwogCQkwRjc2NkQzOTE1QUU0QTFGMDA4RjM2M0UgLyogU3RydWN0
dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY3NjZEMzcxNUFFNEExQTAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0
dWJDbGVhcmluZ1dhdGNocG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjc3MDA5MjE0MDJGRjNDMDA3OEVCMzkgLyogU2FtcGxpbmdDb3Vu
dGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NzcwMDkxMTQwMkZGMjgwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwICovOyB9OwotCQkw
Rjc5MDg1NTE5QTI5MEIyMDBGNjMxMEMgLyogREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2Uu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3OTA4
NTMxOUEyOTBCMjAwRjYzMTBDIC8qIERGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcCAq
LzsgfTsKLQkJMEY3OTA4NTYxOUEyOTBCMjAwRjYzMTBDIC8qIERGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjc5MDg1NDE5QTI5MEIyMDBGNjMxMEMgLyogREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhh
c2UuaCAqLzsgfTsKIAkJMEY3QjI5NEIxNEMzQ0QyRjAwN0MzREIxIC8qIERGR0NhcGFiaWxpdGll
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEODJF
MUYxNDE3MkMyRjAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5oICovOyB9OwogCQkwRjdCMjk0
RDE0QzNDRDRDMDA3QzNEQjEgLyogREZHQ29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMwOTc3RTE0NjlFQkM0MDBDRjI0NDIgLyogREZHQ29t
bW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEY3QzM5RkIxQzhGNjI5MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0MzOUZBMUM4RjYyOTMwMDQ4MDE1
MSAvKiBSZWdFeHBJbmxpbmVzLmggKi87IH07CkBAIC0xNDQxLDYgKzE0MzksOCBAQAogCQk3OTZG
QjQzQTFERkY4QzNGMDAzOUM5NUQgLyogSlNXZWJBc3NlbWJseUhlbHBlcnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5NkZCNDM5MURGRjhDM0YwMDM5
Qzk1RCAvKiBKU1dlYkFzc2VtYmx5SGVscGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc5N0UwN0E5MUI4RkNGQjkwMDg0MDBCQSAvKiBKU0ds
b2JhbExleGljYWxFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3OTdFMDdBNzFCOEZDRkI5MDA4NDAwQkEgLyogSlNHbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnQuY3BwICovOyB9OwogCQk3OTdFMDdBQTFCOEZDRkI5MDA4NDAwQkEgLyog
SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDc5N0UwN0E4MUI4RkNGQjkwMDg0MDBCQSAvKiBKU0dsb2JhbExl
eGljYWxFbnZpcm9ubWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTc5ODBDMTZDMUUzQTk0MEUwMEI3MTYxNSAvKiBERkdSZWdpc3RlcmVkU3Ry
dWN0dXJlU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDc5ODBDMTZBMUUzQTk0MEUwMEI3MTYxNSAvKiBERkdSZWdpc3RlcmVkU3RydWN0dXJlU2V0
LmNwcCAqLzsgfTsKKwkJNzk4MEMxNkQxRTNBOTQwRTAwQjcxNjE1IC8qIERGR1JlZ2lzdGVyZWRT
dHJ1Y3R1cmVTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDc5ODBDMTZCMUUzQTk0MEUwMEI3MTYxNSAvKiBERkdSZWdpc3RlcmVkU3RydWN0dXJlU2V0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzk4
OTM3NzgxRENBQjU3MzAwRjhENEZCIC8qIEpTRml4ZWRBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OTg5Mzc3NjFEQ0FCNTczMDBGOEQ0RkIg
LyogSlNGaXhlZEFycmF5LmNwcCAqLzsgfTsKIAkJNzk4OTM3NzkxRENBQjU3MzAwRjhENEZCIC8q
IEpTRml4ZWRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzk4OTM3NzcxRENBQjU3MzAwRjhENEZCIC8qIEpTRml4ZWRBcnJheS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc5OUVGN0M0MUM1NkVE
OTYwMDJCMDUzNCAvKiBCM1BDVG9PcmlnaW5NYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5OUVGN0MzMUM1NkVEOTYwMDJCMDUzNCAvKiBCM1BDVG9P
cmlnaW5NYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTQ3MSw2ICsxNDcxLDcgQEAKIAkJNzlFRTBDMDAxQjRBRkI4NTAwMDM4NUM5IC8qIFZh
cmlhYmxlRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDc5RUUwQkZFMUI0QUZCODUwMDAzODVDOSAvKiBWYXJpYWJsZUVudmlyb25tZW50
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzlG
OEZDMUUxQjlGRUQwRjAwQ0E2NkFCIC8qIERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RjhGQzFD
MUI5RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAgKi87
IH07CiAJCTc5RjhGQzFGMUI5RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJbnNlcnRp
b25QaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzlGOEZDMUQxQjlGRUQwRjAwQ0E2NkFCIC8qIERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNl
LmggKi87IH07CisJCTc5RkM4QTA4MUUzMkU5RjAwMEQ4OEYwRSAvKiBERkdSZWdpc3RlcmVkU3Ry
dWN0dXJlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
OUZDOEEwNzFFMzJFOUYwMDBEODhGMEUgLyogREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCQzU0N0QzMUI2
OTU5QTEwMDk1OUI1OCAvKiBXYXNtRm9ybWF0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QkM1NDdEMjFCNjk1OTlCMDA5NTlCNTggLyogV2FzbUZvcm1h
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdD
MDA4Q0RBMTg3MTI0QkIwMDk1NUMyNCAvKiBKU1Byb21pc2VEZWZlcnJlZC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzAwOENEODE4NzEyNEJCMDA5
NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQuY3BwICovOyB9OwogCQk3QzAwOENEQjE4NzEyNEJC
MDA5NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMDA4Q0Q5MTg3MTI0QkIwMDk1NUMyNCAvKiBKU1Byb21p
c2VEZWZlcnJlZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0yOTc3LDggKzI5NzgsNiBAQAogCQkwRjc2NkQzNzE1QUU0QTFBMDA4RjM2M0UgLyog
U3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGNzcwMDhFMTQwMkZERDYwMDc4RUIzOSAvKiBTYW1wbGluZ0Nv
dW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2FtcGxpbmdDb3VudGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzcwMDkxMTQwMkZGMjgwMDc4RUIz
OSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2FtcGxpbmdDb3VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MEY3OTA4NTMxOUEyOTBCMjAwRjYzMTBDIC8qIERGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1N0cnVjdHVyZVJl
Z2lzdHJhdGlvblBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGNzkwODU0MTlBMjkwQjIw
MEY2MzEwQyAvKiBERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5oOyBwYXRo
ID0gZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGN0MzOUZBMUM4RjYyOTMwMDQ4MDE1MSAvKiBSZWdFeHBJbmxpbmVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cElubGluZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3QzM5RkMxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4
cE9iamVjdElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhw
T2JqZWN0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjdDMzlGRTFD
OTBDNTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IERGR09wSW5mby5oOyBwYXRoID0gZGZnL0RGR09wSW5mby5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMzkxMSw2ICszOTEwLDggQEAKIAkJNzk2RkI0MzkxREZGOEMzRjAw
MzlDOTVEIC8qIEpTV2ViQXNzZW1ibHlIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEpTV2ViQXNzZW1ibHlIZWxwZXJzLmg7IHBhdGggPSBqcy9KU1dlYkFzc2VtYmx5
SGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3OTdFMDdBNzFCOEZDRkI5
MDA4NDAwQkEgLyogSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3OTdFMDdBODFCOEZDRkI5MDA4NDAwQkEgLyog
SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNzk4MEMxNkExRTNBOTQwRTAwQjcxNjE1IC8qIERGR1JlZ2lzdGVyZWRTdHJ1Y3R1
cmVTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHUmVnaXN0
ZXJlZFN0cnVjdHVyZVNldC5jcHA7IHBhdGggPSBkZmcvREZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNl
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc5ODBDMTZCMUUzQTk0MEUwMEI3
MTYxNSAvKiBERkdSZWdpc3RlcmVkU3RydWN0dXJlU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IERGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQuaDsgcGF0aCA9IGRmZy9ERkdS
ZWdpc3RlcmVkU3RydWN0dXJlU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc5
ODkzNzc2MURDQUI1NzMwMEY4RDRGQiAvKiBKU0ZpeGVkQXJyYXkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGaXhlZEFycmF5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzk4OTM3NzcxRENBQjU3MzAwRjhENEZCIC8qIEpTRml4ZWRBcnJheS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ZpeGVkQXJyYXkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzk5RUY3QzMxQzU2RUQ5NjAwMkIwNTM0IC8qIEIzUENU
b09yaWdpbk1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1BDVG9Pcmln
aW5NYXAuaDsgcGF0aCA9IGIzL0IzUENUb09yaWdpbk1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMzk0MSw2ICszOTQyLDcgQEAKIAkJNzlFRTBCRkUxQjRBRkI4NTAwMDM4NUM5
IC8qIFZhcmlhYmxlRW52aXJvbm1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVmFyaWFibGVFbnZpcm9ubWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
OUY4RkMxQzFCOUZFRDBGMDBDQTY2QUIgLyogREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHTWF4aW1hbEZsdXNo
SW5zZXJ0aW9uUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBo
YXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzlGOEZDMUQxQjlGRUQwRjAw
Q0E2NkFCIC8qIERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmg7IHBhdGgg
PSBkZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNzlGQzhBMDcxRTMyRTlGMDAwRDg4RjBFIC8qIERGR1JlZ2lzdGVyZWRTdHJ1
Y3R1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHUmVnaXN0ZXJlZFN0
cnVjdHVyZS5oOyBwYXRoID0gZGZnL0RGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JDNTQ3RDIxQjY5NTk5QjAwOTU5QjU4IC8qIFdhc21Gb3Jt
YXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbUZvcm1hdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzAwOENEODE4NzEyNEJCMDA5NTVDMjQgLyogSlNQ
cm9taXNlRGVmZXJyZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNQcm9taXNlRGVmZXJyZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzAw
OENEOTE4NzEyNEJCMDA5NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9taXNlRGVmZXJyZWQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTcwOTEsNiArNzA5Myw5IEBACiAJCQkJMEZCMTc2NUYxOTZCOEY5RTAw
OTEwNTJBIC8qIERGR1B1cmVWYWx1ZS5oICovLAogCQkJCTBGM0ExQkY3MUE5RUNCN0QwMDBERTAx
QSAvKiBERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAgKi8sCiAJCQkJMEYzQTFCRjgxQTlFQ0I3
RDAwMERFMDFBIC8qIERGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmggKi8sCisJCQkJNzlGQzhBMDcx
RTMyRTlGMDAwRDg4RjBFIC8qIERGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaCAqLywKKwkJCQk3OTgw
QzE2QTFFM0E5NDBFMDBCNzE2MTUgLyogREZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNldC5jcHAgKi8s
CisJCQkJNzk4MEMxNkIxRTNBOTQwRTAwQjcxNjE1IC8qIERGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmVT
ZXQuaCAqLywKIAkJCQk4NkVDOURDMTEzMjhERjgyMDAyQjJBRDcgLyogREZHUmVnaXN0ZXJCYW5r
LmggKi8sCiAJCQkJMEYyRkNDRjQxOEE2MDA3MDAwMUEyN0Y4IC8qIERGR1NhZmVwb2ludC5jcHAg
Ki8sCiAJCQkJMEYyRkNDRjUxOEE2MDA3MDAwMUEyN0Y4IC8qIERGR1NhZmVwb2ludC5oICovLApA
QCAtNzEyMyw4ICs3MTI4LDYgQEAKIAkJCQkwRjg5M0JEQTE5MzZFMjNDMDAxMjExRjQgLyogREZH
U3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5jcHAgKi8sCiAJCQkJMEY2Mzk0NzYxNURDRTM0NzAwNkE1
OTdDIC8qIERGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaCAqLywKIAkJCQkwRjUwQUYzQjE5M0U4
QjM5MDA2NzRFRTggLyogREZHU3RydWN0dXJlQ2xvYmJlclN0YXRlLmggKi8sCi0JCQkJMEY3OTA4
NTMxOUEyOTBCMjAwRjYzMTBDIC8qIERGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcCAq
LywKLQkJCQkwRjc5MDg1NDE5QTI5MEIyMDBGNjMxMEMgLyogREZHU3RydWN0dXJlUmVnaXN0cmF0
aW9uUGhhc2UuaCAqLywKIAkJCQkwRjJGQ0NGNzE4QTYwMDcwMDAxQTI3RjggLyogREZHVGhyZWFk
RGF0YS5jcHAgKi8sCiAJCQkJMEYyRkNDRjgxOEE2MDA3MDAwMUEyN0Y4IC8qIERGR1RocmVhZERh
dGEuaCAqLywKIAkJCQkwRkMwOTc5RjE0NkIyOEM3MDBDRjI0NDIgLyogREZHVGh1bmtzLmNwcCAq
LywKQEAgLTgwNzYsNiArODA3OSw3IEBACiAJCQkJMEYyMUMyN0QxNEJFNzI3QTAwQURDNjRCIC8q
IENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0E3MTRC
Q0Y1MDcwMDg4NUI0RiAvKiBDb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNzYyMDUx
REI5MjQyOTAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NzlGQzhBMDgxRTMyRTlGMDAwRDg4RjBFIC8qIERGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1MzI0Mzk4MTg1NkE0ODkwMDJFRDY5MiAvKiBDb21iaW5lZERvbWFp
bnMuanNvbiBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0YzMEUxNkY1Q0QwMEIzNDQ2MCAvKiBD
b21tb25JZGVudGlmaWVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxNUYxNUYxNEI3QTczRTAw
NURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MjkxLDcgKzgy
OTUsNiBAQAogCQkJCTBGQzIwQ0I2MTg1MkUyQzYwMEM5RTk1NCAvKiBERkdTdHJlbmd0aFJlZHVj
dGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYzOTQ3ODE1RENFMzRCMDA2QTU5N0Mg
LyogREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1MEFG
M0MxOTNFOEIzOTAwNjc0RUU4IC8qIERGR1N0cnVjdHVyZUNsb2JiZXJTdGF0ZS5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJMEY3OTA4NTYxOUEyOTBCMjAwRjYzMTBDIC8qIERGR1N0cnVjdHVyZVJlZ2lz
dHJhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJGQ0NGRjE4QTYwMDcwMDAxQTI3
RjggLyogREZHVGhyZWFkRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3QTIxNDZCMjhD
QzAwQ0YyNDQyIC8qIERGR1RodW5rcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEzMjgxN0Q1
MUY1NzAwQ0EyQzQwIC8qIERGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuaCBpbiBIZWFkZXJz
ICovLApAQCAtODY3OSw2ICs4NjgyLDcgQEAKIAkJCQlBNTBFNEI2NDE4ODA5REQ1MDA2OEE0NkQg
LyogSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MDNG
QTJBMTg4RjEwNTkwMDExMEYxNCAvKiBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNTEzRTVDMDE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3Rl
ZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTc5ODBDMTZEMUUzQTk0MEUwMEI3MTYx
NSAvKiBERkdSZWdpc3RlcmVkU3RydWN0dXJlU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTEz
RTVDMjE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUM0NDJDQjI1MUE2Q0RCOEMwMDVEM0Q3QyAvKiBKU0lucHV0cy5q
c29uIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RjgxN0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50
MTZBcnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC05OTk3LDcgKzEwMDAxLDYgQEAKIAkJCQkwRkMy
MENCNTE4NTJFMkM2MDBDOUU5NTQgLyogREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjdERjEzQjFFMjk3MTExMDA5NTk1MUIgLyogSlNEZXN0cnVjdGli
bGVPYmplY3RTdWJzcGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjg5M0JEQjE5MzZFMjND
MDAxMjExRjQgLyogREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQkwRjc5MDg1NTE5QTI5MEIyMDBGNjMxMEMgLyogREZHU3RydWN0dXJlUmVnaXN0cmF0aW9u
UGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyRkNDRkUxOEE2MDA3MDAwMUEyN0Y4IC8q
IERGR1RocmVhZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDMDk3QTExNDZCMjhDQTAw
Q0YyNDQyIC8qIERGR1RodW5rcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4QTMyNzE3RDUx
RjU3MDBDQTJDNDAgLyogREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTEwMDM5LDYgKzEwMDQyLDcgQEAKIAkJCQkxNEFEOTExNzFEQ0E5N0ZEMDAxNEY5
RkUgLyogRXZhbENvZGVCbG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDczNDFFMjFEQzJD
RTk2MDBBQTI5QkEgLyogRXZhbEV4ZWN1dGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU0
OTgyMDMxODkxRDBCMDAwODFFNUI4IC8qIEV2ZW50TG9vcC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk3OTgwQzE2QzFFM0E5NDBFMDBCNzE2MTUgLyogREZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNldC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTFDMEZGRjFCMTk0RkQxMDBCNTNGQ0EgLyogRXhjZXB0
aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFODBDMTlCMUQ3NzZBOTgwMDg1MTBDMCAvKiBF
eGNlcHRpb25FdmVudExvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMTJERTBGMTk3
OUQ1RkQwMDA2RkY0RSAvKiBFeGNlcHRpb25GdXp6LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9u
IDIxMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNzI1LDYgKzI3MjUsNyBAQCB2b2lkIENvZGVCbG9jazo6ZGV0
ZXJtaW5lTGl2ZW5lc3MoY29uc3QgCiAgICAgLy8gR0Mgd2Ugc3RpbGwgaGF2ZSBub3QgcHJvdmVk
IGxpdmVuZXNzLCB0aGVuIHRoaXMgY29kZSBibG9jayBpcyB0b2FzdC4KICAgICBib29sIGFsbEFy
ZUxpdmVTb0ZhciA9IHRydWU7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRmZ0NvbW1v
bi0+d2Vha1JlZmVyZW5jZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgQVNTRVJUKCFqc0R5bmFt
aWNDYXN0PENvZGVCbG9jayo+KGRmZ0NvbW1vbi0+d2Vha1JlZmVyZW5jZXNbaV0uZ2V0KCkpKTsK
ICAgICAgICAgaWYgKCFIZWFwOjppc01hcmtlZENvbmN1cnJlbnRseShkZmdDb21tb24tPndlYWtS
ZWZlcmVuY2VzW2ldLmdldCgpKSkgewogICAgICAgICAgICAgYWxsQXJlTGl2ZVNvRmFyID0gZmFs
c2U7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuY3BwCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjYsNjQgKzI2LDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3RydWN0
dXJlU2V0LmgiCiAKLSNpbmNsdWRlICJERkdBYnN0cmFjdFZhbHVlLmgiCiAjaW5jbHVkZSAiVHJh
Y2tlZFJlZmVyZW5jZXMuaCIKICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewogCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLXZvaWQgU3RydWN0dXJlU2V0Ojpm
aWx0ZXIoY29uc3QgREZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcikKLXsKLSAgICBn
ZW5lcmljRmlsdGVyKFsmXSAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIC0+IGJvb2wgeyByZXR1cm4g
b3RoZXIuY29udGFpbnMoc3RydWN0dXJlKTsgfSk7Ci19Ci0KLXZvaWQgU3RydWN0dXJlU2V0Ojpm
aWx0ZXIoU3BlY3VsYXRlZFR5cGUgdHlwZSkKLXsKLSAgICBnZW5lcmljRmlsdGVyKAotICAgICAg
ICBbJl0gKFN0cnVjdHVyZSogc3RydWN0dXJlKSAtPiBib29sIHsKLSAgICAgICAgICAgIHJldHVy
biB0eXBlICYgc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKHN0cnVjdHVyZSk7Ci0gICAgICAgIH0p
OwotfQotCi12b2lkIFN0cnVjdHVyZVNldDo6ZmlsdGVyQXJyYXlNb2RlcyhBcnJheU1vZGVzIGFy
cmF5TW9kZXMpCi17Ci0gICAgZ2VuZXJpY0ZpbHRlcigKLSAgICAgICAgWyZdIChTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkgLT4gYm9vbCB7Ci0gICAgICAgICAgICByZXR1cm4gYXJyYXlNb2RlcyAmIGFy
cmF5TW9kZUZyb21TdHJ1Y3R1cmUoc3RydWN0dXJlKTsKLSAgICAgICAgfSk7Ci19Ci0KLXZvaWQg
U3RydWN0dXJlU2V0OjpmaWx0ZXIoY29uc3QgREZHOjpBYnN0cmFjdFZhbHVlJiBvdGhlcikKLXsK
LSAgICBmaWx0ZXIob3RoZXIubV9zdHJ1Y3R1cmUpOwotICAgIGZpbHRlcihvdGhlci5tX3R5cGUp
OwotICAgIGZpbHRlckFycmF5TW9kZXMob3RoZXIubV9hcnJheU1vZGVzKTsKLX0KLQotI2VuZGlm
IC8vIEVOQUJMRShERkdfSklUKQotCi1TcGVjdWxhdGVkVHlwZSBTdHJ1Y3R1cmVTZXQ6OnNwZWN1
bGF0aW9uRnJvbVN0cnVjdHVyZXMoKSBjb25zdAotewotICAgIFNwZWN1bGF0ZWRUeXBlIHJlc3Vs
dCA9IFNwZWNOb25lOwotICAgIGZvckVhY2goCi0gICAgICAgIFsmXSAoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpIHsKLSAgICAgICAgICAgIG1lcmdlU3BlY3VsYXRpb24ocmVzdWx0LCBzcGVjdWxhdGlv
bkZyb21TdHJ1Y3R1cmUoc3RydWN0dXJlKSk7Ci0gICAgICAgIH0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLUFycmF5TW9kZXMgU3RydWN0dXJlU2V0OjphcnJheU1vZGVzRnJvbVN0cnVjdHVy
ZXMoKSBjb25zdAotewotICAgIEFycmF5TW9kZXMgcmVzdWx0ID0gMDsKLSAgICBmb3JFYWNoKAot
ICAgICAgICBbJl0gKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7Ci0gICAgICAgICAgICBtZXJnZUFy
cmF5TW9kZXMocmVzdWx0LCBhc0FycmF5TW9kZXMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkp
OwotICAgICAgICB9KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiB2b2lkIFN0cnVjdHVyZVNl
dDo6ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkg
Y29uc3QKIHsKICAgICBDb21tYVByaW50ZXIgY29tbWE7CkBAIC05NywxMyArNDQsNSBAQCB2b2lk
IFN0cnVjdHVyZVNldDo6ZHVtcChQcmludFN0cmVhbSYgb3V0CiAgICAgZHVtcEluQ29udGV4dChv
dXQsIG51bGxwdHIpOwogfQogCi12b2lkIFN0cnVjdHVyZVNldDo6dmFsaWRhdGVSZWZlcmVuY2Vz
KGNvbnN0IFRyYWNrZWRSZWZlcmVuY2VzJiB0cmFja2VkUmVmZXJlbmNlcykgY29uc3QKLXsKLSAg
ICBmb3JFYWNoKAotICAgICAgICBbJl0gKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7Ci0gICAgICAg
ICAgICB0cmFja2VkUmVmZXJlbmNlcy5jaGVjayhzdHJ1Y3R1cmUpOwotICAgICAgICB9KTsKLX0K
LQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU2V0LmgJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUs
MTEgKzM1LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIFRyYWNrZWRSZWZlcmVuY2VzOwog
Ci1uYW1lc3BhY2UgREZHIHsKLWNsYXNzIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU7Ci1zdHJ1Y3Qg
QWJzdHJhY3RWYWx1ZTsKLX0KLQogY2xhc3MgU3RydWN0dXJlU2V0IDogcHVibGljIFRpbnlQdHJT
ZXQ8U3RydWN0dXJlKj4gewogcHVibGljOgogICAgIC8vIEkgcmVhbGx5IHdhbnQgdG8gZG8gdGhp
czoKQEAgLTY2LDIwICs2MSw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG9ubHlFbnRyeSgp
OwogICAgIH0KICAgICAKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICB2b2lkIGZpbHRlcihjb25z
dCBERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWUmKTsKLSAgICB2b2lkIGZpbHRlcihTcGVjdWxh
dGVkVHlwZSk7Ci0gICAgdm9pZCBmaWx0ZXJBcnJheU1vZGVzKEFycmF5TW9kZXMpOwotICAgIHZv
aWQgZmlsdGVyKGNvbnN0IERGRzo6QWJzdHJhY3RWYWx1ZSYpOwotI2VuZGlmIC8vIEVOQUJMRShE
RkdfSklUKQotICAgIAotICAgIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbVN0cnVjdHVy
ZXMoKSBjb25zdDsKLSAgICBBcnJheU1vZGVzIGFycmF5TW9kZXNGcm9tU3RydWN0dXJlcygpIGNv
bnN0OwotICAgIAogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250
ZXh0KikgY29uc3Q7CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7Ci0gICAgCi0g
ICAgdm9pZCB2YWxpZGF0ZVJlZmVyZW5jZXMoY29uc3QgVHJhY2tlZFJlZmVyZW5jZXMmKSBjb25z
dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgJKHJldmlzaW9uIDIxMTIyOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogICAgIHZvaWQgZHVtcChQ
cmludFN0cmVhbSYgb3V0KTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIEZp
bHRyYXRpb25SZXN1bHQgZmlsdGVyKFQgbm9kZSwgY29uc3QgU3RydWN0dXJlU2V0JiBzZXQsIFNw
ZWN1bGF0ZWRUeXBlIGFkbWl0dGVkVHlwZXMgPSBTcGVjTm9uZSkKKyAgICBGaWx0cmF0aW9uUmVz
dWx0IGZpbHRlcihUIG5vZGUsIGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIHNldCwgU3Bl
Y3VsYXRlZFR5cGUgYWRtaXR0ZWRUeXBlcyA9IFNwZWNOb25lKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGZpbHRlcihmb3JOb2RlKG5vZGUpLCBzZXQsIGFkbWl0dGVkVHlwZXMpOwogICAgIH0KQEAg
LTE0MSw3ICsxNDEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBmaWx0ZXJDbGFzc0luZm8o
Zm9yTm9kZShub2RlKSwgY2xhc3NJbmZvKTsKICAgICB9CiAKLSAgICBGaWx0cmF0aW9uUmVzdWx0
IGZpbHRlcihBYnN0cmFjdFZhbHVlJiwgY29uc3QgU3RydWN0dXJlU2V0JiwgU3BlY3VsYXRlZFR5
cGUgYWRtaXR0ZWRUeXBlcyA9IFNwZWNOb25lKTsKKyAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRl
cihBYnN0cmFjdFZhbHVlJiwgY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYsIFNwZWN1bGF0
ZWRUeXBlIGFkbWl0dGVkVHlwZXMgPSBTcGVjTm9uZSk7CiAgICAgRmlsdHJhdGlvblJlc3VsdCBm
aWx0ZXJBcnJheU1vZGVzKEFic3RyYWN0VmFsdWUmLCBBcnJheU1vZGVzKTsKICAgICBGaWx0cmF0
aW9uUmVzdWx0IGZpbHRlcihBYnN0cmFjdFZhbHVlJiwgU3BlY3VsYXRlZFR5cGUpOwogICAgIEZp
bHRyYXRpb25SZXN1bHQgZmlsdGVyQnlWYWx1ZShBYnN0cmFjdFZhbHVlJiwgRnJvemVuVmFsdWUp
OwpAQCAtMTU2LDcgKzE1Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmb3JBbGxWYWx1ZXModW5z
aWduZWQgaW5kZXhJbkJsb2NrLCBGdW5jdG9yJik7CiAgICAgCiAgICAgdm9pZCBjbG9iYmVyU3Ry
dWN0dXJlcyh1bnNpZ25lZCBpbmRleEluQmxvY2spOwotICAgIHZvaWQgb2JzZXJ2ZVRyYW5zaXRp
b24odW5zaWduZWQgaW5kZXhJbkJsb2NrLCBTdHJ1Y3R1cmUqIGZyb20sIFN0cnVjdHVyZSogdG8p
OworICAgIHZvaWQgb2JzZXJ2ZVRyYW5zaXRpb24odW5zaWduZWQgaW5kZXhJbkJsb2NrLCBSZWdp
c3RlcmVkU3RydWN0dXJlIGZyb20sIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgdG8pOwogICAgIHZvaWQg
b2JzZXJ2ZVRyYW5zaXRpb25zKHVuc2lnbmVkIGluZGV4SW5CbG9jaywgY29uc3QgVHJhbnNpdGlv
blZlY3RvciYpOwogICAgIHZvaWQgc2V0RGlkQ2xvYmJlcigpOwogICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaAkocmV2aXNpb24gMjExMjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3
ICs3Myw3IEBAIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjoKICAgICBp
ZiAoaXNDZWxsU3BlY3VsYXRpb24odmFsdWUubV90eXBlKSAmJiAhdmFsdWUubV9zdHJ1Y3R1cmUu
aXNUb3AoKSkgewogICAgICAgICBib29sIGFsbFRydWUgPSB0cnVlOwogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSB2YWx1ZS5tX3N0cnVjdHVyZS5zaXplKCk7IGktLTspIHsKLSAgICAgICAgICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gdmFsdWUubV9zdHJ1Y3R1cmVbaV07CisgICAgICAgICAg
ICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IHZhbHVlLm1fc3RydWN0dXJlW2ldOwog
ICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChtX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpCiAgICAgICAgICAg
ICAgICAgfHwgc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBTdHJpbmdUeXBlKSB7CiAg
ICAgICAgICAgICAgICAgYWxsVHJ1ZSA9IGZhbHNlOwpAQCAtMTUyLDcgKzE1Miw3IEBAIGlubGlu
ZSBib29sIGlzVG9UaGlzQW5JZGVudGl0eShib29sIGlzU3QKIAogICAgIGlmICgoaXNTdHJpY3RN
b2RlIHx8ICh2YWx1ZUZvck5vZGUubV90eXBlICYmICEodmFsdWVGb3JOb2RlLm1fdHlwZSAmIH5T
cGVjT2JqZWN0KSkpICYmIHZhbHVlRm9yTm9kZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKSB7CiAg
ICAgICAgIGJvb2wgb3ZlcnJpZGVzVG9UaGlzID0gZmFsc2U7Ci0gICAgICAgIHZhbHVlRm9yTm9k
ZS5tX3N0cnVjdHVyZS5mb3JFYWNoKFsmXShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgeworICAgICAg
ICB2YWx1ZUZvck5vZGUubV9zdHJ1Y3R1cmUuZm9yRWFjaChbJl0oUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBzdHJ1Y3R1cmUpIHsKICAgICAgICAgICAgIFR5cGVJbmZvIHR5cGUgPSBzdHJ1Y3R1cmUtPnR5
cGVJbmZvKCk7CiAgICAgICAgICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpIHx8IHR5cGUudHlw
ZSgpID09IFN0cmluZ1R5cGUgfHwgdHlwZS50eXBlKCkgPT0gU3ltYm9sVHlwZSk7CiAgICAgICAg
ICAgICBpZiAoIWlzU3RyaWN0TW9kZSkKQEAgLTE2NTYsMTAgKzE2NTYsMTAgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogCiAgICAgICAgIC8vIEZJWE1FOiBXZSBj
b3VsZCBkbyBiZXR0ZXIgaGVyZSBpZiB3ZSBwcm92ZSB0aGF0IHRoZQogICAgICAgICAvLyBpbmNv
bWluZyB2YWx1ZSBoYXMgb25seSBhIHNpbmdsZSBzdHJ1Y3R1cmUuCi0gICAgICAgIFN0cnVjdHVy
ZVNldCBzdHJ1Y3R1cmVTZXQ7Ci0gICAgICAgIHN0cnVjdHVyZVNldC5hZGQoZ2xvYmFsT2JqZWN0
LT5vcmlnaW5hbEFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlKEFycmF5V2l0aEludDMyKSk7
Ci0gICAgICAgIHN0cnVjdHVyZVNldC5hZGQoZ2xvYmFsT2JqZWN0LT5vcmlnaW5hbEFycmF5U3Ry
dWN0dXJlRm9ySW5kZXhpbmdUeXBlKEFycmF5V2l0aENvbnRpZ3VvdXMpKTsKLSAgICAgICAgc3Ry
dWN0dXJlU2V0LmFkZChnbG9iYWxPYmplY3QtPm9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVGb3JJbmRl
eGluZ1R5cGUoQXJyYXlXaXRoRG91YmxlKSk7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVT
ZXQgc3RydWN0dXJlU2V0OworICAgICAgICBzdHJ1Y3R1cmVTZXQuYWRkKG1fZ3JhcGgucmVnaXN0
ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5vcmlnaW5hbEFycmF5U3RydWN0dXJlRm9ySW5kZXhp
bmdUeXBlKEFycmF5V2l0aEludDMyKSkpOworICAgICAgICBzdHJ1Y3R1cmVTZXQuYWRkKG1fZ3Jh
cGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5vcmlnaW5hbEFycmF5U3RydWN0dXJl
Rm9ySW5kZXhpbmdUeXBlKEFycmF5V2l0aENvbnRpZ3VvdXMpKSk7CisgICAgICAgIHN0cnVjdHVy
ZVNldC5hZGQobV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm9yaWdpbmFs
QXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGUoQXJyYXlXaXRoRG91YmxlKSkpOwogCiAgICAg
ICAgIGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIHN0cnVjdHVyZVNldCk7CiAgICAgICAgIGJy
ZWFrOwpAQCAtMTg1Niw3ICsxODU2LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeQogICAgICAgICAgICAgLy8gc3RydWN0dXJlLgogICAgICAgICAgICAgZmlsdGVy
KAogICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkMSgpLAotICAgICAgICAgICAgICAgIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnN0cmluZ09iamVjdFN0
cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnN0cmluZ09iamVj
dFN0cnVjdHVyZSgpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTdHJpbmdP
clN0cmluZ09iamVjdFVzZToKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTk2Myw3ICsxOTYzLDcg
QEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgIH0KICAgICAg
ICAgCiAgICAgY2FzZSBOZXdPYmplY3Q6Ci0gICAgICAgIEFTU0VSVChub2RlLT5zdHJ1Y3R1cmUo
KSk7CisgICAgICAgIEFTU0VSVCghIW5vZGUtPnN0cnVjdHVyZSgpLmdldCgpKTsKICAgICAgICAg
Zm9yTm9kZShub2RlKS5zZXQobV9ncmFwaCwgbm9kZS0+c3RydWN0dXJlKCkpOwogICAgICAgICBi
cmVhazsKIApAQCAtMjEyMSw3ICsyMTIxLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG51bGxwdHI7CiAgICAgICAgICAgICBib29sIG9rID0gdHJ1ZTsKICAgICAgICAgICAgIGZvck5v
ZGUobm9kZS0+Y2hpbGQxKCkpLm1fc3RydWN0dXJlLmZvckVhY2goCi0gICAgICAgICAgICAgICAg
WyZdIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgeworICAgICAgICAgICAgICAgIFsmXSAoUmVnaXN0
ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFnbG9i
YWxPYmplY3QpCiAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxPYmplY3QgPSBzdHJ1Y3R1
cmUtPmdsb2JhbE9iamVjdCgpOwogICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChnbG9iYWxP
YmplY3QgIT0gc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSkKQEAgLTIxODQsNyArMjE4NCw3IEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgaWYgKHZh
bHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkKICAgICAgICAgICAgICYmIChub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gQ2VsbFVzZSB8fCAhKHZhbHVlLm1fdHlwZSAmIH5TcGVjQ2VsbCkpKSB7
CiAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVy
cygpW25vZGUtPmlkZW50aWZpZXJOdW1iZXIoKV07Ci0gICAgICAgICAgICBHZXRCeUlkU3RhdHVz
IHN0YXR1cyA9IEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IodmFsdWUubV9zdHJ1Y3R1cmUuc2V0
KCksIHVpZCk7CisgICAgICAgICAgICBHZXRCeUlkU3RhdHVzIHN0YXR1cyA9IEdldEJ5SWRTdGF0
dXM6OmNvbXB1dGVGb3IodmFsdWUubV9zdHJ1Y3R1cmUudG9TdHJ1Y3R1cmVTZXQoKSwgdWlkKTsK
ICAgICAgICAgICAgIGlmIChzdGF0dXMuaXNTaW1wbGUoKSkgewogICAgICAgICAgICAgICAgIC8v
IEZpZ3VyZSBvdXQgd2hhdCB0aGUgcmVzdWx0IGlzIGdvaW5nIHRvIGJlIC0gaXMgaXQgVE9QLCBh
IGNvbnN0YW50LCBvciBtYXliZQogICAgICAgICAgICAgICAgIC8vIHNvbWV0aGluZyBtb3JlIHN1
YnRsZT8KQEAgLTIyMzgsNyArMjIzOCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHkKICAgICBjYXNlIENoZWNrU3RydWN0dXJlOiB7CiAgICAgICAgIEFic3RyYWN0
VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CiAKLSAgICAgICAgU3RydWN0
dXJlU2V0JiBzZXQgPSBub2RlLT5zdHJ1Y3R1cmVTZXQoKTsKKyAgICAgICAgY29uc3QgUmVnaXN0
ZXJlZFN0cnVjdHVyZVNldCYgc2V0ID0gbm9kZS0+c3RydWN0dXJlU2V0KCk7CiAgICAgICAgIAog
ICAgICAgICAvLyBJdCdzIGludGVyZXN0aW5nIHRoYXQgd2UgY291bGQgaGF2ZSBwcm92ZW4gdGhh
dCB0aGUgb2JqZWN0IGhhcyBhIGxhcmdlciBzdHJ1Y3R1cmUgc2V0CiAgICAgICAgIC8vIHRoYXQg
aW5jbHVkZXMgdGhlIHNldCB3ZSdyZSB0ZXN0aW5nLiBJbiB0aGF0IGNhc2Ugd2UgY291bGQgbWFr
ZSB0aGUgc3RydWN0dXJlIGNoZWNrCkBAIC0yMjcwLDExICsyMjcwLDExIEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjk4OAogICAgICAgICAKICAgICAgICAgQWJzdHJh
Y3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgU3RydWN0
dXJlU2V0JiBzZXQgPSBub2RlLT5zdHJ1Y3R1cmVTZXQoKTsKKyAgICAgICAgY29uc3QgUmVnaXN0
ZXJlZFN0cnVjdHVyZVNldCYgc2V0ID0gbm9kZS0+c3RydWN0dXJlU2V0KCk7CiAgICAgICAgIAog
ICAgICAgICBpZiAodmFsdWUudmFsdWUoKSkgewogICAgICAgICAgICAgaWYgKFN0cnVjdHVyZSog
c3RydWN0dXJlID0ganNEeW5hbWljQ2FzdDxTdHJ1Y3R1cmUqPih2YWx1ZS52YWx1ZSgpKSkgewot
ICAgICAgICAgICAgICAgIGlmIChzZXQuY29udGFpbnMoc3RydWN0dXJlKSkgeworICAgICAgICAg
ICAgICAgIGlmIChzZXQuY29udGFpbnMobV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1
cmUpKSkgewogICAgICAgICAgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRy
dWUpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CkBAIC0y
Mjg5LDcgKzIyODksNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
CiAgICAgICAgICAgICAgICAgbm9kZSwKICAgICAgICAgICAgICAgICBbJl0gKE5vZGUqIGluY29t
aW5nKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGlu
Y29taW5nLT5keW5hbWljQ2FzdENvbnN0YW50PFN0cnVjdHVyZSo+KCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChzZXQuY29udGFpbnMoc3RydWN0dXJlKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChzZXQuY29udGFpbnMobV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1
Y3R1cmUpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgYWxsR29vZCA9IGZhbHNlOwpAQCAtMjMw
MCw4ICsyMzAwLDggQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgaWYgKFN0cnVj
dHVyZSogc3RydWN0dXJlID0gc2V0Lm9ubHlTdHJ1Y3R1cmUoKSkgewotICAgICAgICAgICAgZmls
dGVyQnlWYWx1ZShub2RlLT5jaGlsZDEoKSwgKm1fZ3JhcGguZnJlZXplKHN0cnVjdHVyZSkpOwor
ICAgICAgICBpZiAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBzZXQub25seVN0cnVj
dHVyZSgpKSB7CisgICAgICAgICAgICBmaWx0ZXJCeVZhbHVlKG5vZGUtPmNoaWxkMSgpLCAqbV9n
cmFwaC5mcmVlemUoc3RydWN0dXJlLmdldCgpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICAKQEAgLTI0MzIsNyArMjQzMiw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICB9CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJl
OiB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEo
KSk7Ci0gICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc1N1YnNldE9mKFN0cnVjdHVyZVNl
dChub2RlLT5zdHJ1Y3R1cmUoKSkpKQorICAgICAgICBpZiAodmFsdWUubV9zdHJ1Y3R1cmUuaXNT
dWJzZXRPZihSZWdpc3RlcmVkU3RydWN0dXJlU2V0KG5vZGUtPnN0cnVjdHVyZSgpKSkpCiAgICAg
ICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRydWUpOwogICAgICAgICBjbG9iYmVy
U3RydWN0dXJlcyhjbG9iYmVyTGltaXQpOwogICAgICAgICAKQEAgLTI1NDYsMTAgKzI1NDYsMTAg
QEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW25vZGUtPm11bHRpR2V0
QnlPZmZzZXREYXRhKCkuaWRlbnRpZmllck51bWJlcl07CiAKICAgICAgICAgQWJzdHJhY3RWYWx1
ZSBiYXNlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIFN0cnVjdHVyZVNldCBi
YXNlU2V0OworICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0IGJhc2VTZXQ7CiAgICAgICAg
IEFic3RyYWN0VmFsdWUgcmVzdWx0OwogICAgICAgICBmb3IgKGNvbnN0IE11bHRpR2V0QnlPZmZz
ZXRDYXNlJiBnZXRDYXNlIDogbm9kZS0+bXVsdGlHZXRCeU9mZnNldERhdGEoKS5jYXNlcykgewot
ICAgICAgICAgICAgU3RydWN0dXJlU2V0IHNldCA9IGdldENhc2Uuc2V0KCk7CisgICAgICAgICAg
ICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0IHNldCA9IGdldENhc2Uuc2V0KCk7CiAgICAgICAgICAg
ICBzZXQuZmlsdGVyKGJhc2UpOwogICAgICAgICAgICAgaWYgKHNldC5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CkBAIC0yNTkxLDcgKzI1OTEsNyBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIE11
bHRpUHV0QnlPZmZzZXQ6IHsKLSAgICAgICAgU3RydWN0dXJlU2V0IG5ld1NldDsKKyAgICAgICAg
UmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBuZXdTZXQ7CiAgICAgICAgIFRyYW5zaXRpb25WZWN0b3Ig
dHJhbnNpdGlvbnM7CiAgICAgICAgIAogICAgICAgICAvLyBPcmRpbmFyaWx5IHlvdSBoYXZlIHRv
IGJlIGNhcmVmdWwgd2l0aCBjYWxsaW5nIHNldEZvdW5kQ29uc3RhbnRzKCkKQEAgLTI2MDQsNyAr
MjYwNCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAg
ICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG5vZGUtPm11bHRpUHV0QnlPZmZzZXREYXRh
KCkudmFyaWFudHMuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICBjb25zdCBQdXRCeUlkVmFy
aWFudCYgdmFyaWFudCA9IG5vZGUtPm11bHRpUHV0QnlPZmZzZXREYXRhKCkudmFyaWFudHNbaV07
Ci0gICAgICAgICAgICBTdHJ1Y3R1cmVTZXQgdGhpc1NldCA9IHZhcmlhbnQub2xkU3RydWN0dXJl
KCk7CisgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0IHRoaXNTZXQgPSAqbV9ncmFw
aC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSk7CiAgICAgICAgICAgICB0
aGlzU2V0LmZpbHRlcihiYXNlKTsKICAgICAgICAgICAgIGlmICh0aGlzU2V0LmlzRW1wdHkoKSkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTI2MTQsMTEgKzI2MTQsMTIgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgcmVzdWx0aW5n
VmFsdWUubWVyZ2UodGhpc1ZhbHVlKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKHZh
cmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHRoaXNTZXQub25seVN0cnVjdHVyZSgpICE9IHZhcmlhbnQubmV3U3RydWN0dXJl
KCkpIHsKKyAgICAgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG5ld1N0cnVjdHVyZSA9
IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7CisgICAg
ICAgICAgICAgICAgaWYgKHRoaXNTZXQub25seVN0cnVjdHVyZSgpICE9IG5ld1N0cnVjdHVyZSkg
ewogICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9ucy5hcHBlbmQoCi0gICAgICAgICAgICAg
ICAgICAgICAgICBUcmFuc2l0aW9uKHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigp
LCB2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBUcmFu
c2l0aW9uKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JU
cmFuc2l0aW9uKCkpLCBuZXdTdHJ1Y3R1cmUpKTsKICAgICAgICAgICAgICAgICB9IC8vIGVsc2Ug
dGhpcyBpcyByZWFsbHkgYSByZXBsYWNlLgotICAgICAgICAgICAgICAgIG5ld1NldC5hZGQodmFy
aWFudC5uZXdTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICAgICAgbmV3U2V0LmFkZChuZXdTdHJ1
Y3R1cmUpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBBU1NFUlQodmFy
aWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlJlcGxhY2UpOwogICAgICAgICAgICAgICAg
IG5ld1NldC5tZXJnZSh0aGlzU2V0KTsKQEAgLTI3MDUsMjUgKzI3MDYsMjUgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBpZiAodmFsdWUubV9zdHJ1
Y3R1cmUuaXNGaW5pdGUoKSkgewogICAgICAgICAgICAgUHV0QnlJZFN0YXR1cyBzdGF0dXMgPSBQ
dXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgdmFsdWUu
bV9zdHJ1Y3R1cmUuc2V0KCksCisgICAgICAgICAgICAgICAgdmFsdWUubV9zdHJ1Y3R1cmUudG9T
dHJ1Y3R1cmVTZXQoKSwKICAgICAgICAgICAgICAgICBtX2dyYXBoLmlkZW50aWZpZXJzKClbbm9k
ZS0+aWRlbnRpZmllck51bWJlcigpXSwKICAgICAgICAgICAgICAgICBub2RlLT5vcCgpID09IFB1
dEJ5SWREaXJlY3QpOwogCiAgICAgICAgICAgICBpZiAoc3RhdHVzLmlzU2ltcGxlKCkpIHsKLSAg
ICAgICAgICAgICAgICBTdHJ1Y3R1cmVTZXQgbmV3U2V0OworICAgICAgICAgICAgICAgIFJlZ2lz
dGVyZWRTdHJ1Y3R1cmVTZXQgbmV3U2V0OwogICAgICAgICAgICAgICAgIFRyYW5zaXRpb25WZWN0
b3IgdHJhbnNpdGlvbnM7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gc3RhdHVzLm51bVZhcmlhbnRzKCk7IGktLTspIHsKICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQgPSBzdGF0dXNbaV07CiAgICAgICAg
ICAgICAgICAgICAgIGlmICh2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6VHJhbnNp
dGlvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBuZXdT
dHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQubmV3U3RydWN0dXJl
KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbnMuYXBwZW5kKAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLCB2YXJpYW50Lm5l
d1N0cnVjdHVyZSgpKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVy
U3RydWN0dXJlKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgbmV3U2V0LmFkZCh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0cnVj
dHVyZUZvclRyYW5zaXRpb24oKSksIG5ld1N0cnVjdHVyZSkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgbmV3U2V0LmFkZChuZXdTdHJ1Y3R1cmUpOwogICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQua2luZCgpID09IFB1
dEJ5SWRWYXJpYW50OjpSZXBsYWNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NldC5t
ZXJnZSh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5l
d1NldC5tZXJnZSgqbV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5vbGRTdHJ1Y3R1cmUo
KSkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIApAQCAtMzA1OSw3ICszMDYwLDcgQEAgdm9pZCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBYnN0cmFjdFN0YXRlVHlwZT4KIHZv
aWQgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46Om9ic2VydmVUcmFuc2l0
aW9uKAotICAgIHVuc2lnbmVkIGNsb2JiZXJMaW1pdCwgU3RydWN0dXJlKiBmcm9tLCBTdHJ1Y3R1
cmUqIHRvKQorICAgIHVuc2lnbmVkIGNsb2JiZXJMaW1pdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBm
cm9tLCBSZWdpc3RlcmVkU3RydWN0dXJlIHRvKQogewogICAgIEFic3RyYWN0VmFsdWU6OlRyYW5z
aXRpb25PYnNlcnZlciB0cmFuc2l0aW9uT2JzZXJ2ZXIoZnJvbSwgdG8pOwogICAgIGZvckFsbFZh
bHVlcyhjbG9iYmVyTGltaXQsIHRyYW5zaXRpb25PYnNlcnZlcik7CkBAIC0zMTMyLDcgKzMxMzMs
NyBAQCB2b2lkIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIEFic3RyYWN0U3RhdGVUeXBlPgogRmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZmlsdGVyKAotICAgIEFic3RyYWN0VmFsdWUm
IHZhbHVlLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCwgU3BlY3VsYXRlZFR5cGUgYWRtaXR0ZWRU
eXBlcykKKyAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSwgY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVy
ZVNldCYgc2V0LCBTcGVjdWxhdGVkVHlwZSBhZG1pdHRlZFR5cGVzKQogewogICAgIGlmICh2YWx1
ZS5maWx0ZXIobV9ncmFwaCwgc2V0LCBhZG1pdHRlZFR5cGVzKSA9PSBGaWx0cmF0aW9uT0spCiAg
ICAgICAgIHJldHVybiBGaWx0cmF0aW9uT0s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUyLDggKzUyLDEwIEBAIHZvaWQgQWJzdHJhY3RWYWx1ZTo6c2V0KEdyYXBoJiBncmFwaCwg
Y28KIHsKICAgICBpZiAoISF2YWx1ZSAmJiB2YWx1ZS52YWx1ZSgpLmlzQ2VsbCgpKSB7CiAgICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdmFsdWUuc3RydWN0dXJlKCk7Ci0gICAgICAgIGlm
IChncmFwaC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpID09IFN0cnVjdHVyZVJlZ2lzdGVy
ZWRBbmRXYXRjaGVkKSB7Ci0gICAgICAgICAgICBtX3N0cnVjdHVyZSA9IHN0cnVjdHVyZTsKKyAg
ICAgICAgU3RydWN0dXJlUmVnaXN0cmF0aW9uUmVzdWx0IHJlc3VsdDsKKyAgICAgICAgUmVnaXN0
ZXJlZFN0cnVjdHVyZSBSZWdpc3RlcmVkU3RydWN0dXJlID0gZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1
cmUoc3RydWN0dXJlLCByZXN1bHQpOworICAgICAgICBpZiAocmVzdWx0ID09IFN0cnVjdHVyZVJl
Z2lzdGVyZWRBbmRXYXRjaGVkKSB7CisgICAgICAgICAgICBtX3N0cnVjdHVyZSA9IFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmU7CiAgICAgICAgICAgICBpZiAoY2xvYmJlclN0YXRlID09IFN0cnVjdHVyZXNB
cmVDbG9iYmVyZWQpIHsKICAgICAgICAgICAgICAgICBtX2FycmF5TW9kZXMgPSBBTExfQVJSQVlf
TU9ERVM7CiAgICAgICAgICAgICAgICAgbV9zdHJ1Y3R1cmUuY2xvYmJlcigpOwpAQCAtNzcsMTgg
Kzc5LDIzIEBAIHZvaWQgQWJzdHJhY3RWYWx1ZTo6c2V0KEdyYXBoJiBncmFwaCwgY28KIAogdm9p
ZCBBYnN0cmFjdFZhbHVlOjpzZXQoR3JhcGgmIGdyYXBoLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
IHsKKyAgICBzZXQoZ3JhcGgsIGdyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkpOwor
fQorCit2b2lkIEFic3RyYWN0VmFsdWU6OnNldChHcmFwaCYgZ3JhcGgsIFJlZ2lzdGVyZWRTdHJ1
Y3R1cmUgc3RydWN0dXJlKQorewogICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZSk7CiAgICAg
CiAgICAgbV9zdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CiAgICAgbV9hcnJheU1vZGVzID0gYXNBcnJh
eU1vZGVzKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpOwotICAgIG1fdHlwZSA9IHNwZWN1bGF0
aW9uRnJvbVN0cnVjdHVyZShzdHJ1Y3R1cmUpOworICAgIG1fdHlwZSA9IHNwZWN1bGF0aW9uRnJv
bVN0cnVjdHVyZShzdHJ1Y3R1cmUuZ2V0KCkpOwogICAgIG1fdmFsdWUgPSBKU1ZhbHVlKCk7CiAg
ICAgCiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgIGFzc2VydElzUmVnaXN0ZXJlZChncmFw
aCk7CiB9CiAKLXZvaWQgQWJzdHJhY3RWYWx1ZTo6c2V0KEdyYXBoJiBncmFwaCwgY29uc3QgU3Ry
dWN0dXJlU2V0JiBzZXQpCit2b2lkIEFic3RyYWN0VmFsdWU6OnNldChHcmFwaCYgZ3JhcGgsIGNv
bnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIHNldCkKIHsKICAgICBtX3N0cnVjdHVyZSA9IHNl
dDsKICAgICBtX2FycmF5TW9kZXMgPSBzZXQuYXJyYXlNb2Rlc0Zyb21TdHJ1Y3R1cmVzKCk7CkBA
IC0xMDQsOSArMTExLDkgQEAgdm9pZCBBYnN0cmFjdFZhbHVlOjpzZXRUeXBlKEdyYXBoJiBncmFw
aAogICAgIFNwZWN1bGF0ZWRUeXBlIGNlbGxUeXBlID0gdHlwZSAmIFNwZWNDZWxsOwogICAgIGlm
IChjZWxsVHlwZSkgewogICAgICAgICBpZiAoIShjZWxsVHlwZSAmIH5TcGVjU3RyaW5nKSkKLSAg
ICAgICAgICAgIG1fc3RydWN0dXJlID0gZ3JhcGgubV92bS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCk7
CisgICAgICAgICAgICBtX3N0cnVjdHVyZSA9IGdyYXBoLnN0cmluZ1N0cnVjdHVyZTsKICAgICAg
ICAgZWxzZSBpZiAoaXNTeW1ib2xTcGVjdWxhdGlvbihjZWxsVHlwZSkpCi0gICAgICAgICAgICBt
X3N0cnVjdHVyZSA9IGdyYXBoLm1fdm0uc3ltYm9sU3RydWN0dXJlLmdldCgpOworICAgICAgICAg
ICAgbV9zdHJ1Y3R1cmUgPSBncmFwaC5zeW1ib2xTdHJ1Y3R1cmU7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIG1fc3RydWN0dXJlLm1ha2VUb3AoKTsKICAgICAgICAgbV9hcnJheU1vZGVzID0g
QUxMX0FSUkFZX01PREVTOwpAQCAtMjE3LDcgKzIyNCw3IEBAIGJvb2wgQWJzdHJhY3RWYWx1ZTo6
bWVyZ2VPU1JFbnRyeVZhbHVlKEcKICAgICBpZiAoaXNDbGVhcigpKSB7CiAgICAgICAgIEZyb3pl
blZhbHVlKiBmcm96ZW5WYWx1ZSA9IGdyYXBoLmZyZWV6ZSh2YWx1ZSk7CiAgICAgICAgIGlmIChm
cm96ZW5WYWx1ZS0+cG9pbnRzVG9IZWFwKCkpIHsKLSAgICAgICAgICAgIG1fc3RydWN0dXJlID0g
ZnJvemVuVmFsdWUtPnN0cnVjdHVyZSgpOworICAgICAgICAgICAgbV9zdHJ1Y3R1cmUgPSBncmFw
aC5yZWdpc3RlclN0cnVjdHVyZShmcm96ZW5WYWx1ZS0+c3RydWN0dXJlKCkpOwogICAgICAgICAg
ICAgbV9hcnJheU1vZGVzID0gYXNBcnJheU1vZGVzKGZyb3plblZhbHVlLT5zdHJ1Y3R1cmUoKS0+
aW5kZXhpbmdUeXBlKCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV9zdHJ1Y3R1
cmUuY2xlYXIoKTsKQEAgLTIyOSwxMCArMjM2LDkgQEAgYm9vbCBBYnN0cmFjdFZhbHVlOjptZXJn
ZU9TUkVudHJ5VmFsdWUoRwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1lcmdlU3BlY3VsYXRpb24o
bV90eXBlLCBzcGVjdWxhdGlvbkZyb21WYWx1ZSh2YWx1ZSkpOwogICAgICAgICBpZiAoISF2YWx1
ZSAmJiB2YWx1ZS5pc0NlbGwoKSkgewotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSB2YWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCk7Ci0gICAgICAgICAgICBncmFwaC5yZWdpc3Rl
clN0cnVjdHVyZShzdHJ1Y3R1cmUpOworICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBz
dHJ1Y3R1cmUgPSBncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YWx1ZS5hc0NlbGwoKS0+c3RydWN0
dXJlKCkpOwogICAgICAgICAgICAgbWVyZ2VBcnJheU1vZGVzKG1fYXJyYXlNb2RlcywgYXNBcnJh
eU1vZGVzKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKTsKLSAgICAgICAgICAgIG1fc3RydWN0
dXJlLm1lcmdlKFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgIG1fc3RydWN0
dXJlLm1lcmdlKFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSk7CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKG1fdmFsdWUgIT0gdmFsdWUpCiAgICAgICAgICAgICBtX3ZhbHVlID0gSlNW
YWx1ZSgpOwpAQCAtMjU2LDcgKzI2Miw3IEBAIGJvb2wgQWJzdHJhY3RWYWx1ZTo6aXNUeXBlKEdy
YXBoJiBncmFwaCwKIH0KIAogRmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdFZhbHVlOjpmaWx0ZXIo
Ci0gICAgR3JhcGgmIGdyYXBoLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyLCBTcGVjdWxhdGVk
VHlwZSBhZG1pdHRlZFR5cGVzKQorICAgIEdyYXBoJiBncmFwaCwgY29uc3QgUmVnaXN0ZXJlZFN0
cnVjdHVyZVNldCYgb3RoZXIsIFNwZWN1bGF0ZWRUeXBlIGFkbWl0dGVkVHlwZXMpCiB7CiAgICAg
QVNTRVJUKCEoYWRtaXR0ZWRUeXBlcyAmIFNwZWNDZWxsKSk7CiAgICAgCkBAIC0yNzIsMTAgKzI3
OCwxMCBAQCBGaWx0cmF0aW9uUmVzdWx0IEFic3RyYWN0VmFsdWU6OmZpbHRlcigKICAgICBtX3N0
cnVjdHVyZS5maWx0ZXIob3RoZXIpOwogICAgIAogICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCBw
cmlvciB0byB0aGUgYWJvdmUgdHdvIHN0YXRlbWVudHMgd2UgaGFkIChGb28sIFRPUCksIHdoZXJl
Ci0gICAgLy8gRm9vIGlzIGEgU3BlY3VsYXRlZFR5cGUgdGhhdCBpcyBkaXNqb2ludCB3aXRoIHRo
ZSBwYXNzZWQgU3RydWN0dXJlU2V0LiBJbiB0aGF0CisgICAgLy8gRm9vIGlzIGEgU3BlY3VsYXRl
ZFR5cGUgdGhhdCBpcyBkaXNqb2ludCB3aXRoIHRoZSBwYXNzZWQgUmVnaXN0ZXJlZFN0cnVjdHVy
ZVNldC4gSW4gdGhhdAogICAgIC8vIGNhc2UsIHdlIHdpbGwgbm93IGhhdmUgKE5vbmUsIFtzb21l
U3RydWN0dXJlXSkuIEluIGdlbmVyYWwsIHdlIG5lZWQgdG8gbWFrZQogICAgIC8vIHN1cmUgdGhh
dCBuZXcgaW5mb3JtYXRpb24gZ2xlYW5lZCBmcm9tIHRoZSBTcGVjdWxhdGVkVHlwZSBuZWVkcyB0
byBiZSBmZWQgYmFjawotICAgIC8vIGludG8gdGhlIGluZm9ybWF0aW9uIGdsZWFuZWQgZnJvbSB0
aGUgU3RydWN0dXJlU2V0LgorICAgIC8vIGludG8gdGhlIGluZm9ybWF0aW9uIGdsZWFuZWQgZnJv
bSB0aGUgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldC4KICAgICBtX3N0cnVjdHVyZS5maWx0ZXIobV90
eXBlKTsKICAgICAKICAgICBmaWx0ZXJBcnJheU1vZGVzQnlUeXBlKCk7CkBAIC0yODMsNyArMjg5
LDcgQEAgRmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdFZhbHVlOjpmaWx0ZXIoCiAgICAgcmV0dXJu
IG5vcm1hbGl6ZUNsYXJpdHkoZ3JhcGgpOwogfQogCi1GaWx0cmF0aW9uUmVzdWx0IEFic3RyYWN0
VmFsdWU6OmNoYW5nZVN0cnVjdHVyZShHcmFwaCYgZ3JhcGgsIGNvbnN0IFN0cnVjdHVyZVNldCYg
b3RoZXIpCitGaWx0cmF0aW9uUmVzdWx0IEFic3RyYWN0VmFsdWU6OmNoYW5nZVN0cnVjdHVyZShH
cmFwaCYgZ3JhcGgsIGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIG90aGVyKQogewogICAg
IG1fdHlwZSAmPSBvdGhlci5zcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmVzKCk7CiAgICAgbV9hcnJh
eU1vZGVzID0gb3RoZXIuYXJyYXlNb2Rlc0Zyb21TdHJ1Y3R1cmVzKCk7CkBAIC0zNjEsMTAgKzM2
NywxMCBAQCBGaWx0cmF0aW9uUmVzdWx0IEFic3RyYWN0VmFsdWU6OmZpbHRlckJ5CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBBYnN0cmFjdFZhbHVlOjpjb250YWlucyhTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkgY29uc3QKK2Jvb2wgQWJzdHJhY3RWYWx1ZTo6Y29udGFpbnMoUmVnaXN0ZXJl
ZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvdWxkQmVUeXBlKHNw
ZWN1bGF0aW9uRnJvbVN0cnVjdHVyZShzdHJ1Y3R1cmUpKQotICAgICAgICAmJiAobV9hcnJheU1v
ZGVzICYgYXJyYXlNb2RlRnJvbVN0cnVjdHVyZShzdHJ1Y3R1cmUpKQorICAgIHJldHVybiBjb3Vs
ZEJlVHlwZShzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmUoc3RydWN0dXJlLmdldCgpKSkKKyAgICAg
ICAgJiYgKG1fYXJyYXlNb2RlcyAmIGFycmF5TW9kZUZyb21TdHJ1Y3R1cmUoc3RydWN0dXJlLmdl
dCgpKSkKICAgICAgICAgJiYgbV9zdHJ1Y3R1cmUuY29udGFpbnMoc3RydWN0dXJlKTsKIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgJKHJl
dmlzaW9uIDIxMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RW
YWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiUmVzdWx0
VHlwZS5oIgogI2luY2x1ZGUgIlNwZWN1bGF0ZWRUeXBlLmgiCiAjaW5jbHVkZSAiRHVtcENvbnRl
eHQuaCIKLSNpbmNsdWRlICJTdHJ1Y3R1cmVTZXQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAg
LTEyMCw3ICsxMTksNyBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgIHZhbHVlLm9i
c2VydmVJbnZhbGlkYXRpb25Qb2ludCgpOwogICAgIH0KICAgICAKLSAgICB2b2lkIG9ic2VydmVU
cmFuc2l0aW9uKFN0cnVjdHVyZSogZnJvbSwgU3RydWN0dXJlKiB0bykKKyAgICB2b2lkIG9ic2Vy
dmVUcmFuc2l0aW9uKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgZnJvbSwgUmVnaXN0ZXJlZFN0cnVjdHVy
ZSB0bykKICAgICB7CiAgICAgICAgIGlmIChtX3R5cGUgJiBTcGVjQ2VsbCkgewogICAgICAgICAg
ICAgbV9zdHJ1Y3R1cmUub2JzZXJ2ZVRyYW5zaXRpb24oZnJvbSwgdG8pOwpAQCAtMTMzLDcgKzEz
Miw3IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAKICAgICBjbGFzcyBUcmFuc2l0aW9u
T2JzZXJ2ZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAgVHJhbnNpdGlvbk9ic2VydmVyKFN0cnVj
dHVyZSogZnJvbSwgU3RydWN0dXJlKiB0bykKKyAgICAgICAgVHJhbnNpdGlvbk9ic2VydmVyKFJl
Z2lzdGVyZWRTdHJ1Y3R1cmUgZnJvbSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSB0bykKICAgICAgICAg
ICAgIDogbV9mcm9tKGZyb20pCiAgICAgICAgICAgICAsIG1fdG8odG8pCiAgICAgICAgIHsKQEAg
LTE0NCw4ICsxNDMsOCBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgICAgICB2YWx1
ZS5vYnNlcnZlVHJhbnNpdGlvbihtX2Zyb20sIG1fdG8pOwogICAgICAgICB9CiAgICAgcHJpdmF0
ZToKLSAgICAgICAgU3RydWN0dXJlKiBtX2Zyb207Ci0gICAgICAgIFN0cnVjdHVyZSogbV90bzsK
KyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBtX2Zyb207CisgICAgICAgIFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgbV90bzsKICAgICB9OwogICAgIAogICAgIGNsYXNzIFRyYW5zaXRpb25zT2JzZXJ2
ZXIgewpAQCAtMjA5LDcgKzIwOCw4IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAKICAg
ICB2b2lkIHNldChHcmFwaCYsIGNvbnN0IEZyb3plblZhbHVlJiwgU3RydWN0dXJlQ2xvYmJlclN0
YXRlKTsKICAgICB2b2lkIHNldChHcmFwaCYsIFN0cnVjdHVyZSopOwotICAgIHZvaWQgc2V0KEdy
YXBoJiwgY29uc3QgU3RydWN0dXJlU2V0Jik7CisgICAgdm9pZCBzZXQoR3JhcGgmLCBSZWdpc3Rl
cmVkU3RydWN0dXJlKTsKKyAgICB2b2lkIHNldChHcmFwaCYsIGNvbnN0IFJlZ2lzdGVyZWRTdHJ1
Y3R1cmVTZXQmKTsKICAgICAKICAgICAvLyBTZXQgdGhpcyB2YWx1ZSB0byByZXByZXNlbnQgdGhl
IGdpdmVuIHNldCBvZiB0eXBlcyBhcyBwcmVjaXNlbHkgYXMgcG9zc2libGUuCiAgICAgdm9pZCBz
ZXRUeXBlKEdyYXBoJiwgU3BlY3VsYXRlZFR5cGUpOwpAQCAtMzAxLDcgKzMwMSw3IEBAIHN0cnVj
dCBBYnN0cmFjdFZhbHVlIHsKICAgICAvLyBTcGVjQ2VsbC4gSGVuY2UsIGFmdGVyIHRoaXMgY2Fs
bCwgdGhlIHZhbHVlIHdpbGwgbm8gbG9uZ2VyIGhhdmUgYW55IG5vbi1jZWxsIG1lbWJlcnMuIEJ1
dCwgeW91IGNhbgogICAgIC8vIHVzZSBhZG1pdHRlZFR5cGVzIHRvIHByZXNlcnZlIHNvbWUgbm9u
LWNlbGwgdHlwZXMuIE5vdGUgdGhhdCBpdCdzIHdyb25nIGZvciBhZG1pdHRlZFR5cGVzIHRvIG92
ZXJsYXAKICAgICAvLyB3aXRoIFNwZWNDZWxsLgotICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVy
KEdyYXBoJiwgY29uc3QgU3RydWN0dXJlU2V0JiwgU3BlY3VsYXRlZFR5cGUgYWRtaXR0ZWRUeXBl
cyA9IFNwZWNOb25lKTsKKyAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlcihHcmFwaCYsIGNvbnN0
IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmLCBTcGVjdWxhdGVkVHlwZSBhZG1pdHRlZFR5cGVzID0g
U3BlY05vbmUpOwogICAgIAogICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyQXJyYXlNb2RlcyhB
cnJheU1vZGVzKTsKICAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlcihTcGVjdWxhdGVkVHlwZSk7
CkBAIC0zMTEsOSArMzExLDkgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogCiAgICAgRmlsdHJh
dGlvblJlc3VsdCBmaWx0ZXIoR3JhcGgmLCBjb25zdCBJbmZlcnJlZFR5cGU6OkRlc2NyaXB0b3Im
KTsKICAgICAKLSAgICBGaWx0cmF0aW9uUmVzdWx0IGNoYW5nZVN0cnVjdHVyZShHcmFwaCYsIGNv
bnN0IFN0cnVjdHVyZVNldCYpOworICAgIEZpbHRyYXRpb25SZXN1bHQgY2hhbmdlU3RydWN0dXJl
KEdyYXBoJiwgY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYpOwogICAgIAotICAgIGJvb2wg
Y29udGFpbnMoU3RydWN0dXJlKikgY29uc3Q7CisgICAgYm9vbCBjb250YWlucyhSZWdpc3RlcmVk
U3RydWN0dXJlKSBjb25zdDsKIAogICAgIGJvb2wgdmFsaWRhdGUoSlNWYWx1ZSB2YWx1ZSkgY29u
c3QKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0Vs
aW1pbmF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIxMTIyOSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM5Myw3ICszOTMsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUpOwogCi0g
ICAgICAgICAgICAgICAgICAgIGlmICghbm9kZS0+c3RydWN0dXJlU2V0KCkuY29udGFpbnMoc3Ry
dWN0dXJlKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlLT5zdHJ1Y3R1cmVTZXQoKS5j
b250YWlucyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkpKQogICAgICAgICAg
ICAgICAgICAgICAgICAgZXNjYXBlKG5vZGUtPmNoaWxkMSgpLCBub2RlKTsKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAkocmV2aXNpb24gMjExMjI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NjAsMTIgKzM2MCwxMiBAQCBib29sIEFycmF5TW9kZTo6YWxyZWFkeUNoZWNrZWQoR3JhcGgmIGdy
CiAgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc1RvcCgpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSB2YWx1ZS5tX3N0cnVjdHVyZS5z
aXplKCk7IGktLTspIHsKLSAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdmFsdWUu
bV9zdHJ1Y3R1cmVbaV07CisgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVy
ZSA9IHZhbHVlLm1fc3RydWN0dXJlW2ldOwogICAgICAgICAgICAgaWYgKChzdHJ1Y3R1cmUtPmlu
ZGV4aW5nVHlwZSgpICYgSW5kZXhpbmdTaGFwZU1hc2spICE9IHNoYXBlKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGlmICghKHN0cnVjdHVyZS0+aW5kZXhpbmdU
eXBlKCkgJiBJc0FycmF5KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICBpZiAoIWdyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5p
c09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmUoc3RydWN0dXJlKSkKKyAgICAgICAgICAgIGlmICghZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmlzT3JpZ2luYWxBcnJh
eVN0cnVjdHVyZShzdHJ1Y3R1cmUuZ2V0KCkpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM3Nyw3ICszNzcsNyBAQCBi
b29sIEFycmF5TW9kZTo6YWxyZWFkeUNoZWNrZWQoR3JhcGgmIGdyCiAgICAgICAgIGlmICh2YWx1
ZS5tX3N0cnVjdHVyZS5pc1RvcCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSB2YWx1ZS5tX3N0cnVjdHVyZS5zaXplKCk7IGktLTspIHsKLSAg
ICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdmFsdWUubV9zdHJ1Y3R1cmVbaV07Cisg
ICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IHZhbHVlLm1fc3RydWN0
dXJlW2ldOwogICAgICAgICAgICAgaWYgKChzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpICYgSW5k
ZXhpbmdTaGFwZU1hc2spICE9IHNoYXBlKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIGlmICghKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkgJiBJc0FycmF5KSkK
QEAgLTM5Miw3ICszOTIsNyBAQCBib29sIEFycmF5TW9kZTo6YWxyZWFkeUNoZWNrZWQoR3JhcGgm
IGdyCiAgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc1RvcCgpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSB2YWx1ZS5tX3N0cnVjdHVy
ZS5zaXplKCk7IGktLTspIHsKLSAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdmFs
dWUubV9zdHJ1Y3R1cmVbaV07CisgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVj
dHVyZSA9IHZhbHVlLm1fc3RydWN0dXJlW2ldOwogICAgICAgICAgICAgaWYgKChzdHJ1Y3R1cmUt
PmluZGV4aW5nVHlwZSgpICYgSW5kZXhpbmdTaGFwZU1hc2spICE9IHNoYXBlKQogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtNDQwLDcgKzQ0MCw3IEBAIGJvb2wg
QXJyYXlNb2RlOjphbHJlYWR5Q2hlY2tlZChHcmFwaCYgZ3IKICAgICAgICAgICAgIGlmICh2YWx1
ZS5tX3N0cnVjdHVyZS5pc1RvcCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHZhbHVlLm1fc3RydWN0dXJlLnNpemUoKTsgaS0t
OykgewotICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdmFsdWUubV9zdHJ1
Y3R1cmVbaV07CisgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUg
PSB2YWx1ZS5tX3N0cnVjdHVyZVtpXTsKICAgICAgICAgICAgICAgICBpZiAoIWhhc0FueUFycmF5
U3RvcmFnZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGlmICghKHN0cnVjdHVyZS0+aW5kZXhpbmdU
eXBlKCkgJiBJc0FycmF5KSkKQEAgLTQ1NSw3ICs0NTUsNyBAQCBib29sIEFycmF5TW9kZTo6YWxy
ZWFkeUNoZWNrZWQoR3JhcGgmIGdyCiAgICAgICAgICAgICBpZiAodmFsdWUubV9zdHJ1Y3R1cmUu
aXNUb3AoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSB2YWx1ZS5tX3N0cnVjdHVyZS5zaXplKCk7IGktLTspIHsKLSAgICAgICAg
ICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZhbHVlLm1fc3RydWN0dXJlW2ldOworICAg
ICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gdmFsdWUubV9zdHJ1
Y3R1cmVbaV07CiAgICAgICAgICAgICAgICAgaWYgKCFoYXNBbnlBcnJheVN0b3JhZ2Uoc3RydWN0
dXJlLT5pbmRleGluZ1R5cGUoKSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlp
ZnlTbG93UGF0aEdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oCShyZXZpc2lvbiAyMTEyMjkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgICAgIDogSnVt
cGluZ1Nsb3dQYXRoR2VuZXJhdG9yPE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdD4oZnJvbSwgaml0
KQogICAgICAgICAsIG1fb3Aobm9kZS0+b3AoKSkKICAgICAgICAgLCBtX2FycmF5TW9kZShub2Rl
LT5hcnJheU1vZGUoKSkKLSAgICAgICAgLCBtX3N0cnVjdHVyZShub2RlLT5vcCgpID09IEFycmF5
aWZ5VG9TdHJ1Y3R1cmUgPyBub2RlLT5zdHJ1Y3R1cmUoKSA6IDApCisgICAgICAgICwgbV9zdHJ1
Y3R1cmUobm9kZS0+b3AoKSA9PSBBcnJheWlmeVRvU3RydWN0dXJlID8gbm9kZS0+c3RydWN0dXJl
KCkgOiBSZWdpc3RlcmVkU3RydWN0dXJlKCkpCiAgICAgICAgICwgbV9iYXNlR1BSKGJhc2VHUFIp
CiAgICAgICAgICwgbV9wcm9wZXJ0eUdQUihwcm9wZXJ0eUdQUikKICAgICAgICAgLCBtX3RlbXBH
UFIodGVtcEdQUikKQEAgLTExNSw3ICsxMTUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGppdC0+
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgCiAgICAgICAgIGlmIChtX29wID09IEFy
cmF5aWZ5VG9TdHJ1Y3R1cmUpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX3N0cnVjdHVyZSk7Cisg
ICAgICAgICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUuZ2V0KCkpOwogICAgICAgICAgICAgbV9iYWRJ
bmRleGluZ1R5cGVKdW1wLmZpbGwoCiAgICAgICAgICAgICAgICAgaml0LCBqaXQtPm1faml0LmJy
YW5jaFdlYWtTdHJ1Y3R1cmUoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhtX2Jhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIG1fc3Ry
dWN0dXJlKSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0xMzYsNyArMTM2LDcgQEAgcHJvdGVjdGVk
OgogcHJpdmF0ZToKICAgICBOb2RlVHlwZSBtX29wOwogICAgIEFycmF5TW9kZSBtX2FycmF5TW9k
ZTsKLSAgICBTdHJ1Y3R1cmUqIG1fc3RydWN0dXJlOworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
bV9zdHJ1Y3R1cmU7CiAgICAgR1BSUmVnIG1fYmFzZUdQUjsKICAgICBHUFJSZWcgbV9wcm9wZXJ0
eUdQUjsKICAgICBHUFJSZWcgbV90ZW1wR1BSOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOTYwLDcgKzI5NjAsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25z
dGFudEludGVyCiAgICAgICAgICAgICByZXN1bHQgPSBhZGRUb0dyYXBoKENhbGxTdHJpbmdDb25z
dHJ1Y3RvciwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0
KSkpOwogICAgICAgICAKICAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCkKLSAg
ICAgICAgICAgIHJlc3VsdCA9IGFkZFRvR3JhcGgoTmV3U3RyaW5nT2JqZWN0LCBPcEluZm8oZnVu
Y3Rpb24tPmdsb2JhbE9iamVjdCgpLT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSksIHJlc3VsdCk7
CisgICAgICAgICAgICByZXN1bHQgPSBhZGRUb0dyYXBoKE5ld1N0cmluZ09iamVjdCwgT3BJbmZv
KG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgpLT5zdHJp
bmdPYmplY3RTdHJ1Y3R1cmUoKSkpLCByZXN1bHQpOwogICAgICAgICAKICAgICAgICAgc2V0KFZp
cnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CkBAIC0yOTcyLDcgKzI5NzIsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25z
dGFudEludGVyCiAKICAgICAgICAgTm9kZSogcmVzdWx0OwogICAgICAgICBpZiAoYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgPD0gMSkKLSAgICAgICAgICAgIHJlc3VsdCA9IGFkZFRvR3JhcGgo
TmV3T2JqZWN0LCBPcEluZm8oZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgpLT5vYmplY3RTdHJ1Y3R1
cmVGb3JPYmplY3RDb25zdHJ1Y3RvcigpKSk7CisgICAgICAgICAgICByZXN1bHQgPSBhZGRUb0dy
YXBoKE5ld09iamVjdCwgT3BJbmZvKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZnVuY3Rpb24t
Pmdsb2JhbE9iamVjdCgpLT5vYmplY3RTdHJ1Y3R1cmVGb3JPYmplY3RDb25zdHJ1Y3RvcigpKSkp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXN1bHQgPSBhZGRUb0dyYXBoKENhbGxPYmpl
Y3RDb25zdHJ1Y3RvciwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVy
T2Zmc2V0KSkpOwogICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBy
ZXN1bHQpOwpAQCAtMzM4Myw3ICszMzgzLDcgQEAgTm9kZSogQnl0ZUNvZGVQYXJzZXI6OmxvYWQo
CiAgICAgICAgICAgICAvLyBXZSBkaWQgZW1pdCBhIHN0cnVjdHVyZSBjaGVjay4gVGhhdCBtZWFu
cyB0aGF0IHdlIGhhdmUgYW4gb3Bwb3J0dW5pdHkgdG8gZG8gY29uc3RhbnQgZm9sZGluZwogICAg
ICAgICAgICAgLy8gaGVyZSwgc2luY2Ugd2UgZGlkbid0IGRvIGl0IGFib3ZlLgogICAgICAgICAg
ICAgSlNWYWx1ZSBjb25zdGFudCA9IG1fZ3JhcGgudHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eSgKLSAg
ICAgICAgICAgICAgICBiYXNlLT5hc0pTVmFsdWUoKSwgdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSwg
dmFyaWFudC5vZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgYmFzZS0+YXNKU1ZhbHVlKCksICpt
X2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50LnN0cnVjdHVyZVNldCgpKSwgdmFyaWFudC5v
ZmZzZXQoKSk7CiAgICAgICAgICAgICBpZiAoY29uc3RhbnQpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHdlYWtKU0NvbnN0YW50KGNvbnN0YW50KTsKICAgICAgICAgfQpAQCAtMzQyOSw3ICszNDI5
LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgICAgICBpZiAob2spCi0gICAgICAgICAgICBnZXRCeUlkU3RhdHVzLmZp
bHRlcihiYXNlLT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICBnZXRCeUlkU3RhdHVzLmZpbHRl
cihiYXNlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CiAgICAgfQogICAgIAogICAgIE5vZGVUeXBlIGdl
dEJ5SWQ7CkBAIC0zNDgyLDcgKzM0ODIsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVH
ZXRCeUlkKAogICAgICAgICAgICAgaWYgKHZhcmlhbnQuY29uZGl0aW9uU2V0KCkuaXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICAgICAgY2FzZXMuYXBwZW5kKAogICAgICAgICAgICAgICAgICAgICBN
dWx0aUdldEJ5T2Zmc2V0Q2FzZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQuc3Ry
dWN0dXJlU2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAqbV9ncmFwaC5hZGRTdHJ1Y3R1
cmVTZXQodmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICBH
ZXRCeU9mZnNldE1ldGhvZDo6bG9hZCh2YXJpYW50Lm9mZnNldCgpKSkpOwogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQpAQCAtMzQ5NCw3ICszNDk0LDcgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2VzLmFwcGVuZChNdWx0
aUdldEJ5T2Zmc2V0Q2FzZSh2YXJpYW50LnN0cnVjdHVyZVNldCgpLCBtZXRob2QpKTsKKyAgICAg
ICAgICAgIGNhc2VzLmFwcGVuZChNdWx0aUdldEJ5T2Zmc2V0Q2FzZSgqbV9ncmFwaC5hZGRTdHJ1
Y3R1cmVTZXQodmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSksIG1ldGhvZCkpOwogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKG1fZ3JhcGguY29tcGlsYXRpb24oKSkKQEAgLTM2MjEsOCArMzYyMSwxMyBA
QCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgICAgICBpZiAobV9ncmFw
aC5jb21waWxhdGlvbigpKQogICAgICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5ub3Rp
Y2VJbmxpbmVkUHV0QnlJZCgpOwogCi0gICAgICAgIGZvciAoY29uc3QgUHV0QnlJZFZhcmlhbnQm
IHZhcmlhbnQgOiBwdXRCeUlkU3RhdHVzLnZhcmlhbnRzKCkpCisgICAgICAgIGZvciAoY29uc3Qg
UHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBwdXRCeUlkU3RhdHVzLnZhcmlhbnRzKCkpIHsKICAg
ICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJJbmZlcnJlZFR5cGUodmFyaWFudC5yZXF1aXJlZFR5
cGUoKSk7CisgICAgICAgICAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogdmFyaWFudC5v
bGRTdHJ1Y3R1cmUoKSkKKyAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJl
KHN0cnVjdHVyZSk7CisgICAgICAgICAgICBpZiAodmFyaWFudC5raW5kKCkgPT0gUHV0QnlJZFZh
cmlhbnQ6OlRyYW5zaXRpb24pCisgICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVj
dHVyZSh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKTsKKyAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgTXVsdGlQdXRCeU9mZnNldERhdGEqIGRhdGEgPSBtX2dyYXBoLm1fbXVsdGlQdXRCeU9mZnNl
dERhdGEuYWRkKCk7CiAgICAgICAgIGRhdGEtPnZhcmlhbnRzID0gcHV0QnlJZFN0YXR1cy52YXJp
YW50cygpOwpAQCAtMzY1Myw3ICszNjU4LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
UHV0QnlJZCgKICAgICAKICAgICAgICAgTm9kZSogcHJvcGVydHlTdG9yYWdlOwogICAgICAgICBU
cmFuc2l0aW9uKiB0cmFuc2l0aW9uID0gbV9ncmFwaC5tX3RyYW5zaXRpb25zLmFkZCgKLSAgICAg
ICAgICAgIHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLCB2YXJpYW50Lm5ld1N0
cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFu
dC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCkpLCBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJl
KHZhcmlhbnQubmV3U3RydWN0dXJlKCkpKTsKIAogICAgICAgICBpZiAodmFyaWFudC5yZWFsbG9j
YXRlc1N0b3JhZ2UoKSkgewogCkBAIC0zOTAwLDcgKzM5MDUsNyBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBo
LndhdGNocG9pbnRzKCkuYWRkTGF6aWx5KHJhcmVEYXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNo
cG9pbnRTZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgY2FsbGVlIGlzIHN0
aWxsIGxpdmUgdXAgdG8gdGhpcyBwb2ludC4KICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoUGhhbnRvbSwgY2FsbGVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNldChWaXJ0
dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGFkZFRvR3JhcGgo
TmV3T2JqZWN0LCBPcEluZm8oc3RydWN0dXJlKSkpOworICAgICAgICAgICAgICAgICAgICAgICAg
c2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRk
VG9HcmFwaChOZXdPYmplY3QsIE9wSW5mbyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVj
dHVyZSkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBhbHJlYWR5RW1pdHRlZCA9IHRydWU7
CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0zOTE1LDcgKzM5
MjAsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAg
IGNhc2Ugb3BfbmV3X29iamVjdDogewogICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3Rlcihj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwKICAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKE5ld09iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgT3BJbmZvKGN1cnJlbnRJbnN0cnVj
dGlvblszXS51Lm9iamVjdEFsbG9jYXRpb25Qcm9maWxlLT5zdHJ1Y3R1cmUoKSkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoY3VycmVudElu
c3RydWN0aW9uWzNdLnUub2JqZWN0QWxsb2NhdGlvblByb2ZpbGUtPnN0cnVjdHVyZSgpKSkpKTsK
ICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19vYmplY3QpOwogICAgICAgICB9CiAgICAg
ICAgICAgICAKQEAgLTU2NzgsNyArNTY4Myw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFj
a0VudHJ5OjpJbmxpbmUKICAgICAgICAgQVNTRVJUKGNhbGxzaXRlQmxvY2tIZWFkKTsKICAgICAg
ICAgCiAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lID0gYnl0ZUNvZGVQYXJzZXItPm1fZ3JhcGgu
bV9wbGFuLmlubGluZUNhbGxGcmFtZXMtPmFkZCgpOwotICAgICAgICBieXRlQ29kZVBhcnNlci0+
bV9ncmFwaC5mcmVlemUoY29kZUJsb2NrLT5iYXNlbGluZVZlcnNpb24oKSk7CisKICAgICAgICAg
Ly8gVGhlIG93bmVyIGlzIHRoZSBtYWNoaW5lIGNvZGUgYmxvY2ssIGFuZCB3ZSBhbHJlYWR5IGhh
dmUgYSBiYXJyaWVyIG9uIHRoYXQgd2hlbiB0aGUKICAgICAgICAgLy8gcGxhbiBmaW5pc2hlcy4K
ICAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLnNldFdpdGhvdXRX
cml0ZUJhcnJpZXIoY29kZUJsb2NrLT5iYXNlbGluZVZlcnNpb24oKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxsQXJyYXlB
bGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgQ2FsbEFycmF5QWxsb2Nh
dG9yU2xvd1BhdGhHZW5lcmF0bwogcHVibGljOgogICAgIENhbGxBcnJheUFsbG9jYXRvclNsb3dQ
YXRoR2VuZXJhdG9yKAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZnJvbSwgU3Bl
Y3VsYXRpdmVKSVQqIGppdCwgUF9KSVRPcGVyYXRpb25fRVN0WkIgZnVuY3Rpb24sCi0gICAgICAg
IEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzdG9yYWdlR1BSLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgc2l6ZV90IHNpemUpCisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzdG9yYWdl
R1BSLCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgc2l6ZV90IHNpemUpCiAgICAgICAg
IDogSnVtcGluZ1Nsb3dQYXRoR2VuZXJhdG9yPE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdD4oZnJv
bSwgaml0KQogICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCiAgICAgICAgICwgbV9yZXN1
bHRHUFIocmVzdWx0R1BSKQpAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogICAgIFBfSklUT3Bl
cmF0aW9uX0VTdFpCIG1fZnVuY3Rpb247CiAgICAgR1BSUmVnIG1fcmVzdWx0R1BSOwogICAgIEdQ
UlJlZyBtX3N0b3JhZ2VHUFI7Ci0gICAgU3RydWN0dXJlKiBtX3N0cnVjdHVyZTsKKyAgICBSZWdp
c3RlcmVkU3RydWN0dXJlIG1fc3RydWN0dXJlOwogICAgIHNpemVfdCBtX3NpemU7CiAgICAgVmVj
dG9yPFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4sIDI+IG1fcGxhbnM7CiB9OwpAQCAtNzgsNyArNzgs
NyBAQCBjbGFzcyBDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTaXplCiBwdWJsaWM6CiAg
ICAgQ2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yKAog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGpp
dCwgUF9KSVRPcGVyYXRpb25fRVN0WkIgZnVuY3Rpb24sCi0gICAgICAgIEdQUlJlZyByZXN1bHRH
UFIsIFN0cnVjdHVyZSogY29udGlndW91c1N0cnVjdHVyZSwgU3RydWN0dXJlKiBhcnJheVN0b3Jh
Z2VTdHJ1Y3R1cmUsIEdQUlJlZyBzaXplR1BSLCBHUFJSZWcgc3RvcmFnZUdQUikKKyAgICAgICAg
R1BSUmVnIHJlc3VsdEdQUiwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBjb250aWd1b3VzU3RydWN0dXJl
LCBSZWdpc3RlcmVkU3RydWN0dXJlIGFycmF5U3RvcmFnZVN0cnVjdHVyZSwgR1BSUmVnIHNpemVH
UFIsIEdQUlJlZyBzdG9yYWdlR1BSKQogICAgICAgICA6IEp1bXBpbmdTbG93UGF0aEdlbmVyYXRv
cjxNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Q+KGZyb20sIGppdCkKICAgICAgICAgLCBtX2Z1bmN0
aW9uKGZ1bmN0aW9uKQogICAgICAgICAsIG1fcmVzdWx0R1BSKHJlc3VsdEdQUikKQEAgLTk3LDE1
ICs5NywxNSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X3BsYW5zLnNpemUoKTsgKytpKQogICAgICAgICAgICAgaml0LT5zaWxlbnRTcGlsbChtX3BsYW5z
W2ldKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVj
dFNjcmF0Y2hHUFIobV9zaXplR1BSLCBtX3N0b3JhZ2VHUFIpOwotICAgICAgICBpZiAobV9jb250
aWd1b3VzU3RydWN0dXJlICE9IG1fYXJyYXlTdG9yYWdlT3JDb250aWd1b3VzU3RydWN0dXJlKSB7
CisgICAgICAgIGlmIChtX2NvbnRpZ3VvdXNTdHJ1Y3R1cmUuZ2V0KCkgIT0gbV9hcnJheVN0b3Jh
Z2VPckNvbnRpZ3VvdXNTdHJ1Y3R1cmUuZ2V0KCkpIHsKICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIGJpZ0xlbmd0aCA9IGppdC0+bV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6
OkFib3ZlT3JFcXVhbCwgbV9zaXplR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1J
Tl9BUlJBWV9TVE9SQUdFX0NPTlNUUlVDVElPTl9MRU5HVEgpKTsKLSAgICAgICAgICAgIGppdC0+
bV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2NvbnRpZ3VvdXNTdHJ1
Y3R1cmUpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIGppdC0+bV9qaXQubW92ZShTcGVjdWxh
dGl2ZUpJVDo6VHJ1c3RlZEltbVB0cihtX2NvbnRpZ3VvdXNTdHJ1Y3R1cmUpLCBzY3JhdGNoR1BS
KTsKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUgPSBqaXQtPm1faml0Lmp1
bXAoKTsKICAgICAgICAgICAgIGJpZ0xlbmd0aC5saW5rKCZqaXQtPm1faml0KTsKLSAgICAgICAg
ICAgIGppdC0+bV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2FycmF5
U3RvcmFnZU9yQ29udGlndW91c1N0cnVjdHVyZSksIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAg
aml0LT5tX2ppdC5tb3ZlKFNwZWN1bGF0aXZlSklUOjpUcnVzdGVkSW1tUHRyKG1fYXJyYXlTdG9y
YWdlT3JDb250aWd1b3VzU3RydWN0dXJlKSwgc2NyYXRjaEdQUik7CiAgICAgICAgICAgICBkb25l
LmxpbmsoJmppdC0+bV9qaXQpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGppdC0+bV9q
aXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2NvbnRpZ3VvdXNTdHJ1Y3R1
cmUpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIGppdC0+bV9qaXQubW92ZShTcGVjdWxhdGl2
ZUpJVDo6VHJ1c3RlZEltbVB0cihtX2NvbnRpZ3VvdXNTdHJ1Y3R1cmUpLCBzY3JhdGNoR1BSKTsK
ICAgICAgICAgaml0LT5jYWxsT3BlcmF0aW9uKG1fZnVuY3Rpb24sIG1fcmVzdWx0R1BSLCBzY3Jh
dGNoR1BSLCBtX3NpemVHUFIsIG1fc3RvcmFnZUdQUik7CiAgICAgICAgIEdQUlJlZyBjYW5UcmFt
cGxlID0gU3BlY3VsYXRpdmVKSVQ6OnBpY2tDYW5UcmFtcGxlKG1fcmVzdWx0R1BSKTsKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gbV9wbGFucy5zaXplKCk7IGktLTspCkBAIC0xMTcsOCArMTE3
LDggQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBQX0pJVE9wZXJhdGlvbl9FU3RaQiBtX2Z1
bmN0aW9uOwogICAgIEdQUlJlZyBtX3Jlc3VsdEdQUjsKLSAgICBTdHJ1Y3R1cmUqIG1fY29udGln
dW91c1N0cnVjdHVyZTsKLSAgICBTdHJ1Y3R1cmUqIG1fYXJyYXlTdG9yYWdlT3JDb250aWd1b3Vz
U3RydWN0dXJlOworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgbV9jb250aWd1b3VzU3RydWN0dXJl
OworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgbV9hcnJheVN0b3JhZ2VPckNvbnRpZ3VvdXNTdHJ1
Y3R1cmU7CiAgICAgR1BSUmVnIG1fc2l6ZUdQUjsKICAgICBHUFJSZWcgbV9zdG9yYWdlR1BSOwog
ICAgIFZlY3RvcjxTaWxlbnRSZWdpc3RlclNhdmVQbGFuLCAyPiBtX3BsYW5zOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xvd1Bh
dGhHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhbGxDcmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvci5oCShyZXZpc2lvbiAy
MTEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxDcmVhdGVEaXJlY3RB
cmd1bWVudHNTbG93UGF0aEdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIGNsYXNzIENhbGxDcmVhdGVEaXJl
Y3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvciA6IHB1YmxpYyBKdW1waW5nU2xvd1BhdGhHZW5l
cmF0b3I8TWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0PiB7CiBwdWJsaWM6CiAgICAgQ2FsbENyZWF0
ZURpcmVjdEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yKAotICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6SnVtcExpc3QgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgR1BSUmVnIHJlc3VsdEdQUiwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBm
cm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBHUFJSZWcgcmVzdWx0R1BSLCBSZWdpc3RlcmVkU3Ry
dWN0dXJlIHN0cnVjdHVyZSwKICAgICAgICAgR1BSUmVnIGxlbmd0aEdQUiwgdW5zaWduZWQgbWlu
Q2FwYWNpdHkpCiAgICAgICAgIDogSnVtcGluZ1Nsb3dQYXRoR2VuZXJhdG9yPE1hY3JvQXNzZW1i
bGVyOjpKdW1wTGlzdD4oZnJvbSwgaml0KQogICAgICAgICAsIG1fcmVzdWx0R1BSKHJlc3VsdEdQ
UikKQEAgLTY5LDcgKzY5LDcgQEAgcHJvdGVjdGVkOgogICAgIAogcHJpdmF0ZToKICAgICBHUFJS
ZWcgbV9yZXN1bHRHUFI7Ci0gICAgU3RydWN0dXJlKiBtX3N0cnVjdHVyZTsKKyAgICBSZWdpc3Rl
cmVkU3RydWN0dXJlIG1fc3RydWN0dXJlOwogICAgIEdQUlJlZyBtX2xlbmd0aEdQUjsKICAgICB1
bnNpZ25lZCBtX21pbkNhcGFjaXR5OwogICAgIFZlY3RvcjxTaWxlbnRSZWdpc3RlclNhdmVQbGFu
LCAyPiBtX3BsYW5zOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25E
YXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1v
bkRhdGEuY3BwCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbW1vbkRhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw4ICs0Myw4IEBAIHZvaWQg
Q29tbW9uRGF0YTo6bm90aWZ5Q29tcGlsaW5nU3RydWN0dXIKICAgICBwbGFuLnRyYW5zaXRpb25z
LmFkZExhemlseSgKICAgICAgICAgY29kZUJsb2NrLAogICAgICAgICBub2RlLT5vcmlnaW4uc2Vt
YW50aWMuY29kZU9yaWdpbk93bmVyKCksCi0gICAgICAgIG5vZGUtPnRyYW5zaXRpb24oKS0+cHJl
dmlvdXMsCi0gICAgICAgIG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dCk7CisgICAgICAgIG5vZGUt
PnRyYW5zaXRpb24oKS0+cHJldmlvdXMuZ2V0KCksCisgICAgICAgIG5vZGUtPnRyYW5zaXRpb24o
KS0+bmV4dC5nZXQoKSk7CiB9CiAKIENhbGxTaXRlSW5kZXggQ29tbW9uRGF0YTo6YWRkQ29kZU9y
aWdpbihDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjEx
MjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw3ICsxNDUsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICAgICAgICAgIGNhc2UgQXJyYXlpZnlUb1N0
cnVjdHVyZTogewogICAgICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gbV9zdGF0
ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVTZXQg
c2V0OworICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgc2V0OwogICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IEFycmF5aWZ5VG9TdHJ1Y3R1cmUpCiAgICAgICAg
ICAgICAgICAgICAgIHNldCA9IG5vZGUtPnN0cnVjdHVyZSgpOwogICAgICAgICAgICAgICAgIGVs
c2UKQEAgLTIwNiwxMSArMjA2LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlSW1tZWRpYXRlOiB7CiAgICAgICAgICAgICAgICAg
QWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwot
ICAgICAgICAgICAgICAgIFN0cnVjdHVyZVNldCYgc2V0ID0gbm9kZS0+c3RydWN0dXJlU2V0KCk7
CisgICAgICAgICAgICAgICAgY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgc2V0ID0gbm9k
ZS0+c3RydWN0dXJlU2V0KCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYg
KHZhbHVlLnZhbHVlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0ganNEeW5hbWljQ2FzdDxTdHJ1Y3R1cmUqPih2YWx1ZS52YWx1ZSgpKSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHNldC5jb250YWlucyhzdHJ1Y3R1cmUpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoc2V0LmNvbnRhaW5zKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1
Y3R1cmUoc3RydWN0dXJlKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2ludGVy
cHJldGVyLmV4ZWN1dGUoaW5kZXhJbkJsb2NrKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGltaW5hdGVk
ID0gdHJ1ZTsKQEAgLTIyNSw3ICsyMjUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICAgICAgbm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgIFsmXSAoTm9kZSogaW5jb21pbmcp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBpbmNvbWluZy0+ZHluYW1pY0Nhc3RDb25zdGFudDxTdHJ1Y3R1cmUqPigpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXQuY29udGFpbnMoc3RydWN0dXJlKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldC5jb250YWlucyhtX2dyYXBoLnJl
Z2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhbGxHb29kID0gZmFsc2U7CkBAIC00MjEsNyArNDIxLDkgQEAg
cHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRh
LnZhcmlhbnRzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgIFB1dEJ5SWRWYXJp
YW50JiB2YXJpYW50ID0gZGF0YS52YXJpYW50c1tpXTsKLSAgICAgICAgICAgICAgICAgICAgdmFy
aWFudC5vbGRTdHJ1Y3R1cmUoKS5maWx0ZXIoYmFzZVZhbHVlKTsKKyAgICAgICAgICAgICAgICAg
ICAgdmFyaWFudC5vbGRTdHJ1Y3R1cmUoKS5nZW5lcmljRmlsdGVyKFsmXSAoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpIC0+IGJvb2wgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJhc2VW
YWx1ZS5jb250YWlucyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkpOworICAg
ICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgIGlmICh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgZGF0YS52YXJpYW50c1tpLS1dID0gZGF0YS52YXJpYW50cy5sYXN0KCk7
CkBAIC00NjAsMTIgKzQ2MiwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1faW50ZXJw
cmV0ZXIuZXhlY3V0ZShpbmRleEluQmxvY2spOyAvLyBQdXNoIENGQSBvdmVyIHRoaXMgbm9kZSBh
ZnRlciB3ZSBnZXQgdGhlIHN0YXRlIGJlZm9yZS4KICAgICAgICAgICAgICAgICBhbHJlYWR5SGFu
ZGxlZCA9IHRydWU7IC8vIERvbid0IGFsbG93IHRoZSBkZWZhdWx0IGNvbnN0YW50IGZvbGRlciB0
byBkbyB0aGluZ3MgdG8gdGhpcy4KIAotICAgICAgICAgICAgICAgIGlmIChiYXNlVmFsdWUubV9z
dHJ1Y3R1cmUuaXNUb3AoKSB8fCBiYXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNDbG9iYmVyZWQoKQor
ICAgICAgICAgICAgICAgIGlmICghYmFzZVZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkKICAg
ICAgICAgICAgICAgICAgICAgfHwgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVk
VXNlIHx8IChiYXNlVmFsdWUubV90eXBlICYgflNwZWNDZWxsKSkpCiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIEdldEJ5SWRTdGF0
dXMgc3RhdHVzID0gR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKLSAgICAgICAgICAgICAgICAg
ICAgYmFzZVZhbHVlLm1fc3RydWN0dXJlLnNldCgpLCBtX2dyYXBoLmlkZW50aWZpZXJzKClbaWRl
bnRpZmllck51bWJlcl0pOworICAgICAgICAgICAgICAgICAgICBiYXNlVmFsdWUubV9zdHJ1Y3R1
cmUudG9TdHJ1Y3R1cmVTZXQoKSwgbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1i
ZXJdKTsKICAgICAgICAgICAgICAgICBpZiAoIXN0YXR1cy5pc1NpbXBsZSgpKQogICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKQEAgLTQ5MCw3ICs0OTIsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIGZvciAoY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlh
bnQgOiBzdGF0dXMudmFyaWFudHMoKSkgewogICAgICAgICAgICAgICAgICAgICBkYXRhLT5jYXNl
cy5hcHBlbmQoCiAgICAgICAgICAgICAgICAgICAgICAgICBNdWx0aUdldEJ5T2Zmc2V0Q2FzZSgK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50LnN0cnVjdHVyZVNldCgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICptX2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50
LnN0cnVjdHVyZVNldCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRCeU9mZnNl
dE1ldGhvZDo6bG9hZCh2YXJpYW50Lm9mZnNldCgpKSkpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBkYXRhLT5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsK
QEAgLTUxNSwxMiArNTE3LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9pbnRlcnBy
ZXRlci5leGVjdXRlKGluZGV4SW5CbG9jayk7IC8vIFB1c2ggQ0ZBIG92ZXIgdGhpcyBub2RlIGFm
dGVyIHdlIGdldCB0aGUgc3RhdGUgYmVmb3JlLgogICAgICAgICAgICAgICAgIGFscmVhZHlIYW5k
bGVkID0gdHJ1ZTsgLy8gRG9uJ3QgYWxsb3cgdGhlIGRlZmF1bHQgY29uc3RhbnQgZm9sZGVyIHRv
IGRvIHRoaW5ncyB0byB0aGlzLgogCi0gICAgICAgICAgICAgICAgaWYgKGJhc2VWYWx1ZS5tX3N0
cnVjdHVyZS5pc1RvcCgpIHx8IGJhc2VWYWx1ZS5tX3N0cnVjdHVyZS5pc0Nsb2JiZXJlZCgpKQor
ICAgICAgICAgICAgICAgIGlmICghYmFzZVZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpCiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIFB1dEJ5SWRTdGF0dXMgc3RhdHVzID0gUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iob3JpZ2luLnNlbWFudGlj
KSwKLSAgICAgICAgICAgICAgICAgICAgYmFzZVZhbHVlLm1fc3RydWN0dXJlLnNldCgpLAorICAg
ICAgICAgICAgICAgICAgICBiYXNlVmFsdWUubV9zdHJ1Y3R1cmUudG9TdHJ1Y3R1cmVTZXQoKSwK
ICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1i
ZXJdLAogICAgICAgICAgICAgICAgICAgICBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QpOwog
ICAgICAgICAgICAgICAgIApAQCAtNzEzLDcgKzcxNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8v
IFdlIGFyZW4ndCBzZXQgdXAgdG8gaGFuZGxlIHByb3RvdHlwZSBzdHVmZi4KICAgICAgICAgREZH
X0FTU0VSVChtX2dyYXBoLCBub2RlLCB2YXJpYW50LmNvbmRpdGlvblNldCgpLmlzRW1wdHkoKSk7
CiAKLSAgICAgICAgaWYgKEpTVmFsdWUgdmFsdWUgPSBtX2dyYXBoLnRyeUdldENvbnN0YW50UHJv
cGVydHkoYmFzZVZhbHVlLm1fdmFsdWUsIHZhcmlhbnQuc3RydWN0dXJlU2V0KCksIHZhcmlhbnQu
b2Zmc2V0KCkpKSB7CisgICAgICAgIGlmIChKU1ZhbHVlIHZhbHVlID0gbV9ncmFwaC50cnlHZXRD
b25zdGFudFByb3BlcnR5KGJhc2VWYWx1ZS5tX3ZhbHVlLCAqbV9ncmFwaC5hZGRTdHJ1Y3R1cmVT
ZXQodmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSksIHZhcmlhbnQub2Zmc2V0KCkpKSB7CiAgICAgICAg
ICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG5vZGUsIG1fZ3JhcGguZnJlZXplKHZhbHVl
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTc1OSw3ICs3NjEsNyBAQCBw
cml2YXRlOgogICAgICAgICBUcmFuc2l0aW9uKiB0cmFuc2l0aW9uID0gMDsKICAgICAgICAgaWYg
KHZhcmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uKSB7CiAgICAgICAg
ICAgICB0cmFuc2l0aW9uID0gbV9ncmFwaC5tX3RyYW5zaXRpb25zLmFkZCgKLSAgICAgICAgICAg
ICAgICB2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKSwgdmFyaWFudC5uZXdTdHJ1
Y3R1cmUoKSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJp
YW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKSksIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1
cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkpOwogICAgICAgICB9CiAKICAgICAgICAgRWRnZSBw
cm9wZXJ0eVN0b3JhZ2U7CkBAIC04MjEsNiArODIzLDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBh
ZGRCYXNlQ2hlY2soCiAgICAgICAgIHVuc2lnbmVkIGluZGV4SW5CbG9jaywgTm9kZSogbm9kZSwg
Y29uc3QgQWJzdHJhY3RWYWx1ZSYgYmFzZVZhbHVlLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCkK
ICAgICB7CisgICAgICAgIGFkZEJhc2VDaGVjayhpbmRleEluQmxvY2ssIG5vZGUsIGJhc2VWYWx1
ZSwgKm1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHNldCkpOworICAgIH0KKworICAgIHZvaWQgYWRk
QmFzZUNoZWNrKAorICAgICAgICB1bnNpZ25lZCBpbmRleEluQmxvY2ssIE5vZGUqIG5vZGUsIGNv
bnN0IEFic3RyYWN0VmFsdWUmIGJhc2VWYWx1ZSwgY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNl
dCYgc2V0KQorICAgIHsKICAgICAgICAgaWYgKCFiYXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNTdWJz
ZXRPZihzZXQpKSB7CiAgICAgICAgICAgICAvLyBBcmlzZXMgd2hlbiB3ZSBwcnVuZSBNdWx0aUdl
dEJ5T2Zmc2V0LiBXZSBjb3VsZCBoYXZlIGEKICAgICAgICAgICAgIC8vIE11bHRpR2V0QnlPZmZz
ZXQgd2l0aCBhIHNpbmdsZSB2YXJpYW50IHRoYXQgY2hlY2tzIGZvciBzdHJ1Y3R1cmUgUywKQEAg
LTgyOCw3ICs4MzYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgQVNTRVJUKG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAg
ICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2tTdHJ1Y3R1cmUsIG5vZGUtPm9yaWdp
biwKLSAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoc2V0KSks
IG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5hZGRTdHJ1
Y3R1cmVTZXQoc2V0LnRvU3RydWN0dXJlU2V0KCkpKSwgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIApAQCAtODM4LDggKzg0NiwxMiBAQCBw
cml2YXRlOgogICAgIAogICAgIHZvaWQgYWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKE5vZGVP
cmlnaW4gb3JpZ2luLCB1bnNpZ25lZCBpbmRleEluQmxvY2ssIEpTQ2VsbCogY2VsbCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBpZiAobV9ncmFwaC5yZWdpc3RlclN0cnVj
dHVyZShjZWxsLT5zdHJ1Y3R1cmUoKSkgPT0gU3RydWN0dXJlUmVnaXN0ZXJlZEFuZFdhdGNoZWQp
Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIHsKKyAgICAgICAgICAgIFN0cnVjdHVyZVJl
Z2lzdHJhdGlvblJlc3VsdCByZXN1bHQ7CisgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3Ry
dWN0dXJlKGNlbGwtPnN0cnVjdHVyZSgpLCByZXN1bHQpOworICAgICAgICAgICAgaWYgKHJlc3Vs
dCA9PSBTdHJ1Y3R1cmVSZWdpc3RlcmVkQW5kV2F0Y2hlZCkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1
cmUoc3RydWN0dXJlKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNp
cmVkV2Vha1JlZmVyZW5jZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmNwcAkocmV2aXNpb24gMjExMjI5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3MiwxMiBAQCB2b2lkIERlc2lyZWRXZWFrUmVmZXJlbmNl
czo6cmVhbGx5QWRkKFZNCiAgICAgICAgICAgICBjb21tb24tPndlYWtTdHJ1Y3R1cmVSZWZlcmVu
Y2VzLmFwcGVuZCgKICAgICAgICAgICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPih2bSwg
bV9jb2RlQmxvY2ssIHN0cnVjdHVyZSkpOwogICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
Ly8gVGhlcmUgYXJlIHdlaXJkIHJlbGF0aW9uc2hpcHMgaW4gaG93IG9wdGltaXplZCBDb2RlQmxv
Y2tzCisgICAgICAgICAgICAvLyBwb2ludCB0byBvdGhlciBDb2RlQmxvY2tzLiBXZSBkb24ndCB3
YW50IHRvIGhhdmUgdGhlbSBiZQorICAgICAgICAgICAgLy8gcGFydCBvZiB0aGUgd2VhayBwb2lu
dGVyIHNldC4gRm9yIGV4YW1wbGUsIGFuIG9wdGltaXplZCBDb2RlQmxvY2sKKyAgICAgICAgICAg
IC8vIGhhdmluZyBhIHdlYWsgcG9pbnRlciB0byBpdHNlbGYgd2lsbCBjYXVzZSBpdCB0byBnZXQg
Y29sbGVjdGVkLgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWpzRHluYW1pY0Nhc3Q8Q29k
ZUJsb2NrKj4odGFyZ2V0KSk7CisKICAgICAgICAgICAgIGNvbW1vbi0+d2Vha1JlZmVyZW5jZXMu
YXBwZW5kKAogICAgICAgICAgICAgICAgIFdyaXRlQmFycmllcjxKU0NlbGw+KHZtLCBtX2NvZGVC
bG9jaywgdGFyZ2V0KSk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMjExMjI5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM2NSw3
ICsyMzY1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlKSB7CiAg
ICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIEFycmF5aWZ5VG9TdHJ1Y3R1
cmUsIG9yaWdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhzdHJ1Y3R1cmUpLCBP
cEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgRWRnZShhcnJheSwgQ2VsbFVzZSksIGluZGV4RWRn
ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5yZWdpc3RlclN0cnVj
dHVyZShzdHJ1Y3R1cmUpKSwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIEVkZ2UoYXJyYXks
IENlbGxVc2UpLCBpbmRleEVkZ2UpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIEFycmF5aWZ5LCBvcmlnaW4sCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMjExMjI5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTg4LDYgKzg4LDEwIEBAIEdyYXBoOjpHcmFwaChWTSYgdm0sIFBsYW4mIHBsYW4sIExvbmdM
aXYKICAgICAKICAgICBtX2luZGV4aW5nQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb3dJbmRl
eGluZz4oKnRoaXMpOwogICAgIG1fYWJzdHJhY3RWYWx1ZXNDYWNoZSA9IHN0ZDo6bWFrZV91bmlx
dWU8Rmxvd01hcDxBYnN0cmFjdFZhbHVlPj4oKnRoaXMpOworCisgICAgcmVnaXN0ZXJTdHJ1Y3R1
cmUodm0uc3RydWN0dXJlU3RydWN0dXJlLmdldCgpKTsKKyAgICB0aGlzLT5zdHJpbmdTdHJ1Y3R1
cmUgPSByZWdpc3RlclN0cnVjdHVyZSh2bS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOworICAgIHRo
aXMtPnN5bWJvbFN0cnVjdHVyZSA9IHJlZ2lzdGVyU3RydWN0dXJlKHZtLnN5bWJvbFN0cnVjdHVy
ZS5nZXQoKSk7CiB9CiAKIEdyYXBoOjp+R3JhcGgoKQpAQCAtMjQ1LDE1ICsyNDksMTUgQEAgdm9p
ZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdAogICAgIGlmIChub2RlLT5oYXNQ
cm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcigpKQogICAgICAgICBvdXQucHJpbnQoY29tbWEsIG5v
ZGUtPnByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yKCkpOwogICAgIGlmIChub2RlLT5oYXNTdHJ1
Y3R1cmVTZXQoKSkKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCBpbkNvbnRleHQobm9kZS0+c3Ry
dWN0dXJlU2V0KCksIGNvbnRleHQpKTsKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCBpbkNvbnRl
eHQobm9kZS0+c3RydWN0dXJlU2V0KCkudG9TdHJ1Y3R1cmVTZXQoKSwgY29udGV4dCkpOwogICAg
IGlmIChub2RlLT5oYXNTdHJ1Y3R1cmUoKSkKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCBpbkNv
bnRleHQoKm5vZGUtPnN0cnVjdHVyZSgpLCBjb250ZXh0KSk7CisgICAgICAgIG91dC5wcmludChj
b21tYSwgaW5Db250ZXh0KCpub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSwgY29udGV4dCkpOwogICAg
IGlmIChub2RlLT5oYXNUcmFuc2l0aW9uKCkpIHsKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBw
b2ludGVyRHVtcEluQ29udGV4dChub2RlLT50cmFuc2l0aW9uKCksIGNvbnRleHQpKTsKICNpZiBV
U0UoSlNWQUxVRTY0KQogICAgICAgICBvdXQucHJpbnQoIiwgSUQ6Iiwgbm9kZS0+dHJhbnNpdGlv
bigpLT5uZXh0LT5pZCgpKTsKICNlbHNlCi0gICAgICAgIG91dC5wcmludCgiLCBJRDoiLCBSYXdQ
b2ludGVyKG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dCkpOworICAgICAgICBvdXQucHJpbnQoIiwg
SUQ6IiwgUmF3UG9pbnRlcihub2RlLT50cmFuc2l0aW9uKCktPm5leHQuZ2V0KCkpKTsKICNlbmRp
ZgogICAgIH0KICAgICBpZiAobm9kZS0+aGFzQ2VsbE9wZXJhbmQoKSkgewpAQCAtMTIwNyw3ICsx
MjExLDcgQEAgdW5zaWduZWQgR3JhcGg6OnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZvcgogfQogCiBK
U1ZhbHVlIEdyYXBoOjp0cnlHZXRDb25zdGFudFByb3BlcnR5KAotICAgIEpTVmFsdWUgYmFzZSwg
Y29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkK
KyAgICBKU1ZhbHVlIGJhc2UsIGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVy
ZVNldCwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogewogICAgIGlmICghYmFzZSB8fCAhYmFzZS5p
c09iamVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwpAQCAtMTIxNSw4ICsxMjE5LDcg
QEAgSlNWYWx1ZSBHcmFwaDo6dHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eSgKICAgICBKU09iamVjdCog
b2JqZWN0ID0gYXNPYmplY3QoYmFzZSk7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gc3Ry
dWN0dXJlU2V0LnNpemUoKTsgaS0tOykgewotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IHN0cnVjdHVyZVNldFtpXTsKLSAgICAgICAgYXNzZXJ0SXNSZWdpc3RlcmVkKHN0cnVjdHVyZSk7
CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gc3RydWN0dXJlU2V0W2ld
OwogICAgICAgICAKICAgICAgICAgV2F0Y2hwb2ludFNldCogc2V0ID0gc3RydWN0dXJlLT5wcm9w
ZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNldChvZmZzZXQpOwogICAgICAgICBpZiAoIXNldCB8
fCAhc2V0LT5pc1N0aWxsVmFsaWQoKSkKQEAgLTEyNDgsNyArMTI1MSw3IEBAIEpTVmFsdWUgR3Jh
cGg6OnRyeUdldENvbnN0YW50UHJvcGVydHkoCiAgICAgLy8gaW5jb21wYXRpYmxlIHdpdGggdGhl
IGdldERpcmVjdCB3ZSdyZSB0cnlpbmcgdG8gZG8uIFRoZSBlYXNpZXN0IHdheSB0byBkbyB0aGF0
IGlzIHRvCiAgICAgLy8gZGV0ZXJtaW5lIGlmIHRoZSBzdHJ1Y3R1cmUgYmVsb25ncyB0byB0aGUg
cHJvdmVuIHNldC4KICAgICAKLSAgICBpZiAoIXN0cnVjdHVyZVNldC5jb250YWlucyhvYmplY3Qt
PnN0cnVjdHVyZSgpKSkKKyAgICBpZiAoIXN0cnVjdHVyZVNldC50b1N0cnVjdHVyZVNldCgpLmNv
bnRhaW5zKG9iamVjdC0+c3RydWN0dXJlKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwog
ICAgIAogICAgIHJldHVybiBvYmplY3QtPmdldERpcmVjdChvZmZzZXQpOwpAQCAtMTI1Niw3ICsx
MjU5LDcgQEAgSlNWYWx1ZSBHcmFwaDo6dHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eSgKIAogSlNWYWx1
ZSBHcmFwaDo6dHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eShKU1ZhbHVlIGJhc2UsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiB7Ci0gICAgcmV0dXJuIHRyeUdldENv
bnN0YW50UHJvcGVydHkoYmFzZSwgU3RydWN0dXJlU2V0KHN0cnVjdHVyZSksIG9mZnNldCk7Cisg
ICAgcmV0dXJuIHRyeUdldENvbnN0YW50UHJvcGVydHkoYmFzZSwgUmVnaXN0ZXJlZFN0cnVjdHVy
ZVNldChyZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpKSwgb2Zmc2V0KTsKIH0KIAogSlNWYWx1
ZSBHcmFwaDo6dHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eSgKQEAgLTEyNzgsMTMgKzEyODEsMTMgQEAg
SlNWYWx1ZSBHcmFwaDo6dHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eShjbwogfQogCiBBYnN0cmFjdFZh
bHVlIEdyYXBoOjppbmZlcnJlZFZhbHVlRm9yUHJvcGVydHkoCi0gICAgY29uc3QgU3RydWN0dXJl
U2V0JiBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUg
Y2xvYmJlclN0YXRlKQorICAgIGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIGJhc2UsIFVu
aXF1ZWRTdHJpbmdJbXBsKiB1aWQsIFN0cnVjdHVyZUNsb2JiZXJTdGF0ZSBjbG9iYmVyU3RhdGUp
CiB7CiAgICAgQWJzdHJhY3RWYWx1ZSByZXN1bHQ7CiAgICAgYmFzZS5mb3JFYWNoKAotICAgICAg
ICBbJl0gKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7CisgICAgICAgIFsmXSAoUmVnaXN0ZXJlZFN0
cnVjdHVyZSBzdHJ1Y3R1cmUpIHsKICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUgdmFsdWU7Ci0g
ICAgICAgICAgICB2YWx1ZS5zZXQoKnRoaXMsIGluZmVycmVkVHlwZUZvclByb3BlcnR5KHN0cnVj
dHVyZSwgdWlkKSk7CisgICAgICAgICAgICB2YWx1ZS5zZXQoKnRoaXMsIGluZmVycmVkVHlwZUZv
clByb3BlcnR5KHN0cnVjdHVyZS5nZXQoKSwgdWlkKSk7CiAgICAgICAgICAgICByZXN1bHQubWVy
Z2UodmFsdWUpOwogICAgICAgICB9KTsKICAgICBpZiAoY2xvYmJlclN0YXRlID09IFN0cnVjdHVy
ZXNBcmVDbG9iYmVyZWQpCkBAIC0xNDEzLDYxICsxNDE2LDE4IEBAIHZvaWQgR3JhcGg6OnZpc2l0
Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHYKICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJl
ZCh2YWx1ZS0+dmFsdWUoKSk7CiAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQodmFs
dWUtPnN0cnVjdHVyZSgpKTsKICAgICB9Ci0gICAgCi0gICAgZm9yIChCbG9ja0luZGV4IGJsb2Nr
SW5kZXggPSBudW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewotICAgICAgICBCYXNpY0Jsb2Nr
KiBibG9jayA9IHRoaXMtPmJsb2NrKGJsb2NrSW5kZXgpOwotICAgICAgICBpZiAoIWJsb2NrKQot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAotICAgICAgICBmb3IgKGF1dG8qIG5vZGUg
OiAqYmxvY2spIHsKLSAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAg
ICAgY2FzZSBDaGVja1N0cnVjdHVyZToKLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBub2RlLT5zdHJ1Y3R1cmVTZXQoKS5zaXplKCk7IGktLTspCi0gICAgICAgICAgICAgICAgICAg
IHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQobm9kZS0+c3RydWN0dXJlU2V0KClbaV0pOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSBO
ZXdPYmplY3Q6Ci0gICAgICAgICAgICBjYXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6Ci0gICAgICAg
ICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKLSAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVu
ZFVuYmFycmllcmVkKG5vZGUtPnN0cnVjdHVyZSgpKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgUHV0U3RydWN0dXJlOgotICAgICAg
ICAgICAgY2FzZSBBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKLSAgICAgICAgICAgIGNhc2UgUmVh
bGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKLSAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVu
YmFycmllcmVkKG5vZGUtPnRyYW5zaXRpb24oKS0+cHJldmlvdXMpOwotICAgICAgICAgICAgICAg
IHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQobm9kZS0+dHJhbnNpdGlvbigpLT5uZXh0KTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2Ug
TXVsdGlHZXRCeU9mZnNldDoKLSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IE11bHRpR2V0QnlP
ZmZzZXRDYXNlJiBnZXRDYXNlIDogbm9kZS0+bXVsdGlHZXRCeU9mZnNldERhdGEoKS5jYXNlcykg
ewotICAgICAgICAgICAgICAgICAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogZ2V0Q2Fz
ZS5zZXQoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVy
ZWQoc3RydWN0dXJlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0
OgotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG5vZGUtPm11bHRpUHV0QnlPZmZz
ZXREYXRhKCkudmFyaWFudHMuc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgICAgICAgICAgICAgIFB1
dEJ5SWRWYXJpYW50JiB2YXJpYW50ID0gbm9kZS0+bXVsdGlQdXRCeU9mZnNldERhdGEoKS52YXJp
YW50c1tpXTsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RydWN0dXJlU2V0JiBzZXQgPSB2
YXJpYW50Lm9sZFN0cnVjdHVyZSgpOwotICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGogPSBzZXQuc2l6ZSgpOyBqLS07KQotICAgICAgICAgICAgICAgICAgICAgICAgdmlzaXRvci5h
cHBlbmRVbmJhcnJpZXJlZChzZXRbal0pOwotICAgICAgICAgICAgICAgICAgICBpZiAodmFyaWFu
dC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb24pCi0gICAgICAgICAgICAgICAg
ICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKHZhcmlhbnQubmV3U3RydWN0dXJlKCkp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9CiB9CiAKIEZyb3plblZhbHVlKiBHcmFwaDo6ZnJl
ZXplKEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKFVOTElLRUxZKCF2YWx1ZSkpCiAgICAgICAg
IHJldHVybiBGcm96ZW5WYWx1ZTo6ZW1wdHlTaW5nbGV0b24oKTsKKworICAgIC8vIFRoZXJlIGFy
ZSB3ZWlyZCByZWxhdGlvbnNoaXBzIGluIGhvdyBvcHRpbWl6ZWQgQ29kZUJsb2NrcworICAgIC8v
IHBvaW50IHRvIG90aGVyIENvZGVCbG9ja3MuIFdlIGRvbid0IHdhbnQgdG8gaGF2ZSB0aGVtIGJl
CisgICAgLy8gcGFydCBvZiB0aGUgd2VhayBwb2ludGVyIHNldC4gRm9yIGV4YW1wbGUsIGFuIG9w
dGltaXplZCBDb2RlQmxvY2sKKyAgICAvLyBoYXZpbmcgYSB3ZWFrIHBvaW50ZXIgdG8gaXRzZWxm
IHdpbGwgY2F1c2UgaXQgdG8gZ2V0IGNvbGxlY3RlZC4KKyAgICBSRUxFQVNFX0FTU0VSVCghanNE
eW5hbWljQ2FzdDxDb2RlQmxvY2sqPih2YWx1ZSkpOwogICAgIAogICAgIGF1dG8gcmVzdWx0ID0g
bV9mcm96ZW5WYWx1ZU1hcC5hZGQoSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKSwgbnVsbHB0cik7CiAg
ICAgaWYgKExJS0VMWSghcmVzdWx0LmlzTmV3RW50cnkpKQpAQCAtMTUwNywxMiArMTQ2NywxNCBA
QCB2b2lkIEdyYXBoOjpjb252ZXJ0VG9TdHJvbmdDb25zdGFudChOb2RlCiAgICAgY29udmVydFRv
Q29uc3RhbnQobm9kZSwgZnJlZXplU3Ryb25nKHZhbHVlKSk7CiB9CiAKLVN0cnVjdHVyZVJlZ2lz
dHJhdGlvblJlc3VsdCBHcmFwaDo6cmVnaXN0ZXJTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCitSZWdpc3RlcmVkU3RydWN0dXJlIEdyYXBoOjpyZWdpc3RlclN0cnVjdHVyZShTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlUmVnaXN0cmF0aW9uUmVzdWx0JiByZXN1bHQpCiB7CiAg
ICAgbV9wbGFuLndlYWtSZWZlcmVuY2VzLmFkZExhemlseShzdHJ1Y3R1cmUpOwogICAgIGlmICht
X3BsYW4ud2F0Y2hwb2ludHMuY29uc2lkZXIoc3RydWN0dXJlKSkKLSAgICAgICAgcmV0dXJuIFN0
cnVjdHVyZVJlZ2lzdGVyZWRBbmRXYXRjaGVkOwotICAgIHJldHVybiBTdHJ1Y3R1cmVSZWdpc3Rl
cmVkTm9ybWFsbHk7CisgICAgICAgIHJlc3VsdCA9IFN0cnVjdHVyZVJlZ2lzdGVyZWRBbmRXYXRj
aGVkOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gU3RydWN0dXJlUmVnaXN0ZXJlZE5vcm1h
bGx5OworICAgIHJldHVybiBSZWdpc3RlcmVkU3RydWN0dXJlOjpjcmVhdGVQcml2YXRlKHN0cnVj
dHVyZSk7CiB9CiAKIHZvaWQgR3JhcGg6OmFzc2VydElzUmVnaXN0ZXJlZChTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9u
IDIxMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjEzLDcgKzIxMywxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb252ZXJ0VG9D
b25zdGFudChOb2RlKiBub2RlLCBKU1ZhbHVlIHZhbHVlKTsKICAgICB2b2lkIGNvbnZlcnRUb1N0
cm9uZ0NvbnN0YW50KE5vZGUqIG5vZGUsIEpTVmFsdWUgdmFsdWUpOwogICAgIAotICAgIFN0cnVj
dHVyZVJlZ2lzdHJhdGlvblJlc3VsdCByZWdpc3RlclN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSk7CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSByZWdpc3RlclN0cnVjdHVyZShTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIFN0cnVjdHVyZVJlZ2lzdHJhdGlvblJlc3Vs
dCBpZ25vcmVkOworICAgICAgICByZXR1cm4gcmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlLCBp
Z25vcmVkKTsKKyAgICB9CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSByZWdpc3RlclN0cnVjdHVy
ZShTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmVSZWdpc3RyYXRpb25SZXN1bHQmKTsKICAgICB2b2lkIGFz
c2VydElzUmVnaXN0ZXJlZChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSk7CiAgICAgCiAgICAgLy8gQ29k
ZUJsb2NrIGlzIG9wdGlvbmFsLCBidXQgbWF5IGFsbG93IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24g
dG8gYmUgZHVtcGVkIChlLmcuIElkZW50aWZpZXIgbmFtZXMpLgpAQCAtMzQxLDEyICszNDYsMjYg
QEAgcHVibGljOgogICAgIAogICAgIHN0YXRpYyBjb25zdCBjaGFyICpvcE5hbWUoTm9kZVR5cGUp
OwogICAgIAotICAgIFN0cnVjdHVyZVNldCogYWRkU3RydWN0dXJlU2V0KGNvbnN0IFN0cnVjdHVy
ZVNldCYgc3RydWN0dXJlU2V0KQorICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQqIGFkZFN0cnVj
dHVyZVNldChjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCkKICAgICB7CisgICAgICAg
IG1fc3RydWN0dXJlU2V0cy5hcHBlbmQoKTsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNl
dCogcmVzdWx0ID0gJm1fc3RydWN0dXJlU2V0cy5sYXN0KCk7CisKICAgICAgICAgZm9yIChTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA6IHN0cnVjdHVyZVNldCkKLSAgICAgICAgICAgIHJlZ2lzdGVyU3Ry
dWN0dXJlKHN0cnVjdHVyZSk7Ci0gICAgICAgIG1fc3RydWN0dXJlU2V0LmFwcGVuZChzdHJ1Y3R1
cmVTZXQpOwotICAgICAgICByZXR1cm4gJm1fc3RydWN0dXJlU2V0Lmxhc3QoKTsKKyAgICAgICAg
ICAgIHJlc3VsdC0+YWRkKHJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkpOworCisgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCogYWRk
U3RydWN0dXJlU2V0KGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCkK
KyAgICB7CisgICAgICAgIG1fc3RydWN0dXJlU2V0cy5hcHBlbmQoKTsKKyAgICAgICAgUmVnaXN0
ZXJlZFN0cnVjdHVyZVNldCogcmVzdWx0ID0gJm1fc3RydWN0dXJlU2V0cy5sYXN0KCk7CisKKyAg
ICAgICAgZm9yIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA6IHN0cnVjdHVyZVNldCkK
KyAgICAgICAgICAgIHJlc3VsdC0+YWRkKHN0cnVjdHVyZSk7CisKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CiAgICAgCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdEZvcihD
b2RlT3JpZ2luIGNvZGVPcmlnaW4pCkBAIC03MTUsNyArNzM0LDcgQEAgcHVibGljOgogICAgIH0K
IAogICAgIEFic3RyYWN0VmFsdWUgaW5mZXJyZWRWYWx1ZUZvclByb3BlcnR5KAotICAgICAgICBj
b25zdCBTdHJ1Y3R1cmVTZXQmIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIFN0cnVjdHVy
ZUNsb2JiZXJTdGF0ZSA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkKTsKKyAgICAgICAgY29uc3QgUmVn
aXN0ZXJlZFN0cnVjdHVyZVNldCYgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgU3RydWN0
dXJlQ2xvYmJlclN0YXRlID0gU3RydWN0dXJlc0FyZVdhdGNoZWQpOwogCiAgICAgLy8gVGhpcyB1
c2VzIGVpdGhlciBjb25zdGFudCBwcm9wZXJ0eSBpbmZlcmVuY2Ugb3IgcHJvcGVydHkgdHlwZSBp
bmZlcmVuY2UgdG8gZGVyaXZlIGEgZ29vZCBhYnN0cmFjdAogICAgIC8vIHZhbHVlIGZvciBzb21l
IHByb3BlcnR5IGFjY2Vzc2VkIHdpdGggdGhlIGdpdmVuIGFic3RyYWN0IHZhbHVlIGJhc2UuCkBA
IC04MTgsNyArODM3LDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHJlcXVpcmVkUmVnaXN0ZXJD
b3VudEZvckV4aXQoKTsKICAgICB1bnNpZ25lZCByZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGVj
dXRpb25BbmRFeGl0KCk7CiAgICAgCi0gICAgSlNWYWx1ZSB0cnlHZXRDb25zdGFudFByb3BlcnR5
KEpTVmFsdWUgYmFzZSwgY29uc3QgU3RydWN0dXJlU2V0JiwgUHJvcGVydHlPZmZzZXQpOworICAg
IEpTVmFsdWUgdHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eShKU1ZhbHVlIGJhc2UsIGNvbnN0IFJlZ2lz
dGVyZWRTdHJ1Y3R1cmVTZXQmLCBQcm9wZXJ0eU9mZnNldCk7CiAgICAgSlNWYWx1ZSB0cnlHZXRD
b25zdGFudFByb3BlcnR5KEpTVmFsdWUgYmFzZSwgU3RydWN0dXJlKiwgUHJvcGVydHlPZmZzZXQp
OwogICAgIEpTVmFsdWUgdHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eShKU1ZhbHVlIGJhc2UsIGNvbnN0
IFN0cnVjdHVyZUFic3RyYWN0VmFsdWUmLCBQcm9wZXJ0eU9mZnNldCk7CiAgICAgSlNWYWx1ZSB0
cnlHZXRDb25zdGFudFByb3BlcnR5KGNvbnN0IEFic3RyYWN0VmFsdWUmLCBQcm9wZXJ0eU9mZnNl
dCk7CkBAIC05MTAsNyArOTI5LDYgQEAgcHVibGljOgogICAgIAogICAgIFNlZ21lbnRlZFZlY3Rv
cjxWYXJpYWJsZUFjY2Vzc0RhdGEsIDE2PiBtX3ZhcmlhYmxlQWNjZXNzRGF0YTsKICAgICBTZWdt
ZW50ZWRWZWN0b3I8QXJndW1lbnRQb3NpdGlvbiwgOD4gbV9hcmd1bWVudFBvc2l0aW9uczsKLSAg
ICBTZWdtZW50ZWRWZWN0b3I8U3RydWN0dXJlU2V0LCAxNj4gbV9zdHJ1Y3R1cmVTZXQ7CiAgICAg
QmFnPFRyYW5zaXRpb24+IG1fdHJhbnNpdGlvbnM7CiAgICAgU2VnbWVudGVkVmVjdG9yPE5ld0Fy
cmF5QnVmZmVyRGF0YSwgND4gbV9uZXdBcnJheUJ1ZmZlckRhdGE7CiAgICAgQmFnPEJyYW5jaERh
dGE+IG1fYnJhbmNoRGF0YTsKQEAgLTk2MCw2ICs5NzgsOSBAQCBwdWJsaWM6CiAgICAgc3RkOjp1
bmlxdWVfcHRyPEZsb3dJbmRleGluZz4gbV9pbmRleGluZ0NhY2hlOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxGbG93TWFwPEFic3RyYWN0VmFsdWU+PiBtX2Fic3RyYWN0VmFsdWVzQ2FjaGU7CiAKKyAg
ICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cmluZ1N0cnVjdHVyZTsKKyAgICBSZWdpc3RlcmVkU3Ry
dWN0dXJlIHN5bWJvbFN0cnVjdHVyZTsKKwogcHJpdmF0ZToKICAgICB2b2lkIGFkZE5vZGVUb01h
cEJ5SW5kZXgoTm9kZSopOwogCkBAIC05OTcsNiArMTAxOCw3IEBAIHByaXZhdGU6CiAKICAgICBW
ZWN0b3I8Tm9kZSosIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX25vZGVzQnlJbmRleDsKICAg
ICBWZWN0b3I8dW5zaWduZWQsIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX25vZGVJbmRleEZy
ZWVMaXN0OworICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcmVkU3RydWN0dXJlU2V0LCAxNj4g
bV9zdHJ1Y3R1cmVTZXRzOwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gMjEx
MjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNDIsMTQgKzI0MiwxNCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KLSAgICBKdW1wIGJyYW5jaFdlYWtTdHJ1Y3R1cmUoUmVsYXRpb25h
bENvbmRpdGlvbiBjb25kLCBUIGxlZnQsIFN0cnVjdHVyZSogd2Vha1N0cnVjdHVyZSkKKyAgICBK
dW1wIGJyYW5jaFdlYWtTdHJ1Y3R1cmUoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBUIGxlZnQs
IFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgd2Vha1N0cnVjdHVyZSkKICAgICB7CisgICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gd2Vha1N0cnVjdHVyZS5nZXQoKTsKICNpZiBVU0UoSlNWQUxVRTY0
KQotICAgICAgICBKdW1wIHJlc3VsdCA9IGJyYW5jaDMyKGNvbmQsIGxlZnQsIFRydXN0ZWRJbW0z
Mih3ZWFrU3RydWN0dXJlLT5pZCgpKSk7Ci0gICAgICAgIGFkZFdlYWtSZWZlcmVuY2Uod2Vha1N0
cnVjdHVyZSk7CisgICAgICAgIEp1bXAgcmVzdWx0ID0gYnJhbmNoMzIoY29uZCwgbGVmdCwgVHJ1
c3RlZEltbTMyKHN0cnVjdHVyZS0+aWQoKSkpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogI2Vs
c2UKLSAgICAgICAgcmV0dXJuIGJyYW5jaFdlYWtQdHIoY29uZCwgbGVmdCwgd2Vha1N0cnVjdHVy
ZSk7CisgICAgICAgIHJldHVybiBicmFuY2hQdHIoY29uZCwgbGVmdCwgVHJ1c3RlZEltbVB0cihz
dHJ1Y3R1cmUpKTsKICNlbmRpZgogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdNdWx0aUdldEJ5T2Zmc2V0RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdNdWx0aUdldEJ5T2Zmc2V0RGF0YS5jcHAJKHJldmlzaW9uIDIx
MTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTXVsdGlHZXRCeU9mZnNldERh
dGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgR2V0QnlPZmZzZXRN
ZXRob2Q6OmR1bXAoUHJpbnRTdHJlYW0KIAogdm9pZCBNdWx0aUdldEJ5T2Zmc2V0Q2FzZTo6ZHVt
cEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QK
IHsKLSAgICBvdXQucHJpbnQoaW5Db250ZXh0KG1fc2V0LCBjb250ZXh0KSwgIjoiLCBpbkNvbnRl
eHQobV9tZXRob2QsIGNvbnRleHQpKTsKKyAgICBvdXQucHJpbnQoaW5Db250ZXh0KG1fc2V0LnRv
U3RydWN0dXJlU2V0KCksIGNvbnRleHQpLCAiOiIsIGluQ29udGV4dChtX21ldGhvZCwgY29udGV4
dCkpOwogfQogCiB2b2lkIE11bHRpR2V0QnlPZmZzZXRDYXNlOjpkdW1wKFByaW50U3RyZWFtJiBv
dXQpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR011bHRpR2V0QnlP
ZmZzZXREYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdN
dWx0aUdldEJ5T2Zmc2V0RGF0YS5oCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR011bHRpR2V0QnlPZmZzZXREYXRhLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCisjaW5jbHVkZSAiREZHUmVn
aXN0ZXJlZFN0cnVjdHVyZVNldC5oIgogI2luY2x1ZGUgIkR1bXBDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVTZXQuaCIKQEAgLTExOSwyMSArMTIw
LDIxIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogICAgIAotICAgIE11bHRpR2V0QnlPZmZzZXRD
YXNlKGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0LCBjb25zdCBHZXRCeU9mZnNldE1ldGhvZCYgbWV0
aG9kKQorICAgIE11bHRpR2V0QnlPZmZzZXRDYXNlKGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVT
ZXQmIHNldCwgY29uc3QgR2V0QnlPZmZzZXRNZXRob2QmIG1ldGhvZCkKICAgICAgICAgOiBtX3Nl
dChzZXQpCiAgICAgICAgICwgbV9tZXRob2QobWV0aG9kKQogICAgIHsKICAgICB9CiAgICAgCi0g
ICAgU3RydWN0dXJlU2V0JiBzZXQoKSB7IHJldHVybiBtX3NldDsgfQotICAgIGNvbnN0IFN0cnVj
dHVyZVNldCYgc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zZXQ7IH0KKyAgICBSZWdpc3RlcmVkU3Ry
dWN0dXJlU2V0JiBzZXQoKSB7IHJldHVybiBtX3NldDsgfQorICAgIGNvbnN0IFJlZ2lzdGVyZWRT
dHJ1Y3R1cmVTZXQmIHNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2V0OyB9CiAgICAgY29uc3QgR2V0
QnlPZmZzZXRNZXRob2QmIG1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0aG9kOyB9CiAgICAg
CiAgICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25z
dDsKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBT
dHJ1Y3R1cmVTZXQgbV9zZXQ7CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBtX3NldDsKICAg
ICBHZXRCeU9mZnNldE1ldGhvZCBtX21ldGhvZDsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlLmNwcAkocmV2aXNpb24gMjExMjI5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc1LDcgKzE3NSw3IEBA
IHZvaWQgTm9kZTo6Y29udmVydFRvUHV0SGludChjb25zdCBQcm9tb3QKIHZvaWQgTm9kZTo6Y29u
dmVydFRvUHV0U3RydWN0dXJlSGludChOb2RlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgQVNTRVJUKG1f
b3AgPT0gUHV0U3RydWN0dXJlKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlLT5jYXN0Q29uc3RhbnQ8
U3RydWN0dXJlKj4oKSA9PSB0cmFuc2l0aW9uKCktPm5leHQpOworICAgIEFTU0VSVChzdHJ1Y3R1
cmUtPmNhc3RDb25zdGFudDxTdHJ1Y3R1cmUqPigpID09IHRyYW5zaXRpb24oKS0+bmV4dC5nZXQo
KSk7CiAgICAgY29udmVydFRvUHV0SGludChTdHJ1Y3R1cmVQTG9jLCBjaGlsZDEoKS5ub2RlKCks
IHN0cnVjdHVyZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShy
ZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsOCBAQAogI2luY2x1ZGUgIkRGR05vZGVUeXBlLmgi
CiAjaW5jbHVkZSAiREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oIgogI2luY2x1ZGUgIkRG
R09wSW5mby5oIgorI2luY2x1ZGUgIkRGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRl
ICJERkdSZWdpc3RlcmVkU3RydWN0dXJlU2V0LmgiCiAjaW5jbHVkZSAiREZHVHJhbnNpdGlvbi5o
IgogI2luY2x1ZGUgIkRGR1VzZUtpbmQuaCIKICNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0Rh
dGEuaCIKQEAgLTQxMCwxMCArNDEyLDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVtb3ZlKCk7
CiAKLSAgICB2b2lkIGNvbnZlcnRUb0NoZWNrU3RydWN0dXJlKFN0cnVjdHVyZVNldCogc2V0KQor
ICAgIHZvaWQgY29udmVydFRvQ2hlY2tTdHJ1Y3R1cmUoUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCog
c2V0KQogICAgIHsKICAgICAgICAgc2V0T3BBbmREZWZhdWx0RmxhZ3MoQ2hlY2tTdHJ1Y3R1cmUp
OwotICAgICAgICBtX29wSW5mbyA9IHNldDsgCisgICAgICAgIG1fb3BJbmZvID0gc2V0OwogICAg
IH0KIAogICAgIHZvaWQgY29udmVydFRvQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGUoTm9kZSogc3Ry
dWN0dXJlKQpAQCAtMTYxNCwxMCArMTYxNiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9
CiAgICAgCi0gICAgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQoKQorICAgIGNvbnN0IFJlZ2lz
dGVyZWRTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCgpCiAgICAgewogICAgICAgICBBU1NFUlQo
aGFzU3RydWN0dXJlU2V0KCkpOwotICAgICAgICByZXR1cm4gKm1fb3BJbmZvLmFzPFN0cnVjdHVy
ZVNldCo+KCk7CisgICAgICAgIHJldHVybiAqbV9vcEluZm8uYXM8UmVnaXN0ZXJlZFN0cnVjdHVy
ZVNldCo+KCk7CiAgICAgfQogICAgIAogICAgIGJvb2wgaGFzU3RydWN0dXJlKCkKQEAgLTE2MzIs
MTAgKzE2MzQsMTAgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlKCkKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSgpCiAg
ICAgewogICAgICAgICBBU1NFUlQoaGFzU3RydWN0dXJlKCkpOwotICAgICAgICByZXR1cm4gbV9v
cEluZm8uYXM8U3RydWN0dXJlKj4oKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzUmVnaXN0
ZXJlZFN0cnVjdHVyZSgpOwogICAgIH0KICAgICAKICAgICBib29sIGhhc1N0b3JhZ2VBY2Nlc3NE
YXRhKCkKQEAgLTI1MTMsNiArMjUxNSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgdS5pbnQ2
NCA9IDA7CiAgICAgICAgICAgICB1LmNvbnN0UG9pbnRlciA9IGNvbnN0UG9pbnRlcjsKICAgICAg
ICAgfQorICAgICAgICBPcEluZm9XcmFwcGVyKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJl
KQorICAgICAgICB7CisgICAgICAgICAgICB1LmludDY0ID0gMDsKKyAgICAgICAgICAgIHUucG9p
bnRlciA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RydWN0dXJlKTsKKyAgICAgICAgfQogICAgICAg
ICBPcEluZm9XcmFwcGVyJiBvcGVyYXRvcj0odWludDMyX3QgaW50MzIpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIHUuaW50NjQgPSAwOwpAQCAtMjU0Miw2ICsyNTQ5LDEyIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICB1LmNvbnN0UG9pbnRlciA9IGNvbnN0UG9pbnRlcjsKICAgICAgICAgICAgIHJl
dHVybiAqdGhpczsKICAgICAgICAgfQorICAgICAgICBPcEluZm9XcmFwcGVyJiBvcGVyYXRvcj0o
UmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHUu
aW50NjQgPSAwOworICAgICAgICAgICAgdS5wb2ludGVyID0gYml0d2lzZV9jYXN0PHZvaWQqPihz
dHJ1Y3R1cmUpOworICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICB9CiAgICAgICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgICAgICBBTFdBWVNfSU5MSU5FIGF1dG8gYXMoKSBj
b25zdCAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVl
ICYmICFzdGQ6OmlzX2NvbnN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8VD46OnR5cGU+
Ojp2YWx1ZSwgVD46OnR5cGUKICAgICAgICAgewpAQCAtMjU2Miw2ICsyNTc1LDExIEBAIHByaXZh
dGU6CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiB1LmludDY0OwogICAgICAgICB9Cisg
ICAgICAgIEFMV0FZU19JTkxJTkUgUmVnaXN0ZXJlZFN0cnVjdHVyZSBhc1JlZ2lzdGVyZWRTdHJ1
Y3R1cmUoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0
PFJlZ2lzdGVyZWRTdHJ1Y3R1cmU+KHUucG9pbnRlcik7CisgICAgICAgIH0KKwogICAgICAgICB1
bmlvbiB7CiAgICAgICAgICAgICB1aW50MzJfdCBpbnQzMjsKICAgICAgICAgICAgIHVpbnQ2NF90
IGludDY0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0
aW9uU2lua2luZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMTEyMjkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5n
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODYsMjggKzE4NiwyOCBAQCBwdWJsaWM6CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBBbGxvY2F0aW9uJiBzZXRTdHJ1Y3R1cmVzKGNvbnN0IFN0
cnVjdHVyZVNldCYgc3RydWN0dXJlcykKKyAgICBBbGxvY2F0aW9uJiBzZXRTdHJ1Y3R1cmVzKGNv
bnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZXMpCiAgICAgewogICAgICAgICBB
U1NFUlQoaGFzU3RydWN0dXJlcygpICYmICFzdHJ1Y3R1cmVzLmlzRW1wdHkoKSk7CiAgICAgICAg
IG1fc3RydWN0dXJlcyA9IHN0cnVjdHVyZXM7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9
CiAKLSAgICBBbGxvY2F0aW9uJiBtZXJnZVN0cnVjdHVyZXMoY29uc3QgU3RydWN0dXJlU2V0JiBz
dHJ1Y3R1cmVzKQorICAgIEFsbG9jYXRpb24mIG1lcmdlU3RydWN0dXJlcyhjb25zdCBSZWdpc3Rl
cmVkU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVzKQogICAgIHsKICAgICAgICAgQVNTRVJUKGhhc1N0
cnVjdHVyZXMoKSB8fCBzdHJ1Y3R1cmVzLmlzRW1wdHkoKSk7CiAgICAgICAgIG1fc3RydWN0dXJl
cy5tZXJnZShzdHJ1Y3R1cmVzKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAg
IEFsbG9jYXRpb24mIGZpbHRlclN0cnVjdHVyZXMoY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1
cmVzKQorICAgIEFsbG9jYXRpb24mIGZpbHRlclN0cnVjdHVyZXMoY29uc3QgUmVnaXN0ZXJlZFN0
cnVjdHVyZVNldCYgc3RydWN0dXJlcykKICAgICB7CiAgICAgICAgIEFTU0VSVChoYXNTdHJ1Y3R1
cmVzKCkpOwogICAgICAgICBtX3N0cnVjdHVyZXMuZmlsdGVyKHN0cnVjdHVyZXMpOwogICAgICAg
ICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1
cmVzKCkgY29uc3QKKyAgICBjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVz
KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZXM7CiAgICAgfQpAQCAt
MjgzLDcgKzI4Myw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICBvdXQucHJpbnQoIkFs
bG9jYXRpb24oIik7CiAgICAgICAgIGlmICghbV9zdHJ1Y3R1cmVzLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG91dC5wcmludChpbkNvbnRleHQobV9zdHJ1Y3R1cmVzLCBjb250ZXh0KSk7CisgICAg
ICAgICAgICBvdXQucHJpbnQoaW5Db250ZXh0KG1fc3RydWN0dXJlcy50b1N0cnVjdHVyZVNldCgp
LCBjb250ZXh0KSk7CiAgICAgICAgIGlmICghbV9maWVsZHMuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICBpZiAoIW1fc3RydWN0dXJlcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgb3V0LnBy
aW50KCIsICIpOwpAQCAtMjk2LDcgKzI5Niw3IEBAIHByaXZhdGU6CiAgICAgTm9kZSogbV9pZGVu
dGlmaWVyOyAvLyBUaGlzIGlzIHRoZSBhY3R1YWwgbm9kZSB0aGF0IGNyZWF0ZWQgdGhlIGFsbG9j
YXRpb24KICAgICBLaW5kIG1fa2luZDsKICAgICBIYXNoTWFwPFByb21vdGVkTG9jYXRpb25EZXNj
cmlwdG9yLCBOb2RlKj4gbV9maWVsZHM7Ci0gICAgU3RydWN0dXJlU2V0IG1fc3RydWN0dXJlczsK
KyAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0IG1fc3RydWN0dXJlczsKIH07CiAKIGNsYXNzIExv
Y2FsSGVhcCB7CkBAIC04MzIsNyArODMyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHRhcmdl
dCA9ICZtX2hlYXAubmV3QWxsb2NhdGlvbihub2RlLCBBbGxvY2F0aW9uOjpLaW5kOjpPYmplY3Qp
OwogICAgICAgICAgICAgdGFyZ2V0LT5zZXRTdHJ1Y3R1cmVzKG5vZGUtPnN0cnVjdHVyZSgpKTsK
ICAgICAgICAgICAgIHdyaXRlcy5hZGQoCi0gICAgICAgICAgICAgICAgU3RydWN0dXJlUExvYywg
TGF6eU5vZGUobV9ncmFwaC5mcmVlemUobm9kZS0+c3RydWN0dXJlKCkpKSk7CisgICAgICAgICAg
ICAgICAgU3RydWN0dXJlUExvYywgTGF6eU5vZGUobV9ncmFwaC5mcmVlemUobm9kZS0+c3RydWN0
dXJlKCkuZ2V0KCkpKSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIE5ld0Z1
bmN0aW9uOgpAQCAtODc5LDcgKzg3OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgUHV0U3Ry
dWN0dXJlOgogICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2NhbEFsbG9jYXRpb24o
bm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0
LT5pc09iamVjdEFsbG9jYXRpb24oKSkgewotICAgICAgICAgICAgICAgIHdyaXRlcy5hZGQoU3Ry
dWN0dXJlUExvYywgTGF6eU5vZGUobV9ncmFwaC5mcmVlemUoSlNWYWx1ZShub2RlLT50cmFuc2l0
aW9uKCktPm5leHQpKSkpOworICAgICAgICAgICAgICAgIHdyaXRlcy5hZGQoU3RydWN0dXJlUExv
YywgTGF6eU5vZGUobV9ncmFwaC5mcmVlemUoSlNWYWx1ZShub2RlLT50cmFuc2l0aW9uKCktPm5l
eHQuZ2V0KCkpKSkpOwogICAgICAgICAgICAgICAgIHRhcmdldC0+c2V0U3RydWN0dXJlcyhub2Rl
LT50cmFuc2l0aW9uKCktPm5leHQpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAg
ICAgbV9oZWFwLmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwpAQCAtOTEyLDcgKzkxMiw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBBbGxvY2F0aW9uKiBhbGxvY2F0aW9uID0gbV9oZWFw
Lm9ubHlMb2NhbEFsbG9jYXRpb24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAg
IGlmIChhbGxvY2F0aW9uICYmIGFsbG9jYXRpb24tPmlzT2JqZWN0QWxsb2NhdGlvbigpKSB7CiAg
ICAgICAgICAgICAgICAgTXVsdGlHZXRCeU9mZnNldERhdGEmIGRhdGEgPSBub2RlLT5tdWx0aUdl
dEJ5T2Zmc2V0RGF0YSgpOwotICAgICAgICAgICAgICAgIFN0cnVjdHVyZVNldCB2YWxpZFN0cnVj
dHVyZXM7CisgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCB2YWxpZFN0cnVj
dHVyZXM7CiAgICAgICAgICAgICAgICAgYm9vbCBoYXNJbnZhbGlkU3RydWN0dXJlcyA9IGZhbHNl
OwogICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgbXVsdGlHZXRCeU9mZnNldENhc2Ug
OiBkYXRhLmNhc2VzKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghYWxsb2NhdGlvbi0+c3Ry
dWN0dXJlcygpLm92ZXJsYXBzKG11bHRpR2V0QnlPZmZzZXRDYXNlLnNldCgpKSkKQEAgLTE0NDQs
MTIgKzE0NDQsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgc3dpdGNoIChhbGxvY2F0aW9uLmtpbmQo
KSkgewogICAgICAgICBjYXNlIEFsbG9jYXRpb246OktpbmQ6Ok9iamVjdDogewogICAgICAgICAg
ICAgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSogZGF0YSA9IG1fZ3JhcGgubV9vYmplY3RNYXRl
cmlhbGl6YXRpb25EYXRhLmFkZCgpOwotICAgICAgICAgICAgU3RydWN0dXJlU2V0KiBzZXQgPSBt
X2dyYXBoLmFkZFN0cnVjdHVyZVNldChhbGxvY2F0aW9uLnN0cnVjdHVyZXMoKSk7CiAKICAgICAg
ICAgICAgIHJldHVybiBtX2dyYXBoLmFkZE5vZGUoCiAgICAgICAgICAgICAgICAgYWxsb2NhdGlv
bi5pZGVudGlmaWVyKCktPnByZWRpY3Rpb24oKSwgTm9kZTo6VmFyQXJnLCBNYXRlcmlhbGl6ZU5l
d09iamVjdCwKICAgICAgICAgICAgICAgICB3aGVyZS0+b3JpZ2luLndpdGhTZW1hbnRpYyhhbGxv
Y2F0aW9uLmlkZW50aWZpZXIoKS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICBP
cEluZm8oc2V0KSwgT3BJbmZvKGRhdGEpLCAwLCAwKTsKKyAgICAgICAgICAgICAgICBPcEluZm8o
bV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoYWxsb2NhdGlvbi5zdHJ1Y3R1cmVzKCkpKSwgT3BJbmZv
KGRhdGEpLCAwLCAwKTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgQWxsb2NhdGlvbjo6S2lu
ZDo6QXN5bmNGdW5jdGlvbjoKQEAgLTIxMDMsNyArMjEwMiw3IEBAIHByaXZhdGU6CiAgICAgICAg
IGNhc2UgTmFtZWRQcm9wZXJ0eVBMb2M6IHsKICAgICAgICAgICAgIEFsbG9jYXRpb24mIGFsbG9j
YXRpb24gPSBtX2hlYXAuZ2V0QWxsb2NhdGlvbihsb2NhdGlvbi5iYXNlKCkpOwogCi0gICAgICAg
ICAgICBWZWN0b3I8U3RydWN0dXJlKj4gc3RydWN0dXJlczsKKyAgICAgICAgICAgIFZlY3RvcjxS
ZWdpc3RlcmVkU3RydWN0dXJlPiBzdHJ1Y3R1cmVzOwogICAgICAgICAgICAgc3RydWN0dXJlcy5h
cHBlbmRSYW5nZShhbGxvY2F0aW9uLnN0cnVjdHVyZXMoKS5iZWdpbigpLCBhbGxvY2F0aW9uLnN0
cnVjdHVyZXMoKS5lbmQoKSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVy
ID0gbG9jYXRpb24uaW5mbygpOwogICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9
IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXTsKQEAgLTIxMTEsNyArMjEx
MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzdGQ6OnNvcnQoCiAgICAgICAgICAgICAgICAg
c3RydWN0dXJlcy5iZWdpbigpLAogICAgICAgICAgICAgICAgIHN0cnVjdHVyZXMuZW5kKCksCi0g
ICAgICAgICAgICAgICAgW3VpZF0gKFN0cnVjdHVyZSAqYSwgU3RydWN0dXJlKiBiKSAtPiBib29s
IHsKKyAgICAgICAgICAgICAgICBbdWlkXSAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBhLCBSZWdpc3Rl
cmVkU3RydWN0dXJlIGIpIC0+IGJvb2wgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS0+
Z2V0Q29uY3VycmVudGx5KHVpZCkgPCBiLT5nZXRDb25jdXJyZW50bHkodWlkKTsKICAgICAgICAg
ICAgICAgICB9KTsKIApAQCAtMjE0Miw3ICsyMTQxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBjdXJyZW50T2Zmc2V0ID0gZmlyc3RP
ZmZzZXQ7CiAgICAgICAgICAgICAgICAgU3RydWN0dXJlU2V0IGN1cnJlbnRTZXQ7Ci0gICAgICAg
ICAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6IHN0cnVjdHVyZXMpIHsKKyAgICAg
ICAgICAgICAgICBmb3IgKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlIDogc3RydWN0dXJl
cykgewogICAgICAgICAgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1
cmUtPmdldENvbmN1cnJlbnRseSh1aWQpOwogICAgICAgICAgICAgICAgICAgICBpZiAob2Zmc2V0
ICE9IGN1cnJlbnRPZmZzZXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJlY2F1c2Ug
b3VyIGFuYWx5c2lzIHRyZWF0cyBNdWx0aVB1dEJ5T2Zmc2V0IGxpa2UgYW4gZXNjYXBlLCB3ZSBv
bmx5IGhhdmUgdG8KQEAgLTIxNTUsNyArMjE1NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgICAgICAgICBjdXJyZW50T2Zmc2V0ID0gb2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICAg
ICAgY3VycmVudFNldC5jbGVhcigpOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIGN1cnJlbnRTZXQuYWRkKHN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgICAg
IGN1cnJlbnRTZXQuYWRkKHN0cnVjdHVyZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGRhdGEtPnZhcmlhbnRzLmFwcGVuZCgKICAgICAgICAgICAgICAgICAgICAg
UHV0QnlJZFZhcmlhbnQ6OnJlcGxhY2UoY3VycmVudFNldCwgY3VycmVudE9mZnNldCwgSW5mZXJy
ZWRUeXBlOjpUb3ApKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZv
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAko
cmV2aXNpb24gMjExMjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8u
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVk
ZSAiREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5oIgorI2luY2x1ZGUgIkhlYXBDZWxsLmgiCiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC00Miw4
ICs0NCwxNyBAQCBzdHJ1Y3QgT3BJbmZvIHsKICNpZiBPUyhEQVJXSU4pCiAgICAgZXhwbGljaXQg
T3BJbmZvKHVpbnRwdHJfdCB2YWx1ZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnQ2NF90Pih2
YWx1ZSkpIHsgfQogI2VuZGlmCi0gICAgZXhwbGljaXQgT3BJbmZvKHZvaWQqIHZhbHVlKSA6IG1f
dmFsdWUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2
YWx1ZSkpKSB7IH0KLSAgICBleHBsaWNpdCBPcEluZm8oY29uc3Qgdm9pZCogdmFsdWUpIDogbV92
YWx1ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHZh
bHVlKSkpIHsgfQorICAgIGV4cGxpY2l0IE9wSW5mbyhSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVj
dHVyZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihiaXR3aXNlX2Nhc3Q8dWludHB0
cl90PihzdHJ1Y3R1cmUpKSkgeyB9CisKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAg
IGV4cGxpY2l0IE9wSW5mbyhUKiBwdHIpCisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KCFz
dGQ6OmlzX2Jhc2Vfb2Y8SGVhcENlbGwsIFQ+Ojp2YWx1ZSwgIlRvIG1ha2UgYW4gT3BJbmZvIHdp
dGggYSBjZWxsIGluIGl0LCB0aGUgY2VsbCBtdXN0IGJlIHJlZ2lzdGVyZWQgb3IgZnJvemVuLiIp
OworICAgICAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8U3RydWN0dXJlU2V0LCBU
Pjo6dmFsdWUsICJUbyBtYWtlIGFuIE9wSW5mbyB3aXRoIGEgc3RydWN0dXJlIHNldCBpbiwgbWFr
ZSBzdXJlIHRvIHVzZSBSZWdpc3RlcmVkU3RydWN0dXJlU2V0LiIpOworICAgICAgICBtX3ZhbHVl
ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihwdHIp
KTsKKyAgICB9CisKICAgICB1aW50NjRfdCBtX3ZhbHVlOwogfTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw2
IEBACiAjaW5jbHVkZSAiREZHU3RvcmVCYXJyaWVyQ2x1c3RlcmluZ1BoYXNlLmgiCiAjaW5jbHVk
ZSAiREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuaCIKICNpbmNsdWRlICJERkdTdHJlbmd0
aFJlZHVjdGlvblBoYXNlLmgiCi0jaW5jbHVkZSAiREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhh
c2UuaCIKICNpbmNsdWRlICJERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmgiCiAjaW5jbHVk
ZSAiREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5oIgogI2luY2x1ZGUgIkRGR1VuaWZpY2F0aW9u
UGhhc2UuaCIKQEAgLTMxMSw3ICszMTAsNiBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6
Y29tcGlsZUluVGhyCiAgICAgUlVOX1BIQVNFKHBlcmZvcm1CYWNrd2FyZHNQcm9wYWdhdGlvbik7
CiAgICAgUlVOX1BIQVNFKHBlcmZvcm1QcmVkaWN0aW9uUHJvcGFnYXRpb24pOwogICAgIFJVTl9Q
SEFTRShwZXJmb3JtRml4dXApOwotICAgIFJVTl9QSEFTRShwZXJmb3JtU3RydWN0dXJlUmVnaXN0
cmF0aW9uKTsKICAgICBSVU5fUEhBU0UocGVyZm9ybUludmFsaWRhdGlvblBvaW50SW5qZWN0aW9u
KTsKICAgICBSVU5fUEhBU0UocGVyZm9ybVR5cGVDaGVja0hvaXN0aW5nKTsKICAgICAKQEAgLTYw
OCw2ICs2MDYsMTEgQEAgQ29tcGlsYXRpb25SZXN1bHQgUGxhbjo6ZmluYWxpemVXaXRob3V0Tgog
ICAgICAgICAgICAgdHJhY2tlZFJlZmVyZW5jZXMuYWRkKHJlZmVyZW5jZS5nZXQoKSk7CiAgICAg
ICAgIGZvciAoV3JpdGVCYXJyaWVyPFVua25vd24+JiBjb25zdGFudCA6IGNvZGVCbG9jay0+Y29u
c3RhbnRzKCkpCiAgICAgICAgICAgICB0cmFja2VkUmVmZXJlbmNlcy5hZGQoY29uc3RhbnQuZ2V0
KCkpOworCisgICAgICAgIGZvciAoYXV0byogaW5saW5lQ2FsbEZyYW1lIDogKmlubGluZUNhbGxG
cmFtZXMpIHsKKyAgICAgICAgICAgIEFTU0VSVChpbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29k
ZUJsb2NrLmdldCgpKTsKKyAgICAgICAgICAgIHRyYWNrZWRSZWZlcmVuY2VzLmFkZChpbmxpbmVD
YWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLmdldCgpKTsKKyAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgLy8gQ2hlY2sgdGhhdCBhbnkgb3RoZXIgcmVmZXJlbmNlcyB0aGF0IHdlIGhhdmUg
YW55d2hlcmUgaW4gdGhlIEpJVENvZGUgYXJlIGFsc28KICAgICAgICAgLy8gdHJhY2tlZCBlaXRo
ZXIgc3Ryb25nbHkgb3Igd2Vha2x5LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdSZWdpc3RlcmVkU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdSZWdpc3RlcmVkU3RydWN0dXJlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZWdpc3RlcmVkU3RydWN0dXJlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShERkdfSklUKQorCisjaW5jbHVk
ZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlU2V0LmgiCisKK25hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKKworY2xhc3MgR3JhcGg7CisKK2NsYXNzIFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgeworcHVibGljOgorICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUoKSA9IGRlZmF1bHQ7
CisKKyAgICBBTFdBWVNfSU5MSU5FIFN0cnVjdHVyZSogZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9z
dHJ1Y3R1cmU7IH0KKyAgICBTdHJ1Y3R1cmUqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBn
ZXQoKTsgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmUm
IG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldCgpID09IG90aGVyLmdldCgp
OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJl
JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsK
KyAgICB9CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiAhIWdldCgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3Mg
R3JhcGg7CisKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKQor
ICAgICAgICA6IG1fc3RydWN0dXJlKHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChz
dHJ1Y3R1cmUpOworICAgIH0KKworICAgIHN0YXRpYyBSZWdpc3RlcmVkU3RydWN0dXJlIGNyZWF0
ZVByaXZhdGUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICByZXR1cm4gUmVn
aXN0ZXJlZFN0cnVjdHVyZShzdHJ1Y3R1cmUpOworICAgIH0KKworICAgIFN0cnVjdHVyZSogbV9z
dHJ1Y3R1cmUgeyBudWxscHRyIH07Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisK
KyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdSZWdpc3RlcmVkU3RydWN0dXJlU2V0LmNwcAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmVT
ZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkRGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQuaCIKKworI2lmIEVOQUJMRShERkdfSklUKQor
CisjaW5jbHVkZSAiREZHQWJzdHJhY3RWYWx1ZS5oIgorI2luY2x1ZGUgIlRyYWNrZWRSZWZlcmVu
Y2VzLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKwordm9pZCBSZWdpc3Rl
cmVkU3RydWN0dXJlU2V0OjpmaWx0ZXIoY29uc3QgREZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVl
JiBvdGhlcikKK3sKKyAgICBnZW5lcmljRmlsdGVyKAorICAgICAgICBbJl0gKFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgc3RydWN0dXJlKSAtPiBib29sIHsKKyAgICAgICAgICAgIHJldHVybiBvdGhlci5j
b250YWlucyhzdHJ1Y3R1cmUpOyAKKyAgICAgICAgfSk7Cit9CisKK3ZvaWQgUmVnaXN0ZXJlZFN0
cnVjdHVyZVNldDo6ZmlsdGVyKFNwZWN1bGF0ZWRUeXBlIHR5cGUpCit7CisgICAgZ2VuZXJpY0Zp
bHRlcigKKyAgICAgICAgWyZdIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgLT4gYm9v
bCB7CisgICAgICAgICAgICByZXR1cm4gdHlwZSAmIHNwZWN1bGF0aW9uRnJvbVN0cnVjdHVyZShz
dHJ1Y3R1cmUuZ2V0KCkpOworICAgICAgICB9KTsKK30KKwordm9pZCBSZWdpc3RlcmVkU3RydWN0
dXJlU2V0OjpmaWx0ZXJBcnJheU1vZGVzKEFycmF5TW9kZXMgYXJyYXlNb2RlcykKK3sKKyAgICBn
ZW5lcmljRmlsdGVyKAorICAgICAgICBbJl0gKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJl
KSAtPiBib29sIHsKKyAgICAgICAgICAgIHJldHVybiBhcnJheU1vZGVzICYgYXJyYXlNb2RlRnJv
bVN0cnVjdHVyZShzdHJ1Y3R1cmUuZ2V0KCkpOworICAgICAgICB9KTsKK30KKwordm9pZCBSZWdp
c3RlcmVkU3RydWN0dXJlU2V0OjpmaWx0ZXIoY29uc3QgREZHOjpBYnN0cmFjdFZhbHVlJiBvdGhl
cikKK3sKKyAgICBmaWx0ZXIob3RoZXIubV9zdHJ1Y3R1cmUpOworICAgIGZpbHRlcihvdGhlci5t
X3R5cGUpOworICAgIGZpbHRlckFycmF5TW9kZXMob3RoZXIubV9hcnJheU1vZGVzKTsKK30KKwor
U3BlY3VsYXRlZFR5cGUgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldDo6c3BlY3VsYXRpb25Gcm9tU3Ry
dWN0dXJlcygpIGNvbnN0Cit7CisgICAgU3BlY3VsYXRlZFR5cGUgcmVzdWx0ID0gU3BlY05vbmU7
CisgICAgZm9yRWFjaCgKKyAgICAgICAgWyZdIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVy
ZSkgeworICAgICAgICAgICAgbWVyZ2VTcGVjdWxhdGlvbihyZXN1bHQsIHNwZWN1bGF0aW9uRnJv
bVN0cnVjdHVyZShzdHJ1Y3R1cmUuZ2V0KCkpKTsKKyAgICAgICAgfSk7CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworQXJyYXlNb2RlcyBSZWdpc3RlcmVkU3RydWN0dXJlU2V0OjphcnJheU1vZGVz
RnJvbVN0cnVjdHVyZXMoKSBjb25zdAoreworICAgIEFycmF5TW9kZXMgcmVzdWx0ID0gMDsKKyAg
ICBmb3JFYWNoKAorICAgICAgICBbJl0gKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSB7
CisgICAgICAgICAgICBtZXJnZUFycmF5TW9kZXMocmVzdWx0LCBhc0FycmF5TW9kZXMoc3RydWN0
dXJlLT5pbmRleGluZ1R5cGUoKSkpOworICAgICAgICB9KTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCit2b2lkIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQ6OnZhbGlkYXRlUmVmZXJlbmNlcyhjb25z
dCBUcmFja2VkUmVmZXJlbmNlcyYgdHJhY2tlZFJlZmVyZW5jZXMpIGNvbnN0Cit7CisgICAgLy8g
VGhlIHR5cGUgc3lzdGVtIHNob3VsZCBoZWxwIHVzIGhlcmUsIGJ1dCBwcm90ZWN0IHBlb3BsZSBm
cm9tIGdldHRpbmcgdGhhdCB3cm9uZyB1c2luZyBiaXR3aXNlX2Nhc3Qgb3Igc29tZXRoaW5nIGNy
YXp5LgorICAgIGZvckVhY2goCisgICAgICAgIFsmXSAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1
Y3R1cmUpIHsKKyAgICAgICAgICAgIHRyYWNrZWRSZWZlcmVuY2VzLmNoZWNrKHN0cnVjdHVyZS5n
ZXQoKSk7CisgICAgICAgIH0pOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNl
bmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNldC5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNldC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoREZHX0pJVCkK
KworI2luY2x1ZGUgIkRGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1
cmVTZXQuaCIKKyNpbmNsdWRlIDx3dGYvVGlueVB0clNldC5oPgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgVHJhY2tlZFJlZmVyZW5jZXM7CisKK25hbWVzcGFjZSBERkcgeworCitzdHJ1Y3Qg
QWJzdHJhY3RWYWx1ZTsKK2NsYXNzIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU7CisKK2NsYXNzIFJl
Z2lzdGVyZWRTdHJ1Y3R1cmVTZXQgOiBwdWJsaWMgVGlueVB0clNldDxSZWdpc3RlcmVkU3RydWN0
dXJlPiB7CitwdWJsaWM6CisKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0KCkKKyAgICB7IH0K
KyAgICAKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0KFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3Ry
dWN0dXJlKQorICAgICAgICA6IFRpbnlQdHJTZXQoc3RydWN0dXJlKQorICAgIHsKKyAgICB9Cisg
ICAgCisgICAgQUxXQVlTX0lOTElORSBSZWdpc3RlcmVkU3RydWN0dXJlU2V0KGNvbnN0IFJlZ2lz
dGVyZWRTdHJ1Y3R1cmVTZXQmIG90aGVyKQorICAgICAgICA6IFRpbnlQdHJTZXQob3RoZXIpCisg
ICAgeworICAgIH0KKyAgICAKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG9ubHlTdHJ1Y3R1cmUo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG9ubHlFbnRyeSgpOworICAgIH0KKworICAg
IFN0cnVjdHVyZVNldCB0b1N0cnVjdHVyZVNldCgpIGNvbnN0CisgICAgeworICAgICAgICBTdHJ1
Y3R1cmVTZXQgcmVzdWx0OworICAgICAgICBmb3JFYWNoKFsmXSAoUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBzdHJ1Y3R1cmUpIHsgcmVzdWx0LmFkZChzdHJ1Y3R1cmUuZ2V0KCkpOyB9KTsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICB2b2lkIGZpbHRlcihjb25zdCBERkc6OlN0cnVj
dHVyZUFic3RyYWN0VmFsdWUmKTsKKyAgICB2b2lkIGZpbHRlcihTcGVjdWxhdGVkVHlwZSk7Cisg
ICAgdm9pZCBmaWx0ZXJBcnJheU1vZGVzKEFycmF5TW9kZXMpOworICAgIHZvaWQgZmlsdGVyKGNv
bnN0IERGRzo6QWJzdHJhY3RWYWx1ZSYpOworICAgIAorICAgIFNwZWN1bGF0ZWRUeXBlIHNwZWN1
bGF0aW9uRnJvbVN0cnVjdHVyZXMoKSBjb25zdDsKKyAgICBBcnJheU1vZGVzIGFycmF5TW9kZXNG
cm9tU3RydWN0dXJlcygpIGNvbnN0OworCisgICAgdm9pZCB2YWxpZGF0ZVJlZmVyZW5jZXMoY29u
c3QgVHJhY2tlZFJlZmVyZW5jZXMmKSBjb25zdDsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlND
OjpERkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MjUsNyArNDI1LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBl
JiBzdAogICAgIGNhc2UgQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBSZWFsbG9j
YXRlUHJvcGVydHlTdG9yYWdlOgogICAgICAgICByZXR1cm4gc3RhdGUuZm9yTm9kZShub2RlLT5j
aGlsZDEoKSkubV9zdHJ1Y3R1cmUuaXNTdWJzZXRPZigKLSAgICAgICAgICAgIFN0cnVjdHVyZVNl
dChub2RlLT50cmFuc2l0aW9uKCktPnByZXZpb3VzKSk7CisgICAgICAgICAgICBSZWdpc3RlcmVk
U3RydWN0dXJlU2V0KG5vZGUtPnRyYW5zaXRpb24oKS0+cHJldmlvdXMpKTsKICAgICAgICAgCiAg
ICAgY2FzZSBHZXRCeU9mZnNldDoKICAgICBjYXNlIEdldEdldHRlclNldHRlckJ5T2Zmc2V0OgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTQsNyAr
Mjk0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZQogICAgICAg
ICBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluaygmbV9qaXQpOwogICAgICAgICBHUFJSZWcg
bG9jYWxHbG9iYWxPYmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVjdC5ncHIoKTsKICAgICAgICAg
R1BSUmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9IHJlbW90ZUdsb2JhbE9iamVjdC5ncHIoKTsK
LSAgICAgICAgbV9qaXQubW92ZShKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5ncmFw
aCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbG9j
YWxHbG9iYWxPYmplY3RHUFIpOworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1faml0LmdyYXBoKCksIG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1f
Y3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CiAg
ICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYXJnUGF5bG9hZEdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVzdWx0UGF5bG9hZEdQUik7CiAgICAgICAg
IG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0UGF5bG9hZEdQUiwgU3Ry
dWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlbW90ZUdsb2JhbE9iamVjdEdQUik7CiAg
ICAgICAgIG1faml0LmNvbXBhcmUzMihKSVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2Jq
ZWN0R1BSLCByZW1vdGVHbG9iYWxPYmplY3RHUFIsIHJlc3VsdFBheWxvYWRHUFIpOwpAQCAtMzU4
LDcgKzM1OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGgKICAg
IAogICAgICAgICBHUFJSZWcgbG9jYWxHbG9iYWxPYmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVj
dC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9IHJlbW90ZUds
b2JhbE9iamVjdC5ncHIoKTsKLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0
LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RG
b3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BS
KTsKICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhhcmdQYXlsb2Fk
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZXN1bHRHUFIpOwogICAgICAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgU3RydWN0dXJlOjpn
bG9iYWxPYmplY3RPZmZzZXQoKSksIHJlbW90ZUdsb2JhbE9iamVjdEdQUik7CiAgICAgICAgIGJy
YW5jaFB0cihKSVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2JqZWN0R1BSLCByZW1vdGVH
bG9iYWxPYmplY3RHUFIsIGludmVydCA/IG5vdFRha2VuIDogdGFrZW4pOwpAQCAtMTA4Miw3ICsx
MDgyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgICAg
ICAgICAgbV9qaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOwogICAgIH0KIAotICAgIG1faml0
Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoaW5mbyksIEdQUkluZm86OnJlZ1Qy
KTsKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoaW5mbyksIEdQUkluZm86OnJlZ1QyKTsK
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBzbG93Q2FsbCA9IG1faml0Lm5lYXJDYWxsKCk7CiAKICAg
ICBkb25lLmxpbmsoJm1faml0KTsKQEAgLTEyNDIsMTAgKzEyNDIsOSBAQCBHUFJSZWcgU3BlY3Vs
YXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsCiAgICAgc3dpdGNoIChpbmZvLnJlZ2lzdGVyRm9y
bWF0KCkpIHsKICAgICBjYXNlIERhdGFGb3JtYXROb25lOiB7CiAgICAgICAgIGlmIChlZGdlLT5o
YXNDb25zdGFudCgpKSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIGpzVmFsdWUgPSBlZGdlLT5hc0pT
VmFsdWUoKTsKICAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwogICAgICAgICAg
ICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckNvbnN0YW50
KTsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
anNWYWx1ZS5hc0NlbGwoKSksIGdwcik7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJ
bW1QdHIoZWRnZS0+Y29uc3RhbnQoKSksIGdwcik7CiAgICAgICAgICAgICBpbmZvLmZpbGxDZWxs
KCptX3N0cmVhbSwgZ3ByKTsKICAgICAgICAgICAgIHJldHVybiBncHI7CiAgICAgICAgIH0KQEAg
LTE3MjQsNyArMTcyMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RPck90
aGUKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6RXF1YWwsIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIAotICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkuZ2xv
YmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpKSk7CisgICAgICAg
ICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgbV9qaXQu
Z3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSkp
KTsKIAogICAgICAgICBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluaygmbV9qaXQpOwog
ICAgIH0KQEAgLTE4NDMsNyArMTg0Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmpl
Y3RPck90aGVyQnIKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHNjcmF0Y2hHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCAK
LSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5ncmFw
aCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSkpOwor
ICAgICAgICAgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCks
IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpKSk7CiAKICAgICAgICAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsoJm1f
aml0KTsKICAgICB9CkBAIC0zNzc4LDcgKzM3NzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdBcnJheTogewogICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmlzSGF2aW5n
QUJhZFRpbWUoKSAmJiAhaGFzQW55QXJyYXlTdG9yYWdlKG5vZGUtPmluZGV4aW5nVHlwZSgpKSkg
ewotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmFycmF5
U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5
cGUoKSk7CisgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1faml0
LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZv
ckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKTsKICAg
ICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpID09IG5vZGUtPmluZGV4
aW5nVHlwZSgpKTsKICAgICAgICAgICAgIEFTU0VSVCgKICAgICAgICAgICAgICAgICBoYXNVbmRl
Y2lkZWQoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkKQEAgLTM4NTMsNyArMzg1Miw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGZsdXNo
UmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhp
cyk7CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgIG9wZXJhdGlv
bk5ld0VtcHR5QXJyYXksIHJlc3VsdC5ncHIoKSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVy
ZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKTsK
KyAgICAgICAgICAgICAgICBvcGVyYXRpb25OZXdFbXB0eUFycmF5LCByZXN1bHQuZ3ByKCksIG1f
aml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVy
ZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKSk7
CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAgICAgY2VsbFJl
c3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zOTMwLDcg
KzM5MjksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgCiAgICAgICAg
IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICBvcGVyYXRpb25OZXdBcnJheSwgcmVzdWx0Lmdw
cigpLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxs
b2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSksCisgICAgICAgICAgICBvcGVyYXRpb25OZXdB
cnJheSwgcmVzdWx0LmdwcigpLCBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2Jh
bE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5v
ZGUtPmluZGV4aW5nVHlwZSgpKSksCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDx2b2lkKj4oYnVm
ZmVyKSwgbm9kZS0+bnVtQ2hpbGRyZW4oKSk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CiAKQEAgLTM5NzYsMTAgKzM5NzUsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwog
ICAgICAgICBHUFJSZWcgc3RydWN0dXJlR1BSID0gc2VsZWN0U2NyYXRjaEdQUihzaXplR1BSKTsK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgYmlnTGVuZ3RoID0gbV9qaXQuYnJhbmNoMzIo
TWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgc2l6ZUdQUiwgVHJ1c3RlZEltbTMyKE1JTl9B
UlJBWV9TVE9SQUdFX0NPTlNUUlVDVElPTl9MRU5HVEgpKTsKLSAgICAgICAgbV9qaXQubW92ZShU
cnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVE
dXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKSksIHN0cnVjdHVyZUdQUik7Cisg
ICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3Ry
dWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdB
bGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKSkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAgICAgICBiaWdM
ZW5ndGgubGluaygmbV9qaXQpOwotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoZ2xv
YmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24o
QXJyYXlXaXRoQXJyYXlTdG9yYWdlKSksIHN0cnVjdHVyZUdQUik7CisgICAgICAgIG1faml0Lm1v
dmUoVHJ1c3RlZEltbVB0cihtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9i
amVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5
V2l0aEFycmF5U3RvcmFnZSkpKSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgZG9uZS5saW5rKCZt
X2ppdCk7CiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwg
cmVzdWx0R1BSLCBzdHJ1Y3R1cmVHUFIsIHNpemVHUFIsIG51bGxwdHIpOwogICAgICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOwpAQCAtMzk5OSw3ICszOTk4LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9
IHJlc3VsdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5n
cHIoKTsKIAotICAgICAgICAgICAgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQUiwgZ2xv
YmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24o
aW5kZXhpbmdUeXBlKSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMsIG51bUVsZW1lbnRzKTsKKyAg
ICAgICAgICAgIGVtaXRBbGxvY2F0ZVJhd09iamVjdChyZXN1bHRHUFIsIG1faml0LmdyYXBoKCku
cmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5n
VHlwZUR1cmluZ0FsbG9jYXRpb24oaW5kZXhpbmdUeXBlKSksIHN0b3JhZ2VHUFIsIG51bUVsZW1l
bnRzLCBudW1FbGVtZW50cyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChub2RlLT5p
bmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhEb3VibGUpIHsKICAgICAgICAgICAgICAgICBKU1Zh
bHVlKiBkYXRhID0gbV9qaXQuY29kZUJsb2NrKCktPmNvbnN0YW50QnVmZmVyKG5vZGUtPnN0YXJ0
Q29uc3RhbnQoKSk7CkBAIC00MDI3LDcgKzQwMjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQ
UkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgCi0gICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXlCdWZmZXIsIHJlc3VsdC5ncHIoKSwgZ2xvYmFsT2Jq
ZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+
aW5kZXhpbmdUeXBlKCkpLCBub2RlLT5zdGFydENvbnN0YW50KCksIG5vZGUtPm51bUNvbnN0YW50
cygpKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwgcmVz
dWx0LmdwcigpLCBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+
YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4
aW5nVHlwZSgpKSksIG5vZGUtPnN0YXJ0Q29uc3RhbnQoKSwgbm9kZS0+bnVtQ29uc3RhbnRzKCkp
OwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAKICAgICAgICAgY2Vs
bFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwpAQCAtNDA1MSw3ICs0MDUwLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKAogICAgICAgICAg
ICAgICAgIG9wZXJhdGlvbk5ld1R5cGVkQXJyYXlXaXRoT25lQXJndW1lbnRGb3JUeXBlKG5vZGUt
PnR5cGVkQXJyYXlUeXBlKCkpLAotICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgZ2xvYmFsT2Jq
ZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KG5vZGUtPnR5cGVkQXJyYXlUeXBl
KCkpLCBhcmd1bWVudFJlZ3MpOworICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgbV9qaXQuZ3Jh
cGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVD
b25jdXJyZW50bHkobm9kZS0+dHlwZWRBcnJheVR5cGUoKSkpLCBhcmd1bWVudFJlZ3MpOwogICAg
ICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtNDE3MSw3ICs0MTcwLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dQYXRoOwogICAgICAgICAKLSAgICAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBub2RlLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgUmVnaXN0ZXJl
ZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBub2RlLT5zdHJ1Y3R1cmUoKTsKICAgICAgICAgc2l6ZV90
IGFsbG9jYXRpb25TaXplID0gSlNGaW5hbE9iamVjdDo6YWxsb2NhdGlvblNpemUoc3RydWN0dXJl
LT5pbmxpbmVDYXBhY2l0eSgpKTsKICAgICAgICAgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3JQ
dHIgPSBzdWJzcGFjZUZvcjxKU0ZpbmFsT2JqZWN0PigqbV9qaXQudm0oKSktPmFsbG9jYXRvckZv
cihhbGxvY2F0aW9uU2l6ZSk7CiAKQEAgLTQ0MTYsOCArNDQxNSw4IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgUHV0
U3RydWN0dXJlOiB7Ci0gICAgICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gbm9kZS0+dHJh
bnNpdGlvbigpLT5wcmV2aW91czsKLSAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBu
b2RlLT50cmFuc2l0aW9uKCktPm5leHQ7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgb2xk
U3RydWN0dXJlID0gbm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91czsKKyAgICAgICAgUmVnaXN0
ZXJlZFN0cnVjdHVyZSBuZXdTdHJ1Y3R1cmUgPSBub2RlLT50cmFuc2l0aW9uKCktPm5leHQ7CiAK
ICAgICAgICAgbV9qaXQuaml0Q29kZSgpLT5jb21tb24ubm90aWZ5Q29tcGlsaW5nU3RydWN0dXJl
VHJhbnNpdGlvbihtX2ppdC5ncmFwaCgpLm1fcGxhbiwgbV9qaXQuY29kZUJsb2NrKCksIG5vZGUp
OwogCkBAIC00NDI3LDcgKzQ0MjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgIEFTU0VSVF9VTlVTRUQob2xkU3RydWN0dXJlLCBvbGRTdHJ1Y3R1
cmUtPmluZGV4aW5nVHlwZSgpID09IG5ld1N0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpOwogICAg
ICAgICBBU1NFUlQob2xkU3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBuZXdTdHJ1Y3R1
cmUtPnR5cGVJbmZvKCkudHlwZSgpKTsKICAgICAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZS0+dHlw
ZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSA9PSBuZXdTdHJ1Y3R1cmUtPnR5cGVJbmZvKCkuaW5s
aW5lVHlwZUZsYWdzKCkpOwotICAgICAgICBtX2ppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihuZXdTdHJ1Y3R1cmUpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKKyAgICAgICAgbV9qaXQuc3RvcmVQ
dHIoVHJ1c3RlZEltbVB0cihuZXdTdHJ1Y3R1cmUpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKICAgICAgICAgCiAgICAgICAg
IG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQ2OTEsNyArNDY5MCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgaWYgKCFoYXNJ
bnN0YW5jZVZhbHVlTm9kZS0+aXNDZWxsQ29uc3RhbnQoKSB8fCBkZWZhdWx0SGFzSW5zdGFuY2VG
dW5jdGlvbiAhPSBoYXNJbnN0YW5jZVZhbHVlTm9kZS0+YXNDZWxsKCkpIHsKICAgICAgICAgICAg
IEpTVmFsdWVSZWdzIGhhc0luc3RhbmNlVmFsdWVSZWdzID0gaGFzSW5zdGFuY2VWYWx1ZS5qc1Zh
bHVlUmVncygpOwogICAgICAgICAgICAgbm90RGVmYXVsdEhhc0luc3RhbmNlVmFsdWUuYXBwZW5k
KG1faml0LmJyYW5jaElmTm90Q2VsbChoYXNJbnN0YW5jZVZhbHVlUmVncykpOwotICAgICAgICAg
ICAgbm90RGVmYXVsdEhhc0luc3RhbmNlVmFsdWUuYXBwZW5kKG1faml0LmJyYW5jaFB0cihNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGhhc0luc3RhbmNlVmFsdWVSZWdzLnBheWxvYWRHUFIoKSwg
VHJ1c3RlZEltbVB0cihkZWZhdWx0SGFzSW5zdGFuY2VGdW5jdGlvbikpKTsKKyAgICAgICAgICAg
IG5vdERlZmF1bHRIYXNJbnN0YW5jZVZhbHVlLmFwcGVuZChtX2ppdC5icmFuY2hQdHIoTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCBoYXNJbnN0YW5jZVZhbHVlUmVncy5wYXlsb2FkR1BSKCksIFRy
dXN0ZWRJbW1QdHIobm9kZS0+Y2VsbE9wZXJhbmQoKSkpKTsKICAgICAgICAgfQogCiAgICAgICAg
IC8vIENoZWNrIHRoYXQgY29uc3RydWN0b3IgJ0ltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2Un
LgpAQCAtNDc1Myw3ICs0NzUyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICAgICAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsoJm1faml0
KTsKICAgICAgICAgICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9IGxvY2FsR2xvYmFs
T2JqZWN0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9
IHJlbW90ZUdsb2JhbE9iamVjdC5ncHIoKTsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3Rl
ZEltbVB0cihtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxv
Y2FsR2xvYmFsT2JqZWN0R1BSKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CiAgICAgICAgICAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHZhbHVlLnBheWxvYWRHUFIoKSwgSlND
ZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgICAgIG1f
aml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0LmdwcigpLCBTdHJ1Y3R1cmU6
Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSKTsgCiAgICAgICAg
ICAgICBtX2ppdC5jb21wYXJlMzIoSklUQ29tcGlsZXI6OkVxdWFsLCBsb2NhbEdsb2JhbE9iamVj
dEdQUiwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSLCByZXN1bHQuZ3ByKCkpOwpAQCAtNTcxMywxMyAr
NTcxMiwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2NhdGVOZXdBCiAgICAg
Ly8gV2UgY2FuIHVzZSByZXN1bHQgYXMgYSBzY3JhdGNoIGZvciB0aGlzLgogICAgIGVtaXRJbml0
aWFsaXplQnV0dGVyZmx5KHN0b3JhZ2VHUFIsIHNpemVHUFIsIGVtcHR5VmFsdWVSZWdzLCByZXN1
bHRHUFIpOwogICAgICAgICAgICAgCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxP
YmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRl
eGluZ1R5cGUpOworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9qaXQuZ3Jh
cGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5k
ZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpKTsKICAgICBlbWl0QWxsb2Nh
dGVKU09iamVjdDxKU0FycmF5PihyZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwg
c3RvcmFnZUdQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNlcyk7CiAgICAgICAg
ICAgICAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPENhbGxBcnJh
eUFsbG9jYXRvcldpdGhWYXJpYWJsZVNpemVTbG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgIHNs
b3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVzdWx0R1BSLAogICAg
ICAgICBzdHJ1Y3R1cmUsCi0gICAgICAgIHNob3VsZENvbnZlcnRMYXJnZVNpemVUb0FycmF5U3Rv
cmFnZSA/IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdB
bGxvY2F0aW9uKEFycmF5V2l0aEFycmF5U3RvcmFnZSkgOiBzdHJ1Y3R1cmUsCisgICAgICAgIHNo
b3VsZENvbnZlcnRMYXJnZVNpemVUb0FycmF5U3RvcmFnZSA/IG1faml0LmdyYXBoKCkucmVnaXN0
ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1
cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSkgOiBzdHJ1Y3R1cmUsCiAgICAg
ICAgIHNpemVHUFIsIHN0b3JhZ2VHUFIpKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyMTEyMjkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNTAsNyArMjUwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9u
U3BlY3VsYXRpdmVOb25QZQogCiAgICAgICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9
IGxvY2FsR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmVtb3RlR2xvYmFsT2Jq
ZWN0R1BSID0gcmVtb3RlR2xvYmFsT2JqZWN0LmdwcigpOwotICAgICAgICBtX2ppdC5tb3ZlKEpJ
VENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1f
Y3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7Cisg
ICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgo
KSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgbV9qaXQuZW1pdExvYWRT
dHJ1Y3R1cmUoYXJnR1BSLCByZXN1bHRHUFIsIHNjcmF0Y2guZ3ByKCkpOwogICAgICAgICBtX2pp
dC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgU3RydWN0dXJlOjpnbG9i
YWxPYmplY3RPZmZzZXQoKSksIHJlbW90ZUdsb2JhbE9iamVjdEdQUik7CiAgICAgICAgIG1faml0
LmNvbXBhcmVQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBsb2NhbEdsb2JhbE9iamVjdEdQUiwgcmVt
b3RlR2xvYmFsT2JqZWN0R1BSLCByZXN1bHRHUFIpOwpAQCAtMzA1LDcgKzMwNSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGgKIAogICAgICAgICBHUFJSZWcgbG9j
YWxHbG9iYWxPYmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVjdC5ncHIoKTsKICAgICAgICAgR1BS
UmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9IHJlbW90ZUdsb2JhbE9iamVjdC5ncHIoKTsKLSAg
ICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0
Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQ
Uik7CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQu
Z3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgbV9qaXQuZW1p
dExvYWRTdHJ1Y3R1cmUoYXJnR1BSLCByZXN1bHRHUFIsIHNjcmF0Y2guZ3ByKCkpOwogICAgICAg
ICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgU3RydWN0dXJl
OjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlbW90ZUdsb2JhbE9iamVjdEdQUik7CiAgICAgICAg
IGJyYW5jaFB0cihKSVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2JqZWN0R1BSLCByZW1v
dGVHbG9iYWxPYmplY3RHUFIsIHRha2VuKTsKQEAgLTEwMDYsNyArMTAwNiw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICBtX2ppdC5lbWl0U3RvcmVDYWxs
U2l0ZUluZGV4KGNhbGxTaXRlKTsKICAgICAKICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsUHRy
IHRhcmdldFRvQ2hlY2s7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGggPSBtX2ppdC5i
cmFuY2hQdHJXaXRoUGF0Y2goTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBjYWxsZWVHUFIsIHRh
cmdldFRvQ2hlY2ssIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKDApKTsKKyAgICBKSVRD
b21waWxlcjo6SnVtcCBzbG93UGF0aCA9IG1faml0LmJyYW5jaFB0cldpdGhQYXRjaChNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIGNhbGxlZUdQUiwgdGFyZ2V0VG9DaGVjaywgVHJ1c3RlZEltbVB0
cigwKSk7CiAKICAgICBpZiAoaXNUYWlsKSB7CiAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFRh
aWxDYWxsKSB7CkBAIC0xMDM1LDcgKzEwMzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
Q2FsbChOb2RlKiBub2RlCiAgICAgICAgICAgICBtX2ppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVz
KCk7IC8vIFRoaXMgbmVlZHMgdG8gaGFwcGVuIGFmdGVyIHdlIG1vdmVkIGNhbGxlZUdQUiB0byBy
ZWdUMAogICAgIH0KIAotICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIoY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6cmVnVDIpOyAvLyBMaW5rIGluZm8gbmVlZHMgdG8g
YmUgaW4gcmVnVDIKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwg
R1BSSW5mbzo6cmVnVDIpOyAvLyBMaW5rIGluZm8gbmVlZHMgdG8gYmUgaW4gcmVnVDIKICAgICBK
SVRDb21waWxlcjo6Q2FsbCBzbG93Q2FsbCA9IG1faml0Lm5lYXJDYWxsKCk7CiAKICAgICBkb25l
LmxpbmsoJm1faml0KTsKQEAgLTE4NTYsNyArMTg1Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVPYmplY3RPck90aGUKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAogICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RP
ZmZzZXQoKSksIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpKSk7CisgICAgICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9q
aXQuZ3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+
b3JpZ2luLnNlbWFudGljKSkpKTsKIAogICAgICAgICBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQubGluaygmbV9qaXQpOwogICAgIH0KQEAgLTIwMDcsNyArMjAwNyw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnIKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0
cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAogICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpnbG9i
YWxPYmplY3RPZmZzZXQoKSksIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpKSk7CisgICAgICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJy
ZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSkpKTsKIAogICAgICAgICBpc05vdE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQubGluaygmbV9qaXQpOwogICAgIH0KQEAgLTM3NTcsNyArMzc1Nyw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIE5ld0FycmF5
OiB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgp
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBpZiAoIWds
b2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpICYmICFoYXNBbnlBcnJheVN0b3JhZ2Uobm9k
ZS0+aW5kZXhpbmdUeXBlKCkpKSB7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0
aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKTsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUgc3RydWN0dXJlID0gbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmpl
Y3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5p
bmRleGluZ1R5cGUoKSkpOwogICAgICAgICAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBu
b2RlLCBzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpID09IG5vZGUtPmluZGV4aW5nVHlwZSgpKTsK
ICAgICAgICAgICAgIEFTU0VSVCgKICAgICAgICAgICAgICAgICBoYXNVbmRlY2lkZWQoc3RydWN0
dXJlLT5pbmRleGluZ1R5cGUoKSkKQEAgLTM4MzAsNyArMzgzMCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgaWYgKCFub2RlLT5udW1DaGlsZHJl
bigpKSB7CiAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICAgICAgR1BSRmx1
c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25OZXdFbXB0eUFycmF5LCByZXN1bHQuZ3ByKCksIGdsb2JhbE9iamVjdC0+YXJyYXlT
dHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlw
ZSgpKSk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0VtcHR5QXJyYXks
IHJlc3VsdC5ncHIoKSwgbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmpl
Y3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5p
bmRleGluZ1R5cGUoKSkpKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAg
ICAgICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTM5MTIsNyArMzkxMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwog
ICAgICAgICAKICAgICAgICAgY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgIG9wZXJhdGlvbk5l
d0FycmF5LCByZXN1bHQuZ3ByKCksIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRl
eGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKSwKKyAgICAgICAg
ICAgIG9wZXJhdGlvbk5ld0FycmF5LCByZXN1bHQuZ3ByKCksIG1faml0LmdyYXBoKCkucmVnaXN0
ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1
cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKSwKICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PHZvaWQqPihidWZmZXIpLCBub2RlLT5udW1DaGlsZHJlbigpKTsKICAgICAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKIApAQCAtMzk1NiwxMCArMzk1NiwxMCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIgPSBzZWxlY3RTY3Jh
dGNoR1BSKHNpemVHUFIpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBiaWdMZW5ndGgg
PSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBzaXplR1BSLCBU
cnVzdGVkSW1tMzIoTUlOX0FSUkFZX1NUT1JBR0VfQ09OU1RSVUNUSU9OX0xFTkdUSCkpOwotICAg
ICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVy
ZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKSwg
c3RydWN0dXJlR1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0Lmdy
YXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvcklu
ZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKSksIHN0cnVj
dHVyZUdQUik7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1w
KCk7CiAgICAgICAgIGJpZ0xlbmd0aC5saW5rKCZtX2ppdCk7Ci0gICAgICAgIG1faml0Lm1vdmUo
VHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBl
RHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2UpKSwgc3RydWN0dXJlR1BSKTsK
KyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkucmVnaXN0ZXJT
dHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmlu
Z0FsbG9jYXRpb24oQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSkpLCBzdHJ1Y3R1cmVHUFIpOwogICAg
ICAgICBkb25lLmxpbmsoJm1faml0KTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25O
ZXdBcnJheVdpdGhTaXplLCByZXN1bHRHUFIsIHN0cnVjdHVyZUdQUiwgc2l6ZUdQUiwgbnVsbHB0
cik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CkBAIC0zOTc5LDcgKzM5NzksNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHN0b3Jh
Z2VHUFIgPSBzdG9yYWdlLmdwcigpOwogCi0gICAgICAgICAgICBlbWl0QWxsb2NhdGVSYXdPYmpl
Y3QocmVzdWx0R1BSLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBl
RHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cywg
bnVtRWxlbWVudHMpOworICAgICAgICAgICAgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQ
UiwgbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3Ry
dWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpKSwgc3Rv
cmFnZUdQUiwgbnVtRWxlbWVudHMsIG51bUVsZW1lbnRzKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBpbmRleGluZ1R5cGUgJiBJc0Fy
cmF5KTsKICAgICAgICAgICAgIEpTVmFsdWUqIGRhdGEgPSBtX2ppdC5jb2RlQmxvY2soKS0+Y29u
c3RhbnRCdWZmZXIobm9kZS0+c3RhcnRDb25zdGFudCgpKTsKQEAgLTQwMDUsNyArNDAwNSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hS
ZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwog
ICAgICAgICAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwg
cmVzdWx0LmdwcigpLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBl
RHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSksIG5vZGUtPnN0YXJ0Q29uc3Rh
bnQoKSwgbm9kZS0+bnVtQ29uc3RhbnRzKCkpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbk5ld0FycmF5QnVmZmVyLCByZXN1bHQuZ3ByKCksIG1faml0LmdyYXBoKCkucmVnaXN0ZXJT
dHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmlu
Z0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKSwgbm9kZS0+c3RhcnRDb25zdGFudCgp
LCBub2RlLT5udW1Db25zdGFudHMoKSk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CiAgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CkBAIC00
MDI5LDcgKzQwMjksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgo
KS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgICAgIGNh
bGxPcGVyYXRpb24oCiAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhP
bmVBcmd1bWVudEZvclR5cGUobm9kZS0+dHlwZWRBcnJheVR5cGUoKSksCi0gICAgICAgICAgICAg
ICAgcmVzdWx0R1BSLCBnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50
bHkobm9kZS0+dHlwZWRBcnJheVR5cGUoKSksCisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBt
X2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0
cnVjdHVyZUNvbmN1cnJlbnRseShub2RlLT50eXBlZEFycmF5VHlwZSgpKSksCiAgICAgICAgICAg
ICAgICAgYXJndW1lbnRHUFIpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
ICAgICAgICAgICAgIApAQCAtNDE0Myw3ICs0MTQzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXBMaXN0IHNsb3dQYXRoOwogCi0gICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbm9kZS0+
c3RydWN0dXJlKCk7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbm9k
ZS0+c3RydWN0dXJlKCk7CiAgICAgICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IEpTRmluYWxP
YmplY3Q6OmFsbG9jYXRpb25TaXplKHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAg
ICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yUHRyID0gc3Vic3BhY2VGb3I8SlNGaW5hbE9i
amVjdD4oKm1faml0LnZtKCkpLT5hbGxvY2F0b3JGb3IoYWxsb2NhdGlvblNpemUpOwogCkBAIC00
Mzc2LDggKzQzNzYsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIFB1dFN0cnVjdHVyZTogewotICAgICAgICBTdHJ1
Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IG5vZGUtPnRyYW5zaXRpb24oKS0+cHJldmlvdXM7Ci0gICAg
ICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gbm9kZS0+dHJhbnNpdGlvbigpLT5uZXh0Owor
ICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG9sZFN0cnVjdHVyZSA9IG5vZGUtPnRyYW5zaXRp
b24oKS0+cHJldmlvdXM7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgbmV3U3RydWN0dXJl
ID0gbm9kZS0+dHJhbnNpdGlvbigpLT5uZXh0OwogCiAgICAgICAgIG1faml0LmppdENvZGUoKS0+
Y29tbW9uLm5vdGlmeUNvbXBpbGluZ1N0cnVjdHVyZVRyYW5zaXRpb24obV9qaXQuZ3JhcGgoKS5t
X3BsYW4sIG1faml0LmNvZGVCbG9jaygpLCBub2RlKTsKIApAQCAtNDY1Miw3ICs0NjUyLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAvLyBzaW5j
ZSBpdCByZWxpZXMgb24gT1NSIGluZm9ybWF0aW9uLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU0ODMyCiAgICAgICAgIGlmICghaGFzSW5zdGFuY2VWYWx1ZU5vZGUt
PmlzQ2VsbENvbnN0YW50KCkgfHwgZGVmYXVsdEhhc0luc3RhbmNlRnVuY3Rpb24gIT0gaGFzSW5z
dGFuY2VWYWx1ZU5vZGUtPmFzQ2VsbCgpKSB7CiAgICAgICAgICAgICBHUFJSZWcgaGFzSW5zdGFu
Y2VWYWx1ZUdQUiA9IGhhc0luc3RhbmNlVmFsdWUuZ3ByKCk7Ci0gICAgICAgICAgICBub3REZWZh
dWx0ID0gbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgaGFzSW5zdGFu
Y2VWYWx1ZUdQUiwgVHJ1c3RlZEltbVB0cihkZWZhdWx0SGFzSW5zdGFuY2VGdW5jdGlvbikpOwor
ICAgICAgICAgICAgbm90RGVmYXVsdCA9IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIGhhc0luc3RhbmNlVmFsdWVHUFIsIFRydXN0ZWRJbW1QdHIobm9kZS0+Y2VsbE9w
ZXJhbmQoKSkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gQ2hlY2sgdGhhdCBiYXNlICdJbXBs
ZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlJy4KQEAgLTQ3MTksNyArNDcxOSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGlzTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZC5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICBHUFJSZWcgbG9jYWxHbG9i
YWxPYmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVjdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJl
ZyByZW1vdGVHbG9iYWxPYmplY3RHUFIgPSByZW1vdGVHbG9iYWxPYmplY3QuZ3ByKCk7Ci0gICAg
ICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CisgICAgICAgICAg
ICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIG1f
aml0Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbG9jYWxHbG9iYWxP
YmplY3RHUFIpOwogICAgICAgICAgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUodmFsdWUuZ3By
KCksIHJlc3VsdC5ncHIoKSwgc2NyYXRjaC5ncHIoKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2Fk
UHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdC5ncHIoKSwgU3RydWN0dXJlOjpnbG9iYWxP
YmplY3RPZmZzZXQoKSksIHJlbW90ZUdsb2JhbE9iamVjdEdQUik7IAogICAgICAgICAgICAgbV9q
aXQuY29tcGFyZVB0cihKSVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2JqZWN0R1BSLCBy
ZW1vdGVHbG9iYWxPYmplY3RHUFIsIHJlc3VsdC5ncHIoKSk7CkBAIC00OTEyLDkgKzQ5MTIsOSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIG1faml0
LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChidWZmZXJHUFIsIGluZGV4R1BSLCBN
YWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCksIGJ1Y2tldEdQUik7CiAgICAgICAgIG1faml0Lm1v
dmUoYnVja2V0R1BSLCByZXN1bHRHUFIpOwogICAgICAgICBhdXRvIG5vdFByZXNlbnRJblRhYmxl
ID0gbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICBi
dWNrZXRHUFIsIFRydXN0ZWRJbW1QdHIoSGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNoTWFw
QnVja2V0RGF0YUtleT4+OjplbXB0eVZhbHVlKCkpKTsKKyAgICAgICAgICAgIGJ1Y2tldEdQUiwg
VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8c2l6ZV90PihIYXNoTWFwSW1wbDxIYXNoTWFwQnVj
a2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46OmVtcHR5VmFsdWUoKSkpKTsKICAgICAgICAgbG9v
cEFyb3VuZC5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0g
ICAgICAgICAgICBidWNrZXRHUFIsIFRydXN0ZWRJbW1QdHIoSGFzaE1hcEltcGw8SGFzaE1hcEJ1
Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT4+OjpkZWxldGVkVmFsdWUoKSkpKTsKKyAgICAgICAg
ICAgIGJ1Y2tldEdQUiwgVHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8c2l6ZV90PihIYXNoTWFw
SW1wbDxIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46OmRlbGV0ZWRWYWx1ZSgp
KSkpKTsKIAogICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYnVj
a2V0R1BSLCBIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pjo6b2Zmc2V0T2ZLZXko
KSksIGJ1Y2tldEdQUik7CiAKQEAgLTU5ODIsNyArNTk4Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVBbGxvY2F0ZU5ld0EKICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tNjQo
SlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSkpLCBzY3JhdGNoR1BSKTsKICAgICBlbWl0SW5pdGlh
bGl6ZUJ1dHRlcmZseShzdG9yYWdlR1BSLCBzaXplR1BSLCBKU1ZhbHVlUmVncyhzY3JhdGNoR1BS
KSwgc2NyYXRjaDJHUFIpOwogCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmpl
Y3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGlu
Z1R5cGUpOworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9qaXQuZ3JhcGgo
KS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhp
bmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpKTsKICAgICAKICAgICBlbWl0QWxs
b2NhdGVKU09iamVjdDxKU0FycmF5PihyZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJl
KSwgc3RvcmFnZUdQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNlcyk7CiAgICAg
CkBAIC01OTkxLDcgKzU5OTEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2Nh
dGVOZXdBCiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxDYWxsQXJy
YXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3I+KAogICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIHJlc3VsdEdQUiwKICAg
ICAgICAgc3RydWN0dXJlLAotICAgICAgICBzaG91bGRDb252ZXJ0TGFyZ2VTaXplVG9BcnJheVN0
b3JhZ2UgPyBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5n
QWxsb2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2UpIDogc3RydWN0dXJlLAorICAgICAgICBz
aG91bGRDb252ZXJ0TGFyZ2VTaXplVG9BcnJheVN0b3JhZ2UgPyBtX2ppdC5ncmFwaCgpLnJlZ2lz
dGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVE
dXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aEFycmF5U3RvcmFnZSkpIDogc3RydWN0dXJlLAogICAg
ICAgICBzaXplR1BSLCBzdG9yYWdlR1BSKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyMTEyMjkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBTcGVjdWxhdGl2ZUpJVDo6flNwZWN1bGF0aXZlSklU
KCkKIHsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlUmF3T2JqZWN0KEdQ
UlJlZyByZXN1bHRHUFIsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBHUFJSZWcgc3RvcmFnZUdQUiwg
dW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCkKK3ZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZVJhd09iamVjdChHUFJSZWcgcmVzdWx0R1BSLCBSZWdpc3Rl
cmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgR1BSUmVnIHN0b3JhZ2VHUFIsIHVuc2lnbmVkIG51bUVs
ZW1lbnRzLCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpCiB7CiAgICAgSW5kZXhpbmdUeXBlIGluZGV4
aW5nVHlwZSA9IHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCk7CiAgICAgYm9vbCBoYXNJbmRleGlu
Z0hlYWRlciA9IGhhc0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSk7CkBAIC05OCw3ICs5
OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZVJhd09iamUKICAgICBHUFJS
ZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKIAogICAgIEFTU0VSVCh2ZWN0b3JMZW5n
dGggPj0gbnVtRWxlbWVudHMpOwotICAgIHZlY3Rvckxlbmd0aCA9IEJ1dHRlcmZseTo6b3B0aW1h
bENvbnRpZ3VvdXNWZWN0b3JMZW5ndGgoc3RydWN0dXJlLCB2ZWN0b3JMZW5ndGgpOworICAgIHZl
Y3Rvckxlbmd0aCA9IEJ1dHRlcmZseTo6b3B0aW1hbENvbnRpZ3VvdXNWZWN0b3JMZW5ndGgoc3Ry
dWN0dXJlLmdldCgpLCB2ZWN0b3JMZW5ndGgpOwogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1w
TGlzdCBzbG93Q2FzZXM7CiAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjplbWl0R2V0Q2FsbGVlKENvZGVPCiAgICAgICAgICAgICAgICAgY2FsbGVlR1BSKTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1faml0Lm1vdmUoCi0gICAgICAgICAgICAgICAgVHJ1
c3RlZEltbVB0cihvcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVSZWNvdmVyeS5jb25zdGFu
dCgpLmFzQ2VsbCgpKSwKKyAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2ppdC5ncmFwaCgpLCBvcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVSZWNvdmVyeS5j
b25zdGFudCgpLmFzQ2VsbCgpKSwKICAgICAgICAgICAgICAgICBjYWxsZWVHUFIpOwogICAgICAg
ICB9CiAgICAgfSBlbHNlCkBAIC02NDgsNyArNjQ4LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
c2lsZW50RmlsbChjb25zdCBTaQogICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihwbGFu
Lm5vZGUoKS0+YXNCb29sZWFuKCkpLCBwbGFuLmdwcigpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBTZXRDZWxsQ29uc3RhbnQ6Ci0gICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihw
bGFuLm5vZGUoKS0+YXNDZWxsKCkpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgQVNTRVJUKHBsYW4u
bm9kZSgpLT5jb25zdGFudCgpLT52YWx1ZSgpLmlzQ2VsbCgpKTsKKyAgICAgICAgbV9qaXQubW92
ZShUcnVzdGVkSW1tUHRyKHBsYW4ubm9kZSgpLT5jb25zdGFudCgpKSwgcGxhbi5ncHIoKSk7CiAg
ICAgICAgIGJyZWFrOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgY2FzZSBTZXRUcnVzdGVkSlND
b25zdGFudDoKQEAgLTg3Nyw3ICs4NzgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0Fy
cmF5KE5vZGUqIG5vCiAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHRlbXAuZ3ByKCksIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpLAotICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoZXhwZWN0ZWRDbGFzc0luZm8pKSk7CisgICAg
ICAgICAgICBUcnVzdGVkSW1tUHRyKGV4cGVjdGVkQ2xhc3NJbmZvKSkpOwogICAgIAogICAgIG5v
UmVzdWx0KG1fY3VycmVudE5vZGUpOwogfQpAQCAtMjA1NSw3ICsyMDU2LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25TdAogICAgIGNvbnQ4Qml0LmxpbmsoJm1faml0
KTsKIAogICAgIG1faml0LmxzaGlmdDMyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoc2l6
ZW9mKHZvaWQqKSA9PSA0ID8gMiA6IDMpLCBzY3JhdGNoUmVnKTsKLSAgICBtX2ppdC5hZGRQdHIo
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c21hbGxTdHJpbmdzLnNp
bmdsZUNoYXJhY3RlclN0cmluZ3MoKSksIHNjcmF0Y2hSZWcpOworICAgIG1faml0LmFkZFB0cihU
cnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJp
bmdzKCkpLCBzY3JhdGNoUmVnKTsKICAgICBtX2ppdC5sb2FkUHRyKHNjcmF0Y2hSZWcsIHNjcmF0
Y2hSZWcpOwogCiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCkBAIC0yMTQ2LDcgKzIxNDcsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRnJvbUNoYXJDb2RlCiAKICAgICBKSVRDb21w
aWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJh
bmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcsIFRydXN0ZWRJ
bW0zMigweGZmKSkpOwotICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIobV9qaXQudm0oKS0+c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZ3MoKSksIHNt
YWxsU3RyaW5nc1JlZyk7CisgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0LnZtKCkt
PnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzKCkpLCBzbWFsbFN0cmluZ3NSZWcp
OwogICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzbWFsbFN0cmlu
Z3NSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6U2NhbGVQdHIsIDApLCBzY3JhdGNo
UmVnKTsKIAogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNz
ZW1ibGVyOjpaZXJvLCBzY3JhdGNoUmVnKSk7CkBAIC0yNDY4LDcgKzI0NjksNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlRG91YmxlUmVwKE5vCiAgICAgICAgICAgICBKSVRDb21waWxl
cjo6SnVtcCBpc1VuZGVmaW5lZCA9IG1faml0LmJyYW5jaDY0KEpJVENvbXBpbGVyOjpFcXVhbCwg
b3AxR1BSLCBUcnVzdGVkSW1tNjQoVmFsdWVVbmRlZmluZWQpKTsKIAogICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IGRvdWJsZSB6ZXJvID0gMDsKLSAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUo
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJnplcm8pLCByZXN1bHRGUFIpOworICAgICAg
ICAgICAgbV9qaXQubG9hZERvdWJsZShUcnVzdGVkSW1tUHRyKCZ6ZXJvKSwgcmVzdWx0RlBSKTsK
IAogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOdWxsID0gbV9qaXQuYnJhbmNoNjQo
SklUQ29tcGlsZXI6OkVxdWFsLCBvcDFHUFIsIFRydXN0ZWRJbW02NChWYWx1ZU51bGwpKTsKICAg
ICAgICAgICAgIGRvbmUuYXBwZW5kKGlzTnVsbCk7CkBAIC0yNDc4LDEzICsyNDc5LDEzIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVSZXAoTm8KIAogICAgICAgICAgICAgSklU
Q29tcGlsZXI6Okp1bXAgaXNGYWxzZSA9IG1faml0LmJyYW5jaDY0KEpJVENvbXBpbGVyOjpFcXVh
bCwgb3AxR1BSLCBUcnVzdGVkSW1tNjQoVmFsdWVGYWxzZSkpOwogICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IGRvdWJsZSBvbmUgPSAxOwotICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmb25lKSwgcmVzdWx0RlBSKTsKKyAgICAgICAgICAg
IG1faml0LmxvYWREb3VibGUoVHJ1c3RlZEltbVB0cigmb25lKSwgcmVzdWx0RlBSKTsKICAgICAg
ICAgICAgIGRvbmUuYXBwZW5kKG1faml0Lmp1bXAoKSk7CiAgICAgICAgICAgICBkb25lLmFwcGVu
ZChpc0ZhbHNlKTsKIAogICAgICAgICAgICAgaXNVbmRlZmluZWQubGluaygmbV9qaXQpOwogICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBOYU4gPSBQTmFOOwotICAgICAgICAgICAgbV9q
aXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmTmFOKSwgcmVzdWx0
RlBSKTsKKyAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoVHJ1c3RlZEltbVB0cigmTmFOKSwg
cmVzdWx0RlBSKTsKICAgICAgICAgICAgIGRvbmUuYXBwZW5kKG1faml0Lmp1bXAoKSk7CiAKICAg
ICAgICAgICAgIGlzTnVtYmVyLmxpbmsoJm1faml0KTsKQEAgLTI1MTcsNyArMjUxOCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVSZXAoTm8KICAgICAgICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wIGlzVW5kZWZpbmVkID0gbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6OkVx
dWFsLCBvcDFUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpVbmRlZmluZWRUYWcpKTsKIAog
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSB6ZXJvID0gMDsKLSAgICAgICAgICAgIG1f
aml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJnplcm8pLCByZXN1
bHRGUFIpOworICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShUcnVzdGVkSW1tUHRyKCZ6ZXJv
KSwgcmVzdWx0RlBSKTsKIAogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOdWxsID0g
bV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6OkVxdWFsLCBvcDFUYWdHUFIsIFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpOdWxsVGFnKSk7CiAgICAgICAgICAgICBkb25lLmFwcGVuZChpc051bGwpOwpA
QCAtMjUyNiwxMyArMjUyNywxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRG91Ymxl
UmVwKE5vCiAKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzRmFsc2UgPSBtX2ppdC5i
cmFuY2hUZXN0MzIoSklUQ29tcGlsZXI6Olplcm8sIG9wMVBheWxvYWRHUFIsIFRydXN0ZWRJbW0z
MigxKSk7CiAgICAgICAgICAgICBzdGF0aWMgY29uc3QgZG91YmxlIG9uZSA9IDE7Ci0gICAgICAg
ICAgICBtX2ppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZvbmUp
LCByZXN1bHRGUFIpOworICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShUcnVzdGVkSW1tUHRy
KCZvbmUpLCByZXN1bHRGUFIpOwogICAgICAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuanVtcCgp
KTsKICAgICAgICAgICAgIGRvbmUuYXBwZW5kKGlzRmFsc2UpOwogCiAgICAgICAgICAgICBpc1Vu
ZGVmaW5lZC5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICBzdGF0aWMgY29uc3QgZG91YmxlIE5h
TiA9IFBOYU47Ci0gICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKCZOYU4pLCByZXN1bHRGUFIpOworICAgICAgICAgICAgbV9qaXQubG9hZERv
dWJsZShUcnVzdGVkSW1tUHRyKCZOYU4pLCByZXN1bHRGUFIpOwogICAgICAgICAgICAgZG9uZS5h
cHBlbmQobV9qaXQuanVtcCgpKTsKIAogICAgICAgICAgICAgaXNOdW1iZXIubGluaygmbV9qaXQp
OwpAQCAtMjY0NywxMiArMjY0OCwxMiBAQCBzdGF0aWMgdm9pZCBjb21waWxlQ2xhbXBEb3VibGVU
b0J5dGUoSklUCiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSB6ZXJvID0gMDsKICAgICBzdGF0aWMg
Y29uc3QgZG91YmxlIGJ5dGVNYXggPSAyNTU7CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBoYWxm
ID0gMC41OwotICAgIGppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KCZ6ZXJvKSwgc2NyYXRjaCk7CisgICAgaml0LmxvYWREb3VibGUoSklUQ29tcGlsZXI6OlRydXN0
ZWRJbW1QdHIoJnplcm8pLCBzY3JhdGNoKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCB0b29T
bWFsbCA9IGppdC5icmFuY2hEb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUxlc3NUaGFuT3JF
cXVhbE9yVW5vcmRlcmVkLCBzb3VyY2UsIHNjcmF0Y2gpOwotICAgIGppdC5sb2FkRG91YmxlKE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZieXRlTWF4KSwgc2NyYXRjaCk7CisgICAgaml0
LmxvYWREb3VibGUoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIoJmJ5dGVNYXgpLCBzY3JhdGNo
KTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCB0b29CaWcgPSBqaXQuYnJhbmNoRG91YmxlKE1h
Y3JvQXNzZW1ibGVyOjpEb3VibGVHcmVhdGVyVGhhbiwgc291cmNlLCBzY3JhdGNoKTsKICAgICAK
LSAgICBqaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmaGFsZiks
IHNjcmF0Y2gpOworICAgIGppdC5sb2FkRG91YmxlKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRy
KCZoYWxmKSwgc2NyYXRjaCk7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IGp1
c3QgdXNlIGEgZmxvYXRpbmcgcG9pbnQgcm91bmQhCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMDU0CiAgICAgaml0LmFkZERvdWJsZShzb3VyY2UsIHNj
cmF0Y2gpOwpAQCAtMzkwMCw3ICszOTAxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU1ha2VSb3BlKE5vZAogICAgIE1hcmtlZEFsbG9jYXRvciogbWFya2VkQWxsb2NhdG9yID0gc3Vi
c3BhY2VGb3I8SlNTdHJpbmc+KCptX2ppdC52bSgpKS0+YWxsb2NhdG9yRm9yKHNpemVvZihKU1Jv
cGVTdHJpbmcpKTsKICAgICBSRUxFQVNFX0FTU0VSVChtYXJrZWRBbGxvY2F0b3IpOwogICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtYXJrZWRBbGxvY2F0b3IpLCBhbGxvY2F0b3JHUFIpOwot
ICAgIGVtaXRBbGxvY2F0ZUpTQ2VsbChyZXN1bHRHUFIsIG1hcmtlZEFsbG9jYXRvciwgYWxsb2Nh
dG9yR1BSLCBUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSks
IHNjcmF0Y2hHUFIsIHNsb3dQYXRoKTsKKyAgICBlbWl0QWxsb2NhdGVKU0NlbGwocmVzdWx0R1BS
LCBtYXJrZWRBbGxvY2F0b3IsIGFsbG9jYXRvckdQUiwgVHJ1c3RlZEltbVB0cihtX2ppdC5ncmFw
aCgpLnJlZ2lzdGVyU3RydWN0dXJlKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkp
LCBzY3JhdGNoR1BSLCBzbG93UGF0aCk7CiAgICAgICAgIAogICAgIG1faml0LnN0b3JlUHRyKFRy
dXN0ZWRJbW1QdHIoMCksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNTdHJpbmc6
Om9mZnNldE9mVmFsdWUoKSkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1PcEdQ
UnM7ICsraSkKQEAgLTUwOTcsNyArNTA5OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVBcml0aFJvdW5kaW4KICAgICAgICAgICAgICAgICBGUFJSZWcgcmVzdWx0RlBSID0gcmVzdWx0
LmZwcigpOwogICAgICAgICAgICAgICAgIGlmIChwcm9kdWNlc0ludGVnZXIobm9kZS0+YXJpdGhS
b3VuZGluZ01vZGUoKSkgJiYgIXNob3VsZENoZWNrTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoUm91
bmRpbmdNb2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBkb3VibGUg
aGFsZkNvbnN0YW50ID0gMC41OwotICAgICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkRG91Ymxl
KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZoYWxmQ29uc3RhbnQpLCByZXN1bHRGUFIp
OworICAgICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKFRydXN0ZWRJbW1QdHIoJmhh
bGZDb25zdGFudCksIHJlc3VsdEZQUik7CiAgICAgICAgICAgICAgICAgICAgIG1faml0LmFkZERv
dWJsZSh2YWx1ZUZQUiwgcmVzdWx0RlBSKTsKICAgICAgICAgICAgICAgICAgICAgbV9qaXQuZmxv
b3JEb3VibGUocmVzdWx0RlBSLCByZXN1bHRGUFIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7
CkBAIC01MTA5LDExICs1MTEwLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0
aFJvdW5kaW4KICAgICAgICAgICAgICAgICAgICAgRlBSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7
CiAgICAgICAgICAgICAgICAgICAgIEZQUlJlZyBzY3JhdGNoRlBSID0gc2NyYXRjaC5mcHIoKTsK
ICAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBoYWxmQ29uc3RhbnQgPSAw
LjU7Ci0gICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIoJmhhbGZDb25zdGFudCksIHNjcmF0Y2hGUFIpOworICAgICAgICAgICAg
ICAgICAgICBtX2ppdC5sb2FkRG91YmxlKFRydXN0ZWRJbW1QdHIoJmhhbGZDb25zdGFudCksIHNj
cmF0Y2hGUFIpOwogCiAgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHNob3Vs
ZFVzZUNlaWxlZCA9IG1faml0LmJyYW5jaERvdWJsZShKSVRDb21waWxlcjo6RG91YmxlTGVzc1Ro
YW5PckVxdWFsLCByZWFsUGFydEZQUiwgc2NyYXRjaEZQUik7CiAgICAgICAgICAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBkb3VibGUgb25lQ29uc3RhbnQgPSAtMS4wOwotICAgICAgICAgICAgICAg
ICAgICBtX2ppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZvbmVD
b25zdGFudCksIHNjcmF0Y2hGUFIpOworICAgICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkRG91
YmxlKFRydXN0ZWRJbW1QdHIoJm9uZUNvbnN0YW50KSwgc2NyYXRjaEZQUik7CiAgICAgICAgICAg
ICAgICAgICAgIG1faml0LmFkZERvdWJsZShzY3JhdGNoRlBSLCByZXN1bHRGUFIpOwogICAgICAg
ICAgICAgICAgICAgICBzaG91bGRVc2VDZWlsZWQubGluaygmbV9qaXQpOwogICAgICAgICAgICAg
ICAgIH0KQEAgLTYzNTMsMTIgKzYzNTQsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUNoZWNrU3RyaW5nSQogICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgQ2xhc3NUeXBlPiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3RnVuY3Rpb25Db21t
b24oR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBzY3JhdGNo
MUdQUiwgR1BSUmVnIHNjcmF0Y2gyR1BSLCBHUFJSZWcgc2NvcGVHUFIsIE1hY3JvQXNzZW1ibGVy
OjpKdW1wTGlzdCYgc2xvd1BhdGgsIHNpemVfdCBzaXplLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUsIHB0cmRpZmZfdCBvZmZzZXRPZlNjb3BlQ2hhaW4sIHB0cmRpZmZfdCBvZmZzZXRP
ZkV4ZWN1dGFibGUsIHB0cmRpZmZfdCBvZmZzZXRPZlJhcmVEYXRhKQordGVtcGxhdGUgPHR5cGVu
YW1lIENsYXNzVHlwZT4gdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uQ29t
bW9uKEdQUlJlZyByZXN1bHRHUFIsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCBHUFJS
ZWcgc2NyYXRjaDFHUFIsIEdQUlJlZyBzY3JhdGNoMkdQUiwgR1BSUmVnIHNjb3BlR1BSLCBNYWNy
b0Fzc2VtYmxlcjo6SnVtcExpc3QmIHNsb3dQYXRoLCBzaXplX3Qgc2l6ZSwgRnVuY3Rpb25FeGVj
dXRhYmxlKiBleGVjdXRhYmxlLCBwdHJkaWZmX3Qgb2Zmc2V0T2ZTY29wZUNoYWluLCBwdHJkaWZm
X3Qgb2Zmc2V0T2ZFeGVjdXRhYmxlLCBwdHJkaWZmX3Qgb2Zmc2V0T2ZSYXJlRGF0YSkKIHsKICAg
ICBlbWl0QWxsb2NhdGVKU09iamVjdFdpdGhLbm93blNpemU8Q2xhc3NUeXBlPihyZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgVHJ1c3RlZEltbVB0cigwKSwgc2NyYXRjaDFHUFIs
IHNjcmF0Y2gyR1BSLCBzbG93UGF0aCwgc2l6ZSk7CiAgICAgCiAgICAgbV9qaXQuc3RvcmVQdHIo
c2NvcGVHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0T2ZTY29wZUNo
YWluKSk7Ci0gICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihleGVjdXRhYmxlKSwgSklU
Q29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRPZkV4ZWN1dGFibGUpKTsKKyAgICBt
X2ppdC5zdG9yZVB0cihUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBl
eGVjdXRhYmxlKSwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRPZkV4ZWN1
dGFibGUpKTsKICAgICBtX2ppdC5zdG9yZVB0cihUcnVzdGVkSW1tUHRyKDApLCBKSVRDb21waWxl
cjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9mZnNldE9mUmFyZURhdGEpKTsKICAgICAKICAgICBtX2pp
dC5tdXRhdG9yRmVuY2UoKTsKQEAgLTYzOTEsMTAgKzYzOTIsMTAgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPQorICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJl
ID0gbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZSgKICAgICAgICAgbm9kZVR5cGUgPT0g
TmV3R2VuZXJhdG9yRnVuY3Rpb24gPyBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLT5nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpIDoKICAgICAg
ICAgbm9kZVR5cGUgPT0gTmV3QXN5bmNGdW5jdGlvbiA/IG1faml0LmdyYXBoKCkuZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKSA6
Ci0gICAgICAgIG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyktPmZ1bmN0aW9uU3RydWN0dXJlKCk7CisgICAgICAgIG1faml0LmdyYXBoKCkuZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmZ1bmN0aW9uU3RydWN0dXJlKCkpOwog
ICAgIAogICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHNj
cmF0Y2gxKHRoaXMpOwpAQCAtNjUxMCw4ICs2NTExLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUZvcndhcmRWYXJhcgogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUFj
dGl2YXRpb24oTm9kZSogbm9kZSkKIHsKICAgICBTeW1ib2xUYWJsZSogdGFibGUgPSBub2RlLT5j
YXN0T3BlcmFuZDxTeW1ib2xUYWJsZSo+KCk7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBt
X2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcigKLSAgICAgICAgbm9kZS0+b3JpZ2luLnNlbWFu
dGljKS0+YWN0aXZhdGlvblN0cnVjdHVyZSgpOworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3Ry
dWN0dXJlID0gbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShtX2ppdC5ncmFwaCgpLmds
b2JhbE9iamVjdEZvcigKKyAgICAgICAgbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YWN0aXZhdGlv
blN0cnVjdHVyZSgpKTsKICAgICAgICAgCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEdQUlJlZyBzY29wZUdQUiA9IHNjb3BlLmdwcigp
OwpAQCAtNjU1Miw3ICs2NTUzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0
ZUFjdGl2YQogICAgIC8vIGFjdGl2YXRpb24gbXVzdCBiZSB5b3VuZy4KICAgICBtX2ppdC5zdG9y
ZVB0cihzY29wZUdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU1Njb3BlOjpv
ZmZzZXRPZk5leHQoKSkpOwogICAgIG1faml0LnN0b3JlUHRyKAotICAgICAgICBUcnVzdGVkSW1t
UHRyKHRhYmxlKSwKKyAgICAgICAgVHJ1c3RlZEltbVB0cihub2RlLT5jZWxsT3BlcmFuZCgpKSwK
ICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0xleGljYWxFbnZpcm9u
bWVudDo6b2Zmc2V0T2ZTeW1ib2xUYWJsZSgpKSk7CiAgICAgICAgIAogICAgIC8vIE11c3QgaW5p
dGlhbGl6ZSBhbGwgbWVtYmVycyB0byB1bmRlZmluZWQgb3IgdGhlIFREWiBlbXB0eSB2YWx1ZS4K
QEAgLTY2MTUsOCArNjYxNiw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVE
aXJlY3QKICAgICAgICAgbV9qaXQuc3ViMzIoVHJ1c3RlZEltbTMyKDEpLCBsZW5ndGhHUFIpOwog
ICAgIH0KICAgICAgICAgCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPQotICAgICAgICBtX2pp
dC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5kaXJlY3RB
cmd1bWVudHNTdHJ1Y3R1cmUoKTsKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9
CisgICAgICAgIG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUobV9qaXQuZ3JhcGgoKS5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZGlyZWN0QXJndW1lbnRzU3Ry
dWN0dXJlKCkpOwogICAgICAgICAKICAgICAvLyBVc2UgYSBkaWZmZXJlbnQgc3RyYXRlZ3kgZm9y
IGFsbG9jYXRpbmcgdGhlIG9iamVjdCBkZXBlbmRpbmcgb24gd2hldGhlciB3ZSBrbm93IGl0cwog
ICAgIC8vIHNpemUgc3RhdGljYWxseS4KQEAgLTY2ODEsOCArNjY4Miw4IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVEaXJlY3QKICAgICAgICAgICAgICAgICBzY3JhdGNoMUdQ
Uik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKAotICAgICAgICAg
ICAgICAgIFRydXN0ZWRJbW1QdHIoCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUtPmNhbGxlZVJlY292ZXJ5LmNvbnN0YW50KCkuYXNDZWxs
KCkpLAorICAgICAgICAgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKAorICAgICAg
ICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5l
Q2FsbEZyYW1lLT5jYWxsZWVSZWNvdmVyeS5jb25zdGFudCgpLmFzQ2VsbCgpKSwKICAgICAgICAg
ICAgICAgICBzY3JhdGNoMUdQUik7CiAgICAgICAgIH0KICAgICB9IGVsc2UKQEAgLTY3OTgsNyAr
Njc5OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVTY29wZWQKICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50KAogICAgICAgICAxLCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7CiAg
ICAgICAgICAgICBtX2ppdC5tb3ZlKAotICAgICAgICAgICAgICAgIFRydXN0ZWRJbW1QdHIobV9q
aXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnNjb3BlZEFyZ3VtZW50
c1N0cnVjdHVyZSgpKSwKKyAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2ppdC5ncmFwaCgpLCBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKS0+c2NvcGVkQXJndW1lbnRzU3RydWN0dXJlKCkpLAogICAgICAgICAgICAgICAgIGRlc3RH
UFIpOwogICAgICAgICB9KTsKICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50KDAsIFsmXSAoR1BSUmVn
IGRlc3RHUFIpIHsgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgZGVzdEdQ
Uik7IH0pOwpAQCAtNjgyNSw4ICs2ODI2LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUNyZWF0ZUNsb25lZAogICAgIG1faml0LnNldHVwQXJndW1lbnQoCiAgICAgICAgIDEsIFsmXSAo
R1BSUmVnIGRlc3RHUFIpIHsKICAgICAgICAgICAgIG1faml0Lm1vdmUoCi0gICAgICAgICAgICAg
ICAgVHJ1c3RlZEltbVB0cigKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQuZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmNsb25lZEFyZ3VtZW50c1N0cnVjdHVyZSgpKSwK
KyAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcigKKyAgICAgICAgICAg
ICAgICAgICAgbV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyktPmNsb25lZEFyZ3VtZW50c1N0cnVjdHVyZSgpKSwKICAgICAgICAgICAgICAg
ICBkZXN0R1BSKTsKICAgICAgICAgfSk7CiAgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgwLCBbJl0g
KEdQUlJlZyBkZXN0R1BSKSB7IG1faml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IGRlc3RHUFIpOyB9KTsKQEAgLTY5NDksNyArNjk1MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVTcHJlYWQoTm9kZSoKICAgICAgICAgbV9qaXQubHNoaWZ0MzIoVHJ1c3RlZEltbTMy
KDMpLCBzY3JhdGNoMUdQUik7CiAgICAgICAgIG1faml0LmFkZDMyKFRydXN0ZWRJbW0zMihKU0Zp
eGVkQXJyYXk6Om9mZnNldE9mRGF0YSgpKSwgc2NyYXRjaDFHUFIpOwogCi0gICAgICAgIG1faml0
LmVtaXRBbGxvY2F0ZVZhcmlhYmxlU2l6ZWRDZWxsPEpTRml4ZWRBcnJheT4ocmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkubV92bS5maXhlZEFycmF5U3RydWN0dXJlLmdldCgp
KSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd1BhdGgpOworICAg
ICAgICBtX2ppdC5lbWl0QWxsb2NhdGVWYXJpYWJsZVNpemVkQ2VsbDxKU0ZpeGVkQXJyYXk+KHJl
c3VsdEdQUiwgVHJ1c3RlZEltbVB0cihtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKG1f
aml0LmdyYXBoKCkubV92bS5maXhlZEFycmF5U3RydWN0dXJlLmdldCgpKSksIHNjcmF0Y2gxR1BS
LCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIsIHNsb3dQYXRoKTsKICAgICAgICAgbV9qaXQuc3Rv
cmUzMihsZW5ndGhHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNGaXhl
ZEFycmF5OjpvZmZzZXRPZlNpemUoKSkpOwogCiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYXJndW1lbnQsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSks
IHNjcmF0Y2gxR1BSKTsKQEAgLTcyNjYsMTcgKzcyNjcsMTcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUFycmF5U2xpY2UoTgogICAgICAgICAvLyB0byBlbnN1cmUgdGhlIGluY29taW5n
IGFycmF5IGlzIG9uZSB0byBiZSBvbmUgb2YgdGhlIG9yaWdpbmFsIGFycmF5IHN0cnVjdHVyZXMK
ICAgICAgICAgLy8gd2l0aCBvbmUgb2YgdGhlIGZvbGxvd2luZyBpbmRleGluZyBzaGFwZXM6IElu
dDMyLCBDb250aWd1b3VzLCBEb3VibGUuIFRoZXJlZm9yZSwKICAgICAgICAgLy8gd2UncmUgYSBk
b3VibGUgYXJyYXkgaGVyZS4KLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKGdsb2Jh
bE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFy
cmF5V2l0aERvdWJsZSkpLCB0ZW1wVmFsdWUpOworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJ
bW1QdHIobV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5
U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhEb3VibGUp
KSksIHRlbXBWYWx1ZSk7CiAgICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZShqc05hTigpKTsKICAg
ICAgICAgZG9uZS5hcHBlbmQobV9qaXQuanVtcCgpKTsKIAogICAgICAgICBpc0NvbnRpZ3VvdXMu
bGluaygmbV9qaXQpOwotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2Jq
ZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlX
aXRoQ29udGlndW91cykpLCB0ZW1wVmFsdWUpOworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJ
bW1QdHIobV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5
U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhDb250aWd1
b3VzKSkpLCB0ZW1wVmFsdWUpOwogICAgICAgICBlbWl0TW92ZUVtcHR5VmFsdWUoSlNWYWx1ZSgp
KTsKICAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuanVtcCgpKTsKIAogICAgICAgICBpc0ludDMy
LmxpbmsoJm1faml0KTsKLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKGdsb2JhbE9i
amVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5
V2l0aEludDMyKSksIHRlbXBWYWx1ZSk7CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0
cihtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1
Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aEludDMyKSkpLCB0
ZW1wVmFsdWUpOwogICAgICAgICBlbWl0TW92ZUVtcHR5VmFsdWUoSlNWYWx1ZSgpKTsKIAogICAg
ICAgICBkb25lLmxpbmsoJm1faml0KTsKQEAgLTc0NTYsNyArNzQ1Nyw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVUeXBlT2YoTm9kZSoKICAgICBtX2ppdC5lbWl0VHlwZU9mKAogICAg
ICAgICB2YWx1ZVJlZ3MsIHJlc3VsdEdQUiwKICAgICAgICAgWyZdIChUeXBlb2ZUeXBlIHR5cGUs
IGJvb2wgZmFsbHNUaHJvdWdoKSB7Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1Q
dHIobV9qaXQudm0oKS0+c21hbGxTdHJpbmdzLnR5cGVTdHJpbmcodHlwZSkpLCByZXN1bHRHUFIp
OworICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2pp
dC5ncmFwaCgpLCBtX2ppdC52bSgpLT5zbWFsbFN0cmluZ3MudHlwZVN0cmluZyh0eXBlKSksIHJl
c3VsdEdQUik7CiAgICAgICAgICAgICBpZiAoIWZhbGxzVGhyb3VnaCkKICAgICAgICAgICAgICAg
ICBkb25lLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogICAgICAgICB9LApAQCAtNzU4MCw3ICs3NTgx
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFsbG9jYXRlUHJvcAogICAgIEdQUlJl
ZyBzY3JhdGNoR1BSMiA9IHNjcmF0Y2gyLmdwcigpOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSMyA9
IHNjcmF0Y2gzLmdwcigpOwogICAgICAgICAKLSAgICBtX2ppdC5tb3ZlKEpJVENvbXBpbGVyOjpU
cnVzdGVkSW1tUHRyKGFsbG9jYXRvciksIHNjcmF0Y2hHUFIyKTsKKyAgICBtX2ppdC5tb3ZlKFRy
dXN0ZWRJbW1QdHIoYWxsb2NhdG9yKSwgc2NyYXRjaEdQUjIpOwogICAgIEpJVENvbXBpbGVyOjpK
dW1wTGlzdCBzbG93UGF0aDsKICAgICBtX2ppdC5lbWl0QWxsb2NhdGUoc2NyYXRjaEdQUjEsIGFs
bG9jYXRvciwgc2NyYXRjaEdQUjIsIHNjcmF0Y2hHUFIzLCBzbG93UGF0aCk7CiAgICAgbV9qaXQu
YWRkUHRyKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoc2l6ZSArIHNpemVvZihJbmRleGluZ0hl
YWRlcikpLCBzY3JhdGNoR1BSMSk7CkBAIC03NjI4LDcgKzc2MjksNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlUmVhbGxvY2F0ZVByCiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIzID0gc2Ny
YXRjaDMuZ3ByKCk7CiAgICAgCiAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dQYXRoOwot
ICAgIG1faml0Lm1vdmUoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIoYWxsb2NhdG9yKSwgc2Ny
YXRjaEdQUjIpOworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihhbGxvY2F0b3IpLCBzY3Jh
dGNoR1BSMik7CiAgICAgbV9qaXQuZW1pdEFsbG9jYXRlKHNjcmF0Y2hHUFIxLCBhbGxvY2F0b3Is
IHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMywgc2xvd1BhdGgpOwogICAgIAogICAgIG1faml0LmFk
ZFB0cihKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKG5ld1NpemUgKyBzaXplb2YoSW5kZXhpbmdI
ZWFkZXIpKSwgc2NyYXRjaEdQUjEpOwpAQCAtNzg1NywxMCArNzg1OCwxMCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdPckNhCiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7CiAKICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpBZGRy
ZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVzdWx0R1BSKTsKLSAg
ICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNTdHJpbmcgPSBtX2ppdC5icmFuY2hTdHJ1Y3R1cmUo
CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzU3RyaW5nID0gbV9qaXQuYnJhbmNoV2Vha1N0
cnVjdHVyZSgKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpFcXVhbCwKICAgICAgICAgICAgIHJl
c3VsdEdQUiwKLSAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSk7
CisgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKG1faml0LnZtKCkt
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogCiAgICAgICAgIHNwZWN1bGF0ZVN0cmluZ09iamVj
dEZvclN0cnVjdHVyZShub2RlLT5jaGlsZDEoKSwgcmVzdWx0R1BSKTsKICAgICAgICAgCkBAIC03
OTU2LDggKzc5NTcsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJh
CiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgVHlwZWRBcnJheVR5cGUg
dHlwZSA9IG5vZGUtPnR5cGVkQXJyYXlUeXBlKCk7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZSk7Ci0g
ICAgUkVMRUFTRV9BU1NFUlQoc3RydWN0dXJlKTsKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0
cnVjdHVyZSA9IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT50
eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGUpKTsKKyAgICBSRUxFQVNFX0FTU0VS
VChzdHJ1Y3R1cmUuZ2V0KCkpOwogICAgIAogICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBzaXpl
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBHUFJSZWcgc2l6ZUdQUiA9IHNpemUuZ3ByKCk7
CkBAIC04NDAxLDEwICs4NDAyLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0
cmluZ09yU3QKICAgICBHUFJSZWcgc3RydWN0dXJlSURHUFIgPSBzdHJ1Y3R1cmVJRC5ncHIoKTsK
IAogICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6QWRkcmVzcyhncHIsIEpTQ2VsbDo6c3Ry
dWN0dXJlSURPZmZzZXQoKSksIHN0cnVjdHVyZUlER1BSKTsgCi0gICAgSklUQ29tcGlsZXI6Okp1
bXAgaXNTdHJpbmcgPSBtX2ppdC5icmFuY2hTdHJ1Y3R1cmUoCisgICAgSklUQ29tcGlsZXI6Okp1
bXAgaXNTdHJpbmcgPSBtX2ppdC5icmFuY2hXZWFrU3RydWN0dXJlKAogICAgICAgICBKSVRDb21w
aWxlcjo6RXF1YWwsCiAgICAgICAgIHN0cnVjdHVyZUlER1BSLCAKLSAgICAgICAgbV9qaXQudm0o
KS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKTsKKyAgICAgICAgbV9qaXQuZ3JhcGgoKS5yZWdpc3Rl
clN0cnVjdHVyZShtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAKICAg
ICBzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JTdHJ1Y3R1cmUoZWRnZSwgc3RydWN0dXJlSURHUFIp
OwogICAgIApAQCAtOTI2Nyw4ICs5MjY4LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUxhenlKU0NvbnN0YQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWF0ZXJpYWxpemVO
ZXdPYmplY3QoTm9kZSogbm9kZSkKIHsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5vZGUt
PnN0cnVjdHVyZVNldCgpWzBdOwotICAgIEFTU0VSVChtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxk
KG5vZGUsIDApLT5keW5hbWljQ2FzdENvbnN0YW50PFN0cnVjdHVyZSo+KCkgPT0gc3RydWN0dXJl
KTsKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG5vZGUtPnN0cnVjdHVyZVNl
dCgpLmF0KDApOworICAgIEFTU0VSVChtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDAp
LT5keW5hbWljQ2FzdENvbnN0YW50PFN0cnVjdHVyZSo+KCkgPT0gc3RydWN0dXJlLmdldCgpKTsK
IAogICAgIE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEmIGRhdGEgPSBub2RlLT5vYmplY3RNYXRl
cmlhbGl6YXRpb25EYXRhKCk7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMjExMjI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBA
IC03NSw3ICs3NSw2IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKIHByaXZhdGU6CiAgICAgdHlw
ZWRlZiBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyIFRydXN0ZWRJbW0zMjsKICAgICB0eXBlZGVm
IEpJVENvbXBpbGVyOjpJbW0zMiBJbW0zMjsKLSAgICB0eXBlZGVmIEpJVENvbXBpbGVyOjpUcnVz
dGVkSW1tUHRyIFRydXN0ZWRJbW1QdHI7CiAgICAgdHlwZWRlZiBKSVRDb21waWxlcjo6SW1tUHRy
IEltbVB0cjsKICAgICB0eXBlZGVmIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tNjQgVHJ1c3RlZElt
bTY0OwogICAgIHR5cGVkZWYgSklUQ29tcGlsZXI6OkltbTY0IEltbTY0OwpAQCAtMTEyLDYgKzEx
MSw1OCBAQCBwdWJsaWM6CiAgICAgU3BlY3VsYXRpdmVKSVQoSklUQ29tcGlsZXImKTsKICAgICB+
U3BlY3VsYXRpdmVKSVQoKTsKIAorICAgIHN0cnVjdCBUcnVzdGVkSW1tUHRyIHsKKyAgICAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIoVCog
dmFsdWUpCisgICAgICAgICAgICA6IG1fdmFsdWUodmFsdWUpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxIZWFwQ2VsbCwgVD46OnZhbHVlLCAi
VG8gdXNlIGEgR0MgcG9pbnRlciwgdGhlIGdyYXBoIG11c3QgYmUgYXdhcmUgb2YgaXQuIFVzZSBT
cGVjdWxhdGl2ZUpJVDo6VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIgaW5zdGVhZC4iKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIoUmVnaXN0ZXJlZFN0cnVj
dHVyZSBzdHJ1Y3R1cmUpCisgICAgICAgICAgICA6IG1fdmFsdWUoc3RydWN0dXJlLmdldCgpKQor
ICAgICAgICB7IH0KKyAgICAgICAgCisgICAgICAgIC8vIFRoaXMgaXMgb25seSBoZXJlIHNvIHRo
YXQgVHJ1c3RlZEltbVB0cigwKSBkb2VzIG5vdCBjb25mdXNlIHRoZSBDKysKKyAgICAgICAgLy8g
b3ZlcmxvYWQgaGFuZGxpbmcgcnVsZXMuCisgICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIo
aW50IHZhbHVlKQorICAgICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgICAgICB7CisgICAg
ICAgICAgICBBU1NFUlQoIXZhbHVlKTsKKyAgICAgICAgfQorCisgICAgICAgIGV4cGxpY2l0IFRy
dXN0ZWRJbW1QdHIoc3RkOjpudWxscHRyX3QpCisgICAgICAgICAgICA6IG1fdmFsdWUoMCkKKyAg
ICAgICAgeyB9CisKKyAgICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbVB0cihGcm96ZW5WYWx1ZSog
dmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHZhbHVlLT52YWx1
ZSgpLmlzQ2VsbCgpKTsKKyAgICAgICAgICAgIG1fdmFsdWUgPSBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cih2YWx1ZS0+Y2VsbCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGV4cGxpY2l0
IFRydXN0ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQorICAgICAgICAgICAgOiBtX3ZhbHVlKGJpdHdp
c2VfY2FzdDx2b2lkKj4odmFsdWUpKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBz
dGF0aWMgVHJ1c3RlZEltbVB0ciB3ZWFrUG9pbnRlcihHcmFwaCYgZ3JhcGgsIEpTQ2VsbCogY2Vs
bCkKKyAgICAgICAgeworICAgICAgICAgICAgZ3JhcGgubV9wbGFuLndlYWtSZWZlcmVuY2VzLmFk
ZExhemlseShjZWxsKTsKKyAgICAgICAgICAgIHJldHVybiBUcnVzdGVkSW1tUHRyKGJpdHdpc2Vf
Y2FzdDxzaXplX3Q+KGNlbGwpKTsKKyAgICAgICAgfQorCisgICAgICAgIG9wZXJhdG9yIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQorCisg
ICAgICAgIGludHB0cl90IGFzSW50cHRyKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IG1fdmFsdWUuYXNJbnRwdHIoKTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIgbV92YWx1ZTsKKyAgICB9OworCiAgICAgYm9v
bCBjb21waWxlKCk7CiAgICAgCiAgICAgdm9pZCBjcmVhdGVPU1JFbnRyaWVzKCk7CkBAIC05ODIs
MTcgKzEwMzMsMTcgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUob2JqLCBpbXBsKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKFBfSklUT3BlcmF0aW9uX0VTdCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9K
SVRPcGVyYXRpb25fRVN0IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgUmVnaXN0ZXJlZFN0cnVj
dHVyZSBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsKICAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VTdFpQIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJn
MykKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VT
dFpQIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1
cmUsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMykKICAgICB7CiAgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGFyZzIsIGFy
ZzMpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVy
YXRpb25fRVN0WlAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgc2l6ZV90IGFyZzIsIEdQUlJlZyBhcmczKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVN0WlAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBS
ZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgc2l6ZV90IGFyZzIsIEdQUlJlZyBhcmczKQog
ICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJ
bW1QdHIoc3RydWN0dXJlKSwgVHJ1c3RlZEltbTMyKGFyZzIpLCBhcmczKTsKICAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwpAQCAtMTAwMiwxMiAr
MTA1MywxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1
bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VTdFpCIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYnV0dGVyZmx5KQorICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVN0WkIgb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgR1BS
UmVnIGFyZzIsIEdQUlJlZyBidXR0ZXJmbHkpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBhcmcyLCBidXR0
ZXJmbHkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRP
cGVyYXRpb25fRVN0WkIgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgc2l6ZV90IGFyZzIsIEdQUlJlZyBidXR0ZXJmbHkpCisgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RaQiBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHQsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCBzaXplX3QgYXJnMiwgR1BSUmVn
IGJ1dHRlcmZseSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0ZWRJbW0zMihhcmcyKSwgYnV0dGVy
Zmx5KTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOwpAQCAtMTAyMiwxMiArMTA3MywxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBUcnVzdGVkSW1tUHRyKGJ1dHRlcmZs
eSkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVy
YXRpb25fRVN0UFMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgdm9pZCogcG9pbnRlciwgc2l6ZV90IHNpemUpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RQUyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQs
IFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCB2b2lkKiBwb2ludGVyLCBzaXplX3Qgc2l6
ZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVz
dGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0ZWRJbW1QdHIocG9pbnRlciksIFRydXN0ZWRJbW1Q
dHIoc2l6ZSkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9K
SVRPcGVyYXRpb25fRVN0U1Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgc2l6ZV90IGluZGV4LCBzaXplX3Qgc2l6ZSkKKyAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VTdFNTIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIHNpemVfdCBpbmRleCwgc2l6ZV90
IHNpemUpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKGluZGV4KSwgVHJ1c3RlZElt
bVB0cihzaXplKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKQEAgLTEwNDQsNyArMTA5NSw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FQyBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHQsIEpTQ2VsbCogY2VsbCkKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGNlbGwpKTsKKyAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVy
KG1faml0LmdyYXBoKCksIGNlbGwpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1
bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VDWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQ
UlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKQEAgLTEwNTksNyArMTExMCw3IEBAIHB1YmxpYzoKICAg
ICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9F
SnNjQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwp
CiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwg
VHJ1c3RlZEltbVB0cihjZWxsKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBj
ZWxsKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9w
ZXJhdGlvbl9FSWNmIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgSW5saW5lQ2FsbEZyYW1lKiBp
bmxpbmVDYWxsRnJhbWUpCkBAIC0xMDY3LDQ2ICsxMTE4LDQ2IEBAIHB1YmxpYzoKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoaW5saW5lQ2Fs
bEZyYW1lKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJ
VE9wZXJhdGlvbl9FU3Qgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9u
X0VTdCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0
dXJlKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRy
dXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRVN0SnNjU3lt
dGFiSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBHUFJS
ZWcgc2NvcGUsIFN5bWJvbFRhYmxlKiB0YWJsZSwgVHJ1c3RlZEltbTY0IGluaXRpYWxWYWx1ZSkK
KyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdEpz
Y1N5bXRhYkogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0
cnVjdHVyZSwgR1BSUmVnIHNjb3BlLCBTeW1ib2xUYWJsZSogdGFibGUsIFRydXN0ZWRJbW02NCBp
bml0aWFsVmFsdWUpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBzY29wZSwgVHJ1c3RlZEltbVB0cih0YWJs
ZSksIGluaXRpYWxWYWx1ZSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIHNjb3BlLCBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2ppdC5ncmFwaCgpLCB0YWJsZSksIGluaXRpYWxWYWx1ZSk7CiAgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAjZWxz
ZQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRVN0
SnNjU3ltdGFiSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBHUFJSZWcgc2NvcGUsIFN5bWJvbFRhYmxlKiB0YWJsZSwgVHJ1c3RlZEltbTMyIHRhZywgVHJ1
c3RlZEltbTMyIHBheWxvYWQpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihD
X0pJVE9wZXJhdGlvbl9FU3RKc2NTeW10YWJKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgUmVn
aXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIEdQUlJlZyBzY29wZSwgU3ltYm9sVGFibGUqIHRh
YmxlLCBUcnVzdGVkSW1tMzIgdGFnLCBUcnVzdGVkSW1tMzIgcGF5bG9hZCkKICAgICB7Ci0gICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVj
dHVyZSksIHNjb3BlLCBUcnVzdGVkSW1tUHRyKHRhYmxlKSwgcGF5bG9hZCwgdGFnKTsKKyAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0
dXJlKSwgc2NvcGUsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIHRh
YmxlKSwgcGF5bG9hZCwgdGFnKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICNlbmRpZgotICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRVN0WiBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBrbm93bkxlbmd0aCkKKyAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdFogb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgdW5zaWduZWQg
a25vd25MZW5ndGgpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tMzIoa25vd25MZW5ndGgp
KTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQp
OwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0
aW9uX0VTdFpaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IHVuc2lnbmVkIGtub3duTGVuZ3RoLCB1bnNpZ25lZCBtaW5DYXBhY2l0eSkKKyAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdFpaIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGtu
b3duTGVuZ3RoLCB1bnNpZ25lZCBtaW5DYXBhY2l0eSkKICAgICB7CiAgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0
ZWRJbW0zMihrbm93bkxlbmd0aCksIFRydXN0ZWRJbW0zMihtaW5DYXBhY2l0eSkpOwogICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQot
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRVN0WiBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBHUFJSZWcgbGVu
Z3RoKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25f
RVN0WiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0
dXJlLCBHUFJSZWcgbGVuZ3RoKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgbGVuZ3RoKTsKICAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KLSAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdFpaIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBsZW5n
dGgsIHVuc2lnbmVkIG1pbkNhcGFjaXR5KQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oQ19KSVRPcGVyYXRpb25fRVN0Wlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBSZWdp
c3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgR1BSUmVnIGxlbmd0aCwgdW5zaWduZWQgbWluQ2Fw
YWNpdHkpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBsZW5ndGgsIFRydXN0ZWRJbW0zMihtaW5DYXBhY2l0
eSkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3Vs
dCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVy
YXRpb25fRUpzc1N0IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19K
SVRPcGVyYXRpb25fRUpzc1N0IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEs
IFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSk7
CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
QEAgLTExNDAsMTMgKzExOTEsMTMgQEAgcHVibGljOgogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihTX0pJVE9wZXJhdGlvbl9FR0Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBHUFJSZWcgYXJnMikKICAgICB7Ci0gICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGdsb2Jh
bE9iamVjdCksIGFyZzIpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0
KSwgYXJnMik7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKICAgICB9CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENf
SklUT3BlcmF0aW9uX0VHQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEdQUlJlZyBhcmcyKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwgYXJnMik7
CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3QpLCBhcmcyKTsKICAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0K
IApAQCAtMTE3MCw3ICsxMjIxLDcgQEAgcHVibGljOgogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FQyBvcGVyYXRpb24sIEpTQ2VsbCogYXJnMSkK
ICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVk
SW1tUHRyKGFyZzEpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGFyZzEpKTsKICAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAKQEAgLTExOTcsMTIgKzEy
NDgsMTIgQEAgcHVibGljOgogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKFZfSklUT3BlcmF0aW9uX0VDQyBvcGVyYXRpb24sIEdQUlJlZyBhcmcxLCBKU0NlbGwqIGFy
ZzIpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgVHJ1c3RlZEltbVB0cihhcmcyKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgp
LCBhcmcyKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAgICAgfQog
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUNDIG9w
ZXJhdGlvbiwgSlNDZWxsKiBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7Ci0gICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGFyZzEpLCBhcmcyKTsK
KyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGFyZzEpLCBhcmcyKTsKICAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAKQEAgLTEyNzMsMTMgKzEzMjQsMTMgQEAg
cHVibGljOgogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJh
dGlvbl9FSnNjQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBKU0NlbGwq
IGNlbGwpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFw
aCgpLCBjZWxsKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKICAgICB9CiAgICAgCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihKX0pJVE9wZXJhdGlvbl9FSnNjQ0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJS
ZWcgYXJnMSwgSlNDZWxsKiBjZWxsLCBHUFJSZWcgYXJnMikKICAgICB7Ci0gICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGNlbGwpLCBh
cmcyKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGNlbGwpLCBhcmcyKTsKICAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAg
IH0KIApAQCAtMTQ3NCw3ICsxNTI1LDcgQEAgcHVibGljOgogICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdCwgSlNDZWxsKiBjZWxsKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoY2VsbCkpOworICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQu
Z3JhcGgoKSwgY2VsbCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oSl9KSVRPcGVyYXRpb25fRUNaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyKQpAQCAtMTU0NCw3ICsxNTk1LDcgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCi0g
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RKIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBhcmcy
KQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVN0
SiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJl
LCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGFyZzIpOwogICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CkBAIC0xNTUyLDcgKzE2MDMs
NyBAQCBwdWJsaWM6CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklU
T3BlcmF0aW9uX0VHSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEdQUlJlZyBhcmcxKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwgYXJnMSk7Cisg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyOjp3
ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3QpLCBhcmcxKTsKICAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIApA
QCAtMTkwMCw3ICsxOTUxLDcgQEAgcHVibGljOgogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKERfSklUT3BlcmF0aW9uX0cgb3BlcmF0aW9uLCBGUFJSZWcgcmVzdWx0
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHMoVHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHMoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwg
Z2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihaX0pJVE9wZXJhdGlvbl9EIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgRlBSUmVnIGFyZzEp
CkBAIC0yMDA5LDcgKzIwNjAsNyBAQCBwdWJsaWM6CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VDIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVz
dWx0LCBKU0NlbGwqIGNlbGwpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihjZWxsKSk7CisgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFw
aCgpLCBjZWxsKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKICAgICB9CiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FQ1ogb3BlcmF0aW9u
LCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKQEAgLTIwMTks
MTIgKzIwNzAsMTIgQEAgcHVibGljOgogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKc2NDIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVz
dWx0LCBHUFJSZWcgYXJnMSwgSlNDZWxsKiBjZWxsKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCkpOworICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgY2VsbCkpOwogICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXlsb2FkR1BSKCksIHJlc3VsdC50
YWdHUFIoKSk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9K
SVRPcGVyYXRpb25fRUpzY0NKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEs
IEpTQ2VsbCogY2VsbCwgSlNWYWx1ZVJlZ3MgYXJnMikKICAgICB7Ci0gICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGNlbGwpLCBFQUJJ
XzMyQklUX0RVTU1ZX0FSRyBhcmcyLnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSk7CisgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBjZWxsKSwgRUFCSV8zMkJJVF9EVU1NWV9BUkcg
YXJnMi5wYXlsb2FkR1BSKCksIGFyZzIudGFnR1BSKCkpOwogICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUdSZW9KIG9wZXJhdGlvbiwgSlNW
YWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEpTVmFsdWVSZWdzIGFy
ZzMpCkBAIC0yMTA5LDcgKzIxNjAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKLSAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VTdEogb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNWYWx1ZVJlZ3MgYXJnMikKKyAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VTdEogb3BlcmF0
aW9uLCBHUFJSZWcgcmVzdWx0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgSlNWYWx1
ZVJlZ3MgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGFyZzIucGF5bG9hZEdQUigpLCBhcmcyLnRh
Z0dQUigpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOwpAQCAtMjExNyw3ICsyMTY4LDcgQEAgcHVibGljOgogCiAgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FR0ogb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlUmVncyBhcmcxKQog
ICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJ
bW1QdHIoZ2xvYmFsT2JqZWN0KSwgYXJnMS5wYXlsb2FkR1BSKCksIGFyZzEudGFnR1BSKCkpOwor
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgZ2xvYmFsT2JqZWN0KSwgYXJnMS5wYXlsb2FkR1BS
KCksIGFyZzEudGFnR1BSKCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCkBAIC0yNjY3LDcgKzI3MTgsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBH
UFJSZWcgcHJvcGVydHksIE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdm9pZCBjb21waWxl
R2V0QnlWYWxPbkZsb2F0VHlwZWRBcnJheShOb2RlKiwgVHlwZWRBcnJheVR5cGUpOwogICAgIHZv
aWQgY29tcGlsZVB1dEJ5VmFsRm9yRmxvYXRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBHUFJSZWcg
cHJvcGVydHksIE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1l
IENsYXNzVHlwZT4gdm9pZCBjb21waWxlTmV3RnVuY3Rpb25Db21tb24oR1BSUmVnLCBTdHJ1Y3R1
cmUqLCBHUFJSZWcsIEdQUlJlZywgR1BSUmVnLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmLCBz
aXplX3QsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIHB0cmRpZmZfdCwgcHRyZGlmZl90LCBwdHJkaWZm
X3QpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGU+IHZvaWQgY29tcGlsZU5ld0Z1
bmN0aW9uQ29tbW9uKEdQUlJlZywgUmVnaXN0ZXJlZFN0cnVjdHVyZSwgR1BSUmVnLCBHUFJSZWcs
IEdQUlJlZywgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0Jiwgc2l6ZV90LCBGdW5jdGlvbkV4ZWN1
dGFibGUqLCBwdHJkaWZmX3QsIHB0cmRpZmZfdCwgcHRyZGlmZl90KTsKICAgICB2b2lkIGNvbXBp
bGVOZXdGdW5jdGlvbihOb2RlKik7CiAgICAgdm9pZCBjb21waWxlU2V0RnVuY3Rpb25OYW1lKE5v
ZGUqKTsKICAgICB2b2lkIGNvbXBpbGVGb3J3YXJkVmFyYXJncyhOb2RlKik7CkBAIC0yNzUzLDEz
ICsyODA0LDEzIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDbGFz
c1R5cGU+Ci0gICAgdm9pZCBlbWl0QWxsb2NhdGVEZXN0cnVjdGlibGVPYmplY3QoR1BSUmVnIHJl
c3VsdEdQUiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIAorICAgIHZvaWQgZW1pdEFsbG9jYXRlRGVz
dHJ1Y3RpYmxlT2JqZWN0KEdQUlJlZyByZXN1bHRHUFIsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3Ry
dWN0dXJlLCAKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIxLCBHUFJSZWcgc2NyYXRjaEdQUjIs
IE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYgc2xvd1BhdGgpCiAgICAgewotICAgICAgICBtX2pp
dC5lbWl0QWxsb2NhdGVEZXN0cnVjdGlibGVPYmplY3Q8Q2xhc3NUeXBlPihyZXN1bHRHUFIsIHN0
cnVjdHVyZSwgc2NyYXRjaEdQUjEsIHNjcmF0Y2hHUFIyLCBzbG93UGF0aCk7CisgICAgICAgIG1f
aml0LmVtaXRBbGxvY2F0ZURlc3RydWN0aWJsZU9iamVjdDxDbGFzc1R5cGU+KHJlc3VsdEdQUiwg
c3RydWN0dXJlLmdldCgpLCBzY3JhdGNoR1BSMSwgc2NyYXRjaEdQUjIsIHNsb3dQYXRoKTsKICAg
ICB9CiAKLSAgICB2b2lkIGVtaXRBbGxvY2F0ZVJhd09iamVjdChHUFJSZWcgcmVzdWx0R1BSLCBT
dHJ1Y3R1cmUqLCBHUFJSZWcgc3RvcmFnZUdQUiwgdW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2ln
bmVkIHZlY3Rvckxlbmd0aCk7CisgICAgdm9pZCBlbWl0QWxsb2NhdGVSYXdPYmplY3QoR1BSUmVn
IHJlc3VsdEdQUiwgUmVnaXN0ZXJlZFN0cnVjdHVyZSwgR1BSUmVnIHN0b3JhZ2VHUFIsIHVuc2ln
bmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpOwogICAgIAogICAgIHZvaWQg
ZW1pdEdldExlbmd0aChJbmxpbmVDYWxsRnJhbWUqLCBHUFJSZWcgbGVuZ3RoR1BSLCBib29sIGlu
Y2x1ZGVUaGlzID0gZmFsc2UpOwogICAgIHZvaWQgZW1pdEdldExlbmd0aChDb2RlT3JpZ2luLCBH
UFJSZWcgbGVuZ3RoR1BSLCBib29sIGluY2x1ZGVUaGlzID0gZmFsc2UpOwpAQCAtMzc3NCwxMyAr
MzgyNSwxMyBAQCBwcml2YXRlOgogdGVtcGxhdGU8dHlwZW5hbWUgU3RydWN0dXJlTG9jYXRpb25U
eXBlPgogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nT2JqZWN0Rm9yU3RydWN0
dXJlKEVkZ2UgZWRnZSwgU3RydWN0dXJlTG9jYXRpb25UeXBlIHN0cnVjdHVyZUxvY2F0aW9uKQog
ewotICAgIFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0U3RydWN0dXJlID0KLSAgICAgICAgbV9qaXQu
Z2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnN0cmluZ09i
amVjdFN0cnVjdHVyZSgpOworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RyaW5nT2JqZWN0U3Ry
dWN0dXJlID0KKyAgICAgICAgbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShtX2ppdC5n
bG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKS0+c3RyaW5nT2Jq
ZWN0U3RydWN0dXJlKCkpOwogICAgIAotICAgIGlmICghbV9zdGF0ZS5mb3JOb2RlKGVkZ2UpLm1f
c3RydWN0dXJlLmlzU3Vic2V0T2YoU3RydWN0dXJlU2V0KHN0cmluZ09iamVjdFN0cnVjdHVyZSkp
KSB7CisgICAgaWYgKCFtX3N0YXRlLmZvck5vZGUoZWRnZSkubV9zdHJ1Y3R1cmUuaXNTdWJzZXRP
ZihSZWdpc3RlcmVkU3RydWN0dXJlU2V0KHN0cmluZ09iamVjdFN0cnVjdHVyZSkpKSB7CiAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICBOb3RTdHJpbmdPYmplY3QsIEpTVmFs
dWVSZWdzKCksIDAsCi0gICAgICAgICAgICBtX2ppdC5icmFuY2hTdHJ1Y3R1cmUoCisgICAgICAg
ICAgICBtX2ppdC5icmFuY2hXZWFrU3RydWN0dXJlKAogICAgICAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpOb3RFcXVhbCwgc3RydWN0dXJlTG9jYXRpb24sIHN0cmluZ09iamVjdFN0cnVjdHVyZSkp
OwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhS
ZWR1Y3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjExMjI5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTQwLDcgKzU0MCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgIGlm
IChtX25vZGUtPm9wKCkgPT0gUmVnRXhwRXhlYykgewogICAgICAgICAgICAgICAgIGlmIChyZXN1
bHQpIHsKLSAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlU2V0KiBzdHJ1Y3R1cmVTZXQgPSBt
X2dyYXBoLmFkZFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgICAgICBS
ZWdpc3RlcmVkU3RydWN0dXJlU2V0KiBzdHJ1Y3R1cmVTZXQgPSBtX2dyYXBoLmFkZFN0cnVjdHVy
ZVNldChzdHJ1Y3R1cmUpOwogCiAgICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhbiBhcnJh
eSBtb2RlbGluZyB0aGUgSlMgYXJyYXkgdGhhdCB3ZSB3aWxsIHRyeSB0byBhbGxvY2F0ZS4gVGhp
cyBpcwogICAgICAgICAgICAgICAgICAgICAvLyBiYXNpY2FsbHkgY3JlYXRlUmVnRXhwTWF0Y2hl
c0FycmF5IGJ1dCBvdmVyIEMrKyBzdHJpbmdzIGluc3RlYWQgb2YgSlNTdHJpbmdzLgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZUFic3Ry
YWN0VmFsdWUuY3BwCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3
ICszOSw3IEBAIHZvaWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6YXNzZXJ0SXNSZWcKICAgICAg
ICAgcmV0dXJuOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IHNpemUoKTsgaS0tOykKLSAg
ICAgICAgZ3JhcGguYXNzZXJ0SXNSZWdpc3RlcmVkKGF0KGkpKTsKKyAgICAgICAgZ3JhcGguYXNz
ZXJ0SXNSZWdpc3RlcmVkKGF0KGkpLmdldCgpKTsKIH0KICNlbmRpZiAvLyAhQVNTRVJUX0RJU0FC
TEVECiAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpjbG9i
YmVyKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBTdHJ1Y3R1cmVTZXQ6Ok91
dE9mTGluZUxpc3QqIGxpc3QgPSBtX3NldC5saXN0KCk7CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVy
ZVNldDo6T3V0T2ZMaW5lTGlzdCogbGlzdCA9IG1fc2V0Lmxpc3QoKTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBsaXN0LT5tX2xlbmd0aDsgaS0tOykgewogICAgICAgICBpZiAoIWxpc3QtPmxpc3Qo
KVtpXS0+ZGZnU2hvdWxkV2F0Y2goKSkgewogICAgICAgICAgICAgbWFrZVRvcCgpOwpAQCAtNzEs
NyArNzEsNyBAQCB2b2lkIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmNsb2JiZXIoKQogICAgIH0K
IH0KIAotdm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpvYnNlcnZlVHJhbnNpdGlvbihTdHJ1
Y3R1cmUqIGZyb20sIFN0cnVjdHVyZSogdG8pCit2b2lkIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6
Om9ic2VydmVUcmFuc2l0aW9uKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgZnJvbSwgUmVnaXN0ZXJlZFN0
cnVjdHVyZSB0bykKIHsKICAgICBBU1NFUlQoIWZyb20tPmRmZ1Nob3VsZFdhdGNoKCkpOwogCkBA
IC05Myw3ICs5Myw3IEBAIHZvaWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6b2JzZXJ2ZVRyYW4K
ICAgICBpZiAoaXNUb3AoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFN0cnVjdHVyZVNl
dCBuZXdTdHJ1Y3R1cmVzOworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgbmV3U3RydWN0dXJl
czsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSB2ZWN0b3Iuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAg
IEFTU0VSVCghdmVjdG9yW2ldLnByZXZpb3VzLT5kZmdTaG91bGRXYXRjaCgpKTsKIApAQCAtMTEw
LDcgKzExMCw3IEBAIHZvaWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6b2JzZXJ2ZVRyYW4KICAg
ICAgICAgbWFrZVRvcCgpOwogfQogCi1ib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmFkZChT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK2Jvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6YWRkKFJl
Z2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKQogewogICAgIGlmIChpc1RvcCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0xMjQsNyArMTI0LDcgQEAgYm9vbCBTdHJ1Y3R1cmVBYnN0cmFj
dFZhbHVlOjphZGQoU3RydWN0dQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFN0cnVjdHVy
ZUFic3RyYWN0VmFsdWU6Om1lcmdlKGNvbnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpCitib29sIFN0
cnVjdHVyZUFic3RyYWN0VmFsdWU6Om1lcmdlKGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQm
IG90aGVyKQogewogICAgIGlmIChpc1RvcCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0x
NzUsNyArMTc1LDcgQEAgYm9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjptZXJnZVNsb3coYwog
ICAgIHJldHVybiBjaGFuZ2VkOwogfQogCi1ib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om1l
cmdlTm90VG9wKGNvbnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpCitib29sIFN0cnVjdHVyZUFic3Ry
YWN0VmFsdWU6Om1lcmdlTm90VG9wKGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIG90aGVy
KQogewogICAgIGlmICghbV9zZXQubWVyZ2Uob3RoZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0xODYsNyArMTg2LDcgQEAgYm9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjptZXJnZU5v
dFRvcAogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6
OmZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKQordm9pZCBTdHJ1Y3R1cmVBYnN0cmFj
dFZhbHVlOjpmaWx0ZXIoY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgb3RoZXIpCiB7CiAg
ICAgaWYgKGlzVG9wKCkpIHsKICAgICAgICAgbV9zZXQgPSBvdGhlcjsKQEAgLTIyOSw3ICsyMjks
NyBAQCB2b2lkIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmZpbHRlcihjb25zCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIAogICAgICAgICBpZiAoIWlzQ2xvYmJlcmVkKCkpIHsKLSAgICAg
ICAgICAgIC8vIFNlZSBqdXN0aWZpY2F0aW9uIGluIGZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQm
KSwgYWJvdmUuIEFuIHVuY2xvYmJlcmVkIHNldCBpcworICAgICAgICAgICAgLy8gU2VlIGp1c3Rp
ZmljYXRpb24gaW4gZmlsdGVyKGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmKSwgYWJvdmUu
IEFuIHVuY2xvYmJlcmVkIHNldCBpcwogICAgICAgICAgICAgLy8gYWxtb3N0IGFsd2F5cyBiZXR0
ZXIuCiAgICAgICAgICAgICBpZiAobV9zZXQuc2l6ZSgpID4gb3RoZXIubV9zZXQuc2l6ZSgpICsg
Y2xvYmJlcmVkU3VwcmVtYWN5VGhyZXNob2xkKQogICAgICAgICAgICAgICAgICp0aGlzID0gb3Ro
ZXI7IC8vIEtlZXAgdGhlIGNsb2JiZXJlZCBzZXQuCkBAIC0yNTMsOCArMjUzLDggQEAgdm9pZCBT
dHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpmaWx0ZXJTbG93KAogICAgIEFTU0VSVCghaXNUb3AoKSk7
CiAgICAgCiAgICAgbV9zZXQuZ2VuZXJpY0ZpbHRlcigKLSAgICAgICAgWyZdIChTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkgewotICAgICAgICAgICAgcmV0dXJuICEhKHNwZWN1bGF0aW9uRnJvbVN0cnVj
dHVyZShzdHJ1Y3R1cmUpICYgdHlwZSk7CisgICAgICAgIFsmXSAoUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBzdHJ1Y3R1cmUpIHsKKyAgICAgICAgICAgIHJldHVybiAhIShzcGVjdWxhdGlvbkZyb21TdHJ1
Y3R1cmUoc3RydWN0dXJlLmdldCgpKSAmIHR5cGUpOwogICAgICAgICB9KTsKIH0KIApAQCAtMjYy
LDEyICsyNjIsMTIgQEAgdm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpmaWx0ZXJDbGFzcwog
ewogICAgIEFTU0VSVCghaXNUb3AoKSk7CiAgICAgbV9zZXQuZ2VuZXJpY0ZpbHRlcigKLSAgICAg
ICAgWyZdIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgeworICAgICAgICBbJl0gKFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgc3RydWN0dXJlKSB7CiAgICAgICAgICAgICByZXR1cm4gc3RydWN0dXJlLT5jbGFz
c0luZm8oKS0+aXNTdWJDbGFzc09mKGNsYXNzSW5mbyk7CiAgICAgICAgIH0pOwogfQogCi1ib29s
IFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmNvbnRhaW5zKFN0cnVjdHVyZSogc3RydWN0dXJlKSBj
b25zdAorYm9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpjb250YWlucyhSZWdpc3RlcmVkU3Ry
dWN0dXJlIHN0cnVjdHVyZSkgY29uc3QKIHsKICAgICBpZiAoaXNJbmZpbml0ZSgpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTI3NSw3ICsyNzUsMTUgQEAgYm9vbCBTdHJ1Y3R1cmVBYnN0cmFj
dFZhbHVlOjpjb250YWlucyhTdAogICAgIHJldHVybiBtX3NldC5jb250YWlucyhzdHJ1Y3R1cmUp
OwogfQogCi1ib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3Vic2V0T2YoY29uc3QgU3Ry
dWN0dXJlU2V0JiBvdGhlcikgY29uc3QKK2Jvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6Y29u
dGFpbnMoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIGNvbnN0Cit7CisgICAgaWYgKGlzSW5maW5pdGUo
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCisgICAgcmV0dXJuIG1fc2V0LnRvU3RydWN0
dXJlU2V0KCkuY29udGFpbnMoc3RydWN0dXJlKTsKK30KKworYm9vbCBTdHJ1Y3R1cmVBYnN0cmFj
dFZhbHVlOjppc1N1YnNldE9mKGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIG90aGVyKSBj
b25zdAogewogICAgIGlmIChpc0luZmluaXRlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTMwNCw3ICszMTIsNyBAQCBib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3Vic2V0T2Yo
CiAgICAgcmV0dXJuIG1fc2V0LmlzU3Vic2V0T2Yob3RoZXIubV9zZXQpOwogfQogCi1ib29sIFN0
cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3VwZXJzZXRPZihjb25zdCBTdHJ1Y3R1cmVTZXQmIG90
aGVyKSBjb25zdAorYm9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjppc1N1cGVyc2V0T2YoY29u
c3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0CiB7CiAgICAgaWYgKGlzSW5m
aW5pdGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0zMTIsNyArMzIwLDcgQEAgYm9vbCBT
dHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjppc1N1cGVyc2V0TwogICAgIHJldHVybiBtX3NldC5pc1N1
cGVyc2V0T2Yob3RoZXIpOwogfQogCi1ib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om92ZXJs
YXBzKGNvbnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0Citib29sIFN0cnVjdHVyZUFic3Ry
YWN0VmFsdWU6Om92ZXJsYXBzKGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIG90aGVyKSBj
b25zdAogewogICAgIGlmIChpc0luZmluaXRlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAt
MzM0LDcgKzM0Miw3IEBAIGJvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6aXNTdWJDbGFzc08K
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gTm90ZSB0YWh0IHRoaXMgZnVuY3Rpb24g
cmV0dXJucyB0cnVlIGlmIHRoZSBzdHJ1Y3R1cmUgc2V0IGlzIGVtcHR5LgotICAgIGZvciAoY29u
c3QgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgOiBtX3NldCkgeworICAgIGZvciAoY29uc3QgUmVnaXN0
ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgOiBtX3NldCkgewogICAgICAgICBpZiAoIXN0cnVjdHVy
ZS0+Y2xhc3NJbmZvKCktPmlzU3ViQ2xhc3NPZihjbGFzc0luZm8pKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KQEAgLTM1OSw3ICszNjcsNyBAQCB2b2lkIFN0cnVjdHVyZUFic3Ry
YWN0VmFsdWU6OmR1bXBJbkNvbnRlCiAgICAgaWYgKGlzVG9wKCkpCiAgICAgICAgIG91dC5wcmlu
dCgiVE9QIik7CiAgICAgZWxzZQotICAgICAgICBvdXQucHJpbnQoaW5Db250ZXh0KG1fc2V0LCBj
b250ZXh0KSk7CisgICAgICAgIG91dC5wcmludChpbkNvbnRleHQobV9zZXQudG9TdHJ1Y3R1cmVT
ZXQoKSwgY29udGV4dCkpOwogfQogCiB2b2lkIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmR1bXAo
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oCShyZXZpc2lvbiAyMTEyMjkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUu
aAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTAgKzI3LDExIEBACiAKICNpZiBFTkFCTEUoREZHX0pJ
VCkKIAorI2luY2x1ZGUgIkRGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQuaCIKICNpbmNsdWRlICJE
RkdUcmFuc2l0aW9uLmgiCisjaW5jbHVkZSAiRHVtcENvbnRleHQuaCIKICNpbmNsdWRlICJKU0Nl
bGwuaCIKICNpbmNsdWRlICJTcGVjdWxhdGVkVHlwZS5oIgotI2luY2x1ZGUgIkR1bXBDb250ZXh0
LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU2V0LmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDIs
MTIgKzQzLDEyIEBAIG5hbWVzcGFjZSBERkcgewogY2xhc3MgU3RydWN0dXJlQWJzdHJhY3RWYWx1
ZSB7CiBwdWJsaWM6CiAgICAgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSgpIHsgfQotICAgIFN0cnVj
dHVyZUFic3RyYWN0VmFsdWUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgIDogbV9zZXQo
U3RydWN0dXJlU2V0KHN0cnVjdHVyZSkpCisgICAgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZShSZWdp
c3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkKKyAgICAgICAgOiBtX3NldChzdHJ1Y3R1cmUpCiAg
ICAgewogICAgICAgICBzZXRDbG9iYmVyZWQoZmFsc2UpOwogICAgIH0KLSAgICBTdHJ1Y3R1cmVB
YnN0cmFjdFZhbHVlKGNvbnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpCisgICAgU3RydWN0dXJlQWJz
dHJhY3RWYWx1ZShjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0JiBvdGhlcikKICAgICAgICAg
OiBtX3NldChvdGhlcikKICAgICB7CiAgICAgICAgIHNldENsb2JiZXJlZChmYWxzZSk7CkBAIC01
OCwxMyArNTksMTMgQEAgcHVibGljOgogICAgICAgICBzZXRDbG9iYmVyZWQob3RoZXIuaXNDbG9i
YmVyZWQoKSk7CiAgICAgfQogICAgIAotICAgIEFMV0FZU19JTkxJTkUgU3RydWN0dXJlQWJzdHJh
Y3RWYWx1ZSYgb3BlcmF0b3I9KFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIEFMV0FZU19JTkxJ
TkUgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSYgb3BlcmF0b3I9KFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
c3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgbV9zZXQgPSBTdHJ1Y3R1cmVTZXQoc3RydWN0dXJl
KTsKKyAgICAgICAgbV9zZXQgPSBSZWdpc3RlcmVkU3RydWN0dXJlU2V0KHN0cnVjdHVyZSk7CiAg
ICAgICAgIHNldENsb2JiZXJlZChmYWxzZSk7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9
Ci0gICAgQUxXQVlTX0lOTElORSBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvcGVyYXRvcj0oY29u
c3QgU3RydWN0dXJlU2V0JiBvdGhlcikKKyAgICBBTFdBWVNfSU5MSU5FIFN0cnVjdHVyZUFic3Ry
YWN0VmFsdWUmIG9wZXJhdG9yPShjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0JiBvdGhlcikK
ICAgICB7CiAgICAgICAgIG1fc2V0ID0gb3RoZXI7CiAgICAgICAgIHNldENsb2JiZXJlZChmYWxz
ZSk7CkBAIC05OCw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsb2JiZXIoKTsKICAgICB2
b2lkIG9ic2VydmVJbnZhbGlkYXRpb25Qb2ludCgpIHsgc2V0Q2xvYmJlcmVkKGZhbHNlKTsgfQog
ICAgIAotICAgIHZvaWQgb2JzZXJ2ZVRyYW5zaXRpb24oU3RydWN0dXJlKiBmcm9tLCBTdHJ1Y3R1
cmUqIHRvKTsKKyAgICB2b2lkIG9ic2VydmVUcmFuc2l0aW9uKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
ZnJvbSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSB0byk7CiAgICAgdm9pZCBvYnNlcnZlVHJhbnNpdGlv
bnMoY29uc3QgVHJhbnNpdGlvblZlY3RvciYpOwogICAgIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmVB
YnN0cmFjdFZhbHVlIHRvcCgpCkBAIC0xMzEsOSArMTMyLDkgQEAgcHVibGljOgogICAgIC8vIEFu
IGluZmluaXRlIHN0cnVjdHVyZSBhYnN0cmFjdCB2YWx1ZSBtYXkgY3VycmVudGx5IGhhdmUgYW55
IHN0cnVjdHVyZS4KICAgICBib29sIGlzSW5maW5pdGUoKSBjb25zdCB7IHJldHVybiAhaXNGaW5p
dGUoKTsgfQogICAgIAotICAgIGJvb2wgYWRkKFN0cnVjdHVyZSogc3RydWN0dXJlKTsKKyAgICBi
b29sIGFkZChSZWdpc3RlcmVkU3RydWN0dXJlKTsKICAgICAKLSAgICBib29sIG1lcmdlKGNvbnN0
IFN0cnVjdHVyZVNldCYgb3RoZXIpOworICAgIGJvb2wgbWVyZ2UoY29uc3QgUmVnaXN0ZXJlZFN0
cnVjdHVyZVNldCYgb3RoZXIpOwogICAgIAogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBtZXJnZShj
b25zdCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcikKICAgICB7CkBAIC0xNTEsNyArMTUy
LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbWVyZ2VTbG93KG90aGVyKTsKICAgICB9CiAg
ICAgCi0gICAgdm9pZCBmaWx0ZXIoY29uc3QgU3RydWN0dXJlU2V0JiBvdGhlcik7CisgICAgdm9p
ZCBmaWx0ZXIoY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgb3RoZXIpOwogICAgIHZvaWQg
ZmlsdGVyKGNvbnN0IFN0cnVjdHVyZUFic3RyYWN0VmFsdWUmIG90aGVyKTsKICAgICAKICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgZmlsdGVyKFNwZWN1bGF0ZWRUeXBlIHR5cGUpCkBAIC0xNzgsMTEg
KzE3OSwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBlcXVhbHNTbG93KG90aGVyKTsKICAg
ICB9CiAgICAgCi0gICAgY29uc3QgU3RydWN0dXJlU2V0JiBzZXQoKSBjb25zdAorICAgIGNvbnN0
IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIHNldCgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NF
UlQoIWlzVG9wKCkpOwogICAgICAgICByZXR1cm4gbV9zZXQ7CiAgICAgfQorCisgICAgU3RydWN0
dXJlU2V0IHRvU3RydWN0dXJlU2V0KCkgY29uc3QKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGlzRmluaXRlKCkpOworICAgICAgICByZXR1cm4gbV9zZXQudG9TdHJ1Y3R1cmVTZXQoKTsK
KyAgICB9CiAgICAgCiAgICAgc2l6ZV90IHNpemUoKSBjb25zdAogICAgIHsKQEAgLTE5MCwyMSAr
MTk3LDIxIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fc2V0LnNpemUoKTsKICAgICB9CiAg
ICAgCi0gICAgU3RydWN0dXJlKiBhdChzaXplX3QgaSkgY29uc3QKKyAgICBSZWdpc3RlcmVkU3Ry
dWN0dXJlIGF0KHNpemVfdCBpKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKCFpc1RvcCgp
KTsKICAgICAgICAgcmV0dXJuIG1fc2V0LmF0KGkpOwogICAgIH0KICAgICAKLSAgICBTdHJ1Y3R1
cmUqIG9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIGF0KGkpOyB9CisgICAgUmVn
aXN0ZXJlZFN0cnVjdHVyZSBvcGVyYXRvcltdKHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBhdChp
KTsgfQogCiAgICAgLy8gSW4gbW9zdCBjYXNlcywgd2hhdCB5b3UgcmVhbGx5IHdhbnQgdG8gZG8g
aXMgdmVyaWZ5IHdoZXRoZXIgdGhlIHNldCBpcyB0b3Agb3IgY2xvYmJlcmVkLCBhbmQKICAgICAv
LyBpZiBub3QsIGVudW1lcmF0ZSB0aGUgc2V0IG9mIHN0cnVjdHVyZXMuIFVzZSB0aGlzIG9ubHkg
aW4gY2FzZXMgd2hlcmUgdGhlIHNpbmdsZXRvbiBjYXNlIGlzCiAgICAgLy8gbWVhbmluZ2Z1bGx5
IHNwZWNpYWwsIGxpa2UgZm9yIHRyYW5zaXRpb25zLgotICAgIFN0cnVjdHVyZSogb25seVN0cnVj
dHVyZSgpIGNvbnN0CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBvbmx5U3RydWN0dXJlKCkgY29u
c3QKICAgICB7CiAgICAgICAgIGlmIChpc0luZmluaXRlKCkpCi0gICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgICAgIHJldHVybiBSZWdpc3RlcmVkU3RydWN0dXJlKCk7CiAgICAg
ICAgIHJldHVybiBtX3NldC5vbmx5U3RydWN0dXJlKCk7CiAgICAgfQogCkBAIC0yMjQsMTggKzIz
MSwxOSBAQCBwdWJsaWM6CiAgICAgLy8gb3B0aW1pemF0aW9ucyBhcyBhIGNvbnNlcXVlbmNlIG9m
IHRoZSAidGhpcyBpcyBzbWFsbGVyIiByZXR1cm4gdmFsdWUgLSBzbyBmYWxzZSBmb3IKICAgICAv
LyBjb250YWlucygpLCB0cnVlIGZvciBpc1N1YnNldE9mKCksIGZhbHNlIGZvciBpc1N1cGVyc2V0
T2YoKSwgYW5kIGZhbHNlIGZvciBvdmVybGFwcygpLgogCisgICAgYm9vbCBjb250YWlucyhSZWdp
c3RlcmVkU3RydWN0dXJlKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zKFN0cnVjdHVyZSogc3Ry
dWN0dXJlKSBjb25zdDsKICAgICAKLSAgICBib29sIGlzU3Vic2V0T2YoY29uc3QgU3RydWN0dXJl
U2V0JiBvdGhlcikgY29uc3Q7CisgICAgYm9vbCBpc1N1YnNldE9mKGNvbnN0IFJlZ2lzdGVyZWRT
dHJ1Y3R1cmVTZXQmIG90aGVyKSBjb25zdDsKICAgICBib29sIGlzU3Vic2V0T2YoY29uc3QgU3Ry
dWN0dXJlQWJzdHJhY3RWYWx1ZSYgb3RoZXIpIGNvbnN0OwogICAgIAotICAgIGJvb2wgaXNTdXBl
cnNldE9mKGNvbnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0OworICAgIGJvb2wgaXNTdXBl
cnNldE9mKGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIG90aGVyKSBjb25zdDsKICAgICBi
b29sIGlzU3VwZXJzZXRPZihjb25zdCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcikgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiBvdGhlci5pc1N1YnNldE9mKCp0aGlzKTsKICAgICB9
CiAgICAgCi0gICAgYm9vbCBvdmVybGFwcyhjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKSBjb25z
dDsKKyAgICBib29sIG92ZXJsYXBzKGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIG90aGVy
KSBjb25zdDsKICAgICBib29sIG92ZXJsYXBzKGNvbnN0IFN0cnVjdHVyZUFic3RyYWN0VmFsdWUm
IG90aGVyKSBjb25zdDsKIAogICAgIGJvb2wgaXNTdWJDbGFzc09mKGNvbnN0IENsYXNzSW5mbyop
IGNvbnN0OwpAQCAtMjQzLDggKzI1MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHZhbGlkYXRlUmVm
ZXJlbmNlcyhjb25zdCBUcmFja2VkUmVmZXJlbmNlcyYpIGNvbnN0OwogICAgIAogcHJpdmF0ZToK
LSAgICBzdGF0aWMgY29uc3QgdWludHB0cl90IGNsb2JiZXJlZEZsYWcgPSBTdHJ1Y3R1cmVTZXQ6
OnJlc2VydmVkRmxhZzsKLSAgICBzdGF0aWMgY29uc3QgdWludHB0cl90IHRvcFZhbHVlID0gU3Ry
dWN0dXJlU2V0OjpyZXNlcnZlZFZhbHVlOworICAgIHN0YXRpYyBjb25zdCB1aW50cHRyX3QgY2xv
YmJlcmVkRmxhZyA9IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQ6OnJlc2VydmVkRmxhZzsKKyAgICBz
dGF0aWMgY29uc3QgdWludHB0cl90IHRvcFZhbHVlID0gUmVnaXN0ZXJlZFN0cnVjdHVyZVNldDo6
cmVzZXJ2ZWRWYWx1ZTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgcG9seW1vcnBoaXNtTGlt
aXQgPSAxMDsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2xvYmJlcmVkU3VwcmVtYWN5VGhy
ZXNob2xkID0gMjsKICAgICAKQEAgLTI2MCw3ICsyNjgsNyBAQCBwcml2YXRlOgogICAgICAgICBt
X3NldC5tX3BvaW50ZXIgPSB0b3BWYWx1ZTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBtZXJnZU5v
dFRvcChjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKTsKKyAgICBib29sIG1lcmdlTm90VG9wKGNv
bnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIG90aGVyKTsKICAgICAKICAgICB2b2lkIHNldENs
b2JiZXJlZChib29sIGNsb2JiZXJlZCkKICAgICB7CkBAIC0yNjgsNyArMjc2LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgbV9zZXQuc2V0UmVzZXJ2ZWRGbGFnKGNsb2JiZXJlZCk7CiAgICAgfQogICAg
IAotICAgIFN0cnVjdHVyZVNldCBtX3NldDsKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0IG1f
c2V0OwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZS5jcHAJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDIy
NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmgiCi0KLSNpZiBFTkFCTEUoREZHX0pJVCkKLQotI2luY2x1ZGUgIkRGR0Jhc2lj
QmxvY2tJbmxpbmVzLmgiCi0jaW5jbHVkZSAiREZHR3JhcGguaCIKLSNpbmNsdWRlICJERkdQaGFz
ZS5oIgotI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewotCi1jbGFzcyBTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFz
ZSB7Ci1wdWJsaWM6Ci0gICAgU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UoR3JhcGgmIGdyYXBo
KQotICAgICAgICA6IFBoYXNlKGdyYXBoLCAic3RydWN0dXJlIHJlZ2lzdHJhdGlvbiIpCi0gICAg
ewotICAgIH0KLSAgICAKLSAgICBib29sIHJ1bigpCi0gICAgewotICAgICAgICAvLyBGSVhNRTog
VGhpcyBwaGFzZSBzaG91bGRuJ3QgZXhpc3QuIFdlIHNob3VsZCBoYXZlIHJlZ2lzdGVyZWQgYWxs
IHN0cnVjdHVyZXMgYnkgbm93LCBzaW5jZQotICAgICAgICAvLyB3ZSBtYXkgYWxyZWFkeSBoYXZl
IGRvbmUgb3B0aW1pemF0aW9ucyB0aGF0IHJlbHkgb24gc3RydWN0dXJlcyBoYXZpbmcgYmVlbiBy
ZWdpc3RlcmVkLgotICAgICAgICAvLyBDdXJyZW50bHksIHdlIHN0aWxsIGhhdmUgcGxhY2VzIHdo
ZXJlIHdlIGRvbid0IHJlZ2lzdGVyIHN0cnVjdHVyZXMgcHJpb3IgdG8gdGhpcyBwaGFzZSwKLSAg
ICAgICAgLy8gYnV0IHN0cnVjdHVyZXMgZG9uJ3QgZW5kIHVwIGJlaW5nIHVzZWQgZm9yIG9wdGlt
aXphdGlvbiBwcmlvciB0byB0aGlzIHBoYXNlLiBUaGF0J3MgYQotICAgICAgICAvLyBwcmV0dHkg
ZnJhZ2lsZSBzaXR1YXRpb24gYW5kIHdlIHNob3VsZCBmaXggaXQgZXZlbnR1YWxseS4KLSAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Nzg4OQotICAg
ICAgICAKLSAgICAgICAgLy8gV2UgbmVlZCB0byBzZXQgdGhpcyBiZWZvcmUgdGhpcyBwaGFzZSBm
aW5pc2hlcy4gVGhpcyBwaGFzZSBkb2Vzbid0IGRvIGFueXRoaW5nCi0gICAgICAgIC8vIGNvbmRp
dGlvbmVkIG9uIHRoaXMgZmllbGQsIGV4Y2VwdCBmb3IgYXNzZXJ0SXNSZWdpc3RlcmVkKCkgYmVs
b3cuIFdlIGludGVuZCBmb3IgdGhhdAotICAgICAgICAvLyBtZXRob2QgdG8gYmVoYXZlIGFzIGlm
IHRoZSBwaGFzZSB3YXMgYWxyZWFkeSBmaW5pc2hlZC4gU28sIHdlIHNldCB0aGlzIHVwIGhlcmUu
Ci0gICAgICAgIG1fZ3JhcGgubV9zdHJ1Y3R1cmVSZWdpc3RyYXRpb25TdGF0ZSA9IEFsbFN0cnVj
dHVyZXNBcmVSZWdpc3RlcmVkOwotICAgICAgICAKLSAgICAgICAgLy8gVGhlc2UgYXJlIHByZXR0
eSBkdW1iLCBidXQgbmVlZGVkIHRvIHBsYWNhdGUgc3Vic2VxdWVudCBhc3NlcnRpb25zLiBXZSBk
b24ndCBhY3R1YWxseQotICAgICAgICAvLyBoYXZlIHRvIHdhdGNoIHRoZXNlIGJlY2F1c2UgdGhl
cmUgaXMgbm8gd2F5IHRvIHRyYW5zaXRpb24gYXdheSBmcm9tIGl0LCBidXQgdGhleSBhcmUKLSAg
ICAgICAgLy8gd2F0Y2hhYmxlIGFuZCBzbyB3ZSB3aWxsIGFzc2VydCBpZiB0aGV5IGFyZW4ndCB3
YXRjaGVkLgotICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLm1fdm0uc3RydWN0dXJl
U3RydWN0dXJlLmdldCgpKTsKLSAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5tX3Zt
LnN0cmluZ1N0cnVjdHVyZS5nZXQoKSk7Ci0gICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3Jh
cGgubV92bS5zeW1ib2xTdHJ1Y3R1cmUuZ2V0KCkpOwotICAgICAgICAKLSAgICAgICAgZm9yIChG
cm96ZW5WYWx1ZSogdmFsdWUgOiBtX2dyYXBoLm1fZnJvemVuVmFsdWVzKQotICAgICAgICAgICAg
YXNzZXJ0SXNSZWdpc3RlcmVkKHZhbHVlLT5zdHJ1Y3R1cmUoKSk7Ci0gICAgICAgIAotICAgICAg
ICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2Nr
SW5kZXgtLTspIHsKLSAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9j
ayhibG9ja0luZGV4KTsKLSAgICAgICAgICAgIGlmICghYmxvY2spCi0gICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIAotICAgICAgICAgICAgZm9yIChhdXRvKiBub2RlIDogKmJsb2Nr
KSB7Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Ci0gICAgICAgICAgICAg
ICAgY2FzZSBDaGVja1N0cnVjdHVyZToKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0QXJlUmVn
aXN0ZXJlZChub2RlLT5zdHJ1Y3R1cmVTZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNhc2UgTmV3T2JqZWN0OgotICAg
ICAgICAgICAgICAgIGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZToKLSAgICAgICAgICAgICAgICBj
YXNlIE5ld1N0cmluZ09iamVjdDoKLSAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1
cmUobm9kZS0+c3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBjYXNlIFB1dFN0cnVjdHVyZToKLSAgICAgICAg
ICAgICAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgotICAgICAgICAgICAgICAgIGNh
c2UgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKLSAgICAgICAgICAgICAgICAgICAgcmVnaXN0
ZXJTdHJ1Y3R1cmUobm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91cyk7Ci0gICAgICAgICAgICAg
ICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgICAgY2FzZSBHZXRHZXR0ZXJT
ZXR0ZXJCeU9mZnNldDoKLSAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+Z2V0dGVyU2V0dGVy
U3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAg
ICAgIGNhc2UgTXVsdGlHZXRCeU9mZnNldDoKLSAgICAgICAgICAgICAgICAgICAgZm9yIChjb25z
dCBNdWx0aUdldEJ5T2Zmc2V0Q2FzZSYgZ2V0Q2FzZSA6IG5vZGUtPm11bHRpR2V0QnlPZmZzZXRE
YXRhKCkuY2FzZXMpCi0gICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZXMo
Z2V0Q2FzZS5zZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICBjYXNlIE11bHRpUHV0QnlPZmZzZXQ6Ci0gICAgICAg
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG5vZGUtPm11bHRpUHV0QnlPZmZzZXREYXRh
KCkudmFyaWFudHMuc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQdXRC
eUlkVmFyaWFudCYgdmFyaWFudCA9IG5vZGUtPm11bHRpUHV0QnlPZmZzZXREYXRhKCkudmFyaWFu
dHNbaV07Ci0gICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZXModmFyaWFu
dC5vbGRTdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFyaWFudC5r
aW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb24pCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXk6Ci0gICAgICAgICAgICAg
ICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKLSAgICAgICAgICAgICAgICBjYXNlIE5ld0FycmF5V2l0
aFNpemU6IHsKLSAgICAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAg
ICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1
Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgp
KSk7Ci0gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+
b3JpZ2luYWxBcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZShBcnJheVdpdGhTbG93UHV0QXJy
YXlTdG9yYWdlKSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXlXaXRoU3ByZWFkOiB7Ci0gICAgICAg
ICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICAgICAgICAgICAgICBp
ZiAobV9ncmFwaC5pc1dhdGNoaW5nSGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50KG5vZGUpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSd2ZSBjb21waWxlZCBhc3N1bWluZyB3ZSdyZSBu
b3QgaGF2aW5nIGEgYmFkIHRpbWUsIHNvIHRvIGJlIGNvbnNpc3RlbnQKLSAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIHdpdGggQUkgd2UgbXVzdCBzYXkgd2UgcHJvZHVjZSBhbiBvcmlnaW5hbCBh
cnJheSBhbGxvY2F0aW9uIHN0cnVjdHVyZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lz
dGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+b3JpZ2luYWxBcnJheVN0cnVjdHVyZUZvckluZGV4
aW5nVHlwZShBcnJheVdpdGhDb250aWd1b3VzKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0
LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRo
Q29udGlndW91cykpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgICAgICBjYXNlIFNwcmVhZDogewotICAgICAgICAgICAgICAgICAg
ICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLm1fdm0uZml4ZWRBcnJheVN0cnVjdHVyZS5nZXQo
KSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgICAgIGNhc2UgQ3JlYXRlUmVzdDogewotICAgICAgICAgICAgICAgICAgICBpZiAo
bV9ncmFwaC5pc1dhdGNoaW5nSGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50KG5vZGUpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+cmVzdFBhcmFtZXRlclN0
cnVjdHVyZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgIGNhc2UgTmV3VHlwZWRBcnJheToKLSAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJT
dHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+
dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseShub2RlLT50eXBlZEFycmF5VHlwZSgpKSk7
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICBjYXNlIFRvU3RyaW5nOgotICAgICAgICAgICAgICAgIGNhc2UgQ2FsbFN0cmlu
Z0NvbnN0cnVjdG9yOgotICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5zdHJpbmdPYmplY3RT
dHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246Ci0gICAgICAgICAg
ICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyktPmFjdGl2YXRpb25TdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBjYXNl
IENyZWF0ZURpcmVjdEFyZ3VtZW50czoKLSAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1
Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZGly
ZWN0QXJndW1lbnRzU3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgY2FzZSBDcmVhdGVTY29wZWRBcmd1
bWVudHM6Ci0gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnNjb3BlZEFyZ3VtZW50c1N0cnVj
dHVyZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICBj
YXNlIENyZWF0ZUNsb25lZEFyZ3VtZW50czoKLSAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJT
dHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+
Y2xvbmVkQXJndW1lbnRzU3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LQotICAgICAgICAgICAgICAgIGNhc2UgTmV3UmVnZXhwOgotICAgICAgICAgICAgICAgICAgICBy
ZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpLT5yZWdFeHBTdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgIGNhc2UgTmV3RnVuY3Rpb246Ci0gICAgICAgICAgICAgICAgICAgIHJl
Z2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyktPmZ1bmN0aW9uU3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOgotICAgICAgICAgICAg
ICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpLT5nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBOZXdBc3luY0Z1bmN0aW9u
OgotICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkp
OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIHZvaWQgcmVnaXN0ZXJTdHJ1Y3R1cmVzKGNvbnN0IFN0cnVjdHVyZVNl
dCYgc2V0KQotICAgIHsKLSAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6IHNldCkK
LSAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSk7Ci0gICAgfQotICAgIAot
ICAgIHZvaWQgcmVnaXN0ZXJTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgewot
ICAgICAgICBpZiAoc3RydWN0dXJlKQotICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVj
dHVyZShzdHJ1Y3R1cmUpOwotICAgIH0KLQotICAgIHZvaWQgYXNzZXJ0QXJlUmVnaXN0ZXJlZChj
b25zdCBTdHJ1Y3R1cmVTZXQmIHNldCkKLSAgICB7Ci0gICAgICAgIGZvciAoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgOiBzZXQpCi0gICAgICAgICAgICBhc3NlcnRJc1JlZ2lzdGVyZWQoc3RydWN0dXJl
KTsKLSAgICB9Ci0KLSAgICB2b2lkIGFzc2VydElzUmVnaXN0ZXJlZChTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKLSAgICB7Ci0gICAgICAgIGlmIChzdHJ1Y3R1cmUpCi0gICAgICAgICAgICBtX2dyYXBo
LmFzc2VydElzUmVnaXN0ZXJlZChzdHJ1Y3R1cmUpOwotICAgIH0KLX07Ci0KLWJvb2wgcGVyZm9y
bVN0cnVjdHVyZVJlZ2lzdHJhdGlvbihHcmFwaCYgZ3JhcGgpCi17Ci0gICAgcmV0dXJuIHJ1blBo
YXNlPFN0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlPihncmFwaCk7Ci19Ci0KLX0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpERkcKLQotI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQotCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3Ry
YXRpb25QaGFzZS5oCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShERkdfSklUKQotCi1uYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7Ci0KLWNsYXNzIEdyYXBoOwotCi0vLyBSZWdpc3RlcnMgYW55IHN0cnVj
dHVyZXMgd2Uga25vdyBhYm91dCBhcyB3ZWFrIHJlZmVyZW5jZXMsIGFuZCBzZXRzIHdhdGNocG9p
bnRzIG9uIGFueQotLy8gc3VjaCBzdHJ1Y3R1cmVzIHRoYXQgd2Uga25vdyBvZiB0aGF0IGFyZSBj
dXJyZW50bHkgd2F0Y2hhYmxlLiBJdCdzIHNvbWV3aGF0Ci0vLyBjb3VudGVyaW50dWl0aXZlLCBi
dXQgdGhpcyBlbmRzIHVwIGJlaW5nIHRoZSBjbGVhbmVzdCBhbmQgbW9zdCBlZmZlY3RpdmUgd2F5
IG9mIHJlZHVjaW5nCi0vLyBzdHJ1Y3R1cmUgY2hlY2tzIG9uIHRlcm1pbmFsIHN0cnVjdHVyZXM6
Ci0vLwotLy8gLSBXZSB1c2VkIHRvIG9ubHkgc2V0IHdhdGNocG9pbnRzIG9uIHdhdGNoYWJsZSBz
dHJ1Y3R1cmVzIGlmIHdlIGtuZXcgdGhhdCB0aGlzIHdvdWxkCi0vLyAgIHJlbW92ZSBhIHN0cnVj
dHVyZSBjaGVjay4gRXhwZXJpbWVudHMgc2hvdyB0aGF0IHN3aXRjaGluZyBmcm9tIHRoYXQsIHRv
IGJsaW5kbHkKLS8vICAgc2V0dGluZyB3YXRjaHBvaW50cyBvbiBhbGwgd2F0Y2hhYmxlIHN0cnVj
dHVyZXMsIHdhcyBub3QgYSByZWdyZXNzaW9uLgotLy8KLS8vIC0gSXQgbWFrZXMgYWJzdHJhY3Qg
aW50ZXJwcmV0YXRpb24gYSB3aG9sZSBsb3QgZWFzaWVyLiBXZSBqdXN0IGFzc3VtZSB0aGF0IHdh
dGNoYWJsZQotLy8gICBzdHJ1Y3R1cmVzIGFyZSB1bmNsb2JiZXJhYmxlIHdpdGhvdXQgaGF2aW5n
IHRvIGRvIGFueSBvdGhlciBsb2dpYy4KLQotYm9vbCBwZXJmb3JtU3RydWN0dXJlUmVnaXN0cmF0
aW9uKEdyYXBoJik7Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKLQotI2VuZGlmIC8vIEVO
QUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUcmFuc2l0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RyYW5z
aXRpb24uY3BwCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1RyYW5zaXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogdm9pZCBUcmFuc2l0aW9uOjpkdW1wSW5Db250
ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAogewotICAg
IG91dC5wcmludChwb2ludGVyRHVtcEluQ29udGV4dChwcmV2aW91cywgY29udGV4dCksICIgLT4g
IiwgcG9pbnRlckR1bXBJbkNvbnRleHQobmV4dCwgY29udGV4dCkpOworICAgIG91dC5wcmludChw
b2ludGVyRHVtcEluQ29udGV4dChwcmV2aW91cy5nZXQoKSwgY29udGV4dCksICIgLT4gIiwgcG9p
bnRlckR1bXBJbkNvbnRleHQobmV4dC5nZXQoKSwgY29udGV4dCkpOwogfQogCiB2b2lkIFRyYW5z
aXRpb246OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVHJhbnNpdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHVHJhbnNpdGlvbi5oCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1RyYW5zaXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKKyNpbmNsdWRlICJERkdSZWdpc3Rl
cmVkU3RydWN0dXJlLmgiCiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCkBAIC0zOCwxNiArMzksMTIgQEAgc3RydWN0IER1bXBDb250ZXh0Owog
bmFtZXNwYWNlIERGRyB7CiAKIHN0cnVjdCBUcmFuc2l0aW9uIHsKLSAgICBTdHJ1Y3R1cmUqIHBy
ZXZpb3VzOwotICAgIFN0cnVjdHVyZSogbmV4dDsKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHBy
ZXZpb3VzOworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgbmV4dDsKICAgICAKLSAgICBUcmFuc2l0
aW9uKCkKLSAgICAgICAgOiBwcmV2aW91cyhudWxscHRyKQotICAgICAgICAsIG5leHQobnVsbHB0
cikKLSAgICB7Ci0gICAgfQorICAgIFRyYW5zaXRpb24oKSA9IGRlZmF1bHQ7CiAgICAgCi0gICAg
VHJhbnNpdGlvbihTdHJ1Y3R1cmUqIHByZXZpb3VzLCBTdHJ1Y3R1cmUqIG5leHQpCisgICAgVHJh
bnNpdGlvbihSZWdpc3RlcmVkU3RydWN0dXJlIHByZXZpb3VzLCBSZWdpc3RlcmVkU3RydWN0dXJl
IG5leHQpCiAgICAgICAgIDogcHJldmlvdXMocHJldmlvdXMpCiAgICAgICAgICwgbmV4dChuZXh0
KQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9p
c3RpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjExMjI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDY1LDIzICs0NjUsMjMgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogICAgIAotICAgIHZvaWQgbm90aWNlU3RydWN0dXJlQ2hlY2soVmFyaWFibGVB
Y2Nlc3NEYXRhKiB2YXJpYWJsZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgdm9pZCBub3Rp
Y2VTdHJ1Y3R1cmVDaGVjayhWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlLCBSZWdpc3RlcmVk
U3RydWN0dXJlIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEhhc2hNYXA8VmFyaWFibGVBY2Nl
c3NEYXRhKiwgQ2hlY2tEYXRhPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZCh2YXJpYWJs
ZSwgQ2hlY2tEYXRhKHN0cnVjdHVyZSkpOworICAgICAgICBIYXNoTWFwPFZhcmlhYmxlQWNjZXNz
RGF0YSosIENoZWNrRGF0YT46OkFkZFJlc3VsdCByZXN1bHQgPSBtX21hcC5hZGQodmFyaWFibGUs
IENoZWNrRGF0YShzdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgaWYgKHJlc3VsdC5pc05ld0Vu
dHJ5KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAocmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZS5tX3N0cnVjdHVyZSA9PSBzdHJ1Y3R1cmUpCisgICAgICAgIGlmIChyZXN1bHQuaXRlcmF0
b3ItPnZhbHVlLm1fc3RydWN0dXJlID09IHN0cnVjdHVyZS5nZXQoKSkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5tX3N0cnVjdHVyZSA9IDA7CiAg
ICAgfQogICAgIAotICAgIHZvaWQgbm90aWNlU3RydWN0dXJlQ2hlY2soVmFyaWFibGVBY2Nlc3NE
YXRhKiB2YXJpYWJsZSwgY29uc3QgU3RydWN0dXJlU2V0JiBzZXQpCisgICAgdm9pZCBub3RpY2VT
dHJ1Y3R1cmVDaGVjayhWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlLCBSZWdpc3RlcmVkU3Ry
dWN0dXJlU2V0IHNldCkKICAgICB7CiAgICAgICAgIGlmIChzZXQuc2l6ZSgpICE9IDEpIHsKLSAg
ICAgICAgICAgIG5vdGljZVN0cnVjdHVyZUNoZWNrKHZhcmlhYmxlLCAwKTsKKyAgICAgICAgICAg
IG5vdGljZVN0cnVjdHVyZUNoZWNrKHZhcmlhYmxlLCBSZWdpc3RlcmVkU3RydWN0dXJlKCkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIG5vdGljZVN0cnVjdHVyZUNo
ZWNrKHZhcmlhYmxlLCBzZXQub25seVN0cnVjdHVyZSgpKTsKKyAgICAgICAgbm90aWNlU3RydWN0
dXJlQ2hlY2sodmFyaWFibGUsIHNldC5hdCgwKSk7CiAgICAgfQogCiAgICAgdm9pZCBub3RpY2VD
aGVja0FycmF5KFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUsIEFycmF5TW9kZSBhcnJheU1v
ZGUpCkBAIC01MDEsMjIgKzUwMSwyMiBAQCBwcml2YXRlOgogICAgICAgICByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlLmRpc2FibGVDaGVja0FycmF5SG9pc3RpbmcoKTsKICAgICB9CiAKLSAgICB2b2lk
IG5vdGljZVN0cnVjdHVyZUNoZWNrQWNjb3VudGluZ0ZvckFycmF5TW9kZShWYXJpYWJsZUFjY2Vz
c0RhdGEqIHZhcmlhYmxlLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB2b2lkIG5vdGljZVN0
cnVjdHVyZUNoZWNrQWNjb3VudGluZ0ZvckFycmF5TW9kZShWYXJpYWJsZUFjY2Vzc0RhdGEqIHZh
cmlhYmxlLCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAgIEhh
c2hNYXA8VmFyaWFibGVBY2Nlc3NEYXRhKiwgQ2hlY2tEYXRhPjo6aXRlcmF0b3IgcmVzdWx0ID0g
bV9tYXAuZmluZCh2YXJpYWJsZSk7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gbV9tYXAuZW5kKCkp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmICghcmVzdWx0LT52YWx1ZS5tX2FycmF5
TW9kZUhvaXN0aW5nT2theSB8fCAhcmVzdWx0LT52YWx1ZS5tX2FycmF5TW9kZUlzVmFsaWQpCiAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChyZXN1bHQtPnZhbHVlLm1fYXJyYXlNb2Rl
LnN0cnVjdHVyZVdvdWxkUGFzc0FycmF5TW9kZUZpbHRlcmluZyhzdHJ1Y3R1cmUpKQorICAgICAg
ICBpZiAocmVzdWx0LT52YWx1ZS5tX2FycmF5TW9kZS5zdHJ1Y3R1cmVXb3VsZFBhc3NBcnJheU1v
ZGVGaWx0ZXJpbmcoc3RydWN0dXJlLmdldCgpKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgcmVzdWx0LT52YWx1ZS5kaXNhYmxlQ2hlY2tBcnJheUhvaXN0aW5nKCk7CiAgICAgfQogCi0g
ICAgdm9pZCBub3RpY2VTdHJ1Y3R1cmVDaGVja0FjY291bnRpbmdGb3JBcnJheU1vZGUoVmFyaWFi
bGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSwgY29uc3QgU3RydWN0dXJlU2V0JiBzZXQpCisgICAgdm9p
ZCBub3RpY2VTdHJ1Y3R1cmVDaGVja0FjY291bnRpbmdGb3JBcnJheU1vZGUoVmFyaWFibGVBY2Nl
c3NEYXRhKiB2YXJpYWJsZSwgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBzZXQpCiAgICAgewogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2V0LnNpemUoKTsgaSsrKQotICAgICAgICAg
ICAgbm90aWNlU3RydWN0dXJlQ2hlY2tBY2NvdW50aW5nRm9yQXJyYXlNb2RlKHZhcmlhYmxlLCBz
ZXRbaV0pOworICAgICAgICAgICAgbm90aWNlU3RydWN0dXJlQ2hlY2tBY2NvdW50aW5nRm9yQXJy
YXlNb2RlKHZhcmlhYmxlLCBzZXQuYXQoaSkpOwogICAgIH0KIAogICAgIEhhc2hNYXA8VmFyaWFi
bGVBY2Nlc3NEYXRhKiwgQ2hlY2tEYXRhPiBtX21hcDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHVmFsaWRhdGUuY3BwCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA5LDcg
KzIwOSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5vZGUtPm9yaWdp
bi5mb3JFeGl0ICE9IHByZXZpb3VzTm9kZS0+b3JpZ2luLmZvckV4aXQpOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSks
ICFub2RlLT5oYXNTdHJ1Y3R1cmUoKSB8fCAhIW5vZGUtPnN0cnVjdHVyZSgpKTsKKyAgICAgICAg
ICAgICAgICBWQUxJREFURSgobm9kZSksICFub2RlLT5oYXNTdHJ1Y3R1cmUoKSB8fCAhIW5vZGUt
PnN0cnVjdHVyZSgpLmdldCgpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFu
b2RlLT5oYXNDZWxsT3BlcmFuZCgpIHx8IG5vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkuaXND
ZWxsKCkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIW5vZGUtPmhhc0NlbGxP
cGVyYW5kKCkgfHwgISFub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpKTsKICAgICAgICAgICAg
ICAgICAKQEAgLTI4NSw3ICsyODUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBNYXRlcmlh
bGl6ZU5ld09iamVjdDoKLSAgICAgICAgICAgICAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA6IG5vZGUtPnN0cnVjdHVyZVNldCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAo
UmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgOiBub2RlLT5zdHJ1Y3R1cmVTZXQoKSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBvbmx5IHN1cHBvcnRzIHN0cnVjdHVyZXMg
dGhhdCBhcmUgSlNGaW5hbE9iamVjdCBvciBKU0FycmF5LgogICAgICAgICAgICAgICAgICAgICAg
ICAgVkFMSURBVEUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vZGUpLApAQCAtNTY1
LDcgKzU2NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIC8vIENQUyBkaXNhbGxv
d3MgaW50MzIgYW5kIGRvdWJsZSBhcnJheXMuIFRob3NlIHJlcXVpcmUgd2VpcmQgdHlwZSBjaGVj
a3MgYW5kCiAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnZlcnNpb25zLiBUaGV5IGFyZSBub3Qg
bmVlZGVkIGluIHRoZSBERkcgcmlnaHQgbm93LiBXZSBzaG91bGQgYWRkIHN1cHBvcnQKICAgICAg
ICAgICAgICAgICAgICAgLy8gZm9yIHRoZXNlIGlmIHRoZSBERkcgZXZlciBuZWVkcyBpdC4KLSAg
ICAgICAgICAgICAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6IG5vZGUtPnN0cnVj
dHVyZVNldCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBzdHJ1Y3R1cmUgOiBub2RlLT5zdHJ1Y3R1cmVTZXQoKSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgVkFMSURBVEUoKG5vZGUpLCAhaGFzSW50MzIoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUo
KSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhaGFzRG91Ymxl
KHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKTsKICAgICAgICAgICAgICAgICAgICAgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2
aXNpb24gMjExMjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsNyArMTk2LDkgQEAgcHVibGljOgogICAgICAg
ICBtX3Byb2MuYWRkRmFzdENvbnN0YW50KG1fdGFnVHlwZU51bWJlci0+a2V5KCkpOwogICAgICAg
ICBtX3Byb2MuYWRkRmFzdENvbnN0YW50KG1fdGFnTWFzay0+a2V5KCkpOwogICAgICAgICAKLSAg
ICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQuY29uc3RJbnRQdHIoY29kZUJsb2NrKCkpLCBhZGRy
ZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaykpOworICAgICAgICAvLyBXZSBkb24ndCB3
YW50IHRoZSBDb2RlQmxvY2sgdG8gaGF2ZSBhIHdlYWsgcG9pbnRlciB0byBpdHNlbGYgYmVjYXVz
ZQorICAgICAgICAvLyB0aGF0IHdvdWxkIGNhdXNlIGl0IHRvIGFsd2F5cyBnZXQgY29sbGVjdGVk
LgorICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5jb25zdEludFB0cihiaXR3aXNlX2Nhc3Q8
aW50cHRyX3Q+KGNvZGVCbG9jaygpKSksIGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJs
b2NrKSk7CiAKICAgICAgICAgLy8gU3RhY2sgT3ZlcmZsb3cgQ2hlY2suCiAgICAgICAgIHVuc2ln
bmVkIGV4aXRGcmFtZVNpemUgPSBtX2dyYXBoLnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZvckV4aXQo
KSAqIHNpemVvZihSZWdpc3Rlcik7CkBAIC0xNTYwLDcgKzE1NjIsNyBAQCBwcml2YXRlOgogICAg
ICAgICBtX291dC5icmFuY2goaXNPYmplY3QodmFsdWUpLCB1c3VhbGx5KGNvbnRpbnVhdGlvbiks
IHJhcmVseShzbG93Q2FzZSkpOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBj
b250aW51YXRpb24pOwotICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQu
YW5jaG9yKHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk9iamVjdENvbnN0
cnVjdG9yKSwgbV9jYWxsRnJhbWUsIG1fb3V0LmNvbnN0SW50UHRyKGdsb2JhbE9iamVjdCksIHZh
bHVlKSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Io
dm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uT2JqZWN0Q29uc3RydWN0b3Ip
LCBtX2NhbGxGcmFtZSwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0KSwgdmFsdWUpKTsKICAgICAg
ICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNv
bnRpbnVhdGlvbiwgbGFzdE5leHQpOwpAQCAtMjY2NCw3ICsyNjY2LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIGNoZWNrU3RydWN0dXJlKAogICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQzMihj
ZWxsLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCksIGpzVmFsdWVWYWx1ZShjZWxsKSwKICAg
ICAgICAgICAgICAgICBleGl0S2luZCwgbV9ub2RlLT5zdHJ1Y3R1cmVTZXQoKSwKLSAgICAgICAg
ICAgICAgICBbJl0gKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7CisgICAgICAgICAgICAgICAgWyZd
IChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgewogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gd2Vha1N0cnVjdHVyZUlEKHN0cnVjdHVyZSk7CiAgICAgICAgICAgICAgICAgfSk7CiAg
ICAgICAgICAgICByZXR1cm47CkBAIC0yNjg0LDcgKzI2ODYsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgY2hlY2tTdHJ1Y3R1cmUoCiAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyKHZhbHVl
LCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCksIGpzVmFsdWVWYWx1ZSh2YWx1ZSksCiAgICAg
ICAgICAgICAgICAgZXhpdEtpbmQsIG1fbm9kZS0+c3RydWN0dXJlU2V0KCksCi0gICAgICAgICAg
ICAgICAgWyZdIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgeworICAgICAgICAgICAgICAgIFsmXSAo
UmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIHsKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHdlYWtTdHJ1Y3R1cmVJRChzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgICAgIH0pOwogICAg
ICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwpAQCAtMjc5OCw4ICsyODAwLDggQEAg
cHJpdmF0ZToKICAgICB7CiAgICAgICAgIG1fZnRsU3RhdGUuaml0Q29kZS0+Y29tbW9uLm5vdGlm
eUNvbXBpbGluZ1N0cnVjdHVyZVRyYW5zaXRpb24obV9ncmFwaC5tX3BsYW4sIGNvZGVCbG9jaygp
LCBtX25vZGUpOwogICAgICAgICAKLSAgICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBt
X25vZGUtPnRyYW5zaXRpb24oKS0+cHJldmlvdXM7Ci0gICAgICAgIFN0cnVjdHVyZSogbmV3U3Ry
dWN0dXJlID0gbV9ub2RlLT50cmFuc2l0aW9uKCktPm5leHQ7CisgICAgICAgIFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgb2xkU3RydWN0dXJlID0gbV9ub2RlLT50cmFuc2l0aW9uKCktPnByZXZpb3VzOwor
ICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG5ld1N0cnVjdHVyZSA9IG1fbm9kZS0+dHJhbnNp
dGlvbigpLT5uZXh0OwogICAgICAgICBBU1NFUlRfVU5VU0VEKG9sZFN0cnVjdHVyZSwgb2xkU3Ry
dWN0dXJlLT5pbmRleGluZ1R5cGUoKSA9PSBuZXdTdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKTsK
ICAgICAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3Mo
KSA9PSBuZXdTdHJ1Y3R1cmUtPnR5cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdzKCkpOwogICAgICAg
ICBBU1NFUlQob2xkU3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBuZXdTdHJ1Y3R1cmUt
PnR5cGVJbmZvKCkudHlwZSgpKTsKQEAgLTM4OTksMTAgKzM5MDEsMTAgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIC8vIHdpdGggb25lIG9mIHRoZSBmb2xsb3dpbmcgaW5kZXhpbmcgc2hhcGVzOiBJ
bnQzMiwgQ29udGlndW91cywgRG91YmxlLgogICAgICAgICAgICAgTFZhbHVlIHN0cnVjdHVyZSA9
IG1fb3V0LnNlbGVjdCgKICAgICAgICAgICAgICAgICBtX291dC5lcXVhbChpbmRleGluZ1R5cGUs
IG1fb3V0LmNvbnN0SW50MzIoQXJyYXlXaXRoSW50MzIpKSwKLSAgICAgICAgICAgICAgICBtX291
dC5jb25zdEludFB0cihnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBl
RHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhJbnQzMikpLAorICAgICAgICAgICAgICAgIHdlYWtT
dHJ1Y3R1cmUobV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3Ry
dWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhJbnQzMikpKSwK
ICAgICAgICAgICAgICAgICBtX291dC5zZWxlY3QobV9vdXQuZXF1YWwoaW5kZXhpbmdUeXBlLCBt
X291dC5jb25zdEludDMyKEFycmF5V2l0aENvbnRpZ3VvdXMpKSwKLSAgICAgICAgICAgICAgICAg
ICAgbV9vdXQuY29uc3RJbnRQdHIoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4
aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91cykpLAotICAgICAgICAg
ICAgICAgICAgICBtX291dC5jb25zdEludFB0cihnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJl
Rm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhEb3VibGUpKSkpOworICAg
ICAgICAgICAgICAgICAgICB3ZWFrU3RydWN0dXJlKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUo
Z2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRp
b24oQXJyYXlXaXRoQ29udGlndW91cykpKSwKKyAgICAgICAgICAgICAgICAgICAgd2Vha1N0cnVj
dHVyZShtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1
cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aERvdWJsZSkpKSkpOwog
ICAgICAgICAgICAgYXJyYXlSZXN1bHQgPSBhbGxvY2F0ZUpTQXJyYXkocmVzdWx0TGVuZ3RoLCBz
dHJ1Y3R1cmUsIGluZGV4aW5nVHlwZSwgZmFsc2UsIGZhbHNlKTsKICAgICAgICAgfQogCkBAIC0z
OTk0LDEzICszOTk2LDEzIEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBMVmFsdWUgc2NvcGUg
PSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBTeW1ib2xUYWJsZSogdGFibGUg
PSBtX25vZGUtPmNhc3RPcGVyYW5kPFN5bWJvbFRhYmxlKj4oKTsKLSAgICAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1h
bnRpYyktPmFjdGl2YXRpb25TdHJ1Y3R1cmUoKTsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YWN0aXZhdGlvblN0cnVjdHVyZSgpKTsK
ICAgICAgICAgSlNWYWx1ZSBpbml0aWFsaXphdGlvblZhbHVlID0gbV9ub2RlLT5pbml0aWFsaXph
dGlvblZhbHVlRm9yQWN0aXZhdGlvbigpOwogICAgICAgICBBU1NFUlQoaW5pdGlhbGl6YXRpb25W
YWx1ZS5pc1VuZGVmaW5lZCgpIHx8IGluaXRpYWxpemF0aW9uVmFsdWUgPT0ganNURFpWYWx1ZSgp
KTsKICAgICAgICAgaWYgKHRhYmxlLT5zaW5nbGV0b25TY29wZSgpLT5pc1N0aWxsVmFsaWQoKSkg
ewogICAgICAgICAgICAgTFZhbHVlIGNhbGxSZXN1bHQgPSB2bUNhbGwoCiAgICAgICAgICAgICAg
ICAgSW50NjQsCi0gICAgICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0
ZUFjdGl2YXRpb25EaXJlY3QpLCBtX2NhbGxGcmFtZSwgd2Vha1BvaW50ZXIoc3RydWN0dXJlKSwK
KyAgICAgICAgICAgICAgICBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlv
bkRpcmVjdCksIG1fY2FsbEZyYW1lLCB3ZWFrU3RydWN0dXJlKHN0cnVjdHVyZSksCiAgICAgICAg
ICAgICAgICAgc2NvcGUsIHdlYWtQb2ludGVyKHRhYmxlKSwgbV9vdXQuY29uc3RJbnQ2NChKU1Zh
bHVlOjplbmNvZGUoaW5pdGlhbGl6YXRpb25WYWx1ZSkpKTsKICAgICAgICAgICAgIHNldEpTVmFs
dWUoY2FsbFJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC00MDM1LDcgKzQwMzcsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgWz1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2Nh
dGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gewogICAgICAgICAgICAg
ICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICAgICAg
b3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlvbkRpcmVjdCwgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigp
LAotICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0
dXJlKSwgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpLAorICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlLmdldCgpKSwgbG9jYXRpb25zWzFdLmRp
cmVjdEdQUigpLAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIodGFibGUpLAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02
NChKU1ZhbHVlOjplbmNvZGUoaW5pdGlhbGl6YXRpb25WYWx1ZSkpKTsKICAgICAgICAgICAgIH0s
CkBAIC00MDY1LDEwICs0MDY3LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0KKyAgICAg
ICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0
dXJlKAogICAgICAgICAgICAgaXNHZW5lcmF0b3JGdW5jdGlvbiA/IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1
cmUoKSA6CiAgICAgICAgICAgICBpc0FzeW5jRnVuY3Rpb24gPyBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKSA6
Ci0gICAgICAgICAgICBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1h
bnRpYyktPmZ1bmN0aW9uU3RydWN0dXJlKCk7CisgICAgICAgICAgICBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmZ1bmN0aW9uU3RydWN0dXJlKCkpOwog
ICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd1BhdGggPSBtX291dC5uZXdCbG9jaygp
OwogICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwpA
QCAtNDEyOCw4ICs0MTMwLDggQEAgcHJpdmF0ZToKICAgICAgICAgLy8gdGhlbSBiZSBleHBsaWNp
dCBhcmd1bWVudHMgdG8gdGhpcyBub2RlLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyMjA3CiAgICAgICAgIAotICAgICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9Ci0gICAgICAgICAgICBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUt
Pm9yaWdpbi5zZW1hbnRpYyktPmRpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZSgpOworICAgICAgICBS
ZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9CisgICAgICAgICAgICBtX2dyYXBoLnJlZ2lz
dGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFu
dGljKS0+ZGlyZWN0QXJndW1lbnRzU3RydWN0dXJlKCkpOwogICAgICAgICAKICAgICAgICAgdW5z
aWduZWQgbWluQ2FwYWNpdHkgPSBtX2dyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljKS0+bnVtUGFyYW1ldGVycygpIC0gMTsKICAgICAgICAgCkBAIC00MTcx
LDcgKzQxNzMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgWz1dIChjb25zdCBWZWN0b3I8TG9j
YXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gewog
ICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcigKICAgICAgICAg
ICAgICAgICAgICAgb3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzLCBsb2NhdGlvbnNbMF0u
ZGlyZWN0R1BSKCksCi0gICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihzdHJ1Y3R1cmUpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksCisgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUuZ2V0KCkpLCBsb2Nh
dGlvbnNbMV0uZGlyZWN0R1BSKCksCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKG1pbkNhcGFjaXR5KSk7CiAgICAgICAgICAgICB9LCBsZW5ndGgudmFsdWUp
OwogICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGNhbGxS
ZXN1bHQpOwpAQCAtNDI1OSw3ICs0MjYxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIExWYWx1
ZSBhcnJheUxlbmd0aCA9IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAg
TEJhc2ljQmxvY2sgbG9vcFN0YXJ0ID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IGdsb2JhbE9iamVjdC0+cmVzdFBhcmFtZXRlclN0cnVjdHVyZSgpOworICAgICAgICAgICAgUmVn
aXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGds
b2JhbE9iamVjdC0+cmVzdFBhcmFtZXRlclN0cnVjdHVyZSgpKTsKICAgICAgICAgICAgIEFycmF5
VmFsdWVzIGFycmF5VmFsdWVzID0gYWxsb2NhdGVVbmluaXRpYWxpemVkQ29udGlndW91c0pTQXJy
YXkoYXJyYXlMZW5ndGgsIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBMVmFsdWUgYXJyYXkgPSBh
cnJheVZhbHVlcy5hcnJheTsKICAgICAgICAgICAgIExWYWx1ZSBidXR0ZXJmbHkgPSBhcnJheVZh
bHVlcy5idXR0ZXJmbHk7CkBAIC00MzI3LDggKzQzMjksOCBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgc3BlY3VsYXRlKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCBvcGVyYW5kSW5kZXgpKTsK
ICAgICAgICAgCiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5n
VHlwZUR1cmluZ0FsbG9jYXRpb24oCi0gICAgICAgICAgICBtX25vZGUtPmluZGV4aW5nVHlwZSgp
KTsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lz
dGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVE
dXJpbmdBbGxvY2F0aW9uKAorICAgICAgICAgICAgbV9ub2RlLT5pbmRleGluZ1R5cGUoKSkpOwog
CiAgICAgICAgIGlmICghZ2xvYmFsT2JqZWN0LT5pc0hhdmluZ0FCYWRUaW1lKCkgJiYgIWhhc0Fu
eUFycmF5U3RvcmFnZShtX25vZGUtPmluZGV4aW5nVHlwZSgpKSkgewogICAgICAgICAgICAgdW5z
aWduZWQgbnVtRWxlbWVudHMgPSBtX25vZGUtPm51bUNoaWxkcmVuKCk7CkBAIC00MzczLDcgKzQz
NzUsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIW1fbm9kZS0+bnVtQ2hpbGRyZW4oKSkgewog
ICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoCiAgICAgICAgICAgICAgICAgSW50NjQsIG1f
b3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdFbXB0eUFycmF5KSwgbV9jYWxsRnJhbWUsCi0gICAg
ICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoc3RydWN0dXJlKSkpOworICAgICAgICAgICAg
ICAgIHdlYWtTdHJ1Y3R1cmUoc3RydWN0dXJlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgICAgIApAQCAtNDM5NCw3ICs0Mzk2LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
CiAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoCiAgICAgICAgICAgICBJbnQ2NCwgbV9v
dXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5KSwgbV9jYWxsRnJhbWUsCi0gICAgICAgICAg
ICBtX291dC5jb25zdEludFB0cihzdHJ1Y3R1cmUpLCBtX291dC5jb25zdEludFB0cihidWZmZXIp
LAorICAgICAgICAgICAgd2Vha1N0cnVjdHVyZShzdHJ1Y3R1cmUpLCBtX291dC5jb25zdEludFB0
cihidWZmZXIpLAogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIobV9ub2RlLT5udW1DaGls
ZHJlbigpKSk7CiAgICAgICAgIAogICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5pbnRQdHJa
ZXJvLCBtX291dC5hYnNvbHV0ZShzY3JhdGNoQnVmZmVyLT5hY3RpdmVMZW5ndGhQdHIoKSkpOwpA
QCAtNDQzNCw3ICs0NDM2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5vcmlnaW5hbEFycmF5U3RydWN0
dXJlRm9ySW5kZXhpbmdUeXBlKEFycmF5V2l0aENvbnRpZ3VvdXMpOworICAgICAgICAgICAgUmVn
aXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+b3JpZ2luYWxB
cnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZShBcnJheVdpdGhDb250aWd1b3VzKSk7CiAgICAg
ICAgICAgICBBcnJheVZhbHVlcyBhcnJheVZhbHVlcyA9IGFsbG9jYXRlVW5pbml0aWFsaXplZENv
bnRpZ3VvdXNKU0FycmF5KGxlbmd0aCwgc3RydWN0dXJlKTsKICAgICAgICAgICAgIExWYWx1ZSBy
ZXN1bHQgPSBhcnJheVZhbHVlcy5hcnJheTsKICAgICAgICAgICAgIExWYWx1ZSBzdG9yYWdlID0g
YXJyYXlWYWx1ZXMuYnV0dGVyZmx5OwpAQCAtNDY1Niw4ICs0NjU4LDggQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGNvbXBpbGVOZXdBcnJheUJ1ZmZlcigpCiAgICAgewogICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmln
aW4uc2VtYW50aWMpOwotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVj
dC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKAotICAgICAg
ICAgICAgbV9ub2RlLT5pbmRleGluZ1R5cGUoKSk7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFy
cmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbigKKyAgICAgICAgICAg
IG1fbm9kZS0+aW5kZXhpbmdUeXBlKCkpKTsKICAgICAgICAgCiAgICAgICAgIGlmICghZ2xvYmFs
T2JqZWN0LT5pc0hhdmluZ0FCYWRUaW1lKCkgJiYgIWhhc0FueUFycmF5U3RvcmFnZShtX25vZGUt
PmluZGV4aW5nVHlwZSgpKSkgewogICAgICAgICAgICAgdW5zaWduZWQgbnVtRWxlbWVudHMgPSBt
X25vZGUtPm51bUNvbnN0YW50cygpOwpAQCAtNDY4Niw3ICs0Njg4LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgCiAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKAogICAgICAgICAgICAgSW50NjQsIG1f
b3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciksIG1fY2FsbEZyYW1lLAotICAg
ICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoc3RydWN0dXJlKSwgbV9vdXQuY29uc3RJbnRQdHIo
bV9ub2RlLT5zdGFydENvbnN0YW50KCkpLAorICAgICAgICAgICAgd2Vha1N0cnVjdHVyZShzdHJ1
Y3R1cmUpLCBtX291dC5jb25zdEludFB0cihtX25vZGUtPnN0YXJ0Q29uc3RhbnQoKSksCiAgICAg
ICAgICAgICBtX291dC5jb25zdEludFB0cihtX25vZGUtPm51bUNvbnN0YW50cygpKSkpOwogICAg
IH0KIApAQCAtNDY5NSwyMyArNDY5NywyMiBAQCBwcml2YXRlOgogICAgICAgICBMVmFsdWUgcHVi
bGljTGVuZ3RoID0gbG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIAogICAgICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0
aW9uKAotICAgICAgICAgICAgbV9ub2RlLT5pbmRleGluZ1R5cGUoKSk7CisgICAgICAgIFJlZ2lz
dGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9i
YWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbigK
KyAgICAgICAgICAgIG1fbm9kZS0+aW5kZXhpbmdUeXBlKCkpKTsKICAgICAgICAgCiAgICAgICAg
IGlmICghZ2xvYmFsT2JqZWN0LT5pc0hhdmluZ0FCYWRUaW1lKCkgJiYgIWhhc0FueUFycmF5U3Rv
cmFnZShtX25vZGUtPmluZGV4aW5nVHlwZSgpKSkgewogICAgICAgICAgICAgSW5kZXhpbmdUeXBl
IGluZGV4aW5nVHlwZSA9IG1fbm9kZS0+aW5kZXhpbmdUeXBlKCk7CiAgICAgICAgICAgICBzZXRK
U1ZhbHVlKAogICAgICAgICAgICAgICAgIGFsbG9jYXRlSlNBcnJheSgKLSAgICAgICAgICAgICAg
ICAgICAgcHVibGljTGVuZ3RoLCBtX291dC5jb25zdEludFB0cihnbG9iYWxPYmplY3QtPmFycmF5
U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpKSwg
bV9vdXQuY29uc3RJbnQzMihpbmRleGluZ1R5cGUpKS5hcnJheSk7CisgICAgICAgICAgICAgICAg
ICAgIHB1YmxpY0xlbmd0aCwgd2Vha1BvaW50ZXIoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVy
ZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oaW5kZXhpbmdUeXBlKSksIG1fb3V0LmNv
bnN0SW50MzIoaW5kZXhpbmdUeXBlKSkuYXJyYXkpOwogICAgICAgICAgICAgbXV0YXRvckZlbmNl
KCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIExW
YWx1ZSBzdHJ1Y3R1cmVWYWx1ZSA9IG1fb3V0LnNlbGVjdCgKICAgICAgICAgICAgIG1fb3V0LmFi
b3ZlT3JFcXVhbChwdWJsaWNMZW5ndGgsIG1fb3V0LmNvbnN0SW50MzIoTUlOX0FSUkFZX1NUT1JB
R0VfQ09OU1RSVUNUSU9OX0xFTkdUSCkpLAotICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIo
Ci0gICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5n
VHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSksCi0gICAgICAgICAg
ICBtX291dC5jb25zdEludFB0cihzdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgIHdlYWtTdHJ1Y3R1
cmUobV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJl
Rm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2UpKSks
CisgICAgICAgICAgICB3ZWFrU3RydWN0dXJlKHN0cnVjdHVyZSkpOwogICAgICAgICBzZXRKU1Zh
bHVlKHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNp
emUpLCBtX2NhbGxGcmFtZSwgc3RydWN0dXJlVmFsdWUsIHB1YmxpY0xlbmd0aCwgbV9vdXQuaW50
UHRyWmVybykpOwogICAgIH0KIApAQCAtNDcyMiw3ICs0NzIzLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgCiAgICAgICAgIHN3aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICAg
ICAgY2FzZSBJbnQzMlVzZTogewotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBn
bG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZSk7CisgICAg
ICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJT
dHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5
cGUpKTsKIAogICAgICAgICAgICAgTFZhbHVlIHNpemUgPSBsb3dJbnQzMihtX25vZGUtPmNoaWxk
MSgpKTsKIApAQCAtNDc4MSw3ICs0NzgyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBb
PV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93
UGF0aDo6R2VuZXJhdG9yPiB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5
Q2FsbEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld1R5cGVk
QXJyYXlXaXRoU2l6ZUZvclR5cGUodHlwZSksIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1
cmUpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksCisgICAgICAgICAgICAgICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlLmdldCgpKSwgbG9jYXRpb25zWzFd
LmRpcmVjdEdQUigpLAogICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzJdLmRpcmVj
dEdQUigpKTsKICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIHNpemUsIHN0b3Jh
Z2VWYWx1ZSk7CkBAIC00ODEzLDcgKzQ4MTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGls
ZUFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKCkKICAgICB7CiAgICAgICAgIExWYWx1ZSBvYmplY3Qg
PSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBzZXRTdG9yYWdlKGFsbG9jYXRl
UHJvcGVydHlTdG9yYWdlKG9iamVjdCwgbV9ub2RlLT50cmFuc2l0aW9uKCktPnByZXZpb3VzKSk7
CisgICAgICAgIHNldFN0b3JhZ2UoYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2Uob2JqZWN0LCBtX25v
ZGUtPnRyYW5zaXRpb24oKS0+cHJldmlvdXMuZ2V0KCkpKTsKICAgICB9CiAKICAgICB2b2lkIGNv
bXBpbGVSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKCkKQEAgLTQ4MjQsNyArNDgyNSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIAogICAgICAgICBzZXRTdG9yYWdlKAogICAgICAgICAgICAgcmVhbGxv
Y2F0ZVByb3BlcnR5U3RvcmFnZSgKLSAgICAgICAgICAgICAgICBvYmplY3QsIG9sZFN0b3JhZ2Us
IHRyYW5zaXRpb24tPnByZXZpb3VzLCB0cmFuc2l0aW9uLT5uZXh0KSk7CisgICAgICAgICAgICAg
ICAgb2JqZWN0LCBvbGRTdG9yYWdlLCB0cmFuc2l0aW9uLT5wcmV2aW91cy5nZXQoKSwgdHJhbnNp
dGlvbi0+bmV4dC5nZXQoKSkpOwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVOdWtlU3Ry
dWN0dXJlQW5kU2V0QnV0dGVyZmx5KCkKQEAgLTUyODYsMTEgKzUyODcsMTEgQEAgcHJpdmF0ZToK
ICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKICAg
ICAgICAgCiAgICAgICAgIFZlY3RvcjxTd2l0Y2hDYXNlLCAyPiBjYXNlczsKLSAgICAgICAgU3Ry
dWN0dXJlU2V0IGJhc2VTZXQ7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgYmFzZVNl
dDsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS5jYXNlcy5zaXplKCk7IGktLTspIHsK
ICAgICAgICAgICAgIE11bHRpR2V0QnlPZmZzZXRDYXNlIGdldENhc2UgPSBkYXRhLmNhc2VzW2ld
OwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gZ2V0Q2FzZS5zZXQoKS5zaXplKCk7IGot
LTspIHsKLSAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdldENhc2Uuc2V0
KClbal07CisgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBn
ZXRDYXNlLnNldCgpW2pdOwogICAgICAgICAgICAgICAgIGJhc2VTZXQuYWRkKHN0cnVjdHVyZSk7
CiAgICAgICAgICAgICAgICAgY2FzZXMuYXBwZW5kKFN3aXRjaENhc2Uod2Vha1N0cnVjdHVyZUlE
KHN0cnVjdHVyZSksIGJsb2Nrc1tpXSwgV2VpZ2h0KDEpKSk7CiAgICAgICAgICAgICB9CkBAIC01
MzY4LDExICs1MzY5LDExIEBAIHByaXZhdGU6CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVh
dGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIAogICAgICAgICBWZWN0b3I8U3dpdGNo
Q2FzZSwgMj4gY2FzZXM7Ci0gICAgICAgIFN0cnVjdHVyZVNldCBiYXNlU2V0OworICAgICAgICBS
ZWdpc3RlcmVkU3RydWN0dXJlU2V0IGJhc2VTZXQ7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IGRhdGEudmFyaWFudHMuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICBQdXRCeUlkVmFyaWFu
dCB2YXJpYW50ID0gZGF0YS52YXJpYW50c1tpXTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aiA9IHZhcmlhbnQub2xkU3RydWN0dXJlKCkuc2l6ZSgpOyBqLS07KSB7Ci0gICAgICAgICAgICAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2YXJpYW50Lm9sZFN0cnVjdHVyZSgpW2pdOworICAg
ICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdp
c3RlclN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpW2pdKTsKICAgICAgICAgICAgICAg
ICBiYXNlU2V0LmFkZChzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgICAgIGNhc2VzLmFwcGVuZChT
d2l0Y2hDYXNlKHdlYWtTdHJ1Y3R1cmVJRChzdHJ1Y3R1cmUpLCBibG9ja3NbaV0sIFdlaWdodCgx
KSkpOwogICAgICAgICAgICAgfQpAQCAtNTQxMyw3ICs1NDE0LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBBU1NFUlQodmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCktPnR5
cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdzKCkgPT0gdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKS0+dHlw
ZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHZhcmlh
bnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLT50eXBlSW5mbygpLnR5cGUoKSA9PSB2YXJp
YW50Lm5ld1N0cnVjdHVyZSgpLT50eXBlSW5mbygpLnR5cGUoKSk7CiAgICAgICAgICAgICAgICAg
bV9vdXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICAgICAgd2Vha1N0cnVjdHVyZUlEKHZhcmlh
bnQubmV3U3RydWN0dXJlKCkpLCBiYXNlLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCk7Cisg
ICAgICAgICAgICAgICAgICAgIHdlYWtTdHJ1Y3R1cmVJRChtX2dyYXBoLnJlZ2lzdGVyU3RydWN0
dXJlKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpKSwgYmFzZSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0
dXJlSUQpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CkBAIC03NzQ2LDExICs3NzQ3LDExIEBAIHByaXZhdGU6CiAgICAg
ICAgIExWYWx1ZSBpbmRleCA9IG1fb3V0LmJpdEFuZChtYXNrLCB1bm1hc2tlZEluZGV4KTsKICAg
ICAgICAgTFZhbHVlIGhhc2hNYXBCdWNrZXQgPSBtX291dC5sb2FkNjQobV9vdXQuYmFzZUluZGV4
KG1faGVhcHMucHJvcGVydGllcy5hdEFueU51bWJlcigpLCBidWZmZXIsIG1fb3V0Lnplcm9FeHQo
aW5kZXgsIEludDY0KSwgU2NhbGVFaWdodCkpOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBidWNr
ZXRSZXN1bHQgPSBtX291dC5hbmNob3IoaGFzaE1hcEJ1Y2tldCk7Ci0gICAgICAgIG1fb3V0LmJy
YW5jaChtX291dC5lcXVhbChoYXNoTWFwQnVja2V0LCBtX291dC5jb25zdEludFB0cihIYXNoTWFw
SW1wbDxIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46OmVtcHR5VmFsdWUoKSkp
LAorICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwoaGFzaE1hcEJ1Y2tldCwgbV9vdXQu
Y29uc3RJbnRQdHIoYml0d2lzZV9jYXN0PGludHB0cl90PihIYXNoTWFwSW1wbDxIYXNoTWFwQnVj
a2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46OmVtcHR5VmFsdWUoKSkpKSwKICAgICAgICAgICAg
IHVuc3VyZShub3RQcmVzZW50SW5UYWJsZSksIHVuc3VyZShub3RFbXB0eVZhbHVlKSk7CiAKICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8obm90RW1wdHlWYWx1ZSwgbm90RGVsZXRlZFZhbHVlKTsKLSAg
ICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKGhhc2hNYXBCdWNrZXQsIG1fb3V0LmNvbnN0
SW50UHRyKEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+Pjo6
ZGVsZXRlZFZhbHVlKCkpKSwKKyAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKGhhc2hN
YXBCdWNrZXQsIG1fb3V0LmNvbnN0SW50UHRyKGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oSGFzaE1h
cEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT4+OjpkZWxldGVkVmFsdWUo
KSkpKSwKICAgICAgICAgICAgIHVuc3VyZShsb29wQXJvdW5kKSwgdW5zdXJlKG5vdERlbGV0ZWRW
YWx1ZSkpOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdERlbGV0ZWRWYWx1ZSwgbG9vcEFy
b3VuZCk7CkBAIC04MjIyLDcgKzgyMjMsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21waWxl
T3ZlcnJpZGVzSGFzSW5zdGFuY2UoKQogICAgIHsKLSAgICAgICAgSlNGdW5jdGlvbiogZGVmYXVs
dEhhc0luc3RhbmNlRnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KG1fbm9kZS0+Y2VsbE9w
ZXJhbmQoKS0+dmFsdWUoKSk7CisgICAgICAgIEZyb3plblZhbHVlKiBkZWZhdWx0SGFzSW5zdGFu
Y2VGdW5jdGlvbiA9IG1fbm9kZS0+Y2VsbE9wZXJhbmQoKTsKKyAgICAgICAgQVNTRVJUKGRlZmF1
bHRIYXNJbnN0YW5jZUZ1bmN0aW9uLT5jZWxsKCktPmluaGVyaXRzKEpTRnVuY3Rpb246OmluZm8o
KSkpOwogCiAgICAgICAgIExWYWx1ZSBjb25zdHJ1Y3RvciA9IGxvd0NlbGwobV9ub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgIExWYWx1ZSBoYXNJbnN0YW5jZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5j
aGlsZDIoKSk7CkBAIC04MjMzLDcgKzgyMzUsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBVbmxp
a2UgaW4gdGhlIERGRywgd2UgZG9uJ3Qgd29ycnkgYWJvdXQgY2xlYW5pbmcgdGhpcyBjb2RlIHVw
IGZvciB0aGUgY2FzZSB3aGVyZSB3ZSBoYXZlIHByb3ZlbiB0aGUgaGFzSW5zdGFuY2VWYWx1ZSBp
cyBhIGNvbnN0YW50IGFzIEIzIHNob3VsZCBmaXggaXQgZm9yIHVzLgogCiAgICAgICAgIFZhbHVl
RnJvbUJsb2NrIG5vdERlZmF1bHRIYXNJbnN0YW5jZVJlc3VsdCA9IG1fb3V0LmFuY2hvcihtX291
dC5ib29sZWFuVHJ1ZSk7Ci0gICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5ub3RFcXVhbChoYXNJ
bnN0YW5jZSwgbV9vdXQuY29uc3RJbnRQdHIoZGVmYXVsdEhhc0luc3RhbmNlRnVuY3Rpb24pKSwg
dW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShkZWZhdWx0SGFzSW5zdGFuY2UpKTsKKyAgICAg
ICAgbV9vdXQuYnJhbmNoKG1fb3V0Lm5vdEVxdWFsKGhhc0luc3RhbmNlLCBmcm96ZW5Qb2ludGVy
KGRlZmF1bHRIYXNJbnN0YW5jZUZ1bmN0aW9uKSksIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1
cmUoZGVmYXVsdEhhc0luc3RhbmNlKSk7CiAKICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQg
PSBtX291dC5hcHBlbmRUbyhkZWZhdWx0SGFzSW5zdGFuY2UsIGNvbnRpbnVhdGlvbik7CiAgICAg
ICAgIFZhbHVlRnJvbUJsb2NrIGltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2VSZXN1bHQgPSBt
X291dC5hbmNob3IobV9vdXQudGVzdElzWmVybzMyKApAQCAtODU4MSw3ICs4NTgzLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgTFZhbHVlIHN0cnVjdHVyZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEo
KSk7CiAgICAgICAgIGNoZWNrU3RydWN0dXJlKAogICAgICAgICAgICAgc3RydWN0dXJlLCBub1Zh
bHVlKCksIEJhZENhY2hlLCBtX25vZGUtPnN0cnVjdHVyZVNldCgpLAotICAgICAgICAgICAgW3Ro
aXNdIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgeworICAgICAgICAgICAgW3RoaXNdIChSZWdpc3Rl
cmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgewogICAgICAgICAgICAgICAgIHJldHVybiB3ZWFrU3Ry
dWN0dXJlKHN0cnVjdHVyZSk7CiAgICAgICAgICAgICB9KTsKICAgICB9CkBAIC04NjA2LDcgKzg2
MDgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAotICAg
ICAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCA9IG1fbm9kZS0+c3RydWN0dXJlU2V0KCk7Cisg
ICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgc2V0ID0gbV9ub2RlLT5zdHJ1Y3R1cmVTZXQo
KTsKIAogICAgICAgICBWZWN0b3I8TEJhc2ljQmxvY2ssIDE+IGJsb2NrcyhzZXQuc2l6ZSgpKTsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gc2V0LnNpemUoKTsgaS0tOykKQEAgLTg2MTYsNyAr
ODYxOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBWZWN0b3I8U3dpdGNoQ2FzZSwg
MT4gY2FzZXMoc2V0LnNpemUoKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHNldC5zaXpl
KCk7IGktLTspCi0gICAgICAgICAgICBjYXNlc1tpXSA9IFN3aXRjaENhc2Uod2Vha1N0cnVjdHVy
ZShzZXRbaV0pLCBibG9ja3NbaV0sIFdlaWdodCgxKSk7CisgICAgICAgICAgICBjYXNlc1tpXSA9
IFN3aXRjaENhc2Uod2Vha1N0cnVjdHVyZShzZXQuYXQoaSkpLCBibG9ja3NbaV0sIFdlaWdodCgx
KSk7CiAgICAgICAgIG1fb3V0LnN3aXRjaEluc3RydWN0aW9uKAogICAgICAgICAgICAgbG93Q2Vs
bChtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCkpLCBjYXNlcywgZHVtbXlEZWZhdWx0LCBX
ZWlnaHQoMCkpOwogICAgICAgICAKQEAgLTg2MjcsNyArODYyOSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IHNldC5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIG1f
b3V0LmFwcGVuZFRvKGJsb2Nrc1tpXSwgaSArIDEgPCBzZXQuc2l6ZSgpID8gYmxvY2tzW2kgKyAx
XSA6IGR1bW15RGVmYXVsdCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gc2V0W2ldOworICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1
Y3R1cmUgPSBzZXQuYXQoaSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIExWYWx1ZSBvYmpl
Y3Q7CiAgICAgICAgICAgICBMVmFsdWUgYnV0dGVyZmx5OwpAQCAtODcwOSw3ICs4NzExLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIFs9XSAoY29uc3QgVmVjdG9yPExvY2F0
aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3Io
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld09iamVjdFdpdGhC
dXR0ZXJmbHlXaXRoSW5kZXhpbmdIZWFkZXJBbmRWZWN0b3JMZW5ndGgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KHN0cnVjdHVyZS5nZXQoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0
aW9uc1sxXS5kaXJlY3RHUFIoKSwgbG9jYXRpb25zWzJdLmRpcmVjdEdQUigpKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICB2ZWN0b3JMZW5ndGgs
IGJ1dHRlcmZseVZhbHVlKTsKQEAgLTg3MTgsNyArODcyMCw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgICAgICAgICBbPV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykg
LT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5LCBsb2NhdGlv
bnNbMF0uZGlyZWN0R1BSKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BS
KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoc3RydWN0dXJlLmdldCgpKSwgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICBidXR0ZXJm
bHlWYWx1ZSk7CiAgICAgICAgICAgICAgICAgfQpAQCAtODg5MSw3ICs4ODkzLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgTFZhbHVlIHNjb3BlID0gbG93Q2VsbChtX2dyYXBoLnZhckFyZ0NoaWxkKG1f
bm9kZSwgMSkpOwogICAgICAgICBTeW1ib2xUYWJsZSogdGFibGUgPSBtX25vZGUtPmNhc3RPcGVy
YW5kPFN5bWJvbFRhYmxlKj4oKTsKICAgICAgICAgQVNTRVJUKHRhYmxlID09IG1fZ3JhcGgudmFy
QXJnQ2hpbGQobV9ub2RlLCAwKS0+Y2FzdENvbnN0YW50PFN5bWJvbFRhYmxlKj4oKSk7Ci0gICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLT5hY3RpdmF0aW9uU3RydWN0dXJlKCk7CisgICAgICAgIFJlZ2lz
dGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFjdGl2YXRpb25T
dHJ1Y3R1cmUoKSk7CiAKICAgICAgICAgTEJhc2ljQmxvY2sgc2xvd1BhdGggPSBtX291dC5uZXdC
bG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9j
aygpOwpAQCAtODkxOCw3ICs4OTIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFs9XSAoY29u
c3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpH
ZW5lcmF0b3I+IHsKICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0
b3IoCiAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb25EaXJlY3Qs
IGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwKLSAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxw
ZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSwK
KyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVy
ZS5nZXQoKSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSwKICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhYmxlKSwKICAgICAgICAgICAgICAgICAgICAg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
KSk7CiAgICAgICAgICAgICB9LCBzY29wZSk7CkBAIC05MDQzLDExICs5MDQ1LDEyIEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGNvbXBpbGVOZXdSZWdleHAoKQogICAgIHsKLSAgICAgICAgUmVnRXhw
KiByZWdleHAgPSBtX25vZGUtPmNhc3RPcGVyYW5kPFJlZ0V4cCo+KCk7CisgICAgICAgIEZyb3pl
blZhbHVlKiByZWdleHAgPSBtX25vZGUtPmNlbGxPcGVyYW5kKCk7CisgICAgICAgIEFTU0VSVChy
ZWdleHAtPmNlbGwoKS0+aW5oZXJpdHMoUmVnRXhwOjppbmZvKCkpKTsKICAgICAgICAgTFZhbHVl
IHJlc3VsdCA9IHZtQ2FsbCgKICAgICAgICAgICAgIHBvaW50ZXJUeXBlKCksCiAgICAgICAgICAg
ICBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3UmVnZXhwKSwgbV9jYWxsRnJhbWUsCi0gICAg
ICAgICAgICBtX291dC5jb25zdEludFB0cihyZWdleHApKTsKKyAgICAgICAgICAgIGZyb3plblBv
aW50ZXIocmVnZXhwKSk7CiAgICAgICAgIAogICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAg
ICAgfQpAQCAtOTE0MCwxMCArOTE0MywxMiBAQCBwcml2YXRlOgogICAgICAgICBDYWxsU2l0ZUlu
ZGV4IGNhbGxTaXRlSW5kZXggPSBtX2Z0bFN0YXRlLmppdENvZGUtPmNvbW1vbi5hZGRDb2RlT3Jp
Z2luKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LnN0
b3JlUHRyKG1fY2FsbEZyYW1lLCBwYWNrZXQsIG1faGVhcHMuU2hhZG93Q2hpY2tlbl9QYWNrZXRf
ZnJhbWUpOwotICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5jb25zdEludFB0cihTaGFkb3dD
aGlja2VuOjpQYWNrZXQ6OnRhaWxNYXJrZXIoKSksIHBhY2tldCwgbV9oZWFwcy5TaGFkb3dDaGlj
a2VuX1BhY2tldF9jYWxsZWUpOworICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5jb25zdElu
dFB0cihiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KFNoYWRvd0NoaWNrZW46OlBhY2tldDo6dGFpbE1h
cmtlcigpKSksIHBhY2tldCwgbV9oZWFwcy5TaGFkb3dDaGlja2VuX1BhY2tldF9jYWxsZWUpOwog
ICAgICAgICBtX291dC5zdG9yZTY0KHRoaXNWYWx1ZSwgcGFja2V0LCBtX2hlYXBzLlNoYWRvd0No
aWNrZW5fUGFja2V0X3RoaXNWYWx1ZSk7CiAgICAgICAgIG1fb3V0LnN0b3JlUHRyKHNjb3BlLCBw
YWNrZXQsIG1faGVhcHMuU2hhZG93Q2hpY2tlbl9QYWNrZXRfc2NvcGUpOwotICAgICAgICBtX291
dC5zdG9yZVB0cihtX291dC5jb25zdEludFB0cihjb2RlQmxvY2soKSksIHBhY2tldCwgbV9oZWFw
cy5TaGFkb3dDaGlja2VuX1BhY2tldF9jb2RlQmxvY2spOworICAgICAgICAvLyBXZSBkb24ndCB3
YW50IHRoZSBDb2RlQmxvY2sgdG8gaGF2ZSBhIHdlYWsgcG9pbnRlciB0byBpdHNlbGYgYmVjYXVz
ZQorICAgICAgICAvLyB0aGF0IHdvdWxkIGNhdXNlIGl0IHRvIGFsd2F5cyBnZXQgY29sbGVjdGVk
LgorICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5jb25zdEludFB0cihiaXR3aXNlX2Nhc3Q8
aW50cHRyX3Q+KGNvZGVCbG9jaygpKSksIHBhY2tldCwgbV9oZWFwcy5TaGFkb3dDaGlja2VuX1Bh
Y2tldF9jb2RlQmxvY2spOwogICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIo
Y2FsbFNpdGVJbmRleC5iaXRzKCkpLCBwYWNrZXQsIG1faGVhcHMuU2hhZG93Q2hpY2tlbl9QYWNr
ZXRfY2FsbFNpdGVJbmRleCk7CiAgICAgfQogCkBAIC05MjM0LDcgKzkyMzksNyBAQCBwcml2YXRl
OgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiAgICAgdm9pZCBjaGVja1N0cnVjdHVy
ZSgKICAgICAgICAgTFZhbHVlIHN0cnVjdHVyZURpc2NyaW1pbmFudCwgY29uc3QgRm9ybWF0dGVk
VmFsdWUmIGZvcm1hdHRlZFZhbHVlLCBFeGl0S2luZCBleGl0S2luZCwKLSAgICAgICAgY29uc3Qg
U3RydWN0dXJlU2V0JiBzZXQsIGNvbnN0IEZ1bmN0b3ImIHdlYWtTdHJ1Y3R1cmVEaXNjcmltaW5h
bnQpCisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgc2V0LCBjb25zdCBGdW5jdG9yJiB3
ZWFrU3RydWN0dXJlRGlzY3JpbWluYW50KQogICAgIHsKICAgICAgICAgaWYgKHNldC5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgIHRlcm1pbmF0ZShleGl0S2luZCk7CkBAIC05MzY5LDE2ICs5Mzc0
LDE4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzcGVjdWxhdGUoQmFkVHlwZSwganNWYWx1ZVZh
bHVlKHZhbHVlKSwgZWRnZS5ub2RlKCksIGlzTm90U3ltYm9sKHZhbHVlLCBwcm92ZW5UeXBlKGVk
Z2UpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgY2FzZSBJbmZlcnJlZFR5cGU6
Ok9iamVjdFdpdGhTdHJ1Y3R1cmU6CisgICAgICAgIGNhc2UgSW5mZXJyZWRUeXBlOjpPYmplY3RX
aXRoU3RydWN0dXJlOiB7CisgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVy
ZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodHlwZS5zdHJ1Y3R1cmUoKSk7CiAgICAgICAg
ICAgICBzcGVjdWxhdGUoQmFkVHlwZSwganNWYWx1ZVZhbHVlKHZhbHVlKSwgZWRnZS5ub2RlKCks
IGlzTm90Q2VsbCh2YWx1ZSwgcHJvdmVuVHlwZShlZGdlKSkpOwotICAgICAgICAgICAgaWYgKCFh
YnN0cmFjdFZhbHVlKGVkZ2UpLm1fc3RydWN0dXJlLmlzU3Vic2V0T2YoU3RydWN0dXJlU2V0KHR5
cGUuc3RydWN0dXJlKCkpKSkgeworICAgICAgICAgICAgaWYgKCFhYnN0cmFjdFZhbHVlKGVkZ2Up
Lm1fc3RydWN0dXJlLmlzU3Vic2V0T2YoUmVnaXN0ZXJlZFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUp
KSkgewogICAgICAgICAgICAgICAgIHNwZWN1bGF0ZSgKICAgICAgICAgICAgICAgICAgICAgQmFk
VHlwZSwganNWYWx1ZVZhbHVlKHZhbHVlKSwgZWRnZS5ub2RlKCksCiAgICAgICAgICAgICAgICAg
ICAgIG1fb3V0Lm5vdEVxdWFsKAogICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMy
KHZhbHVlLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICB3ZWFrU3RydWN0dXJlSUQodHlwZS5zdHJ1Y3R1cmUoKSkpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHdlYWtTdHJ1Y3R1cmVJRChzdHJ1Y3R1cmUpKSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAogICAgICAgICBjYXNlIEluZmVycmVkVHlw
ZTo6T2JqZWN0V2l0aFN0cnVjdHVyZU9yT3RoZXI6IHsKICAgICAgICAgICAgIExCYXNpY0Jsb2Nr
IGNlbGxDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKQEAgLTkzODksMTIgKzkzOTYsMTMgQEAgcHJp
dmF0ZToKIAogICAgICAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRU
byhjZWxsQ2FzZSwgbm90Q2VsbENhc2UpOwogCi0gICAgICAgICAgICBpZiAoIWFic3RyYWN0VmFs
dWUoZWRnZSkubV9zdHJ1Y3R1cmUuaXNTdWJzZXRPZihTdHJ1Y3R1cmVTZXQodHlwZS5zdHJ1Y3R1
cmUoKSkpKSB7CisgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1f
Z3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodHlwZS5zdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICBp
ZiAoIWFic3RyYWN0VmFsdWUoZWRnZSkubV9zdHJ1Y3R1cmUuaXNTdWJzZXRPZihSZWdpc3RlcmVk
U3RydWN0dXJlU2V0KHN0cnVjdHVyZSkpKSB7CiAgICAgICAgICAgICAgICAgc3BlY3VsYXRlKAog
ICAgICAgICAgICAgICAgICAgICBCYWRUeXBlLCBqc1ZhbHVlVmFsdWUodmFsdWUpLCBlZGdlLm5v
ZGUoKSwKICAgICAgICAgICAgICAgICAgICAgbV9vdXQubm90RXF1YWwoCiAgICAgICAgICAgICAg
ICAgICAgICAgICBtX291dC5sb2FkMzIodmFsdWUsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlE
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHdlYWtTdHJ1Y3R1cmVJRCh0eXBlLnN0cnVjdHVy
ZSgpKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgd2Vha1N0cnVjdHVyZUlEKHN0cnVjdHVy
ZSkpKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOwpAQCAtMTA0OTMsOSArMTA1MDEsOSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KIAotICAgIExWYWx1ZSBhbGxvY2F0ZU9iamVjdChMVmFsdWUgYWxsb2NhdG9y
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTFZhbHVlIGJ1dHRlcmZseSwgTEJhc2ljQmxvY2sgc2xv
d1BhdGgpCisgICAgTFZhbHVlIGFsbG9jYXRlT2JqZWN0KExWYWx1ZSBhbGxvY2F0b3IsIFJlZ2lz
dGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCBMVmFsdWUgYnV0dGVyZmx5LCBMQmFzaWNCbG9jayBz
bG93UGF0aCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhbGxvY2F0ZU9iamVjdChhbGxvY2F0b3Is
IG1fb3V0LmNvbnN0SW50UHRyKHN0cnVjdHVyZSksIGJ1dHRlcmZseSwgc2xvd1BhdGgpOworICAg
ICAgICByZXR1cm4gYWxsb2NhdGVPYmplY3QoYWxsb2NhdG9yLCB3ZWFrU3RydWN0dXJlKHN0cnVj
dHVyZSksIGJ1dHRlcmZseSwgc2xvd1BhdGgpOwogICAgIH0KIAogICAgIExWYWx1ZSBhbGxvY2F0
ZU9iamVjdChMVmFsdWUgYWxsb2NhdG9yLCBMVmFsdWUgc3RydWN0dXJlLCBMVmFsdWUgYnV0dGVy
Zmx5LCBMQmFzaWNCbG9jayBzbG93UGF0aCkKQEAgLTEwNTg5LDcgKzEwNTk3LDcgQEAgcHJpdmF0
ZToKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDbGFzc1R5cGU+CiAgICAgTFZhbHVlIGFs
bG9jYXRlVmFyaWFibGVTaXplZE9iamVjdCgKLSAgICAgICAgTFZhbHVlIHNpemUsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBMVmFsdWUgYnV0dGVyZmx5LCBMQmFzaWNCbG9jayBzbG93UGF0aCkKKyAg
ICAgICAgTFZhbHVlIHNpemUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCBMVmFsdWUg
YnV0dGVyZmx5LCBMQmFzaWNCbG9jayBzbG93UGF0aCkKICAgICB7CiAgICAgICAgIExWYWx1ZSBh
bGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JTaXplKAogICAgICAgICAgICAgKnN1YnNwYWNlRm9yPENs
YXNzVHlwZT4odm0oKSksIHNpemUsIHNsb3dQYXRoKTsKQEAgLTEwNjA1LDkgKzEwNjEzLDkgQEAg
cHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGFsbG9jYXRlQ2VsbChhbGxvY2F0b3IsIHN0cnVjdHVy
ZSwgc2xvd1BhdGgpOwogICAgIH0KICAgICAKLSAgICBMVmFsdWUgYWxsb2NhdGVPYmplY3QoU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgTFZhbHVlIGFsbG9jYXRlT2JqZWN0KFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAgc2l6ZV90IGFsbG9jYXRpb25TaXpl
ID0gSlNGaW5hbE9iamVjdDo6YWxsb2NhdGlvblNpemUoc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0
eSgpKTsKKyAgICAgICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0gSlNGaW5hbE9iamVjdDo6YWxs
b2NhdGlvblNpemUoc3RydWN0dXJlLmdldCgpLT5pbmxpbmVDYXBhY2l0eSgpKTsKICAgICAgICAg
TWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSBzdWJzcGFjZUZvcjxKU0ZpbmFsT2JqZWN0Pih2
bSgpKS0+YWxsb2NhdG9yRm9yKGFsbG9jYXRpb25TaXplKTsKICAgICAgICAgCiAgICAgICAgIC8v
IEZJWE1FOiBJZiB0aGUgYWxsb2NhdG9yIGlzIG51bGwsIHdlIGNvdWxkIHNpbXBseSBlbWl0IGEg
bm9ybWFsIEMgY2FsbCB0byB0aGUgYWxsb2NhdG9yCkBAIC0xMDYzMCw3ICsxMDYzOCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBbPV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9u
cykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKAogICAgICAgICAgICAgICAgICAgICBvcGVy
YXRpb25OZXdPYmplY3QsIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwKLSAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOworICAgICAgICAg
ICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlLmdldCgpKSk7
CiAgICAgICAgICAgICB9KTsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1f
b3V0LmFuY2hvcihzbG93UmVzdWx0VmFsdWUpOwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVh
dGlvbik7CkBAIC0xMDczMyw4ICsxMDc0MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAg
ICBtX291dC5hcHBlbmRUbyhsYXJnZUNhc2UsIGZhaWxDYXNlKTsKICAgICAgICAgVmFsdWVGcm9t
QmxvY2sgbGFyZ2VTdHJ1Y3R1cmUgPSBtX291dC5hbmNob3IoCi0gICAgICAgICAgICBtX291dC5j
b25zdEludFB0cigKLSAgICAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJl
Rm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2UpKSk7
CisgICAgICAgICAgICB3ZWFrU3RydWN0dXJlKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xv
YmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24o
QXJyYXlXaXRoQXJyYXlTdG9yYWdlKSkpKTsKICAgICAgICAgbV9vdXQuanVtcChzbG93Q2FzZSk7
CiAgICAgICAgIAogICAgICAgICBtX291dC5hcHBlbmRUbyhmYWlsQ2FzZSwgc2xvd0Nhc2UpOwpA
QCAtMTA3NjMsMTIgKzEwNzcwLDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX291dC5waGko
cG9pbnRlclR5cGUoKSwgZmFzdEJ1dHRlcmZseSwgc2xvd0J1dHRlcmZseSkpOwogICAgIH0KICAg
ICAKLSAgICBBcnJheVZhbHVlcyBhbGxvY2F0ZVVuaW5pdGlhbGl6ZWRDb250aWd1b3VzSlNBcnJh
eShMVmFsdWUgcHVibGljTGVuZ3RoLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICBBcnJheVZh
bHVlcyBhbGxvY2F0ZVVuaW5pdGlhbGl6ZWRDb250aWd1b3VzSlNBcnJheShMVmFsdWUgcHVibGlj
TGVuZ3RoLCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAgIGJv
b2wgc2hvdWxkSW5pdGlhbGl6ZUVsZW1lbnRzID0gZmFsc2U7CiAgICAgICAgIGJvb2wgc2hvdWxk
TGFyZ2VBcnJheVNpemVDcmVhdGVBcnJheVN0b3JhZ2UgPSBmYWxzZTsKICAgICAgICAgcmV0dXJu
IGFsbG9jYXRlSlNBcnJheSgKLSAgICAgICAgICAgIHB1YmxpY0xlbmd0aCwgbV9vdXQuY29uc3RJ
bnRQdHIoc3RydWN0dXJlKSwgbV9vdXQuY29uc3RJbnQzMihzdHJ1Y3R1cmUtPmluZGV4aW5nVHlw
ZSgpKSwgc2hvdWxkSW5pdGlhbGl6ZUVsZW1lbnRzLAorICAgICAgICAgICAgcHVibGljTGVuZ3Ro
LCB3ZWFrU3RydWN0dXJlKHN0cnVjdHVyZSksIG1fb3V0LmNvbnN0SW50MzIoc3RydWN0dXJlLT5p
bmRleGluZ1R5cGUoKSksIHNob3VsZEluaXRpYWxpemVFbGVtZW50cywKICAgICAgICAgICAgIHNo
b3VsZExhcmdlQXJyYXlTaXplQ3JlYXRlQXJyYXlTdG9yYWdlKTsKICAgICB9CiAgICAgCkBAIC0x
MDkxMCw3ICsxMDkxNyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5k
VG8obWFzcXVlcmFkZXNDYXNlKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBp
c1RydXRoeU9iamVjdCA9IG1fb3V0Lm5vdEVxdWFsKAotICAgICAgICAgICAgICAgICAgICBtX291
dC5jb25zdEludFB0cihtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1h
bnRpYykpLAorICAgICAgICAgICAgICAgICAgICB3ZWFrUG9pbnRlcihtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykpLAogICAgICAgICAgICAgICAgICAgICBt
X291dC5sb2FkUHRyKGxvYWRTdHJ1Y3R1cmUodmFsdWUpLCBtX2hlYXBzLlN0cnVjdHVyZV9nbG9i
YWxPYmplY3QpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKG1f
b3V0LmFuY2hvcihpc1RydXRoeU9iamVjdCkpOwpAQCAtMTEwMDksNyArMTEwMTYsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgCiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNo
b3IoCiAgICAgICAgICAgICAgICAgbV9vdXQuZXF1YWwoCi0gICAgICAgICAgICAgICAgICAgIG1f
b3V0LmNvbnN0SW50UHRyKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljKSksCisgICAgICAgICAgICAgICAgICAgIHdlYWtQb2ludGVyKG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSksCiAgICAgICAgICAgICAgICAgICAg
IG1fb3V0LmxvYWRQdHIoc3RydWN0dXJlLCBtX2hlYXBzLlN0cnVjdHVyZV9nbG9iYWxPYmplY3Qp
KSkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICB9CkBA
IC0xMTkzMSwxMiArMTE5MzgsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgREZHX0FTU0VSVChtX2dy
YXBoLCBtX25vZGUsIG1vZGUgPT0gTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uIHx8IERGRzo6aXND
ZWxsKGVkZ2UudXNlS2luZCgpKSk7CiAgICAgICAgIAogICAgICAgICBpZiAoZWRnZS0+b3AoKSA9
PSBKU0NvbnN0YW50KSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZWRnZS0+YXNKU1Zh
bHVlKCk7Ci0gICAgICAgICAgICBpZiAoIXZhbHVlLmlzQ2VsbCgpKSB7CisgICAgICAgICAgICBG
cm96ZW5WYWx1ZSogdmFsdWUgPSBlZGdlLT5jb25zdGFudCgpOworICAgICAgICAgICAgaWYgKCF2
YWx1ZS0+dmFsdWUoKS5pc0NlbGwoKSkgewogICAgICAgICAgICAgICAgIHRlcm1pbmF0ZShVbmNv
dW50YWJsZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmludFB0clplcm87CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gbV9vdXQuY29uc3RJbnRQdHIodmFsdWUuYXND
ZWxsKCkpOworICAgICAgICAgICAgcmV0dXJuIGZyb3plblBvaW50ZXIodmFsdWUpOwogICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICBMb3dlcmVkTm9kZVZhbHVlIHZhbHVlID0gbV9qc1ZhbHVl
VmFsdWVzLmdldChlZGdlLm5vZGUoKSk7CkBAIC0xMjkwMSwxMCArMTI5MDgsMTAgQEAgcHJpdmF0
ZToKICAgICAKICAgICB2b2lkIHNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZUlEKEVk
Z2UgZWRnZSwgTFZhbHVlIHN0cnVjdHVyZUlEKQogICAgIHsKLSAgICAgICAgU3RydWN0dXJlKiBz
dHJpbmdPYmplY3RTdHJ1Y3R1cmUgPQotICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKTsKLSAg
ICAgICAgCi0gICAgICAgIGlmIChhYnN0cmFjdFN0cnVjdHVyZShlZGdlKS5pc1N1YnNldE9mKFN0
cnVjdHVyZVNldChzdHJpbmdPYmplY3RTdHJ1Y3R1cmUpKSkKKyAgICAgICAgUmVnaXN0ZXJlZFN0
cnVjdHVyZSBzdHJpbmdPYmplY3RTdHJ1Y3R1cmUgPQorICAgICAgICAgICAgbV9ncmFwaC5yZWdp
c3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1h
bnRpYyktPnN0cmluZ09iamVjdFN0cnVjdHVyZSgpKTsKKworICAgICAgICBpZiAoYWJzdHJhY3RT
dHJ1Y3R1cmUoZWRnZSkuaXNTdWJzZXRPZihSZWdpc3RlcmVkU3RydWN0dXJlU2V0KHN0cmluZ09i
amVjdFN0cnVjdHVyZSkpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICAgICAg
c3BlY3VsYXRlKApAQCAtMTM2ODksMTkgKzEzNjk2LDMwIEBAIHByaXZhdGU6CiAKICAgICBMVmFs
dWUgd2Vha1BvaW50ZXIoSlNDZWxsKiBwb2ludGVyKQogICAgIHsKKyAgICAgICAgLy8gVGhlcmUg
YXJlIHdlaXJkIHJlbGF0aW9uc2hpcHMgaW4gaG93IG9wdGltaXplZCBDb2RlQmxvY2tzCisgICAg
ICAgIC8vIHBvaW50IHRvIG90aGVyIENvZGVCbG9ja3MuIFdlIGRvbid0IHdhbnQgdG8gaGF2ZSB0
aGVtIGJlCisgICAgICAgIC8vIHBhcnQgb2YgdGhlIHdlYWsgcG9pbnRlciBzZXQuIEZvciBleGFt
cGxlLCBhbiBvcHRpbWl6ZWQgQ29kZUJsb2NrCisgICAgICAgIC8vIGhhdmluZyBhIHdlYWsgcG9p
bnRlciB0byBpdHNlbGYgd2lsbCBjYXVzZSBpdCB0byBnZXQgY29sbGVjdGVkLgorICAgICAgICBS
RUxFQVNFX0FTU0VSVCghanNEeW5hbWljQ2FzdDxDb2RlQmxvY2sqPihwb2ludGVyKSk7CisKICAg
ICAgICAgYWRkV2Vha1JlZmVyZW5jZShwb2ludGVyKTsKLSAgICAgICAgcmV0dXJuIG1fb3V0LmNv
bnN0SW50UHRyKHBvaW50ZXIpOworICAgICAgICByZXR1cm4gbV9vdXQud2Vha1BvaW50ZXIobV9n
cmFwaCwgcG9pbnRlcik7CisgICAgfQorCisgICAgTFZhbHVlIGZyb3plblBvaW50ZXIoRnJvemVu
VmFsdWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3V0LndlYWtQb2ludGVyKHZh
bHVlKTsKICAgICB9CiAKLSAgICBMVmFsdWUgd2Vha1N0cnVjdHVyZUlEKFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQorICAgIExWYWx1ZSB3ZWFrU3RydWN0dXJlSUQoUmVnaXN0ZXJlZFN0cnVjdHVyZSBz
dHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBhZGRXZWFrUmVmZXJlbmNlKHN0cnVjdHVyZSk7CiAg
ICAgICAgIHJldHVybiBtX291dC5jb25zdEludDMyKHN0cnVjdHVyZS0+aWQoKSk7CiAgICAgfQog
ICAgIAotICAgIExWYWx1ZSB3ZWFrU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAg
IExWYWx1ZSB3ZWFrU3RydWN0dXJlKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIHdlYWtQb2ludGVyKHN0cnVjdHVyZSk7CisgICAgICAgIEFTU0VS
VCghIXN0cnVjdHVyZS5nZXQoKSk7CisgICAgICAgIHJldHVybiBtX291dC53ZWFrUG9pbnRlciht
X2dyYXBoLCBzdHJ1Y3R1cmUuZ2V0KCkpOwogICAgIH0KICAgICAKICAgICBUeXBlZFBvaW50ZXIg
YWRkcmVzc0ZvcihMVmFsdWUgYmFzZSwgaW50IG9wZXJhbmQsIHB0cmRpZmZfdCBvZmZzZXQgPSAw
KQpAQCAtMTM4MDksNyArMTM4MjcsOSBAQCBwcml2YXRlOgogICAgICAgICBtX291dC5jYWxsKAog
ICAgICAgICAgICAgVm9pZCwKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKGZ0bFVucmVh
Y2hhYmxlKSwKLSAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKGNvZGVCbG9jaygpKSwgbV9v
dXQuY29uc3RJbnQzMihibG9ja0luZGV4KSwKKyAgICAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQg
dGhlIENvZGVCbG9jayB0byBoYXZlIGEgd2VhayBwb2ludGVyIHRvIGl0c2VsZiBiZWNhdXNlCisg
ICAgICAgICAgICAvLyB0aGF0IHdvdWxkIGNhdXNlIGl0IHRvIGFsd2F5cyBnZXQgY29sbGVjdGVk
LgorICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoYml0d2lzZV9jYXN0PGludHB0cl90Pihj
b2RlQmxvY2soKSkpLCBtX291dC5jb25zdEludDMyKGJsb2NrSW5kZXgpLAogICAgICAgICAgICAg
bV9vdXQuY29uc3RJbnQzMihub2RlSW5kZXgpKTsKICNlbmRpZgogICAgICAgICBtX291dC51bnJl
YWNoYWJsZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCShyZXZp
c2lvbiAyMTEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiRlRMVmFsdWVGcm9tQmxv
Y2suaCIKICNpbmNsdWRlICJGVExXZWlnaHQuaCIKICNpbmNsdWRlICJGVExXZWlnaHRlZFRhcmdl
dC5oIgorI2luY2x1ZGUgIkhlYXBDZWxsLmgiCiAjaW5jbHVkZSA8d3RmL09yZGVyTWFrZXIuaD4K
ICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KIApAQCAtMTA0LDkgKzEwNSwyOSBA
QCBwdWJsaWM6CiAKICAgICBMVmFsdWUgY29uc3RCb29sKGJvb2wgdmFsdWUpOwogICAgIExWYWx1
ZSBjb25zdEludDMyKGludDMyX3QgdmFsdWUpOworCisgICAgTFZhbHVlIHdlYWtQb2ludGVyKERG
Rzo6R3JhcGgmIGdyYXBoLCBKU0NlbGwqIGNlbGwpCisgICAgeworICAgICAgICBBU1NFUlQoZ3Jh
cGgubV9wbGFuLndlYWtSZWZlcmVuY2VzLmNvbnRhaW5zKGNlbGwpKTsKKworICAgICAgICBpZiAo
c2l6ZW9mKHZvaWQqKSA9PSA4KQorICAgICAgICAgICAgcmV0dXJuIGNvbnN0SW50NjQoYml0d2lz
ZV9jYXN0PGludHB0cl90PihjZWxsKSk7CisgICAgICAgIHJldHVybiBjb25zdEludDMyKGJpdHdp
c2VfY2FzdDxpbnRwdHJfdD4oY2VsbCkpOworICAgIH0KKworICAgIExWYWx1ZSB3ZWFrUG9pbnRl
cihERkc6OkZyb3plblZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
KHZhbHVlLT52YWx1ZSgpLmlzQ2VsbCgpKTsKKworICAgICAgICBpZiAoc2l6ZW9mKHZvaWQqKSA9
PSA4KQorICAgICAgICAgICAgcmV0dXJuIGNvbnN0SW50NjQoYml0d2lzZV9jYXN0PGludHB0cl90
Pih2YWx1ZS0+Y2VsbCgpKSk7CisgICAgICAgIHJldHVybiBjb25zdEludDMyKGJpdHdpc2VfY2Fz
dDxpbnRwdHJfdD4odmFsdWUtPmNlbGwoKSkpOworICAgIH0KKwogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+CiAgICAgTFZhbHVlIGNvbnN0SW50UHRyKFQqIHZhbHVlKQogICAgIHsKKyAgICAgICAg
c3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPEhlYXBDZWxsLCBUPjo6dmFsdWUsICJUbyB1
c2UgYSBHQyBwb2ludGVyLCB0aGUgZ3JhcGggbXVzdCBiZSBhd2FyZSBvZiBpdC4gVXNlIGdjUG9p
bnRlciBpbnN0ZWFkIGFuZCBtYWtlIHN1cmUgdGhlIGdyYXBoIGlzIGF3YXJlIG9mIHRoaXMgcmVm
ZXJlbmNlLiIpOwogICAgICAgICBpZiAoc2l6ZW9mKHZvaWQqKSA9PSA4KQogICAgICAgICAgICAg
cmV0dXJuIGNvbnN0SW50NjQoYml0d2lzZV9jYXN0PGludHB0cl90Pih2YWx1ZSkpOwogICAgICAg
ICByZXR1cm4gY29uc3RJbnQzMihiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KHZhbHVlKSk7CkluZGV4
OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjExMjI5KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyNSBAQAorMjAxNy0wMS0yNiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFw
cGxlLmNvbT4KKworICAgICAgICBIYXJkZW4gaG93IHRoZSBjb21waWxlciByZWZlcmVuY2VzIEdD
IG9iamVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NzI3NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzAxNzk1MDY+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRmlsaXAgUGl6bG8uCisKKyAgICAgICAgSSBtYWRlIFRpbnlQdHJTZXQgdXNlIGJp
dHdpc2VfY2FzdCBpbnN0ZWFkIG9mIHN0YXRpY19jYXN0CisgICAgICAgIGZvciBpdHMgc2luZ2xl
RW50cnkoKSBmdW5jdGlvbiBzbyB0aGF0IGl0IGNhbiB3b3JrIG9uIHBvaW50ZXItbGlrZQorICAg
ICAgICB0eXBlcyBqdXN0IGFzIGl0IGNhbiBvbiBhY3R1YWwgcG9pbnRlciB0eXBlcy4KKyAgICAg
ICAgCisgICAgICAgIEFuIGV4YW1wbGUgb2Ygd2hlcmUgdGhpcyBtYXR0ZXJzIGlzIHdoZW4geW91
IGhhdmUgVGlueVB0clNldDxUPgorICAgICAgICB3aGVyZSBUIGlzIGRlZmluZWQgdG8gYmUgYSBz
dHJ1Y3Qgd2hpY2ggd3JhcHMgYSBwb2ludGVyLCBlLmc6CisgICAgICAgIAorICAgICAgICBzdHJ1
Y3QgVCB7CisgICAgICAgICAgICB2b2lkKiBtX3BvaW50ZXI7CisgICAgICAgIH0KKworICAgICAg
ICAqIHd0Zi9UaW55UHRyU2V0Lmg6CisgICAgICAgIChXVEY6OlRpbnlQdHJTZXQ6OnNpbmdsZUVu
dHJ5KToKKwogMjAxNy0wMS0yNSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNv
bT4KIAogICAgICAgICBJbnRyb2R1Y2UgYW4gaXRlbS1wcm92aWRlci1iYXNlZCBwYXN0ZWJvYXJk
IHdyYXBwZXIKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1RpbnlQdHJTZXQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi9UaW55UHRyU2V0LmgJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJj
ZS9XVEYvd3RmL1RpbnlQdHJTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCBu
YW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNsYXNzIFRpbnlQdHJTZXQg
eworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFQpID09IHNpemVvZih2b2lkKiksICJJdCdzIGlu
IHRoZSB0aXRsZSBvZiB0aGUgY2xhc3MuIik7CiBwdWJsaWM6CiAgICAgVGlueVB0clNldCgpCiAg
ICAgICAgIDogbV9wb2ludGVyKDApCkBAIC00NzUsNyArNDc2LDcgQEAgcHJpdmF0ZToKICAgICBU
IHNpbmdsZUVudHJ5KCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChpc1RoaW4oKSk7Ci0g
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPihwb2ludGVyKCkpOworICAgICAgICByZXR1cm4g
Yml0d2lzZV9jYXN0PFQ+KHBvaW50ZXIoKSk7CiAgICAgfQogICAgIAogICAgIE91dE9mTGluZUxp
c3QqIGxpc3QoKSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299851</attachid>
            <date>2017-01-26 14:14:19 -0800</date>
            <delta_ts>2017-01-26 14:16:34 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>253870</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjExMjMwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4NCBA
QAorMjAxNy0wMS0yNiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBIYXJkZW4gaG93IHRoZSBjb21waWxlciByZWZlcmVuY2VzIEdDIG9iamVjdHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NzI3NworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzAxNzk1MDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAgUGl6
bG8uCisKKyAgICAgICAgU2luY2UgcjIxMDk3MSwgdGhlIERGRy9GVEwgd2lsbCBmbGFzaCBzYWZl
cG9pbnRzIGJlZm9yZQorICAgICAgICBlYWNoIHBoYXNlLiBUaGlzIG1lYW5zIHRoYXQgdGhlcmUg
YXJlIG1vcmUgb3Bwb3J0dW5pdGllcyBmb3IKKyAgICAgICAgYSBHQyB0byBoYXBwZW4gd2hpbGUg
dGhlIGNvbXBpbGVyIGlzIHJ1bm5pbmcuIEJlY2F1c2Ugb2YgdGhpcywKKyAgICAgICAgdGhlIGNv
bXBpbGVyIG11c3QgYmUgdHJhY2sgb2YgYWxsIHRoZSBoZWFwIHBvaW50ZXJzIHRoYXQgYXJlIHBh
cnQKKyAgICAgICAgb2YgdGhlIEdyYXBoIGRhdGEgc3RydWN0dXJlLiBUbyBhY2NvbXBsaXNoIHRo
aXMsIEkndmUgZGVzaWduZWQKKyAgICAgICAgYSBuZXcgdHlwZSBjYWxsZWQgUmVnaXN0ZXJlZFN0
cnVjdHVyZSB0aGF0IGNhbiBvbmx5IGJlIGNvbnN0cnVjdGVkCisgICAgICAgIGFmdGVyIHRoZSBH
cmFwaCBiZWNvbWVzIGF3YXJlIG9mIGl0cyB1bmRlcmx5aW5nIFN0cnVjdHVyZSouIEkKKyAgICAg
ICAgZGVzaWduZWQgdGhpcyBuZXcgdHlwZSB0byBoYXZlIHRoZSB0eXBlIHN5c3RlbSBpbiBDKysg
aGVscCB1cyBjYXRjaAorICAgICAgICBlcnJvcnMgd2hlcmUgd2UncmUgbm90IGluZm9ybWluZyB0
aGUgZ3JhcGgvcGxhbiBvZiBhIGhlYXAgcG9pbnRlci4KKyAgICAgICAgSSd2ZSBtYWRlIGl0IGEg
Y29tcGlsZSBlcnJvciB0byBjcmVhdGUgYW4gT3BJbmZvIHdpdGggYSBwb2ludGVyCisgICAgICAg
IFQqIHdoZXJlIFQgaW5oZXJpdHMgZnJvbSBIZWFwQ2VsbC4gVGhpcyBlbmNvdXJhZ2VzIGFuIE9w
SW5mbworICAgICAgICB0byBiZSBjcmVhdGVkIHdpdGggZWl0aGVyIGEgRnJvemVuVmFsdWUqIG9y
IGEgUmVnaXN0ZXJlZFN0cnVjdHVyZS4KKyAgICAgICAgSSd2ZSBhZGRlZCBzaW1pbGFyIGNvbXBp
bGUgdGltZSBhc3NlcnRpb25zIGZvciBUcnVzdGVkSW1tUHRyIGluIERGRzo6U3BlY3VsYXRpdmVK
SVQKKyAgICAgICAgYW5kIEZUTDo6T3V0cHV0Ojpjb25zdEludFB0ci4gVGhlc2Ugc3RhdGljIGFz
c2VydHMgZG9uJ3Qgc2F2ZSB1cyBmcm9tIGFsbCBiYWQKKyAgICAgICAgcHJvZ3JhbXMgYmVjYXVz
ZSB0aGVyZSBhcmUgd2F5cyB0byB3cml0ZSBjb2RlIHRoYXQncyBpbmNvcnJlY3QgdGhhdCBjb21w
aWxlcywKKyAgICAgICAgYnV0IHRoZSBuZXcgdHlwZXMgZG8gaGVscCB1cyBlbnN1cmUgdGhhdCB0
aGUgbW9zdCBvYnZpb3VzIHdheSBvZiB3cml0aW5nIHRoZQorICAgICAgICBjb2RlIGlzIGNvcnJl
Y3QuCisgICAgICAgIAorICAgICAgICBUaGUgcmVhc29uIHRoaXMgcGF0Y2ggaXMgc28gYmlnIGlz
IHRoYXQgSSd2ZSBzdHJ1bmcgUmVnaXN0ZXJlZFN0cnVjdHVyZSBhbmQKKyAgICAgICAgUmVnaXN0
ZXJlZFN0cnVjdHVyZVNldCB0aHJvdWdoIHRoZSBlbnRpcmUgREZHL0ZUTC4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpkZXRlcm1pbmVMaXZlbmVzcyk6CisgICAgICAgICogYnl0ZWNvZGUv
U3RydWN0dXJlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2V0OjpmaWx0ZXIpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTZXQ6OmZpbHRlckFycmF5TW9kZXMpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTZXQ6OnNwZWN1bGF0aW9uRnJvbVN0cnVj
dHVyZXMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTZXQ6OmFycmF5TW9kZXNG
cm9tU3RydWN0dXJlcyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlN0cnVjdHVyZVNldDo6dmFs
aWRhdGVSZWZlcmVuY2VzKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVT
ZXQuaDoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI6OmZpbHRlcik6CisgICAgICAgICogZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmJvb2xlYW5SZXN1bHQpOgorICAgICAg
ICAoSlNDOjpERkc6OmlzVG9UaGlzQW5JZGVudGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAg
ICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
b2JzZXJ2ZVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpmaWx0ZXIpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFj
dFZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpzZXQpOgorICAg
ICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OnNldFR5cGUpOgorICAgICAgICAoSlNDOjpE
Rkc6OkFic3RyYWN0VmFsdWU6Om1lcmdlT1NSRW50cnlWYWx1ZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6QWJzdHJhY3RWYWx1ZTo6ZmlsdGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZh
bHVlOjpjaGFuZ2VTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6
OmNvbnRhaW5zKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RWYWx1ZS5oOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0VmFsdWU6Om9ic2VydmVUcmFuc2l0aW9uKToKKyAgICAgICAgKEpT
Qzo6REZHOjpBYnN0cmFjdFZhbHVlOjpUcmFuc2l0aW9uT2JzZXJ2ZXI6OlRyYW5zaXRpb25PYnNl
cnZlcik6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdBcnJheU1vZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5
TW9kZTo6YWxyZWFkeUNoZWNrZWQpOgorICAgICAgICAqIGRmZy9ERkdBcnJheWlmeVNsb3dQYXRo
R2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlpZnlTbG93UGF0aEdlbmVyYXRv
cjo6QXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvcik6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29u
c3RhbnRJbnRlcm5hbEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6bG9hZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5
SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKToK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNr
RW50cnkpOgorICAgICAgICAqIGRmZy9ERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpERkc6OkNhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2Vu
ZXJhdG9yOjpDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvcik6CisgICAgICAgIChK
U0M6OkRGRzo6Q2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJh
dG9yOjpDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3Ip
OgorICAgICAgICAqIGRmZy9ERkdDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xvd1BhdGhHZW5l
cmF0b3IuaDoKKyAgICAgICAgKEpTQzo6REZHOjpDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xv
d1BhdGhHZW5lcmF0b3I6OkNhbGxDcmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRv
cik6CisgICAgICAgICogZGZnL0RGR0NvbW1vbkRhdGEuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkNvbW1vbkRhdGE6Om5vdGlmeUNvbXBpbGluZ1N0cnVjdHVyZVRyYW5zaXRpb24pOgorICAgICAg
ICAqIGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAgICAgICAoSlNDOjpERkc6
OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjplbWl0R2V0QnlPZmZzZXQpOgorICAgICAgICAoSlNDOjpE
Rkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjplbWl0UHV0QnlPZmZzZXQpOgorICAgICAgICAoSlND
OjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjphZGRCYXNlQ2hlY2spOgorICAgICAgICAoSlND
OjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjphZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2sp
OgorICAgICAgICAqIGRmZy9ERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkRlc2lyZWRXZWFrUmVmZXJlbmNlczo6cmVhbGx5QWRkKToKKyAgICAgICAgKiBk
ZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Y2hl
Y2tBcnJheSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpHcmFwaDo6R3JhcGgpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpkdW1wKToKKyAgICAg
ICAgKEpTQzo6REZHOjpHcmFwaDo6dHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eSk6CisgICAgICAgIChK
U0M6OkRGRzo6R3JhcGg6OmluZmVycmVkVmFsdWVGb3JQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6
OkRGRzo6R3JhcGg6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpm
cmVlemUpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpyZWdpc3RlclN0cnVjdHVyZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmFzc2VydElzUmVnaXN0ZXJlZCk6CisgICAgICAgICog
ZGZnL0RGR0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OnJlZ2lzdGVyU3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6YWRkU3RydWN0dXJlU2V0KToKKyAgICAg
ICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxl
cjo6YnJhbmNoV2Vha1N0cnVjdHVyZSk6CisgICAgICAgICogZGZnL0RGR011bHRpR2V0QnlPZmZz
ZXREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpNdWx0aUdldEJ5T2Zmc2V0Q2FzZTo6ZHVt
cEluQ29udGV4dCk6CisgICAgICAgICogZGZnL0RGR011bHRpR2V0QnlPZmZzZXREYXRhLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6TXVsdGlHZXRCeU9mZnNldENhc2U6Ok11bHRpR2V0QnlPZmZzZXRD
YXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpNdWx0aUdldEJ5T2Zmc2V0Q2FzZTo6c2V0KToKKyAg
ICAgICAgKiBkZmcvREZHTm9kZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVy
dFRvUHV0U3RydWN0dXJlSGludCk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0VG9DaGVja1N0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
OkRGRzo6Tm9kZTo6c3RydWN0dXJlU2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzdHJ1
Y3R1cmUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Ok9wSW5mb1dyYXBwZXI6Ok9wSW5mb1dy
YXBwZXIpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Ok9wSW5mb1dyYXBwZXI6Om9wZXJhdG9y
PSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6T3BJbmZvV3JhcHBlcjo6YXNSZWdpc3RlcmVk
U3RydWN0dXJlKToKKyAgICAgICAgKiBkZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFz
ZS5jcHA6CisgICAgICAgICogZGZnL0RGR09wSW5mby5oOgorICAgICAgICAoSlNDOjpERkc6Ok9w
SW5mbzo6T3BJbmZvKToKKyAgICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6UGxhbjo6Y29tcGlsZUluVGhyZWFkSW1wbCk6CisgICAgICAgIChKU0M6OkRGRzo6UGxh
bjo6ZmluYWxpemVXaXRob3V0Tm90aWZ5aW5nQ2FsbGJhY2spOgorICAgICAgICAqIGRmZy9ERkdS
ZWdpc3RlcmVkU3RydWN0dXJlLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVy
ZWRTdHJ1Y3R1cmU6OmdldCk6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJlZFN0cnVjdHVy
ZTo6b3BlcmF0b3ItPik6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZTo6
b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZTo6b3Bl
cmF0b3IhPSk6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZTo6b3BlcmF0
b3IgYm9vbCk6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZTo6UmVnaXN0
ZXJlZFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZTo6
Y3JlYXRlUHJpdmF0ZSk6CisgICAgICAgICogZGZnL0RGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlcmVkU3RydWN0dXJlU2V0Ojpm
aWx0ZXIpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQ6OmZpbHRl
ckFycmF5TW9kZXMpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQ6
OnNwZWN1bGF0aW9uRnJvbVN0cnVjdHVyZXMpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVy
ZWRTdHJ1Y3R1cmVTZXQ6OmFycmF5TW9kZXNGcm9tU3RydWN0dXJlcyk6CisgICAgICAgIChKU0M6
OkRGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZVNldDo6dmFsaWRhdGVSZWZlcmVuY2VzKToKKyAgICAg
ICAgKiBkZmcvREZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNldC5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6REZHOjpSZWdpc3RlcmVkU3RydWN0dXJlU2V0OjpSZWdpc3RlcmVkU3RydWN0dXJlU2V0KToK
KyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlcmVkU3RydWN0dXJlU2V0Ojpvbmx5U3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlcmVkU3RydWN0dXJlU2V0Ojp0b1N0cnVjdHVy
ZVNldCk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVSYXdPYmpl
Y3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0R2V0Q2FsbGVlKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c2lsZW50RmlsbCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJyYXkpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPblN0cmluZyk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVGcm9tQ2hhckNvZGUpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRG91YmxlUmVwKToKKyAgICAgICAgKEpT
Qzo6REZHOjpjb21waWxlQ2xhbXBEb3VibGVUb0J5dGUpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTWFrZVJvcGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlQXJpdGhSb3VuZGluZyk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbik6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVBY3RpdmF0aW9uKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZURpcmVjdEFyZ3VtZW50cyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVTY29wZWRBcmd1
bWVudHMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRl
Q2xvbmVkQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVNwcmVhZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVB
cnJheVNsaWNlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVR5
cGVPZik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBbGxvY2F0
ZVByb3BlcnR5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3JPbkNlbGwp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJh
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0cmluZ09y
U3RyaW5nT2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU1hdGVyaWFsaXplTmV3T2JqZWN0KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6VHJ1c3RlZEltbVB0cjo6VHJ1
c3RlZEltbVB0cik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OlRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
VHJ1c3RlZEltbVB0cjo6b3BlcmF0b3IgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpUcnVzdGVkSW1tUHRyOjphc0ludHB0
cik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhbGxPcGVyYXRpb24pOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVEZXN0cnVjdGli
bGVPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVT
dHJpbmdPYmplY3RGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3Vs
YXRpdmVOb25QZWVwaG9sZUNvbXBhcmVOdWxsT3JVbmRlZmluZWQpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoTnVsbE9yVW5k
ZWZpbmVkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RPck90aGVyTG9n
aWNhbE5vdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RP
ck90aGVyQnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBbGxvY2F0ZU5l
d0FycmF5V2l0aFNpemUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVw
aG9sZUNvbXBhcmVOdWxsT3JVbmRlZmluZWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoTnVsbE9yVW5kZWZpbmVkKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3QpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJyYW5j
aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2NhdGVOZXdBcnJheVdpdGhT
aXplKToKKyAgICAgICAgKiBkZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlTm9kZSk6CisgICAg
ICAgICogZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmFzc2VydElzUmVnaXN0ZXJlZCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6Y2xvYmJlcik6CisgICAgICAgIChK
U0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6b2JzZXJ2ZVRyYW5zaXRpb24pOgorICAg
ICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om9ic2VydmVUcmFuc2l0aW9u
cyk6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6YWRkKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjptZXJnZSk6CisgICAgICAg
IChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6bWVyZ2VOb3RUb3ApOgorICAgICAg
ICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmZpbHRlcik6CisgICAgICAgIChK
U0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyU2xvdyk6CisgICAgICAgIChK
U0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyQ2xhc3NJbmZvU2xvdyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6Y29udGFpbnMpOgorICAg
ICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3Vic2V0T2YpOgorICAg
ICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3VwZXJzZXRPZik6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6b3ZlcmxhcHMpOgorICAg
ICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3ViQ2xhc3NPZik6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZHVtcEluQ29udGV4dCk6
CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlKToK
KyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpvcGVyYXRvcj0pOgor
ICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OnNldCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6dG9TdHJ1Y3R1cmVTZXQpOgorICAg
ICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmF0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpvcGVyYXRvcltdKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpvbmx5U3RydWN0dXJlKToKKyAgICAgICAg
KiBkZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlN0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFz
ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlUmVnaXN0cmF0aW9uUGhh
c2U6OnJ1bik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlUmVnaXN0cmF0
aW9uUGhhc2U6OnJlZ2lzdGVyU3RydWN0dXJlcyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRG
Rzo6U3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2U6OnJlZ2lzdGVyU3RydWN0dXJlKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZTo6YXNzZXJ0
QXJlUmVnaXN0ZXJlZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlUmVn
aXN0cmF0aW9uUGhhc2U6OmFzc2VydElzUmVnaXN0ZXJlZCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkRGRzo6cGVyZm9ybVN0cnVjdHVyZVJlZ2lzdHJhdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmg6CisgICAgICAgICogZGZnL0RG
R1RyYW5zaXRpb24uY3BwOgorICAgICAgICAoSlNDOjpERkc6OlRyYW5zaXRpb246OmR1bXBJbkNv
bnRleHQpOgorICAgICAgICAqIGRmZy9ERkdUcmFuc2l0aW9uLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6VHJhbnNpdGlvbjo6VHJhbnNpdGlvbik6CisgICAgICAgICogZGZnL0RGR1R5cGVDaGVja0hv
aXN0aW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlR5cGVDaGVja0hvaXN0aW5nUGhh
c2U6Om5vdGljZVN0cnVjdHVyZUNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpUeXBlQ2hlY2tI
b2lzdGluZ1BoYXNlOjpub3RpY2VTdHJ1Y3R1cmVDaGVja0FjY291bnRpbmdGb3JBcnJheU1vZGUp
OgorICAgICAgICAqIGRmZy9ERkdWYWxpZGF0ZS5jcHA6CisgICAgICAgICogZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6Omxvd2Vy
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxPYmpl
Y3RDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVDaGVja1N0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVQdXRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlQXJyYXlTbGljZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVDcmVhdGVBY3RpdmF0aW9uKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNyZWF0ZURpcmVjdEFyZ3VtZW50cyk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDcmVhdGVSZXN0KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld0FycmF5KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld0FycmF5V2l0aFNw
cmVhZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOZXdB
cnJheUJ1ZmZlcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVOZXdBcnJheVdpdGhTaXplKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZU5ld1R5cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVNdWx0aUdldEJ5
T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU11
bHRpUHV0QnlPZmZzZXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlR2V0TWFwQnVja2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZU92ZXJyaWRlc0hhc0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNoZWNrU3RydWN0dXJlSW1tZWRpYXRlKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU1hdGVyaWFs
aXplQ3JlYXRlQWN0aXZhdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVOZXdSZWdleHApOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlTG9nU2hhZG93Q2hpY2tlblRhaWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjaGVja1N0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNoZWNrSW5mZXJyZWRUeXBlKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6YWxsb2NhdGVPYmplY3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjphbGxvY2F0ZVZhcmlhYmxlU2l6ZWRPYmplY3QpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjphbGxvY2F0ZUpTQXJyYXkpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjphbGxvY2F0ZVVuaW5pdGlhbGl6ZWRDb250aWd1
b3VzSlNBcnJheSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmJvb2xp
ZnkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjplcXVhbE51bGxPclVu
ZGVmaW5lZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6Omxvd0NlbGwp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVjdWxhdGVTdHJpbmdP
YmplY3RGb3JTdHJ1Y3R1cmVJRCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OndlYWtQb2ludGVyKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
ZnJvemVuUG9pbnRlcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6Ondl
YWtTdHJ1Y3R1cmVJRCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6Ondl
YWtTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjcmFz
aCk6CisgICAgICAgICogZnRsL0ZUTE91dHB1dC5oOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1
dDo6d2Vha1BvaW50ZXIpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Y29uc3RJbnRQdHIp
OgorCiAyMDE3LTAxLTI2ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBPU1IgZW50cnk6IGRlbGF5IG91dGVyLWxvb3AgY29tcGlsYXRpb24gd2hlbiBhdCBpbm5l
ci1sb29wCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAy
MTEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTM3Myw2ICszNzMsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAg
IGRmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAKICAgICBkZmcvREZHUHVyZVZhbHVlLmNw
cAogICAgIGRmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAKKyAgICBkZmcvREZHUmVnaXN0
ZXJlZFN0cnVjdHVyZVNldC5jcHAKICAgICBkZmcvREZHU1NBQ2FsY3VsYXRvci5jcHAKICAgICBk
ZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAogICAgIGRmZy9ERkdTU0FMb3dlcmluZ1BoYXNl
LmNwcApAQCAtMzg2LDcgKzM4Nyw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAg
ZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdTdHJlbmd0
aFJlZHVjdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmNw
cAotICAgIGRmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAKICAgICBkZmcvREZH
VGhyZWFkRGF0YS5jcHAKICAgICBkZmcvREZHVGh1bmtzLmNwcAogICAgIGRmZy9ERkdUaWVyVXBD
aGVja0luamVjdGlvblBoYXNlLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01MjAsOCArNTIw
LDYgQEAKIAkJMEY3NjZEMzgxNUFFNEExQzAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmlu
Z1dhdGNocG9pbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY3NjZEMzYxNUFFNEExQTAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dh
dGNocG9pbnQuY3BwICovOyB9OwogCQkwRjc2NkQzOTE1QUU0QTFGMDA4RjM2M0UgLyogU3RydWN0
dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY3NjZEMzcxNUFFNEExQTAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0
dWJDbGVhcmluZ1dhdGNocG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjc3MDA5MjE0MDJGRjNDMDA3OEVCMzkgLyogU2FtcGxpbmdDb3Vu
dGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NzcwMDkxMTQwMkZGMjgwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwICovOyB9OwotCQkw
Rjc5MDg1NTE5QTI5MEIyMDBGNjMxMEMgLyogREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2Uu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3OTA4
NTMxOUEyOTBCMjAwRjYzMTBDIC8qIERGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcCAq
LzsgfTsKLQkJMEY3OTA4NTYxOUEyOTBCMjAwRjYzMTBDIC8qIERGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjc5MDg1NDE5QTI5MEIyMDBGNjMxMEMgLyogREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhh
c2UuaCAqLzsgfTsKIAkJMEY3QjI5NEIxNEMzQ0QyRjAwN0MzREIxIC8qIERGR0NhcGFiaWxpdGll
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEODJF
MUYxNDE3MkMyRjAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5oICovOyB9OwogCQkwRjdCMjk0
RDE0QzNDRDRDMDA3QzNEQjEgLyogREZHQ29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMwOTc3RTE0NjlFQkM0MDBDRjI0NDIgLyogREZHQ29t
bW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEY3QzM5RkIxQzhGNjI5MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0MzOUZBMUM4RjYyOTMwMDQ4MDE1
MSAvKiBSZWdFeHBJbmxpbmVzLmggKi87IH07CkBAIC0xNDQxLDYgKzE0MzksOCBAQAogCQk3OTZG
QjQzQTFERkY4QzNGMDAzOUM5NUQgLyogSlNXZWJBc3NlbWJseUhlbHBlcnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5NkZCNDM5MURGRjhDM0YwMDM5
Qzk1RCAvKiBKU1dlYkFzc2VtYmx5SGVscGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc5N0UwN0E5MUI4RkNGQjkwMDg0MDBCQSAvKiBKU0ds
b2JhbExleGljYWxFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3OTdFMDdBNzFCOEZDRkI5MDA4NDAwQkEgLyogSlNHbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnQuY3BwICovOyB9OwogCQk3OTdFMDdBQTFCOEZDRkI5MDA4NDAwQkEgLyog
SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDc5N0UwN0E4MUI4RkNGQjkwMDg0MDBCQSAvKiBKU0dsb2JhbExl
eGljYWxFbnZpcm9ubWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTc5ODBDMTZDMUUzQTk0MEUwMEI3MTYxNSAvKiBERkdSZWdpc3RlcmVkU3Ry
dWN0dXJlU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDc5ODBDMTZBMUUzQTk0MEUwMEI3MTYxNSAvKiBERkdSZWdpc3RlcmVkU3RydWN0dXJlU2V0
LmNwcCAqLzsgfTsKKwkJNzk4MEMxNkQxRTNBOTQwRTAwQjcxNjE1IC8qIERGR1JlZ2lzdGVyZWRT
dHJ1Y3R1cmVTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDc5ODBDMTZCMUUzQTk0MEUwMEI3MTYxNSAvKiBERkdSZWdpc3RlcmVkU3RydWN0dXJlU2V0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzk4
OTM3NzgxRENBQjU3MzAwRjhENEZCIC8qIEpTRml4ZWRBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OTg5Mzc3NjFEQ0FCNTczMDBGOEQ0RkIg
LyogSlNGaXhlZEFycmF5LmNwcCAqLzsgfTsKIAkJNzk4OTM3NzkxRENBQjU3MzAwRjhENEZCIC8q
IEpTRml4ZWRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzk4OTM3NzcxRENBQjU3MzAwRjhENEZCIC8qIEpTRml4ZWRBcnJheS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc5OUVGN0M0MUM1NkVE
OTYwMDJCMDUzNCAvKiBCM1BDVG9PcmlnaW5NYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5OUVGN0MzMUM1NkVEOTYwMDJCMDUzNCAvKiBCM1BDVG9P
cmlnaW5NYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTQ3MSw2ICsxNDcxLDcgQEAKIAkJNzlFRTBDMDAxQjRBRkI4NTAwMDM4NUM5IC8qIFZh
cmlhYmxlRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDc5RUUwQkZFMUI0QUZCODUwMDAzODVDOSAvKiBWYXJpYWJsZUVudmlyb25tZW50
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzlG
OEZDMUUxQjlGRUQwRjAwQ0E2NkFCIC8qIERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RjhGQzFD
MUI5RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAgKi87
IH07CiAJCTc5RjhGQzFGMUI5RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJbnNlcnRp
b25QaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzlGOEZDMUQxQjlGRUQwRjAwQ0E2NkFCIC8qIERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNl
LmggKi87IH07CisJCTc5RkM4QTA4MUUzMkU5RjAwMEQ4OEYwRSAvKiBERkdSZWdpc3RlcmVkU3Ry
dWN0dXJlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
OUZDOEEwNzFFMzJFOUYwMDBEODhGMEUgLyogREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCQzU0N0QzMUI2
OTU5QTEwMDk1OUI1OCAvKiBXYXNtRm9ybWF0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QkM1NDdEMjFCNjk1OTlCMDA5NTlCNTggLyogV2FzbUZvcm1h
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdD
MDA4Q0RBMTg3MTI0QkIwMDk1NUMyNCAvKiBKU1Byb21pc2VEZWZlcnJlZC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzAwOENEODE4NzEyNEJCMDA5
NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQuY3BwICovOyB9OwogCQk3QzAwOENEQjE4NzEyNEJC
MDA5NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMDA4Q0Q5MTg3MTI0QkIwMDk1NUMyNCAvKiBKU1Byb21p
c2VEZWZlcnJlZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0yOTc3LDggKzI5NzgsNiBAQAogCQkwRjc2NkQzNzE1QUU0QTFBMDA4RjM2M0UgLyog
U3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGNzcwMDhFMTQwMkZERDYwMDc4RUIzOSAvKiBTYW1wbGluZ0Nv
dW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2FtcGxpbmdDb3VudGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzcwMDkxMTQwMkZGMjgwMDc4RUIz
OSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2FtcGxpbmdDb3VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MEY3OTA4NTMxOUEyOTBCMjAwRjYzMTBDIC8qIERGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1N0cnVjdHVyZVJl
Z2lzdHJhdGlvblBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGNzkwODU0MTlBMjkwQjIw
MEY2MzEwQyAvKiBERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5oOyBwYXRo
ID0gZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGN0MzOUZBMUM4RjYyOTMwMDQ4MDE1MSAvKiBSZWdFeHBJbmxpbmVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cElubGluZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3QzM5RkMxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4
cE9iamVjdElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhw
T2JqZWN0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjdDMzlGRTFD
OTBDNTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IERGR09wSW5mby5oOyBwYXRoID0gZGZnL0RGR09wSW5mby5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMzkxMSw2ICszOTEwLDggQEAKIAkJNzk2RkI0MzkxREZGOEMzRjAw
MzlDOTVEIC8qIEpTV2ViQXNzZW1ibHlIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEpTV2ViQXNzZW1ibHlIZWxwZXJzLmg7IHBhdGggPSBqcy9KU1dlYkFzc2VtYmx5
SGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3OTdFMDdBNzFCOEZDRkI5
MDA4NDAwQkEgLyogSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3OTdFMDdBODFCOEZDRkI5MDA4NDAwQkEgLyog
SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNzk4MEMxNkExRTNBOTQwRTAwQjcxNjE1IC8qIERGR1JlZ2lzdGVyZWRTdHJ1Y3R1
cmVTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHUmVnaXN0
ZXJlZFN0cnVjdHVyZVNldC5jcHA7IHBhdGggPSBkZmcvREZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNl
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc5ODBDMTZCMUUzQTk0MEUwMEI3
MTYxNSAvKiBERkdSZWdpc3RlcmVkU3RydWN0dXJlU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IERGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQuaDsgcGF0aCA9IGRmZy9ERkdS
ZWdpc3RlcmVkU3RydWN0dXJlU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc5
ODkzNzc2MURDQUI1NzMwMEY4RDRGQiAvKiBKU0ZpeGVkQXJyYXkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGaXhlZEFycmF5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzk4OTM3NzcxRENBQjU3MzAwRjhENEZCIC8qIEpTRml4ZWRBcnJheS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ZpeGVkQXJyYXkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzk5RUY3QzMxQzU2RUQ5NjAwMkIwNTM0IC8qIEIzUENU
b09yaWdpbk1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1BDVG9Pcmln
aW5NYXAuaDsgcGF0aCA9IGIzL0IzUENUb09yaWdpbk1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMzk0MSw2ICszOTQyLDcgQEAKIAkJNzlFRTBCRkUxQjRBRkI4NTAwMDM4NUM5
IC8qIFZhcmlhYmxlRW52aXJvbm1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVmFyaWFibGVFbnZpcm9ubWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
OUY4RkMxQzFCOUZFRDBGMDBDQTY2QUIgLyogREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHTWF4aW1hbEZsdXNo
SW5zZXJ0aW9uUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBo
YXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzlGOEZDMUQxQjlGRUQwRjAw
Q0E2NkFCIC8qIERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmg7IHBhdGgg
PSBkZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNzlGQzhBMDcxRTMyRTlGMDAwRDg4RjBFIC8qIERGR1JlZ2lzdGVyZWRTdHJ1
Y3R1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHUmVnaXN0ZXJlZFN0
cnVjdHVyZS5oOyBwYXRoID0gZGZnL0RGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JDNTQ3RDIxQjY5NTk5QjAwOTU5QjU4IC8qIFdhc21Gb3Jt
YXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbUZvcm1hdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzAwOENEODE4NzEyNEJCMDA5NTVDMjQgLyogSlNQ
cm9taXNlRGVmZXJyZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNQcm9taXNlRGVmZXJyZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzAw
OENEOTE4NzEyNEJCMDA5NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9taXNlRGVmZXJyZWQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTcwOTEsNiArNzA5Myw5IEBACiAJCQkJMEZCMTc2NUYxOTZCOEY5RTAw
OTEwNTJBIC8qIERGR1B1cmVWYWx1ZS5oICovLAogCQkJCTBGM0ExQkY3MUE5RUNCN0QwMDBERTAx
QSAvKiBERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAgKi8sCiAJCQkJMEYzQTFCRjgxQTlFQ0I3
RDAwMERFMDFBIC8qIERGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmggKi8sCisJCQkJNzlGQzhBMDcx
RTMyRTlGMDAwRDg4RjBFIC8qIERGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaCAqLywKKwkJCQk3OTgw
QzE2QTFFM0E5NDBFMDBCNzE2MTUgLyogREZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNldC5jcHAgKi8s
CisJCQkJNzk4MEMxNkIxRTNBOTQwRTAwQjcxNjE1IC8qIERGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmVT
ZXQuaCAqLywKIAkJCQk4NkVDOURDMTEzMjhERjgyMDAyQjJBRDcgLyogREZHUmVnaXN0ZXJCYW5r
LmggKi8sCiAJCQkJMEYyRkNDRjQxOEE2MDA3MDAwMUEyN0Y4IC8qIERGR1NhZmVwb2ludC5jcHAg
Ki8sCiAJCQkJMEYyRkNDRjUxOEE2MDA3MDAwMUEyN0Y4IC8qIERGR1NhZmVwb2ludC5oICovLApA
QCAtNzEyMyw4ICs3MTI4LDYgQEAKIAkJCQkwRjg5M0JEQTE5MzZFMjNDMDAxMjExRjQgLyogREZH
U3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5jcHAgKi8sCiAJCQkJMEY2Mzk0NzYxNURDRTM0NzAwNkE1
OTdDIC8qIERGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaCAqLywKIAkJCQkwRjUwQUYzQjE5M0U4
QjM5MDA2NzRFRTggLyogREZHU3RydWN0dXJlQ2xvYmJlclN0YXRlLmggKi8sCi0JCQkJMEY3OTA4
NTMxOUEyOTBCMjAwRjYzMTBDIC8qIERGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcCAq
LywKLQkJCQkwRjc5MDg1NDE5QTI5MEIyMDBGNjMxMEMgLyogREZHU3RydWN0dXJlUmVnaXN0cmF0
aW9uUGhhc2UuaCAqLywKIAkJCQkwRjJGQ0NGNzE4QTYwMDcwMDAxQTI3RjggLyogREZHVGhyZWFk
RGF0YS5jcHAgKi8sCiAJCQkJMEYyRkNDRjgxOEE2MDA3MDAwMUEyN0Y4IC8qIERGR1RocmVhZERh
dGEuaCAqLywKIAkJCQkwRkMwOTc5RjE0NkIyOEM3MDBDRjI0NDIgLyogREZHVGh1bmtzLmNwcCAq
LywKQEAgLTgwNzYsNiArODA3OSw3IEBACiAJCQkJMEYyMUMyN0QxNEJFNzI3QTAwQURDNjRCIC8q
IENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0E3MTRC
Q0Y1MDcwMDg4NUI0RiAvKiBDb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNzYyMDUx
REI5MjQyOTAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NzlGQzhBMDgxRTMyRTlGMDAwRDg4RjBFIC8qIERGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1MzI0Mzk4MTg1NkE0ODkwMDJFRDY5MiAvKiBDb21iaW5lZERvbWFp
bnMuanNvbiBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0YzMEUxNkY1Q0QwMEIzNDQ2MCAvKiBD
b21tb25JZGVudGlmaWVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxNUYxNUYxNEI3QTczRTAw
NURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MjkxLDcgKzgy
OTUsNiBAQAogCQkJCTBGQzIwQ0I2MTg1MkUyQzYwMEM5RTk1NCAvKiBERkdTdHJlbmd0aFJlZHVj
dGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYzOTQ3ODE1RENFMzRCMDA2QTU5N0Mg
LyogREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1MEFG
M0MxOTNFOEIzOTAwNjc0RUU4IC8qIERGR1N0cnVjdHVyZUNsb2JiZXJTdGF0ZS5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJMEY3OTA4NTYxOUEyOTBCMjAwRjYzMTBDIC8qIERGR1N0cnVjdHVyZVJlZ2lz
dHJhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJGQ0NGRjE4QTYwMDcwMDAxQTI3
RjggLyogREZHVGhyZWFkRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3QTIxNDZCMjhD
QzAwQ0YyNDQyIC8qIERGR1RodW5rcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEzMjgxN0Q1
MUY1NzAwQ0EyQzQwIC8qIERGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuaCBpbiBIZWFkZXJz
ICovLApAQCAtODY3OSw2ICs4NjgyLDcgQEAKIAkJCQlBNTBFNEI2NDE4ODA5REQ1MDA2OEE0NkQg
LyogSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MDNG
QTJBMTg4RjEwNTkwMDExMEYxNCAvKiBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNTEzRTVDMDE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3Rl
ZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTc5ODBDMTZEMUUzQTk0MEUwMEI3MTYx
NSAvKiBERkdSZWdpc3RlcmVkU3RydWN0dXJlU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTEz
RTVDMjE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUM0NDJDQjI1MUE2Q0RCOEMwMDVEM0Q3QyAvKiBKU0lucHV0cy5q
c29uIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RjgxN0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50
MTZBcnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC05OTk3LDcgKzEwMDAxLDYgQEAKIAkJCQkwRkMy
MENCNTE4NTJFMkM2MDBDOUU5NTQgLyogREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjdERjEzQjFFMjk3MTExMDA5NTk1MUIgLyogSlNEZXN0cnVjdGli
bGVPYmplY3RTdWJzcGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjg5M0JEQjE5MzZFMjND
MDAxMjExRjQgLyogREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQkwRjc5MDg1NTE5QTI5MEIyMDBGNjMxMEMgLyogREZHU3RydWN0dXJlUmVnaXN0cmF0aW9u
UGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyRkNDRkUxOEE2MDA3MDAwMUEyN0Y4IC8q
IERGR1RocmVhZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDMDk3QTExNDZCMjhDQTAw
Q0YyNDQyIC8qIERGR1RodW5rcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4QTMyNzE3RDUx
RjU3MDBDQTJDNDAgLyogREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTEwMDM5LDYgKzEwMDQyLDcgQEAKIAkJCQkxNEFEOTExNzFEQ0E5N0ZEMDAxNEY5
RkUgLyogRXZhbENvZGVCbG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDczNDFFMjFEQzJD
RTk2MDBBQTI5QkEgLyogRXZhbEV4ZWN1dGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU0
OTgyMDMxODkxRDBCMDAwODFFNUI4IC8qIEV2ZW50TG9vcC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk3OTgwQzE2QzFFM0E5NDBFMDBCNzE2MTUgLyogREZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNldC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTFDMEZGRjFCMTk0RkQxMDBCNTNGQ0EgLyogRXhjZXB0
aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFODBDMTlCMUQ3NzZBOTgwMDg1MTBDMCAvKiBF
eGNlcHRpb25FdmVudExvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMTJERTBGMTk3
OUQ1RkQwMDA2RkY0RSAvKiBFeGNlcHRpb25GdXp6LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9u
IDIxMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNzI1LDYgKzI3MjUsNyBAQCB2b2lkIENvZGVCbG9jazo6ZGV0
ZXJtaW5lTGl2ZW5lc3MoY29uc3QgCiAgICAgLy8gR0Mgd2Ugc3RpbGwgaGF2ZSBub3QgcHJvdmVk
IGxpdmVuZXNzLCB0aGVuIHRoaXMgY29kZSBibG9jayBpcyB0b2FzdC4KICAgICBib29sIGFsbEFy
ZUxpdmVTb0ZhciA9IHRydWU7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRmZ0NvbW1v
bi0+d2Vha1JlZmVyZW5jZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgQVNTRVJUKCFqc0R5bmFt
aWNDYXN0PENvZGVCbG9jayo+KGRmZ0NvbW1vbi0+d2Vha1JlZmVyZW5jZXNbaV0uZ2V0KCkpKTsK
ICAgICAgICAgaWYgKCFIZWFwOjppc01hcmtlZENvbmN1cnJlbnRseShkZmdDb21tb24tPndlYWtS
ZWZlcmVuY2VzW2ldLmdldCgpKSkgewogICAgICAgICAgICAgYWxsQXJlTGl2ZVNvRmFyID0gZmFs
c2U7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuY3BwCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjYsNjQgKzI2LDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3RydWN0
dXJlU2V0LmgiCiAKLSNpbmNsdWRlICJERkdBYnN0cmFjdFZhbHVlLmgiCiAjaW5jbHVkZSAiVHJh
Y2tlZFJlZmVyZW5jZXMuaCIKICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewogCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLXZvaWQgU3RydWN0dXJlU2V0Ojpm
aWx0ZXIoY29uc3QgREZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcikKLXsKLSAgICBn
ZW5lcmljRmlsdGVyKFsmXSAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIC0+IGJvb2wgeyByZXR1cm4g
b3RoZXIuY29udGFpbnMoc3RydWN0dXJlKTsgfSk7Ci19Ci0KLXZvaWQgU3RydWN0dXJlU2V0Ojpm
aWx0ZXIoU3BlY3VsYXRlZFR5cGUgdHlwZSkKLXsKLSAgICBnZW5lcmljRmlsdGVyKAotICAgICAg
ICBbJl0gKFN0cnVjdHVyZSogc3RydWN0dXJlKSAtPiBib29sIHsKLSAgICAgICAgICAgIHJldHVy
biB0eXBlICYgc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKHN0cnVjdHVyZSk7Ci0gICAgICAgIH0p
OwotfQotCi12b2lkIFN0cnVjdHVyZVNldDo6ZmlsdGVyQXJyYXlNb2RlcyhBcnJheU1vZGVzIGFy
cmF5TW9kZXMpCi17Ci0gICAgZ2VuZXJpY0ZpbHRlcigKLSAgICAgICAgWyZdIChTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkgLT4gYm9vbCB7Ci0gICAgICAgICAgICByZXR1cm4gYXJyYXlNb2RlcyAmIGFy
cmF5TW9kZUZyb21TdHJ1Y3R1cmUoc3RydWN0dXJlKTsKLSAgICAgICAgfSk7Ci19Ci0KLXZvaWQg
U3RydWN0dXJlU2V0OjpmaWx0ZXIoY29uc3QgREZHOjpBYnN0cmFjdFZhbHVlJiBvdGhlcikKLXsK
LSAgICBmaWx0ZXIob3RoZXIubV9zdHJ1Y3R1cmUpOwotICAgIGZpbHRlcihvdGhlci5tX3R5cGUp
OwotICAgIGZpbHRlckFycmF5TW9kZXMob3RoZXIubV9hcnJheU1vZGVzKTsKLX0KLQotI2VuZGlm
IC8vIEVOQUJMRShERkdfSklUKQotCi1TcGVjdWxhdGVkVHlwZSBTdHJ1Y3R1cmVTZXQ6OnNwZWN1
bGF0aW9uRnJvbVN0cnVjdHVyZXMoKSBjb25zdAotewotICAgIFNwZWN1bGF0ZWRUeXBlIHJlc3Vs
dCA9IFNwZWNOb25lOwotICAgIGZvckVhY2goCi0gICAgICAgIFsmXSAoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpIHsKLSAgICAgICAgICAgIG1lcmdlU3BlY3VsYXRpb24ocmVzdWx0LCBzcGVjdWxhdGlv
bkZyb21TdHJ1Y3R1cmUoc3RydWN0dXJlKSk7Ci0gICAgICAgIH0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLUFycmF5TW9kZXMgU3RydWN0dXJlU2V0OjphcnJheU1vZGVzRnJvbVN0cnVjdHVy
ZXMoKSBjb25zdAotewotICAgIEFycmF5TW9kZXMgcmVzdWx0ID0gMDsKLSAgICBmb3JFYWNoKAot
ICAgICAgICBbJl0gKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7Ci0gICAgICAgICAgICBtZXJnZUFy
cmF5TW9kZXMocmVzdWx0LCBhc0FycmF5TW9kZXMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkp
OwotICAgICAgICB9KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiB2b2lkIFN0cnVjdHVyZVNl
dDo6ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkg
Y29uc3QKIHsKICAgICBDb21tYVByaW50ZXIgY29tbWE7CkBAIC05NywxMyArNDQsNSBAQCB2b2lk
IFN0cnVjdHVyZVNldDo6ZHVtcChQcmludFN0cmVhbSYgb3V0CiAgICAgZHVtcEluQ29udGV4dChv
dXQsIG51bGxwdHIpOwogfQogCi12b2lkIFN0cnVjdHVyZVNldDo6dmFsaWRhdGVSZWZlcmVuY2Vz
KGNvbnN0IFRyYWNrZWRSZWZlcmVuY2VzJiB0cmFja2VkUmVmZXJlbmNlcykgY29uc3QKLXsKLSAg
ICBmb3JFYWNoKAotICAgICAgICBbJl0gKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7Ci0gICAgICAg
ICAgICB0cmFja2VkUmVmZXJlbmNlcy5jaGVjayhzdHJ1Y3R1cmUpOwotICAgICAgICB9KTsKLX0K
LQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU2V0LmgJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUs
MTEgKzM1LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIFRyYWNrZWRSZWZlcmVuY2VzOwog
Ci1uYW1lc3BhY2UgREZHIHsKLWNsYXNzIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU7Ci1zdHJ1Y3Qg
QWJzdHJhY3RWYWx1ZTsKLX0KLQogY2xhc3MgU3RydWN0dXJlU2V0IDogcHVibGljIFRpbnlQdHJT
ZXQ8U3RydWN0dXJlKj4gewogcHVibGljOgogICAgIC8vIEkgcmVhbGx5IHdhbnQgdG8gZG8gdGhp
czoKQEAgLTY2LDIwICs2MSw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG9ubHlFbnRyeSgp
OwogICAgIH0KICAgICAKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICB2b2lkIGZpbHRlcihjb25z
dCBERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWUmKTsKLSAgICB2b2lkIGZpbHRlcihTcGVjdWxh
dGVkVHlwZSk7Ci0gICAgdm9pZCBmaWx0ZXJBcnJheU1vZGVzKEFycmF5TW9kZXMpOwotICAgIHZv
aWQgZmlsdGVyKGNvbnN0IERGRzo6QWJzdHJhY3RWYWx1ZSYpOwotI2VuZGlmIC8vIEVOQUJMRShE
RkdfSklUKQotICAgIAotICAgIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbVN0cnVjdHVy
ZXMoKSBjb25zdDsKLSAgICBBcnJheU1vZGVzIGFycmF5TW9kZXNGcm9tU3RydWN0dXJlcygpIGNv
bnN0OwotICAgIAogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250
ZXh0KikgY29uc3Q7CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7Ci0gICAgCi0g
ICAgdm9pZCB2YWxpZGF0ZVJlZmVyZW5jZXMoY29uc3QgVHJhY2tlZFJlZmVyZW5jZXMmKSBjb25z
dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgJKHJldmlzaW9uIDIxMTIyOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogICAgIHZvaWQgZHVtcChQ
cmludFN0cmVhbSYgb3V0KTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIEZp
bHRyYXRpb25SZXN1bHQgZmlsdGVyKFQgbm9kZSwgY29uc3QgU3RydWN0dXJlU2V0JiBzZXQsIFNw
ZWN1bGF0ZWRUeXBlIGFkbWl0dGVkVHlwZXMgPSBTcGVjTm9uZSkKKyAgICBGaWx0cmF0aW9uUmVz
dWx0IGZpbHRlcihUIG5vZGUsIGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIHNldCwgU3Bl
Y3VsYXRlZFR5cGUgYWRtaXR0ZWRUeXBlcyA9IFNwZWNOb25lKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGZpbHRlcihmb3JOb2RlKG5vZGUpLCBzZXQsIGFkbWl0dGVkVHlwZXMpOwogICAgIH0KQEAg
LTE0MSw3ICsxNDEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBmaWx0ZXJDbGFzc0luZm8o
Zm9yTm9kZShub2RlKSwgY2xhc3NJbmZvKTsKICAgICB9CiAKLSAgICBGaWx0cmF0aW9uUmVzdWx0
IGZpbHRlcihBYnN0cmFjdFZhbHVlJiwgY29uc3QgU3RydWN0dXJlU2V0JiwgU3BlY3VsYXRlZFR5
cGUgYWRtaXR0ZWRUeXBlcyA9IFNwZWNOb25lKTsKKyAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRl
cihBYnN0cmFjdFZhbHVlJiwgY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYsIFNwZWN1bGF0
ZWRUeXBlIGFkbWl0dGVkVHlwZXMgPSBTcGVjTm9uZSk7CiAgICAgRmlsdHJhdGlvblJlc3VsdCBm
aWx0ZXJBcnJheU1vZGVzKEFic3RyYWN0VmFsdWUmLCBBcnJheU1vZGVzKTsKICAgICBGaWx0cmF0
aW9uUmVzdWx0IGZpbHRlcihBYnN0cmFjdFZhbHVlJiwgU3BlY3VsYXRlZFR5cGUpOwogICAgIEZp
bHRyYXRpb25SZXN1bHQgZmlsdGVyQnlWYWx1ZShBYnN0cmFjdFZhbHVlJiwgRnJvemVuVmFsdWUp
OwpAQCAtMTU2LDcgKzE1Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmb3JBbGxWYWx1ZXModW5z
aWduZWQgaW5kZXhJbkJsb2NrLCBGdW5jdG9yJik7CiAgICAgCiAgICAgdm9pZCBjbG9iYmVyU3Ry
dWN0dXJlcyh1bnNpZ25lZCBpbmRleEluQmxvY2spOwotICAgIHZvaWQgb2JzZXJ2ZVRyYW5zaXRp
b24odW5zaWduZWQgaW5kZXhJbkJsb2NrLCBTdHJ1Y3R1cmUqIGZyb20sIFN0cnVjdHVyZSogdG8p
OworICAgIHZvaWQgb2JzZXJ2ZVRyYW5zaXRpb24odW5zaWduZWQgaW5kZXhJbkJsb2NrLCBSZWdp
c3RlcmVkU3RydWN0dXJlIGZyb20sIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgdG8pOwogICAgIHZvaWQg
b2JzZXJ2ZVRyYW5zaXRpb25zKHVuc2lnbmVkIGluZGV4SW5CbG9jaywgY29uc3QgVHJhbnNpdGlv
blZlY3RvciYpOwogICAgIHZvaWQgc2V0RGlkQ2xvYmJlcigpOwogICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaAkocmV2aXNpb24gMjExMjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3
ICs3Myw3IEBAIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjoKICAgICBp
ZiAoaXNDZWxsU3BlY3VsYXRpb24odmFsdWUubV90eXBlKSAmJiAhdmFsdWUubV9zdHJ1Y3R1cmUu
aXNUb3AoKSkgewogICAgICAgICBib29sIGFsbFRydWUgPSB0cnVlOwogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSB2YWx1ZS5tX3N0cnVjdHVyZS5zaXplKCk7IGktLTspIHsKLSAgICAgICAgICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gdmFsdWUubV9zdHJ1Y3R1cmVbaV07CisgICAgICAgICAg
ICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IHZhbHVlLm1fc3RydWN0dXJlW2ldOwog
ICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChtX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpCiAgICAgICAgICAg
ICAgICAgfHwgc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBTdHJpbmdUeXBlKSB7CiAg
ICAgICAgICAgICAgICAgYWxsVHJ1ZSA9IGZhbHNlOwpAQCAtMTUyLDcgKzE1Miw3IEBAIGlubGlu
ZSBib29sIGlzVG9UaGlzQW5JZGVudGl0eShib29sIGlzU3QKIAogICAgIGlmICgoaXNTdHJpY3RN
b2RlIHx8ICh2YWx1ZUZvck5vZGUubV90eXBlICYmICEodmFsdWVGb3JOb2RlLm1fdHlwZSAmIH5T
cGVjT2JqZWN0KSkpICYmIHZhbHVlRm9yTm9kZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKSB7CiAg
ICAgICAgIGJvb2wgb3ZlcnJpZGVzVG9UaGlzID0gZmFsc2U7Ci0gICAgICAgIHZhbHVlRm9yTm9k
ZS5tX3N0cnVjdHVyZS5mb3JFYWNoKFsmXShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgeworICAgICAg
ICB2YWx1ZUZvck5vZGUubV9zdHJ1Y3R1cmUuZm9yRWFjaChbJl0oUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBzdHJ1Y3R1cmUpIHsKICAgICAgICAgICAgIFR5cGVJbmZvIHR5cGUgPSBzdHJ1Y3R1cmUtPnR5
cGVJbmZvKCk7CiAgICAgICAgICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpIHx8IHR5cGUudHlw
ZSgpID09IFN0cmluZ1R5cGUgfHwgdHlwZS50eXBlKCkgPT0gU3ltYm9sVHlwZSk7CiAgICAgICAg
ICAgICBpZiAoIWlzU3RyaWN0TW9kZSkKQEAgLTE2NTYsMTAgKzE2NTYsMTAgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogCiAgICAgICAgIC8vIEZJWE1FOiBXZSBj
b3VsZCBkbyBiZXR0ZXIgaGVyZSBpZiB3ZSBwcm92ZSB0aGF0IHRoZQogICAgICAgICAvLyBpbmNv
bWluZyB2YWx1ZSBoYXMgb25seSBhIHNpbmdsZSBzdHJ1Y3R1cmUuCi0gICAgICAgIFN0cnVjdHVy
ZVNldCBzdHJ1Y3R1cmVTZXQ7Ci0gICAgICAgIHN0cnVjdHVyZVNldC5hZGQoZ2xvYmFsT2JqZWN0
LT5vcmlnaW5hbEFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlKEFycmF5V2l0aEludDMyKSk7
Ci0gICAgICAgIHN0cnVjdHVyZVNldC5hZGQoZ2xvYmFsT2JqZWN0LT5vcmlnaW5hbEFycmF5U3Ry
dWN0dXJlRm9ySW5kZXhpbmdUeXBlKEFycmF5V2l0aENvbnRpZ3VvdXMpKTsKLSAgICAgICAgc3Ry
dWN0dXJlU2V0LmFkZChnbG9iYWxPYmplY3QtPm9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVGb3JJbmRl
eGluZ1R5cGUoQXJyYXlXaXRoRG91YmxlKSk7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVT
ZXQgc3RydWN0dXJlU2V0OworICAgICAgICBzdHJ1Y3R1cmVTZXQuYWRkKG1fZ3JhcGgucmVnaXN0
ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5vcmlnaW5hbEFycmF5U3RydWN0dXJlRm9ySW5kZXhp
bmdUeXBlKEFycmF5V2l0aEludDMyKSkpOworICAgICAgICBzdHJ1Y3R1cmVTZXQuYWRkKG1fZ3Jh
cGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5vcmlnaW5hbEFycmF5U3RydWN0dXJl
Rm9ySW5kZXhpbmdUeXBlKEFycmF5V2l0aENvbnRpZ3VvdXMpKSk7CisgICAgICAgIHN0cnVjdHVy
ZVNldC5hZGQobV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm9yaWdpbmFs
QXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGUoQXJyYXlXaXRoRG91YmxlKSkpOwogCiAgICAg
ICAgIGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIHN0cnVjdHVyZVNldCk7CiAgICAgICAgIGJy
ZWFrOwpAQCAtMTg1Niw3ICsxODU2LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeQogICAgICAgICAgICAgLy8gc3RydWN0dXJlLgogICAgICAgICAgICAgZmlsdGVy
KAogICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkMSgpLAotICAgICAgICAgICAgICAgIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnN0cmluZ09iamVjdFN0
cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnN0cmluZ09iamVj
dFN0cnVjdHVyZSgpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTdHJpbmdP
clN0cmluZ09iamVjdFVzZToKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTk2Myw3ICsxOTYzLDcg
QEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgIH0KICAgICAg
ICAgCiAgICAgY2FzZSBOZXdPYmplY3Q6Ci0gICAgICAgIEFTU0VSVChub2RlLT5zdHJ1Y3R1cmUo
KSk7CisgICAgICAgIEFTU0VSVCghIW5vZGUtPnN0cnVjdHVyZSgpLmdldCgpKTsKICAgICAgICAg
Zm9yTm9kZShub2RlKS5zZXQobV9ncmFwaCwgbm9kZS0+c3RydWN0dXJlKCkpOwogICAgICAgICBi
cmVhazsKIApAQCAtMjEyMSw3ICsyMTIxLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG51bGxwdHI7CiAgICAgICAgICAgICBib29sIG9rID0gdHJ1ZTsKICAgICAgICAgICAgIGZvck5v
ZGUobm9kZS0+Y2hpbGQxKCkpLm1fc3RydWN0dXJlLmZvckVhY2goCi0gICAgICAgICAgICAgICAg
WyZdIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgeworICAgICAgICAgICAgICAgIFsmXSAoUmVnaXN0
ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFnbG9i
YWxPYmplY3QpCiAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxPYmplY3QgPSBzdHJ1Y3R1
cmUtPmdsb2JhbE9iamVjdCgpOwogICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChnbG9iYWxP
YmplY3QgIT0gc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSkKQEAgLTIxODQsNyArMjE4NCw3IEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgaWYgKHZh
bHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkKICAgICAgICAgICAgICYmIChub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gQ2VsbFVzZSB8fCAhKHZhbHVlLm1fdHlwZSAmIH5TcGVjQ2VsbCkpKSB7
CiAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVy
cygpW25vZGUtPmlkZW50aWZpZXJOdW1iZXIoKV07Ci0gICAgICAgICAgICBHZXRCeUlkU3RhdHVz
IHN0YXR1cyA9IEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IodmFsdWUubV9zdHJ1Y3R1cmUuc2V0
KCksIHVpZCk7CisgICAgICAgICAgICBHZXRCeUlkU3RhdHVzIHN0YXR1cyA9IEdldEJ5SWRTdGF0
dXM6OmNvbXB1dGVGb3IodmFsdWUubV9zdHJ1Y3R1cmUudG9TdHJ1Y3R1cmVTZXQoKSwgdWlkKTsK
ICAgICAgICAgICAgIGlmIChzdGF0dXMuaXNTaW1wbGUoKSkgewogICAgICAgICAgICAgICAgIC8v
IEZpZ3VyZSBvdXQgd2hhdCB0aGUgcmVzdWx0IGlzIGdvaW5nIHRvIGJlIC0gaXMgaXQgVE9QLCBh
IGNvbnN0YW50LCBvciBtYXliZQogICAgICAgICAgICAgICAgIC8vIHNvbWV0aGluZyBtb3JlIHN1
YnRsZT8KQEAgLTIyMzgsNyArMjIzOCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHkKICAgICBjYXNlIENoZWNrU3RydWN0dXJlOiB7CiAgICAgICAgIEFic3RyYWN0
VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CiAKLSAgICAgICAgU3RydWN0
dXJlU2V0JiBzZXQgPSBub2RlLT5zdHJ1Y3R1cmVTZXQoKTsKKyAgICAgICAgY29uc3QgUmVnaXN0
ZXJlZFN0cnVjdHVyZVNldCYgc2V0ID0gbm9kZS0+c3RydWN0dXJlU2V0KCk7CiAgICAgICAgIAog
ICAgICAgICAvLyBJdCdzIGludGVyZXN0aW5nIHRoYXQgd2UgY291bGQgaGF2ZSBwcm92ZW4gdGhh
dCB0aGUgb2JqZWN0IGhhcyBhIGxhcmdlciBzdHJ1Y3R1cmUgc2V0CiAgICAgICAgIC8vIHRoYXQg
aW5jbHVkZXMgdGhlIHNldCB3ZSdyZSB0ZXN0aW5nLiBJbiB0aGF0IGNhc2Ugd2UgY291bGQgbWFr
ZSB0aGUgc3RydWN0dXJlIGNoZWNrCkBAIC0yMjcwLDExICsyMjcwLDExIEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjk4OAogICAgICAgICAKICAgICAgICAgQWJzdHJh
Y3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgU3RydWN0
dXJlU2V0JiBzZXQgPSBub2RlLT5zdHJ1Y3R1cmVTZXQoKTsKKyAgICAgICAgY29uc3QgUmVnaXN0
ZXJlZFN0cnVjdHVyZVNldCYgc2V0ID0gbm9kZS0+c3RydWN0dXJlU2V0KCk7CiAgICAgICAgIAog
ICAgICAgICBpZiAodmFsdWUudmFsdWUoKSkgewogICAgICAgICAgICAgaWYgKFN0cnVjdHVyZSog
c3RydWN0dXJlID0ganNEeW5hbWljQ2FzdDxTdHJ1Y3R1cmUqPih2YWx1ZS52YWx1ZSgpKSkgewot
ICAgICAgICAgICAgICAgIGlmIChzZXQuY29udGFpbnMoc3RydWN0dXJlKSkgeworICAgICAgICAg
ICAgICAgIGlmIChzZXQuY29udGFpbnMobV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1
cmUpKSkgewogICAgICAgICAgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRy
dWUpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CkBAIC0y
Mjg5LDcgKzIyODksNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
CiAgICAgICAgICAgICAgICAgbm9kZSwKICAgICAgICAgICAgICAgICBbJl0gKE5vZGUqIGluY29t
aW5nKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGlu
Y29taW5nLT5keW5hbWljQ2FzdENvbnN0YW50PFN0cnVjdHVyZSo+KCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChzZXQuY29udGFpbnMoc3RydWN0dXJlKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChzZXQuY29udGFpbnMobV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1
Y3R1cmUpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgYWxsR29vZCA9IGZhbHNlOwpAQCAtMjMw
MCw4ICsyMzAwLDggQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgaWYgKFN0cnVj
dHVyZSogc3RydWN0dXJlID0gc2V0Lm9ubHlTdHJ1Y3R1cmUoKSkgewotICAgICAgICAgICAgZmls
dGVyQnlWYWx1ZShub2RlLT5jaGlsZDEoKSwgKm1fZ3JhcGguZnJlZXplKHN0cnVjdHVyZSkpOwor
ICAgICAgICBpZiAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBzZXQub25seVN0cnVj
dHVyZSgpKSB7CisgICAgICAgICAgICBmaWx0ZXJCeVZhbHVlKG5vZGUtPmNoaWxkMSgpLCAqbV9n
cmFwaC5mcmVlemUoc3RydWN0dXJlLmdldCgpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICAKQEAgLTI0MzIsNyArMjQzMiw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICB9CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJl
OiB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEo
KSk7Ci0gICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc1N1YnNldE9mKFN0cnVjdHVyZVNl
dChub2RlLT5zdHJ1Y3R1cmUoKSkpKQorICAgICAgICBpZiAodmFsdWUubV9zdHJ1Y3R1cmUuaXNT
dWJzZXRPZihSZWdpc3RlcmVkU3RydWN0dXJlU2V0KG5vZGUtPnN0cnVjdHVyZSgpKSkpCiAgICAg
ICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRydWUpOwogICAgICAgICBjbG9iYmVy
U3RydWN0dXJlcyhjbG9iYmVyTGltaXQpOwogICAgICAgICAKQEAgLTI1NDYsMTAgKzI1NDYsMTAg
QEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW25vZGUtPm11bHRpR2V0
QnlPZmZzZXREYXRhKCkuaWRlbnRpZmllck51bWJlcl07CiAKICAgICAgICAgQWJzdHJhY3RWYWx1
ZSBiYXNlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIFN0cnVjdHVyZVNldCBi
YXNlU2V0OworICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0IGJhc2VTZXQ7CiAgICAgICAg
IEFic3RyYWN0VmFsdWUgcmVzdWx0OwogICAgICAgICBmb3IgKGNvbnN0IE11bHRpR2V0QnlPZmZz
ZXRDYXNlJiBnZXRDYXNlIDogbm9kZS0+bXVsdGlHZXRCeU9mZnNldERhdGEoKS5jYXNlcykgewot
ICAgICAgICAgICAgU3RydWN0dXJlU2V0IHNldCA9IGdldENhc2Uuc2V0KCk7CisgICAgICAgICAg
ICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0IHNldCA9IGdldENhc2Uuc2V0KCk7CiAgICAgICAgICAg
ICBzZXQuZmlsdGVyKGJhc2UpOwogICAgICAgICAgICAgaWYgKHNldC5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CkBAIC0yNTkxLDcgKzI1OTEsNyBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIE11
bHRpUHV0QnlPZmZzZXQ6IHsKLSAgICAgICAgU3RydWN0dXJlU2V0IG5ld1NldDsKKyAgICAgICAg
UmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBuZXdTZXQ7CiAgICAgICAgIFRyYW5zaXRpb25WZWN0b3Ig
dHJhbnNpdGlvbnM7CiAgICAgICAgIAogICAgICAgICAvLyBPcmRpbmFyaWx5IHlvdSBoYXZlIHRv
IGJlIGNhcmVmdWwgd2l0aCBjYWxsaW5nIHNldEZvdW5kQ29uc3RhbnRzKCkKQEAgLTI2MDQsNyAr
MjYwNCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAg
ICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG5vZGUtPm11bHRpUHV0QnlPZmZzZXREYXRh
KCkudmFyaWFudHMuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICBjb25zdCBQdXRCeUlkVmFy
aWFudCYgdmFyaWFudCA9IG5vZGUtPm11bHRpUHV0QnlPZmZzZXREYXRhKCkudmFyaWFudHNbaV07
Ci0gICAgICAgICAgICBTdHJ1Y3R1cmVTZXQgdGhpc1NldCA9IHZhcmlhbnQub2xkU3RydWN0dXJl
KCk7CisgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0IHRoaXNTZXQgPSAqbV9ncmFw
aC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSk7CiAgICAgICAgICAgICB0
aGlzU2V0LmZpbHRlcihiYXNlKTsKICAgICAgICAgICAgIGlmICh0aGlzU2V0LmlzRW1wdHkoKSkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTI2MTQsMTEgKzI2MTQsMTIgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgcmVzdWx0aW5n
VmFsdWUubWVyZ2UodGhpc1ZhbHVlKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKHZh
cmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHRoaXNTZXQub25seVN0cnVjdHVyZSgpICE9IHZhcmlhbnQubmV3U3RydWN0dXJl
KCkpIHsKKyAgICAgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG5ld1N0cnVjdHVyZSA9
IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7CisgICAg
ICAgICAgICAgICAgaWYgKHRoaXNTZXQub25seVN0cnVjdHVyZSgpICE9IG5ld1N0cnVjdHVyZSkg
ewogICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9ucy5hcHBlbmQoCi0gICAgICAgICAgICAg
ICAgICAgICAgICBUcmFuc2l0aW9uKHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigp
LCB2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBUcmFu
c2l0aW9uKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JU
cmFuc2l0aW9uKCkpLCBuZXdTdHJ1Y3R1cmUpKTsKICAgICAgICAgICAgICAgICB9IC8vIGVsc2Ug
dGhpcyBpcyByZWFsbHkgYSByZXBsYWNlLgotICAgICAgICAgICAgICAgIG5ld1NldC5hZGQodmFy
aWFudC5uZXdTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICAgICAgbmV3U2V0LmFkZChuZXdTdHJ1
Y3R1cmUpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBBU1NFUlQodmFy
aWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlJlcGxhY2UpOwogICAgICAgICAgICAgICAg
IG5ld1NldC5tZXJnZSh0aGlzU2V0KTsKQEAgLTI3MDUsMjUgKzI3MDYsMjUgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBpZiAodmFsdWUubV9zdHJ1
Y3R1cmUuaXNGaW5pdGUoKSkgewogICAgICAgICAgICAgUHV0QnlJZFN0YXR1cyBzdGF0dXMgPSBQ
dXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgdmFsdWUu
bV9zdHJ1Y3R1cmUuc2V0KCksCisgICAgICAgICAgICAgICAgdmFsdWUubV9zdHJ1Y3R1cmUudG9T
dHJ1Y3R1cmVTZXQoKSwKICAgICAgICAgICAgICAgICBtX2dyYXBoLmlkZW50aWZpZXJzKClbbm9k
ZS0+aWRlbnRpZmllck51bWJlcigpXSwKICAgICAgICAgICAgICAgICBub2RlLT5vcCgpID09IFB1
dEJ5SWREaXJlY3QpOwogCiAgICAgICAgICAgICBpZiAoc3RhdHVzLmlzU2ltcGxlKCkpIHsKLSAg
ICAgICAgICAgICAgICBTdHJ1Y3R1cmVTZXQgbmV3U2V0OworICAgICAgICAgICAgICAgIFJlZ2lz
dGVyZWRTdHJ1Y3R1cmVTZXQgbmV3U2V0OwogICAgICAgICAgICAgICAgIFRyYW5zaXRpb25WZWN0
b3IgdHJhbnNpdGlvbnM7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gc3RhdHVzLm51bVZhcmlhbnRzKCk7IGktLTspIHsKICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQgPSBzdGF0dXNbaV07CiAgICAgICAg
ICAgICAgICAgICAgIGlmICh2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6VHJhbnNp
dGlvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBuZXdT
dHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQubmV3U3RydWN0dXJl
KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbnMuYXBwZW5kKAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLCB2YXJpYW50Lm5l
d1N0cnVjdHVyZSgpKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVy
U3RydWN0dXJlKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgbmV3U2V0LmFkZCh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0cnVj
dHVyZUZvclRyYW5zaXRpb24oKSksIG5ld1N0cnVjdHVyZSkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgbmV3U2V0LmFkZChuZXdTdHJ1Y3R1cmUpOwogICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQua2luZCgpID09IFB1
dEJ5SWRWYXJpYW50OjpSZXBsYWNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NldC5t
ZXJnZSh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5l
d1NldC5tZXJnZSgqbV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5vbGRTdHJ1Y3R1cmUo
KSkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIApAQCAtMzA1OSw3ICszMDYwLDcgQEAgdm9pZCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBYnN0cmFjdFN0YXRlVHlwZT4KIHZv
aWQgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46Om9ic2VydmVUcmFuc2l0
aW9uKAotICAgIHVuc2lnbmVkIGNsb2JiZXJMaW1pdCwgU3RydWN0dXJlKiBmcm9tLCBTdHJ1Y3R1
cmUqIHRvKQorICAgIHVuc2lnbmVkIGNsb2JiZXJMaW1pdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBm
cm9tLCBSZWdpc3RlcmVkU3RydWN0dXJlIHRvKQogewogICAgIEFic3RyYWN0VmFsdWU6OlRyYW5z
aXRpb25PYnNlcnZlciB0cmFuc2l0aW9uT2JzZXJ2ZXIoZnJvbSwgdG8pOwogICAgIGZvckFsbFZh
bHVlcyhjbG9iYmVyTGltaXQsIHRyYW5zaXRpb25PYnNlcnZlcik7CkBAIC0zMTMyLDcgKzMxMzMs
NyBAQCB2b2lkIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIEFic3RyYWN0U3RhdGVUeXBlPgogRmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZmlsdGVyKAotICAgIEFic3RyYWN0VmFsdWUm
IHZhbHVlLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCwgU3BlY3VsYXRlZFR5cGUgYWRtaXR0ZWRU
eXBlcykKKyAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSwgY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVy
ZVNldCYgc2V0LCBTcGVjdWxhdGVkVHlwZSBhZG1pdHRlZFR5cGVzKQogewogICAgIGlmICh2YWx1
ZS5maWx0ZXIobV9ncmFwaCwgc2V0LCBhZG1pdHRlZFR5cGVzKSA9PSBGaWx0cmF0aW9uT0spCiAg
ICAgICAgIHJldHVybiBGaWx0cmF0aW9uT0s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUyLDggKzUyLDEwIEBAIHZvaWQgQWJzdHJhY3RWYWx1ZTo6c2V0KEdyYXBoJiBncmFwaCwg
Y28KIHsKICAgICBpZiAoISF2YWx1ZSAmJiB2YWx1ZS52YWx1ZSgpLmlzQ2VsbCgpKSB7CiAgICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdmFsdWUuc3RydWN0dXJlKCk7Ci0gICAgICAgIGlm
IChncmFwaC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpID09IFN0cnVjdHVyZVJlZ2lzdGVy
ZWRBbmRXYXRjaGVkKSB7Ci0gICAgICAgICAgICBtX3N0cnVjdHVyZSA9IHN0cnVjdHVyZTsKKyAg
ICAgICAgU3RydWN0dXJlUmVnaXN0cmF0aW9uUmVzdWx0IHJlc3VsdDsKKyAgICAgICAgUmVnaXN0
ZXJlZFN0cnVjdHVyZSBSZWdpc3RlcmVkU3RydWN0dXJlID0gZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1
cmUoc3RydWN0dXJlLCByZXN1bHQpOworICAgICAgICBpZiAocmVzdWx0ID09IFN0cnVjdHVyZVJl
Z2lzdGVyZWRBbmRXYXRjaGVkKSB7CisgICAgICAgICAgICBtX3N0cnVjdHVyZSA9IFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmU7CiAgICAgICAgICAgICBpZiAoY2xvYmJlclN0YXRlID09IFN0cnVjdHVyZXNB
cmVDbG9iYmVyZWQpIHsKICAgICAgICAgICAgICAgICBtX2FycmF5TW9kZXMgPSBBTExfQVJSQVlf
TU9ERVM7CiAgICAgICAgICAgICAgICAgbV9zdHJ1Y3R1cmUuY2xvYmJlcigpOwpAQCAtNzcsMTgg
Kzc5LDIzIEBAIHZvaWQgQWJzdHJhY3RWYWx1ZTo6c2V0KEdyYXBoJiBncmFwaCwgY28KIAogdm9p
ZCBBYnN0cmFjdFZhbHVlOjpzZXQoR3JhcGgmIGdyYXBoLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
IHsKKyAgICBzZXQoZ3JhcGgsIGdyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkpOwor
fQorCit2b2lkIEFic3RyYWN0VmFsdWU6OnNldChHcmFwaCYgZ3JhcGgsIFJlZ2lzdGVyZWRTdHJ1
Y3R1cmUgc3RydWN0dXJlKQorewogICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZSk7CiAgICAg
CiAgICAgbV9zdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CiAgICAgbV9hcnJheU1vZGVzID0gYXNBcnJh
eU1vZGVzKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpOwotICAgIG1fdHlwZSA9IHNwZWN1bGF0
aW9uRnJvbVN0cnVjdHVyZShzdHJ1Y3R1cmUpOworICAgIG1fdHlwZSA9IHNwZWN1bGF0aW9uRnJv
bVN0cnVjdHVyZShzdHJ1Y3R1cmUuZ2V0KCkpOwogICAgIG1fdmFsdWUgPSBKU1ZhbHVlKCk7CiAg
ICAgCiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgIGFzc2VydElzUmVnaXN0ZXJlZChncmFw
aCk7CiB9CiAKLXZvaWQgQWJzdHJhY3RWYWx1ZTo6c2V0KEdyYXBoJiBncmFwaCwgY29uc3QgU3Ry
dWN0dXJlU2V0JiBzZXQpCit2b2lkIEFic3RyYWN0VmFsdWU6OnNldChHcmFwaCYgZ3JhcGgsIGNv
bnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIHNldCkKIHsKICAgICBtX3N0cnVjdHVyZSA9IHNl
dDsKICAgICBtX2FycmF5TW9kZXMgPSBzZXQuYXJyYXlNb2Rlc0Zyb21TdHJ1Y3R1cmVzKCk7CkBA
IC0xMDQsOSArMTExLDkgQEAgdm9pZCBBYnN0cmFjdFZhbHVlOjpzZXRUeXBlKEdyYXBoJiBncmFw
aAogICAgIFNwZWN1bGF0ZWRUeXBlIGNlbGxUeXBlID0gdHlwZSAmIFNwZWNDZWxsOwogICAgIGlm
IChjZWxsVHlwZSkgewogICAgICAgICBpZiAoIShjZWxsVHlwZSAmIH5TcGVjU3RyaW5nKSkKLSAg
ICAgICAgICAgIG1fc3RydWN0dXJlID0gZ3JhcGgubV92bS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCk7
CisgICAgICAgICAgICBtX3N0cnVjdHVyZSA9IGdyYXBoLnN0cmluZ1N0cnVjdHVyZTsKICAgICAg
ICAgZWxzZSBpZiAoaXNTeW1ib2xTcGVjdWxhdGlvbihjZWxsVHlwZSkpCi0gICAgICAgICAgICBt
X3N0cnVjdHVyZSA9IGdyYXBoLm1fdm0uc3ltYm9sU3RydWN0dXJlLmdldCgpOworICAgICAgICAg
ICAgbV9zdHJ1Y3R1cmUgPSBncmFwaC5zeW1ib2xTdHJ1Y3R1cmU7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIG1fc3RydWN0dXJlLm1ha2VUb3AoKTsKICAgICAgICAgbV9hcnJheU1vZGVzID0g
QUxMX0FSUkFZX01PREVTOwpAQCAtMjE3LDcgKzIyNCw3IEBAIGJvb2wgQWJzdHJhY3RWYWx1ZTo6
bWVyZ2VPU1JFbnRyeVZhbHVlKEcKICAgICBpZiAoaXNDbGVhcigpKSB7CiAgICAgICAgIEZyb3pl
blZhbHVlKiBmcm96ZW5WYWx1ZSA9IGdyYXBoLmZyZWV6ZSh2YWx1ZSk7CiAgICAgICAgIGlmIChm
cm96ZW5WYWx1ZS0+cG9pbnRzVG9IZWFwKCkpIHsKLSAgICAgICAgICAgIG1fc3RydWN0dXJlID0g
ZnJvemVuVmFsdWUtPnN0cnVjdHVyZSgpOworICAgICAgICAgICAgbV9zdHJ1Y3R1cmUgPSBncmFw
aC5yZWdpc3RlclN0cnVjdHVyZShmcm96ZW5WYWx1ZS0+c3RydWN0dXJlKCkpOwogICAgICAgICAg
ICAgbV9hcnJheU1vZGVzID0gYXNBcnJheU1vZGVzKGZyb3plblZhbHVlLT5zdHJ1Y3R1cmUoKS0+
aW5kZXhpbmdUeXBlKCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV9zdHJ1Y3R1
cmUuY2xlYXIoKTsKQEAgLTIyOSwxMCArMjM2LDkgQEAgYm9vbCBBYnN0cmFjdFZhbHVlOjptZXJn
ZU9TUkVudHJ5VmFsdWUoRwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1lcmdlU3BlY3VsYXRpb24o
bV90eXBlLCBzcGVjdWxhdGlvbkZyb21WYWx1ZSh2YWx1ZSkpOwogICAgICAgICBpZiAoISF2YWx1
ZSAmJiB2YWx1ZS5pc0NlbGwoKSkgewotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSB2YWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCk7Ci0gICAgICAgICAgICBncmFwaC5yZWdpc3Rl
clN0cnVjdHVyZShzdHJ1Y3R1cmUpOworICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBz
dHJ1Y3R1cmUgPSBncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YWx1ZS5hc0NlbGwoKS0+c3RydWN0
dXJlKCkpOwogICAgICAgICAgICAgbWVyZ2VBcnJheU1vZGVzKG1fYXJyYXlNb2RlcywgYXNBcnJh
eU1vZGVzKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKTsKLSAgICAgICAgICAgIG1fc3RydWN0
dXJlLm1lcmdlKFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgIG1fc3RydWN0
dXJlLm1lcmdlKFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSk7CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKG1fdmFsdWUgIT0gdmFsdWUpCiAgICAgICAgICAgICBtX3ZhbHVlID0gSlNW
YWx1ZSgpOwpAQCAtMjU2LDcgKzI2Miw3IEBAIGJvb2wgQWJzdHJhY3RWYWx1ZTo6aXNUeXBlKEdy
YXBoJiBncmFwaCwKIH0KIAogRmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdFZhbHVlOjpmaWx0ZXIo
Ci0gICAgR3JhcGgmIGdyYXBoLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyLCBTcGVjdWxhdGVk
VHlwZSBhZG1pdHRlZFR5cGVzKQorICAgIEdyYXBoJiBncmFwaCwgY29uc3QgUmVnaXN0ZXJlZFN0
cnVjdHVyZVNldCYgb3RoZXIsIFNwZWN1bGF0ZWRUeXBlIGFkbWl0dGVkVHlwZXMpCiB7CiAgICAg
QVNTRVJUKCEoYWRtaXR0ZWRUeXBlcyAmIFNwZWNDZWxsKSk7CiAgICAgCkBAIC0yNzIsMTAgKzI3
OCwxMCBAQCBGaWx0cmF0aW9uUmVzdWx0IEFic3RyYWN0VmFsdWU6OmZpbHRlcigKICAgICBtX3N0
cnVjdHVyZS5maWx0ZXIob3RoZXIpOwogICAgIAogICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCBw
cmlvciB0byB0aGUgYWJvdmUgdHdvIHN0YXRlbWVudHMgd2UgaGFkIChGb28sIFRPUCksIHdoZXJl
Ci0gICAgLy8gRm9vIGlzIGEgU3BlY3VsYXRlZFR5cGUgdGhhdCBpcyBkaXNqb2ludCB3aXRoIHRo
ZSBwYXNzZWQgU3RydWN0dXJlU2V0LiBJbiB0aGF0CisgICAgLy8gRm9vIGlzIGEgU3BlY3VsYXRl
ZFR5cGUgdGhhdCBpcyBkaXNqb2ludCB3aXRoIHRoZSBwYXNzZWQgUmVnaXN0ZXJlZFN0cnVjdHVy
ZVNldC4gSW4gdGhhdAogICAgIC8vIGNhc2UsIHdlIHdpbGwgbm93IGhhdmUgKE5vbmUsIFtzb21l
U3RydWN0dXJlXSkuIEluIGdlbmVyYWwsIHdlIG5lZWQgdG8gbWFrZQogICAgIC8vIHN1cmUgdGhh
dCBuZXcgaW5mb3JtYXRpb24gZ2xlYW5lZCBmcm9tIHRoZSBTcGVjdWxhdGVkVHlwZSBuZWVkcyB0
byBiZSBmZWQgYmFjawotICAgIC8vIGludG8gdGhlIGluZm9ybWF0aW9uIGdsZWFuZWQgZnJvbSB0
aGUgU3RydWN0dXJlU2V0LgorICAgIC8vIGludG8gdGhlIGluZm9ybWF0aW9uIGdsZWFuZWQgZnJv
bSB0aGUgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldC4KICAgICBtX3N0cnVjdHVyZS5maWx0ZXIobV90
eXBlKTsKICAgICAKICAgICBmaWx0ZXJBcnJheU1vZGVzQnlUeXBlKCk7CkBAIC0yODMsNyArMjg5
LDcgQEAgRmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdFZhbHVlOjpmaWx0ZXIoCiAgICAgcmV0dXJu
IG5vcm1hbGl6ZUNsYXJpdHkoZ3JhcGgpOwogfQogCi1GaWx0cmF0aW9uUmVzdWx0IEFic3RyYWN0
VmFsdWU6OmNoYW5nZVN0cnVjdHVyZShHcmFwaCYgZ3JhcGgsIGNvbnN0IFN0cnVjdHVyZVNldCYg
b3RoZXIpCitGaWx0cmF0aW9uUmVzdWx0IEFic3RyYWN0VmFsdWU6OmNoYW5nZVN0cnVjdHVyZShH
cmFwaCYgZ3JhcGgsIGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIG90aGVyKQogewogICAg
IG1fdHlwZSAmPSBvdGhlci5zcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmVzKCk7CiAgICAgbV9hcnJh
eU1vZGVzID0gb3RoZXIuYXJyYXlNb2Rlc0Zyb21TdHJ1Y3R1cmVzKCk7CkBAIC0zNjEsMTAgKzM2
NywxMCBAQCBGaWx0cmF0aW9uUmVzdWx0IEFic3RyYWN0VmFsdWU6OmZpbHRlckJ5CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBBYnN0cmFjdFZhbHVlOjpjb250YWlucyhTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkgY29uc3QKK2Jvb2wgQWJzdHJhY3RWYWx1ZTo6Y29udGFpbnMoUmVnaXN0ZXJl
ZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvdWxkQmVUeXBlKHNw
ZWN1bGF0aW9uRnJvbVN0cnVjdHVyZShzdHJ1Y3R1cmUpKQotICAgICAgICAmJiAobV9hcnJheU1v
ZGVzICYgYXJyYXlNb2RlRnJvbVN0cnVjdHVyZShzdHJ1Y3R1cmUpKQorICAgIHJldHVybiBjb3Vs
ZEJlVHlwZShzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmUoc3RydWN0dXJlLmdldCgpKSkKKyAgICAg
ICAgJiYgKG1fYXJyYXlNb2RlcyAmIGFycmF5TW9kZUZyb21TdHJ1Y3R1cmUoc3RydWN0dXJlLmdl
dCgpKSkKICAgICAgICAgJiYgbV9zdHJ1Y3R1cmUuY29udGFpbnMoc3RydWN0dXJlKTsKIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgJKHJl
dmlzaW9uIDIxMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RW
YWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiUmVzdWx0
VHlwZS5oIgogI2luY2x1ZGUgIlNwZWN1bGF0ZWRUeXBlLmgiCiAjaW5jbHVkZSAiRHVtcENvbnRl
eHQuaCIKLSNpbmNsdWRlICJTdHJ1Y3R1cmVTZXQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAg
LTEyMCw3ICsxMTksNyBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgIHZhbHVlLm9i
c2VydmVJbnZhbGlkYXRpb25Qb2ludCgpOwogICAgIH0KICAgICAKLSAgICB2b2lkIG9ic2VydmVU
cmFuc2l0aW9uKFN0cnVjdHVyZSogZnJvbSwgU3RydWN0dXJlKiB0bykKKyAgICB2b2lkIG9ic2Vy
dmVUcmFuc2l0aW9uKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgZnJvbSwgUmVnaXN0ZXJlZFN0cnVjdHVy
ZSB0bykKICAgICB7CiAgICAgICAgIGlmIChtX3R5cGUgJiBTcGVjQ2VsbCkgewogICAgICAgICAg
ICAgbV9zdHJ1Y3R1cmUub2JzZXJ2ZVRyYW5zaXRpb24oZnJvbSwgdG8pOwpAQCAtMTMzLDcgKzEz
Miw3IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAKICAgICBjbGFzcyBUcmFuc2l0aW9u
T2JzZXJ2ZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAgVHJhbnNpdGlvbk9ic2VydmVyKFN0cnVj
dHVyZSogZnJvbSwgU3RydWN0dXJlKiB0bykKKyAgICAgICAgVHJhbnNpdGlvbk9ic2VydmVyKFJl
Z2lzdGVyZWRTdHJ1Y3R1cmUgZnJvbSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSB0bykKICAgICAgICAg
ICAgIDogbV9mcm9tKGZyb20pCiAgICAgICAgICAgICAsIG1fdG8odG8pCiAgICAgICAgIHsKQEAg
LTE0NCw4ICsxNDMsOCBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgICAgICB2YWx1
ZS5vYnNlcnZlVHJhbnNpdGlvbihtX2Zyb20sIG1fdG8pOwogICAgICAgICB9CiAgICAgcHJpdmF0
ZToKLSAgICAgICAgU3RydWN0dXJlKiBtX2Zyb207Ci0gICAgICAgIFN0cnVjdHVyZSogbV90bzsK
KyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBtX2Zyb207CisgICAgICAgIFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgbV90bzsKICAgICB9OwogICAgIAogICAgIGNsYXNzIFRyYW5zaXRpb25zT2JzZXJ2
ZXIgewpAQCAtMjA5LDcgKzIwOCw4IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAKICAg
ICB2b2lkIHNldChHcmFwaCYsIGNvbnN0IEZyb3plblZhbHVlJiwgU3RydWN0dXJlQ2xvYmJlclN0
YXRlKTsKICAgICB2b2lkIHNldChHcmFwaCYsIFN0cnVjdHVyZSopOwotICAgIHZvaWQgc2V0KEdy
YXBoJiwgY29uc3QgU3RydWN0dXJlU2V0Jik7CisgICAgdm9pZCBzZXQoR3JhcGgmLCBSZWdpc3Rl
cmVkU3RydWN0dXJlKTsKKyAgICB2b2lkIHNldChHcmFwaCYsIGNvbnN0IFJlZ2lzdGVyZWRTdHJ1
Y3R1cmVTZXQmKTsKICAgICAKICAgICAvLyBTZXQgdGhpcyB2YWx1ZSB0byByZXByZXNlbnQgdGhl
IGdpdmVuIHNldCBvZiB0eXBlcyBhcyBwcmVjaXNlbHkgYXMgcG9zc2libGUuCiAgICAgdm9pZCBz
ZXRUeXBlKEdyYXBoJiwgU3BlY3VsYXRlZFR5cGUpOwpAQCAtMzAxLDcgKzMwMSw3IEBAIHN0cnVj
dCBBYnN0cmFjdFZhbHVlIHsKICAgICAvLyBTcGVjQ2VsbC4gSGVuY2UsIGFmdGVyIHRoaXMgY2Fs
bCwgdGhlIHZhbHVlIHdpbGwgbm8gbG9uZ2VyIGhhdmUgYW55IG5vbi1jZWxsIG1lbWJlcnMuIEJ1
dCwgeW91IGNhbgogICAgIC8vIHVzZSBhZG1pdHRlZFR5cGVzIHRvIHByZXNlcnZlIHNvbWUgbm9u
LWNlbGwgdHlwZXMuIE5vdGUgdGhhdCBpdCdzIHdyb25nIGZvciBhZG1pdHRlZFR5cGVzIHRvIG92
ZXJsYXAKICAgICAvLyB3aXRoIFNwZWNDZWxsLgotICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVy
KEdyYXBoJiwgY29uc3QgU3RydWN0dXJlU2V0JiwgU3BlY3VsYXRlZFR5cGUgYWRtaXR0ZWRUeXBl
cyA9IFNwZWNOb25lKTsKKyAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlcihHcmFwaCYsIGNvbnN0
IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmLCBTcGVjdWxhdGVkVHlwZSBhZG1pdHRlZFR5cGVzID0g
U3BlY05vbmUpOwogICAgIAogICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyQXJyYXlNb2RlcyhB
cnJheU1vZGVzKTsKICAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlcihTcGVjdWxhdGVkVHlwZSk7
CkBAIC0zMTEsOSArMzExLDkgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogCiAgICAgRmlsdHJh
dGlvblJlc3VsdCBmaWx0ZXIoR3JhcGgmLCBjb25zdCBJbmZlcnJlZFR5cGU6OkRlc2NyaXB0b3Im
KTsKICAgICAKLSAgICBGaWx0cmF0aW9uUmVzdWx0IGNoYW5nZVN0cnVjdHVyZShHcmFwaCYsIGNv
bnN0IFN0cnVjdHVyZVNldCYpOworICAgIEZpbHRyYXRpb25SZXN1bHQgY2hhbmdlU3RydWN0dXJl
KEdyYXBoJiwgY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYpOwogICAgIAotICAgIGJvb2wg
Y29udGFpbnMoU3RydWN0dXJlKikgY29uc3Q7CisgICAgYm9vbCBjb250YWlucyhSZWdpc3RlcmVk
U3RydWN0dXJlKSBjb25zdDsKIAogICAgIGJvb2wgdmFsaWRhdGUoSlNWYWx1ZSB2YWx1ZSkgY29u
c3QKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0Vs
aW1pbmF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIxMTIyOSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM5Myw3ICszOTMsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUpOwogCi0g
ICAgICAgICAgICAgICAgICAgIGlmICghbm9kZS0+c3RydWN0dXJlU2V0KCkuY29udGFpbnMoc3Ry
dWN0dXJlKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlLT5zdHJ1Y3R1cmVTZXQoKS5j
b250YWlucyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkpKQogICAgICAgICAg
ICAgICAgICAgICAgICAgZXNjYXBlKG5vZGUtPmNoaWxkMSgpLCBub2RlKTsKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAkocmV2aXNpb24gMjExMjI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NjAsMTIgKzM2MCwxMiBAQCBib29sIEFycmF5TW9kZTo6YWxyZWFkeUNoZWNrZWQoR3JhcGgmIGdy
CiAgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc1RvcCgpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSB2YWx1ZS5tX3N0cnVjdHVyZS5z
aXplKCk7IGktLTspIHsKLSAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdmFsdWUu
bV9zdHJ1Y3R1cmVbaV07CisgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVy
ZSA9IHZhbHVlLm1fc3RydWN0dXJlW2ldOwogICAgICAgICAgICAgaWYgKChzdHJ1Y3R1cmUtPmlu
ZGV4aW5nVHlwZSgpICYgSW5kZXhpbmdTaGFwZU1hc2spICE9IHNoYXBlKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGlmICghKHN0cnVjdHVyZS0+aW5kZXhpbmdU
eXBlKCkgJiBJc0FycmF5KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICBpZiAoIWdyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5p
c09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmUoc3RydWN0dXJlKSkKKyAgICAgICAgICAgIGlmICghZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmlzT3JpZ2luYWxBcnJh
eVN0cnVjdHVyZShzdHJ1Y3R1cmUuZ2V0KCkpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM3Nyw3ICszNzcsNyBAQCBi
b29sIEFycmF5TW9kZTo6YWxyZWFkeUNoZWNrZWQoR3JhcGgmIGdyCiAgICAgICAgIGlmICh2YWx1
ZS5tX3N0cnVjdHVyZS5pc1RvcCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSB2YWx1ZS5tX3N0cnVjdHVyZS5zaXplKCk7IGktLTspIHsKLSAg
ICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdmFsdWUubV9zdHJ1Y3R1cmVbaV07Cisg
ICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IHZhbHVlLm1fc3RydWN0
dXJlW2ldOwogICAgICAgICAgICAgaWYgKChzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpICYgSW5k
ZXhpbmdTaGFwZU1hc2spICE9IHNoYXBlKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIGlmICghKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkgJiBJc0FycmF5KSkK
QEAgLTM5Miw3ICszOTIsNyBAQCBib29sIEFycmF5TW9kZTo6YWxyZWFkeUNoZWNrZWQoR3JhcGgm
IGdyCiAgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc1RvcCgpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSB2YWx1ZS5tX3N0cnVjdHVy
ZS5zaXplKCk7IGktLTspIHsKLSAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdmFs
dWUubV9zdHJ1Y3R1cmVbaV07CisgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVj
dHVyZSA9IHZhbHVlLm1fc3RydWN0dXJlW2ldOwogICAgICAgICAgICAgaWYgKChzdHJ1Y3R1cmUt
PmluZGV4aW5nVHlwZSgpICYgSW5kZXhpbmdTaGFwZU1hc2spICE9IHNoYXBlKQogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtNDQwLDcgKzQ0MCw3IEBAIGJvb2wg
QXJyYXlNb2RlOjphbHJlYWR5Q2hlY2tlZChHcmFwaCYgZ3IKICAgICAgICAgICAgIGlmICh2YWx1
ZS5tX3N0cnVjdHVyZS5pc1RvcCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHZhbHVlLm1fc3RydWN0dXJlLnNpemUoKTsgaS0t
OykgewotICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdmFsdWUubV9zdHJ1
Y3R1cmVbaV07CisgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUg
PSB2YWx1ZS5tX3N0cnVjdHVyZVtpXTsKICAgICAgICAgICAgICAgICBpZiAoIWhhc0FueUFycmF5
U3RvcmFnZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGlmICghKHN0cnVjdHVyZS0+aW5kZXhpbmdU
eXBlKCkgJiBJc0FycmF5KSkKQEAgLTQ1NSw3ICs0NTUsNyBAQCBib29sIEFycmF5TW9kZTo6YWxy
ZWFkeUNoZWNrZWQoR3JhcGgmIGdyCiAgICAgICAgICAgICBpZiAodmFsdWUubV9zdHJ1Y3R1cmUu
aXNUb3AoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSB2YWx1ZS5tX3N0cnVjdHVyZS5zaXplKCk7IGktLTspIHsKLSAgICAgICAg
ICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZhbHVlLm1fc3RydWN0dXJlW2ldOworICAg
ICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gdmFsdWUubV9zdHJ1
Y3R1cmVbaV07CiAgICAgICAgICAgICAgICAgaWYgKCFoYXNBbnlBcnJheVN0b3JhZ2Uoc3RydWN0
dXJlLT5pbmRleGluZ1R5cGUoKSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlp
ZnlTbG93UGF0aEdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oCShyZXZpc2lvbiAyMTEyMjkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgICAgIDogSnVt
cGluZ1Nsb3dQYXRoR2VuZXJhdG9yPE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdD4oZnJvbSwgaml0
KQogICAgICAgICAsIG1fb3Aobm9kZS0+b3AoKSkKICAgICAgICAgLCBtX2FycmF5TW9kZShub2Rl
LT5hcnJheU1vZGUoKSkKLSAgICAgICAgLCBtX3N0cnVjdHVyZShub2RlLT5vcCgpID09IEFycmF5
aWZ5VG9TdHJ1Y3R1cmUgPyBub2RlLT5zdHJ1Y3R1cmUoKSA6IDApCisgICAgICAgICwgbV9zdHJ1
Y3R1cmUobm9kZS0+b3AoKSA9PSBBcnJheWlmeVRvU3RydWN0dXJlID8gbm9kZS0+c3RydWN0dXJl
KCkgOiBSZWdpc3RlcmVkU3RydWN0dXJlKCkpCiAgICAgICAgICwgbV9iYXNlR1BSKGJhc2VHUFIp
CiAgICAgICAgICwgbV9wcm9wZXJ0eUdQUihwcm9wZXJ0eUdQUikKICAgICAgICAgLCBtX3RlbXBH
UFIodGVtcEdQUikKQEAgLTExNSw3ICsxMTUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGppdC0+
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgCiAgICAgICAgIGlmIChtX29wID09IEFy
cmF5aWZ5VG9TdHJ1Y3R1cmUpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX3N0cnVjdHVyZSk7Cisg
ICAgICAgICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUuZ2V0KCkpOwogICAgICAgICAgICAgbV9iYWRJ
bmRleGluZ1R5cGVKdW1wLmZpbGwoCiAgICAgICAgICAgICAgICAgaml0LCBqaXQtPm1faml0LmJy
YW5jaFdlYWtTdHJ1Y3R1cmUoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhtX2Jhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIG1fc3Ry
dWN0dXJlKSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0xMzYsNyArMTM2LDcgQEAgcHJvdGVjdGVk
OgogcHJpdmF0ZToKICAgICBOb2RlVHlwZSBtX29wOwogICAgIEFycmF5TW9kZSBtX2FycmF5TW9k
ZTsKLSAgICBTdHJ1Y3R1cmUqIG1fc3RydWN0dXJlOworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
bV9zdHJ1Y3R1cmU7CiAgICAgR1BSUmVnIG1fYmFzZUdQUjsKICAgICBHUFJSZWcgbV9wcm9wZXJ0
eUdQUjsKICAgICBHUFJSZWcgbV90ZW1wR1BSOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOTYwLDcgKzI5NjAsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25z
dGFudEludGVyCiAgICAgICAgICAgICByZXN1bHQgPSBhZGRUb0dyYXBoKENhbGxTdHJpbmdDb25z
dHJ1Y3RvciwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0
KSkpOwogICAgICAgICAKICAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCkKLSAg
ICAgICAgICAgIHJlc3VsdCA9IGFkZFRvR3JhcGgoTmV3U3RyaW5nT2JqZWN0LCBPcEluZm8oZnVu
Y3Rpb24tPmdsb2JhbE9iamVjdCgpLT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSksIHJlc3VsdCk7
CisgICAgICAgICAgICByZXN1bHQgPSBhZGRUb0dyYXBoKE5ld1N0cmluZ09iamVjdCwgT3BJbmZv
KG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgpLT5zdHJp
bmdPYmplY3RTdHJ1Y3R1cmUoKSkpLCByZXN1bHQpOwogICAgICAgICAKICAgICAgICAgc2V0KFZp
cnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CkBAIC0yOTcyLDcgKzI5NzIsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25z
dGFudEludGVyCiAKICAgICAgICAgTm9kZSogcmVzdWx0OwogICAgICAgICBpZiAoYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgPD0gMSkKLSAgICAgICAgICAgIHJlc3VsdCA9IGFkZFRvR3JhcGgo
TmV3T2JqZWN0LCBPcEluZm8oZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgpLT5vYmplY3RTdHJ1Y3R1
cmVGb3JPYmplY3RDb25zdHJ1Y3RvcigpKSk7CisgICAgICAgICAgICByZXN1bHQgPSBhZGRUb0dy
YXBoKE5ld09iamVjdCwgT3BJbmZvKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZnVuY3Rpb24t
Pmdsb2JhbE9iamVjdCgpLT5vYmplY3RTdHJ1Y3R1cmVGb3JPYmplY3RDb25zdHJ1Y3RvcigpKSkp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXN1bHQgPSBhZGRUb0dyYXBoKENhbGxPYmpl
Y3RDb25zdHJ1Y3RvciwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVy
T2Zmc2V0KSkpOwogICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBy
ZXN1bHQpOwpAQCAtMzM4Myw3ICszMzgzLDcgQEAgTm9kZSogQnl0ZUNvZGVQYXJzZXI6OmxvYWQo
CiAgICAgICAgICAgICAvLyBXZSBkaWQgZW1pdCBhIHN0cnVjdHVyZSBjaGVjay4gVGhhdCBtZWFu
cyB0aGF0IHdlIGhhdmUgYW4gb3Bwb3J0dW5pdHkgdG8gZG8gY29uc3RhbnQgZm9sZGluZwogICAg
ICAgICAgICAgLy8gaGVyZSwgc2luY2Ugd2UgZGlkbid0IGRvIGl0IGFib3ZlLgogICAgICAgICAg
ICAgSlNWYWx1ZSBjb25zdGFudCA9IG1fZ3JhcGgudHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eSgKLSAg
ICAgICAgICAgICAgICBiYXNlLT5hc0pTVmFsdWUoKSwgdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSwg
dmFyaWFudC5vZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgYmFzZS0+YXNKU1ZhbHVlKCksICpt
X2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50LnN0cnVjdHVyZVNldCgpKSwgdmFyaWFudC5v
ZmZzZXQoKSk7CiAgICAgICAgICAgICBpZiAoY29uc3RhbnQpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHdlYWtKU0NvbnN0YW50KGNvbnN0YW50KTsKICAgICAgICAgfQpAQCAtMzQyOSw3ICszNDI5
LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgICAgICBpZiAob2spCi0gICAgICAgICAgICBnZXRCeUlkU3RhdHVzLmZp
bHRlcihiYXNlLT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICBnZXRCeUlkU3RhdHVzLmZpbHRl
cihiYXNlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CiAgICAgfQogICAgIAogICAgIE5vZGVUeXBlIGdl
dEJ5SWQ7CkBAIC0zNDgyLDcgKzM0ODIsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVH
ZXRCeUlkKAogICAgICAgICAgICAgaWYgKHZhcmlhbnQuY29uZGl0aW9uU2V0KCkuaXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICAgICAgY2FzZXMuYXBwZW5kKAogICAgICAgICAgICAgICAgICAgICBN
dWx0aUdldEJ5T2Zmc2V0Q2FzZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQuc3Ry
dWN0dXJlU2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAqbV9ncmFwaC5hZGRTdHJ1Y3R1
cmVTZXQodmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICBH
ZXRCeU9mZnNldE1ldGhvZDo6bG9hZCh2YXJpYW50Lm9mZnNldCgpKSkpOwogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQpAQCAtMzQ5NCw3ICszNDk0LDcgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2VzLmFwcGVuZChNdWx0
aUdldEJ5T2Zmc2V0Q2FzZSh2YXJpYW50LnN0cnVjdHVyZVNldCgpLCBtZXRob2QpKTsKKyAgICAg
ICAgICAgIGNhc2VzLmFwcGVuZChNdWx0aUdldEJ5T2Zmc2V0Q2FzZSgqbV9ncmFwaC5hZGRTdHJ1
Y3R1cmVTZXQodmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSksIG1ldGhvZCkpOwogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKG1fZ3JhcGguY29tcGlsYXRpb24oKSkKQEAgLTM2MjEsOCArMzYyMSwxMyBA
QCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgICAgICBpZiAobV9ncmFw
aC5jb21waWxhdGlvbigpKQogICAgICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5ub3Rp
Y2VJbmxpbmVkUHV0QnlJZCgpOwogCi0gICAgICAgIGZvciAoY29uc3QgUHV0QnlJZFZhcmlhbnQm
IHZhcmlhbnQgOiBwdXRCeUlkU3RhdHVzLnZhcmlhbnRzKCkpCisgICAgICAgIGZvciAoY29uc3Qg
UHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBwdXRCeUlkU3RhdHVzLnZhcmlhbnRzKCkpIHsKICAg
ICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJJbmZlcnJlZFR5cGUodmFyaWFudC5yZXF1aXJlZFR5
cGUoKSk7CisgICAgICAgICAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogdmFyaWFudC5v
bGRTdHJ1Y3R1cmUoKSkKKyAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJl
KHN0cnVjdHVyZSk7CisgICAgICAgICAgICBpZiAodmFyaWFudC5raW5kKCkgPT0gUHV0QnlJZFZh
cmlhbnQ6OlRyYW5zaXRpb24pCisgICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVj
dHVyZSh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKTsKKyAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgTXVsdGlQdXRCeU9mZnNldERhdGEqIGRhdGEgPSBtX2dyYXBoLm1fbXVsdGlQdXRCeU9mZnNl
dERhdGEuYWRkKCk7CiAgICAgICAgIGRhdGEtPnZhcmlhbnRzID0gcHV0QnlJZFN0YXR1cy52YXJp
YW50cygpOwpAQCAtMzY1Myw3ICszNjU4LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
UHV0QnlJZCgKICAgICAKICAgICAgICAgTm9kZSogcHJvcGVydHlTdG9yYWdlOwogICAgICAgICBU
cmFuc2l0aW9uKiB0cmFuc2l0aW9uID0gbV9ncmFwaC5tX3RyYW5zaXRpb25zLmFkZCgKLSAgICAg
ICAgICAgIHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLCB2YXJpYW50Lm5ld1N0
cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFu
dC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCkpLCBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJl
KHZhcmlhbnQubmV3U3RydWN0dXJlKCkpKTsKIAogICAgICAgICBpZiAodmFyaWFudC5yZWFsbG9j
YXRlc1N0b3JhZ2UoKSkgewogCkBAIC0zOTAwLDcgKzM5MDUsNyBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBo
LndhdGNocG9pbnRzKCkuYWRkTGF6aWx5KHJhcmVEYXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNo
cG9pbnRTZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgY2FsbGVlIGlzIHN0
aWxsIGxpdmUgdXAgdG8gdGhpcyBwb2ludC4KICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoUGhhbnRvbSwgY2FsbGVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNldChWaXJ0
dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGFkZFRvR3JhcGgo
TmV3T2JqZWN0LCBPcEluZm8oc3RydWN0dXJlKSkpOworICAgICAgICAgICAgICAgICAgICAgICAg
c2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRk
VG9HcmFwaChOZXdPYmplY3QsIE9wSW5mbyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVj
dHVyZSkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBhbHJlYWR5RW1pdHRlZCA9IHRydWU7
CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0zOTE1LDcgKzM5
MjAsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAg
IGNhc2Ugb3BfbmV3X29iamVjdDogewogICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3Rlcihj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwKICAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKE5ld09iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgT3BJbmZvKGN1cnJlbnRJbnN0cnVj
dGlvblszXS51Lm9iamVjdEFsbG9jYXRpb25Qcm9maWxlLT5zdHJ1Y3R1cmUoKSkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoY3VycmVudElu
c3RydWN0aW9uWzNdLnUub2JqZWN0QWxsb2NhdGlvblByb2ZpbGUtPnN0cnVjdHVyZSgpKSkpKTsK
ICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19vYmplY3QpOwogICAgICAgICB9CiAgICAg
ICAgICAgICAKQEAgLTU2NzgsNyArNTY4Myw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFj
a0VudHJ5OjpJbmxpbmUKICAgICAgICAgQVNTRVJUKGNhbGxzaXRlQmxvY2tIZWFkKTsKICAgICAg
ICAgCiAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lID0gYnl0ZUNvZGVQYXJzZXItPm1fZ3JhcGgu
bV9wbGFuLmlubGluZUNhbGxGcmFtZXMtPmFkZCgpOwotICAgICAgICBieXRlQ29kZVBhcnNlci0+
bV9ncmFwaC5mcmVlemUoY29kZUJsb2NrLT5iYXNlbGluZVZlcnNpb24oKSk7CisKICAgICAgICAg
Ly8gVGhlIG93bmVyIGlzIHRoZSBtYWNoaW5lIGNvZGUgYmxvY2ssIGFuZCB3ZSBhbHJlYWR5IGhh
dmUgYSBiYXJyaWVyIG9uIHRoYXQgd2hlbiB0aGUKICAgICAgICAgLy8gcGxhbiBmaW5pc2hlcy4K
ICAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLnNldFdpdGhvdXRX
cml0ZUJhcnJpZXIoY29kZUJsb2NrLT5iYXNlbGluZVZlcnNpb24oKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxsQXJyYXlB
bGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgQ2FsbEFycmF5QWxsb2Nh
dG9yU2xvd1BhdGhHZW5lcmF0bwogcHVibGljOgogICAgIENhbGxBcnJheUFsbG9jYXRvclNsb3dQ
YXRoR2VuZXJhdG9yKAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZnJvbSwgU3Bl
Y3VsYXRpdmVKSVQqIGppdCwgUF9KSVRPcGVyYXRpb25fRVN0WkIgZnVuY3Rpb24sCi0gICAgICAg
IEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzdG9yYWdlR1BSLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgc2l6ZV90IHNpemUpCisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzdG9yYWdl
R1BSLCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgc2l6ZV90IHNpemUpCiAgICAgICAg
IDogSnVtcGluZ1Nsb3dQYXRoR2VuZXJhdG9yPE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdD4oZnJv
bSwgaml0KQogICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCiAgICAgICAgICwgbV9yZXN1
bHRHUFIocmVzdWx0R1BSKQpAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogICAgIFBfSklUT3Bl
cmF0aW9uX0VTdFpCIG1fZnVuY3Rpb247CiAgICAgR1BSUmVnIG1fcmVzdWx0R1BSOwogICAgIEdQ
UlJlZyBtX3N0b3JhZ2VHUFI7Ci0gICAgU3RydWN0dXJlKiBtX3N0cnVjdHVyZTsKKyAgICBSZWdp
c3RlcmVkU3RydWN0dXJlIG1fc3RydWN0dXJlOwogICAgIHNpemVfdCBtX3NpemU7CiAgICAgVmVj
dG9yPFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4sIDI+IG1fcGxhbnM7CiB9OwpAQCAtNzgsNyArNzgs
NyBAQCBjbGFzcyBDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTaXplCiBwdWJsaWM6CiAg
ICAgQ2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yKAog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGpp
dCwgUF9KSVRPcGVyYXRpb25fRVN0WkIgZnVuY3Rpb24sCi0gICAgICAgIEdQUlJlZyByZXN1bHRH
UFIsIFN0cnVjdHVyZSogY29udGlndW91c1N0cnVjdHVyZSwgU3RydWN0dXJlKiBhcnJheVN0b3Jh
Z2VTdHJ1Y3R1cmUsIEdQUlJlZyBzaXplR1BSLCBHUFJSZWcgc3RvcmFnZUdQUikKKyAgICAgICAg
R1BSUmVnIHJlc3VsdEdQUiwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBjb250aWd1b3VzU3RydWN0dXJl
LCBSZWdpc3RlcmVkU3RydWN0dXJlIGFycmF5U3RvcmFnZVN0cnVjdHVyZSwgR1BSUmVnIHNpemVH
UFIsIEdQUlJlZyBzdG9yYWdlR1BSKQogICAgICAgICA6IEp1bXBpbmdTbG93UGF0aEdlbmVyYXRv
cjxNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Q+KGZyb20sIGppdCkKICAgICAgICAgLCBtX2Z1bmN0
aW9uKGZ1bmN0aW9uKQogICAgICAgICAsIG1fcmVzdWx0R1BSKHJlc3VsdEdQUikKQEAgLTk3LDE1
ICs5NywxNSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X3BsYW5zLnNpemUoKTsgKytpKQogICAgICAgICAgICAgaml0LT5zaWxlbnRTcGlsbChtX3BsYW5z
W2ldKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVj
dFNjcmF0Y2hHUFIobV9zaXplR1BSLCBtX3N0b3JhZ2VHUFIpOwotICAgICAgICBpZiAobV9jb250
aWd1b3VzU3RydWN0dXJlICE9IG1fYXJyYXlTdG9yYWdlT3JDb250aWd1b3VzU3RydWN0dXJlKSB7
CisgICAgICAgIGlmIChtX2NvbnRpZ3VvdXNTdHJ1Y3R1cmUuZ2V0KCkgIT0gbV9hcnJheVN0b3Jh
Z2VPckNvbnRpZ3VvdXNTdHJ1Y3R1cmUuZ2V0KCkpIHsKICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIGJpZ0xlbmd0aCA9IGppdC0+bV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6
OkFib3ZlT3JFcXVhbCwgbV9zaXplR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1J
Tl9BUlJBWV9TVE9SQUdFX0NPTlNUUlVDVElPTl9MRU5HVEgpKTsKLSAgICAgICAgICAgIGppdC0+
bV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2NvbnRpZ3VvdXNTdHJ1
Y3R1cmUpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIGppdC0+bV9qaXQubW92ZShTcGVjdWxh
dGl2ZUpJVDo6VHJ1c3RlZEltbVB0cihtX2NvbnRpZ3VvdXNTdHJ1Y3R1cmUpLCBzY3JhdGNoR1BS
KTsKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUgPSBqaXQtPm1faml0Lmp1
bXAoKTsKICAgICAgICAgICAgIGJpZ0xlbmd0aC5saW5rKCZqaXQtPm1faml0KTsKLSAgICAgICAg
ICAgIGppdC0+bV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2FycmF5
U3RvcmFnZU9yQ29udGlndW91c1N0cnVjdHVyZSksIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAg
aml0LT5tX2ppdC5tb3ZlKFNwZWN1bGF0aXZlSklUOjpUcnVzdGVkSW1tUHRyKG1fYXJyYXlTdG9y
YWdlT3JDb250aWd1b3VzU3RydWN0dXJlKSwgc2NyYXRjaEdQUik7CiAgICAgICAgICAgICBkb25l
LmxpbmsoJmppdC0+bV9qaXQpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGppdC0+bV9q
aXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2NvbnRpZ3VvdXNTdHJ1Y3R1
cmUpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIGppdC0+bV9qaXQubW92ZShTcGVjdWxhdGl2
ZUpJVDo6VHJ1c3RlZEltbVB0cihtX2NvbnRpZ3VvdXNTdHJ1Y3R1cmUpLCBzY3JhdGNoR1BSKTsK
ICAgICAgICAgaml0LT5jYWxsT3BlcmF0aW9uKG1fZnVuY3Rpb24sIG1fcmVzdWx0R1BSLCBzY3Jh
dGNoR1BSLCBtX3NpemVHUFIsIG1fc3RvcmFnZUdQUik7CiAgICAgICAgIEdQUlJlZyBjYW5UcmFt
cGxlID0gU3BlY3VsYXRpdmVKSVQ6OnBpY2tDYW5UcmFtcGxlKG1fcmVzdWx0R1BSKTsKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gbV9wbGFucy5zaXplKCk7IGktLTspCkBAIC0xMTcsOCArMTE3
LDggQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBQX0pJVE9wZXJhdGlvbl9FU3RaQiBtX2Z1
bmN0aW9uOwogICAgIEdQUlJlZyBtX3Jlc3VsdEdQUjsKLSAgICBTdHJ1Y3R1cmUqIG1fY29udGln
dW91c1N0cnVjdHVyZTsKLSAgICBTdHJ1Y3R1cmUqIG1fYXJyYXlTdG9yYWdlT3JDb250aWd1b3Vz
U3RydWN0dXJlOworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgbV9jb250aWd1b3VzU3RydWN0dXJl
OworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgbV9hcnJheVN0b3JhZ2VPckNvbnRpZ3VvdXNTdHJ1
Y3R1cmU7CiAgICAgR1BSUmVnIG1fc2l6ZUdQUjsKICAgICBHUFJSZWcgbV9zdG9yYWdlR1BSOwog
ICAgIFZlY3RvcjxTaWxlbnRSZWdpc3RlclNhdmVQbGFuLCAyPiBtX3BsYW5zOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xvd1Bh
dGhHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhbGxDcmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvci5oCShyZXZpc2lvbiAy
MTEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxDcmVhdGVEaXJlY3RB
cmd1bWVudHNTbG93UGF0aEdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIGNsYXNzIENhbGxDcmVhdGVEaXJl
Y3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvciA6IHB1YmxpYyBKdW1waW5nU2xvd1BhdGhHZW5l
cmF0b3I8TWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0PiB7CiBwdWJsaWM6CiAgICAgQ2FsbENyZWF0
ZURpcmVjdEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yKAotICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6SnVtcExpc3QgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgR1BSUmVnIHJlc3VsdEdQUiwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBm
cm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBHUFJSZWcgcmVzdWx0R1BSLCBSZWdpc3RlcmVkU3Ry
dWN0dXJlIHN0cnVjdHVyZSwKICAgICAgICAgR1BSUmVnIGxlbmd0aEdQUiwgdW5zaWduZWQgbWlu
Q2FwYWNpdHkpCiAgICAgICAgIDogSnVtcGluZ1Nsb3dQYXRoR2VuZXJhdG9yPE1hY3JvQXNzZW1i
bGVyOjpKdW1wTGlzdD4oZnJvbSwgaml0KQogICAgICAgICAsIG1fcmVzdWx0R1BSKHJlc3VsdEdQ
UikKQEAgLTY5LDcgKzY5LDcgQEAgcHJvdGVjdGVkOgogICAgIAogcHJpdmF0ZToKICAgICBHUFJS
ZWcgbV9yZXN1bHRHUFI7Ci0gICAgU3RydWN0dXJlKiBtX3N0cnVjdHVyZTsKKyAgICBSZWdpc3Rl
cmVkU3RydWN0dXJlIG1fc3RydWN0dXJlOwogICAgIEdQUlJlZyBtX2xlbmd0aEdQUjsKICAgICB1
bnNpZ25lZCBtX21pbkNhcGFjaXR5OwogICAgIFZlY3RvcjxTaWxlbnRSZWdpc3RlclNhdmVQbGFu
LCAyPiBtX3BsYW5zOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25E
YXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1v
bkRhdGEuY3BwCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbW1vbkRhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw4ICs0Myw4IEBAIHZvaWQg
Q29tbW9uRGF0YTo6bm90aWZ5Q29tcGlsaW5nU3RydWN0dXIKICAgICBwbGFuLnRyYW5zaXRpb25z
LmFkZExhemlseSgKICAgICAgICAgY29kZUJsb2NrLAogICAgICAgICBub2RlLT5vcmlnaW4uc2Vt
YW50aWMuY29kZU9yaWdpbk93bmVyKCksCi0gICAgICAgIG5vZGUtPnRyYW5zaXRpb24oKS0+cHJl
dmlvdXMsCi0gICAgICAgIG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dCk7CisgICAgICAgIG5vZGUt
PnRyYW5zaXRpb24oKS0+cHJldmlvdXMuZ2V0KCksCisgICAgICAgIG5vZGUtPnRyYW5zaXRpb24o
KS0+bmV4dC5nZXQoKSk7CiB9CiAKIENhbGxTaXRlSW5kZXggQ29tbW9uRGF0YTo6YWRkQ29kZU9y
aWdpbihDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjEx
MjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw3ICsxNDUsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICAgICAgICAgIGNhc2UgQXJyYXlpZnlUb1N0
cnVjdHVyZTogewogICAgICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gbV9zdGF0
ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVTZXQg
c2V0OworICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgc2V0OwogICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IEFycmF5aWZ5VG9TdHJ1Y3R1cmUpCiAgICAgICAg
ICAgICAgICAgICAgIHNldCA9IG5vZGUtPnN0cnVjdHVyZSgpOwogICAgICAgICAgICAgICAgIGVs
c2UKQEAgLTIwNiwxMSArMjA2LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlSW1tZWRpYXRlOiB7CiAgICAgICAgICAgICAgICAg
QWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwot
ICAgICAgICAgICAgICAgIFN0cnVjdHVyZVNldCYgc2V0ID0gbm9kZS0+c3RydWN0dXJlU2V0KCk7
CisgICAgICAgICAgICAgICAgY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgc2V0ID0gbm9k
ZS0+c3RydWN0dXJlU2V0KCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYg
KHZhbHVlLnZhbHVlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0ganNEeW5hbWljQ2FzdDxTdHJ1Y3R1cmUqPih2YWx1ZS52YWx1ZSgpKSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHNldC5jb250YWlucyhzdHJ1Y3R1cmUpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoc2V0LmNvbnRhaW5zKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1
Y3R1cmUoc3RydWN0dXJlKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2ludGVy
cHJldGVyLmV4ZWN1dGUoaW5kZXhJbkJsb2NrKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGltaW5hdGVk
ID0gdHJ1ZTsKQEAgLTIyNSw3ICsyMjUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICAgICAgbm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgIFsmXSAoTm9kZSogaW5jb21pbmcp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBpbmNvbWluZy0+ZHluYW1pY0Nhc3RDb25zdGFudDxTdHJ1Y3R1cmUqPigpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXQuY29udGFpbnMoc3RydWN0dXJlKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldC5jb250YWlucyhtX2dyYXBoLnJl
Z2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhbGxHb29kID0gZmFsc2U7CkBAIC00MjEsNyArNDIxLDkgQEAg
cHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRh
LnZhcmlhbnRzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgIFB1dEJ5SWRWYXJp
YW50JiB2YXJpYW50ID0gZGF0YS52YXJpYW50c1tpXTsKLSAgICAgICAgICAgICAgICAgICAgdmFy
aWFudC5vbGRTdHJ1Y3R1cmUoKS5maWx0ZXIoYmFzZVZhbHVlKTsKKyAgICAgICAgICAgICAgICAg
ICAgdmFyaWFudC5vbGRTdHJ1Y3R1cmUoKS5nZW5lcmljRmlsdGVyKFsmXSAoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpIC0+IGJvb2wgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJhc2VW
YWx1ZS5jb250YWlucyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkpOworICAg
ICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgIGlmICh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgZGF0YS52YXJpYW50c1tpLS1dID0gZGF0YS52YXJpYW50cy5sYXN0KCk7
CkBAIC00NjAsMTIgKzQ2MiwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1faW50ZXJw
cmV0ZXIuZXhlY3V0ZShpbmRleEluQmxvY2spOyAvLyBQdXNoIENGQSBvdmVyIHRoaXMgbm9kZSBh
ZnRlciB3ZSBnZXQgdGhlIHN0YXRlIGJlZm9yZS4KICAgICAgICAgICAgICAgICBhbHJlYWR5SGFu
ZGxlZCA9IHRydWU7IC8vIERvbid0IGFsbG93IHRoZSBkZWZhdWx0IGNvbnN0YW50IGZvbGRlciB0
byBkbyB0aGluZ3MgdG8gdGhpcy4KIAotICAgICAgICAgICAgICAgIGlmIChiYXNlVmFsdWUubV9z
dHJ1Y3R1cmUuaXNUb3AoKSB8fCBiYXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNDbG9iYmVyZWQoKQor
ICAgICAgICAgICAgICAgIGlmICghYmFzZVZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkKICAg
ICAgICAgICAgICAgICAgICAgfHwgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVk
VXNlIHx8IChiYXNlVmFsdWUubV90eXBlICYgflNwZWNDZWxsKSkpCiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIEdldEJ5SWRTdGF0
dXMgc3RhdHVzID0gR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKLSAgICAgICAgICAgICAgICAg
ICAgYmFzZVZhbHVlLm1fc3RydWN0dXJlLnNldCgpLCBtX2dyYXBoLmlkZW50aWZpZXJzKClbaWRl
bnRpZmllck51bWJlcl0pOworICAgICAgICAgICAgICAgICAgICBiYXNlVmFsdWUubV9zdHJ1Y3R1
cmUudG9TdHJ1Y3R1cmVTZXQoKSwgbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1i
ZXJdKTsKICAgICAgICAgICAgICAgICBpZiAoIXN0YXR1cy5pc1NpbXBsZSgpKQogICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKQEAgLTQ5MCw3ICs0OTIsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIGZvciAoY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlh
bnQgOiBzdGF0dXMudmFyaWFudHMoKSkgewogICAgICAgICAgICAgICAgICAgICBkYXRhLT5jYXNl
cy5hcHBlbmQoCiAgICAgICAgICAgICAgICAgICAgICAgICBNdWx0aUdldEJ5T2Zmc2V0Q2FzZSgK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50LnN0cnVjdHVyZVNldCgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICptX2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50
LnN0cnVjdHVyZVNldCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRCeU9mZnNl
dE1ldGhvZDo6bG9hZCh2YXJpYW50Lm9mZnNldCgpKSkpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBkYXRhLT5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsK
QEAgLTUxNSwxMiArNTE3LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9pbnRlcnBy
ZXRlci5leGVjdXRlKGluZGV4SW5CbG9jayk7IC8vIFB1c2ggQ0ZBIG92ZXIgdGhpcyBub2RlIGFm
dGVyIHdlIGdldCB0aGUgc3RhdGUgYmVmb3JlLgogICAgICAgICAgICAgICAgIGFscmVhZHlIYW5k
bGVkID0gdHJ1ZTsgLy8gRG9uJ3QgYWxsb3cgdGhlIGRlZmF1bHQgY29uc3RhbnQgZm9sZGVyIHRv
IGRvIHRoaW5ncyB0byB0aGlzLgogCi0gICAgICAgICAgICAgICAgaWYgKGJhc2VWYWx1ZS5tX3N0
cnVjdHVyZS5pc1RvcCgpIHx8IGJhc2VWYWx1ZS5tX3N0cnVjdHVyZS5pc0Nsb2JiZXJlZCgpKQor
ICAgICAgICAgICAgICAgIGlmICghYmFzZVZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpCiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIFB1dEJ5SWRTdGF0dXMgc3RhdHVzID0gUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iob3JpZ2luLnNlbWFudGlj
KSwKLSAgICAgICAgICAgICAgICAgICAgYmFzZVZhbHVlLm1fc3RydWN0dXJlLnNldCgpLAorICAg
ICAgICAgICAgICAgICAgICBiYXNlVmFsdWUubV9zdHJ1Y3R1cmUudG9TdHJ1Y3R1cmVTZXQoKSwK
ICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1i
ZXJdLAogICAgICAgICAgICAgICAgICAgICBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QpOwog
ICAgICAgICAgICAgICAgIApAQCAtNzEzLDcgKzcxNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8v
IFdlIGFyZW4ndCBzZXQgdXAgdG8gaGFuZGxlIHByb3RvdHlwZSBzdHVmZi4KICAgICAgICAgREZH
X0FTU0VSVChtX2dyYXBoLCBub2RlLCB2YXJpYW50LmNvbmRpdGlvblNldCgpLmlzRW1wdHkoKSk7
CiAKLSAgICAgICAgaWYgKEpTVmFsdWUgdmFsdWUgPSBtX2dyYXBoLnRyeUdldENvbnN0YW50UHJv
cGVydHkoYmFzZVZhbHVlLm1fdmFsdWUsIHZhcmlhbnQuc3RydWN0dXJlU2V0KCksIHZhcmlhbnQu
b2Zmc2V0KCkpKSB7CisgICAgICAgIGlmIChKU1ZhbHVlIHZhbHVlID0gbV9ncmFwaC50cnlHZXRD
b25zdGFudFByb3BlcnR5KGJhc2VWYWx1ZS5tX3ZhbHVlLCAqbV9ncmFwaC5hZGRTdHJ1Y3R1cmVT
ZXQodmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSksIHZhcmlhbnQub2Zmc2V0KCkpKSB7CiAgICAgICAg
ICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG5vZGUsIG1fZ3JhcGguZnJlZXplKHZhbHVl
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTc1OSw3ICs3NjEsNyBAQCBw
cml2YXRlOgogICAgICAgICBUcmFuc2l0aW9uKiB0cmFuc2l0aW9uID0gMDsKICAgICAgICAgaWYg
KHZhcmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uKSB7CiAgICAgICAg
ICAgICB0cmFuc2l0aW9uID0gbV9ncmFwaC5tX3RyYW5zaXRpb25zLmFkZCgKLSAgICAgICAgICAg
ICAgICB2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKSwgdmFyaWFudC5uZXdTdHJ1
Y3R1cmUoKSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJp
YW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKSksIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1
cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkpOwogICAgICAgICB9CiAKICAgICAgICAgRWRnZSBw
cm9wZXJ0eVN0b3JhZ2U7CkBAIC04MjEsNiArODIzLDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBh
ZGRCYXNlQ2hlY2soCiAgICAgICAgIHVuc2lnbmVkIGluZGV4SW5CbG9jaywgTm9kZSogbm9kZSwg
Y29uc3QgQWJzdHJhY3RWYWx1ZSYgYmFzZVZhbHVlLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCkK
ICAgICB7CisgICAgICAgIGFkZEJhc2VDaGVjayhpbmRleEluQmxvY2ssIG5vZGUsIGJhc2VWYWx1
ZSwgKm1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHNldCkpOworICAgIH0KKworICAgIHZvaWQgYWRk
QmFzZUNoZWNrKAorICAgICAgICB1bnNpZ25lZCBpbmRleEluQmxvY2ssIE5vZGUqIG5vZGUsIGNv
bnN0IEFic3RyYWN0VmFsdWUmIGJhc2VWYWx1ZSwgY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNl
dCYgc2V0KQorICAgIHsKICAgICAgICAgaWYgKCFiYXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNTdWJz
ZXRPZihzZXQpKSB7CiAgICAgICAgICAgICAvLyBBcmlzZXMgd2hlbiB3ZSBwcnVuZSBNdWx0aUdl
dEJ5T2Zmc2V0LiBXZSBjb3VsZCBoYXZlIGEKICAgICAgICAgICAgIC8vIE11bHRpR2V0QnlPZmZz
ZXQgd2l0aCBhIHNpbmdsZSB2YXJpYW50IHRoYXQgY2hlY2tzIGZvciBzdHJ1Y3R1cmUgUywKQEAg
LTgyOCw3ICs4MzYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgQVNTRVJUKG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAg
ICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2tTdHJ1Y3R1cmUsIG5vZGUtPm9yaWdp
biwKLSAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoc2V0KSks
IG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5hZGRTdHJ1
Y3R1cmVTZXQoc2V0LnRvU3RydWN0dXJlU2V0KCkpKSwgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIApAQCAtODM4LDggKzg0NiwxMiBAQCBw
cml2YXRlOgogICAgIAogICAgIHZvaWQgYWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKE5vZGVP
cmlnaW4gb3JpZ2luLCB1bnNpZ25lZCBpbmRleEluQmxvY2ssIEpTQ2VsbCogY2VsbCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBpZiAobV9ncmFwaC5yZWdpc3RlclN0cnVj
dHVyZShjZWxsLT5zdHJ1Y3R1cmUoKSkgPT0gU3RydWN0dXJlUmVnaXN0ZXJlZEFuZFdhdGNoZWQp
Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIHsKKyAgICAgICAgICAgIFN0cnVjdHVyZVJl
Z2lzdHJhdGlvblJlc3VsdCByZXN1bHQ7CisgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3Ry
dWN0dXJlKGNlbGwtPnN0cnVjdHVyZSgpLCByZXN1bHQpOworICAgICAgICAgICAgaWYgKHJlc3Vs
dCA9PSBTdHJ1Y3R1cmVSZWdpc3RlcmVkQW5kV2F0Y2hlZCkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1
cmUoc3RydWN0dXJlKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNp
cmVkV2Vha1JlZmVyZW5jZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmNwcAkocmV2aXNpb24gMjExMjI5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3MiwxMiBAQCB2b2lkIERlc2lyZWRXZWFrUmVmZXJlbmNl
czo6cmVhbGx5QWRkKFZNCiAgICAgICAgICAgICBjb21tb24tPndlYWtTdHJ1Y3R1cmVSZWZlcmVu
Y2VzLmFwcGVuZCgKICAgICAgICAgICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPih2bSwg
bV9jb2RlQmxvY2ssIHN0cnVjdHVyZSkpOwogICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
Ly8gVGhlcmUgYXJlIHdlaXJkIHJlbGF0aW9uc2hpcHMgaW4gaG93IG9wdGltaXplZCBDb2RlQmxv
Y2tzCisgICAgICAgICAgICAvLyBwb2ludCB0byBvdGhlciBDb2RlQmxvY2tzLiBXZSBkb24ndCB3
YW50IHRvIGhhdmUgdGhlbSBiZQorICAgICAgICAgICAgLy8gcGFydCBvZiB0aGUgd2VhayBwb2lu
dGVyIHNldC4gRm9yIGV4YW1wbGUsIGFuIG9wdGltaXplZCBDb2RlQmxvY2sKKyAgICAgICAgICAg
IC8vIGhhdmluZyBhIHdlYWsgcG9pbnRlciB0byBpdHNlbGYgd2lsbCBjYXVzZSBpdCB0byBnZXQg
Y29sbGVjdGVkLgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWpzRHluYW1pY0Nhc3Q8Q29k
ZUJsb2NrKj4odGFyZ2V0KSk7CisKICAgICAgICAgICAgIGNvbW1vbi0+d2Vha1JlZmVyZW5jZXMu
YXBwZW5kKAogICAgICAgICAgICAgICAgIFdyaXRlQmFycmllcjxKU0NlbGw+KHZtLCBtX2NvZGVC
bG9jaywgdGFyZ2V0KSk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMjExMjI5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM2NSw3
ICsyMzY1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlKSB7CiAg
ICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIEFycmF5aWZ5VG9TdHJ1Y3R1
cmUsIG9yaWdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhzdHJ1Y3R1cmUpLCBP
cEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgRWRnZShhcnJheSwgQ2VsbFVzZSksIGluZGV4RWRn
ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5yZWdpc3RlclN0cnVj
dHVyZShzdHJ1Y3R1cmUpKSwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIEVkZ2UoYXJyYXks
IENlbGxVc2UpLCBpbmRleEVkZ2UpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIEFycmF5aWZ5LCBvcmlnaW4sCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMjExMjI5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTg4LDYgKzg4LDEwIEBAIEdyYXBoOjpHcmFwaChWTSYgdm0sIFBsYW4mIHBsYW4sIExvbmdM
aXYKICAgICAKICAgICBtX2luZGV4aW5nQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb3dJbmRl
eGluZz4oKnRoaXMpOwogICAgIG1fYWJzdHJhY3RWYWx1ZXNDYWNoZSA9IHN0ZDo6bWFrZV91bmlx
dWU8Rmxvd01hcDxBYnN0cmFjdFZhbHVlPj4oKnRoaXMpOworCisgICAgcmVnaXN0ZXJTdHJ1Y3R1
cmUodm0uc3RydWN0dXJlU3RydWN0dXJlLmdldCgpKTsKKyAgICB0aGlzLT5zdHJpbmdTdHJ1Y3R1
cmUgPSByZWdpc3RlclN0cnVjdHVyZSh2bS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOworICAgIHRo
aXMtPnN5bWJvbFN0cnVjdHVyZSA9IHJlZ2lzdGVyU3RydWN0dXJlKHZtLnN5bWJvbFN0cnVjdHVy
ZS5nZXQoKSk7CiB9CiAKIEdyYXBoOjp+R3JhcGgoKQpAQCAtMjQ1LDE1ICsyNDksMTUgQEAgdm9p
ZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdAogICAgIGlmIChub2RlLT5oYXNQ
cm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcigpKQogICAgICAgICBvdXQucHJpbnQoY29tbWEsIG5v
ZGUtPnByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yKCkpOwogICAgIGlmIChub2RlLT5oYXNTdHJ1
Y3R1cmVTZXQoKSkKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCBpbkNvbnRleHQobm9kZS0+c3Ry
dWN0dXJlU2V0KCksIGNvbnRleHQpKTsKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCBpbkNvbnRl
eHQobm9kZS0+c3RydWN0dXJlU2V0KCkudG9TdHJ1Y3R1cmVTZXQoKSwgY29udGV4dCkpOwogICAg
IGlmIChub2RlLT5oYXNTdHJ1Y3R1cmUoKSkKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCBpbkNv
bnRleHQoKm5vZGUtPnN0cnVjdHVyZSgpLCBjb250ZXh0KSk7CisgICAgICAgIG91dC5wcmludChj
b21tYSwgaW5Db250ZXh0KCpub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSwgY29udGV4dCkpOwogICAg
IGlmIChub2RlLT5oYXNUcmFuc2l0aW9uKCkpIHsKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBw
b2ludGVyRHVtcEluQ29udGV4dChub2RlLT50cmFuc2l0aW9uKCksIGNvbnRleHQpKTsKICNpZiBV
U0UoSlNWQUxVRTY0KQogICAgICAgICBvdXQucHJpbnQoIiwgSUQ6Iiwgbm9kZS0+dHJhbnNpdGlv
bigpLT5uZXh0LT5pZCgpKTsKICNlbHNlCi0gICAgICAgIG91dC5wcmludCgiLCBJRDoiLCBSYXdQ
b2ludGVyKG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dCkpOworICAgICAgICBvdXQucHJpbnQoIiwg
SUQ6IiwgUmF3UG9pbnRlcihub2RlLT50cmFuc2l0aW9uKCktPm5leHQuZ2V0KCkpKTsKICNlbmRp
ZgogICAgIH0KICAgICBpZiAobm9kZS0+aGFzQ2VsbE9wZXJhbmQoKSkgewpAQCAtMTIwNyw3ICsx
MjExLDcgQEAgdW5zaWduZWQgR3JhcGg6OnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZvcgogfQogCiBK
U1ZhbHVlIEdyYXBoOjp0cnlHZXRDb25zdGFudFByb3BlcnR5KAotICAgIEpTVmFsdWUgYmFzZSwg
Y29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkK
KyAgICBKU1ZhbHVlIGJhc2UsIGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVy
ZVNldCwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogewogICAgIGlmICghYmFzZSB8fCAhYmFzZS5p
c09iamVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwpAQCAtMTIxNSw4ICsxMjE5LDcg
QEAgSlNWYWx1ZSBHcmFwaDo6dHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eSgKICAgICBKU09iamVjdCog
b2JqZWN0ID0gYXNPYmplY3QoYmFzZSk7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gc3Ry
dWN0dXJlU2V0LnNpemUoKTsgaS0tOykgewotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IHN0cnVjdHVyZVNldFtpXTsKLSAgICAgICAgYXNzZXJ0SXNSZWdpc3RlcmVkKHN0cnVjdHVyZSk7
CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gc3RydWN0dXJlU2V0W2ld
OwogICAgICAgICAKICAgICAgICAgV2F0Y2hwb2ludFNldCogc2V0ID0gc3RydWN0dXJlLT5wcm9w
ZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNldChvZmZzZXQpOwogICAgICAgICBpZiAoIXNldCB8
fCAhc2V0LT5pc1N0aWxsVmFsaWQoKSkKQEAgLTEyNDgsNyArMTI1MSw3IEBAIEpTVmFsdWUgR3Jh
cGg6OnRyeUdldENvbnN0YW50UHJvcGVydHkoCiAgICAgLy8gaW5jb21wYXRpYmxlIHdpdGggdGhl
IGdldERpcmVjdCB3ZSdyZSB0cnlpbmcgdG8gZG8uIFRoZSBlYXNpZXN0IHdheSB0byBkbyB0aGF0
IGlzIHRvCiAgICAgLy8gZGV0ZXJtaW5lIGlmIHRoZSBzdHJ1Y3R1cmUgYmVsb25ncyB0byB0aGUg
cHJvdmVuIHNldC4KICAgICAKLSAgICBpZiAoIXN0cnVjdHVyZVNldC5jb250YWlucyhvYmplY3Qt
PnN0cnVjdHVyZSgpKSkKKyAgICBpZiAoIXN0cnVjdHVyZVNldC50b1N0cnVjdHVyZVNldCgpLmNv
bnRhaW5zKG9iamVjdC0+c3RydWN0dXJlKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwog
ICAgIAogICAgIHJldHVybiBvYmplY3QtPmdldERpcmVjdChvZmZzZXQpOwpAQCAtMTI1Niw3ICsx
MjU5LDcgQEAgSlNWYWx1ZSBHcmFwaDo6dHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eSgKIAogSlNWYWx1
ZSBHcmFwaDo6dHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eShKU1ZhbHVlIGJhc2UsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiB7Ci0gICAgcmV0dXJuIHRyeUdldENv
bnN0YW50UHJvcGVydHkoYmFzZSwgU3RydWN0dXJlU2V0KHN0cnVjdHVyZSksIG9mZnNldCk7Cisg
ICAgcmV0dXJuIHRyeUdldENvbnN0YW50UHJvcGVydHkoYmFzZSwgUmVnaXN0ZXJlZFN0cnVjdHVy
ZVNldChyZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpKSwgb2Zmc2V0KTsKIH0KIAogSlNWYWx1
ZSBHcmFwaDo6dHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eSgKQEAgLTEyNzgsMTMgKzEyODEsMTMgQEAg
SlNWYWx1ZSBHcmFwaDo6dHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eShjbwogfQogCiBBYnN0cmFjdFZh
bHVlIEdyYXBoOjppbmZlcnJlZFZhbHVlRm9yUHJvcGVydHkoCi0gICAgY29uc3QgU3RydWN0dXJl
U2V0JiBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUg
Y2xvYmJlclN0YXRlKQorICAgIGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIGJhc2UsIFVu
aXF1ZWRTdHJpbmdJbXBsKiB1aWQsIFN0cnVjdHVyZUNsb2JiZXJTdGF0ZSBjbG9iYmVyU3RhdGUp
CiB7CiAgICAgQWJzdHJhY3RWYWx1ZSByZXN1bHQ7CiAgICAgYmFzZS5mb3JFYWNoKAotICAgICAg
ICBbJl0gKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7CisgICAgICAgIFsmXSAoUmVnaXN0ZXJlZFN0
cnVjdHVyZSBzdHJ1Y3R1cmUpIHsKICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUgdmFsdWU7Ci0g
ICAgICAgICAgICB2YWx1ZS5zZXQoKnRoaXMsIGluZmVycmVkVHlwZUZvclByb3BlcnR5KHN0cnVj
dHVyZSwgdWlkKSk7CisgICAgICAgICAgICB2YWx1ZS5zZXQoKnRoaXMsIGluZmVycmVkVHlwZUZv
clByb3BlcnR5KHN0cnVjdHVyZS5nZXQoKSwgdWlkKSk7CiAgICAgICAgICAgICByZXN1bHQubWVy
Z2UodmFsdWUpOwogICAgICAgICB9KTsKICAgICBpZiAoY2xvYmJlclN0YXRlID09IFN0cnVjdHVy
ZXNBcmVDbG9iYmVyZWQpCkBAIC0xNDEzLDYxICsxNDE2LDE4IEBAIHZvaWQgR3JhcGg6OnZpc2l0
Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHYKICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJl
ZCh2YWx1ZS0+dmFsdWUoKSk7CiAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQodmFs
dWUtPnN0cnVjdHVyZSgpKTsKICAgICB9Ci0gICAgCi0gICAgZm9yIChCbG9ja0luZGV4IGJsb2Nr
SW5kZXggPSBudW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewotICAgICAgICBCYXNpY0Jsb2Nr
KiBibG9jayA9IHRoaXMtPmJsb2NrKGJsb2NrSW5kZXgpOwotICAgICAgICBpZiAoIWJsb2NrKQot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAotICAgICAgICBmb3IgKGF1dG8qIG5vZGUg
OiAqYmxvY2spIHsKLSAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAg
ICAgY2FzZSBDaGVja1N0cnVjdHVyZToKLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBub2RlLT5zdHJ1Y3R1cmVTZXQoKS5zaXplKCk7IGktLTspCi0gICAgICAgICAgICAgICAgICAg
IHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQobm9kZS0+c3RydWN0dXJlU2V0KClbaV0pOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSBO
ZXdPYmplY3Q6Ci0gICAgICAgICAgICBjYXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6Ci0gICAgICAg
ICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKLSAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVu
ZFVuYmFycmllcmVkKG5vZGUtPnN0cnVjdHVyZSgpKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgUHV0U3RydWN0dXJlOgotICAgICAg
ICAgICAgY2FzZSBBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKLSAgICAgICAgICAgIGNhc2UgUmVh
bGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKLSAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVu
YmFycmllcmVkKG5vZGUtPnRyYW5zaXRpb24oKS0+cHJldmlvdXMpOwotICAgICAgICAgICAgICAg
IHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQobm9kZS0+dHJhbnNpdGlvbigpLT5uZXh0KTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2Ug
TXVsdGlHZXRCeU9mZnNldDoKLSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IE11bHRpR2V0QnlP
ZmZzZXRDYXNlJiBnZXRDYXNlIDogbm9kZS0+bXVsdGlHZXRCeU9mZnNldERhdGEoKS5jYXNlcykg
ewotICAgICAgICAgICAgICAgICAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogZ2V0Q2Fz
ZS5zZXQoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVy
ZWQoc3RydWN0dXJlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0
OgotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG5vZGUtPm11bHRpUHV0QnlPZmZz
ZXREYXRhKCkudmFyaWFudHMuc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgICAgICAgICAgICAgIFB1
dEJ5SWRWYXJpYW50JiB2YXJpYW50ID0gbm9kZS0+bXVsdGlQdXRCeU9mZnNldERhdGEoKS52YXJp
YW50c1tpXTsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RydWN0dXJlU2V0JiBzZXQgPSB2
YXJpYW50Lm9sZFN0cnVjdHVyZSgpOwotICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGogPSBzZXQuc2l6ZSgpOyBqLS07KQotICAgICAgICAgICAgICAgICAgICAgICAgdmlzaXRvci5h
cHBlbmRVbmJhcnJpZXJlZChzZXRbal0pOwotICAgICAgICAgICAgICAgICAgICBpZiAodmFyaWFu
dC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb24pCi0gICAgICAgICAgICAgICAg
ICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKHZhcmlhbnQubmV3U3RydWN0dXJlKCkp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9CiB9CiAKIEZyb3plblZhbHVlKiBHcmFwaDo6ZnJl
ZXplKEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKFVOTElLRUxZKCF2YWx1ZSkpCiAgICAgICAg
IHJldHVybiBGcm96ZW5WYWx1ZTo6ZW1wdHlTaW5nbGV0b24oKTsKKworICAgIC8vIFRoZXJlIGFy
ZSB3ZWlyZCByZWxhdGlvbnNoaXBzIGluIGhvdyBvcHRpbWl6ZWQgQ29kZUJsb2NrcworICAgIC8v
IHBvaW50IHRvIG90aGVyIENvZGVCbG9ja3MuIFdlIGRvbid0IHdhbnQgdG8gaGF2ZSB0aGVtIGJl
CisgICAgLy8gcGFydCBvZiB0aGUgd2VhayBwb2ludGVyIHNldC4gRm9yIGV4YW1wbGUsIGFuIG9w
dGltaXplZCBDb2RlQmxvY2sKKyAgICAvLyBoYXZpbmcgYSB3ZWFrIHBvaW50ZXIgdG8gaXRzZWxm
IHdpbGwgY2F1c2UgaXQgdG8gZ2V0IGNvbGxlY3RlZC4KKyAgICBSRUxFQVNFX0FTU0VSVCghanNE
eW5hbWljQ2FzdDxDb2RlQmxvY2sqPih2YWx1ZSkpOwogICAgIAogICAgIGF1dG8gcmVzdWx0ID0g
bV9mcm96ZW5WYWx1ZU1hcC5hZGQoSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKSwgbnVsbHB0cik7CiAg
ICAgaWYgKExJS0VMWSghcmVzdWx0LmlzTmV3RW50cnkpKQpAQCAtMTUwNywxMiArMTQ2NywxNCBA
QCB2b2lkIEdyYXBoOjpjb252ZXJ0VG9TdHJvbmdDb25zdGFudChOb2RlCiAgICAgY29udmVydFRv
Q29uc3RhbnQobm9kZSwgZnJlZXplU3Ryb25nKHZhbHVlKSk7CiB9CiAKLVN0cnVjdHVyZVJlZ2lz
dHJhdGlvblJlc3VsdCBHcmFwaDo6cmVnaXN0ZXJTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCitSZWdpc3RlcmVkU3RydWN0dXJlIEdyYXBoOjpyZWdpc3RlclN0cnVjdHVyZShTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlUmVnaXN0cmF0aW9uUmVzdWx0JiByZXN1bHQpCiB7CiAg
ICAgbV9wbGFuLndlYWtSZWZlcmVuY2VzLmFkZExhemlseShzdHJ1Y3R1cmUpOwogICAgIGlmICht
X3BsYW4ud2F0Y2hwb2ludHMuY29uc2lkZXIoc3RydWN0dXJlKSkKLSAgICAgICAgcmV0dXJuIFN0
cnVjdHVyZVJlZ2lzdGVyZWRBbmRXYXRjaGVkOwotICAgIHJldHVybiBTdHJ1Y3R1cmVSZWdpc3Rl
cmVkTm9ybWFsbHk7CisgICAgICAgIHJlc3VsdCA9IFN0cnVjdHVyZVJlZ2lzdGVyZWRBbmRXYXRj
aGVkOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gU3RydWN0dXJlUmVnaXN0ZXJlZE5vcm1h
bGx5OworICAgIHJldHVybiBSZWdpc3RlcmVkU3RydWN0dXJlOjpjcmVhdGVQcml2YXRlKHN0cnVj
dHVyZSk7CiB9CiAKIHZvaWQgR3JhcGg6OmFzc2VydElzUmVnaXN0ZXJlZChTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9u
IDIxMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjEzLDcgKzIxMywxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb252ZXJ0VG9D
b25zdGFudChOb2RlKiBub2RlLCBKU1ZhbHVlIHZhbHVlKTsKICAgICB2b2lkIGNvbnZlcnRUb1N0
cm9uZ0NvbnN0YW50KE5vZGUqIG5vZGUsIEpTVmFsdWUgdmFsdWUpOwogICAgIAotICAgIFN0cnVj
dHVyZVJlZ2lzdHJhdGlvblJlc3VsdCByZWdpc3RlclN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSk7CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSByZWdpc3RlclN0cnVjdHVyZShTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIFN0cnVjdHVyZVJlZ2lzdHJhdGlvblJlc3Vs
dCBpZ25vcmVkOworICAgICAgICByZXR1cm4gcmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlLCBp
Z25vcmVkKTsKKyAgICB9CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSByZWdpc3RlclN0cnVjdHVy
ZShTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmVSZWdpc3RyYXRpb25SZXN1bHQmKTsKICAgICB2b2lkIGFz
c2VydElzUmVnaXN0ZXJlZChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSk7CiAgICAgCiAgICAgLy8gQ29k
ZUJsb2NrIGlzIG9wdGlvbmFsLCBidXQgbWF5IGFsbG93IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24g
dG8gYmUgZHVtcGVkIChlLmcuIElkZW50aWZpZXIgbmFtZXMpLgpAQCAtMzQxLDEyICszNDYsMjYg
QEAgcHVibGljOgogICAgIAogICAgIHN0YXRpYyBjb25zdCBjaGFyICpvcE5hbWUoTm9kZVR5cGUp
OwogICAgIAotICAgIFN0cnVjdHVyZVNldCogYWRkU3RydWN0dXJlU2V0KGNvbnN0IFN0cnVjdHVy
ZVNldCYgc3RydWN0dXJlU2V0KQorICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQqIGFkZFN0cnVj
dHVyZVNldChjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCkKICAgICB7CisgICAgICAg
IG1fc3RydWN0dXJlU2V0cy5hcHBlbmQoKTsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNl
dCogcmVzdWx0ID0gJm1fc3RydWN0dXJlU2V0cy5sYXN0KCk7CisKICAgICAgICAgZm9yIChTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA6IHN0cnVjdHVyZVNldCkKLSAgICAgICAgICAgIHJlZ2lzdGVyU3Ry
dWN0dXJlKHN0cnVjdHVyZSk7Ci0gICAgICAgIG1fc3RydWN0dXJlU2V0LmFwcGVuZChzdHJ1Y3R1
cmVTZXQpOwotICAgICAgICByZXR1cm4gJm1fc3RydWN0dXJlU2V0Lmxhc3QoKTsKKyAgICAgICAg
ICAgIHJlc3VsdC0+YWRkKHJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkpOworCisgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCogYWRk
U3RydWN0dXJlU2V0KGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCkK
KyAgICB7CisgICAgICAgIG1fc3RydWN0dXJlU2V0cy5hcHBlbmQoKTsKKyAgICAgICAgUmVnaXN0
ZXJlZFN0cnVjdHVyZVNldCogcmVzdWx0ID0gJm1fc3RydWN0dXJlU2V0cy5sYXN0KCk7CisKKyAg
ICAgICAgZm9yIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA6IHN0cnVjdHVyZVNldCkK
KyAgICAgICAgICAgIHJlc3VsdC0+YWRkKHN0cnVjdHVyZSk7CisKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CiAgICAgCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdEZvcihD
b2RlT3JpZ2luIGNvZGVPcmlnaW4pCkBAIC03MTUsNyArNzM0LDcgQEAgcHVibGljOgogICAgIH0K
IAogICAgIEFic3RyYWN0VmFsdWUgaW5mZXJyZWRWYWx1ZUZvclByb3BlcnR5KAotICAgICAgICBj
b25zdCBTdHJ1Y3R1cmVTZXQmIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIFN0cnVjdHVy
ZUNsb2JiZXJTdGF0ZSA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkKTsKKyAgICAgICAgY29uc3QgUmVn
aXN0ZXJlZFN0cnVjdHVyZVNldCYgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgU3RydWN0
dXJlQ2xvYmJlclN0YXRlID0gU3RydWN0dXJlc0FyZVdhdGNoZWQpOwogCiAgICAgLy8gVGhpcyB1
c2VzIGVpdGhlciBjb25zdGFudCBwcm9wZXJ0eSBpbmZlcmVuY2Ugb3IgcHJvcGVydHkgdHlwZSBp
bmZlcmVuY2UgdG8gZGVyaXZlIGEgZ29vZCBhYnN0cmFjdAogICAgIC8vIHZhbHVlIGZvciBzb21l
IHByb3BlcnR5IGFjY2Vzc2VkIHdpdGggdGhlIGdpdmVuIGFic3RyYWN0IHZhbHVlIGJhc2UuCkBA
IC04MTgsNyArODM3LDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHJlcXVpcmVkUmVnaXN0ZXJD
b3VudEZvckV4aXQoKTsKICAgICB1bnNpZ25lZCByZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGVj
dXRpb25BbmRFeGl0KCk7CiAgICAgCi0gICAgSlNWYWx1ZSB0cnlHZXRDb25zdGFudFByb3BlcnR5
KEpTVmFsdWUgYmFzZSwgY29uc3QgU3RydWN0dXJlU2V0JiwgUHJvcGVydHlPZmZzZXQpOworICAg
IEpTVmFsdWUgdHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eShKU1ZhbHVlIGJhc2UsIGNvbnN0IFJlZ2lz
dGVyZWRTdHJ1Y3R1cmVTZXQmLCBQcm9wZXJ0eU9mZnNldCk7CiAgICAgSlNWYWx1ZSB0cnlHZXRD
b25zdGFudFByb3BlcnR5KEpTVmFsdWUgYmFzZSwgU3RydWN0dXJlKiwgUHJvcGVydHlPZmZzZXQp
OwogICAgIEpTVmFsdWUgdHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eShKU1ZhbHVlIGJhc2UsIGNvbnN0
IFN0cnVjdHVyZUFic3RyYWN0VmFsdWUmLCBQcm9wZXJ0eU9mZnNldCk7CiAgICAgSlNWYWx1ZSB0
cnlHZXRDb25zdGFudFByb3BlcnR5KGNvbnN0IEFic3RyYWN0VmFsdWUmLCBQcm9wZXJ0eU9mZnNl
dCk7CkBAIC05MTAsNyArOTI5LDYgQEAgcHVibGljOgogICAgIAogICAgIFNlZ21lbnRlZFZlY3Rv
cjxWYXJpYWJsZUFjY2Vzc0RhdGEsIDE2PiBtX3ZhcmlhYmxlQWNjZXNzRGF0YTsKICAgICBTZWdt
ZW50ZWRWZWN0b3I8QXJndW1lbnRQb3NpdGlvbiwgOD4gbV9hcmd1bWVudFBvc2l0aW9uczsKLSAg
ICBTZWdtZW50ZWRWZWN0b3I8U3RydWN0dXJlU2V0LCAxNj4gbV9zdHJ1Y3R1cmVTZXQ7CiAgICAg
QmFnPFRyYW5zaXRpb24+IG1fdHJhbnNpdGlvbnM7CiAgICAgU2VnbWVudGVkVmVjdG9yPE5ld0Fy
cmF5QnVmZmVyRGF0YSwgND4gbV9uZXdBcnJheUJ1ZmZlckRhdGE7CiAgICAgQmFnPEJyYW5jaERh
dGE+IG1fYnJhbmNoRGF0YTsKQEAgLTk2MCw2ICs5NzgsOSBAQCBwdWJsaWM6CiAgICAgc3RkOjp1
bmlxdWVfcHRyPEZsb3dJbmRleGluZz4gbV9pbmRleGluZ0NhY2hlOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxGbG93TWFwPEFic3RyYWN0VmFsdWU+PiBtX2Fic3RyYWN0VmFsdWVzQ2FjaGU7CiAKKyAg
ICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cmluZ1N0cnVjdHVyZTsKKyAgICBSZWdpc3RlcmVkU3Ry
dWN0dXJlIHN5bWJvbFN0cnVjdHVyZTsKKwogcHJpdmF0ZToKICAgICB2b2lkIGFkZE5vZGVUb01h
cEJ5SW5kZXgoTm9kZSopOwogCkBAIC05OTcsNiArMTAxOCw3IEBAIHByaXZhdGU6CiAKICAgICBW
ZWN0b3I8Tm9kZSosIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX25vZGVzQnlJbmRleDsKICAg
ICBWZWN0b3I8dW5zaWduZWQsIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX25vZGVJbmRleEZy
ZWVMaXN0OworICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcmVkU3RydWN0dXJlU2V0LCAxNj4g
bV9zdHJ1Y3R1cmVTZXRzOwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gMjEx
MjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNDIsMTQgKzI0MiwxNCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KLSAgICBKdW1wIGJyYW5jaFdlYWtTdHJ1Y3R1cmUoUmVsYXRpb25h
bENvbmRpdGlvbiBjb25kLCBUIGxlZnQsIFN0cnVjdHVyZSogd2Vha1N0cnVjdHVyZSkKKyAgICBK
dW1wIGJyYW5jaFdlYWtTdHJ1Y3R1cmUoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBUIGxlZnQs
IFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgd2Vha1N0cnVjdHVyZSkKICAgICB7CisgICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gd2Vha1N0cnVjdHVyZS5nZXQoKTsKICNpZiBVU0UoSlNWQUxVRTY0
KQotICAgICAgICBKdW1wIHJlc3VsdCA9IGJyYW5jaDMyKGNvbmQsIGxlZnQsIFRydXN0ZWRJbW0z
Mih3ZWFrU3RydWN0dXJlLT5pZCgpKSk7Ci0gICAgICAgIGFkZFdlYWtSZWZlcmVuY2Uod2Vha1N0
cnVjdHVyZSk7CisgICAgICAgIEp1bXAgcmVzdWx0ID0gYnJhbmNoMzIoY29uZCwgbGVmdCwgVHJ1
c3RlZEltbTMyKHN0cnVjdHVyZS0+aWQoKSkpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogI2Vs
c2UKLSAgICAgICAgcmV0dXJuIGJyYW5jaFdlYWtQdHIoY29uZCwgbGVmdCwgd2Vha1N0cnVjdHVy
ZSk7CisgICAgICAgIHJldHVybiBicmFuY2hQdHIoY29uZCwgbGVmdCwgVHJ1c3RlZEltbVB0cihz
dHJ1Y3R1cmUpKTsKICNlbmRpZgogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdNdWx0aUdldEJ5T2Zmc2V0RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdNdWx0aUdldEJ5T2Zmc2V0RGF0YS5jcHAJKHJldmlzaW9uIDIx
MTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTXVsdGlHZXRCeU9mZnNldERh
dGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgR2V0QnlPZmZzZXRN
ZXRob2Q6OmR1bXAoUHJpbnRTdHJlYW0KIAogdm9pZCBNdWx0aUdldEJ5T2Zmc2V0Q2FzZTo6ZHVt
cEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QK
IHsKLSAgICBvdXQucHJpbnQoaW5Db250ZXh0KG1fc2V0LCBjb250ZXh0KSwgIjoiLCBpbkNvbnRl
eHQobV9tZXRob2QsIGNvbnRleHQpKTsKKyAgICBvdXQucHJpbnQoaW5Db250ZXh0KG1fc2V0LnRv
U3RydWN0dXJlU2V0KCksIGNvbnRleHQpLCAiOiIsIGluQ29udGV4dChtX21ldGhvZCwgY29udGV4
dCkpOwogfQogCiB2b2lkIE11bHRpR2V0QnlPZmZzZXRDYXNlOjpkdW1wKFByaW50U3RyZWFtJiBv
dXQpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR011bHRpR2V0QnlP
ZmZzZXREYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdN
dWx0aUdldEJ5T2Zmc2V0RGF0YS5oCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR011bHRpR2V0QnlPZmZzZXREYXRhLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCisjaW5jbHVkZSAiREZHUmVn
aXN0ZXJlZFN0cnVjdHVyZVNldC5oIgogI2luY2x1ZGUgIkR1bXBDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVTZXQuaCIKQEAgLTExOSwyMSArMTIw
LDIxIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogICAgIAotICAgIE11bHRpR2V0QnlPZmZzZXRD
YXNlKGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0LCBjb25zdCBHZXRCeU9mZnNldE1ldGhvZCYgbWV0
aG9kKQorICAgIE11bHRpR2V0QnlPZmZzZXRDYXNlKGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVT
ZXQmIHNldCwgY29uc3QgR2V0QnlPZmZzZXRNZXRob2QmIG1ldGhvZCkKICAgICAgICAgOiBtX3Nl
dChzZXQpCiAgICAgICAgICwgbV9tZXRob2QobWV0aG9kKQogICAgIHsKICAgICB9CiAgICAgCi0g
ICAgU3RydWN0dXJlU2V0JiBzZXQoKSB7IHJldHVybiBtX3NldDsgfQotICAgIGNvbnN0IFN0cnVj
dHVyZVNldCYgc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zZXQ7IH0KKyAgICBSZWdpc3RlcmVkU3Ry
dWN0dXJlU2V0JiBzZXQoKSB7IHJldHVybiBtX3NldDsgfQorICAgIGNvbnN0IFJlZ2lzdGVyZWRT
dHJ1Y3R1cmVTZXQmIHNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2V0OyB9CiAgICAgY29uc3QgR2V0
QnlPZmZzZXRNZXRob2QmIG1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0aG9kOyB9CiAgICAg
CiAgICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25z
dDsKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBT
dHJ1Y3R1cmVTZXQgbV9zZXQ7CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBtX3NldDsKICAg
ICBHZXRCeU9mZnNldE1ldGhvZCBtX21ldGhvZDsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlLmNwcAkocmV2aXNpb24gMjExMjI5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc1LDcgKzE3NSw3IEBA
IHZvaWQgTm9kZTo6Y29udmVydFRvUHV0SGludChjb25zdCBQcm9tb3QKIHZvaWQgTm9kZTo6Y29u
dmVydFRvUHV0U3RydWN0dXJlSGludChOb2RlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgQVNTRVJUKG1f
b3AgPT0gUHV0U3RydWN0dXJlKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlLT5jYXN0Q29uc3RhbnQ8
U3RydWN0dXJlKj4oKSA9PSB0cmFuc2l0aW9uKCktPm5leHQpOworICAgIEFTU0VSVChzdHJ1Y3R1
cmUtPmNhc3RDb25zdGFudDxTdHJ1Y3R1cmUqPigpID09IHRyYW5zaXRpb24oKS0+bmV4dC5nZXQo
KSk7CiAgICAgY29udmVydFRvUHV0SGludChTdHJ1Y3R1cmVQTG9jLCBjaGlsZDEoKS5ub2RlKCks
IHN0cnVjdHVyZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShy
ZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsOCBAQAogI2luY2x1ZGUgIkRGR05vZGVUeXBlLmgi
CiAjaW5jbHVkZSAiREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oIgogI2luY2x1ZGUgIkRG
R09wSW5mby5oIgorI2luY2x1ZGUgIkRGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRl
ICJERkdSZWdpc3RlcmVkU3RydWN0dXJlU2V0LmgiCiAjaW5jbHVkZSAiREZHVHJhbnNpdGlvbi5o
IgogI2luY2x1ZGUgIkRGR1VzZUtpbmQuaCIKICNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0Rh
dGEuaCIKQEAgLTQxMCwxMCArNDEyLDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVtb3ZlKCk7
CiAKLSAgICB2b2lkIGNvbnZlcnRUb0NoZWNrU3RydWN0dXJlKFN0cnVjdHVyZVNldCogc2V0KQor
ICAgIHZvaWQgY29udmVydFRvQ2hlY2tTdHJ1Y3R1cmUoUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCog
c2V0KQogICAgIHsKICAgICAgICAgc2V0T3BBbmREZWZhdWx0RmxhZ3MoQ2hlY2tTdHJ1Y3R1cmUp
OwotICAgICAgICBtX29wSW5mbyA9IHNldDsgCisgICAgICAgIG1fb3BJbmZvID0gc2V0OwogICAg
IH0KIAogICAgIHZvaWQgY29udmVydFRvQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGUoTm9kZSogc3Ry
dWN0dXJlKQpAQCAtMTYxNCwxMCArMTYxNiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9
CiAgICAgCi0gICAgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQoKQorICAgIGNvbnN0IFJlZ2lz
dGVyZWRTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCgpCiAgICAgewogICAgICAgICBBU1NFUlQo
aGFzU3RydWN0dXJlU2V0KCkpOwotICAgICAgICByZXR1cm4gKm1fb3BJbmZvLmFzPFN0cnVjdHVy
ZVNldCo+KCk7CisgICAgICAgIHJldHVybiAqbV9vcEluZm8uYXM8UmVnaXN0ZXJlZFN0cnVjdHVy
ZVNldCo+KCk7CiAgICAgfQogICAgIAogICAgIGJvb2wgaGFzU3RydWN0dXJlKCkKQEAgLTE2MzIs
MTAgKzE2MzQsMTAgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlKCkKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSgpCiAg
ICAgewogICAgICAgICBBU1NFUlQoaGFzU3RydWN0dXJlKCkpOwotICAgICAgICByZXR1cm4gbV9v
cEluZm8uYXM8U3RydWN0dXJlKj4oKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzUmVnaXN0
ZXJlZFN0cnVjdHVyZSgpOwogICAgIH0KICAgICAKICAgICBib29sIGhhc1N0b3JhZ2VBY2Nlc3NE
YXRhKCkKQEAgLTI1MTMsNiArMjUxNSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgdS5pbnQ2
NCA9IDA7CiAgICAgICAgICAgICB1LmNvbnN0UG9pbnRlciA9IGNvbnN0UG9pbnRlcjsKICAgICAg
ICAgfQorICAgICAgICBPcEluZm9XcmFwcGVyKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJl
KQorICAgICAgICB7CisgICAgICAgICAgICB1LmludDY0ID0gMDsKKyAgICAgICAgICAgIHUucG9p
bnRlciA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RydWN0dXJlKTsKKyAgICAgICAgfQogICAgICAg
ICBPcEluZm9XcmFwcGVyJiBvcGVyYXRvcj0odWludDMyX3QgaW50MzIpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIHUuaW50NjQgPSAwOwpAQCAtMjU0Miw2ICsyNTQ5LDEyIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICB1LmNvbnN0UG9pbnRlciA9IGNvbnN0UG9pbnRlcjsKICAgICAgICAgICAgIHJl
dHVybiAqdGhpczsKICAgICAgICAgfQorICAgICAgICBPcEluZm9XcmFwcGVyJiBvcGVyYXRvcj0o
UmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHUu
aW50NjQgPSAwOworICAgICAgICAgICAgdS5wb2ludGVyID0gYml0d2lzZV9jYXN0PHZvaWQqPihz
dHJ1Y3R1cmUpOworICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICB9CiAgICAgICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgICAgICBBTFdBWVNfSU5MSU5FIGF1dG8gYXMoKSBj
b25zdCAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVl
ICYmICFzdGQ6OmlzX2NvbnN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8VD46OnR5cGU+
Ojp2YWx1ZSwgVD46OnR5cGUKICAgICAgICAgewpAQCAtMjU2Miw2ICsyNTc1LDExIEBAIHByaXZh
dGU6CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiB1LmludDY0OwogICAgICAgICB9Cisg
ICAgICAgIEFMV0FZU19JTkxJTkUgUmVnaXN0ZXJlZFN0cnVjdHVyZSBhc1JlZ2lzdGVyZWRTdHJ1
Y3R1cmUoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0
PFJlZ2lzdGVyZWRTdHJ1Y3R1cmU+KHUucG9pbnRlcik7CisgICAgICAgIH0KKwogICAgICAgICB1
bmlvbiB7CiAgICAgICAgICAgICB1aW50MzJfdCBpbnQzMjsKICAgICAgICAgICAgIHVpbnQ2NF90
IGludDY0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0
aW9uU2lua2luZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMTEyMjkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5n
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODYsMjggKzE4NiwyOCBAQCBwdWJsaWM6CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBBbGxvY2F0aW9uJiBzZXRTdHJ1Y3R1cmVzKGNvbnN0IFN0
cnVjdHVyZVNldCYgc3RydWN0dXJlcykKKyAgICBBbGxvY2F0aW9uJiBzZXRTdHJ1Y3R1cmVzKGNv
bnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZXMpCiAgICAgewogICAgICAgICBB
U1NFUlQoaGFzU3RydWN0dXJlcygpICYmICFzdHJ1Y3R1cmVzLmlzRW1wdHkoKSk7CiAgICAgICAg
IG1fc3RydWN0dXJlcyA9IHN0cnVjdHVyZXM7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9
CiAKLSAgICBBbGxvY2F0aW9uJiBtZXJnZVN0cnVjdHVyZXMoY29uc3QgU3RydWN0dXJlU2V0JiBz
dHJ1Y3R1cmVzKQorICAgIEFsbG9jYXRpb24mIG1lcmdlU3RydWN0dXJlcyhjb25zdCBSZWdpc3Rl
cmVkU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVzKQogICAgIHsKICAgICAgICAgQVNTRVJUKGhhc1N0
cnVjdHVyZXMoKSB8fCBzdHJ1Y3R1cmVzLmlzRW1wdHkoKSk7CiAgICAgICAgIG1fc3RydWN0dXJl
cy5tZXJnZShzdHJ1Y3R1cmVzKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAg
IEFsbG9jYXRpb24mIGZpbHRlclN0cnVjdHVyZXMoY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1
cmVzKQorICAgIEFsbG9jYXRpb24mIGZpbHRlclN0cnVjdHVyZXMoY29uc3QgUmVnaXN0ZXJlZFN0
cnVjdHVyZVNldCYgc3RydWN0dXJlcykKICAgICB7CiAgICAgICAgIEFTU0VSVChoYXNTdHJ1Y3R1
cmVzKCkpOwogICAgICAgICBtX3N0cnVjdHVyZXMuZmlsdGVyKHN0cnVjdHVyZXMpOwogICAgICAg
ICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1
cmVzKCkgY29uc3QKKyAgICBjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVz
KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZXM7CiAgICAgfQpAQCAt
MjgzLDcgKzI4Myw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICBvdXQucHJpbnQoIkFs
bG9jYXRpb24oIik7CiAgICAgICAgIGlmICghbV9zdHJ1Y3R1cmVzLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG91dC5wcmludChpbkNvbnRleHQobV9zdHJ1Y3R1cmVzLCBjb250ZXh0KSk7CisgICAg
ICAgICAgICBvdXQucHJpbnQoaW5Db250ZXh0KG1fc3RydWN0dXJlcy50b1N0cnVjdHVyZVNldCgp
LCBjb250ZXh0KSk7CiAgICAgICAgIGlmICghbV9maWVsZHMuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICBpZiAoIW1fc3RydWN0dXJlcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgb3V0LnBy
aW50KCIsICIpOwpAQCAtMjk2LDcgKzI5Niw3IEBAIHByaXZhdGU6CiAgICAgTm9kZSogbV9pZGVu
dGlmaWVyOyAvLyBUaGlzIGlzIHRoZSBhY3R1YWwgbm9kZSB0aGF0IGNyZWF0ZWQgdGhlIGFsbG9j
YXRpb24KICAgICBLaW5kIG1fa2luZDsKICAgICBIYXNoTWFwPFByb21vdGVkTG9jYXRpb25EZXNj
cmlwdG9yLCBOb2RlKj4gbV9maWVsZHM7Ci0gICAgU3RydWN0dXJlU2V0IG1fc3RydWN0dXJlczsK
KyAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0IG1fc3RydWN0dXJlczsKIH07CiAKIGNsYXNzIExv
Y2FsSGVhcCB7CkBAIC04MzIsNyArODMyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHRhcmdl
dCA9ICZtX2hlYXAubmV3QWxsb2NhdGlvbihub2RlLCBBbGxvY2F0aW9uOjpLaW5kOjpPYmplY3Qp
OwogICAgICAgICAgICAgdGFyZ2V0LT5zZXRTdHJ1Y3R1cmVzKG5vZGUtPnN0cnVjdHVyZSgpKTsK
ICAgICAgICAgICAgIHdyaXRlcy5hZGQoCi0gICAgICAgICAgICAgICAgU3RydWN0dXJlUExvYywg
TGF6eU5vZGUobV9ncmFwaC5mcmVlemUobm9kZS0+c3RydWN0dXJlKCkpKSk7CisgICAgICAgICAg
ICAgICAgU3RydWN0dXJlUExvYywgTGF6eU5vZGUobV9ncmFwaC5mcmVlemUobm9kZS0+c3RydWN0
dXJlKCkuZ2V0KCkpKSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIE5ld0Z1
bmN0aW9uOgpAQCAtODc5LDcgKzg3OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgUHV0U3Ry
dWN0dXJlOgogICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2NhbEFsbG9jYXRpb24o
bm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0
LT5pc09iamVjdEFsbG9jYXRpb24oKSkgewotICAgICAgICAgICAgICAgIHdyaXRlcy5hZGQoU3Ry
dWN0dXJlUExvYywgTGF6eU5vZGUobV9ncmFwaC5mcmVlemUoSlNWYWx1ZShub2RlLT50cmFuc2l0
aW9uKCktPm5leHQpKSkpOworICAgICAgICAgICAgICAgIHdyaXRlcy5hZGQoU3RydWN0dXJlUExv
YywgTGF6eU5vZGUobV9ncmFwaC5mcmVlemUoSlNWYWx1ZShub2RlLT50cmFuc2l0aW9uKCktPm5l
eHQuZ2V0KCkpKSkpOwogICAgICAgICAgICAgICAgIHRhcmdldC0+c2V0U3RydWN0dXJlcyhub2Rl
LT50cmFuc2l0aW9uKCktPm5leHQpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAg
ICAgbV9oZWFwLmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwpAQCAtOTEyLDcgKzkxMiw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBBbGxvY2F0aW9uKiBhbGxvY2F0aW9uID0gbV9oZWFw
Lm9ubHlMb2NhbEFsbG9jYXRpb24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAg
IGlmIChhbGxvY2F0aW9uICYmIGFsbG9jYXRpb24tPmlzT2JqZWN0QWxsb2NhdGlvbigpKSB7CiAg
ICAgICAgICAgICAgICAgTXVsdGlHZXRCeU9mZnNldERhdGEmIGRhdGEgPSBub2RlLT5tdWx0aUdl
dEJ5T2Zmc2V0RGF0YSgpOwotICAgICAgICAgICAgICAgIFN0cnVjdHVyZVNldCB2YWxpZFN0cnVj
dHVyZXM7CisgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCB2YWxpZFN0cnVj
dHVyZXM7CiAgICAgICAgICAgICAgICAgYm9vbCBoYXNJbnZhbGlkU3RydWN0dXJlcyA9IGZhbHNl
OwogICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgbXVsdGlHZXRCeU9mZnNldENhc2Ug
OiBkYXRhLmNhc2VzKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghYWxsb2NhdGlvbi0+c3Ry
dWN0dXJlcygpLm92ZXJsYXBzKG11bHRpR2V0QnlPZmZzZXRDYXNlLnNldCgpKSkKQEAgLTE0NDQs
MTIgKzE0NDQsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgc3dpdGNoIChhbGxvY2F0aW9uLmtpbmQo
KSkgewogICAgICAgICBjYXNlIEFsbG9jYXRpb246OktpbmQ6Ok9iamVjdDogewogICAgICAgICAg
ICAgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSogZGF0YSA9IG1fZ3JhcGgubV9vYmplY3RNYXRl
cmlhbGl6YXRpb25EYXRhLmFkZCgpOwotICAgICAgICAgICAgU3RydWN0dXJlU2V0KiBzZXQgPSBt
X2dyYXBoLmFkZFN0cnVjdHVyZVNldChhbGxvY2F0aW9uLnN0cnVjdHVyZXMoKSk7CiAKICAgICAg
ICAgICAgIHJldHVybiBtX2dyYXBoLmFkZE5vZGUoCiAgICAgICAgICAgICAgICAgYWxsb2NhdGlv
bi5pZGVudGlmaWVyKCktPnByZWRpY3Rpb24oKSwgTm9kZTo6VmFyQXJnLCBNYXRlcmlhbGl6ZU5l
d09iamVjdCwKICAgICAgICAgICAgICAgICB3aGVyZS0+b3JpZ2luLndpdGhTZW1hbnRpYyhhbGxv
Y2F0aW9uLmlkZW50aWZpZXIoKS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICBP
cEluZm8oc2V0KSwgT3BJbmZvKGRhdGEpLCAwLCAwKTsKKyAgICAgICAgICAgICAgICBPcEluZm8o
bV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoYWxsb2NhdGlvbi5zdHJ1Y3R1cmVzKCkpKSwgT3BJbmZv
KGRhdGEpLCAwLCAwKTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgQWxsb2NhdGlvbjo6S2lu
ZDo6QXN5bmNGdW5jdGlvbjoKQEAgLTIxMDMsNyArMjEwMiw3IEBAIHByaXZhdGU6CiAgICAgICAg
IGNhc2UgTmFtZWRQcm9wZXJ0eVBMb2M6IHsKICAgICAgICAgICAgIEFsbG9jYXRpb24mIGFsbG9j
YXRpb24gPSBtX2hlYXAuZ2V0QWxsb2NhdGlvbihsb2NhdGlvbi5iYXNlKCkpOwogCi0gICAgICAg
ICAgICBWZWN0b3I8U3RydWN0dXJlKj4gc3RydWN0dXJlczsKKyAgICAgICAgICAgIFZlY3RvcjxS
ZWdpc3RlcmVkU3RydWN0dXJlPiBzdHJ1Y3R1cmVzOwogICAgICAgICAgICAgc3RydWN0dXJlcy5h
cHBlbmRSYW5nZShhbGxvY2F0aW9uLnN0cnVjdHVyZXMoKS5iZWdpbigpLCBhbGxvY2F0aW9uLnN0
cnVjdHVyZXMoKS5lbmQoKSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVy
ID0gbG9jYXRpb24uaW5mbygpOwogICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9
IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXTsKQEAgLTIxMTEsNyArMjEx
MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzdGQ6OnNvcnQoCiAgICAgICAgICAgICAgICAg
c3RydWN0dXJlcy5iZWdpbigpLAogICAgICAgICAgICAgICAgIHN0cnVjdHVyZXMuZW5kKCksCi0g
ICAgICAgICAgICAgICAgW3VpZF0gKFN0cnVjdHVyZSAqYSwgU3RydWN0dXJlKiBiKSAtPiBib29s
IHsKKyAgICAgICAgICAgICAgICBbdWlkXSAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBhLCBSZWdpc3Rl
cmVkU3RydWN0dXJlIGIpIC0+IGJvb2wgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS0+
Z2V0Q29uY3VycmVudGx5KHVpZCkgPCBiLT5nZXRDb25jdXJyZW50bHkodWlkKTsKICAgICAgICAg
ICAgICAgICB9KTsKIApAQCAtMjE0Miw3ICsyMTQxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBjdXJyZW50T2Zmc2V0ID0gZmlyc3RP
ZmZzZXQ7CiAgICAgICAgICAgICAgICAgU3RydWN0dXJlU2V0IGN1cnJlbnRTZXQ7Ci0gICAgICAg
ICAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6IHN0cnVjdHVyZXMpIHsKKyAgICAg
ICAgICAgICAgICBmb3IgKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlIDogc3RydWN0dXJl
cykgewogICAgICAgICAgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1
cmUtPmdldENvbmN1cnJlbnRseSh1aWQpOwogICAgICAgICAgICAgICAgICAgICBpZiAob2Zmc2V0
ICE9IGN1cnJlbnRPZmZzZXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJlY2F1c2Ug
b3VyIGFuYWx5c2lzIHRyZWF0cyBNdWx0aVB1dEJ5T2Zmc2V0IGxpa2UgYW4gZXNjYXBlLCB3ZSBv
bmx5IGhhdmUgdG8KQEAgLTIxNTUsNyArMjE1NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgICAgICAgICBjdXJyZW50T2Zmc2V0ID0gb2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICAg
ICAgY3VycmVudFNldC5jbGVhcigpOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIGN1cnJlbnRTZXQuYWRkKHN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgICAg
IGN1cnJlbnRTZXQuYWRkKHN0cnVjdHVyZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGRhdGEtPnZhcmlhbnRzLmFwcGVuZCgKICAgICAgICAgICAgICAgICAgICAg
UHV0QnlJZFZhcmlhbnQ6OnJlcGxhY2UoY3VycmVudFNldCwgY3VycmVudE9mZnNldCwgSW5mZXJy
ZWRUeXBlOjpUb3ApKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZv
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAko
cmV2aXNpb24gMjExMjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8u
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVk
ZSAiREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5oIgorI2luY2x1ZGUgIkhlYXBDZWxsLmgiCiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC00Miw4
ICs0NCwxNyBAQCBzdHJ1Y3QgT3BJbmZvIHsKICNpZiBPUyhEQVJXSU4pCiAgICAgZXhwbGljaXQg
T3BJbmZvKHVpbnRwdHJfdCB2YWx1ZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnQ2NF90Pih2
YWx1ZSkpIHsgfQogI2VuZGlmCi0gICAgZXhwbGljaXQgT3BJbmZvKHZvaWQqIHZhbHVlKSA6IG1f
dmFsdWUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2
YWx1ZSkpKSB7IH0KLSAgICBleHBsaWNpdCBPcEluZm8oY29uc3Qgdm9pZCogdmFsdWUpIDogbV92
YWx1ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHZh
bHVlKSkpIHsgfQorICAgIGV4cGxpY2l0IE9wSW5mbyhSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVj
dHVyZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihiaXR3aXNlX2Nhc3Q8dWludHB0
cl90PihzdHJ1Y3R1cmUpKSkgeyB9CisKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAg
IGV4cGxpY2l0IE9wSW5mbyhUKiBwdHIpCisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KCFz
dGQ6OmlzX2Jhc2Vfb2Y8SGVhcENlbGwsIFQ+Ojp2YWx1ZSwgIlRvIG1ha2UgYW4gT3BJbmZvIHdp
dGggYSBjZWxsIGluIGl0LCB0aGUgY2VsbCBtdXN0IGJlIHJlZ2lzdGVyZWQgb3IgZnJvemVuLiIp
OworICAgICAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8U3RydWN0dXJlU2V0LCBU
Pjo6dmFsdWUsICJUbyBtYWtlIGFuIE9wSW5mbyB3aXRoIGEgc3RydWN0dXJlIHNldCBpbiwgbWFr
ZSBzdXJlIHRvIHVzZSBSZWdpc3RlcmVkU3RydWN0dXJlU2V0LiIpOworICAgICAgICBtX3ZhbHVl
ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihwdHIp
KTsKKyAgICB9CisKICAgICB1aW50NjRfdCBtX3ZhbHVlOwogfTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw2
IEBACiAjaW5jbHVkZSAiREZHU3RvcmVCYXJyaWVyQ2x1c3RlcmluZ1BoYXNlLmgiCiAjaW5jbHVk
ZSAiREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuaCIKICNpbmNsdWRlICJERkdTdHJlbmd0
aFJlZHVjdGlvblBoYXNlLmgiCi0jaW5jbHVkZSAiREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhh
c2UuaCIKICNpbmNsdWRlICJERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmgiCiAjaW5jbHVk
ZSAiREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5oIgogI2luY2x1ZGUgIkRGR1VuaWZpY2F0aW9u
UGhhc2UuaCIKQEAgLTMxMSw3ICszMTAsNiBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6
Y29tcGlsZUluVGhyCiAgICAgUlVOX1BIQVNFKHBlcmZvcm1CYWNrd2FyZHNQcm9wYWdhdGlvbik7
CiAgICAgUlVOX1BIQVNFKHBlcmZvcm1QcmVkaWN0aW9uUHJvcGFnYXRpb24pOwogICAgIFJVTl9Q
SEFTRShwZXJmb3JtRml4dXApOwotICAgIFJVTl9QSEFTRShwZXJmb3JtU3RydWN0dXJlUmVnaXN0
cmF0aW9uKTsKICAgICBSVU5fUEhBU0UocGVyZm9ybUludmFsaWRhdGlvblBvaW50SW5qZWN0aW9u
KTsKICAgICBSVU5fUEhBU0UocGVyZm9ybVR5cGVDaGVja0hvaXN0aW5nKTsKICAgICAKQEAgLTYw
OCw2ICs2MDYsMTEgQEAgQ29tcGlsYXRpb25SZXN1bHQgUGxhbjo6ZmluYWxpemVXaXRob3V0Tgog
ICAgICAgICAgICAgdHJhY2tlZFJlZmVyZW5jZXMuYWRkKHJlZmVyZW5jZS5nZXQoKSk7CiAgICAg
ICAgIGZvciAoV3JpdGVCYXJyaWVyPFVua25vd24+JiBjb25zdGFudCA6IGNvZGVCbG9jay0+Y29u
c3RhbnRzKCkpCiAgICAgICAgICAgICB0cmFja2VkUmVmZXJlbmNlcy5hZGQoY29uc3RhbnQuZ2V0
KCkpOworCisgICAgICAgIGZvciAoYXV0byogaW5saW5lQ2FsbEZyYW1lIDogKmlubGluZUNhbGxG
cmFtZXMpIHsKKyAgICAgICAgICAgIEFTU0VSVChpbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29k
ZUJsb2NrLmdldCgpKTsKKyAgICAgICAgICAgIHRyYWNrZWRSZWZlcmVuY2VzLmFkZChpbmxpbmVD
YWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLmdldCgpKTsKKyAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgLy8gQ2hlY2sgdGhhdCBhbnkgb3RoZXIgcmVmZXJlbmNlcyB0aGF0IHdlIGhhdmUg
YW55d2hlcmUgaW4gdGhlIEpJVENvZGUgYXJlIGFsc28KICAgICAgICAgLy8gdHJhY2tlZCBlaXRo
ZXIgc3Ryb25nbHkgb3Igd2Vha2x5LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdSZWdpc3RlcmVkU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdSZWdpc3RlcmVkU3RydWN0dXJlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZWdpc3RlcmVkU3RydWN0dXJlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShERkdfSklUKQorCisjaW5jbHVk
ZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlU2V0LmgiCisKK25hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKKworY2xhc3MgR3JhcGg7CisKK2NsYXNzIFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgeworcHVibGljOgorICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUoKSA9IGRlZmF1bHQ7
CisKKyAgICBBTFdBWVNfSU5MSU5FIFN0cnVjdHVyZSogZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9z
dHJ1Y3R1cmU7IH0KKyAgICBTdHJ1Y3R1cmUqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBn
ZXQoKTsgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmUm
IG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldCgpID09IG90aGVyLmdldCgp
OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJl
JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsK
KyAgICB9CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiAhIWdldCgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3Mg
R3JhcGg7CisKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKQor
ICAgICAgICA6IG1fc3RydWN0dXJlKHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChz
dHJ1Y3R1cmUpOworICAgIH0KKworICAgIHN0YXRpYyBSZWdpc3RlcmVkU3RydWN0dXJlIGNyZWF0
ZVByaXZhdGUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICByZXR1cm4gUmVn
aXN0ZXJlZFN0cnVjdHVyZShzdHJ1Y3R1cmUpOworICAgIH0KKworICAgIFN0cnVjdHVyZSogbV9z
dHJ1Y3R1cmUgeyBudWxscHRyIH07Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisK
KyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdSZWdpc3RlcmVkU3RydWN0dXJlU2V0LmNwcAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmVT
ZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkRGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQuaCIKKworI2lmIEVOQUJMRShERkdfSklUKQor
CisjaW5jbHVkZSAiREZHQWJzdHJhY3RWYWx1ZS5oIgorI2luY2x1ZGUgIlRyYWNrZWRSZWZlcmVu
Y2VzLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKwordm9pZCBSZWdpc3Rl
cmVkU3RydWN0dXJlU2V0OjpmaWx0ZXIoY29uc3QgREZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVl
JiBvdGhlcikKK3sKKyAgICBnZW5lcmljRmlsdGVyKAorICAgICAgICBbJl0gKFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgc3RydWN0dXJlKSAtPiBib29sIHsKKyAgICAgICAgICAgIHJldHVybiBvdGhlci5j
b250YWlucyhzdHJ1Y3R1cmUpOyAKKyAgICAgICAgfSk7Cit9CisKK3ZvaWQgUmVnaXN0ZXJlZFN0
cnVjdHVyZVNldDo6ZmlsdGVyKFNwZWN1bGF0ZWRUeXBlIHR5cGUpCit7CisgICAgZ2VuZXJpY0Zp
bHRlcigKKyAgICAgICAgWyZdIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgLT4gYm9v
bCB7CisgICAgICAgICAgICByZXR1cm4gdHlwZSAmIHNwZWN1bGF0aW9uRnJvbVN0cnVjdHVyZShz
dHJ1Y3R1cmUuZ2V0KCkpOworICAgICAgICB9KTsKK30KKwordm9pZCBSZWdpc3RlcmVkU3RydWN0
dXJlU2V0OjpmaWx0ZXJBcnJheU1vZGVzKEFycmF5TW9kZXMgYXJyYXlNb2RlcykKK3sKKyAgICBn
ZW5lcmljRmlsdGVyKAorICAgICAgICBbJl0gKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJl
KSAtPiBib29sIHsKKyAgICAgICAgICAgIHJldHVybiBhcnJheU1vZGVzICYgYXJyYXlNb2RlRnJv
bVN0cnVjdHVyZShzdHJ1Y3R1cmUuZ2V0KCkpOworICAgICAgICB9KTsKK30KKwordm9pZCBSZWdp
c3RlcmVkU3RydWN0dXJlU2V0OjpmaWx0ZXIoY29uc3QgREZHOjpBYnN0cmFjdFZhbHVlJiBvdGhl
cikKK3sKKyAgICBmaWx0ZXIob3RoZXIubV9zdHJ1Y3R1cmUpOworICAgIGZpbHRlcihvdGhlci5t
X3R5cGUpOworICAgIGZpbHRlckFycmF5TW9kZXMob3RoZXIubV9hcnJheU1vZGVzKTsKK30KKwor
U3BlY3VsYXRlZFR5cGUgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldDo6c3BlY3VsYXRpb25Gcm9tU3Ry
dWN0dXJlcygpIGNvbnN0Cit7CisgICAgU3BlY3VsYXRlZFR5cGUgcmVzdWx0ID0gU3BlY05vbmU7
CisgICAgZm9yRWFjaCgKKyAgICAgICAgWyZdIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVy
ZSkgeworICAgICAgICAgICAgbWVyZ2VTcGVjdWxhdGlvbihyZXN1bHQsIHNwZWN1bGF0aW9uRnJv
bVN0cnVjdHVyZShzdHJ1Y3R1cmUuZ2V0KCkpKTsKKyAgICAgICAgfSk7CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworQXJyYXlNb2RlcyBSZWdpc3RlcmVkU3RydWN0dXJlU2V0OjphcnJheU1vZGVz
RnJvbVN0cnVjdHVyZXMoKSBjb25zdAoreworICAgIEFycmF5TW9kZXMgcmVzdWx0ID0gMDsKKyAg
ICBmb3JFYWNoKAorICAgICAgICBbJl0gKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSB7
CisgICAgICAgICAgICBtZXJnZUFycmF5TW9kZXMocmVzdWx0LCBhc0FycmF5TW9kZXMoc3RydWN0
dXJlLT5pbmRleGluZ1R5cGUoKSkpOworICAgICAgICB9KTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCit2b2lkIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQ6OnZhbGlkYXRlUmVmZXJlbmNlcyhjb25z
dCBUcmFja2VkUmVmZXJlbmNlcyYgdHJhY2tlZFJlZmVyZW5jZXMpIGNvbnN0Cit7CisgICAgLy8g
VGhlIHR5cGUgc3lzdGVtIHNob3VsZCBoZWxwIHVzIGhlcmUsIGJ1dCBwcm90ZWN0IHBlb3BsZSBm
cm9tIGdldHRpbmcgdGhhdCB3cm9uZyB1c2luZyBiaXR3aXNlX2Nhc3Qgb3Igc29tZXRoaW5nIGNy
YXp5LgorICAgIGZvckVhY2goCisgICAgICAgIFsmXSAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1
Y3R1cmUpIHsKKyAgICAgICAgICAgIHRyYWNrZWRSZWZlcmVuY2VzLmNoZWNrKHN0cnVjdHVyZS5n
ZXQoKSk7CisgICAgICAgIH0pOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNl
bmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNldC5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNldC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoREZHX0pJVCkK
KworI2luY2x1ZGUgIkRGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1
cmVTZXQuaCIKKyNpbmNsdWRlIDx3dGYvVGlueVB0clNldC5oPgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgVHJhY2tlZFJlZmVyZW5jZXM7CisKK25hbWVzcGFjZSBERkcgeworCitzdHJ1Y3Qg
QWJzdHJhY3RWYWx1ZTsKK2NsYXNzIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU7CisKK2NsYXNzIFJl
Z2lzdGVyZWRTdHJ1Y3R1cmVTZXQgOiBwdWJsaWMgVGlueVB0clNldDxSZWdpc3RlcmVkU3RydWN0
dXJlPiB7CitwdWJsaWM6CisKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0KCkKKyAgICB7IH0K
KyAgICAKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0KFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3Ry
dWN0dXJlKQorICAgICAgICA6IFRpbnlQdHJTZXQoc3RydWN0dXJlKQorICAgIHsKKyAgICB9Cisg
ICAgCisgICAgQUxXQVlTX0lOTElORSBSZWdpc3RlcmVkU3RydWN0dXJlU2V0KGNvbnN0IFJlZ2lz
dGVyZWRTdHJ1Y3R1cmVTZXQmIG90aGVyKQorICAgICAgICA6IFRpbnlQdHJTZXQob3RoZXIpCisg
ICAgeworICAgIH0KKyAgICAKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG9ubHlTdHJ1Y3R1cmUo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG9ubHlFbnRyeSgpOworICAgIH0KKworICAg
IFN0cnVjdHVyZVNldCB0b1N0cnVjdHVyZVNldCgpIGNvbnN0CisgICAgeworICAgICAgICBTdHJ1
Y3R1cmVTZXQgcmVzdWx0OworICAgICAgICBmb3JFYWNoKFsmXSAoUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBzdHJ1Y3R1cmUpIHsgcmVzdWx0LmFkZChzdHJ1Y3R1cmUuZ2V0KCkpOyB9KTsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICB2b2lkIGZpbHRlcihjb25zdCBERkc6OlN0cnVj
dHVyZUFic3RyYWN0VmFsdWUmKTsKKyAgICB2b2lkIGZpbHRlcihTcGVjdWxhdGVkVHlwZSk7Cisg
ICAgdm9pZCBmaWx0ZXJBcnJheU1vZGVzKEFycmF5TW9kZXMpOworICAgIHZvaWQgZmlsdGVyKGNv
bnN0IERGRzo6QWJzdHJhY3RWYWx1ZSYpOworICAgIAorICAgIFNwZWN1bGF0ZWRUeXBlIHNwZWN1
bGF0aW9uRnJvbVN0cnVjdHVyZXMoKSBjb25zdDsKKyAgICBBcnJheU1vZGVzIGFycmF5TW9kZXNG
cm9tU3RydWN0dXJlcygpIGNvbnN0OworCisgICAgdm9pZCB2YWxpZGF0ZVJlZmVyZW5jZXMoY29u
c3QgVHJhY2tlZFJlZmVyZW5jZXMmKSBjb25zdDsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlND
OjpERkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MjUsNyArNDI1LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBl
JiBzdAogICAgIGNhc2UgQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBSZWFsbG9j
YXRlUHJvcGVydHlTdG9yYWdlOgogICAgICAgICByZXR1cm4gc3RhdGUuZm9yTm9kZShub2RlLT5j
aGlsZDEoKSkubV9zdHJ1Y3R1cmUuaXNTdWJzZXRPZigKLSAgICAgICAgICAgIFN0cnVjdHVyZVNl
dChub2RlLT50cmFuc2l0aW9uKCktPnByZXZpb3VzKSk7CisgICAgICAgICAgICBSZWdpc3RlcmVk
U3RydWN0dXJlU2V0KG5vZGUtPnRyYW5zaXRpb24oKS0+cHJldmlvdXMpKTsKICAgICAgICAgCiAg
ICAgY2FzZSBHZXRCeU9mZnNldDoKICAgICBjYXNlIEdldEdldHRlclNldHRlckJ5T2Zmc2V0OgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTQsNyAr
Mjk0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZQogICAgICAg
ICBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluaygmbV9qaXQpOwogICAgICAgICBHUFJSZWcg
bG9jYWxHbG9iYWxPYmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVjdC5ncHIoKTsKICAgICAgICAg
R1BSUmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9IHJlbW90ZUdsb2JhbE9iamVjdC5ncHIoKTsK
LSAgICAgICAgbV9qaXQubW92ZShKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5ncmFw
aCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbG9j
YWxHbG9iYWxPYmplY3RHUFIpOworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1faml0LmdyYXBoKCksIG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1f
Y3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CiAg
ICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYXJnUGF5bG9hZEdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVzdWx0UGF5bG9hZEdQUik7CiAgICAgICAg
IG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0UGF5bG9hZEdQUiwgU3Ry
dWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlbW90ZUdsb2JhbE9iamVjdEdQUik7CiAg
ICAgICAgIG1faml0LmNvbXBhcmUzMihKSVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2Jq
ZWN0R1BSLCByZW1vdGVHbG9iYWxPYmplY3RHUFIsIHJlc3VsdFBheWxvYWRHUFIpOwpAQCAtMzU4
LDcgKzM1OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGgKICAg
IAogICAgICAgICBHUFJSZWcgbG9jYWxHbG9iYWxPYmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVj
dC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9IHJlbW90ZUds
b2JhbE9iamVjdC5ncHIoKTsKLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0
LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RG
b3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BS
KTsKICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhhcmdQYXlsb2Fk
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZXN1bHRHUFIpOwogICAgICAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgU3RydWN0dXJlOjpn
bG9iYWxPYmplY3RPZmZzZXQoKSksIHJlbW90ZUdsb2JhbE9iamVjdEdQUik7CiAgICAgICAgIGJy
YW5jaFB0cihKSVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2JqZWN0R1BSLCByZW1vdGVH
bG9iYWxPYmplY3RHUFIsIGludmVydCA/IG5vdFRha2VuIDogdGFrZW4pOwpAQCAtMTA4Miw3ICsx
MDgyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgICAg
ICAgICAgbV9qaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOwogICAgIH0KIAotICAgIG1faml0
Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoaW5mbyksIEdQUkluZm86OnJlZ1Qy
KTsKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoaW5mbyksIEdQUkluZm86OnJlZ1QyKTsK
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBzbG93Q2FsbCA9IG1faml0Lm5lYXJDYWxsKCk7CiAKICAg
ICBkb25lLmxpbmsoJm1faml0KTsKQEAgLTEyNDIsMTAgKzEyNDIsOSBAQCBHUFJSZWcgU3BlY3Vs
YXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsCiAgICAgc3dpdGNoIChpbmZvLnJlZ2lzdGVyRm9y
bWF0KCkpIHsKICAgICBjYXNlIERhdGFGb3JtYXROb25lOiB7CiAgICAgICAgIGlmIChlZGdlLT5o
YXNDb25zdGFudCgpKSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIGpzVmFsdWUgPSBlZGdlLT5hc0pT
VmFsdWUoKTsKICAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwogICAgICAgICAg
ICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckNvbnN0YW50
KTsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
anNWYWx1ZS5hc0NlbGwoKSksIGdwcik7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJ
bW1QdHIoZWRnZS0+Y29uc3RhbnQoKSksIGdwcik7CiAgICAgICAgICAgICBpbmZvLmZpbGxDZWxs
KCptX3N0cmVhbSwgZ3ByKTsKICAgICAgICAgICAgIHJldHVybiBncHI7CiAgICAgICAgIH0KQEAg
LTE3MjQsNyArMTcyMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RPck90
aGUKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6RXF1YWwsIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIAotICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkuZ2xv
YmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpKSk7CisgICAgICAg
ICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgbV9qaXQu
Z3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSkp
KTsKIAogICAgICAgICBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluaygmbV9qaXQpOwog
ICAgIH0KQEAgLTE4NDMsNyArMTg0Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmpl
Y3RPck90aGVyQnIKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHNjcmF0Y2hHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCAK
LSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5ncmFw
aCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSkpOwor
ICAgICAgICAgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCks
IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpKSk7CiAKICAgICAgICAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsoJm1f
aml0KTsKICAgICB9CkBAIC0zNzc4LDcgKzM3NzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdBcnJheTogewogICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmlzSGF2aW5n
QUJhZFRpbWUoKSAmJiAhaGFzQW55QXJyYXlTdG9yYWdlKG5vZGUtPmluZGV4aW5nVHlwZSgpKSkg
ewotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmFycmF5
U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5
cGUoKSk7CisgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1faml0
LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZv
ckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKTsKICAg
ICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpID09IG5vZGUtPmluZGV4
aW5nVHlwZSgpKTsKICAgICAgICAgICAgIEFTU0VSVCgKICAgICAgICAgICAgICAgICBoYXNVbmRl
Y2lkZWQoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkKQEAgLTM4NTMsNyArMzg1Miw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGZsdXNo
UmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhp
cyk7CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgIG9wZXJhdGlv
bk5ld0VtcHR5QXJyYXksIHJlc3VsdC5ncHIoKSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVy
ZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKTsK
KyAgICAgICAgICAgICAgICBvcGVyYXRpb25OZXdFbXB0eUFycmF5LCByZXN1bHQuZ3ByKCksIG1f
aml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVy
ZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKSk7
CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAgICAgY2VsbFJl
c3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zOTMwLDcg
KzM5MjksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgCiAgICAgICAg
IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICBvcGVyYXRpb25OZXdBcnJheSwgcmVzdWx0Lmdw
cigpLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxs
b2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSksCisgICAgICAgICAgICBvcGVyYXRpb25OZXdB
cnJheSwgcmVzdWx0LmdwcigpLCBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2Jh
bE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5v
ZGUtPmluZGV4aW5nVHlwZSgpKSksCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDx2b2lkKj4oYnVm
ZmVyKSwgbm9kZS0+bnVtQ2hpbGRyZW4oKSk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CiAKQEAgLTM5NzYsMTAgKzM5NzUsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwog
ICAgICAgICBHUFJSZWcgc3RydWN0dXJlR1BSID0gc2VsZWN0U2NyYXRjaEdQUihzaXplR1BSKTsK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgYmlnTGVuZ3RoID0gbV9qaXQuYnJhbmNoMzIo
TWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgc2l6ZUdQUiwgVHJ1c3RlZEltbTMyKE1JTl9B
UlJBWV9TVE9SQUdFX0NPTlNUUlVDVElPTl9MRU5HVEgpKTsKLSAgICAgICAgbV9qaXQubW92ZShU
cnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVE
dXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKSksIHN0cnVjdHVyZUdQUik7Cisg
ICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3Ry
dWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdB
bGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKSkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAgICAgICBiaWdM
ZW5ndGgubGluaygmbV9qaXQpOwotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoZ2xv
YmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24o
QXJyYXlXaXRoQXJyYXlTdG9yYWdlKSksIHN0cnVjdHVyZUdQUik7CisgICAgICAgIG1faml0Lm1v
dmUoVHJ1c3RlZEltbVB0cihtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9i
amVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5
V2l0aEFycmF5U3RvcmFnZSkpKSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgZG9uZS5saW5rKCZt
X2ppdCk7CiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwg
cmVzdWx0R1BSLCBzdHJ1Y3R1cmVHUFIsIHNpemVHUFIsIG51bGxwdHIpOwogICAgICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOwpAQCAtMzk5OSw3ICszOTk4LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9
IHJlc3VsdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5n
cHIoKTsKIAotICAgICAgICAgICAgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQUiwgZ2xv
YmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24o
aW5kZXhpbmdUeXBlKSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMsIG51bUVsZW1lbnRzKTsKKyAg
ICAgICAgICAgIGVtaXRBbGxvY2F0ZVJhd09iamVjdChyZXN1bHRHUFIsIG1faml0LmdyYXBoKCku
cmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5n
VHlwZUR1cmluZ0FsbG9jYXRpb24oaW5kZXhpbmdUeXBlKSksIHN0b3JhZ2VHUFIsIG51bUVsZW1l
bnRzLCBudW1FbGVtZW50cyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChub2RlLT5p
bmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhEb3VibGUpIHsKICAgICAgICAgICAgICAgICBKU1Zh
bHVlKiBkYXRhID0gbV9qaXQuY29kZUJsb2NrKCktPmNvbnN0YW50QnVmZmVyKG5vZGUtPnN0YXJ0
Q29uc3RhbnQoKSk7CkBAIC00MDI3LDcgKzQwMjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQ
UkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgCi0gICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXlCdWZmZXIsIHJlc3VsdC5ncHIoKSwgZ2xvYmFsT2Jq
ZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+
aW5kZXhpbmdUeXBlKCkpLCBub2RlLT5zdGFydENvbnN0YW50KCksIG5vZGUtPm51bUNvbnN0YW50
cygpKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwgcmVz
dWx0LmdwcigpLCBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+
YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4
aW5nVHlwZSgpKSksIG5vZGUtPnN0YXJ0Q29uc3RhbnQoKSwgbm9kZS0+bnVtQ29uc3RhbnRzKCkp
OwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAKICAgICAgICAgY2Vs
bFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwpAQCAtNDA1MSw3ICs0MDUwLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKAogICAgICAgICAg
ICAgICAgIG9wZXJhdGlvbk5ld1R5cGVkQXJyYXlXaXRoT25lQXJndW1lbnRGb3JUeXBlKG5vZGUt
PnR5cGVkQXJyYXlUeXBlKCkpLAotICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgZ2xvYmFsT2Jq
ZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KG5vZGUtPnR5cGVkQXJyYXlUeXBl
KCkpLCBhcmd1bWVudFJlZ3MpOworICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgbV9qaXQuZ3Jh
cGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVD
b25jdXJyZW50bHkobm9kZS0+dHlwZWRBcnJheVR5cGUoKSkpLCBhcmd1bWVudFJlZ3MpOwogICAg
ICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtNDE3MSw3ICs0MTcwLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dQYXRoOwogICAgICAgICAKLSAgICAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBub2RlLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgUmVnaXN0ZXJl
ZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBub2RlLT5zdHJ1Y3R1cmUoKTsKICAgICAgICAgc2l6ZV90
IGFsbG9jYXRpb25TaXplID0gSlNGaW5hbE9iamVjdDo6YWxsb2NhdGlvblNpemUoc3RydWN0dXJl
LT5pbmxpbmVDYXBhY2l0eSgpKTsKICAgICAgICAgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3JQ
dHIgPSBzdWJzcGFjZUZvcjxKU0ZpbmFsT2JqZWN0PigqbV9qaXQudm0oKSktPmFsbG9jYXRvckZv
cihhbGxvY2F0aW9uU2l6ZSk7CiAKQEAgLTQ0MTYsOCArNDQxNSw4IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgUHV0
U3RydWN0dXJlOiB7Ci0gICAgICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gbm9kZS0+dHJh
bnNpdGlvbigpLT5wcmV2aW91czsKLSAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBu
b2RlLT50cmFuc2l0aW9uKCktPm5leHQ7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgb2xk
U3RydWN0dXJlID0gbm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91czsKKyAgICAgICAgUmVnaXN0
ZXJlZFN0cnVjdHVyZSBuZXdTdHJ1Y3R1cmUgPSBub2RlLT50cmFuc2l0aW9uKCktPm5leHQ7CiAK
ICAgICAgICAgbV9qaXQuaml0Q29kZSgpLT5jb21tb24ubm90aWZ5Q29tcGlsaW5nU3RydWN0dXJl
VHJhbnNpdGlvbihtX2ppdC5ncmFwaCgpLm1fcGxhbiwgbV9qaXQuY29kZUJsb2NrKCksIG5vZGUp
OwogCkBAIC00NDI3LDcgKzQ0MjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgIEFTU0VSVF9VTlVTRUQob2xkU3RydWN0dXJlLCBvbGRTdHJ1Y3R1
cmUtPmluZGV4aW5nVHlwZSgpID09IG5ld1N0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpOwogICAg
ICAgICBBU1NFUlQob2xkU3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBuZXdTdHJ1Y3R1
cmUtPnR5cGVJbmZvKCkudHlwZSgpKTsKICAgICAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZS0+dHlw
ZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSA9PSBuZXdTdHJ1Y3R1cmUtPnR5cGVJbmZvKCkuaW5s
aW5lVHlwZUZsYWdzKCkpOwotICAgICAgICBtX2ppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihuZXdTdHJ1Y3R1cmUpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKKyAgICAgICAgbV9qaXQuc3RvcmVQ
dHIoVHJ1c3RlZEltbVB0cihuZXdTdHJ1Y3R1cmUpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKICAgICAgICAgCiAgICAgICAg
IG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQ2OTEsNyArNDY5MCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgaWYgKCFoYXNJ
bnN0YW5jZVZhbHVlTm9kZS0+aXNDZWxsQ29uc3RhbnQoKSB8fCBkZWZhdWx0SGFzSW5zdGFuY2VG
dW5jdGlvbiAhPSBoYXNJbnN0YW5jZVZhbHVlTm9kZS0+YXNDZWxsKCkpIHsKICAgICAgICAgICAg
IEpTVmFsdWVSZWdzIGhhc0luc3RhbmNlVmFsdWVSZWdzID0gaGFzSW5zdGFuY2VWYWx1ZS5qc1Zh
bHVlUmVncygpOwogICAgICAgICAgICAgbm90RGVmYXVsdEhhc0luc3RhbmNlVmFsdWUuYXBwZW5k
KG1faml0LmJyYW5jaElmTm90Q2VsbChoYXNJbnN0YW5jZVZhbHVlUmVncykpOwotICAgICAgICAg
ICAgbm90RGVmYXVsdEhhc0luc3RhbmNlVmFsdWUuYXBwZW5kKG1faml0LmJyYW5jaFB0cihNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGhhc0luc3RhbmNlVmFsdWVSZWdzLnBheWxvYWRHUFIoKSwg
VHJ1c3RlZEltbVB0cihkZWZhdWx0SGFzSW5zdGFuY2VGdW5jdGlvbikpKTsKKyAgICAgICAgICAg
IG5vdERlZmF1bHRIYXNJbnN0YW5jZVZhbHVlLmFwcGVuZChtX2ppdC5icmFuY2hQdHIoTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCBoYXNJbnN0YW5jZVZhbHVlUmVncy5wYXlsb2FkR1BSKCksIFRy
dXN0ZWRJbW1QdHIobm9kZS0+Y2VsbE9wZXJhbmQoKSkpKTsKICAgICAgICAgfQogCiAgICAgICAg
IC8vIENoZWNrIHRoYXQgY29uc3RydWN0b3IgJ0ltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2Un
LgpAQCAtNDc1Myw3ICs0NzUyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICAgICAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsoJm1faml0
KTsKICAgICAgICAgICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9IGxvY2FsR2xvYmFs
T2JqZWN0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9
IHJlbW90ZUdsb2JhbE9iamVjdC5ncHIoKTsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3Rl
ZEltbVB0cihtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxv
Y2FsR2xvYmFsT2JqZWN0R1BSKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CiAgICAgICAgICAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHZhbHVlLnBheWxvYWRHUFIoKSwgSlND
ZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgICAgIG1f
aml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0LmdwcigpLCBTdHJ1Y3R1cmU6
Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSKTsgCiAgICAgICAg
ICAgICBtX2ppdC5jb21wYXJlMzIoSklUQ29tcGlsZXI6OkVxdWFsLCBsb2NhbEdsb2JhbE9iamVj
dEdQUiwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSLCByZXN1bHQuZ3ByKCkpOwpAQCAtNTcxMywxMyAr
NTcxMiwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2NhdGVOZXdBCiAgICAg
Ly8gV2UgY2FuIHVzZSByZXN1bHQgYXMgYSBzY3JhdGNoIGZvciB0aGlzLgogICAgIGVtaXRJbml0
aWFsaXplQnV0dGVyZmx5KHN0b3JhZ2VHUFIsIHNpemVHUFIsIGVtcHR5VmFsdWVSZWdzLCByZXN1
bHRHUFIpOwogICAgICAgICAgICAgCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxP
YmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRl
eGluZ1R5cGUpOworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9qaXQuZ3Jh
cGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5k
ZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpKTsKICAgICBlbWl0QWxsb2Nh
dGVKU09iamVjdDxKU0FycmF5PihyZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwg
c3RvcmFnZUdQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNlcyk7CiAgICAgICAg
ICAgICAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPENhbGxBcnJh
eUFsbG9jYXRvcldpdGhWYXJpYWJsZVNpemVTbG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgIHNs
b3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVzdWx0R1BSLAogICAg
ICAgICBzdHJ1Y3R1cmUsCi0gICAgICAgIHNob3VsZENvbnZlcnRMYXJnZVNpemVUb0FycmF5U3Rv
cmFnZSA/IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdB
bGxvY2F0aW9uKEFycmF5V2l0aEFycmF5U3RvcmFnZSkgOiBzdHJ1Y3R1cmUsCisgICAgICAgIHNo
b3VsZENvbnZlcnRMYXJnZVNpemVUb0FycmF5U3RvcmFnZSA/IG1faml0LmdyYXBoKCkucmVnaXN0
ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1
cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSkgOiBzdHJ1Y3R1cmUsCiAgICAg
ICAgIHNpemVHUFIsIHN0b3JhZ2VHUFIpKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyMTEyMjkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNTAsNyArMjUwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9u
U3BlY3VsYXRpdmVOb25QZQogCiAgICAgICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9
IGxvY2FsR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmVtb3RlR2xvYmFsT2Jq
ZWN0R1BSID0gcmVtb3RlR2xvYmFsT2JqZWN0LmdwcigpOwotICAgICAgICBtX2ppdC5tb3ZlKEpJ
VENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1f
Y3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7Cisg
ICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgo
KSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgbV9qaXQuZW1pdExvYWRT
dHJ1Y3R1cmUoYXJnR1BSLCByZXN1bHRHUFIsIHNjcmF0Y2guZ3ByKCkpOwogICAgICAgICBtX2pp
dC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgU3RydWN0dXJlOjpnbG9i
YWxPYmplY3RPZmZzZXQoKSksIHJlbW90ZUdsb2JhbE9iamVjdEdQUik7CiAgICAgICAgIG1faml0
LmNvbXBhcmVQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBsb2NhbEdsb2JhbE9iamVjdEdQUiwgcmVt
b3RlR2xvYmFsT2JqZWN0R1BSLCByZXN1bHRHUFIpOwpAQCAtMzA1LDcgKzMwNSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGgKIAogICAgICAgICBHUFJSZWcgbG9j
YWxHbG9iYWxPYmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVjdC5ncHIoKTsKICAgICAgICAgR1BS
UmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9IHJlbW90ZUdsb2JhbE9iamVjdC5ncHIoKTsKLSAg
ICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0
Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQ
Uik7CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQu
Z3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgbV9qaXQuZW1p
dExvYWRTdHJ1Y3R1cmUoYXJnR1BSLCByZXN1bHRHUFIsIHNjcmF0Y2guZ3ByKCkpOwogICAgICAg
ICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgU3RydWN0dXJl
OjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlbW90ZUdsb2JhbE9iamVjdEdQUik7CiAgICAgICAg
IGJyYW5jaFB0cihKSVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2JqZWN0R1BSLCByZW1v
dGVHbG9iYWxPYmplY3RHUFIsIHRha2VuKTsKQEAgLTEwMDYsNyArMTAwNiw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICBtX2ppdC5lbWl0U3RvcmVDYWxs
U2l0ZUluZGV4KGNhbGxTaXRlKTsKICAgICAKICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsUHRy
IHRhcmdldFRvQ2hlY2s7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGggPSBtX2ppdC5i
cmFuY2hQdHJXaXRoUGF0Y2goTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBjYWxsZWVHUFIsIHRh
cmdldFRvQ2hlY2ssIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKDApKTsKKyAgICBKSVRD
b21waWxlcjo6SnVtcCBzbG93UGF0aCA9IG1faml0LmJyYW5jaFB0cldpdGhQYXRjaChNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIGNhbGxlZUdQUiwgdGFyZ2V0VG9DaGVjaywgVHJ1c3RlZEltbVB0
cigwKSk7CiAKICAgICBpZiAoaXNUYWlsKSB7CiAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFRh
aWxDYWxsKSB7CkBAIC0xMDM1LDcgKzEwMzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
Q2FsbChOb2RlKiBub2RlCiAgICAgICAgICAgICBtX2ppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVz
KCk7IC8vIFRoaXMgbmVlZHMgdG8gaGFwcGVuIGFmdGVyIHdlIG1vdmVkIGNhbGxlZUdQUiB0byBy
ZWdUMAogICAgIH0KIAotICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIoY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6cmVnVDIpOyAvLyBMaW5rIGluZm8gbmVlZHMgdG8g
YmUgaW4gcmVnVDIKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwg
R1BSSW5mbzo6cmVnVDIpOyAvLyBMaW5rIGluZm8gbmVlZHMgdG8gYmUgaW4gcmVnVDIKICAgICBK
SVRDb21waWxlcjo6Q2FsbCBzbG93Q2FsbCA9IG1faml0Lm5lYXJDYWxsKCk7CiAKICAgICBkb25l
LmxpbmsoJm1faml0KTsKQEAgLTE4NTYsNyArMTg1Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVPYmplY3RPck90aGUKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAogICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RP
ZmZzZXQoKSksIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpKSk7CisgICAgICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9q
aXQuZ3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+
b3JpZ2luLnNlbWFudGljKSkpKTsKIAogICAgICAgICBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQubGluaygmbV9qaXQpOwogICAgIH0KQEAgLTIwMDcsNyArMjAwNyw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnIKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0
cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAogICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpnbG9i
YWxPYmplY3RPZmZzZXQoKSksIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpKSk7CisgICAgICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJy
ZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSkpKTsKIAogICAgICAgICBpc05vdE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQubGluaygmbV9qaXQpOwogICAgIH0KQEAgLTM3NTcsNyArMzc1Nyw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIE5ld0FycmF5
OiB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgp
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBpZiAoIWds
b2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpICYmICFoYXNBbnlBcnJheVN0b3JhZ2Uobm9k
ZS0+aW5kZXhpbmdUeXBlKCkpKSB7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0
aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKTsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUgc3RydWN0dXJlID0gbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmpl
Y3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5p
bmRleGluZ1R5cGUoKSkpOwogICAgICAgICAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBu
b2RlLCBzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpID09IG5vZGUtPmluZGV4aW5nVHlwZSgpKTsK
ICAgICAgICAgICAgIEFTU0VSVCgKICAgICAgICAgICAgICAgICBoYXNVbmRlY2lkZWQoc3RydWN0
dXJlLT5pbmRleGluZ1R5cGUoKSkKQEAgLTM4MzAsNyArMzgzMCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgaWYgKCFub2RlLT5udW1DaGlsZHJl
bigpKSB7CiAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICAgICAgR1BSRmx1
c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25OZXdFbXB0eUFycmF5LCByZXN1bHQuZ3ByKCksIGdsb2JhbE9iamVjdC0+YXJyYXlT
dHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlw
ZSgpKSk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0VtcHR5QXJyYXks
IHJlc3VsdC5ncHIoKSwgbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmpl
Y3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5p
bmRleGluZ1R5cGUoKSkpKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAg
ICAgICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTM5MTIsNyArMzkxMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwog
ICAgICAgICAKICAgICAgICAgY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgIG9wZXJhdGlvbk5l
d0FycmF5LCByZXN1bHQuZ3ByKCksIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRl
eGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKSwKKyAgICAgICAg
ICAgIG9wZXJhdGlvbk5ld0FycmF5LCByZXN1bHQuZ3ByKCksIG1faml0LmdyYXBoKCkucmVnaXN0
ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1
cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKSwKICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PHZvaWQqPihidWZmZXIpLCBub2RlLT5udW1DaGlsZHJlbigpKTsKICAgICAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKIApAQCAtMzk1NiwxMCArMzk1NiwxMCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIgPSBzZWxlY3RTY3Jh
dGNoR1BSKHNpemVHUFIpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBiaWdMZW5ndGgg
PSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBzaXplR1BSLCBU
cnVzdGVkSW1tMzIoTUlOX0FSUkFZX1NUT1JBR0VfQ09OU1RSVUNUSU9OX0xFTkdUSCkpOwotICAg
ICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVy
ZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKSwg
c3RydWN0dXJlR1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0Lmdy
YXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvcklu
ZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKSksIHN0cnVj
dHVyZUdQUik7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1w
KCk7CiAgICAgICAgIGJpZ0xlbmd0aC5saW5rKCZtX2ppdCk7Ci0gICAgICAgIG1faml0Lm1vdmUo
VHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBl
RHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2UpKSwgc3RydWN0dXJlR1BSKTsK
KyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkucmVnaXN0ZXJT
dHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmlu
Z0FsbG9jYXRpb24oQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSkpLCBzdHJ1Y3R1cmVHUFIpOwogICAg
ICAgICBkb25lLmxpbmsoJm1faml0KTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25O
ZXdBcnJheVdpdGhTaXplLCByZXN1bHRHUFIsIHN0cnVjdHVyZUdQUiwgc2l6ZUdQUiwgbnVsbHB0
cik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CkBAIC0zOTc5LDcgKzM5NzksNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHN0b3Jh
Z2VHUFIgPSBzdG9yYWdlLmdwcigpOwogCi0gICAgICAgICAgICBlbWl0QWxsb2NhdGVSYXdPYmpl
Y3QocmVzdWx0R1BSLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBl
RHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cywg
bnVtRWxlbWVudHMpOworICAgICAgICAgICAgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQ
UiwgbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3Ry
dWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpKSwgc3Rv
cmFnZUdQUiwgbnVtRWxlbWVudHMsIG51bUVsZW1lbnRzKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBpbmRleGluZ1R5cGUgJiBJc0Fy
cmF5KTsKICAgICAgICAgICAgIEpTVmFsdWUqIGRhdGEgPSBtX2ppdC5jb2RlQmxvY2soKS0+Y29u
c3RhbnRCdWZmZXIobm9kZS0+c3RhcnRDb25zdGFudCgpKTsKQEAgLTQwMDUsNyArNDAwNSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hS
ZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwog
ICAgICAgICAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwg
cmVzdWx0LmdwcigpLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBl
RHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSksIG5vZGUtPnN0YXJ0Q29uc3Rh
bnQoKSwgbm9kZS0+bnVtQ29uc3RhbnRzKCkpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbk5ld0FycmF5QnVmZmVyLCByZXN1bHQuZ3ByKCksIG1faml0LmdyYXBoKCkucmVnaXN0ZXJT
dHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmlu
Z0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKSwgbm9kZS0+c3RhcnRDb25zdGFudCgp
LCBub2RlLT5udW1Db25zdGFudHMoKSk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CiAgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CkBAIC00
MDI5LDcgKzQwMjksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgo
KS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgICAgIGNh
bGxPcGVyYXRpb24oCiAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhP
bmVBcmd1bWVudEZvclR5cGUobm9kZS0+dHlwZWRBcnJheVR5cGUoKSksCi0gICAgICAgICAgICAg
ICAgcmVzdWx0R1BSLCBnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50
bHkobm9kZS0+dHlwZWRBcnJheVR5cGUoKSksCisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBt
X2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0
cnVjdHVyZUNvbmN1cnJlbnRseShub2RlLT50eXBlZEFycmF5VHlwZSgpKSksCiAgICAgICAgICAg
ICAgICAgYXJndW1lbnRHUFIpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
ICAgICAgICAgICAgIApAQCAtNDE0Myw3ICs0MTQzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXBMaXN0IHNsb3dQYXRoOwogCi0gICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbm9kZS0+
c3RydWN0dXJlKCk7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbm9k
ZS0+c3RydWN0dXJlKCk7CiAgICAgICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IEpTRmluYWxP
YmplY3Q6OmFsbG9jYXRpb25TaXplKHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAg
ICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yUHRyID0gc3Vic3BhY2VGb3I8SlNGaW5hbE9i
amVjdD4oKm1faml0LnZtKCkpLT5hbGxvY2F0b3JGb3IoYWxsb2NhdGlvblNpemUpOwogCkBAIC00
Mzc2LDggKzQzNzYsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIFB1dFN0cnVjdHVyZTogewotICAgICAgICBTdHJ1
Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IG5vZGUtPnRyYW5zaXRpb24oKS0+cHJldmlvdXM7Ci0gICAg
ICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gbm9kZS0+dHJhbnNpdGlvbigpLT5uZXh0Owor
ICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG9sZFN0cnVjdHVyZSA9IG5vZGUtPnRyYW5zaXRp
b24oKS0+cHJldmlvdXM7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgbmV3U3RydWN0dXJl
ID0gbm9kZS0+dHJhbnNpdGlvbigpLT5uZXh0OwogCiAgICAgICAgIG1faml0LmppdENvZGUoKS0+
Y29tbW9uLm5vdGlmeUNvbXBpbGluZ1N0cnVjdHVyZVRyYW5zaXRpb24obV9qaXQuZ3JhcGgoKS5t
X3BsYW4sIG1faml0LmNvZGVCbG9jaygpLCBub2RlKTsKIApAQCAtNDY1Miw3ICs0NjUyLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAvLyBzaW5j
ZSBpdCByZWxpZXMgb24gT1NSIGluZm9ybWF0aW9uLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU0ODMyCiAgICAgICAgIGlmICghaGFzSW5zdGFuY2VWYWx1ZU5vZGUt
PmlzQ2VsbENvbnN0YW50KCkgfHwgZGVmYXVsdEhhc0luc3RhbmNlRnVuY3Rpb24gIT0gaGFzSW5z
dGFuY2VWYWx1ZU5vZGUtPmFzQ2VsbCgpKSB7CiAgICAgICAgICAgICBHUFJSZWcgaGFzSW5zdGFu
Y2VWYWx1ZUdQUiA9IGhhc0luc3RhbmNlVmFsdWUuZ3ByKCk7Ci0gICAgICAgICAgICBub3REZWZh
dWx0ID0gbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgaGFzSW5zdGFu
Y2VWYWx1ZUdQUiwgVHJ1c3RlZEltbVB0cihkZWZhdWx0SGFzSW5zdGFuY2VGdW5jdGlvbikpOwor
ICAgICAgICAgICAgbm90RGVmYXVsdCA9IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIGhhc0luc3RhbmNlVmFsdWVHUFIsIFRydXN0ZWRJbW1QdHIobm9kZS0+Y2VsbE9w
ZXJhbmQoKSkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gQ2hlY2sgdGhhdCBiYXNlICdJbXBs
ZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlJy4KQEAgLTQ3MTksNyArNDcxOSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGlzTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZC5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICBHUFJSZWcgbG9jYWxHbG9i
YWxPYmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVjdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJl
ZyByZW1vdGVHbG9iYWxPYmplY3RHUFIgPSByZW1vdGVHbG9iYWxPYmplY3QuZ3ByKCk7Ci0gICAg
ICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CisgICAgICAgICAg
ICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIG1f
aml0Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbG9jYWxHbG9iYWxP
YmplY3RHUFIpOwogICAgICAgICAgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUodmFsdWUuZ3By
KCksIHJlc3VsdC5ncHIoKSwgc2NyYXRjaC5ncHIoKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2Fk
UHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdC5ncHIoKSwgU3RydWN0dXJlOjpnbG9iYWxP
YmplY3RPZmZzZXQoKSksIHJlbW90ZUdsb2JhbE9iamVjdEdQUik7IAogICAgICAgICAgICAgbV9q
aXQuY29tcGFyZVB0cihKSVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2JqZWN0R1BSLCBy
ZW1vdGVHbG9iYWxPYmplY3RHUFIsIHJlc3VsdC5ncHIoKSk7CkBAIC00OTEyLDkgKzQ5MTIsOSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIG1faml0
LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChidWZmZXJHUFIsIGluZGV4R1BSLCBN
YWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCksIGJ1Y2tldEdQUik7CiAgICAgICAgIG1faml0Lm1v
dmUoYnVja2V0R1BSLCByZXN1bHRHUFIpOwogICAgICAgICBhdXRvIG5vdFByZXNlbnRJblRhYmxl
ID0gbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICBi
dWNrZXRHUFIsIFRydXN0ZWRJbW1QdHIoSGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNoTWFw
QnVja2V0RGF0YUtleT4+OjplbXB0eVZhbHVlKCkpKTsKKyAgICAgICAgICAgIGJ1Y2tldEdQUiwg
VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8c2l6ZV90PihIYXNoTWFwSW1wbDxIYXNoTWFwQnVj
a2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46OmVtcHR5VmFsdWUoKSkpKTsKICAgICAgICAgbG9v
cEFyb3VuZC5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0g
ICAgICAgICAgICBidWNrZXRHUFIsIFRydXN0ZWRJbW1QdHIoSGFzaE1hcEltcGw8SGFzaE1hcEJ1
Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT4+OjpkZWxldGVkVmFsdWUoKSkpKTsKKyAgICAgICAg
ICAgIGJ1Y2tldEdQUiwgVHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8c2l6ZV90PihIYXNoTWFw
SW1wbDxIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46OmRlbGV0ZWRWYWx1ZSgp
KSkpKTsKIAogICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYnVj
a2V0R1BSLCBIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pjo6b2Zmc2V0T2ZLZXko
KSksIGJ1Y2tldEdQUik7CiAKQEAgLTU5ODIsNyArNTk4Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVBbGxvY2F0ZU5ld0EKICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tNjQo
SlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSkpLCBzY3JhdGNoR1BSKTsKICAgICBlbWl0SW5pdGlh
bGl6ZUJ1dHRlcmZseShzdG9yYWdlR1BSLCBzaXplR1BSLCBKU1ZhbHVlUmVncyhzY3JhdGNoR1BS
KSwgc2NyYXRjaDJHUFIpOwogCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmpl
Y3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGlu
Z1R5cGUpOworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9qaXQuZ3JhcGgo
KS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhp
bmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpKTsKICAgICAKICAgICBlbWl0QWxs
b2NhdGVKU09iamVjdDxKU0FycmF5PihyZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJl
KSwgc3RvcmFnZUdQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNlcyk7CiAgICAg
CkBAIC01OTkxLDcgKzU5OTEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2Nh
dGVOZXdBCiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxDYWxsQXJy
YXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3I+KAogICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIHJlc3VsdEdQUiwKICAg
ICAgICAgc3RydWN0dXJlLAotICAgICAgICBzaG91bGRDb252ZXJ0TGFyZ2VTaXplVG9BcnJheVN0
b3JhZ2UgPyBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5n
QWxsb2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2UpIDogc3RydWN0dXJlLAorICAgICAgICBz
aG91bGRDb252ZXJ0TGFyZ2VTaXplVG9BcnJheVN0b3JhZ2UgPyBtX2ppdC5ncmFwaCgpLnJlZ2lz
dGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVE
dXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aEFycmF5U3RvcmFnZSkpIDogc3RydWN0dXJlLAogICAg
ICAgICBzaXplR1BSLCBzdG9yYWdlR1BSKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyMTEyMjkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBTcGVjdWxhdGl2ZUpJVDo6flNwZWN1bGF0aXZlSklU
KCkKIHsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlUmF3T2JqZWN0KEdQ
UlJlZyByZXN1bHRHUFIsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBHUFJSZWcgc3RvcmFnZUdQUiwg
dW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCkKK3ZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZVJhd09iamVjdChHUFJSZWcgcmVzdWx0R1BSLCBSZWdpc3Rl
cmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgR1BSUmVnIHN0b3JhZ2VHUFIsIHVuc2lnbmVkIG51bUVs
ZW1lbnRzLCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpCiB7CiAgICAgSW5kZXhpbmdUeXBlIGluZGV4
aW5nVHlwZSA9IHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCk7CiAgICAgYm9vbCBoYXNJbmRleGlu
Z0hlYWRlciA9IGhhc0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSk7CkBAIC05OCw3ICs5
OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZVJhd09iamUKICAgICBHUFJS
ZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKIAogICAgIEFTU0VSVCh2ZWN0b3JMZW5n
dGggPj0gbnVtRWxlbWVudHMpOwotICAgIHZlY3Rvckxlbmd0aCA9IEJ1dHRlcmZseTo6b3B0aW1h
bENvbnRpZ3VvdXNWZWN0b3JMZW5ndGgoc3RydWN0dXJlLCB2ZWN0b3JMZW5ndGgpOworICAgIHZl
Y3Rvckxlbmd0aCA9IEJ1dHRlcmZseTo6b3B0aW1hbENvbnRpZ3VvdXNWZWN0b3JMZW5ndGgoc3Ry
dWN0dXJlLmdldCgpLCB2ZWN0b3JMZW5ndGgpOwogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1w
TGlzdCBzbG93Q2FzZXM7CiAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjplbWl0R2V0Q2FsbGVlKENvZGVPCiAgICAgICAgICAgICAgICAgY2FsbGVlR1BSKTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1faml0Lm1vdmUoCi0gICAgICAgICAgICAgICAgVHJ1
c3RlZEltbVB0cihvcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVSZWNvdmVyeS5jb25zdGFu
dCgpLmFzQ2VsbCgpKSwKKyAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2ppdC5ncmFwaCgpLCBvcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVSZWNvdmVyeS5j
b25zdGFudCgpLmFzQ2VsbCgpKSwKICAgICAgICAgICAgICAgICBjYWxsZWVHUFIpOwogICAgICAg
ICB9CiAgICAgfSBlbHNlCkBAIC02NDgsNyArNjQ4LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
c2lsZW50RmlsbChjb25zdCBTaQogICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihwbGFu
Lm5vZGUoKS0+YXNCb29sZWFuKCkpLCBwbGFuLmdwcigpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBTZXRDZWxsQ29uc3RhbnQ6Ci0gICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihw
bGFuLm5vZGUoKS0+YXNDZWxsKCkpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgQVNTRVJUKHBsYW4u
bm9kZSgpLT5jb25zdGFudCgpLT52YWx1ZSgpLmlzQ2VsbCgpKTsKKyAgICAgICAgbV9qaXQubW92
ZShUcnVzdGVkSW1tUHRyKHBsYW4ubm9kZSgpLT5jb25zdGFudCgpKSwgcGxhbi5ncHIoKSk7CiAg
ICAgICAgIGJyZWFrOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgY2FzZSBTZXRUcnVzdGVkSlND
b25zdGFudDoKQEAgLTg3Nyw3ICs4NzgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0Fy
cmF5KE5vZGUqIG5vCiAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHRlbXAuZ3ByKCksIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpLAotICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoZXhwZWN0ZWRDbGFzc0luZm8pKSk7CisgICAg
ICAgICAgICBUcnVzdGVkSW1tUHRyKGV4cGVjdGVkQ2xhc3NJbmZvKSkpOwogICAgIAogICAgIG5v
UmVzdWx0KG1fY3VycmVudE5vZGUpOwogfQpAQCAtMjA1NSw3ICsyMDU2LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25TdAogICAgIGNvbnQ4Qml0LmxpbmsoJm1faml0
KTsKIAogICAgIG1faml0LmxzaGlmdDMyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoc2l6
ZW9mKHZvaWQqKSA9PSA0ID8gMiA6IDMpLCBzY3JhdGNoUmVnKTsKLSAgICBtX2ppdC5hZGRQdHIo
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c21hbGxTdHJpbmdzLnNp
bmdsZUNoYXJhY3RlclN0cmluZ3MoKSksIHNjcmF0Y2hSZWcpOworICAgIG1faml0LmFkZFB0cihU
cnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJp
bmdzKCkpLCBzY3JhdGNoUmVnKTsKICAgICBtX2ppdC5sb2FkUHRyKHNjcmF0Y2hSZWcsIHNjcmF0
Y2hSZWcpOwogCiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCkBAIC0yMTQ2LDcgKzIxNDcsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRnJvbUNoYXJDb2RlCiAKICAgICBKSVRDb21w
aWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJh
bmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcsIFRydXN0ZWRJ
bW0zMigweGZmKSkpOwotICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIobV9qaXQudm0oKS0+c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZ3MoKSksIHNt
YWxsU3RyaW5nc1JlZyk7CisgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0LnZtKCkt
PnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzKCkpLCBzbWFsbFN0cmluZ3NSZWcp
OwogICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzbWFsbFN0cmlu
Z3NSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6U2NhbGVQdHIsIDApLCBzY3JhdGNo
UmVnKTsKIAogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNz
ZW1ibGVyOjpaZXJvLCBzY3JhdGNoUmVnKSk7CkBAIC0yNDY4LDcgKzI0NjksNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlRG91YmxlUmVwKE5vCiAgICAgICAgICAgICBKSVRDb21waWxl
cjo6SnVtcCBpc1VuZGVmaW5lZCA9IG1faml0LmJyYW5jaDY0KEpJVENvbXBpbGVyOjpFcXVhbCwg
b3AxR1BSLCBUcnVzdGVkSW1tNjQoVmFsdWVVbmRlZmluZWQpKTsKIAogICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IGRvdWJsZSB6ZXJvID0gMDsKLSAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUo
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJnplcm8pLCByZXN1bHRGUFIpOworICAgICAg
ICAgICAgbV9qaXQubG9hZERvdWJsZShUcnVzdGVkSW1tUHRyKCZ6ZXJvKSwgcmVzdWx0RlBSKTsK
IAogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOdWxsID0gbV9qaXQuYnJhbmNoNjQo
SklUQ29tcGlsZXI6OkVxdWFsLCBvcDFHUFIsIFRydXN0ZWRJbW02NChWYWx1ZU51bGwpKTsKICAg
ICAgICAgICAgIGRvbmUuYXBwZW5kKGlzTnVsbCk7CkBAIC0yNDc4LDEzICsyNDc5LDEzIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVSZXAoTm8KIAogICAgICAgICAgICAgSklU
Q29tcGlsZXI6Okp1bXAgaXNGYWxzZSA9IG1faml0LmJyYW5jaDY0KEpJVENvbXBpbGVyOjpFcXVh
bCwgb3AxR1BSLCBUcnVzdGVkSW1tNjQoVmFsdWVGYWxzZSkpOwogICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IGRvdWJsZSBvbmUgPSAxOwotICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmb25lKSwgcmVzdWx0RlBSKTsKKyAgICAgICAgICAg
IG1faml0LmxvYWREb3VibGUoVHJ1c3RlZEltbVB0cigmb25lKSwgcmVzdWx0RlBSKTsKICAgICAg
ICAgICAgIGRvbmUuYXBwZW5kKG1faml0Lmp1bXAoKSk7CiAgICAgICAgICAgICBkb25lLmFwcGVu
ZChpc0ZhbHNlKTsKIAogICAgICAgICAgICAgaXNVbmRlZmluZWQubGluaygmbV9qaXQpOwogICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBOYU4gPSBQTmFOOwotICAgICAgICAgICAgbV9q
aXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmTmFOKSwgcmVzdWx0
RlBSKTsKKyAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoVHJ1c3RlZEltbVB0cigmTmFOKSwg
cmVzdWx0RlBSKTsKICAgICAgICAgICAgIGRvbmUuYXBwZW5kKG1faml0Lmp1bXAoKSk7CiAKICAg
ICAgICAgICAgIGlzTnVtYmVyLmxpbmsoJm1faml0KTsKQEAgLTI1MTcsNyArMjUxOCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVSZXAoTm8KICAgICAgICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wIGlzVW5kZWZpbmVkID0gbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6OkVx
dWFsLCBvcDFUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpVbmRlZmluZWRUYWcpKTsKIAog
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSB6ZXJvID0gMDsKLSAgICAgICAgICAgIG1f
aml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJnplcm8pLCByZXN1
bHRGUFIpOworICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShUcnVzdGVkSW1tUHRyKCZ6ZXJv
KSwgcmVzdWx0RlBSKTsKIAogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOdWxsID0g
bV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6OkVxdWFsLCBvcDFUYWdHUFIsIFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpOdWxsVGFnKSk7CiAgICAgICAgICAgICBkb25lLmFwcGVuZChpc051bGwpOwpA
QCAtMjUyNiwxMyArMjUyNywxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRG91Ymxl
UmVwKE5vCiAKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzRmFsc2UgPSBtX2ppdC5i
cmFuY2hUZXN0MzIoSklUQ29tcGlsZXI6Olplcm8sIG9wMVBheWxvYWRHUFIsIFRydXN0ZWRJbW0z
MigxKSk7CiAgICAgICAgICAgICBzdGF0aWMgY29uc3QgZG91YmxlIG9uZSA9IDE7Ci0gICAgICAg
ICAgICBtX2ppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZvbmUp
LCByZXN1bHRGUFIpOworICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShUcnVzdGVkSW1tUHRy
KCZvbmUpLCByZXN1bHRGUFIpOwogICAgICAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuanVtcCgp
KTsKICAgICAgICAgICAgIGRvbmUuYXBwZW5kKGlzRmFsc2UpOwogCiAgICAgICAgICAgICBpc1Vu
ZGVmaW5lZC5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICBzdGF0aWMgY29uc3QgZG91YmxlIE5h
TiA9IFBOYU47Ci0gICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKCZOYU4pLCByZXN1bHRGUFIpOworICAgICAgICAgICAgbV9qaXQubG9hZERv
dWJsZShUcnVzdGVkSW1tUHRyKCZOYU4pLCByZXN1bHRGUFIpOwogICAgICAgICAgICAgZG9uZS5h
cHBlbmQobV9qaXQuanVtcCgpKTsKIAogICAgICAgICAgICAgaXNOdW1iZXIubGluaygmbV9qaXQp
OwpAQCAtMjY0NywxMiArMjY0OCwxMiBAQCBzdGF0aWMgdm9pZCBjb21waWxlQ2xhbXBEb3VibGVU
b0J5dGUoSklUCiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSB6ZXJvID0gMDsKICAgICBzdGF0aWMg
Y29uc3QgZG91YmxlIGJ5dGVNYXggPSAyNTU7CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBoYWxm
ID0gMC41OwotICAgIGppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KCZ6ZXJvKSwgc2NyYXRjaCk7CisgICAgaml0LmxvYWREb3VibGUoSklUQ29tcGlsZXI6OlRydXN0
ZWRJbW1QdHIoJnplcm8pLCBzY3JhdGNoKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCB0b29T
bWFsbCA9IGppdC5icmFuY2hEb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUxlc3NUaGFuT3JF
cXVhbE9yVW5vcmRlcmVkLCBzb3VyY2UsIHNjcmF0Y2gpOwotICAgIGppdC5sb2FkRG91YmxlKE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZieXRlTWF4KSwgc2NyYXRjaCk7CisgICAgaml0
LmxvYWREb3VibGUoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIoJmJ5dGVNYXgpLCBzY3JhdGNo
KTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCB0b29CaWcgPSBqaXQuYnJhbmNoRG91YmxlKE1h
Y3JvQXNzZW1ibGVyOjpEb3VibGVHcmVhdGVyVGhhbiwgc291cmNlLCBzY3JhdGNoKTsKICAgICAK
LSAgICBqaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmaGFsZiks
IHNjcmF0Y2gpOworICAgIGppdC5sb2FkRG91YmxlKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRy
KCZoYWxmKSwgc2NyYXRjaCk7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IGp1
c3QgdXNlIGEgZmxvYXRpbmcgcG9pbnQgcm91bmQhCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMDU0CiAgICAgaml0LmFkZERvdWJsZShzb3VyY2UsIHNj
cmF0Y2gpOwpAQCAtMzkwMCw3ICszOTAxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU1ha2VSb3BlKE5vZAogICAgIE1hcmtlZEFsbG9jYXRvciogbWFya2VkQWxsb2NhdG9yID0gc3Vi
c3BhY2VGb3I8SlNTdHJpbmc+KCptX2ppdC52bSgpKS0+YWxsb2NhdG9yRm9yKHNpemVvZihKU1Jv
cGVTdHJpbmcpKTsKICAgICBSRUxFQVNFX0FTU0VSVChtYXJrZWRBbGxvY2F0b3IpOwogICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtYXJrZWRBbGxvY2F0b3IpLCBhbGxvY2F0b3JHUFIpOwot
ICAgIGVtaXRBbGxvY2F0ZUpTQ2VsbChyZXN1bHRHUFIsIG1hcmtlZEFsbG9jYXRvciwgYWxsb2Nh
dG9yR1BSLCBUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSks
IHNjcmF0Y2hHUFIsIHNsb3dQYXRoKTsKKyAgICBlbWl0QWxsb2NhdGVKU0NlbGwocmVzdWx0R1BS
LCBtYXJrZWRBbGxvY2F0b3IsIGFsbG9jYXRvckdQUiwgVHJ1c3RlZEltbVB0cihtX2ppdC5ncmFw
aCgpLnJlZ2lzdGVyU3RydWN0dXJlKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkp
LCBzY3JhdGNoR1BSLCBzbG93UGF0aCk7CiAgICAgICAgIAogICAgIG1faml0LnN0b3JlUHRyKFRy
dXN0ZWRJbW1QdHIoMCksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNTdHJpbmc6
Om9mZnNldE9mVmFsdWUoKSkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1PcEdQ
UnM7ICsraSkKQEAgLTUwOTcsNyArNTA5OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVBcml0aFJvdW5kaW4KICAgICAgICAgICAgICAgICBGUFJSZWcgcmVzdWx0RlBSID0gcmVzdWx0
LmZwcigpOwogICAgICAgICAgICAgICAgIGlmIChwcm9kdWNlc0ludGVnZXIobm9kZS0+YXJpdGhS
b3VuZGluZ01vZGUoKSkgJiYgIXNob3VsZENoZWNrTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoUm91
bmRpbmdNb2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBkb3VibGUg
aGFsZkNvbnN0YW50ID0gMC41OwotICAgICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkRG91Ymxl
KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZoYWxmQ29uc3RhbnQpLCByZXN1bHRGUFIp
OworICAgICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKFRydXN0ZWRJbW1QdHIoJmhh
bGZDb25zdGFudCksIHJlc3VsdEZQUik7CiAgICAgICAgICAgICAgICAgICAgIG1faml0LmFkZERv
dWJsZSh2YWx1ZUZQUiwgcmVzdWx0RlBSKTsKICAgICAgICAgICAgICAgICAgICAgbV9qaXQuZmxv
b3JEb3VibGUocmVzdWx0RlBSLCByZXN1bHRGUFIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7
CkBAIC01MTA5LDExICs1MTEwLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0
aFJvdW5kaW4KICAgICAgICAgICAgICAgICAgICAgRlBSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7
CiAgICAgICAgICAgICAgICAgICAgIEZQUlJlZyBzY3JhdGNoRlBSID0gc2NyYXRjaC5mcHIoKTsK
ICAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBoYWxmQ29uc3RhbnQgPSAw
LjU7Ci0gICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIoJmhhbGZDb25zdGFudCksIHNjcmF0Y2hGUFIpOworICAgICAgICAgICAg
ICAgICAgICBtX2ppdC5sb2FkRG91YmxlKFRydXN0ZWRJbW1QdHIoJmhhbGZDb25zdGFudCksIHNj
cmF0Y2hGUFIpOwogCiAgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHNob3Vs
ZFVzZUNlaWxlZCA9IG1faml0LmJyYW5jaERvdWJsZShKSVRDb21waWxlcjo6RG91YmxlTGVzc1Ro
YW5PckVxdWFsLCByZWFsUGFydEZQUiwgc2NyYXRjaEZQUik7CiAgICAgICAgICAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBkb3VibGUgb25lQ29uc3RhbnQgPSAtMS4wOwotICAgICAgICAgICAgICAg
ICAgICBtX2ppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZvbmVD
b25zdGFudCksIHNjcmF0Y2hGUFIpOworICAgICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkRG91
YmxlKFRydXN0ZWRJbW1QdHIoJm9uZUNvbnN0YW50KSwgc2NyYXRjaEZQUik7CiAgICAgICAgICAg
ICAgICAgICAgIG1faml0LmFkZERvdWJsZShzY3JhdGNoRlBSLCByZXN1bHRGUFIpOwogICAgICAg
ICAgICAgICAgICAgICBzaG91bGRVc2VDZWlsZWQubGluaygmbV9qaXQpOwogICAgICAgICAgICAg
ICAgIH0KQEAgLTYzNTMsMTIgKzYzNTQsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUNoZWNrU3RyaW5nSQogICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgQ2xhc3NUeXBlPiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3RnVuY3Rpb25Db21t
b24oR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBzY3JhdGNo
MUdQUiwgR1BSUmVnIHNjcmF0Y2gyR1BSLCBHUFJSZWcgc2NvcGVHUFIsIE1hY3JvQXNzZW1ibGVy
OjpKdW1wTGlzdCYgc2xvd1BhdGgsIHNpemVfdCBzaXplLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUsIHB0cmRpZmZfdCBvZmZzZXRPZlNjb3BlQ2hhaW4sIHB0cmRpZmZfdCBvZmZzZXRP
ZkV4ZWN1dGFibGUsIHB0cmRpZmZfdCBvZmZzZXRPZlJhcmVEYXRhKQordGVtcGxhdGUgPHR5cGVu
YW1lIENsYXNzVHlwZT4gdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uQ29t
bW9uKEdQUlJlZyByZXN1bHRHUFIsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCBHUFJS
ZWcgc2NyYXRjaDFHUFIsIEdQUlJlZyBzY3JhdGNoMkdQUiwgR1BSUmVnIHNjb3BlR1BSLCBNYWNy
b0Fzc2VtYmxlcjo6SnVtcExpc3QmIHNsb3dQYXRoLCBzaXplX3Qgc2l6ZSwgRnVuY3Rpb25FeGVj
dXRhYmxlKiBleGVjdXRhYmxlLCBwdHJkaWZmX3Qgb2Zmc2V0T2ZTY29wZUNoYWluLCBwdHJkaWZm
X3Qgb2Zmc2V0T2ZFeGVjdXRhYmxlLCBwdHJkaWZmX3Qgb2Zmc2V0T2ZSYXJlRGF0YSkKIHsKICAg
ICBlbWl0QWxsb2NhdGVKU09iamVjdFdpdGhLbm93blNpemU8Q2xhc3NUeXBlPihyZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgVHJ1c3RlZEltbVB0cigwKSwgc2NyYXRjaDFHUFIs
IHNjcmF0Y2gyR1BSLCBzbG93UGF0aCwgc2l6ZSk7CiAgICAgCiAgICAgbV9qaXQuc3RvcmVQdHIo
c2NvcGVHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0T2ZTY29wZUNo
YWluKSk7Ci0gICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihleGVjdXRhYmxlKSwgSklU
Q29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRPZkV4ZWN1dGFibGUpKTsKKyAgICBt
X2ppdC5zdG9yZVB0cihUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBl
eGVjdXRhYmxlKSwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRPZkV4ZWN1
dGFibGUpKTsKICAgICBtX2ppdC5zdG9yZVB0cihUcnVzdGVkSW1tUHRyKDApLCBKSVRDb21waWxl
cjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9mZnNldE9mUmFyZURhdGEpKTsKICAgICAKICAgICBtX2pp
dC5tdXRhdG9yRmVuY2UoKTsKQEAgLTYzOTEsMTAgKzYzOTIsMTAgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPQorICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJl
ID0gbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZSgKICAgICAgICAgbm9kZVR5cGUgPT0g
TmV3R2VuZXJhdG9yRnVuY3Rpb24gPyBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLT5nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpIDoKICAgICAg
ICAgbm9kZVR5cGUgPT0gTmV3QXN5bmNGdW5jdGlvbiA/IG1faml0LmdyYXBoKCkuZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKSA6
Ci0gICAgICAgIG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyktPmZ1bmN0aW9uU3RydWN0dXJlKCk7CisgICAgICAgIG1faml0LmdyYXBoKCkuZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmZ1bmN0aW9uU3RydWN0dXJlKCkpOwog
ICAgIAogICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHNj
cmF0Y2gxKHRoaXMpOwpAQCAtNjUxMCw4ICs2NTExLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUZvcndhcmRWYXJhcgogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUFj
dGl2YXRpb24oTm9kZSogbm9kZSkKIHsKICAgICBTeW1ib2xUYWJsZSogdGFibGUgPSBub2RlLT5j
YXN0T3BlcmFuZDxTeW1ib2xUYWJsZSo+KCk7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBt
X2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcigKLSAgICAgICAgbm9kZS0+b3JpZ2luLnNlbWFu
dGljKS0+YWN0aXZhdGlvblN0cnVjdHVyZSgpOworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3Ry
dWN0dXJlID0gbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShtX2ppdC5ncmFwaCgpLmds
b2JhbE9iamVjdEZvcigKKyAgICAgICAgbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YWN0aXZhdGlv
blN0cnVjdHVyZSgpKTsKICAgICAgICAgCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEdQUlJlZyBzY29wZUdQUiA9IHNjb3BlLmdwcigp
OwpAQCAtNjU1Miw3ICs2NTUzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0
ZUFjdGl2YQogICAgIC8vIGFjdGl2YXRpb24gbXVzdCBiZSB5b3VuZy4KICAgICBtX2ppdC5zdG9y
ZVB0cihzY29wZUdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU1Njb3BlOjpv
ZmZzZXRPZk5leHQoKSkpOwogICAgIG1faml0LnN0b3JlUHRyKAotICAgICAgICBUcnVzdGVkSW1t
UHRyKHRhYmxlKSwKKyAgICAgICAgVHJ1c3RlZEltbVB0cihub2RlLT5jZWxsT3BlcmFuZCgpKSwK
ICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0xleGljYWxFbnZpcm9u
bWVudDo6b2Zmc2V0T2ZTeW1ib2xUYWJsZSgpKSk7CiAgICAgICAgIAogICAgIC8vIE11c3QgaW5p
dGlhbGl6ZSBhbGwgbWVtYmVycyB0byB1bmRlZmluZWQgb3IgdGhlIFREWiBlbXB0eSB2YWx1ZS4K
QEAgLTY2MTUsOCArNjYxNiw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVE
aXJlY3QKICAgICAgICAgbV9qaXQuc3ViMzIoVHJ1c3RlZEltbTMyKDEpLCBsZW5ndGhHUFIpOwog
ICAgIH0KICAgICAgICAgCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPQotICAgICAgICBtX2pp
dC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5kaXJlY3RB
cmd1bWVudHNTdHJ1Y3R1cmUoKTsKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9
CisgICAgICAgIG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUobV9qaXQuZ3JhcGgoKS5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZGlyZWN0QXJndW1lbnRzU3Ry
dWN0dXJlKCkpOwogICAgICAgICAKICAgICAvLyBVc2UgYSBkaWZmZXJlbnQgc3RyYXRlZ3kgZm9y
IGFsbG9jYXRpbmcgdGhlIG9iamVjdCBkZXBlbmRpbmcgb24gd2hldGhlciB3ZSBrbm93IGl0cwog
ICAgIC8vIHNpemUgc3RhdGljYWxseS4KQEAgLTY2ODEsOCArNjY4Miw4IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVEaXJlY3QKICAgICAgICAgICAgICAgICBzY3JhdGNoMUdQ
Uik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKAotICAgICAgICAg
ICAgICAgIFRydXN0ZWRJbW1QdHIoCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUtPmNhbGxlZVJlY292ZXJ5LmNvbnN0YW50KCkuYXNDZWxs
KCkpLAorICAgICAgICAgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKAorICAgICAg
ICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5l
Q2FsbEZyYW1lLT5jYWxsZWVSZWNvdmVyeS5jb25zdGFudCgpLmFzQ2VsbCgpKSwKICAgICAgICAg
ICAgICAgICBzY3JhdGNoMUdQUik7CiAgICAgICAgIH0KICAgICB9IGVsc2UKQEAgLTY3OTgsNyAr
Njc5OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVTY29wZWQKICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50KAogICAgICAgICAxLCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7CiAg
ICAgICAgICAgICBtX2ppdC5tb3ZlKAotICAgICAgICAgICAgICAgIFRydXN0ZWRJbW1QdHIobV9q
aXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnNjb3BlZEFyZ3VtZW50
c1N0cnVjdHVyZSgpKSwKKyAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2ppdC5ncmFwaCgpLCBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKS0+c2NvcGVkQXJndW1lbnRzU3RydWN0dXJlKCkpLAogICAgICAgICAgICAgICAgIGRlc3RH
UFIpOwogICAgICAgICB9KTsKICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50KDAsIFsmXSAoR1BSUmVn
IGRlc3RHUFIpIHsgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgZGVzdEdQ
Uik7IH0pOwpAQCAtNjgyNSw4ICs2ODI2LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUNyZWF0ZUNsb25lZAogICAgIG1faml0LnNldHVwQXJndW1lbnQoCiAgICAgICAgIDEsIFsmXSAo
R1BSUmVnIGRlc3RHUFIpIHsKICAgICAgICAgICAgIG1faml0Lm1vdmUoCi0gICAgICAgICAgICAg
ICAgVHJ1c3RlZEltbVB0cigKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQuZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmNsb25lZEFyZ3VtZW50c1N0cnVjdHVyZSgpKSwK
KyAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcigKKyAgICAgICAgICAg
ICAgICAgICAgbV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyktPmNsb25lZEFyZ3VtZW50c1N0cnVjdHVyZSgpKSwKICAgICAgICAgICAgICAg
ICBkZXN0R1BSKTsKICAgICAgICAgfSk7CiAgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgwLCBbJl0g
KEdQUlJlZyBkZXN0R1BSKSB7IG1faml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IGRlc3RHUFIpOyB9KTsKQEAgLTY5NDksNyArNjk1MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVTcHJlYWQoTm9kZSoKICAgICAgICAgbV9qaXQubHNoaWZ0MzIoVHJ1c3RlZEltbTMy
KDMpLCBzY3JhdGNoMUdQUik7CiAgICAgICAgIG1faml0LmFkZDMyKFRydXN0ZWRJbW0zMihKU0Zp
eGVkQXJyYXk6Om9mZnNldE9mRGF0YSgpKSwgc2NyYXRjaDFHUFIpOwogCi0gICAgICAgIG1faml0
LmVtaXRBbGxvY2F0ZVZhcmlhYmxlU2l6ZWRDZWxsPEpTRml4ZWRBcnJheT4ocmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkubV92bS5maXhlZEFycmF5U3RydWN0dXJlLmdldCgp
KSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd1BhdGgpOworICAg
ICAgICBtX2ppdC5lbWl0QWxsb2NhdGVWYXJpYWJsZVNpemVkQ2VsbDxKU0ZpeGVkQXJyYXk+KHJl
c3VsdEdQUiwgVHJ1c3RlZEltbVB0cihtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKG1f
aml0LmdyYXBoKCkubV92bS5maXhlZEFycmF5U3RydWN0dXJlLmdldCgpKSksIHNjcmF0Y2gxR1BS
LCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIsIHNsb3dQYXRoKTsKICAgICAgICAgbV9qaXQuc3Rv
cmUzMihsZW5ndGhHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNGaXhl
ZEFycmF5OjpvZmZzZXRPZlNpemUoKSkpOwogCiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYXJndW1lbnQsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSks
IHNjcmF0Y2gxR1BSKTsKQEAgLTcyNjYsMTcgKzcyNjcsMTcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUFycmF5U2xpY2UoTgogICAgICAgICAvLyB0byBlbnN1cmUgdGhlIGluY29taW5n
IGFycmF5IGlzIG9uZSB0byBiZSBvbmUgb2YgdGhlIG9yaWdpbmFsIGFycmF5IHN0cnVjdHVyZXMK
ICAgICAgICAgLy8gd2l0aCBvbmUgb2YgdGhlIGZvbGxvd2luZyBpbmRleGluZyBzaGFwZXM6IElu
dDMyLCBDb250aWd1b3VzLCBEb3VibGUuIFRoZXJlZm9yZSwKICAgICAgICAgLy8gd2UncmUgYSBk
b3VibGUgYXJyYXkgaGVyZS4KLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKGdsb2Jh
bE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFy
cmF5V2l0aERvdWJsZSkpLCB0ZW1wVmFsdWUpOworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJ
bW1QdHIobV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5
U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhEb3VibGUp
KSksIHRlbXBWYWx1ZSk7CiAgICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZShqc05hTigpKTsKICAg
ICAgICAgZG9uZS5hcHBlbmQobV9qaXQuanVtcCgpKTsKIAogICAgICAgICBpc0NvbnRpZ3VvdXMu
bGluaygmbV9qaXQpOwotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2Jq
ZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlX
aXRoQ29udGlndW91cykpLCB0ZW1wVmFsdWUpOworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJ
bW1QdHIobV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5
U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhDb250aWd1
b3VzKSkpLCB0ZW1wVmFsdWUpOwogICAgICAgICBlbWl0TW92ZUVtcHR5VmFsdWUoSlNWYWx1ZSgp
KTsKICAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuanVtcCgpKTsKIAogICAgICAgICBpc0ludDMy
LmxpbmsoJm1faml0KTsKLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKGdsb2JhbE9i
amVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5
V2l0aEludDMyKSksIHRlbXBWYWx1ZSk7CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0
cihtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1
Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aEludDMyKSkpLCB0
ZW1wVmFsdWUpOwogICAgICAgICBlbWl0TW92ZUVtcHR5VmFsdWUoSlNWYWx1ZSgpKTsKIAogICAg
ICAgICBkb25lLmxpbmsoJm1faml0KTsKQEAgLTc0NTYsNyArNzQ1Nyw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVUeXBlT2YoTm9kZSoKICAgICBtX2ppdC5lbWl0VHlwZU9mKAogICAg
ICAgICB2YWx1ZVJlZ3MsIHJlc3VsdEdQUiwKICAgICAgICAgWyZdIChUeXBlb2ZUeXBlIHR5cGUs
IGJvb2wgZmFsbHNUaHJvdWdoKSB7Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1Q
dHIobV9qaXQudm0oKS0+c21hbGxTdHJpbmdzLnR5cGVTdHJpbmcodHlwZSkpLCByZXN1bHRHUFIp
OworICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2pp
dC5ncmFwaCgpLCBtX2ppdC52bSgpLT5zbWFsbFN0cmluZ3MudHlwZVN0cmluZyh0eXBlKSksIHJl
c3VsdEdQUik7CiAgICAgICAgICAgICBpZiAoIWZhbGxzVGhyb3VnaCkKICAgICAgICAgICAgICAg
ICBkb25lLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogICAgICAgICB9LApAQCAtNzU4MCw3ICs3NTgx
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFsbG9jYXRlUHJvcAogICAgIEdQUlJl
ZyBzY3JhdGNoR1BSMiA9IHNjcmF0Y2gyLmdwcigpOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSMyA9
IHNjcmF0Y2gzLmdwcigpOwogICAgICAgICAKLSAgICBtX2ppdC5tb3ZlKEpJVENvbXBpbGVyOjpU
cnVzdGVkSW1tUHRyKGFsbG9jYXRvciksIHNjcmF0Y2hHUFIyKTsKKyAgICBtX2ppdC5tb3ZlKFRy
dXN0ZWRJbW1QdHIoYWxsb2NhdG9yKSwgc2NyYXRjaEdQUjIpOwogICAgIEpJVENvbXBpbGVyOjpK
dW1wTGlzdCBzbG93UGF0aDsKICAgICBtX2ppdC5lbWl0QWxsb2NhdGUoc2NyYXRjaEdQUjEsIGFs
bG9jYXRvciwgc2NyYXRjaEdQUjIsIHNjcmF0Y2hHUFIzLCBzbG93UGF0aCk7CiAgICAgbV9qaXQu
YWRkUHRyKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoc2l6ZSArIHNpemVvZihJbmRleGluZ0hl
YWRlcikpLCBzY3JhdGNoR1BSMSk7CkBAIC03NjI4LDcgKzc2MjksNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlUmVhbGxvY2F0ZVByCiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIzID0gc2Ny
YXRjaDMuZ3ByKCk7CiAgICAgCiAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dQYXRoOwot
ICAgIG1faml0Lm1vdmUoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIoYWxsb2NhdG9yKSwgc2Ny
YXRjaEdQUjIpOworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihhbGxvY2F0b3IpLCBzY3Jh
dGNoR1BSMik7CiAgICAgbV9qaXQuZW1pdEFsbG9jYXRlKHNjcmF0Y2hHUFIxLCBhbGxvY2F0b3Is
IHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMywgc2xvd1BhdGgpOwogICAgIAogICAgIG1faml0LmFk
ZFB0cihKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKG5ld1NpemUgKyBzaXplb2YoSW5kZXhpbmdI
ZWFkZXIpKSwgc2NyYXRjaEdQUjEpOwpAQCAtNzg1NywxMCArNzg1OCwxMCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdPckNhCiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7CiAKICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpBZGRy
ZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVzdWx0R1BSKTsKLSAg
ICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNTdHJpbmcgPSBtX2ppdC5icmFuY2hTdHJ1Y3R1cmUo
CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzU3RyaW5nID0gbV9qaXQuYnJhbmNoV2Vha1N0
cnVjdHVyZSgKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpFcXVhbCwKICAgICAgICAgICAgIHJl
c3VsdEdQUiwKLSAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSk7
CisgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKG1faml0LnZtKCkt
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogCiAgICAgICAgIHNwZWN1bGF0ZVN0cmluZ09iamVj
dEZvclN0cnVjdHVyZShub2RlLT5jaGlsZDEoKSwgcmVzdWx0R1BSKTsKICAgICAgICAgCkBAIC03
OTU2LDggKzc5NTcsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJh
CiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgVHlwZWRBcnJheVR5cGUg
dHlwZSA9IG5vZGUtPnR5cGVkQXJyYXlUeXBlKCk7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZSk7Ci0g
ICAgUkVMRUFTRV9BU1NFUlQoc3RydWN0dXJlKTsKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0
cnVjdHVyZSA9IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT50
eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGUpKTsKKyAgICBSRUxFQVNFX0FTU0VS
VChzdHJ1Y3R1cmUuZ2V0KCkpOwogICAgIAogICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBzaXpl
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBHUFJSZWcgc2l6ZUdQUiA9IHNpemUuZ3ByKCk7
CkBAIC04NDAxLDEwICs4NDAyLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0
cmluZ09yU3QKICAgICBHUFJSZWcgc3RydWN0dXJlSURHUFIgPSBzdHJ1Y3R1cmVJRC5ncHIoKTsK
IAogICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6QWRkcmVzcyhncHIsIEpTQ2VsbDo6c3Ry
dWN0dXJlSURPZmZzZXQoKSksIHN0cnVjdHVyZUlER1BSKTsgCi0gICAgSklUQ29tcGlsZXI6Okp1
bXAgaXNTdHJpbmcgPSBtX2ppdC5icmFuY2hTdHJ1Y3R1cmUoCisgICAgSklUQ29tcGlsZXI6Okp1
bXAgaXNTdHJpbmcgPSBtX2ppdC5icmFuY2hXZWFrU3RydWN0dXJlKAogICAgICAgICBKSVRDb21w
aWxlcjo6RXF1YWwsCiAgICAgICAgIHN0cnVjdHVyZUlER1BSLCAKLSAgICAgICAgbV9qaXQudm0o
KS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKTsKKyAgICAgICAgbV9qaXQuZ3JhcGgoKS5yZWdpc3Rl
clN0cnVjdHVyZShtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAKICAg
ICBzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JTdHJ1Y3R1cmUoZWRnZSwgc3RydWN0dXJlSURHUFIp
OwogICAgIApAQCAtOTI2Nyw4ICs5MjY4LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUxhenlKU0NvbnN0YQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWF0ZXJpYWxpemVO
ZXdPYmplY3QoTm9kZSogbm9kZSkKIHsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5vZGUt
PnN0cnVjdHVyZVNldCgpWzBdOwotICAgIEFTU0VSVChtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxk
KG5vZGUsIDApLT5keW5hbWljQ2FzdENvbnN0YW50PFN0cnVjdHVyZSo+KCkgPT0gc3RydWN0dXJl
KTsKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG5vZGUtPnN0cnVjdHVyZVNl
dCgpLmF0KDApOworICAgIEFTU0VSVChtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDAp
LT5keW5hbWljQ2FzdENvbnN0YW50PFN0cnVjdHVyZSo+KCkgPT0gc3RydWN0dXJlLmdldCgpKTsK
IAogICAgIE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEmIGRhdGEgPSBub2RlLT5vYmplY3RNYXRl
cmlhbGl6YXRpb25EYXRhKCk7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMjExMjI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBA
IC03NSw3ICs3NSw2IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKIHByaXZhdGU6CiAgICAgdHlw
ZWRlZiBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyIFRydXN0ZWRJbW0zMjsKICAgICB0eXBlZGVm
IEpJVENvbXBpbGVyOjpJbW0zMiBJbW0zMjsKLSAgICB0eXBlZGVmIEpJVENvbXBpbGVyOjpUcnVz
dGVkSW1tUHRyIFRydXN0ZWRJbW1QdHI7CiAgICAgdHlwZWRlZiBKSVRDb21waWxlcjo6SW1tUHRy
IEltbVB0cjsKICAgICB0eXBlZGVmIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tNjQgVHJ1c3RlZElt
bTY0OwogICAgIHR5cGVkZWYgSklUQ29tcGlsZXI6OkltbTY0IEltbTY0OwpAQCAtMTEyLDYgKzEx
MSw2NCBAQCBwdWJsaWM6CiAgICAgU3BlY3VsYXRpdmVKSVQoSklUQ29tcGlsZXImKTsKICAgICB+
U3BlY3VsYXRpdmVKSVQoKTsKIAorICAgIHN0cnVjdCBUcnVzdGVkSW1tUHRyIHsKKyAgICAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIoVCog
dmFsdWUpCisgICAgICAgICAgICA6IG1fdmFsdWUodmFsdWUpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxIZWFwQ2VsbCwgVD46OnZhbHVlLCAi
VG8gdXNlIGEgR0MgcG9pbnRlciwgdGhlIGdyYXBoIG11c3QgYmUgYXdhcmUgb2YgaXQuIFVzZSBT
cGVjdWxhdGl2ZUpJVDo6VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIgaW5zdGVhZC4iKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIoUmVnaXN0ZXJlZFN0cnVj
dHVyZSBzdHJ1Y3R1cmUpCisgICAgICAgICAgICA6IG1fdmFsdWUoc3RydWN0dXJlLmdldCgpKQor
ICAgICAgICB7IH0KKyAgICAgICAgCisgICAgICAgIC8vIFRoaXMgaXMgb25seSBoZXJlIHNvIHRo
YXQgVHJ1c3RlZEltbVB0cigwKSBkb2VzIG5vdCBjb25mdXNlIHRoZSBDKysKKyAgICAgICAgLy8g
b3ZlcmxvYWQgaGFuZGxpbmcgcnVsZXMuCisgICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIo
aW50IHZhbHVlKQorICAgICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgICAgICB7CisgICAg
ICAgICAgICBBU1NFUlQoIXZhbHVlKTsKKyAgICAgICAgfQorCisgICAgICAgIGV4cGxpY2l0IFRy
dXN0ZWRJbW1QdHIoc3RkOjpudWxscHRyX3QpCisgICAgICAgICAgICA6IG1fdmFsdWUoMCkKKyAg
ICAgICAgeyB9CisKKyAgICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbVB0cihGcm96ZW5WYWx1ZSog
dmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHZhbHVlLT52YWx1
ZSgpLmlzQ2VsbCgpKTsKKyAgICAgICAgICAgIG1fdmFsdWUgPSBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cih2YWx1ZS0+Y2VsbCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGV4cGxpY2l0
IFRydXN0ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQorICAgICAgICAgICAgOiBtX3ZhbHVlKGJpdHdp
c2VfY2FzdDx2b2lkKj4odmFsdWUpKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBz
dGF0aWMgVHJ1c3RlZEltbVB0ciB3ZWFrUG9pbnRlcihHcmFwaCYgZ3JhcGgsIEpTQ2VsbCogY2Vs
bCkKKyAgICAgICAgeyAgICAgCisgICAgICAgICAgICAvLyBUaGVyZSBhcmUgd2VpcmQgcmVsYXRp
b25zaGlwcyBpbiBob3cgb3B0aW1pemVkIENvZGVCbG9ja3MKKyAgICAgICAgICAgIC8vIHBvaW50
IHRvIG90aGVyIENvZGVCbG9ja3MuIFdlIGRvbid0IHdhbnQgdG8gaGF2ZSB0aGVtIGJlCisgICAg
ICAgICAgICAvLyBwYXJ0IG9mIHRoZSB3ZWFrIHBvaW50ZXIgc2V0LiBGb3IgZXhhbXBsZSwgYW4g
b3B0aW1pemVkIENvZGVCbG9jaworICAgICAgICAgICAgLy8gaGF2aW5nIGEgd2VhayBwb2ludGVy
IHRvIGl0c2VsZiB3aWxsIGNhdXNlIGl0IHRvIGdldCBjb2xsZWN0ZWQuCisgICAgICAgICAgICBB
U1NFUlQoIWpzRHluYW1pY0Nhc3Q8Q29kZUJsb2NrKj4ocG9pbnRlcikpOworCisgICAgICAgICAg
ICBncmFwaC5tX3BsYW4ud2Vha1JlZmVyZW5jZXMuYWRkTGF6aWx5KGNlbGwpOworICAgICAgICAg
ICAgcmV0dXJuIFRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHNpemVfdD4oY2VsbCkpOworICAg
ICAgICB9CisKKyAgICAgICAgb3BlcmF0b3IgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
KSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisKKyAgICAgICAgaW50cHRyX3QgYXNJbnRwdHIo
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV92YWx1ZS5hc0ludHB0cigpOworICAg
ICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0ciBtX3ZhbHVlOworICAgIH07CisKICAgICBib29sIGNvbXBpbGUoKTsKICAgICAKICAgICB2
b2lkIGNyZWF0ZU9TUkVudHJpZXMoKTsKQEAgLTk4MiwxNyArMTAzOSwxNyBAQCBwdWJsaWM6CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShvYmosIGltcGwpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAg
fQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVN0
IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3Qgb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkKICAgICB7CiAg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0
cnVjdHVyZSkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9K
SVRPcGVyYXRpb25fRVN0WlAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVN0WlAgb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBh
cmczKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRy
dXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgYXJnMiwgYXJnMyk7CiAgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RaUCBvcGVyYXRpb24sIEdQ
UlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgYXJnMiwgR1BSUmVnIGFy
ZzMpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9F
U3RaUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0
dXJlLCBzaXplX3QgYXJnMiwgR1BSUmVnIGFyZzMpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVk
SW1tMzIoYXJnMiksIGFyZzMpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdCk7CkBAIC0xMDAyLDEyICsxMDU5LDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwog
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAg
ICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25f
RVN0WkIgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BS
UmVnIGFyZzIsIEdQUlJlZyBidXR0ZXJmbHkpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RaQiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFJl
Z2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGJ1dHRlcmZs
eSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVz
dGVkSW1tUHRyKHN0cnVjdHVyZSksIGFyZzIsIGJ1dHRlcmZseSk7CiAgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RaQiBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgYXJnMiwgR1BSUmVn
IGJ1dHRlcmZseSkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3Bl
cmF0aW9uX0VTdFpCIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBzdHJ1Y3R1cmUsIHNpemVfdCBhcmcyLCBHUFJSZWcgYnV0dGVyZmx5KQogICAgIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0
dXJlKSwgVHJ1c3RlZEltbTMyKGFyZzIpLCBidXR0ZXJmbHkpOwogICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CkBAIC0xMDIyLDEyICsxMDc5LDEy
IEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzIsIFRydXN0ZWRJbW1QdHIoYnV0dGVyZmx5KSk7CiAgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RQUyBvcGVyYXRpb24sIEdQ
UlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB2b2lkKiBwb2ludGVyLCBzaXplX3Qg
c2l6ZSkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9u
X0VTdFBTIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1
Y3R1cmUsIHZvaWQqIHBvaW50ZXIsIHNpemVfdCBzaXplKQogICAgIHsKICAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgVHJ1
c3RlZEltbVB0cihwb2ludGVyKSwgVHJ1c3RlZEltbVB0cihzaXplKSk7CiAgICAgICAgIHJldHVy
biBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RTUyBvcGVyYXRp
b24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgaW5kZXgsIHNp
emVfdCBzaXplKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVy
YXRpb25fRVN0U1Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBSZWdpc3RlcmVkU3RydWN0dXJl
IHN0cnVjdHVyZSwgc2l6ZV90IGluZGV4LCBzaXplX3Qgc2l6ZSkKICAgICB7CiAgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSks
IFRydXN0ZWRJbW1QdHIoaW5kZXgpLCBUcnVzdGVkSW1tUHRyKHNpemUpKTsKICAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwpAQCAtMTA0NCw3ICsx
MTAxLDcgQEAgcHVibGljOgogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKENfSklUT3BlcmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgSlNDZWxsKiBj
ZWxsKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRy
dXN0ZWRJbW1QdHIoY2VsbCkpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgY2VsbCkpOwog
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAg
ICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25f
RUNaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQpA
QCAtMTA1OSw3ICsxMTE2LDcgQEAgcHVibGljOgogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKc2NDIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdCwgR1BSUmVnIGFyZzEsIEpTQ2VsbCogY2VsbCkKICAgICB7Ci0gICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGNlbGwpKTsKKyAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGNlbGwpKTsKICAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VJY2Ygb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0LCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkKQEAgLTEwNjcs
NDYgKzExMjQsNDYgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoVHJ1c3RlZEltbVB0cihpbmxpbmVDYWxsRnJhbWUpKTsKICAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdCBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRVN0IG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsK
ICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwog
ICAgIH0KIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FU3RKc2NTeW10YWJKIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBzY29wZSwgU3ltYm9sVGFibGUqIHRh
YmxlLCBUcnVzdGVkSW1tNjQgaW5pdGlhbFZhbHVlKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRVN0SnNjU3ltdGFiSiBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCBHUFJSZWcgc2NvcGUsIFN5
bWJvbFRhYmxlKiB0YWJsZSwgVHJ1c3RlZEltbTY0IGluaXRpYWxWYWx1ZSkKICAgICB7Ci0gICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVj
dHVyZSksIHNjb3BlLCBUcnVzdGVkSW1tUHRyKHRhYmxlKSwgaW5pdGlhbFZhbHVlKTsKKyAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0
dXJlKSwgc2NvcGUsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIHRh
YmxlKSwgaW5pdGlhbFZhbHVlKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICNlbHNlCi0gICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FU3RKc2NTeW10YWJKIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBzY29wZSwgU3ltYm9sVGFi
bGUqIHRhYmxlLCBUcnVzdGVkSW1tMzIgdGFnLCBUcnVzdGVkSW1tMzIgcGF5bG9hZCkKKyAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdEpzY1N5bXRh
Ykogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVy
ZSwgR1BSUmVnIHNjb3BlLCBTeW1ib2xUYWJsZSogdGFibGUsIFRydXN0ZWRJbW0zMiB0YWcsIFRy
dXN0ZWRJbW0zMiBwYXlsb2FkKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgc2NvcGUsIFRydXN0ZWRJbW1Q
dHIodGFibGUpLCBwYXlsb2FkLCB0YWcpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBzY29wZSwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgdGFibGUpLCBwYXlsb2FkLCB0YWcpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAg
fQogI2VuZGlmCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJh
dGlvbl9FU3RaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IHVuc2lnbmVkIGtub3duTGVuZ3RoKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oQ19KSVRPcGVyYXRpb25fRVN0WiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCB1bnNpZ25lZCBrbm93bkxlbmd0aCkKICAgICB7CiAgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVj
dHVyZSksIFRydXN0ZWRJbW0zMihrbm93bkxlbmd0aCkpOwogICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRVN0Wlogb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQga25vd25MZW5ndGgsIHVu
c2lnbmVkIG1pbkNhcGFjaXR5KQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Q19KSVRPcGVyYXRpb25fRVN0Wlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBSZWdpc3RlcmVk
U3RydWN0dXJlIHN0cnVjdHVyZSwgdW5zaWduZWQga25vd25MZW5ndGgsIHVuc2lnbmVkIG1pbkNh
cGFjaXR5KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgVHJ1c3RlZEltbTMyKGtub3duTGVuZ3RoKSwgVHJ1
c3RlZEltbTMyKG1pbkNhcGFjaXR5KSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FU3RaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBsZW5ndGgpCisgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FU3RaIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIEdQUlJlZyBsZW5ndGgpCiAgICAg
ewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0
cihzdHJ1Y3R1cmUpLCBsZW5ndGgpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRVN0Wlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIGxlbmd0aCwgdW5zaWduZWQgbWluQ2FwYWNpdHkp
CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FU3Ra
WiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJl
LCBHUFJSZWcgbGVuZ3RoLCB1bnNpZ25lZCBtaW5DYXBhY2l0eSkKICAgICB7CiAgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSks
IGxlbmd0aCwgVHJ1c3RlZEltbTMyKG1pbkNhcGFjaXR5KSk7CiAgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FSnNzU3Qgb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FSnNzU3Qgb3BlcmF0
aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1
Y3R1cmUpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENh
bGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwpAQCAtMTE0MCwxMyArMTE5NywxMyBAQCBw
dWJsaWM6CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0
aW9uX0VHQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEdQUlJlZyBhcmcyKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwgYXJnMik7CisgICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9p
bnRlcihtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3QpLCBhcmcyKTsKICAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUdDIG9wZXJhdGlv
biwgR1BSUmVnIHJlc3VsdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgR1BSUmVnIGFy
ZzIpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1
c3RlZEltbVB0cihnbG9iYWxPYmplY3QpLCBhcmcyKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBo
KCksIGdsb2JhbE9iamVjdCksIGFyZzIpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCkBAIC0xMTcwLDcgKzEyMjcsNyBAQCBw
dWJsaWM6CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0
aW9uX0VDIG9wZXJhdGlvbiwgSlNDZWxsKiBhcmcxKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoYXJnMSkpOworICAgICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9qaXQuZ3JhcGgoKSwgYXJnMSkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVy
YXRpb24pOwogICAgIH0KIApAQCAtMTE5NywxMiArMTI1NCwxMiBAQCBwdWJsaWM6CiAgICAgfQog
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUNDIG9w
ZXJhdGlvbiwgR1BSUmVnIGFyZzEsIEpTQ2VsbCogYXJnMikKICAgICB7Ci0gICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGFyZzIpKTsK
KyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGFyZzIpKTsKICAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FQ0Mgb3BlcmF0aW9uLCBKU0NlbGwqIGFyZzEsIEdQ
UlJlZyBhcmcyKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKFRydXN0ZWRJbW1QdHIoYXJnMSksIGFyZzIpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgo
KSwgYXJnMSksIGFyZzIpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwog
ICAgIH0KIApAQCAtMTI3MywxMyArMTMzMCwxMyBAQCBwdWJsaWM6CiAKICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKc2NDIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEpTQ2VsbCogY2VsbCkKICAgICB7Ci0gICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGNlbGwp
KTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGNlbGwpKTsKICAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICAK
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKc2ND
SiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwsIEdQ
UlJlZyBhcmcyKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCksIGFyZzIpOworICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9qaXQuZ3JhcGgoKSwgY2VsbCksIGFyZzIpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCkBAIC0xNDc0LDcgKzE1MzEsNyBA
QCBwdWJsaWM6CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9K
SVRPcGVyYXRpb25fRUMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBKU0NlbGwqIGNlbGwpCiAg
ICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bVB0cihjZWxsKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShU
cnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBjZWxsKSk7CiAgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FQ1ogb3Bl
cmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCkBAIC0xNTQ0
LDcgKzE2MDEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VTdEogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIGFyZzIpCisgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIEdQUlJlZyBhcmcyKQogICAgIHsKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3Ry
dWN0dXJlKSwgYXJnMik7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0KTsKQEAgLTE1NTIsNyArMTYwOSw3IEBAIHB1YmxpYzoKIAogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUdKIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgR1BSUmVnIGFyZzEp
CiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbVB0cihnbG9iYWxPYmplY3QpLCBhcmcxKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCks
IGdsb2JhbE9iamVjdCksIGFyZzEpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCkBAIC0xOTAwLDcgKzE5NTcsNyBAQCBwdWJs
aWM6CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oRF9KSVRPcGVy
YXRpb25fRyBvcGVyYXRpb24sIEZQUlJlZyByZXN1bHQsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50cyhUcnVzdGVkSW1tUHRy
KGdsb2JhbE9iamVjdCkpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50cyhUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3QpKTsKICAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFpfSklUT3BlcmF0aW9uX0Qgb3BlcmF0
aW9uLCBHUFJSZWcgcmVzdWx0LCBGUFJSZWcgYXJnMSkKQEAgLTIwMDksNyArMjA2Niw3IEBAIHB1
YmxpYzoKIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRp
b25fRUMgb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQsIEpTQ2VsbCogY2VsbCkKICAgICB7
Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRy
KGNlbGwpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0
ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGNlbGwpKTsKICAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQucGF5bG9hZEdQUigpLCBy
ZXN1bHQudGFnR1BSKCkpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKEpfSklUT3BlcmF0aW9uX0VDWiBvcGVyYXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BS
UmVnIGFyZzEsIEdQUlJlZyBhcmcyKQpAQCAtMjAxOSwxMiArMjA3NiwxMiBAQCBwdWJsaWM6CiAg
ICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25f
RUpzY0Mgb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBhcmcxLCBKU0NlbGwq
IGNlbGwpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFw
aCgpLCBjZWxsKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKICAgICB9CiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNjQ0ogb3BlcmF0
aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgSlNDZWxsKiBjZWxsLCBKU1ZhbHVlUmVn
cyBhcmcyKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCksIEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzIucGF5
bG9hZEdQUigpLCBhcmcyLnRhZ0dQUigpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBo
KCksIGNlbGwpLCBFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcyLnBheWxvYWRHUFIoKSwgYXJnMi50
YWdHUFIoKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJ
VE9wZXJhdGlvbl9FR1Jlb0ogb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMiwgSlNWYWx1ZVJlZ3MgYXJnMykKQEAgLTIxMDksNyArMjE2Niw3IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOwogICAgIH0KIAotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9K
SVRPcGVyYXRpb25fRVN0SiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBKU1ZhbHVlUmVncyBhcmcyKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oUF9KSVRPcGVyYXRpb25fRVN0SiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFJlZ2lz
dGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCBKU1ZhbHVlUmVncyBhcmcyKQogICAgIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0
dXJlKSwgYXJnMi5wYXlsb2FkR1BSKCksIGFyZzIudGFnR1BSKCkpOwogICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CkBAIC0yMTE3LDcgKzIxNzQs
NyBAQCBwdWJsaWM6CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklU
T3BlcmF0aW9uX0VHSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWVSZWdzIGFyZzEpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QpLCBhcmcx
LnBheWxvYWRHUFIoKSwgYXJnMS50YWdHUFIoKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgp
LCBnbG9iYWxPYmplY3QpLCBhcmcxLnBheWxvYWRHUFIoKSwgYXJnMS50YWdHUFIoKSk7CiAgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9
CiAKQEAgLTI2NjcsNyArMjcyNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZh
bEZvckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5
cGVkQXJyYXlUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5
KE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JGbG9h
dFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJy
YXlUeXBlKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlPiB2b2lkIGNvbXBpbGVO
ZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcsIFN0cnVjdHVyZSosIEdQUlJlZywgR1BSUmVnLCBHUFJS
ZWcsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYsIHNpemVfdCwgRnVuY3Rpb25FeGVjdXRhYmxl
KiwgcHRyZGlmZl90LCBwdHJkaWZmX3QsIHB0cmRpZmZfdCk7CisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIENsYXNzVHlwZT4gdm9pZCBjb21waWxlTmV3RnVuY3Rpb25Db21tb24oR1BSUmVnLCBSZWdp
c3RlcmVkU3RydWN0dXJlLCBHUFJSZWcsIEdQUlJlZywgR1BSUmVnLCBNYWNyb0Fzc2VtYmxlcjo6
SnVtcExpc3QmLCBzaXplX3QsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIHB0cmRpZmZfdCwgcHRyZGlm
Zl90LCBwdHJkaWZmX3QpOwogICAgIHZvaWQgY29tcGlsZU5ld0Z1bmN0aW9uKE5vZGUqKTsKICAg
ICB2b2lkIGNvbXBpbGVTZXRGdW5jdGlvbk5hbWUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUZv
cndhcmRWYXJhcmdzKE5vZGUqKTsKQEAgLTI3NTMsMTMgKzI4MTAsMTMgQEAgcHVibGljOgogICAg
IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENsYXNzVHlwZT4KLSAgICB2b2lkIGVtaXRBbGxv
Y2F0ZURlc3RydWN0aWJsZU9iamVjdChHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgCisgICAgdm9pZCBlbWl0QWxsb2NhdGVEZXN0cnVjdGlibGVPYmplY3QoR1BSUmVnIHJl
c3VsdEdQUiwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIAogICAgICAgICBHUFJSZWcg
c2NyYXRjaEdQUjEsIEdQUlJlZyBzY3JhdGNoR1BSMiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0
JiBzbG93UGF0aCkKICAgICB7Ci0gICAgICAgIG1faml0LmVtaXRBbGxvY2F0ZURlc3RydWN0aWJs
ZU9iamVjdDxDbGFzc1R5cGU+KHJlc3VsdEdQUiwgc3RydWN0dXJlLCBzY3JhdGNoR1BSMSwgc2Ny
YXRjaEdQUjIsIHNsb3dQYXRoKTsKKyAgICAgICAgbV9qaXQuZW1pdEFsbG9jYXRlRGVzdHJ1Y3Rp
YmxlT2JqZWN0PENsYXNzVHlwZT4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmUuZ2V0KCksIHNjcmF0Y2hH
UFIxLCBzY3JhdGNoR1BSMiwgc2xvd1BhdGgpOwogICAgIH0KIAotICAgIHZvaWQgZW1pdEFsbG9j
YXRlUmF3T2JqZWN0KEdQUlJlZyByZXN1bHRHUFIsIFN0cnVjdHVyZSosIEdQUlJlZyBzdG9yYWdl
R1BSLCB1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKTsKKyAgICB2
b2lkIGVtaXRBbGxvY2F0ZVJhd09iamVjdChHUFJSZWcgcmVzdWx0R1BSLCBSZWdpc3RlcmVkU3Ry
dWN0dXJlLCBHUFJSZWcgc3RvcmFnZUdQUiwgdW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVk
IHZlY3Rvckxlbmd0aCk7CiAgICAgCiAgICAgdm9pZCBlbWl0R2V0TGVuZ3RoKElubGluZUNhbGxG
cmFtZSosIEdQUlJlZyBsZW5ndGhHUFIsIGJvb2wgaW5jbHVkZVRoaXMgPSBmYWxzZSk7CiAgICAg
dm9pZCBlbWl0R2V0TGVuZ3RoKENvZGVPcmlnaW4sIEdQUlJlZyBsZW5ndGhHUFIsIGJvb2wgaW5j
bHVkZVRoaXMgPSBmYWxzZSk7CkBAIC0zNzc0LDEzICszODMxLDEzIEBAIHByaXZhdGU6CiB0ZW1w
bGF0ZTx0eXBlbmFtZSBTdHJ1Y3R1cmVMb2NhdGlvblR5cGU+CiB2b2lkIFNwZWN1bGF0aXZlSklU
OjpzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JTdHJ1Y3R1cmUoRWRnZSBlZGdlLCBTdHJ1Y3R1cmVM
b2NhdGlvblR5cGUgc3RydWN0dXJlTG9jYXRpb24pCiB7Ci0gICAgU3RydWN0dXJlKiBzdHJpbmdP
YmplY3RTdHJ1Y3R1cmUgPQotICAgICAgICBtX2ppdC5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50
Tm9kZS0+b3JpZ2luLnNlbWFudGljKS0+c3RyaW5nT2JqZWN0U3RydWN0dXJlKCk7CisgICAgUmVn
aXN0ZXJlZFN0cnVjdHVyZSBzdHJpbmdPYmplY3RTdHJ1Y3R1cmUgPQorICAgICAgICBtX2ppdC5n
cmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKG1faml0Lmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnRO
b2RlLT5vcmlnaW4uc2VtYW50aWMpLT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSk7CiAgICAgCi0g
ICAgaWYgKCFtX3N0YXRlLmZvck5vZGUoZWRnZSkubV9zdHJ1Y3R1cmUuaXNTdWJzZXRPZihTdHJ1
Y3R1cmVTZXQoc3RyaW5nT2JqZWN0U3RydWN0dXJlKSkpIHsKKyAgICBpZiAoIW1fc3RhdGUuZm9y
Tm9kZShlZGdlKS5tX3N0cnVjdHVyZS5pc1N1YnNldE9mKFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQo
c3RyaW5nT2JqZWN0U3RydWN0dXJlKSkpIHsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKICAg
ICAgICAgICAgIE5vdFN0cmluZ09iamVjdCwgSlNWYWx1ZVJlZ3MoKSwgMCwKLSAgICAgICAgICAg
IG1faml0LmJyYW5jaFN0cnVjdHVyZSgKKyAgICAgICAgICAgIG1faml0LmJyYW5jaFdlYWtTdHJ1
Y3R1cmUoCiAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBzdHJ1Y3R1cmVM
b2NhdGlvbiwgc3RyaW5nT2JqZWN0U3RydWN0dXJlKSk7CiAgICAgfQogfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhh
c2UuY3BwCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDAsNyArNTQw
LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgaWYgKG1fbm9kZS0+b3AoKSA9PSBSZWdFeHBF
eGVjKSB7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICAgICAgICAgICAg
ICBTdHJ1Y3R1cmVTZXQqIHN0cnVjdHVyZVNldCA9IG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHN0
cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQqIHN0
cnVjdHVyZVNldCA9IG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHN0cnVjdHVyZSk7CiAKICAgICAg
ICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGFuIGFycmF5IG1vZGVsaW5nIHRoZSBKUyBhcnJheSB0
aGF0IHdlIHdpbGwgdHJ5IHRvIGFsbG9jYXRlLiBUaGlzIGlzCiAgICAgICAgICAgICAgICAgICAg
IC8vIGJhc2ljYWxseSBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkgYnV0IG92ZXIgQysrIHN0cmlu
Z3MgaW5zdGVhZCBvZiBKU1N0cmluZ3MuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5jcHAJKHJldmlzaW9uIDIx
MTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RW
YWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgdm9pZCBTdHJ1Y3R1cmVB
YnN0cmFjdFZhbHVlOjphc3NlcnRJc1JlZwogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gc2l6ZSgpOyBpLS07KQotICAgICAgICBncmFwaC5hc3NlcnRJc1JlZ2lz
dGVyZWQoYXQoaSkpOworICAgICAgICBncmFwaC5hc3NlcnRJc1JlZ2lzdGVyZWQoYXQoaSkuZ2V0
KCkpOwogfQogI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKIApAQCAtNjIsNyArNjIsNyBAQCB2
b2lkIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmNsb2JiZXIoKQogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIAotICAgIFN0cnVjdHVyZVNldDo6T3V0T2ZMaW5lTGlzdCogbGlzdCA9IG1fc2V0
Lmxpc3QoKTsKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0OjpPdXRPZkxpbmVMaXN0KiBsaXN0
ID0gbV9zZXQubGlzdCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IGxpc3QtPm1fbGVuZ3RoOyBp
LS07KSB7CiAgICAgICAgIGlmICghbGlzdC0+bGlzdCgpW2ldLT5kZmdTaG91bGRXYXRjaCgpKSB7
CiAgICAgICAgICAgICBtYWtlVG9wKCk7CkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgU3RydWN0dXJl
QWJzdHJhY3RWYWx1ZTo6Y2xvYmJlcigpCiAgICAgfQogfQogCi12b2lkIFN0cnVjdHVyZUFic3Ry
YWN0VmFsdWU6Om9ic2VydmVUcmFuc2l0aW9uKFN0cnVjdHVyZSogZnJvbSwgU3RydWN0dXJlKiB0
bykKK3ZvaWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6b2JzZXJ2ZVRyYW5zaXRpb24oUmVnaXN0
ZXJlZFN0cnVjdHVyZSBmcm9tLCBSZWdpc3RlcmVkU3RydWN0dXJlIHRvKQogewogICAgIEFTU0VS
VCghZnJvbS0+ZGZnU2hvdWxkV2F0Y2goKSk7CiAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBTdHJ1
Y3R1cmVBYnN0cmFjdFZhbHVlOjpvYnNlcnZlVHJhbgogICAgIGlmIChpc1RvcCgpKQogICAgICAg
ICByZXR1cm47CiAgICAgCi0gICAgU3RydWN0dXJlU2V0IG5ld1N0cnVjdHVyZXM7CisgICAgUmVn
aXN0ZXJlZFN0cnVjdHVyZVNldCBuZXdTdHJ1Y3R1cmVzOwogICAgIGZvciAodW5zaWduZWQgaSA9
IHZlY3Rvci5zaXplKCk7IGktLTspIHsKICAgICAgICAgQVNTRVJUKCF2ZWN0b3JbaV0ucHJldmlv
dXMtPmRmZ1Nob3VsZFdhdGNoKCkpOwogCkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBTdHJ1Y3R1
cmVBYnN0cmFjdFZhbHVlOjpvYnNlcnZlVHJhbgogICAgICAgICBtYWtlVG9wKCk7CiB9CiAKLWJv
b2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6YWRkKFN0cnVjdHVyZSogc3RydWN0dXJlKQorYm9v
bCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjphZGQoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1
cmUpCiB7CiAgICAgaWYgKGlzVG9wKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEyNCw3
ICsxMjQsNyBAQCBib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmFkZChTdHJ1Y3R1CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6bWVyZ2UoY29u
c3QgU3RydWN0dXJlU2V0JiBvdGhlcikKK2Jvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6bWVy
Z2UoY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgb3RoZXIpCiB7CiAgICAgaWYgKGlzVG9w
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE3NSw3ICsxNzUsNyBAQCBib29sIFN0cnVj
dHVyZUFic3RyYWN0VmFsdWU6Om1lcmdlU2xvdyhjCiAgICAgcmV0dXJuIGNoYW5nZWQ7CiB9CiAK
LWJvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6bWVyZ2VOb3RUb3AoY29uc3QgU3RydWN0dXJl
U2V0JiBvdGhlcikKK2Jvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6bWVyZ2VOb3RUb3AoY29u
c3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgb3RoZXIpCiB7CiAgICAgaWYgKCFtX3NldC5tZXJn
ZShvdGhlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE4Niw3ICsxODYsNyBAQCBib29s
IFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om1lcmdlTm90VG9wCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXZvaWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNl
dCYgb3RoZXIpCit2b2lkIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmZpbHRlcihjb25zdCBSZWdp
c3RlcmVkU3RydWN0dXJlU2V0JiBvdGhlcikKIHsKICAgICBpZiAoaXNUb3AoKSkgewogICAgICAg
ICBtX3NldCA9IG90aGVyOwpAQCAtMjI5LDcgKzIyOSw3IEBAIHZvaWQgU3RydWN0dXJlQWJzdHJh
Y3RWYWx1ZTo6ZmlsdGVyKGNvbnMKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAg
ICAgIGlmICghaXNDbG9iYmVyZWQoKSkgewotICAgICAgICAgICAgLy8gU2VlIGp1c3RpZmljYXRp
b24gaW4gZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYpLCBhYm92ZS4gQW4gdW5jbG9iYmVyZWQg
c2V0IGlzCisgICAgICAgICAgICAvLyBTZWUganVzdGlmaWNhdGlvbiBpbiBmaWx0ZXIoY29uc3Qg
UmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYpLCBhYm92ZS4gQW4gdW5jbG9iYmVyZWQgc2V0IGlzCiAg
ICAgICAgICAgICAvLyBhbG1vc3QgYWx3YXlzIGJldHRlci4KICAgICAgICAgICAgIGlmIChtX3Nl
dC5zaXplKCkgPiBvdGhlci5tX3NldC5zaXplKCkgKyBjbG9iYmVyZWRTdXByZW1hY3lUaHJlc2hv
bGQpCiAgICAgICAgICAgICAgICAgKnRoaXMgPSBvdGhlcjsgLy8gS2VlcCB0aGUgY2xvYmJlcmVk
IHNldC4KQEAgLTI1Myw4ICsyNTMsOCBAQCB2b2lkIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmZp
bHRlclNsb3coCiAgICAgQVNTRVJUKCFpc1RvcCgpKTsKICAgICAKICAgICBtX3NldC5nZW5lcmlj
RmlsdGVyKAotICAgICAgICBbJl0gKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7Ci0gICAgICAgICAg
ICByZXR1cm4gISEoc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKHN0cnVjdHVyZSkgJiB0eXBlKTsK
KyAgICAgICAgWyZdIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgeworICAgICAgICAg
ICAgcmV0dXJuICEhKHNwZWN1bGF0aW9uRnJvbVN0cnVjdHVyZShzdHJ1Y3R1cmUuZ2V0KCkpICYg
dHlwZSk7CiAgICAgICAgIH0pOwogfQogCkBAIC0yNjIsMTIgKzI2MiwxMiBAQCB2b2lkIFN0cnVj
dHVyZUFic3RyYWN0VmFsdWU6OmZpbHRlckNsYXNzCiB7CiAgICAgQVNTRVJUKCFpc1RvcCgpKTsK
ICAgICBtX3NldC5nZW5lcmljRmlsdGVyKAotICAgICAgICBbJl0gKFN0cnVjdHVyZSogc3RydWN0
dXJlKSB7CisgICAgICAgIFsmXSAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIHsKICAg
ICAgICAgICAgIHJldHVybiBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5pc1N1YkNsYXNzT2YoY2xh
c3NJbmZvKTsKICAgICAgICAgfSk7CiB9CiAKLWJvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6
Y29udGFpbnMoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIGNvbnN0Citib29sIFN0cnVjdHVyZUFic3Ry
YWN0VmFsdWU6OmNvbnRhaW5zKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSBjb25zdAog
ewogICAgIGlmIChpc0luZmluaXRlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjc1LDcg
KzI3NSwxNSBAQCBib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmNvbnRhaW5zKFN0CiAgICAg
cmV0dXJuIG1fc2V0LmNvbnRhaW5zKHN0cnVjdHVyZSk7CiB9CiAKLWJvb2wgU3RydWN0dXJlQWJz
dHJhY3RWYWx1ZTo6aXNTdWJzZXRPZihjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKSBjb25zdAor
Ym9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpjb250YWlucyhTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkgY29uc3QKK3sKKyAgICBpZiAoaXNJbmZpbml0ZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAKKyAgICByZXR1cm4gbV9zZXQudG9TdHJ1Y3R1cmVTZXQoKS5jb250YWlucyhzdHJ1Y3R1
cmUpOworfQorCitib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3Vic2V0T2YoY29uc3Qg
UmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0CiB7CiAgICAgaWYgKGlzSW5maW5p
dGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzA0LDcgKzMxMiw3IEBAIGJvb2wgU3Ry
dWN0dXJlQWJzdHJhY3RWYWx1ZTo6aXNTdWJzZXRPZigKICAgICByZXR1cm4gbV9zZXQuaXNTdWJz
ZXRPZihvdGhlci5tX3NldCk7CiB9CiAKLWJvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6aXNT
dXBlcnNldE9mKGNvbnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0Citib29sIFN0cnVjdHVy
ZUFic3RyYWN0VmFsdWU6OmlzU3VwZXJzZXRPZihjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0
JiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAoaXNJbmZpbml0ZSgpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTMxMiw3ICszMjAsNyBAQCBib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Omlz
U3VwZXJzZXRPCiAgICAgcmV0dXJuIG1fc2V0LmlzU3VwZXJzZXRPZihvdGhlcik7CiB9CiAKLWJv
b2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6b3ZlcmxhcHMoY29uc3QgU3RydWN0dXJlU2V0JiBv
dGhlcikgY29uc3QKK2Jvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6b3ZlcmxhcHMoY29uc3Qg
UmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0CiB7CiAgICAgaWYgKGlzSW5maW5p
dGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0zMzQsNyArMzQyLDcgQEAgYm9vbCBTdHJ1
Y3R1cmVBYnN0cmFjdFZhbHVlOjppc1N1YkNsYXNzTwogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICAvLyBOb3RlIHRhaHQgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUgaWYgdGhlIHN0cnVj
dHVyZSBzZXQgaXMgZW1wdHkuCi0gICAgZm9yIChjb25zdCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6
IG1fc2V0KSB7CisgICAgZm9yIChjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA6
IG1fc2V0KSB7CiAgICAgICAgIGlmICghc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+aXNTdWJDbGFz
c09mKGNsYXNzSW5mbykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMzU5
LDcgKzM2Nyw3IEBAIHZvaWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZHVtcEluQ29udGUKICAg
ICBpZiAoaXNUb3AoKSkKICAgICAgICAgb3V0LnByaW50KCJUT1AiKTsKICAgICBlbHNlCi0gICAg
ICAgIG91dC5wcmludChpbkNvbnRleHQobV9zZXQsIGNvbnRleHQpKTsKKyAgICAgICAgb3V0LnBy
aW50KGluQ29udGV4dChtX3NldC50b1N0cnVjdHVyZVNldCgpLCBjb250ZXh0KSk7CiB9CiAKIHZv
aWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVB
YnN0cmFjdFZhbHVlLmgJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywx
MCArMjcsMTEgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCisjaW5jbHVkZSAiREZHUmVnaXN0
ZXJlZFN0cnVjdHVyZVNldC5oIgogI2luY2x1ZGUgIkRGR1RyYW5zaXRpb24uaCIKKyNpbmNsdWRl
ICJEdW1wQ29udGV4dC5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIlNwZWN1bGF0
ZWRUeXBlLmgiCi0jaW5jbHVkZSAiRHVtcENvbnRleHQuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVT
ZXQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00MiwxMiArNDMsMTIgQEAgbmFtZXNwYWNlIERG
RyB7CiBjbGFzcyBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlIHsKIHB1YmxpYzoKICAgICBTdHJ1Y3R1
cmVBYnN0cmFjdFZhbHVlKCkgeyB9Ci0gICAgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZShTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKLSAgICAgICAgOiBtX3NldChTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSkK
KyAgICBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJl
KQorICAgICAgICA6IG1fc2V0KHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAgIHNldENsb2JiZXJl
ZChmYWxzZSk7CiAgICAgfQotICAgIFN0cnVjdHVyZUFic3RyYWN0VmFsdWUoY29uc3QgU3RydWN0
dXJlU2V0JiBvdGhlcikKKyAgICBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlKGNvbnN0IFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmVTZXQmIG90aGVyKQogICAgICAgICA6IG1fc2V0KG90aGVyKQogICAgIHsKICAg
ICAgICAgc2V0Q2xvYmJlcmVkKGZhbHNlKTsKQEAgLTU4LDEzICs1OSwxMyBAQCBwdWJsaWM6CiAg
ICAgICAgIHNldENsb2JiZXJlZChvdGhlci5pc0Nsb2JiZXJlZCgpKTsKICAgICB9CiAgICAgCi0g
ICAgQUxXQVlTX0lOTElORSBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvcGVyYXRvcj0oU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCisgICAgQUxXQVlTX0lOTElORSBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVl
JiBvcGVyYXRvcj0oUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAg
ICBtX3NldCA9IFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpOworICAgICAgICBtX3NldCA9IFJlZ2lz
dGVyZWRTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKTsKICAgICAgICAgc2V0Q2xvYmJlcmVkKGZhbHNl
KTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KLSAgICBBTFdBWVNfSU5MSU5FIFN0cnVj
dHVyZUFic3RyYWN0VmFsdWUmIG9wZXJhdG9yPShjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKQor
ICAgIEFMV0FZU19JTkxJTkUgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSYgb3BlcmF0b3I9KGNvbnN0
IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIG90aGVyKQogICAgIHsKICAgICAgICAgbV9zZXQgPSBv
dGhlcjsKICAgICAgICAgc2V0Q2xvYmJlcmVkKGZhbHNlKTsKQEAgLTk4LDcgKzk5LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgY2xvYmJlcigpOwogICAgIHZvaWQgb2JzZXJ2ZUludmFsaWRhdGlvblBv
aW50KCkgeyBzZXRDbG9iYmVyZWQoZmFsc2UpOyB9CiAgICAgCi0gICAgdm9pZCBvYnNlcnZlVHJh
bnNpdGlvbihTdHJ1Y3R1cmUqIGZyb20sIFN0cnVjdHVyZSogdG8pOworICAgIHZvaWQgb2JzZXJ2
ZVRyYW5zaXRpb24oUmVnaXN0ZXJlZFN0cnVjdHVyZSBmcm9tLCBSZWdpc3RlcmVkU3RydWN0dXJl
IHRvKTsKICAgICB2b2lkIG9ic2VydmVUcmFuc2l0aW9ucyhjb25zdCBUcmFuc2l0aW9uVmVjdG9y
Jik7CiAgICAgCiAgICAgc3RhdGljIFN0cnVjdHVyZUFic3RyYWN0VmFsdWUgdG9wKCkKQEAgLTEz
MSw5ICsxMzIsOSBAQCBwdWJsaWM6CiAgICAgLy8gQW4gaW5maW5pdGUgc3RydWN0dXJlIGFic3Ry
YWN0IHZhbHVlIG1heSBjdXJyZW50bHkgaGF2ZSBhbnkgc3RydWN0dXJlLgogICAgIGJvb2wgaXNJ
bmZpbml0ZSgpIGNvbnN0IHsgcmV0dXJuICFpc0Zpbml0ZSgpOyB9CiAgICAgCi0gICAgYm9vbCBh
ZGQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpOworICAgIGJvb2wgYWRkKFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUpOwogICAgIAotICAgIGJvb2wgbWVyZ2UoY29uc3QgU3RydWN0dXJlU2V0JiBvdGhlcik7Cisg
ICAgYm9vbCBtZXJnZShjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0JiBvdGhlcik7CiAgICAg
CiAgICAgQUxXQVlTX0lOTElORSBib29sIG1lcmdlKGNvbnN0IFN0cnVjdHVyZUFic3RyYWN0VmFs
dWUmIG90aGVyKQogICAgIHsKQEAgLTE1MSw3ICsxNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBtZXJnZVNsb3cob3RoZXIpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGZpbHRlcihjb25z
dCBTdHJ1Y3R1cmVTZXQmIG90aGVyKTsKKyAgICB2b2lkIGZpbHRlcihjb25zdCBSZWdpc3RlcmVk
U3RydWN0dXJlU2V0JiBvdGhlcik7CiAgICAgdm9pZCBmaWx0ZXIoY29uc3QgU3RydWN0dXJlQWJz
dHJhY3RWYWx1ZSYgb3RoZXIpOwogICAgIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmaWx0ZXIo
U3BlY3VsYXRlZFR5cGUgdHlwZSkKQEAgLTE3OCwxMSArMTc5LDE3IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGVxdWFsc1Nsb3cob3RoZXIpOwogICAgIH0KICAgICAKLSAgICBjb25zdCBTdHJ1
Y3R1cmVTZXQmIHNldCgpIGNvbnN0CisgICAgY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYg
c2V0KCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVCghaXNUb3AoKSk7CiAgICAgICAgIHJl
dHVybiBtX3NldDsKICAgICB9CisKKyAgICBTdHJ1Y3R1cmVTZXQgdG9TdHJ1Y3R1cmVTZXQoKSBj
b25zdAorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNGaW5pdGUoKSk7CisgICAgICAg
IHJldHVybiBtX3NldC50b1N0cnVjdHVyZVNldCgpOworICAgIH0KICAgICAKICAgICBzaXplX3Qg
c2l6ZSgpIGNvbnN0CiAgICAgewpAQCAtMTkwLDIxICsxOTcsMjEgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gbV9zZXQuc2l6ZSgpOwogICAgIH0KICAgICAKLSAgICBTdHJ1Y3R1cmUqIGF0KHNp
emVfdCBpKSBjb25zdAorICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgYXQoc2l6ZV90IGkpIGNvbnN0
CiAgICAgewogICAgICAgICBBU1NFUlQoIWlzVG9wKCkpOwogICAgICAgICByZXR1cm4gbV9zZXQu
YXQoaSk7CiAgICAgfQogICAgIAotICAgIFN0cnVjdHVyZSogb3BlcmF0b3JbXShzaXplX3QgaSkg
Y29uc3QgeyByZXR1cm4gYXQoaSk7IH0KKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG9wZXJhdG9y
W10oc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIGF0KGkpOyB9CiAKICAgICAvLyBJbiBtb3N0IGNh
c2VzLCB3aGF0IHlvdSByZWFsbHkgd2FudCB0byBkbyBpcyB2ZXJpZnkgd2hldGhlciB0aGUgc2V0
IGlzIHRvcCBvciBjbG9iYmVyZWQsIGFuZAogICAgIC8vIGlmIG5vdCwgZW51bWVyYXRlIHRoZSBz
ZXQgb2Ygc3RydWN0dXJlcy4gVXNlIHRoaXMgb25seSBpbiBjYXNlcyB3aGVyZSB0aGUgc2luZ2xl
dG9uIGNhc2UgaXMKICAgICAvLyBtZWFuaW5nZnVsbHkgc3BlY2lhbCwgbGlrZSBmb3IgdHJhbnNp
dGlvbnMuCi0gICAgU3RydWN0dXJlKiBvbmx5U3RydWN0dXJlKCkgY29uc3QKKyAgICBSZWdpc3Rl
cmVkU3RydWN0dXJlIG9ubHlTdHJ1Y3R1cmUoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKGlz
SW5maW5pdGUoKSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgcmV0
dXJuIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUoKTsKICAgICAgICAgcmV0dXJuIG1fc2V0Lm9ubHlTdHJ1
Y3R1cmUoKTsKICAgICB9CiAKQEAgLTIyNCwxOCArMjMxLDE5IEBAIHB1YmxpYzoKICAgICAvLyBv
cHRpbWl6YXRpb25zIGFzIGEgY29uc2VxdWVuY2Ugb2YgdGhlICJ0aGlzIGlzIHNtYWxsZXIiIHJl
dHVybiB2YWx1ZSAtIHNvIGZhbHNlIGZvcgogICAgIC8vIGNvbnRhaW5zKCksIHRydWUgZm9yIGlz
U3Vic2V0T2YoKSwgZmFsc2UgZm9yIGlzU3VwZXJzZXRPZigpLCBhbmQgZmFsc2UgZm9yIG92ZXJs
YXBzKCkuCiAKKyAgICBib29sIGNvbnRhaW5zKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUpIGNvbnN0Owog
ICAgIGJvb2wgY29udGFpbnMoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIGNvbnN0OwogICAgIAotICAg
IGJvb2wgaXNTdWJzZXRPZihjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKSBjb25zdDsKKyAgICBi
b29sIGlzU3Vic2V0T2YoY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0
OwogICAgIGJvb2wgaXNTdWJzZXRPZihjb25zdCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhl
cikgY29uc3Q7CiAgICAgCi0gICAgYm9vbCBpc1N1cGVyc2V0T2YoY29uc3QgU3RydWN0dXJlU2V0
JiBvdGhlcikgY29uc3Q7CisgICAgYm9vbCBpc1N1cGVyc2V0T2YoY29uc3QgUmVnaXN0ZXJlZFN0
cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0OwogICAgIGJvb2wgaXNTdXBlcnNldE9mKGNvbnN0IFN0
cnVjdHVyZUFic3RyYWN0VmFsdWUmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
IG90aGVyLmlzU3Vic2V0T2YoKnRoaXMpOwogICAgIH0KICAgICAKLSAgICBib29sIG92ZXJsYXBz
KGNvbnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0OworICAgIGJvb2wgb3ZlcmxhcHMoY29u
c3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0OwogICAgIGJvb2wgb3Zlcmxh
cHMoY29uc3QgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSYgb3RoZXIpIGNvbnN0OwogCiAgICAgYm9v
bCBpc1N1YkNsYXNzT2YoY29uc3QgQ2xhc3NJbmZvKikgY29uc3Q7CkBAIC0yNDMsOCArMjUxLDgg
QEAgcHVibGljOgogICAgIHZvaWQgdmFsaWRhdGVSZWZlcmVuY2VzKGNvbnN0IFRyYWNrZWRSZWZl
cmVuY2VzJikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgotICAgIHN0YXRpYyBjb25zdCB1aW50cHRy
X3QgY2xvYmJlcmVkRmxhZyA9IFN0cnVjdHVyZVNldDo6cmVzZXJ2ZWRGbGFnOwotICAgIHN0YXRp
YyBjb25zdCB1aW50cHRyX3QgdG9wVmFsdWUgPSBTdHJ1Y3R1cmVTZXQ6OnJlc2VydmVkVmFsdWU7
CisgICAgc3RhdGljIGNvbnN0IHVpbnRwdHJfdCBjbG9iYmVyZWRGbGFnID0gUmVnaXN0ZXJlZFN0
cnVjdHVyZVNldDo6cmVzZXJ2ZWRGbGFnOworICAgIHN0YXRpYyBjb25zdCB1aW50cHRyX3QgdG9w
VmFsdWUgPSBSZWdpc3RlcmVkU3RydWN0dXJlU2V0OjpyZXNlcnZlZFZhbHVlOwogICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBwb2x5bW9ycGhpc21MaW1pdCA9IDEwOwogICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBjbG9iYmVyZWRTdXByZW1hY3lUaHJlc2hvbGQgPSAyOwogICAgIApAQCAtMjYw
LDcgKzI2OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fc2V0Lm1fcG9pbnRlciA9IHRvcFZhbHVl
OwogICAgIH0KICAgICAKLSAgICBib29sIG1lcmdlTm90VG9wKGNvbnN0IFN0cnVjdHVyZVNldCYg
b3RoZXIpOworICAgIGJvb2wgbWVyZ2VOb3RUb3AoY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNl
dCYgb3RoZXIpOwogICAgIAogICAgIHZvaWQgc2V0Q2xvYmJlcmVkKGJvb2wgY2xvYmJlcmVkKQog
ICAgIHsKQEAgLTI2OCw3ICsyNzYsNyBAQCBwcml2YXRlOgogICAgICAgICBtX3NldC5zZXRSZXNl
cnZlZEZsYWcoY2xvYmJlcmVkKTsKICAgICB9CiAgICAgCi0gICAgU3RydWN0dXJlU2V0IG1fc2V0
OworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgbV9zZXQ7CiB9OwogCiB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVy
ZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjExMjI5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMjI1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuaCIKLQotI2lmIEVOQUJM
RShERkdfSklUKQotCi0jaW5jbHVkZSAiREZHQmFzaWNCbG9ja0lubGluZXMuaCIKLSNpbmNsdWRl
ICJERkdHcmFwaC5oIgotI2luY2x1ZGUgIkRGR1BoYXNlLmgiCi0jaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0KLWNsYXNzIFN0cnVjdHVy
ZVJlZ2lzdHJhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKLXB1YmxpYzoKLSAgICBTdHJ1Y3R1
cmVSZWdpc3RyYXRpb25QaGFzZShHcmFwaCYgZ3JhcGgpCi0gICAgICAgIDogUGhhc2UoZ3JhcGgs
ICJzdHJ1Y3R1cmUgcmVnaXN0cmF0aW9uIikKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGJvb2wg
cnVuKCkKLSAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIHBoYXNlIHNob3VsZG4ndCBleGlz
dC4gV2Ugc2hvdWxkIGhhdmUgcmVnaXN0ZXJlZCBhbGwgc3RydWN0dXJlcyBieSBub3csIHNpbmNl
Ci0gICAgICAgIC8vIHdlIG1heSBhbHJlYWR5IGhhdmUgZG9uZSBvcHRpbWl6YXRpb25zIHRoYXQg
cmVseSBvbiBzdHJ1Y3R1cmVzIGhhdmluZyBiZWVuIHJlZ2lzdGVyZWQuCi0gICAgICAgIC8vIEN1
cnJlbnRseSwgd2Ugc3RpbGwgaGF2ZSBwbGFjZXMgd2hlcmUgd2UgZG9uJ3QgcmVnaXN0ZXIgc3Ry
dWN0dXJlcyBwcmlvciB0byB0aGlzIHBoYXNlLAotICAgICAgICAvLyBidXQgc3RydWN0dXJlcyBk
b24ndCBlbmQgdXAgYmVpbmcgdXNlZCBmb3Igb3B0aW1pemF0aW9uIHByaW9yIHRvIHRoaXMgcGhh
c2UuIFRoYXQncyBhCi0gICAgICAgIC8vIHByZXR0eSBmcmFnaWxlIHNpdHVhdGlvbiBhbmQgd2Ug
c2hvdWxkIGZpeCBpdCBldmVudHVhbGx5LgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3ODg5Ci0gICAgICAgIAotICAgICAgICAvLyBXZSBuZWVk
IHRvIHNldCB0aGlzIGJlZm9yZSB0aGlzIHBoYXNlIGZpbmlzaGVzLiBUaGlzIHBoYXNlIGRvZXNu
J3QgZG8gYW55dGhpbmcKLSAgICAgICAgLy8gY29uZGl0aW9uZWQgb24gdGhpcyBmaWVsZCwgZXhj
ZXB0IGZvciBhc3NlcnRJc1JlZ2lzdGVyZWQoKSBiZWxvdy4gV2UgaW50ZW5kIGZvciB0aGF0Ci0g
ICAgICAgIC8vIG1ldGhvZCB0byBiZWhhdmUgYXMgaWYgdGhlIHBoYXNlIHdhcyBhbHJlYWR5IGZp
bmlzaGVkLiBTbywgd2Ugc2V0IHRoaXMgdXAgaGVyZS4KLSAgICAgICAgbV9ncmFwaC5tX3N0cnVj
dHVyZVJlZ2lzdHJhdGlvblN0YXRlID0gQWxsU3RydWN0dXJlc0FyZVJlZ2lzdGVyZWQ7Ci0gICAg
ICAgIAotICAgICAgICAvLyBUaGVzZSBhcmUgcHJldHR5IGR1bWIsIGJ1dCBuZWVkZWQgdG8gcGxh
Y2F0ZSBzdWJzZXF1ZW50IGFzc2VydGlvbnMuIFdlIGRvbid0IGFjdHVhbGx5Ci0gICAgICAgIC8v
IGhhdmUgdG8gd2F0Y2ggdGhlc2UgYmVjYXVzZSB0aGVyZSBpcyBubyB3YXkgdG8gdHJhbnNpdGlv
biBhd2F5IGZyb20gaXQsIGJ1dCB0aGV5IGFyZQotICAgICAgICAvLyB3YXRjaGFibGUgYW5kIHNv
IHdlIHdpbGwgYXNzZXJ0IGlmIHRoZXkgYXJlbid0IHdhdGNoZWQuCi0gICAgICAgIHJlZ2lzdGVy
U3RydWN0dXJlKG1fZ3JhcGgubV92bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUuZ2V0KCkpOwotICAgICAg
ICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLm1fdm0uc3RyaW5nU3RydWN0dXJlLmdldCgpKTsK
LSAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5tX3ZtLnN5bWJvbFN0cnVjdHVyZS5n
ZXQoKSk7Ci0gICAgICAgIAotICAgICAgICBmb3IgKEZyb3plblZhbHVlKiB2YWx1ZSA6IG1fZ3Jh
cGgubV9mcm96ZW5WYWx1ZXMpCi0gICAgICAgICAgICBhc3NlcnRJc1JlZ2lzdGVyZWQodmFsdWUt
PnN0cnVjdHVyZSgpKTsKLSAgICAgICAgCi0gICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0lu
ZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewotICAgICAgICAgICAg
QmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwotICAgICAgICAg
ICAgaWYgKCFibG9jaykKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAg
ICAgICAgICBmb3IgKGF1dG8qIG5vZGUgOiAqYmxvY2spIHsKLSAgICAgICAgICAgICAgICBzd2l0
Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgot
ICAgICAgICAgICAgICAgICAgICBhc3NlcnRBcmVSZWdpc3RlcmVkKG5vZGUtPnN0cnVjdHVyZVNl
dCgpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgY2FzZSBOZXdPYmplY3Q6Ci0gICAgICAgICAgICAgICAgY2FzZSBBcnJheWlm
eVRvU3RydWN0dXJlOgotICAgICAgICAgICAgICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgotICAg
ICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShub2RlLT5zdHJ1Y3R1cmUoKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgIGNhc2UgUHV0U3RydWN0dXJlOgotICAgICAgICAgICAgICAgIGNhc2UgQWxsb2NhdGVQcm9w
ZXJ0eVN0b3JhZ2U6Ci0gICAgICAgICAgICAgICAgY2FzZSBSZWFsbG9jYXRlUHJvcGVydHlTdG9y
YWdlOgotICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShub2RlLT50cmFuc2l0
aW9uKCktPnByZXZpb3VzKTsKLSAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUo
bm9kZS0+dHJhbnNpdGlvbigpLT5uZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0K
LSAgICAgICAgICAgICAgICBjYXNlIEdldEdldHRlclNldHRlckJ5T2Zmc2V0OgotICAgICAgICAg
ICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLT5nZXR0ZXJTZXR0ZXJTdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0
OgotICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IE11bHRpR2V0QnlPZmZzZXRDYXNlJiBn
ZXRDYXNlIDogbm9kZS0+bXVsdGlHZXRCeU9mZnNldERhdGEoKS5jYXNlcykKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlcyhnZXRDYXNlLnNldCgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IGNhc2UgTXVsdGlQdXRCeU9mZnNldDoKLSAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gbm9kZS0+bXVsdGlQdXRCeU9mZnNldERhdGEoKS52YXJpYW50cy5zaXplKCk7IGktLTsp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50ID0gbm9k
ZS0+bXVsdGlQdXRCeU9mZnNldERhdGEoKS52YXJpYW50c1tpXTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlcyh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICh2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6
VHJhbnNpdGlvbikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVy
ZSh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgY2FzZSBOZXdBcnJheToKLSAgICAgICAgICAgICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgot
ICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXlXaXRoU2l6ZTogewotICAgICAgICAgICAgICAg
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJT
dHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmlu
Z0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKTsKLSAgICAgICAgICAgICAgICAgICAg
cmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5vcmlnaW5hbEFycmF5U3RydWN0dXJlRm9y
SW5kZXhpbmdUeXBlKEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpKTsKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgY2Fz
ZSBOZXdBcnJheVdpdGhTcHJlYWQ6IHsKLSAgICAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlzV2F0Y2hpbmdIYXZp
bmdBQmFkVGltZVdhdGNocG9pbnQobm9kZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFdlJ3ZlIGNvbXBpbGVkIGFzc3VtaW5nIHdlJ3JlIG5vdCBoYXZpbmcgYSBiYWQgdGltZSwgc28g
dG8gYmUgY29uc2lzdGVudAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2l0aCBBSSB3ZSBt
dXN0IHNheSB3ZSBwcm9kdWNlIGFuIG9yaWdpbmFsIGFycmF5IGFsbG9jYXRpb24gc3RydWN0dXJl
LgotICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0
LT5vcmlnaW5hbEFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlKEFycmF5V2l0aENvbnRpZ3Vv
dXMpKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAg
ICByZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhp
bmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhDb250aWd1b3VzKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGNh
c2UgU3ByZWFkOiB7Ci0gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3Jh
cGgubV92bS5maXhlZEFycmF5U3RydWN0dXJlLmdldCgpKTsKLSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgY2FzZSBDcmVhdGVS
ZXN0OiB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdB
QmFkVGltZVdhdGNocG9pbnQobm9kZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1
cmUoZ2xvYmFsT2JqZWN0LT5yZXN0UGFyYW1ldGVyU3RydWN0dXJlKCkpOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgY2FzZSBOZXdUeXBlZEFycmF5
OgotICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3Vy
cmVudGx5KG5vZGUtPnR5cGVkQXJyYXlUeXBlKCkpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNhc2UgVG9TdHJpbmc6
Ci0gICAgICAgICAgICAgICAgY2FzZSBDYWxsU3RyaW5nQ29uc3RydWN0b3I6Ci0gICAgICAgICAg
ICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyktPnN0cmluZ09iamVjdFN0cnVjdHVyZSgpKTsKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNh
c2UgQ3JlYXRlQWN0aXZhdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1
cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YWN0aXZh
dGlvblN0cnVjdHVyZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgot
ICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5kaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUoKSk7
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICBjYXNlIENyZWF0ZVNjb3BlZEFyZ3VtZW50czoKLSAgICAgICAgICAgICAgICAg
ICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKS0+c2NvcGVkQXJndW1lbnRzU3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRz
OgotICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5jbG9uZWRBcmd1bWVudHNTdHJ1Y3R1cmUo
KSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgICAgY2FzZSBO
ZXdSZWdleHA6Ci0gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnJlZ0V4cFN0cnVjdHVyZSgp
KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBOZXdG
dW5jdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUo
KSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgTmV3
R2VuZXJhdG9yRnVuY3Rpb246Ci0gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJl
KG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmdlbmVyYXRv
ckZ1bmN0aW9uU3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICBjYXNlIE5ld0FzeW5jRnVuY3Rpb246Ci0gICAgICAgICAgICAgICAgICAgIHJl
Z2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyktPmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotCi0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAg
IAotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCByZWdp
c3RlclN0cnVjdHVyZXMoY29uc3QgU3RydWN0dXJlU2V0JiBzZXQpCi0gICAgewotICAgICAgICBm
b3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogc2V0KQotICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1
Y3R1cmUoc3RydWN0dXJlKTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCByZWdpc3RlclN0cnVjdHVy
ZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgICAgIGlmIChzdHJ1Y3R1cmUpCi0g
ICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSk7Ci0gICAgfQot
Ci0gICAgdm9pZCBhc3NlcnRBcmVSZWdpc3RlcmVkKGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0KQot
ICAgIHsKLSAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6IHNldCkKLSAgICAgICAg
ICAgIGFzc2VydElzUmVnaXN0ZXJlZChzdHJ1Y3R1cmUpOwotICAgIH0KLQotICAgIHZvaWQgYXNz
ZXJ0SXNSZWdpc3RlcmVkKFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgIHsKLSAgICAgICAgaWYg
KHN0cnVjdHVyZSkKLSAgICAgICAgICAgIG1fZ3JhcGguYXNzZXJ0SXNSZWdpc3RlcmVkKHN0cnVj
dHVyZSk7Ci0gICAgfQotfTsKLQotYm9vbCBwZXJmb3JtU3RydWN0dXJlUmVnaXN0cmF0aW9uKEdy
YXBoJiBncmFwaCkKLXsKLSAgICByZXR1cm4gcnVuUGhhc2U8U3RydWN0dXJlUmVnaXN0cmF0aW9u
UGhhc2U+KGdyYXBoKTsKLX0KLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi0jZW5kaWYg
Ly8gRU5BQkxFKERGR19KSVQpCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmgJKHJldmlzaW9uIDIx
MTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0
aW9uUGhhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5B
QkxFKERGR19KSVQpCi0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLQotY2xhc3Mg
R3JhcGg7Ci0KLS8vIFJlZ2lzdGVycyBhbnkgc3RydWN0dXJlcyB3ZSBrbm93IGFib3V0IGFzIHdl
YWsgcmVmZXJlbmNlcywgYW5kIHNldHMgd2F0Y2hwb2ludHMgb24gYW55Ci0vLyBzdWNoIHN0cnVj
dHVyZXMgdGhhdCB3ZSBrbm93IG9mIHRoYXQgYXJlIGN1cnJlbnRseSB3YXRjaGFibGUuIEl0J3Mg
c29tZXdoYXQKLS8vIGNvdW50ZXJpbnR1aXRpdmUsIGJ1dCB0aGlzIGVuZHMgdXAgYmVpbmcgdGhl
IGNsZWFuZXN0IGFuZCBtb3N0IGVmZmVjdGl2ZSB3YXkgb2YgcmVkdWNpbmcKLS8vIHN0cnVjdHVy
ZSBjaGVja3Mgb24gdGVybWluYWwgc3RydWN0dXJlczoKLS8vCi0vLyAtIFdlIHVzZWQgdG8gb25s
eSBzZXQgd2F0Y2hwb2ludHMgb24gd2F0Y2hhYmxlIHN0cnVjdHVyZXMgaWYgd2Uga25ldyB0aGF0
IHRoaXMgd291bGQKLS8vICAgcmVtb3ZlIGEgc3RydWN0dXJlIGNoZWNrLiBFeHBlcmltZW50cyBz
aG93IHRoYXQgc3dpdGNoaW5nIGZyb20gdGhhdCwgdG8gYmxpbmRseQotLy8gICBzZXR0aW5nIHdh
dGNocG9pbnRzIG9uIGFsbCB3YXRjaGFibGUgc3RydWN0dXJlcywgd2FzIG5vdCBhIHJlZ3Jlc3Np
b24uCi0vLwotLy8gLSBJdCBtYWtlcyBhYnN0cmFjdCBpbnRlcnByZXRhdGlvbiBhIHdob2xlIGxv
dCBlYXNpZXIuIFdlIGp1c3QgYXNzdW1lIHRoYXQgd2F0Y2hhYmxlCi0vLyAgIHN0cnVjdHVyZXMg
YXJlIHVuY2xvYmJlcmFibGUgd2l0aG91dCBoYXZpbmcgdG8gZG8gYW55IG90aGVyIGxvZ2ljLgot
Ci1ib29sIHBlcmZvcm1TdHJ1Y3R1cmVSZWdpc3RyYXRpb24oR3JhcGgmKTsKLQotfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkRGRwotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RyYW5zaXRpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHJhbnNpdGlvbi5jcHAJKHJldmlzaW9uIDIxMTIy
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHJhbnNpdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewogCiB2b2lkIFRyYW5zaXRpb246OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVt
cENvbnRleHQqIGNvbnRleHQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KHBvaW50ZXJEdW1wSW5D
b250ZXh0KHByZXZpb3VzLCBjb250ZXh0KSwgIiAtPiAiLCBwb2ludGVyRHVtcEluQ29udGV4dChu
ZXh0LCBjb250ZXh0KSk7CisgICAgb3V0LnByaW50KHBvaW50ZXJEdW1wSW5Db250ZXh0KHByZXZp
b3VzLmdldCgpLCBjb250ZXh0KSwgIiAtPiAiLCBwb2ludGVyRHVtcEluQ29udGV4dChuZXh0Lmdl
dCgpLCBjb250ZXh0KSk7CiB9CiAKIHZvaWQgVHJhbnNpdGlvbjo6ZHVtcChQcmludFN0cmVhbSYg
b3V0KSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUcmFuc2l0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUcmFuc2l0aW9u
LmgJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHJh
bnNpdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUo
REZHX0pJVCkKIAorI2luY2x1ZGUgIkRGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaCIKICNpbmNsdWRl
IDx3dGYvUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTM4LDE2
ICszOSwxMiBAQCBzdHJ1Y3QgRHVtcENvbnRleHQ7CiBuYW1lc3BhY2UgREZHIHsKIAogc3RydWN0
IFRyYW5zaXRpb24gewotICAgIFN0cnVjdHVyZSogcHJldmlvdXM7Ci0gICAgU3RydWN0dXJlKiBu
ZXh0OworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgcHJldmlvdXM7CisgICAgUmVnaXN0ZXJlZFN0
cnVjdHVyZSBuZXh0OwogICAgIAotICAgIFRyYW5zaXRpb24oKQotICAgICAgICA6IHByZXZpb3Vz
KG51bGxwdHIpCi0gICAgICAgICwgbmV4dChudWxscHRyKQotICAgIHsKLSAgICB9CisgICAgVHJh
bnNpdGlvbigpID0gZGVmYXVsdDsKICAgICAKLSAgICBUcmFuc2l0aW9uKFN0cnVjdHVyZSogcHJl
dmlvdXMsIFN0cnVjdHVyZSogbmV4dCkKKyAgICBUcmFuc2l0aW9uKFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUgcHJldmlvdXMsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgbmV4dCkKICAgICAgICAgOiBwcmV2aW91
cyhwcmV2aW91cykKICAgICAgICAgLCBuZXh0KG5leHQpCiAgICAgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2Uu
Y3BwCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5
cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjUsMjMgKzQ2NSwy
MyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCi0gICAgdm9p
ZCBub3RpY2VTdHJ1Y3R1cmVDaGVjayhWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB2b2lkIG5vdGljZVN0cnVjdHVyZUNoZWNrKFZhcmlhYmxl
QWNjZXNzRGF0YSogdmFyaWFibGUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKQogICAg
IHsKLSAgICAgICAgSGFzaE1hcDxWYXJpYWJsZUFjY2Vzc0RhdGEqLCBDaGVja0RhdGE+OjpBZGRS
ZXN1bHQgcmVzdWx0ID0gbV9tYXAuYWRkKHZhcmlhYmxlLCBDaGVja0RhdGEoc3RydWN0dXJlKSk7
CisgICAgICAgIEhhc2hNYXA8VmFyaWFibGVBY2Nlc3NEYXRhKiwgQ2hlY2tEYXRhPjo6QWRkUmVz
dWx0IHJlc3VsdCA9IG1fbWFwLmFkZCh2YXJpYWJsZSwgQ2hlY2tEYXRhKHN0cnVjdHVyZS5nZXQo
KSkpOwogICAgICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIGlmIChyZXN1bHQuaXRlcmF0b3ItPnZhbHVlLm1fc3RydWN0dXJlID09IHN0cnVj
dHVyZSkKKyAgICAgICAgaWYgKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUubV9zdHJ1Y3R1cmUgPT0g
c3RydWN0dXJlLmdldCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlLm1fc3RydWN0dXJlID0gMDsKICAgICB9CiAgICAgCi0gICAgdm9pZCBub3Rp
Y2VTdHJ1Y3R1cmVDaGVjayhWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlLCBjb25zdCBTdHJ1
Y3R1cmVTZXQmIHNldCkKKyAgICB2b2lkIG5vdGljZVN0cnVjdHVyZUNoZWNrKFZhcmlhYmxlQWNj
ZXNzRGF0YSogdmFyaWFibGUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgc2V0KQogICAgIHsKICAg
ICAgICAgaWYgKHNldC5zaXplKCkgIT0gMSkgewotICAgICAgICAgICAgbm90aWNlU3RydWN0dXJl
Q2hlY2sodmFyaWFibGUsIDApOworICAgICAgICAgICAgbm90aWNlU3RydWN0dXJlQ2hlY2sodmFy
aWFibGUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KLSAgICAgICAgbm90aWNlU3RydWN0dXJlQ2hlY2sodmFyaWFibGUsIHNldC5vbmx5U3Ry
dWN0dXJlKCkpOworICAgICAgICBub3RpY2VTdHJ1Y3R1cmVDaGVjayh2YXJpYWJsZSwgc2V0LmF0
KDApKTsKICAgICB9CiAKICAgICB2b2lkIG5vdGljZUNoZWNrQXJyYXkoVmFyaWFibGVBY2Nlc3NE
YXRhKiB2YXJpYWJsZSwgQXJyYXlNb2RlIGFycmF5TW9kZSkKQEAgLTUwMSwyMiArNTAxLDIyIEBA
IHByaXZhdGU6CiAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZGlzYWJsZUNoZWNrQXJy
YXlIb2lzdGluZygpOwogICAgIH0KIAotICAgIHZvaWQgbm90aWNlU3RydWN0dXJlQ2hlY2tBY2Nv
dW50aW5nRm9yQXJyYXlNb2RlKFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQorICAgIHZvaWQgbm90aWNlU3RydWN0dXJlQ2hlY2tBY2NvdW50aW5nRm9y
QXJyYXlNb2RlKFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUsIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUgc3RydWN0dXJlKQogICAgIHsKICAgICAgICAgSGFzaE1hcDxWYXJpYWJsZUFjY2Vzc0RhdGEq
LCBDaGVja0RhdGE+OjppdGVyYXRvciByZXN1bHQgPSBtX21hcC5maW5kKHZhcmlhYmxlKTsKICAg
ICAgICAgaWYgKHJlc3VsdCA9PSBtX21hcC5lbmQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgaWYgKCFyZXN1bHQtPnZhbHVlLm1fYXJyYXlNb2RlSG9pc3RpbmdPa2F5IHx8ICFyZXN1
bHQtPnZhbHVlLm1fYXJyYXlNb2RlSXNWYWxpZCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgaWYgKHJlc3VsdC0+dmFsdWUubV9hcnJheU1vZGUuc3RydWN0dXJlV291bGRQYXNzQXJyYXlN
b2RlRmlsdGVyaW5nKHN0cnVjdHVyZSkpCisgICAgICAgIGlmIChyZXN1bHQtPnZhbHVlLm1fYXJy
YXlNb2RlLnN0cnVjdHVyZVdvdWxkUGFzc0FycmF5TW9kZUZpbHRlcmluZyhzdHJ1Y3R1cmUuZ2V0
KCkpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICByZXN1bHQtPnZhbHVlLmRpc2FibGVD
aGVja0FycmF5SG9pc3RpbmcoKTsKICAgICB9CiAKLSAgICB2b2lkIG5vdGljZVN0cnVjdHVyZUNo
ZWNrQWNjb3VudGluZ0ZvckFycmF5TW9kZShWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlLCBj
b25zdCBTdHJ1Y3R1cmVTZXQmIHNldCkKKyAgICB2b2lkIG5vdGljZVN0cnVjdHVyZUNoZWNrQWNj
b3VudGluZ0ZvckFycmF5TW9kZShWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlLCBSZWdpc3Rl
cmVkU3RydWN0dXJlU2V0IHNldCkKICAgICB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBzZXQuc2l6ZSgpOyBpKyspCi0gICAgICAgICAgICBub3RpY2VTdHJ1Y3R1cmVDaGVja0Fj
Y291bnRpbmdGb3JBcnJheU1vZGUodmFyaWFibGUsIHNldFtpXSk7CisgICAgICAgICAgICBub3Rp
Y2VTdHJ1Y3R1cmVDaGVja0FjY291bnRpbmdGb3JBcnJheU1vZGUodmFyaWFibGUsIHNldC5hdChp
KSk7CiAgICAgfQogCiAgICAgSGFzaE1hcDxWYXJpYWJsZUFjY2Vzc0RhdGEqLCBDaGVja0RhdGE+
IG1fbWFwOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJ
KHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRh
dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDksNyArMjA5LDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgICAgICAgICAgICAgfHwgbm9kZS0+b3JpZ2luLmZvckV4aXQgIT0gcHJldmlvdXNOb2Rl
LT5vcmlnaW4uZm9yRXhpdCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIW5vZGUtPmhhc1N0cnVjdHVyZSgpIHx8
ICEhbm9kZS0+c3RydWN0dXJlKCkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwg
IW5vZGUtPmhhc1N0cnVjdHVyZSgpIHx8ICEhbm9kZS0+c3RydWN0dXJlKCkuZ2V0KCkpOwogICAg
ICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIW5vZGUtPmhhc0NlbGxPcGVyYW5kKCkgfHwg
bm9kZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5pc0NlbGwoKSk7CiAgICAgICAgICAgICAgICAg
VkFMSURBVEUoKG5vZGUpLCAhbm9kZS0+aGFzQ2VsbE9wZXJhbmQoKSB8fCAhIW5vZGUtPmNlbGxP
cGVyYW5kKCktPnZhbHVlKCkpOwogICAgICAgICAgICAgICAgIApAQCAtMjg1LDcgKzI4NSw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgotICAgICAgICAg
ICAgICAgICAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogbm9kZS0+c3RydWN0dXJlU2V0
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVj
dHVyZSA6IG5vZGUtPnN0cnVjdHVyZVNldCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBUaGlzIG9ubHkgc3VwcG9ydHMgc3RydWN0dXJlcyB0aGF0IGFyZSBKU0ZpbmFsT2JqZWN0IG9y
IEpTQXJyYXkuCiAgICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAobm9kZSksCkBAIC01NjUsNyArNTY1LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAgICAgLy8gQ1BTIGRpc2FsbG93cyBpbnQzMiBhbmQgZG91YmxlIGFycmF5
cy4gVGhvc2UgcmVxdWlyZSB3ZWlyZCB0eXBlIGNoZWNrcyBhbmQKICAgICAgICAgICAgICAgICAg
ICAgLy8gY29udmVyc2lvbnMuIFRoZXkgYXJlIG5vdCBuZWVkZWQgaW4gdGhlIERGRyByaWdodCBu
b3cuIFdlIHNob3VsZCBhZGQgc3VwcG9ydAogICAgICAgICAgICAgICAgICAgICAvLyBmb3IgdGhl
c2UgaWYgdGhlIERGRyBldmVyIG5lZWRzIGl0LgotICAgICAgICAgICAgICAgICAgICBmb3IgKFN0
cnVjdHVyZSogc3RydWN0dXJlIDogbm9kZS0+c3RydWN0dXJlU2V0KCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgZm9yIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA6IG5vZGUtPnN0cnVj
dHVyZVNldCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFo
YXNJbnQzMihzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBWQUxJREFURSgobm9kZSksICFoYXNEb3VibGUoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUo
KSkpOwogICAgICAgICAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE5Niw3ICsxOTYsOSBAQCBwdWJsaWM6CiAgICAgICAgIG1fcHJvYy5hZGRGYXN0Q29uc3RhbnQo
bV90YWdUeXBlTnVtYmVyLT5rZXkoKSk7CiAgICAgICAgIG1fcHJvYy5hZGRGYXN0Q29uc3RhbnQo
bV90YWdNYXNrLT5rZXkoKSk7CiAgICAgICAgIAotICAgICAgICBtX291dC5zdG9yZVB0cihtX291
dC5jb25zdEludFB0cihjb2RlQmxvY2soKSksIGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29k
ZUJsb2NrKSk7CisgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdGhlIENvZGVCbG9jayB0byBoYXZl
IGEgd2VhayBwb2ludGVyIHRvIGl0c2VsZiBiZWNhdXNlCisgICAgICAgIC8vIHRoYXQgd291bGQg
Y2F1c2UgaXQgdG8gYWx3YXlzIGdldCBjb2xsZWN0ZWQuCisgICAgICAgIG1fb3V0LnN0b3JlUHRy
KG1fb3V0LmNvbnN0SW50UHRyKGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oY29kZUJsb2NrKCkpKSwg
YWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spKTsKIAogICAgICAgICAvLyBTdGFj
ayBPdmVyZmxvdyBDaGVjay4KICAgICAgICAgdW5zaWduZWQgZXhpdEZyYW1lU2l6ZSA9IG1fZ3Jh
cGgucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhpdCgpICogc2l6ZW9mKFJlZ2lzdGVyKTsKQEAg
LTE1NjAsNyArMTU2Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0LmJyYW5jaChpc09iamVj
dCh2YWx1ZSksIHVzdWFsbHkoY29udGludWF0aW9uKSwgcmFyZWx5KHNsb3dDYXNlKSk7CiAKICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAgIFZh
bHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKEludDY0LCBtX291
dC5vcGVyYXRpb24ob3BlcmF0aW9uT2JqZWN0Q29uc3RydWN0b3IpLCBtX2NhbGxGcmFtZSwgbV9v
dXQuY29uc3RJbnRQdHIoZ2xvYmFsT2JqZWN0KSwgdmFsdWUpKTsKKyAgICAgICAgVmFsdWVGcm9t
QmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJh
dGlvbihvcGVyYXRpb25PYmplY3RDb25zdHJ1Y3RvciksIG1fY2FsbEZyYW1lLCB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QpLCB2YWx1ZSkpOwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlv
bik7CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBA
IC0yNjY0LDcgKzI2NjYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2hlY2tTdHJ1Y3R1cmUo
CiAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVj
dHVyZUlEKSwganNWYWx1ZVZhbHVlKGNlbGwpLAogICAgICAgICAgICAgICAgIGV4aXRLaW5kLCBt
X25vZGUtPnN0cnVjdHVyZVNldCgpLAotICAgICAgICAgICAgICAgIFsmXSAoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpIHsKKyAgICAgICAgICAgICAgICBbJl0gKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3Ry
dWN0dXJlKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3ZWFrU3RydWN0dXJlSUQoc3Ry
dWN0dXJlKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI2
ODQsNyArMjY4Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjaGVja1N0cnVjdHVyZSgKICAg
ICAgICAgICAgICAgICBtX291dC5sb2FkMzIodmFsdWUsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVy
ZUlEKSwganNWYWx1ZVZhbHVlKHZhbHVlKSwKICAgICAgICAgICAgICAgICBleGl0S2luZCwgbV9u
b2RlLT5zdHJ1Y3R1cmVTZXQoKSwKLSAgICAgICAgICAgICAgICBbJl0gKFN0cnVjdHVyZSogc3Ry
dWN0dXJlKSB7CisgICAgICAgICAgICAgICAgWyZdIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVj
dHVyZSkgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2Vha1N0cnVjdHVyZUlEKHN0cnVj
dHVyZSk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRp
bnVhdGlvbik7CkBAIC0yNzk4LDggKzI4MDAsOCBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAg
bV9mdGxTdGF0ZS5qaXRDb2RlLT5jb21tb24ubm90aWZ5Q29tcGlsaW5nU3RydWN0dXJlVHJhbnNp
dGlvbihtX2dyYXBoLm1fcGxhbiwgY29kZUJsb2NrKCksIG1fbm9kZSk7CiAgICAgICAgIAotICAg
ICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IG1fbm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2
aW91czsKLSAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBtX25vZGUtPnRyYW5zaXRp
b24oKS0+bmV4dDsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBvbGRTdHJ1Y3R1cmUgPSBt
X25vZGUtPnRyYW5zaXRpb24oKS0+cHJldmlvdXM7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUgbmV3U3RydWN0dXJlID0gbV9ub2RlLT50cmFuc2l0aW9uKCktPm5leHQ7CiAgICAgICAgIEFT
U0VSVF9VTlVTRUQob2xkU3RydWN0dXJlLCBvbGRTdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpID09
IG5ld1N0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpOwogICAgICAgICBBU1NFUlQob2xkU3RydWN0
dXJlLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpID09IG5ld1N0cnVjdHVyZS0+dHlwZUlu
Zm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSk7CiAgICAgICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUtPnR5
cGVJbmZvKCkudHlwZSgpID09IG5ld1N0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkpOwpAQCAt
Mzg5OSwxMCArMzkwMSwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgLy8gd2l0aCBvbmUgb2Yg
dGhlIGZvbGxvd2luZyBpbmRleGluZyBzaGFwZXM6IEludDMyLCBDb250aWd1b3VzLCBEb3VibGUu
CiAgICAgICAgICAgICBMVmFsdWUgc3RydWN0dXJlID0gbV9vdXQuc2VsZWN0KAogICAgICAgICAg
ICAgICAgIG1fb3V0LmVxdWFsKGluZGV4aW5nVHlwZSwgbV9vdXQuY29uc3RJbnQzMihBcnJheVdp
dGhJbnQzMikpLAotICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKGdsb2JhbE9iamVj
dC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0
aEludDMyKSksCisgICAgICAgICAgICAgICAgd2Vha1N0cnVjdHVyZShtX2dyYXBoLnJlZ2lzdGVy
U3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJp
bmdBbGxvY2F0aW9uKEFycmF5V2l0aEludDMyKSkpLAogICAgICAgICAgICAgICAgIG1fb3V0LnNl
bGVjdChtX291dC5lcXVhbChpbmRleGluZ1R5cGUsIG1fb3V0LmNvbnN0SW50MzIoQXJyYXlXaXRo
Q29udGlndW91cykpLAotICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihnbG9i
YWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihB
cnJheVdpdGhDb250aWd1b3VzKSksCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50
UHRyKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxv
Y2F0aW9uKEFycmF5V2l0aERvdWJsZSkpKSk7CisgICAgICAgICAgICAgICAgICAgIHdlYWtTdHJ1
Y3R1cmUobV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0
dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhDb250aWd1b3VzKSkp
LAorICAgICAgICAgICAgICAgICAgICB3ZWFrU3RydWN0dXJlKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1
Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0Fs
bG9jYXRpb24oQXJyYXlXaXRoRG91YmxlKSkpKSk7CiAgICAgICAgICAgICBhcnJheVJlc3VsdCA9
IGFsbG9jYXRlSlNBcnJheShyZXN1bHRMZW5ndGgsIHN0cnVjdHVyZSwgaW5kZXhpbmdUeXBlLCBm
YWxzZSwgZmFsc2UpOwogICAgICAgICB9CiAKQEAgLTM5OTQsMTMgKzM5OTYsMTMgQEAgcHJpdmF0
ZToKICAgICB7CiAgICAgICAgIExWYWx1ZSBzY29wZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEo
KSk7CiAgICAgICAgIFN5bWJvbFRhYmxlKiB0YWJsZSA9IG1fbm9kZS0+Y2FzdE9wZXJhbmQ8U3lt
Ym9sVGFibGUqPigpOwotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YWN0aXZhdGlvblN0cnVjdHVy
ZSgpOworICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3JhcGgucmVn
aXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2Vt
YW50aWMpLT5hY3RpdmF0aW9uU3RydWN0dXJlKCkpOwogICAgICAgICBKU1ZhbHVlIGluaXRpYWxp
emF0aW9uVmFsdWUgPSBtX25vZGUtPmluaXRpYWxpemF0aW9uVmFsdWVGb3JBY3RpdmF0aW9uKCk7
CiAgICAgICAgIEFTU0VSVChpbml0aWFsaXphdGlvblZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgaW5p
dGlhbGl6YXRpb25WYWx1ZSA9PSBqc1REWlZhbHVlKCkpOwogICAgICAgICBpZiAodGFibGUtPnNp
bmdsZXRvblNjb3BlKCktPmlzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgICAgICBMVmFsdWUgY2Fs
bFJlc3VsdCA9IHZtQ2FsbCgKICAgICAgICAgICAgICAgICBJbnQ2NCwKLSAgICAgICAgICAgICAg
ICBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlvbkRpcmVjdCksIG1fY2Fs
bEZyYW1lLCB3ZWFrUG9pbnRlcihzdHJ1Y3R1cmUpLAorICAgICAgICAgICAgICAgIG1fb3V0Lm9w
ZXJhdGlvbihvcGVyYXRpb25DcmVhdGVBY3RpdmF0aW9uRGlyZWN0KSwgbV9jYWxsRnJhbWUsIHdl
YWtTdHJ1Y3R1cmUoc3RydWN0dXJlKSwKICAgICAgICAgICAgICAgICBzY29wZSwgd2Vha1BvaW50
ZXIodGFibGUpLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShpbml0aWFsaXphdGlv
blZhbHVlKSkpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShjYWxsUmVzdWx0KTsKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTQwMzUsNyArNDAzNyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBb
PV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93
UGF0aDo6R2VuZXJhdG9yPiB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxs
R2VuZXJhdG9yKAogICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25DcmVhdGVBY3RpdmF0aW9u
RGlyZWN0LCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksCi0gICAgICAgICAgICAgICAgICAgIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBsb2NhdGlvbnNbMV0uZGlyZWN0
R1BSKCksCisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihz
dHJ1Y3R1cmUuZ2V0KCkpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksCiAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih0YWJsZSksCiAgICAgICAgICAgICAg
ICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShpbml0aWFs
aXphdGlvblZhbHVlKSkpOwogICAgICAgICAgICAgfSwKQEAgLTQwNjUsMTAgKzQwNjcsMTAgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPQorICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0
cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoCiAgICAgICAgICAgICBpc0dlbmVy
YXRvckZ1bmN0aW9uID8gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2Vt
YW50aWMpLT5nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpIDoKICAgICAgICAgICAgIGlzQXN5
bmNGdW5jdGlvbiA/IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFu
dGljKS0+YXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpIDoKLSAgICAgICAgICAgIG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUo
KTsKKyAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CiAgICAgICAgIAogICAgICAgICBMQmFzaWNC
bG9jayBzbG93UGF0aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGNv
bnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC00MTI4LDggKzQxMzAsOCBAQCBwcml2
YXRlOgogICAgICAgICAvLyB0aGVtIGJlIGV4cGxpY2l0IGFyZ3VtZW50cyB0byB0aGlzIG5vZGUu
CiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDIy
MDcKICAgICAgICAgCi0gICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0KLSAgICAgICAgICAg
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZGlyZWN0
QXJndW1lbnRzU3RydWN0dXJlKCk7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0
dXJlID0KKyAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5kaXJlY3RBcmd1bWVudHNTdHJ1
Y3R1cmUoKSk7CiAgICAgICAgIAogICAgICAgICB1bnNpZ25lZCBtaW5DYXBhY2l0eSA9IG1fZ3Jh
cGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5udW1QYXJh
bWV0ZXJzKCkgLSAxOwogICAgICAgICAKQEAgLTQxNzEsNyArNDE3Myw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBbPV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVm
UHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNy
ZWF0ZUxhenlDYWxsR2VuZXJhdG9yKAogICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25DcmVh
dGVEaXJlY3RBcmd1bWVudHMsIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwKLSAgICAgICAgICAg
ICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGxvY2F0aW9u
c1sxXS5kaXJlY3RHUFIoKSwKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKHN0cnVjdHVyZS5nZXQoKSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSwKICAg
ICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobWluQ2FwYWNpdHkp
KTsKICAgICAgICAgICAgIH0sIGxlbmd0aC52YWx1ZSk7CiAgICAgICAgIFZhbHVlRnJvbUJsb2Nr
IHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3IoY2FsbFJlc3VsdCk7CkBAIC00MjU5LDcgKzQyNjEs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgTFZhbHVlIGFycmF5TGVuZ3RoID0gbG93SW50MzIo
bV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBsb29wU3RhcnQgPSBt
X291dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAg
ICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5yZXN0UGFyYW1l
dGVyU3RydWN0dXJlKCk7CisgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVy
ZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5yZXN0UGFyYW1ldGVy
U3RydWN0dXJlKCkpOwogICAgICAgICAgICAgQXJyYXlWYWx1ZXMgYXJyYXlWYWx1ZXMgPSBhbGxv
Y2F0ZVVuaW5pdGlhbGl6ZWRDb250aWd1b3VzSlNBcnJheShhcnJheUxlbmd0aCwgc3RydWN0dXJl
KTsKICAgICAgICAgICAgIExWYWx1ZSBhcnJheSA9IGFycmF5VmFsdWVzLmFycmF5OwogICAgICAg
ICAgICAgTFZhbHVlIGJ1dHRlcmZseSA9IGFycmF5VmFsdWVzLmJ1dHRlcmZseTsKQEAgLTQzMjcs
OCArNDMyOSw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzcGVjdWxhdGUobV9ncmFwaC52YXJB
cmdDaGlsZChtX25vZGUsIG9wZXJhbmRJbmRleCkpOwogICAgICAgICAKICAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxP
YmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbigKLSAg
ICAgICAgICAgIG1fbm9kZS0+aW5kZXhpbmdUeXBlKCkpOworICAgICAgICBSZWdpc3RlcmVkU3Ry
dWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0
LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oCisgICAgICAg
ICAgICBtX25vZGUtPmluZGV4aW5nVHlwZSgpKSk7CiAKICAgICAgICAgaWYgKCFnbG9iYWxPYmpl
Y3QtPmlzSGF2aW5nQUJhZFRpbWUoKSAmJiAhaGFzQW55QXJyYXlTdG9yYWdlKG1fbm9kZS0+aW5k
ZXhpbmdUeXBlKCkpKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBudW1FbGVtZW50cyA9IG1fbm9k
ZS0+bnVtQ2hpbGRyZW4oKTsKQEAgLTQzNzMsNyArNDM3NSw3IEBAIHByaXZhdGU6CiAgICAgICAg
IGlmICghbV9ub2RlLT5udW1DaGlsZHJlbigpKSB7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHZt
Q2FsbCgKICAgICAgICAgICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5l
d0VtcHR5QXJyYXkpLCBtX2NhbGxGcmFtZSwKLSAgICAgICAgICAgICAgICBtX291dC5jb25zdElu
dFB0cihzdHJ1Y3R1cmUpKSk7CisgICAgICAgICAgICAgICAgd2Vha1N0cnVjdHVyZShzdHJ1Y3R1
cmUpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCkBAIC00Mzk0
LDcgKzQzOTYsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgTFZhbHVlIHJlc3VsdCA9
IHZtQ2FsbCgKICAgICAgICAgICAgIEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3
QXJyYXkpLCBtX2NhbGxGcmFtZSwKLSAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHN0cnVj
dHVyZSksIG1fb3V0LmNvbnN0SW50UHRyKGJ1ZmZlciksCisgICAgICAgICAgICB3ZWFrU3RydWN0
dXJlKHN0cnVjdHVyZSksIG1fb3V0LmNvbnN0SW50UHRyKGJ1ZmZlciksCiAgICAgICAgICAgICBt
X291dC5jb25zdEludFB0cihtX25vZGUtPm51bUNoaWxkcmVuKCkpKTsKICAgICAgICAgCiAgICAg
ICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmludFB0clplcm8sIG1fb3V0LmFic29sdXRlKHNjcmF0
Y2hCdWZmZXItPmFjdGl2ZUxlbmd0aFB0cigpKSk7CkBAIC00NDM0LDcgKzQ0MzYsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdp
bi5zZW1hbnRpYyktPm9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGUoQXJyYXlX
aXRoQ29udGlndW91cyk7CisgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVy
ZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9u
b2RlLT5vcmlnaW4uc2VtYW50aWMpLT5vcmlnaW5hbEFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdU
eXBlKEFycmF5V2l0aENvbnRpZ3VvdXMpKTsKICAgICAgICAgICAgIEFycmF5VmFsdWVzIGFycmF5
VmFsdWVzID0gYWxsb2NhdGVVbmluaXRpYWxpemVkQ29udGlndW91c0pTQXJyYXkobGVuZ3RoLCBz
dHJ1Y3R1cmUpOwogICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IGFycmF5VmFsdWVzLmFycmF5
OwogICAgICAgICAgICAgTFZhbHVlIHN0b3JhZ2UgPSBhcnJheVZhbHVlcy5idXR0ZXJmbHk7CkBA
IC00NjU2LDggKzQ2NTgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZU5ld0FycmF5QnVm
ZmVyKCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dy
YXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4
aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oCi0gICAgICAgICAgICBtX25vZGUtPmluZGV4aW5nVHlw
ZSgpKTsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJl
Z2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5
cGVEdXJpbmdBbGxvY2F0aW9uKAorICAgICAgICAgICAgbV9ub2RlLT5pbmRleGluZ1R5cGUoKSkp
OwogICAgICAgICAKICAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmlzSGF2aW5nQUJhZFRpbWUo
KSAmJiAhaGFzQW55QXJyYXlTdG9yYWdlKG1fbm9kZS0+aW5kZXhpbmdUeXBlKCkpKSB7CiAgICAg
ICAgICAgICB1bnNpZ25lZCBudW1FbGVtZW50cyA9IG1fbm9kZS0+bnVtQ29uc3RhbnRzKCk7CkBA
IC00Njg2LDcgKzQ2ODgsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgc2V0SlNWYWx1
ZSh2bUNhbGwoCiAgICAgICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5l
d0FycmF5QnVmZmVyKSwgbV9jYWxsRnJhbWUsCi0gICAgICAgICAgICBtX291dC5jb25zdEludFB0
cihzdHJ1Y3R1cmUpLCBtX291dC5jb25zdEludFB0cihtX25vZGUtPnN0YXJ0Q29uc3RhbnQoKSks
CisgICAgICAgICAgICB3ZWFrU3RydWN0dXJlKHN0cnVjdHVyZSksIG1fb3V0LmNvbnN0SW50UHRy
KG1fbm9kZS0+c3RhcnRDb25zdGFudCgpKSwKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRy
KG1fbm9kZS0+bnVtQ29uc3RhbnRzKCkpKSk7CiAgICAgfQogCkBAIC00Njk1LDIzICs0Njk3LDIy
IEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSBwdWJsaWNMZW5ndGggPSBsb3dJbnQzMihtX25v
ZGUtPmNoaWxkMSgpKTsKICAgICAgICAgCiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
Ci0gICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVj
dHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oCi0gICAgICAgICAgICBtX25vZGUt
PmluZGV4aW5nVHlwZSgpKTsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUg
PSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVG
b3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKAorICAgICAgICAgICAgbV9ub2RlLT5pbmRl
eGluZ1R5cGUoKSkpOwogICAgICAgICAKICAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmlzSGF2
aW5nQUJhZFRpbWUoKSAmJiAhaGFzQW55QXJyYXlTdG9yYWdlKG1fbm9kZS0+aW5kZXhpbmdUeXBl
KCkpKSB7CiAgICAgICAgICAgICBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlID0gbV9ub2RlLT5p
bmRleGluZ1R5cGUoKTsKICAgICAgICAgICAgIHNldEpTVmFsdWUoCiAgICAgICAgICAgICAgICAg
YWxsb2NhdGVKU0FycmF5KAotICAgICAgICAgICAgICAgICAgICBwdWJsaWNMZW5ndGgsIG1fb3V0
LmNvbnN0SW50UHRyKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVE
dXJpbmdBbGxvY2F0aW9uKGluZGV4aW5nVHlwZSkpLCBtX291dC5jb25zdEludDMyKGluZGV4aW5n
VHlwZSkpLmFycmF5KTsKKyAgICAgICAgICAgICAgICAgICAgcHVibGljTGVuZ3RoLCB3ZWFrUG9p
bnRlcihnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxs
b2NhdGlvbihpbmRleGluZ1R5cGUpKSwgbV9vdXQuY29uc3RJbnQzMihpbmRleGluZ1R5cGUpKS5h
cnJheSk7CiAgICAgICAgICAgICBtdXRhdG9yRmVuY2UoKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgTFZhbHVlIHN0cnVjdHVyZVZhbHVlID0gbV9v
dXQuc2VsZWN0KAogICAgICAgICAgICAgbV9vdXQuYWJvdmVPckVxdWFsKHB1YmxpY0xlbmd0aCwg
bV9vdXQuY29uc3RJbnQzMihNSU5fQVJSQVlfU1RPUkFHRV9DT05TVFJVQ1RJT05fTEVOR1RIKSks
Ci0gICAgICAgICAgICBtX291dC5jb25zdEludFB0cigKLSAgICAgICAgICAgICAgICBnbG9iYWxP
YmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJh
eVdpdGhBcnJheVN0b3JhZ2UpKSwKLSAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHN0cnVj
dHVyZSkpOworICAgICAgICAgICAgd2Vha1N0cnVjdHVyZShtX2dyYXBoLnJlZ2lzdGVyU3RydWN0
dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxv
Y2F0aW9uKEFycmF5V2l0aEFycmF5U3RvcmFnZSkpKSwKKyAgICAgICAgICAgIHdlYWtTdHJ1Y3R1
cmUoc3RydWN0dXJlKSk7CiAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBtX291dC5v
cGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSksIG1fY2FsbEZyYW1lLCBzdHJ1Y3R1
cmVWYWx1ZSwgcHVibGljTGVuZ3RoLCBtX291dC5pbnRQdHJaZXJvKSk7CiAgICAgfQogCkBAIC00
NzIyLDcgKzQ3MjMsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgc3dpdGNoIChtX25v
ZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgICAgICBjYXNlIEludDMyVXNlOiB7Ci0gICAg
ICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0
cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlKTsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnR5
cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZSkpOwogCiAgICAgICAgICAgICBMVmFs
dWUgc2l6ZSA9IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOwogCkBAIC00NzgxLDcgKzQ3ODIs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIFs9XSAoY29uc3QgVmVjdG9yPExvY2F0aW9u
PiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKAogICAgICAgICAg
ICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhTaXplRm9yVHlwZSh0eXBl
KSwgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLAotICAgICAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGxvY2F0aW9uc1sxXS5kaXJlY3RH
UFIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihzdHJ1Y3R1cmUuZ2V0KCkpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICBsb2NhdGlvbnNbMl0uZGlyZWN0R1BSKCkpOwogICAgICAgICAgICAgICAg
IH0sCiAgICAgICAgICAgICAgICAgc2l6ZSwgc3RvcmFnZVZhbHVlKTsKQEAgLTQ4MTMsNyArNDgx
NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxlQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2Uo
KQogICAgIHsKICAgICAgICAgTFZhbHVlIG9iamVjdCA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEo
KSk7Ci0gICAgICAgIHNldFN0b3JhZ2UoYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2Uob2JqZWN0LCBt
X25vZGUtPnRyYW5zaXRpb24oKS0+cHJldmlvdXMpKTsKKyAgICAgICAgc2V0U3RvcmFnZShhbGxv
Y2F0ZVByb3BlcnR5U3RvcmFnZShvYmplY3QsIG1fbm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91
cy5nZXQoKSkpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZVJlYWxsb2NhdGVQcm9wZXJ0eVN0
b3JhZ2UoKQpAQCAtNDgyNCw3ICs0ODI1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAg
IHNldFN0b3JhZ2UoCiAgICAgICAgICAgICByZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKAotICAg
ICAgICAgICAgICAgIG9iamVjdCwgb2xkU3RvcmFnZSwgdHJhbnNpdGlvbi0+cHJldmlvdXMsIHRy
YW5zaXRpb24tPm5leHQpKTsKKyAgICAgICAgICAgICAgICBvYmplY3QsIG9sZFN0b3JhZ2UsIHRy
YW5zaXRpb24tPnByZXZpb3VzLmdldCgpLCB0cmFuc2l0aW9uLT5uZXh0LmdldCgpKSk7CiAgICAg
fQogICAgIAogICAgIHZvaWQgY29tcGlsZU51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHkoKQpA
QCAtNTI4NiwxMSArNTI4NywxMSBAQCBwcml2YXRlOgogICAgICAgICBMQmFzaWNCbG9jayBjb250
aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAKICAgICAgICAgVmVjdG9yPFN3
aXRjaENhc2UsIDI+IGNhc2VzOwotICAgICAgICBTdHJ1Y3R1cmVTZXQgYmFzZVNldDsKKyAgICAg
ICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBiYXNlU2V0OwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBkYXRhLmNhc2VzLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgTXVsdGlHZXRCeU9m
ZnNldENhc2UgZ2V0Q2FzZSA9IGRhdGEuY2FzZXNbaV07CiAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGogPSBnZXRDYXNlLnNldCgpLnNpemUoKTsgai0tOykgewotICAgICAgICAgICAgICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gZ2V0Q2FzZS5zZXQoKVtqXTsKKyAgICAgICAgICAgICAgICBS
ZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IGdldENhc2Uuc2V0KClbal07CiAgICAgICAg
ICAgICAgICAgYmFzZVNldC5hZGQoc3RydWN0dXJlKTsKICAgICAgICAgICAgICAgICBjYXNlcy5h
cHBlbmQoU3dpdGNoQ2FzZSh3ZWFrU3RydWN0dXJlSUQoc3RydWN0dXJlKSwgYmxvY2tzW2ldLCBX
ZWlnaHQoMSkpKTsKICAgICAgICAgICAgIH0KQEAgLTUzNjgsMTEgKzUzNjksMTEgQEAgcHJpdmF0
ZToKICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsK
ICAgICAgICAgCiAgICAgICAgIFZlY3RvcjxTd2l0Y2hDYXNlLCAyPiBjYXNlczsKLSAgICAgICAg
U3RydWN0dXJlU2V0IGJhc2VTZXQ7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgYmFz
ZVNldDsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS52YXJpYW50cy5zaXplKCk7IGkt
LTspIHsKICAgICAgICAgICAgIFB1dEJ5SWRWYXJpYW50IHZhcmlhbnQgPSBkYXRhLnZhcmlhbnRz
W2ldOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gdmFyaWFudC5vbGRTdHJ1Y3R1cmUo
KS5zaXplKCk7IGotLTspIHsKLSAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IHZhcmlhbnQub2xkU3RydWN0dXJlKClbal07CisgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0
cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQub2xk
U3RydWN0dXJlKClbal0pOwogICAgICAgICAgICAgICAgIGJhc2VTZXQuYWRkKHN0cnVjdHVyZSk7
CiAgICAgICAgICAgICAgICAgY2FzZXMuYXBwZW5kKFN3aXRjaENhc2Uod2Vha1N0cnVjdHVyZUlE
KHN0cnVjdHVyZSksIGJsb2Nrc1tpXSwgV2VpZ2h0KDEpKSk7CiAgICAgICAgICAgICB9CkBAIC01
NDEzLDcgKzU0MTQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIEFTU0VSVCh2YXJpYW50
Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3Mo
KSA9PSB2YXJpYW50Lm5ld1N0cnVjdHVyZSgpLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygp
KTsKICAgICAgICAgICAgICAgICBBU1NFUlQodmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0
aW9uKCktPnR5cGVJbmZvKCkudHlwZSgpID09IHZhcmlhbnQubmV3U3RydWN0dXJlKCktPnR5cGVJ
bmZvKCkudHlwZSgpKTsKICAgICAgICAgICAgICAgICBtX291dC5zdG9yZTMyKAotICAgICAgICAg
ICAgICAgICAgICB3ZWFrU3RydWN0dXJlSUQodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSksIGJhc2Us
IG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKTsKKyAgICAgICAgICAgICAgICAgICAgd2Vha1N0
cnVjdHVyZUlEKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUo
KSkpLCBiYXNlLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKQEAgLTc3
NDYsMTEgKzc3NDcsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgTFZhbHVlIGluZGV4ID0gbV9vdXQu
Yml0QW5kKG1hc2ssIHVubWFza2VkSW5kZXgpOwogICAgICAgICBMVmFsdWUgaGFzaE1hcEJ1Y2tl
dCA9IG1fb3V0LmxvYWQ2NChtX291dC5iYXNlSW5kZXgobV9oZWFwcy5wcm9wZXJ0aWVzLmF0QW55
TnVtYmVyKCksIGJ1ZmZlciwgbV9vdXQuemVyb0V4dChpbmRleCwgSW50NjQpLCBTY2FsZUVpZ2h0
KSk7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGJ1Y2tldFJlc3VsdCA9IG1fb3V0LmFuY2hvciho
YXNoTWFwQnVja2V0KTsKLSAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKGhhc2hNYXBC
dWNrZXQsIG1fb3V0LmNvbnN0SW50UHRyKEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1h
cEJ1Y2tldERhdGFLZXk+Pjo6ZW1wdHlWYWx1ZSgpKSksCisgICAgICAgIG1fb3V0LmJyYW5jaCht
X291dC5lcXVhbChoYXNoTWFwQnVja2V0LCBtX291dC5jb25zdEludFB0cihiaXR3aXNlX2Nhc3Q8
aW50cHRyX3Q+KEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+
Pjo6ZW1wdHlWYWx1ZSgpKSkpLAogICAgICAgICAgICAgdW5zdXJlKG5vdFByZXNlbnRJblRhYmxl
KSwgdW5zdXJlKG5vdEVtcHR5VmFsdWUpKTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhub3RF
bXB0eVZhbHVlLCBub3REZWxldGVkVmFsdWUpOwotICAgICAgICBtX291dC5icmFuY2gobV9vdXQu
ZXF1YWwoaGFzaE1hcEJ1Y2tldCwgbV9vdXQuY29uc3RJbnRQdHIoSGFzaE1hcEltcGw8SGFzaE1h
cEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT4+OjpkZWxldGVkVmFsdWUoKSkpLAorICAgICAg
ICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwoaGFzaE1hcEJ1Y2tldCwgbV9vdXQuY29uc3RJbnRQ
dHIoYml0d2lzZV9jYXN0PGludHB0cl90PihIYXNoTWFwSW1wbDxIYXNoTWFwQnVja2V0PEhhc2hN
YXBCdWNrZXREYXRhS2V5Pj46OmRlbGV0ZWRWYWx1ZSgpKSkpLAogICAgICAgICAgICAgdW5zdXJl
KGxvb3BBcm91bmQpLCB1bnN1cmUobm90RGVsZXRlZFZhbHVlKSk7CiAKICAgICAgICAgbV9vdXQu
YXBwZW5kVG8obm90RGVsZXRlZFZhbHVlLCBsb29wQXJvdW5kKTsKQEAgLTgyMjIsNyArODIyMyw4
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbXBpbGVPdmVycmlkZXNIYXNJbnN0YW5jZSgpCiAg
ICAgewotICAgICAgICBKU0Z1bmN0aW9uKiBkZWZhdWx0SGFzSW5zdGFuY2VGdW5jdGlvbiA9IGpz
Q2FzdDxKU0Z1bmN0aW9uKj4obV9ub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpKTsKKyAgICAg
ICAgRnJvemVuVmFsdWUqIGRlZmF1bHRIYXNJbnN0YW5jZUZ1bmN0aW9uID0gbV9ub2RlLT5jZWxs
T3BlcmFuZCgpOworICAgICAgICBBU1NFUlQoZGVmYXVsdEhhc0luc3RhbmNlRnVuY3Rpb24tPmNl
bGwoKS0+aW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSk7CiAKICAgICAgICAgTFZhbHVlIGNv
bnN0cnVjdG9yID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgTFZhbHVlIGhh
c0luc3RhbmNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKQEAgLTgyMzMsNyArODIz
NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIFVubGlrZSBpbiB0aGUgREZHLCB3ZSBkb24ndCB3
b3JyeSBhYm91dCBjbGVhbmluZyB0aGlzIGNvZGUgdXAgZm9yIHRoZSBjYXNlIHdoZXJlIHdlIGhh
dmUgcHJvdmVuIHRoZSBoYXNJbnN0YW5jZVZhbHVlIGlzIGEgY29uc3RhbnQgYXMgQjMgc2hvdWxk
IGZpeCBpdCBmb3IgdXMuCiAKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm90RGVmYXVsdEhhc0lu
c3RhbmNlUmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5UcnVlKTsKLSAgICAgICAg
bV9vdXQuYnJhbmNoKG1fb3V0Lm5vdEVxdWFsKGhhc0luc3RhbmNlLCBtX291dC5jb25zdEludFB0
cihkZWZhdWx0SGFzSW5zdGFuY2VGdW5jdGlvbikpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5z
dXJlKGRlZmF1bHRIYXNJbnN0YW5jZSkpOworICAgICAgICBtX291dC5icmFuY2gobV9vdXQubm90
RXF1YWwoaGFzSW5zdGFuY2UsIGZyb3plblBvaW50ZXIoZGVmYXVsdEhhc0luc3RhbmNlRnVuY3Rp
b24pKSwgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShkZWZhdWx0SGFzSW5zdGFuY2UpKTsK
IAogICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGRlZmF1bHRI
YXNJbnN0YW5jZSwgY29udGludWF0aW9uKTsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgaW1wbGVt
ZW50c0RlZmF1bHRIYXNJbnN0YW5jZVJlc3VsdCA9IG1fb3V0LmFuY2hvcihtX291dC50ZXN0SXNa
ZXJvMzIoCkBAIC04NTgxLDcgKzg1ODMsNyBAQCBwcml2YXRlOgogICAgICAgICBMVmFsdWUgc3Ry
dWN0dXJlID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgY2hlY2tTdHJ1Y3R1
cmUoCiAgICAgICAgICAgICBzdHJ1Y3R1cmUsIG5vVmFsdWUoKSwgQmFkQ2FjaGUsIG1fbm9kZS0+
c3RydWN0dXJlU2V0KCksCi0gICAgICAgICAgICBbdGhpc10gKFN0cnVjdHVyZSogc3RydWN0dXJl
KSB7CisgICAgICAgICAgICBbdGhpc10gKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSB7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHdlYWtTdHJ1Y3R1cmUoc3RydWN0dXJlKTsKICAgICAg
ICAgICAgIH0pOwogICAgIH0KQEAgLTg2MDYsNyArODYwOCw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGNvbnN0IFN0cnVjdHVyZVNldCYg
c2V0ID0gbV9ub2RlLT5zdHJ1Y3R1cmVTZXQoKTsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVy
ZVNldCBzZXQgPSBtX25vZGUtPnN0cnVjdHVyZVNldCgpOwogCiAgICAgICAgIFZlY3RvcjxMQmFz
aWNCbG9jaywgMT4gYmxvY2tzKHNldC5zaXplKCkpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBzZXQuc2l6ZSgpOyBpLS07KQpAQCAtODYxNiw3ICs4NjE4LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgCiAgICAgICAgIFZlY3RvcjxTd2l0Y2hDYXNlLCAxPiBjYXNlcyhzZXQuc2l6ZSgpKTsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gc2V0LnNpemUoKTsgaS0tOykKLSAgICAgICAgICAgIGNh
c2VzW2ldID0gU3dpdGNoQ2FzZSh3ZWFrU3RydWN0dXJlKHNldFtpXSksIGJsb2Nrc1tpXSwgV2Vp
Z2h0KDEpKTsKKyAgICAgICAgICAgIGNhc2VzW2ldID0gU3dpdGNoQ2FzZSh3ZWFrU3RydWN0dXJl
KHNldC5hdChpKSksIGJsb2Nrc1tpXSwgV2VpZ2h0KDEpKTsKICAgICAgICAgbV9vdXQuc3dpdGNo
SW5zdHJ1Y3Rpb24oCiAgICAgICAgICAgICBsb3dDZWxsKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9u
b2RlLCAwKSksIGNhc2VzLCBkdW1teURlZmF1bHQsIFdlaWdodCgwKSk7CiAgICAgICAgIApAQCAt
ODYyNyw3ICs4NjI5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gc2V0
LnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oYmxvY2tzW2ldLCBp
ICsgMSA8IHNldC5zaXplKCkgPyBibG9ja3NbaSArIDFdIDogZHVtbXlEZWZhdWx0KTsKICAgICAg
ICAgICAgIAotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzZXRbaV07CisgICAg
ICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IHNldC5hdChpKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgTFZhbHVlIG9iamVjdDsKICAgICAgICAgICAgIExWYWx1ZSBi
dXR0ZXJmbHk7CkBAIC04NzA5LDcgKzg3MTEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICAgICAgWz1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0
cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseVdpdGhJbmRleGluZ0hlYWRl
ckFuZFZlY3Rvckxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRp
b25zWzBdLmRpcmVjdEdQUigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJl
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzBdLmRpcmVjdEdQ
UigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlLmdldCgpKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpLCBsb2Nh
dGlvbnNbMl0uZGlyZWN0R1BSKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAg
ICAgICAgICAgICAgICAgICAgIHZlY3Rvckxlbmd0aCwgYnV0dGVyZmx5VmFsdWUpOwpAQCAtODcx
OCw3ICs4NzIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIFs9XSAoY29u
c3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpH
ZW5lcmF0b3I+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6
eUNhbGxHZW5lcmF0b3IoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlv
bk5ld09iamVjdFdpdGhCdXR0ZXJmbHksIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0
cnVjdHVyZSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUuZ2V0KCkp
LCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgfSwK
ICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRlcmZseVZhbHVlKTsKICAgICAgICAgICAgICAg
ICB9CkBAIC04ODkxLDcgKzg4OTMsNyBAQCBwcml2YXRlOgogICAgICAgICBMVmFsdWUgc2NvcGUg
PSBsb3dDZWxsKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxKSk7CiAgICAgICAgIFN5bWJv
bFRhYmxlKiB0YWJsZSA9IG1fbm9kZS0+Y2FzdE9wZXJhbmQ8U3ltYm9sVGFibGUqPigpOwogICAg
ICAgICBBU1NFUlQodGFibGUgPT0gbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDApLT5jYXN0
Q29uc3RhbnQ8U3ltYm9sVGFibGUqPigpKTsKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFjdGl2
YXRpb25TdHJ1Y3R1cmUoKTsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUg
PSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9k
ZS0+b3JpZ2luLnNlbWFudGljKS0+YWN0aXZhdGlvblN0cnVjdHVyZSgpKTsKIAogICAgICAgICBM
QmFzaWNCbG9jayBzbG93UGF0aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Js
b2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC04OTE4LDcgKzg5MjAsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgWz1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2Nh
dGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gewogICAgICAgICAgICAg
ICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICAgICAg
b3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlvbkRpcmVjdCwgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigp
LAotICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0
dXJlKSwgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpLAorICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlLmdldCgpKSwgbG9jYXRpb25zWzFdLmRp
cmVjdEdQUigpLAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIodGFibGUpLAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02
NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpKTsKICAgICAgICAgICAgIH0sIHNjb3Bl
KTsKQEAgLTkwNDMsMTEgKzkwNDUsMTIgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29tcGlsZU5l
d1JlZ2V4cCgpCiAgICAgewotICAgICAgICBSZWdFeHAqIHJlZ2V4cCA9IG1fbm9kZS0+Y2FzdE9w
ZXJhbmQ8UmVnRXhwKj4oKTsKKyAgICAgICAgRnJvemVuVmFsdWUqIHJlZ2V4cCA9IG1fbm9kZS0+
Y2VsbE9wZXJhbmQoKTsKKyAgICAgICAgQVNTRVJUKHJlZ2V4cC0+Y2VsbCgpLT5pbmhlcml0cyhS
ZWdFeHA6OmluZm8oKSkpOwogICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKAogICAgICAg
ICAgICAgcG9pbnRlclR5cGUoKSwKICAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRp
b25OZXdSZWdleHApLCBtX2NhbGxGcmFtZSwKLSAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRy
KHJlZ2V4cCkpOworICAgICAgICAgICAgZnJvemVuUG9pbnRlcihyZWdleHApKTsKICAgICAgICAg
CiAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICB9CkBAIC05MTQwLDEwICs5MTQzLDEy
IEBAIHByaXZhdGU6CiAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9IG1fZnRs
U3RhdGUuaml0Q29kZS0+Y29tbW9uLmFkZENvZGVPcmlnaW4obV9ub2RlLT5vcmlnaW4uc2VtYW50
aWMpOwogICAgICAgICAKICAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9jYWxsRnJhbWUsIHBhY2tl
dCwgbV9oZWFwcy5TaGFkb3dDaGlja2VuX1BhY2tldF9mcmFtZSk7Ci0gICAgICAgIG1fb3V0LnN0
b3JlUHRyKG1fb3V0LmNvbnN0SW50UHRyKFNoYWRvd0NoaWNrZW46OlBhY2tldDo6dGFpbE1hcmtl
cigpKSwgcGFja2V0LCBtX2hlYXBzLlNoYWRvd0NoaWNrZW5fUGFja2V0X2NhbGxlZSk7CisgICAg
ICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmNvbnN0SW50UHRyKGJpdHdpc2VfY2FzdDxpbnRwdHJf
dD4oU2hhZG93Q2hpY2tlbjo6UGFja2V0Ojp0YWlsTWFya2VyKCkpKSwgcGFja2V0LCBtX2hlYXBz
LlNoYWRvd0NoaWNrZW5fUGFja2V0X2NhbGxlZSk7CiAgICAgICAgIG1fb3V0LnN0b3JlNjQodGhp
c1ZhbHVlLCBwYWNrZXQsIG1faGVhcHMuU2hhZG93Q2hpY2tlbl9QYWNrZXRfdGhpc1ZhbHVlKTsK
ICAgICAgICAgbV9vdXQuc3RvcmVQdHIoc2NvcGUsIHBhY2tldCwgbV9oZWFwcy5TaGFkb3dDaGlj
a2VuX1BhY2tldF9zY29wZSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmNvbnN0SW50
UHRyKGNvZGVCbG9jaygpKSwgcGFja2V0LCBtX2hlYXBzLlNoYWRvd0NoaWNrZW5fUGFja2V0X2Nv
ZGVCbG9jayk7CisgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdGhlIENvZGVCbG9jayB0byBoYXZl
IGEgd2VhayBwb2ludGVyIHRvIGl0c2VsZiBiZWNhdXNlCisgICAgICAgIC8vIHRoYXQgd291bGQg
Y2F1c2UgaXQgdG8gYWx3YXlzIGdldCBjb2xsZWN0ZWQuCisgICAgICAgIG1fb3V0LnN0b3JlUHRy
KG1fb3V0LmNvbnN0SW50UHRyKGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oY29kZUJsb2NrKCkpKSwg
cGFja2V0LCBtX2hlYXBzLlNoYWRvd0NoaWNrZW5fUGFja2V0X2NvZGVCbG9jayk7CiAgICAgICAg
IG1fb3V0LnN0b3JlMzIobV9vdXQuY29uc3RJbnQzMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksIHBh
Y2tldCwgbV9oZWFwcy5TaGFkb3dDaGlja2VuX1BhY2tldF9jYWxsU2l0ZUluZGV4KTsKICAgICB9
CiAKQEAgLTkyMzQsNyArOTIzOSw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rvcj4KICAgICB2b2lkIGNoZWNrU3RydWN0dXJlKAogICAgICAgICBMVmFsdWUgc3RydWN0
dXJlRGlzY3JpbWluYW50LCBjb25zdCBGb3JtYXR0ZWRWYWx1ZSYgZm9ybWF0dGVkVmFsdWUsIEV4
aXRLaW5kIGV4aXRLaW5kLAotICAgICAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCwgY29uc3Qg
RnVuY3RvciYgd2Vha1N0cnVjdHVyZURpc2NyaW1pbmFudCkKKyAgICAgICAgUmVnaXN0ZXJlZFN0
cnVjdHVyZVNldCBzZXQsIGNvbnN0IEZ1bmN0b3ImIHdlYWtTdHJ1Y3R1cmVEaXNjcmltaW5hbnQp
CiAgICAgewogICAgICAgICBpZiAoc2V0LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgdGVybWlu
YXRlKGV4aXRLaW5kKTsKQEAgLTkzNjksMTYgKzkzNzQsMTggQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIHNwZWN1bGF0ZShCYWRUeXBlLCBqc1ZhbHVlVmFsdWUodmFsdWUpLCBlZGdlLm5vZGUoKSwg
aXNOb3RTeW1ib2wodmFsdWUsIHByb3ZlblR5cGUoZWRnZSkpKTsKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBjYXNlIEluZmVycmVkVHlwZTo6T2JqZWN0V2l0aFN0cnVjdHVyZToKKyAg
ICAgICAgY2FzZSBJbmZlcnJlZFR5cGU6Ok9iamVjdFdpdGhTdHJ1Y3R1cmU6IHsKKyAgICAgICAg
ICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVj
dHVyZSh0eXBlLnN0cnVjdHVyZSgpKTsKICAgICAgICAgICAgIHNwZWN1bGF0ZShCYWRUeXBlLCBq
c1ZhbHVlVmFsdWUodmFsdWUpLCBlZGdlLm5vZGUoKSwgaXNOb3RDZWxsKHZhbHVlLCBwcm92ZW5U
eXBlKGVkZ2UpKSk7Ci0gICAgICAgICAgICBpZiAoIWFic3RyYWN0VmFsdWUoZWRnZSkubV9zdHJ1
Y3R1cmUuaXNTdWJzZXRPZihTdHJ1Y3R1cmVTZXQodHlwZS5zdHJ1Y3R1cmUoKSkpKSB7CisgICAg
ICAgICAgICBpZiAoIWFic3RyYWN0VmFsdWUoZWRnZSkubV9zdHJ1Y3R1cmUuaXNTdWJzZXRPZihS
ZWdpc3RlcmVkU3RydWN0dXJlU2V0KHN0cnVjdHVyZSkpKSB7CiAgICAgICAgICAgICAgICAgc3Bl
Y3VsYXRlKAogICAgICAgICAgICAgICAgICAgICBCYWRUeXBlLCBqc1ZhbHVlVmFsdWUodmFsdWUp
LCBlZGdlLm5vZGUoKSwKICAgICAgICAgICAgICAgICAgICAgbV9vdXQubm90RXF1YWwoCiAgICAg
ICAgICAgICAgICAgICAgICAgICBtX291dC5sb2FkMzIodmFsdWUsIG1faGVhcHMuSlNDZWxsX3N0
cnVjdHVyZUlEKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHdlYWtTdHJ1Y3R1cmVJRCh0eXBl
LnN0cnVjdHVyZSgpKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgd2Vha1N0cnVjdHVyZUlE
KHN0cnVjdHVyZSkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQogCiAgICAgICAgIGNhc2UgSW5mZXJyZWRUeXBlOjpPYmplY3RXaXRoU3RydWN0dXJlT3JP
dGhlcjogewogICAgICAgICAgICAgTEJhc2ljQmxvY2sgY2VsbENhc2UgPSBtX291dC5uZXdCbG9j
aygpOwpAQCAtOTM4OSwxMiArOTM5NiwxMyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICBMQmFz
aWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGNlbGxDYXNlLCBub3RDZWxsQ2FzZSk7
CiAKLSAgICAgICAgICAgIGlmICghYWJzdHJhY3RWYWx1ZShlZGdlKS5tX3N0cnVjdHVyZS5pc1N1
YnNldE9mKFN0cnVjdHVyZVNldCh0eXBlLnN0cnVjdHVyZSgpKSkpIHsKKyAgICAgICAgICAgIFJl
Z2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh0
eXBlLnN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIGlmICghYWJzdHJhY3RWYWx1ZShlZGdlKS5t
X3N0cnVjdHVyZS5pc1N1YnNldE9mKFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSkp
IHsKICAgICAgICAgICAgICAgICBzcGVjdWxhdGUoCiAgICAgICAgICAgICAgICAgICAgIEJhZFR5
cGUsIGpzVmFsdWVWYWx1ZSh2YWx1ZSksIGVkZ2Uubm9kZSgpLAogICAgICAgICAgICAgICAgICAg
ICBtX291dC5ub3RFcXVhbCgKICAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQzMih2
YWx1ZSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgd2Vha1N0cnVjdHVyZUlEKHR5cGUuc3RydWN0dXJlKCkpKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICB3ZWFrU3RydWN0dXJlSUQoc3RydWN0dXJlKSkpOwogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CkBAIC0xMDQ5Myw5ICsxMDUwMSw5
IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgTFZhbHVl
IGFsbG9jYXRlT2JqZWN0KExWYWx1ZSBhbGxvY2F0b3IsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBM
VmFsdWUgYnV0dGVyZmx5LCBMQmFzaWNCbG9jayBzbG93UGF0aCkKKyAgICBMVmFsdWUgYWxsb2Nh
dGVPYmplY3QoTFZhbHVlIGFsbG9jYXRvciwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUs
IExWYWx1ZSBidXR0ZXJmbHksIExCYXNpY0Jsb2NrIHNsb3dQYXRoKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFsbG9jYXRlT2JqZWN0KGFsbG9jYXRvciwgbV9vdXQuY29uc3RJbnRQdHIoc3RydWN0
dXJlKSwgYnV0dGVyZmx5LCBzbG93UGF0aCk7CisgICAgICAgIHJldHVybiBhbGxvY2F0ZU9iamVj
dChhbGxvY2F0b3IsIHdlYWtTdHJ1Y3R1cmUoc3RydWN0dXJlKSwgYnV0dGVyZmx5LCBzbG93UGF0
aCk7CiAgICAgfQogCiAgICAgTFZhbHVlIGFsbG9jYXRlT2JqZWN0KExWYWx1ZSBhbGxvY2F0b3Is
IExWYWx1ZSBzdHJ1Y3R1cmUsIExWYWx1ZSBidXR0ZXJmbHksIExCYXNpY0Jsb2NrIHNsb3dQYXRo
KQpAQCAtMTA1ODksNyArMTA1OTcsNyBAQCBwcml2YXRlOgogICAgIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENsYXNzVHlwZT4KICAgICBMVmFsdWUgYWxsb2NhdGVWYXJpYWJsZVNpemVkT2JqZWN0
KAotICAgICAgICBMVmFsdWUgc2l6ZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIExWYWx1ZSBidXR0
ZXJmbHksIExCYXNpY0Jsb2NrIHNsb3dQYXRoKQorICAgICAgICBMVmFsdWUgc2l6ZSwgUmVnaXN0
ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIExWYWx1ZSBidXR0ZXJmbHksIExCYXNpY0Jsb2NrIHNs
b3dQYXRoKQogICAgIHsKICAgICAgICAgTFZhbHVlIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvclNp
emUoCiAgICAgICAgICAgICAqc3Vic3BhY2VGb3I8Q2xhc3NUeXBlPih2bSgpKSwgc2l6ZSwgc2xv
d1BhdGgpOwpAQCAtMTA2MDUsOSArMTA2MTMsOSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4g
YWxsb2NhdGVDZWxsKGFsbG9jYXRvciwgc3RydWN0dXJlLCBzbG93UGF0aCk7CiAgICAgfQogICAg
IAotICAgIExWYWx1ZSBhbGxvY2F0ZU9iamVjdChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICBM
VmFsdWUgYWxsb2NhdGVPYmplY3QoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpCiAgICAg
ewotICAgICAgICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBKU0ZpbmFsT2JqZWN0OjphbGxvY2F0
aW9uU2l6ZShzdHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkpOworICAgICAgICBzaXplX3QgYWxs
b2NhdGlvblNpemUgPSBKU0ZpbmFsT2JqZWN0OjphbGxvY2F0aW9uU2l6ZShzdHJ1Y3R1cmUuZ2V0
KCktPmlubGluZUNhcGFjaXR5KCkpOwogICAgICAgICBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRv
ciA9IHN1YnNwYWNlRm9yPEpTRmluYWxPYmplY3Q+KHZtKCkpLT5hbGxvY2F0b3JGb3IoYWxsb2Nh
dGlvblNpemUpOwogICAgICAgICAKICAgICAgICAgLy8gRklYTUU6IElmIHRoZSBhbGxvY2F0b3Ig
aXMgbnVsbCwgd2UgY291bGQgc2ltcGx5IGVtaXQgYSBub3JtYWwgQyBjYWxsIHRvIHRoZSBhbGxv
Y2F0b3IKQEAgLTEwNjMwLDcgKzEwNjM4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFs9XSAo
Y29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRo
OjpHZW5lcmF0b3I+IHsKICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5l
cmF0b3IoCiAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld09iamVjdCwgbG9jYXRpb25z
WzBdLmRpcmVjdEdQUigpLAotICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoc3RydWN0dXJlKSk7CisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgICAgIH0pOwogICAgICAg
ICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHNsb3dSZXN1bHRWYWx1
ZSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKQEAgLTEwNzMzLDggKzEwNzQx
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxhcmdlQ2Fz
ZSwgZmFpbENhc2UpOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBsYXJnZVN0cnVjdHVyZSA9IG1f
b3V0LmFuY2hvcigKLSAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKAotICAgICAgICAgICAg
ICAgIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxv
Y2F0aW9uKEFycmF5V2l0aEFycmF5U3RvcmFnZSkpKTsKKyAgICAgICAgICAgIHdlYWtTdHJ1Y3R1
cmUobV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJl
Rm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2UpKSkp
OwogICAgICAgICBtX291dC5qdW1wKHNsb3dDYXNlKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKGZhaWxDYXNlLCBzbG93Q2FzZSk7CkBAIC0xMDc2MywxMiArMTA3NzAsMTIgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0QnV0dGVy
Zmx5LCBzbG93QnV0dGVyZmx5KSk7CiAgICAgfQogICAgIAotICAgIEFycmF5VmFsdWVzIGFsbG9j
YXRlVW5pbml0aWFsaXplZENvbnRpZ3VvdXNKU0FycmF5KExWYWx1ZSBwdWJsaWNMZW5ndGgsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQorICAgIEFycmF5VmFsdWVzIGFsbG9jYXRlVW5pbml0aWFsaXpl
ZENvbnRpZ3VvdXNKU0FycmF5KExWYWx1ZSBwdWJsaWNMZW5ndGgsIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUgc3RydWN0dXJlKQogICAgIHsKICAgICAgICAgYm9vbCBzaG91bGRJbml0aWFsaXplRWxlbWVu
dHMgPSBmYWxzZTsKICAgICAgICAgYm9vbCBzaG91bGRMYXJnZUFycmF5U2l6ZUNyZWF0ZUFycmF5
U3RvcmFnZSA9IGZhbHNlOwogICAgICAgICByZXR1cm4gYWxsb2NhdGVKU0FycmF5KAotICAgICAg
ICAgICAgcHVibGljTGVuZ3RoLCBtX291dC5jb25zdEludFB0cihzdHJ1Y3R1cmUpLCBtX291dC5j
b25zdEludDMyKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpLCBzaG91bGRJbml0aWFsaXplRWxl
bWVudHMsCisgICAgICAgICAgICBwdWJsaWNMZW5ndGgsIHdlYWtTdHJ1Y3R1cmUoc3RydWN0dXJl
KSwgbV9vdXQuY29uc3RJbnQzMihzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSwgc2hvdWxkSW5p
dGlhbGl6ZUVsZW1lbnRzLAogICAgICAgICAgICAgc2hvdWxkTGFyZ2VBcnJheVNpemVDcmVhdGVB
cnJheVN0b3JhZ2UpOwogICAgIH0KICAgICAKQEAgLTEwOTEwLDcgKzEwOTE3LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhtYXNxdWVyYWRlc0Nhc2UpOwogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlzVHJ1dGh5T2JqZWN0ID0gbV9vdXQubm90
RXF1YWwoCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSksCisgICAgICAgICAgICAgICAg
ICAgIHdlYWtQb2ludGVyKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljKSksCiAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIobG9hZFN0cnVjdHVy
ZSh2YWx1ZSksIG1faGVhcHMuU3RydWN0dXJlX2dsb2JhbE9iamVjdCkpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKGlzVHJ1dGh5T2JqZWN0
KSk7CkBAIC0xMTAwOSw3ICsxMTAxNiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcigKICAgICAgICAgICAgICAgICBtX291
dC5lcXVhbCgKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIobV9ncmFwaC5n
bG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwKKyAgICAgICAgICAgICAg
ICAgICAgd2Vha1BvaW50ZXIobV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwKICAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZFB0cihzdHJ1Y3R1cmUs
IG1faGVhcHMuU3RydWN0dXJlX2dsb2JhbE9iamVjdCkpKSk7CiAgICAgICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgIH0KQEAgLTExOTMxLDEyICsxMTkzOCwxMiBAQCBw
cml2YXRlOgogICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbW9kZSA9PSBNYW51
YWxPcGVyYW5kU3BlY3VsYXRpb24gfHwgREZHOjppc0NlbGwoZWRnZS51c2VLaW5kKCkpKTsKICAg
ICAgICAgCiAgICAgICAgIGlmIChlZGdlLT5vcCgpID09IEpTQ29uc3RhbnQpIHsKLSAgICAgICAg
ICAgIEpTVmFsdWUgdmFsdWUgPSBlZGdlLT5hc0pTVmFsdWUoKTsKLSAgICAgICAgICAgIGlmICgh
dmFsdWUuaXNDZWxsKCkpIHsKKyAgICAgICAgICAgIEZyb3plblZhbHVlKiB2YWx1ZSA9IGVkZ2Ut
PmNvbnN0YW50KCk7CisgICAgICAgICAgICBpZiAoIXZhbHVlLT52YWx1ZSgpLmlzQ2VsbCgpKSB7
CiAgICAgICAgICAgICAgICAgdGVybWluYXRlKFVuY291bnRhYmxlKTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gbV9vdXQuaW50UHRyWmVybzsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJl
dHVybiBtX291dC5jb25zdEludFB0cih2YWx1ZS5hc0NlbGwoKSk7CisgICAgICAgICAgICByZXR1
cm4gZnJvemVuUG9pbnRlcih2YWx1ZSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIExv
d2VyZWROb2RlVmFsdWUgdmFsdWUgPSBtX2pzVmFsdWVWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsK
QEAgLTEyOTAxLDEwICsxMjkwOCwxMCBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgc3BlY3Vs
YXRlU3RyaW5nT2JqZWN0Rm9yU3RydWN0dXJlSUQoRWRnZSBlZGdlLCBMVmFsdWUgc3RydWN0dXJl
SUQpCiAgICAgewotICAgICAgICBTdHJ1Y3R1cmUqIHN0cmluZ09iamVjdFN0cnVjdHVyZSA9Ci0g
ICAgICAgICAgICBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRp
YyktPnN0cmluZ09iamVjdFN0cnVjdHVyZSgpOwotICAgICAgICAKLSAgICAgICAgaWYgKGFic3Ry
YWN0U3RydWN0dXJlKGVkZ2UpLmlzU3Vic2V0T2YoU3RydWN0dXJlU2V0KHN0cmluZ09iamVjdFN0
cnVjdHVyZSkpKQorICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cmluZ09iamVjdFN0cnVj
dHVyZSA9CisgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+c3RyaW5nT2JqZWN0U3RydWN0
dXJlKCkpOworCisgICAgICAgIGlmIChhYnN0cmFjdFN0cnVjdHVyZShlZGdlKS5pc1N1YnNldE9m
KFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQoc3RyaW5nT2JqZWN0U3RydWN0dXJlKSkpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIAogICAgICAgICBzcGVjdWxhdGUoCkBAIC0xMzY4OSwxOSAr
MTM2OTYsMzAgQEAgcHJpdmF0ZToKIAogICAgIExWYWx1ZSB3ZWFrUG9pbnRlcihKU0NlbGwqIHBv
aW50ZXIpCiAgICAgeworICAgICAgICAvLyBUaGVyZSBhcmUgd2VpcmQgcmVsYXRpb25zaGlwcyBp
biBob3cgb3B0aW1pemVkIENvZGVCbG9ja3MKKyAgICAgICAgLy8gcG9pbnQgdG8gb3RoZXIgQ29k
ZUJsb2Nrcy4gV2UgZG9uJ3Qgd2FudCB0byBoYXZlIHRoZW0gYmUKKyAgICAgICAgLy8gcGFydCBv
ZiB0aGUgd2VhayBwb2ludGVyIHNldC4gRm9yIGV4YW1wbGUsIGFuIG9wdGltaXplZCBDb2RlQmxv
Y2sKKyAgICAgICAgLy8gaGF2aW5nIGEgd2VhayBwb2ludGVyIHRvIGl0c2VsZiB3aWxsIGNhdXNl
IGl0IHRvIGdldCBjb2xsZWN0ZWQuCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFqc0R5bmFtaWND
YXN0PENvZGVCbG9jayo+KHBvaW50ZXIpKTsKKwogICAgICAgICBhZGRXZWFrUmVmZXJlbmNlKHBv
aW50ZXIpOwotICAgICAgICByZXR1cm4gbV9vdXQuY29uc3RJbnRQdHIocG9pbnRlcik7CisgICAg
ICAgIHJldHVybiBtX291dC53ZWFrUG9pbnRlcihtX2dyYXBoLCBwb2ludGVyKTsKKyAgICB9CisK
KyAgICBMVmFsdWUgZnJvemVuUG9pbnRlcihGcm96ZW5WYWx1ZSogdmFsdWUpCisgICAgeworICAg
ICAgICByZXR1cm4gbV9vdXQud2Vha1BvaW50ZXIodmFsdWUpOwogICAgIH0KIAotICAgIExWYWx1
ZSB3ZWFrU3RydWN0dXJlSUQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgTFZhbHVlIHdlYWtT
dHJ1Y3R1cmVJRChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAg
IGFkZFdlYWtSZWZlcmVuY2Uoc3RydWN0dXJlKTsKICAgICAgICAgcmV0dXJuIG1fb3V0LmNvbnN0
SW50MzIoc3RydWN0dXJlLT5pZCgpKTsKICAgICB9CiAgICAgCi0gICAgTFZhbHVlIHdlYWtTdHJ1
Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgTFZhbHVlIHdlYWtTdHJ1Y3R1cmUoUmVn
aXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICByZXR1cm4gd2Vha1Bv
aW50ZXIoc3RydWN0dXJlKTsKKyAgICAgICAgQVNTRVJUKCEhc3RydWN0dXJlLmdldCgpKTsKKyAg
ICAgICAgcmV0dXJuIG1fb3V0LndlYWtQb2ludGVyKG1fZ3JhcGgsIHN0cnVjdHVyZS5nZXQoKSk7
CiAgICAgfQogICAgIAogICAgIFR5cGVkUG9pbnRlciBhZGRyZXNzRm9yKExWYWx1ZSBiYXNlLCBp
bnQgb3BlcmFuZCwgcHRyZGlmZl90IG9mZnNldCA9IDApCkBAIC0xMzgwOSw3ICsxMzgyNyw5IEBA
IHByaXZhdGU6CiAgICAgICAgIG1fb3V0LmNhbGwoCiAgICAgICAgICAgICBWb2lkLAogICAgICAg
ICAgICAgbV9vdXQuY29uc3RJbnRQdHIoZnRsVW5yZWFjaGFibGUpLAotICAgICAgICAgICAgbV9v
dXQuY29uc3RJbnRQdHIoY29kZUJsb2NrKCkpLCBtX291dC5jb25zdEludDMyKGJsb2NrSW5kZXgp
LAorICAgICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0aGUgQ29kZUJsb2NrIHRvIGhhdmUgYSB3
ZWFrIHBvaW50ZXIgdG8gaXRzZWxmIGJlY2F1c2UKKyAgICAgICAgICAgIC8vIHRoYXQgd291bGQg
Y2F1c2UgaXQgdG8gYWx3YXlzIGdldCBjb2xsZWN0ZWQuCisgICAgICAgICAgICBtX291dC5jb25z
dEludFB0cihiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KGNvZGVCbG9jaygpKSksIG1fb3V0LmNvbnN0
SW50MzIoYmxvY2tJbmRleCksCiAgICAgICAgICAgICBtX291dC5jb25zdEludDMyKG5vZGVJbmRl
eCkpOwogI2VuZGlmCiAgICAgICAgIG1fb3V0LnVucmVhY2hhYmxlKCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0
LDcgQEAKICNpbmNsdWRlICJGVExWYWx1ZUZyb21CbG9jay5oIgogI2luY2x1ZGUgIkZUTFdlaWdo
dC5oIgogI2luY2x1ZGUgIkZUTFdlaWdodGVkVGFyZ2V0LmgiCisjaW5jbHVkZSAiSGVhcENlbGwu
aCIKICNpbmNsdWRlIDx3dGYvT3JkZXJNYWtlci5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmlu
dFN0cmVhbS5oPgogCkBAIC0xMDQsOSArMTA1LDI5IEBAIHB1YmxpYzoKIAogICAgIExWYWx1ZSBj
b25zdEJvb2woYm9vbCB2YWx1ZSk7CiAgICAgTFZhbHVlIGNvbnN0SW50MzIoaW50MzJfdCB2YWx1
ZSk7CisKKyAgICBMVmFsdWUgd2Vha1BvaW50ZXIoREZHOjpHcmFwaCYgZ3JhcGgsIEpTQ2VsbCog
Y2VsbCkKKyAgICB7CisgICAgICAgIEFTU0VSVChncmFwaC5tX3BsYW4ud2Vha1JlZmVyZW5jZXMu
Y29udGFpbnMoY2VsbCkpOworCisgICAgICAgIGlmIChzaXplb2Yodm9pZCopID09IDgpCisgICAg
ICAgICAgICByZXR1cm4gY29uc3RJbnQ2NChiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KGNlbGwpKTsK
KyAgICAgICAgcmV0dXJuIGNvbnN0SW50MzIoYml0d2lzZV9jYXN0PGludHB0cl90PihjZWxsKSk7
CisgICAgfQorCisgICAgTFZhbHVlIHdlYWtQb2ludGVyKERGRzo6RnJvemVuVmFsdWUqIHZhbHVl
KQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQodmFsdWUtPnZhbHVlKCkuaXNDZWxsKCkp
OworCisgICAgICAgIGlmIChzaXplb2Yodm9pZCopID09IDgpCisgICAgICAgICAgICByZXR1cm4g
Y29uc3RJbnQ2NChiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KHZhbHVlLT5jZWxsKCkpKTsKKyAgICAg
ICAgcmV0dXJuIGNvbnN0SW50MzIoYml0d2lzZV9jYXN0PGludHB0cl90Pih2YWx1ZS0+Y2VsbCgp
KSk7CisgICAgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBMVmFsdWUgY29uc3RJ
bnRQdHIoVCogdmFsdWUpCiAgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jh
c2Vfb2Y8SGVhcENlbGwsIFQ+Ojp2YWx1ZSwgIlRvIHVzZSBhIEdDIHBvaW50ZXIsIHRoZSBncmFw
aCBtdXN0IGJlIGF3YXJlIG9mIGl0LiBVc2UgZ2NQb2ludGVyIGluc3RlYWQgYW5kIG1ha2Ugc3Vy
ZSB0aGUgZ3JhcGggaXMgYXdhcmUgb2YgdGhpcyByZWZlcmVuY2UuIik7CiAgICAgICAgIGlmIChz
aXplb2Yodm9pZCopID09IDgpCiAgICAgICAgICAgICByZXR1cm4gY29uc3RJbnQ2NChiaXR3aXNl
X2Nhc3Q8aW50cHRyX3Q+KHZhbHVlKSk7CiAgICAgICAgIHJldHVybiBjb25zdEludDMyKGJpdHdp
c2VfY2FzdDxpbnRwdHJfdD4odmFsdWUpKTsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTEyMjkpCisrKyBT
b3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE3
LTAxLTI2ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIEhhcmRl
biBob3cgdGhlIGNvbXBpbGVyIHJlZmVyZW5jZXMgR0Mgb2JqZWN0cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3Mjc3CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8zMDE3OTUwNj4KKworICAgICAgICBSZXZpZXdlZCBieSBGaWxpcCBQaXpsby4KKwor
ICAgICAgICBJIG1hZGUgVGlueVB0clNldCB1c2UgYml0d2lzZV9jYXN0IGluc3RlYWQgb2Ygc3Rh
dGljX2Nhc3QKKyAgICAgICAgZm9yIGl0cyBzaW5nbGVFbnRyeSgpIGZ1bmN0aW9uIHNvIHRoYXQg
aXQgY2FuIHdvcmsgb24gcG9pbnRlci1saWtlCisgICAgICAgIHR5cGVzIGp1c3QgYXMgaXQgY2Fu
IG9uIGFjdHVhbCBwb2ludGVyIHR5cGVzLgorICAgICAgICAKKyAgICAgICAgQW4gZXhhbXBsZSBv
ZiB3aGVyZSB0aGlzIG1hdHRlcnMgaXMgd2hlbiB5b3UgaGF2ZSBUaW55UHRyU2V0PFQ+CisgICAg
ICAgIHdoZXJlIFQgaXMgZGVmaW5lZCB0byBiZSBhIHN0cnVjdCB3aGljaCB3cmFwcyBhIHBvaW50
ZXIsIGUuZzoKKyAgICAgICAgCisgICAgICAgIHN0cnVjdCBUIHsKKyAgICAgICAgICAgIHZvaWQq
IG1fcG9pbnRlcjsKKyAgICAgICAgfQorCisgICAgICAgICogd3RmL1RpbnlQdHJTZXQuaDoKKyAg
ICAgICAgKFdURjo6VGlueVB0clNldDo6c2luZ2xlRW50cnkpOgorCiAyMDE3LTAxLTI1ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEludHJvZHVjZSBh
biBpdGVtLXByb3ZpZGVyLWJhc2VkIHBhc3RlYm9hcmQgd3JhcHBlcgpJbmRleDogU291cmNlL1dU
Ri93dGYvVGlueVB0clNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1RpbnlQdHJT
ZXQuaAkocmV2aXNpb24gMjExMjI5KQorKysgU291cmNlL1dURi93dGYvVGlueVB0clNldC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBXVEYgewogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgogY2xhc3MgVGlueVB0clNldCB7CisgICAgc3RhdGljX2Fzc2VydChzaXpl
b2YoVCkgPT0gc2l6ZW9mKHZvaWQqKSwgIkl0J3MgaW4gdGhlIHRpdGxlIG9mIHRoZSBjbGFzcy4i
KTsKIHB1YmxpYzoKICAgICBUaW55UHRyU2V0KCkKICAgICAgICAgOiBtX3BvaW50ZXIoMCkKQEAg
LTQ3NSw3ICs0NzYsNyBAQCBwcml2YXRlOgogICAgIFQgc2luZ2xlRW50cnkoKSBjb25zdAogICAg
IHsKICAgICAgICAgQVNTRVJUKGlzVGhpbigpKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFQ+KHBvaW50ZXIoKSk7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VD4ocG9pbnRlcigp
KTsKICAgICB9CiAgICAgCiAgICAgT3V0T2ZMaW5lTGlzdCogbGlzdCgpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299852</attachid>
            <date>2017-01-26 14:16:34 -0800</date>
            <delta_ts>2017-01-26 15:10:59 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>253867</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjExMjMwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4NCBA
QAorMjAxNy0wMS0yNiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBIYXJkZW4gaG93IHRoZSBjb21waWxlciByZWZlcmVuY2VzIEdDIG9iamVjdHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NzI3NworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzAxNzk1MDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAgUGl6
bG8uCisKKyAgICAgICAgU2luY2UgcjIxMDk3MSwgdGhlIERGRy9GVEwgd2lsbCBmbGFzaCBzYWZl
cG9pbnRzIGJlZm9yZQorICAgICAgICBlYWNoIHBoYXNlLiBUaGlzIG1lYW5zIHRoYXQgdGhlcmUg
YXJlIG1vcmUgb3Bwb3J0dW5pdGllcyBmb3IKKyAgICAgICAgYSBHQyB0byBoYXBwZW4gd2hpbGUg
dGhlIGNvbXBpbGVyIGlzIHJ1bm5pbmcuIEJlY2F1c2Ugb2YgdGhpcywKKyAgICAgICAgdGhlIGNv
bXBpbGVyIG11c3QgYmUgdHJhY2sgb2YgYWxsIHRoZSBoZWFwIHBvaW50ZXJzIHRoYXQgYXJlIHBh
cnQKKyAgICAgICAgb2YgdGhlIEdyYXBoIGRhdGEgc3RydWN0dXJlLiBUbyBhY2NvbXBsaXNoIHRo
aXMsIEkndmUgZGVzaWduZWQKKyAgICAgICAgYSBuZXcgdHlwZSBjYWxsZWQgUmVnaXN0ZXJlZFN0
cnVjdHVyZSB0aGF0IGNhbiBvbmx5IGJlIGNvbnN0cnVjdGVkCisgICAgICAgIGFmdGVyIHRoZSBH
cmFwaCBiZWNvbWVzIGF3YXJlIG9mIGl0cyB1bmRlcmx5aW5nIFN0cnVjdHVyZSouIEkKKyAgICAg
ICAgZGVzaWduZWQgdGhpcyBuZXcgdHlwZSB0byBoYXZlIHRoZSB0eXBlIHN5c3RlbSBpbiBDKysg
aGVscCB1cyBjYXRjaAorICAgICAgICBlcnJvcnMgd2hlcmUgd2UncmUgbm90IGluZm9ybWluZyB0
aGUgZ3JhcGgvcGxhbiBvZiBhIGhlYXAgcG9pbnRlci4KKyAgICAgICAgSSd2ZSBtYWRlIGl0IGEg
Y29tcGlsZSBlcnJvciB0byBjcmVhdGUgYW4gT3BJbmZvIHdpdGggYSBwb2ludGVyCisgICAgICAg
IFQqIHdoZXJlIFQgaW5oZXJpdHMgZnJvbSBIZWFwQ2VsbC4gVGhpcyBlbmNvdXJhZ2VzIGFuIE9w
SW5mbworICAgICAgICB0byBiZSBjcmVhdGVkIHdpdGggZWl0aGVyIGEgRnJvemVuVmFsdWUqIG9y
IGEgUmVnaXN0ZXJlZFN0cnVjdHVyZS4KKyAgICAgICAgSSd2ZSBhZGRlZCBzaW1pbGFyIGNvbXBp
bGUgdGltZSBhc3NlcnRpb25zIGZvciBUcnVzdGVkSW1tUHRyIGluIERGRzo6U3BlY3VsYXRpdmVK
SVQKKyAgICAgICAgYW5kIEZUTDo6T3V0cHV0Ojpjb25zdEludFB0ci4gVGhlc2Ugc3RhdGljIGFz
c2VydHMgZG9uJ3Qgc2F2ZSB1cyBmcm9tIGFsbCBiYWQKKyAgICAgICAgcHJvZ3JhbXMgYmVjYXVz
ZSB0aGVyZSBhcmUgd2F5cyB0byB3cml0ZSBjb2RlIHRoYXQncyBpbmNvcnJlY3QgdGhhdCBjb21w
aWxlcywKKyAgICAgICAgYnV0IHRoZSBuZXcgdHlwZXMgZG8gaGVscCB1cyBlbnN1cmUgdGhhdCB0
aGUgbW9zdCBvYnZpb3VzIHdheSBvZiB3cml0aW5nIHRoZQorICAgICAgICBjb2RlIGlzIGNvcnJl
Y3QuCisgICAgICAgIAorICAgICAgICBUaGUgcmVhc29uIHRoaXMgcGF0Y2ggaXMgc28gYmlnIGlz
IHRoYXQgSSd2ZSBzdHJ1bmcgUmVnaXN0ZXJlZFN0cnVjdHVyZSBhbmQKKyAgICAgICAgUmVnaXN0
ZXJlZFN0cnVjdHVyZVNldCB0aHJvdWdoIHRoZSBlbnRpcmUgREZHL0ZUTC4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpkZXRlcm1pbmVMaXZlbmVzcyk6CisgICAgICAgICogYnl0ZWNvZGUv
U3RydWN0dXJlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2V0OjpmaWx0ZXIpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTZXQ6OmZpbHRlckFycmF5TW9kZXMpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTZXQ6OnNwZWN1bGF0aW9uRnJvbVN0cnVj
dHVyZXMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTZXQ6OmFycmF5TW9kZXNG
cm9tU3RydWN0dXJlcyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlN0cnVjdHVyZVNldDo6dmFs
aWRhdGVSZWZlcmVuY2VzKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVT
ZXQuaDoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI6OmZpbHRlcik6CisgICAgICAgICogZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmJvb2xlYW5SZXN1bHQpOgorICAgICAg
ICAoSlNDOjpERkc6OmlzVG9UaGlzQW5JZGVudGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAg
ICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
b2JzZXJ2ZVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpmaWx0ZXIpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFj
dFZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpzZXQpOgorICAg
ICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OnNldFR5cGUpOgorICAgICAgICAoSlNDOjpE
Rkc6OkFic3RyYWN0VmFsdWU6Om1lcmdlT1NSRW50cnlWYWx1ZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6QWJzdHJhY3RWYWx1ZTo6ZmlsdGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZh
bHVlOjpjaGFuZ2VTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6
OmNvbnRhaW5zKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RWYWx1ZS5oOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0VmFsdWU6Om9ic2VydmVUcmFuc2l0aW9uKToKKyAgICAgICAgKEpT
Qzo6REZHOjpBYnN0cmFjdFZhbHVlOjpUcmFuc2l0aW9uT2JzZXJ2ZXI6OlRyYW5zaXRpb25PYnNl
cnZlcik6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdBcnJheU1vZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5
TW9kZTo6YWxyZWFkeUNoZWNrZWQpOgorICAgICAgICAqIGRmZy9ERkdBcnJheWlmeVNsb3dQYXRo
R2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlpZnlTbG93UGF0aEdlbmVyYXRv
cjo6QXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvcik6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ29u
c3RhbnRJbnRlcm5hbEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6bG9hZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5
SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKToK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNr
RW50cnkpOgorICAgICAgICAqIGRmZy9ERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpERkc6OkNhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2Vu
ZXJhdG9yOjpDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvcik6CisgICAgICAgIChK
U0M6OkRGRzo6Q2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJh
dG9yOjpDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3Ip
OgorICAgICAgICAqIGRmZy9ERkdDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xvd1BhdGhHZW5l
cmF0b3IuaDoKKyAgICAgICAgKEpTQzo6REZHOjpDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xv
d1BhdGhHZW5lcmF0b3I6OkNhbGxDcmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRv
cik6CisgICAgICAgICogZGZnL0RGR0NvbW1vbkRhdGEuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkNvbW1vbkRhdGE6Om5vdGlmeUNvbXBpbGluZ1N0cnVjdHVyZVRyYW5zaXRpb24pOgorICAgICAg
ICAqIGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFudHMpOgorICAgICAgICAoSlNDOjpERkc6
OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjplbWl0R2V0QnlPZmZzZXQpOgorICAgICAgICAoSlNDOjpE
Rkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjplbWl0UHV0QnlPZmZzZXQpOgorICAgICAgICAoSlND
OjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjphZGRCYXNlQ2hlY2spOgorICAgICAgICAoSlND
OjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjphZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2sp
OgorICAgICAgICAqIGRmZy9ERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkRlc2lyZWRXZWFrUmVmZXJlbmNlczo6cmVhbGx5QWRkKToKKyAgICAgICAgKiBk
ZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Y2hl
Y2tBcnJheSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpHcmFwaDo6R3JhcGgpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpkdW1wKToKKyAgICAg
ICAgKEpTQzo6REZHOjpHcmFwaDo6dHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eSk6CisgICAgICAgIChK
U0M6OkRGRzo6R3JhcGg6OmluZmVycmVkVmFsdWVGb3JQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6
OkRGRzo6R3JhcGg6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpm
cmVlemUpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpyZWdpc3RlclN0cnVjdHVyZSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmFzc2VydElzUmVnaXN0ZXJlZCk6CisgICAgICAgICog
ZGZnL0RGR0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OnJlZ2lzdGVyU3RydWN0
dXJlKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6YWRkU3RydWN0dXJlU2V0KToKKyAgICAg
ICAgKiBkZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxl
cjo6YnJhbmNoV2Vha1N0cnVjdHVyZSk6CisgICAgICAgICogZGZnL0RGR011bHRpR2V0QnlPZmZz
ZXREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpNdWx0aUdldEJ5T2Zmc2V0Q2FzZTo6ZHVt
cEluQ29udGV4dCk6CisgICAgICAgICogZGZnL0RGR011bHRpR2V0QnlPZmZzZXREYXRhLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6TXVsdGlHZXRCeU9mZnNldENhc2U6Ok11bHRpR2V0QnlPZmZzZXRD
YXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpNdWx0aUdldEJ5T2Zmc2V0Q2FzZTo6c2V0KToKKyAg
ICAgICAgKiBkZmcvREZHTm9kZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVy
dFRvUHV0U3RydWN0dXJlSGludCk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0VG9DaGVja1N0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
OkRGRzo6Tm9kZTo6c3RydWN0dXJlU2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzdHJ1
Y3R1cmUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Ok9wSW5mb1dyYXBwZXI6Ok9wSW5mb1dy
YXBwZXIpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Ok9wSW5mb1dyYXBwZXI6Om9wZXJhdG9y
PSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6T3BJbmZvV3JhcHBlcjo6YXNSZWdpc3RlcmVk
U3RydWN0dXJlKToKKyAgICAgICAgKiBkZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFz
ZS5jcHA6CisgICAgICAgICogZGZnL0RGR09wSW5mby5oOgorICAgICAgICAoSlNDOjpERkc6Ok9w
SW5mbzo6T3BJbmZvKToKKyAgICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6UGxhbjo6Y29tcGlsZUluVGhyZWFkSW1wbCk6CisgICAgICAgIChKU0M6OkRGRzo6UGxh
bjo6ZmluYWxpemVXaXRob3V0Tm90aWZ5aW5nQ2FsbGJhY2spOgorICAgICAgICAqIGRmZy9ERkdS
ZWdpc3RlcmVkU3RydWN0dXJlLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVy
ZWRTdHJ1Y3R1cmU6OmdldCk6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJlZFN0cnVjdHVy
ZTo6b3BlcmF0b3ItPik6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZTo6
b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZTo6b3Bl
cmF0b3IhPSk6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZTo6b3BlcmF0
b3IgYm9vbCk6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZTo6UmVnaXN0
ZXJlZFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZTo6
Y3JlYXRlUHJpdmF0ZSk6CisgICAgICAgICogZGZnL0RGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlcmVkU3RydWN0dXJlU2V0Ojpm
aWx0ZXIpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQ6OmZpbHRl
ckFycmF5TW9kZXMpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQ6
OnNwZWN1bGF0aW9uRnJvbVN0cnVjdHVyZXMpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVy
ZWRTdHJ1Y3R1cmVTZXQ6OmFycmF5TW9kZXNGcm9tU3RydWN0dXJlcyk6CisgICAgICAgIChKU0M6
OkRGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZVNldDo6dmFsaWRhdGVSZWZlcmVuY2VzKToKKyAgICAg
ICAgKiBkZmcvREZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNldC5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6REZHOjpSZWdpc3RlcmVkU3RydWN0dXJlU2V0OjpSZWdpc3RlcmVkU3RydWN0dXJlU2V0KToK
KyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlcmVkU3RydWN0dXJlU2V0Ojpvbmx5U3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlcmVkU3RydWN0dXJlU2V0Ojp0b1N0cnVjdHVy
ZVNldCk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVSYXdPYmpl
Y3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0R2V0Q2FsbGVlKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c2lsZW50RmlsbCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJyYXkpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPblN0cmluZyk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVGcm9tQ2hhckNvZGUpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRG91YmxlUmVwKToKKyAgICAgICAgKEpT
Qzo6REZHOjpjb21waWxlQ2xhbXBEb3VibGVUb0J5dGUpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTWFrZVJvcGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlQXJpdGhSb3VuZGluZyk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbik6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVBY3RpdmF0aW9uKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZURpcmVjdEFyZ3VtZW50cyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVTY29wZWRBcmd1
bWVudHMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRl
Q2xvbmVkQXJndW1lbnRzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVNwcmVhZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVB
cnJheVNsaWNlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVR5
cGVPZik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBbGxvY2F0
ZVByb3BlcnR5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3JPbkNlbGwp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJh
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0cmluZ09y
U3RyaW5nT2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU1hdGVyaWFsaXplTmV3T2JqZWN0KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6VHJ1c3RlZEltbVB0cjo6VHJ1
c3RlZEltbVB0cik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OlRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
VHJ1c3RlZEltbVB0cjo6b3BlcmF0b3IgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpUcnVzdGVkSW1tUHRyOjphc0ludHB0
cik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhbGxPcGVyYXRpb24pOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVEZXN0cnVjdGli
bGVPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVT
dHJpbmdPYmplY3RGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3Vs
YXRpdmVOb25QZWVwaG9sZUNvbXBhcmVOdWxsT3JVbmRlZmluZWQpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoTnVsbE9yVW5k
ZWZpbmVkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RPck90aGVyTG9n
aWNhbE5vdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RP
ck90aGVyQnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBbGxvY2F0ZU5l
d0FycmF5V2l0aFNpemUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZWVw
aG9sZUNvbXBhcmVOdWxsT3JVbmRlZmluZWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoTnVsbE9yVW5kZWZpbmVkKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3QpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJyYW5j
aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2NhdGVOZXdBcnJheVdpdGhT
aXplKToKKyAgICAgICAgKiBkZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlTm9kZSk6CisgICAg
ICAgICogZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmFzc2VydElzUmVnaXN0ZXJlZCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6Y2xvYmJlcik6CisgICAgICAgIChK
U0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6b2JzZXJ2ZVRyYW5zaXRpb24pOgorICAg
ICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om9ic2VydmVUcmFuc2l0aW9u
cyk6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6YWRkKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjptZXJnZSk6CisgICAgICAg
IChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6bWVyZ2VOb3RUb3ApOgorICAgICAg
ICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmZpbHRlcik6CisgICAgICAgIChK
U0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyU2xvdyk6CisgICAgICAgIChK
U0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyQ2xhc3NJbmZvU2xvdyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6Y29udGFpbnMpOgorICAg
ICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3Vic2V0T2YpOgorICAg
ICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3VwZXJzZXRPZik6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6b3ZlcmxhcHMpOgorICAg
ICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3ViQ2xhc3NPZik6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZHVtcEluQ29udGV4dCk6
CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlKToK
KyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpvcGVyYXRvcj0pOgor
ICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OnNldCk6CisgICAgICAg
IChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6dG9TdHJ1Y3R1cmVTZXQpOgorICAg
ICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmF0KToKKyAgICAgICAgKEpT
Qzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpvcGVyYXRvcltdKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpvbmx5U3RydWN0dXJlKToKKyAgICAgICAg
KiBkZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlN0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFz
ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlUmVnaXN0cmF0aW9uUGhh
c2U6OnJ1bik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlUmVnaXN0cmF0
aW9uUGhhc2U6OnJlZ2lzdGVyU3RydWN0dXJlcyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRG
Rzo6U3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2U6OnJlZ2lzdGVyU3RydWN0dXJlKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZTo6YXNzZXJ0
QXJlUmVnaXN0ZXJlZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlUmVn
aXN0cmF0aW9uUGhhc2U6OmFzc2VydElzUmVnaXN0ZXJlZCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkRGRzo6cGVyZm9ybVN0cnVjdHVyZVJlZ2lzdHJhdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmg6CisgICAgICAgICogZGZnL0RG
R1RyYW5zaXRpb24uY3BwOgorICAgICAgICAoSlNDOjpERkc6OlRyYW5zaXRpb246OmR1bXBJbkNv
bnRleHQpOgorICAgICAgICAqIGRmZy9ERkdUcmFuc2l0aW9uLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6VHJhbnNpdGlvbjo6VHJhbnNpdGlvbik6CisgICAgICAgICogZGZnL0RGR1R5cGVDaGVja0hv
aXN0aW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlR5cGVDaGVja0hvaXN0aW5nUGhh
c2U6Om5vdGljZVN0cnVjdHVyZUNoZWNrKToKKyAgICAgICAgKEpTQzo6REZHOjpUeXBlQ2hlY2tI
b2lzdGluZ1BoYXNlOjpub3RpY2VTdHJ1Y3R1cmVDaGVja0FjY291bnRpbmdGb3JBcnJheU1vZGUp
OgorICAgICAgICAqIGRmZy9ERkdWYWxpZGF0ZS5jcHA6CisgICAgICAgICogZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6Omxvd2Vy
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxPYmpl
Y3RDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVDaGVja1N0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVQdXRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlQXJyYXlTbGljZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVDcmVhdGVBY3RpdmF0aW9uKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNyZWF0ZURpcmVjdEFyZ3VtZW50cyk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDcmVhdGVSZXN0KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld0FycmF5KToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5ld0FycmF5V2l0aFNw
cmVhZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOZXdB
cnJheUJ1ZmZlcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVOZXdBcnJheVdpdGhTaXplKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZU5ld1R5cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVNdWx0aUdldEJ5
T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU11
bHRpUHV0QnlPZmZzZXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlR2V0TWFwQnVja2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZU92ZXJyaWRlc0hhc0luc3RhbmNlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNoZWNrU3RydWN0dXJlSW1tZWRpYXRlKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU1hdGVyaWFsaXplTmV3T2JqZWN0
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU1hdGVyaWFs
aXplQ3JlYXRlQWN0aXZhdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNvbXBpbGVOZXdSZWdleHApOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlTG9nU2hhZG93Q2hpY2tlblRhaWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjaGVja1N0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvQjM6OmNoZWNrSW5mZXJyZWRUeXBlKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6YWxsb2NhdGVPYmplY3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjphbGxvY2F0ZVZhcmlhYmxlU2l6ZWRPYmplY3QpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjphbGxvY2F0ZUpTQXJyYXkpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjphbGxvY2F0ZVVuaW5pdGlhbGl6ZWRDb250aWd1
b3VzSlNBcnJheSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmJvb2xp
ZnkpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjplcXVhbE51bGxPclVu
ZGVmaW5lZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6Omxvd0NlbGwp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpzcGVjdWxhdGVTdHJpbmdP
YmplY3RGb3JTdHJ1Y3R1cmVJRCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OndlYWtQb2ludGVyKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
ZnJvemVuUG9pbnRlcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6Ondl
YWtTdHJ1Y3R1cmVJRCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6Ondl
YWtTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjcmFz
aCk6CisgICAgICAgICogZnRsL0ZUTE91dHB1dC5oOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1
dDo6d2Vha1BvaW50ZXIpOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6Y29uc3RJbnRQdHIp
OgorCiAyMDE3LTAxLTI2ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBPU1IgZW50cnk6IGRlbGF5IG91dGVyLWxvb3AgY29tcGlsYXRpb24gd2hlbiBhdCBpbm5l
ci1sb29wCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAy
MTEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTM3Myw2ICszNzMsNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAg
IGRmZy9ERkdQcm9tb3RlZEhlYXBMb2NhdGlvbi5jcHAKICAgICBkZmcvREZHUHVyZVZhbHVlLmNw
cAogICAgIGRmZy9ERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAKKyAgICBkZmcvREZHUmVnaXN0
ZXJlZFN0cnVjdHVyZVNldC5jcHAKICAgICBkZmcvREZHU1NBQ2FsY3VsYXRvci5jcHAKICAgICBk
ZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAogICAgIGRmZy9ERkdTU0FMb3dlcmluZ1BoYXNl
LmNwcApAQCAtMzg2LDcgKzM4Nyw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAg
ZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdTdHJlbmd0
aFJlZHVjdGlvblBoYXNlLmNwcAogICAgIGRmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmNw
cAotICAgIGRmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAKICAgICBkZmcvREZH
VGhyZWFkRGF0YS5jcHAKICAgICBkZmcvREZHVGh1bmtzLmNwcAogICAgIGRmZy9ERkdUaWVyVXBD
aGVja0luamVjdGlvblBoYXNlLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01MjAsOCArNTIw
LDYgQEAKIAkJMEY3NjZEMzgxNUFFNEExQzAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmlu
Z1dhdGNocG9pbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY3NjZEMzYxNUFFNEExQTAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dh
dGNocG9pbnQuY3BwICovOyB9OwogCQkwRjc2NkQzOTE1QUU0QTFGMDA4RjM2M0UgLyogU3RydWN0
dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY3NjZEMzcxNUFFNEExQTAwOEYzNjNFIC8qIFN0cnVjdHVyZVN0
dWJDbGVhcmluZ1dhdGNocG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjc3MDA5MjE0MDJGRjNDMDA3OEVCMzkgLyogU2FtcGxpbmdDb3Vu
dGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NzcwMDkxMTQwMkZGMjgwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwICovOyB9OwotCQkw
Rjc5MDg1NTE5QTI5MEIyMDBGNjMxMEMgLyogREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2Uu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3OTA4
NTMxOUEyOTBCMjAwRjYzMTBDIC8qIERGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcCAq
LzsgfTsKLQkJMEY3OTA4NTYxOUEyOTBCMjAwRjYzMTBDIC8qIERGR1N0cnVjdHVyZVJlZ2lzdHJh
dGlvblBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjc5MDg1NDE5QTI5MEIyMDBGNjMxMEMgLyogREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhh
c2UuaCAqLzsgfTsKIAkJMEY3QjI5NEIxNEMzQ0QyRjAwN0MzREIxIC8qIERGR0NhcGFiaWxpdGll
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEODJF
MUYxNDE3MkMyRjAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5oICovOyB9OwogCQkwRjdCMjk0
RDE0QzNDRDRDMDA3QzNEQjEgLyogREZHQ29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMwOTc3RTE0NjlFQkM0MDBDRjI0NDIgLyogREZHQ29t
bW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEY3QzM5RkIxQzhGNjI5MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGN0MzOUZBMUM4RjYyOTMwMDQ4MDE1
MSAvKiBSZWdFeHBJbmxpbmVzLmggKi87IH07CkBAIC0xNDQxLDYgKzE0MzksOCBAQAogCQk3OTZG
QjQzQTFERkY4QzNGMDAzOUM5NUQgLyogSlNXZWJBc3NlbWJseUhlbHBlcnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5NkZCNDM5MURGRjhDM0YwMDM5
Qzk1RCAvKiBKU1dlYkFzc2VtYmx5SGVscGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc5N0UwN0E5MUI4RkNGQjkwMDg0MDBCQSAvKiBKU0ds
b2JhbExleGljYWxFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3OTdFMDdBNzFCOEZDRkI5MDA4NDAwQkEgLyogSlNHbG9iYWxMZXhp
Y2FsRW52aXJvbm1lbnQuY3BwICovOyB9OwogCQk3OTdFMDdBQTFCOEZDRkI5MDA4NDAwQkEgLyog
SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDc5N0UwN0E4MUI4RkNGQjkwMDg0MDBCQSAvKiBKU0dsb2JhbExl
eGljYWxFbnZpcm9ubWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTc5ODBDMTZDMUUzQTk0MEUwMEI3MTYxNSAvKiBERkdSZWdpc3RlcmVkU3Ry
dWN0dXJlU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDc5ODBDMTZBMUUzQTk0MEUwMEI3MTYxNSAvKiBERkdSZWdpc3RlcmVkU3RydWN0dXJlU2V0
LmNwcCAqLzsgfTsKKwkJNzk4MEMxNkQxRTNBOTQwRTAwQjcxNjE1IC8qIERGR1JlZ2lzdGVyZWRT
dHJ1Y3R1cmVTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDc5ODBDMTZCMUUzQTk0MEUwMEI3MTYxNSAvKiBERkdSZWdpc3RlcmVkU3RydWN0dXJlU2V0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzk4
OTM3NzgxRENBQjU3MzAwRjhENEZCIC8qIEpTRml4ZWRBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OTg5Mzc3NjFEQ0FCNTczMDBGOEQ0RkIg
LyogSlNGaXhlZEFycmF5LmNwcCAqLzsgfTsKIAkJNzk4OTM3NzkxRENBQjU3MzAwRjhENEZCIC8q
IEpTRml4ZWRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzk4OTM3NzcxRENBQjU3MzAwRjhENEZCIC8qIEpTRml4ZWRBcnJheS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc5OUVGN0M0MUM1NkVE
OTYwMDJCMDUzNCAvKiBCM1BDVG9PcmlnaW5NYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5OUVGN0MzMUM1NkVEOTYwMDJCMDUzNCAvKiBCM1BDVG9P
cmlnaW5NYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTQ3MSw2ICsxNDcxLDcgQEAKIAkJNzlFRTBDMDAxQjRBRkI4NTAwMDM4NUM5IC8qIFZh
cmlhYmxlRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDc5RUUwQkZFMUI0QUZCODUwMDAzODVDOSAvKiBWYXJpYWJsZUVudmlyb25tZW50
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzlG
OEZDMUUxQjlGRUQwRjAwQ0E2NkFCIC8qIERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5RjhGQzFD
MUI5RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5jcHAgKi87
IH07CiAJCTc5RjhGQzFGMUI5RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJbnNlcnRp
b25QaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzlGOEZDMUQxQjlGRUQwRjAwQ0E2NkFCIC8qIERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNl
LmggKi87IH07CisJCTc5RkM4QTA4MUUzMkU5RjAwMEQ4OEYwRSAvKiBERkdSZWdpc3RlcmVkU3Ry
dWN0dXJlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
OUZDOEEwNzFFMzJFOUYwMDBEODhGMEUgLyogREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdCQzU0N0QzMUI2
OTU5QTEwMDk1OUI1OCAvKiBXYXNtRm9ybWF0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QkM1NDdEMjFCNjk1OTlCMDA5NTlCNTggLyogV2FzbUZvcm1h
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdD
MDA4Q0RBMTg3MTI0QkIwMDk1NUMyNCAvKiBKU1Byb21pc2VEZWZlcnJlZC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzAwOENEODE4NzEyNEJCMDA5
NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQuY3BwICovOyB9OwogCQk3QzAwOENEQjE4NzEyNEJC
MDA5NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMDA4Q0Q5MTg3MTI0QkIwMDk1NUMyNCAvKiBKU1Byb21p
c2VEZWZlcnJlZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0yOTc3LDggKzI5NzgsNiBAQAogCQkwRjc2NkQzNzE1QUU0QTFBMDA4RjM2M0UgLyog
U3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGNzcwMDhFMTQwMkZERDYwMDc4RUIzOSAvKiBTYW1wbGluZ0Nv
dW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2FtcGxpbmdDb3VudGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNzcwMDkxMTQwMkZGMjgwMDc4RUIz
OSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2FtcGxpbmdDb3VudGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MEY3OTA4NTMxOUEyOTBCMjAwRjYzMTBDIC8qIERGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1N0cnVjdHVyZVJl
Z2lzdHJhdGlvblBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGNzkwODU0MTlBMjkwQjIw
MEY2MzEwQyAvKiBERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5oOyBwYXRo
ID0gZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGN0MzOUZBMUM4RjYyOTMwMDQ4MDE1MSAvKiBSZWdFeHBJbmxpbmVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cElubGluZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3QzM5RkMxQzhGNjU5NTAwNDgwMTUxIC8qIFJlZ0V4
cE9iamVjdElubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhw
T2JqZWN0SW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjdDMzlGRTFD
OTBDNTVCMDA0ODAxNTEgLyogREZHT3BJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IERGR09wSW5mby5oOyBwYXRoID0gZGZnL0RGR09wSW5mby5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMzkxMSw2ICszOTEwLDggQEAKIAkJNzk2RkI0MzkxREZGOEMzRjAw
MzlDOTVEIC8qIEpTV2ViQXNzZW1ibHlIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEpTV2ViQXNzZW1ibHlIZWxwZXJzLmg7IHBhdGggPSBqcy9KU1dlYkFzc2VtYmx5
SGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3OTdFMDdBNzFCOEZDRkI5
MDA4NDAwQkEgLyogSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3OTdFMDdBODFCOEZDRkI5MDA4NDAwQkEgLyog
SlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNHbG9iYWxMZXhpY2FsRW52aXJvbm1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNzk4MEMxNkExRTNBOTQwRTAwQjcxNjE1IC8qIERGR1JlZ2lzdGVyZWRTdHJ1Y3R1
cmVTZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHUmVnaXN0
ZXJlZFN0cnVjdHVyZVNldC5jcHA7IHBhdGggPSBkZmcvREZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNl
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc5ODBDMTZCMUUzQTk0MEUwMEI3
MTYxNSAvKiBERkdSZWdpc3RlcmVkU3RydWN0dXJlU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IERGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQuaDsgcGF0aCA9IGRmZy9ERkdS
ZWdpc3RlcmVkU3RydWN0dXJlU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc5
ODkzNzc2MURDQUI1NzMwMEY4RDRGQiAvKiBKU0ZpeGVkQXJyYXkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGaXhlZEFycmF5LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzk4OTM3NzcxRENBQjU3MzAwRjhENEZCIC8qIEpTRml4ZWRBcnJheS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ZpeGVkQXJyYXkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzk5RUY3QzMxQzU2RUQ5NjAwMkIwNTM0IC8qIEIzUENU
b09yaWdpbk1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM1BDVG9Pcmln
aW5NYXAuaDsgcGF0aCA9IGIzL0IzUENUb09yaWdpbk1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMzk0MSw2ICszOTQyLDcgQEAKIAkJNzlFRTBCRkUxQjRBRkI4NTAwMDM4NUM5
IC8qIFZhcmlhYmxlRW52aXJvbm1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVmFyaWFibGVFbnZpcm9ubWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
OUY4RkMxQzFCOUZFRDBGMDBDQTY2QUIgLyogREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHTWF4aW1hbEZsdXNo
SW5zZXJ0aW9uUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR01heGltYWxGbHVzaEluc2VydGlvblBo
YXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzlGOEZDMUQxQjlGRUQwRjAw
Q0E2NkFCIC8qIERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmg7IHBhdGgg
PSBkZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNzlGQzhBMDcxRTMyRTlGMDAwRDg4RjBFIC8qIERGR1JlZ2lzdGVyZWRTdHJ1
Y3R1cmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHUmVnaXN0ZXJlZFN0
cnVjdHVyZS5oOyBwYXRoID0gZGZnL0RGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0JDNTQ3RDIxQjY5NTk5QjAwOTU5QjU4IC8qIFdhc21Gb3Jt
YXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbUZvcm1hdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzAwOENEODE4NzEyNEJCMDA5NTVDMjQgLyogSlNQ
cm9taXNlRGVmZXJyZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNQcm9taXNlRGVmZXJyZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzAw
OENEOTE4NzEyNEJCMDA5NTVDMjQgLyogSlNQcm9taXNlRGVmZXJyZWQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9taXNlRGVmZXJyZWQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTcwOTEsNiArNzA5Myw5IEBACiAJCQkJMEZCMTc2NUYxOTZCOEY5RTAw
OTEwNTJBIC8qIERGR1B1cmVWYWx1ZS5oICovLAogCQkJCTBGM0ExQkY3MUE5RUNCN0QwMDBERTAx
QSAvKiBERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5jcHAgKi8sCiAJCQkJMEYzQTFCRjgxQTlFQ0I3
RDAwMERFMDFBIC8qIERGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmggKi8sCisJCQkJNzlGQzhBMDcx
RTMyRTlGMDAwRDg4RjBFIC8qIERGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaCAqLywKKwkJCQk3OTgw
QzE2QTFFM0E5NDBFMDBCNzE2MTUgLyogREZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNldC5jcHAgKi8s
CisJCQkJNzk4MEMxNkIxRTNBOTQwRTAwQjcxNjE1IC8qIERGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmVT
ZXQuaCAqLywKIAkJCQk4NkVDOURDMTEzMjhERjgyMDAyQjJBRDcgLyogREZHUmVnaXN0ZXJCYW5r
LmggKi8sCiAJCQkJMEYyRkNDRjQxOEE2MDA3MDAwMUEyN0Y4IC8qIERGR1NhZmVwb2ludC5jcHAg
Ki8sCiAJCQkJMEYyRkNDRjUxOEE2MDA3MDAwMUEyN0Y4IC8qIERGR1NhZmVwb2ludC5oICovLApA
QCAtNzEyMyw4ICs3MTI4LDYgQEAKIAkJCQkwRjg5M0JEQTE5MzZFMjNDMDAxMjExRjQgLyogREZH
U3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5jcHAgKi8sCiAJCQkJMEY2Mzk0NzYxNURDRTM0NzAwNkE1
OTdDIC8qIERGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuaCAqLywKIAkJCQkwRjUwQUYzQjE5M0U4
QjM5MDA2NzRFRTggLyogREZHU3RydWN0dXJlQ2xvYmJlclN0YXRlLmggKi8sCi0JCQkJMEY3OTA4
NTMxOUEyOTBCMjAwRjYzMTBDIC8qIERGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcCAq
LywKLQkJCQkwRjc5MDg1NDE5QTI5MEIyMDBGNjMxMEMgLyogREZHU3RydWN0dXJlUmVnaXN0cmF0
aW9uUGhhc2UuaCAqLywKIAkJCQkwRjJGQ0NGNzE4QTYwMDcwMDAxQTI3RjggLyogREZHVGhyZWFk
RGF0YS5jcHAgKi8sCiAJCQkJMEYyRkNDRjgxOEE2MDA3MDAwMUEyN0Y4IC8qIERGR1RocmVhZERh
dGEuaCAqLywKIAkJCQkwRkMwOTc5RjE0NkIyOEM3MDBDRjI0NDIgLyogREZHVGh1bmtzLmNwcCAq
LywKQEAgLTgwNzYsNiArODA3OSw3IEBACiAJCQkJMEYyMUMyN0QxNEJFNzI3QTAwQURDNjRCIC8q
IENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0E3MTRC
Q0Y1MDcwMDg4NUI0RiAvKiBDb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNzYyMDUx
REI5MjQyOTAwQjdBMkZEIC8qIENvbGxlY3Rpb25TY29wZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NzlGQzhBMDgxRTMyRTlGMDAwRDg4RjBFIC8qIERGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1MzI0Mzk4MTg1NkE0ODkwMDJFRDY5MiAvKiBDb21iaW5lZERvbWFp
bnMuanNvbiBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0YzMEUxNkY1Q0QwMEIzNDQ2MCAvKiBD
b21tb25JZGVudGlmaWVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxNUYxNUYxNEI3QTczRTAw
NURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MjkxLDcgKzgy
OTUsNiBAQAogCQkJCTBGQzIwQ0I2MTg1MkUyQzYwMEM5RTk1NCAvKiBERkdTdHJlbmd0aFJlZHVj
dGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYzOTQ3ODE1RENFMzRCMDA2QTU5N0Mg
LyogREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1MEFG
M0MxOTNFOEIzOTAwNjc0RUU4IC8qIERGR1N0cnVjdHVyZUNsb2JiZXJTdGF0ZS5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJMEY3OTA4NTYxOUEyOTBCMjAwRjYzMTBDIC8qIERGR1N0cnVjdHVyZVJlZ2lz
dHJhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJGQ0NGRjE4QTYwMDcwMDAxQTI3
RjggLyogREZHVGhyZWFkRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3QTIxNDZCMjhD
QzAwQ0YyNDQyIC8qIERGR1RodW5rcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEOEEzMjgxN0Q1
MUY1NzAwQ0EyQzQwIC8qIERGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuaCBpbiBIZWFkZXJz
ICovLApAQCAtODY3OSw2ICs4NjgyLDcgQEAKIAkJCQlBNTBFNEI2NDE4ODA5REQ1MDA2OEE0NkQg
LyogSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MDNG
QTJBMTg4RjEwNTkwMDExMEYxNCAvKiBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNTEzRTVDMDE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3Rl
ZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTc5ODBDMTZEMUUzQTk0MEUwMEI3MTYx
NSAvKiBERkdSZWdpc3RlcmVkU3RydWN0dXJlU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTEz
RTVDMjE4NUJGQUNDMDA3RTk1QUQgLyogSlNJbmplY3RlZFNjcmlwdEhvc3RQcm90b3R5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUM0NDJDQjI1MUE2Q0RCOEMwMDVEM0Q3QyAvKiBKU0lucHV0cy5q
c29uIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RjgxN0I2QjVBQjAwQTdBRTNGIC8qIEpTSW50
MTZBcnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC05OTk3LDcgKzEwMDAxLDYgQEAKIAkJCQkwRkMy
MENCNTE4NTJFMkM2MDBDOUU5NTQgLyogREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjdERjEzQjFFMjk3MTExMDA5NTk1MUIgLyogSlNEZXN0cnVjdGli
bGVPYmplY3RTdWJzcGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjg5M0JEQjE5MzZFMjND
MDAxMjExRjQgLyogREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQkwRjc5MDg1NTE5QTI5MEIyMDBGNjMxMEMgLyogREZHU3RydWN0dXJlUmVnaXN0cmF0aW9u
UGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyRkNDRkUxOEE2MDA3MDAwMUEyN0Y4IC8q
IERGR1RocmVhZERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDMDk3QTExNDZCMjhDQTAw
Q0YyNDQyIC8qIERGR1RodW5rcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4QTMyNzE3RDUx
RjU3MDBDQTJDNDAgLyogREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTEwMDM5LDYgKzEwMDQyLDcgQEAKIAkJCQkxNEFEOTExNzFEQ0E5N0ZEMDAxNEY5
RkUgLyogRXZhbENvZGVCbG9jay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDczNDFFMjFEQzJD
RTk2MDBBQTI5QkEgLyogRXZhbEV4ZWN1dGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTU0
OTgyMDMxODkxRDBCMDAwODFFNUI4IC8qIEV2ZW50TG9vcC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk3OTgwQzE2QzFFM0E5NDBFMDBCNzE2MTUgLyogREZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNldC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTFDMEZGRjFCMTk0RkQxMDBCNTNGQ0EgLyogRXhjZXB0
aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFODBDMTlCMUQ3NzZBOTgwMDg1MTBDMCAvKiBF
eGNlcHRpb25FdmVudExvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMTJERTBGMTk3
OUQ1RkQwMDA2RkY0RSAvKiBFeGNlcHRpb25GdXp6LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9u
IDIxMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNzI1LDYgKzI3MjUsNyBAQCB2b2lkIENvZGVCbG9jazo6ZGV0
ZXJtaW5lTGl2ZW5lc3MoY29uc3QgCiAgICAgLy8gR0Mgd2Ugc3RpbGwgaGF2ZSBub3QgcHJvdmVk
IGxpdmVuZXNzLCB0aGVuIHRoaXMgY29kZSBibG9jayBpcyB0b2FzdC4KICAgICBib29sIGFsbEFy
ZUxpdmVTb0ZhciA9IHRydWU7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRmZ0NvbW1v
bi0+d2Vha1JlZmVyZW5jZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgQVNTRVJUKCFqc0R5bmFt
aWNDYXN0PENvZGVCbG9jayo+KGRmZ0NvbW1vbi0+d2Vha1JlZmVyZW5jZXNbaV0uZ2V0KCkpKTsK
ICAgICAgICAgaWYgKCFIZWFwOjppc01hcmtlZENvbmN1cnJlbnRseShkZmdDb21tb24tPndlYWtS
ZWZlcmVuY2VzW2ldLmdldCgpKSkgewogICAgICAgICAgICAgYWxsQXJlTGl2ZVNvRmFyID0gZmFs
c2U7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuY3BwCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjYsNjQgKzI2LDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU3RydWN0
dXJlU2V0LmgiCiAKLSNpbmNsdWRlICJERkdBYnN0cmFjdFZhbHVlLmgiCiAjaW5jbHVkZSAiVHJh
Y2tlZFJlZmVyZW5jZXMuaCIKICNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewogCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KLXZvaWQgU3RydWN0dXJlU2V0Ojpm
aWx0ZXIoY29uc3QgREZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcikKLXsKLSAgICBn
ZW5lcmljRmlsdGVyKFsmXSAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIC0+IGJvb2wgeyByZXR1cm4g
b3RoZXIuY29udGFpbnMoc3RydWN0dXJlKTsgfSk7Ci19Ci0KLXZvaWQgU3RydWN0dXJlU2V0Ojpm
aWx0ZXIoU3BlY3VsYXRlZFR5cGUgdHlwZSkKLXsKLSAgICBnZW5lcmljRmlsdGVyKAotICAgICAg
ICBbJl0gKFN0cnVjdHVyZSogc3RydWN0dXJlKSAtPiBib29sIHsKLSAgICAgICAgICAgIHJldHVy
biB0eXBlICYgc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKHN0cnVjdHVyZSk7Ci0gICAgICAgIH0p
OwotfQotCi12b2lkIFN0cnVjdHVyZVNldDo6ZmlsdGVyQXJyYXlNb2RlcyhBcnJheU1vZGVzIGFy
cmF5TW9kZXMpCi17Ci0gICAgZ2VuZXJpY0ZpbHRlcigKLSAgICAgICAgWyZdIChTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkgLT4gYm9vbCB7Ci0gICAgICAgICAgICByZXR1cm4gYXJyYXlNb2RlcyAmIGFy
cmF5TW9kZUZyb21TdHJ1Y3R1cmUoc3RydWN0dXJlKTsKLSAgICAgICAgfSk7Ci19Ci0KLXZvaWQg
U3RydWN0dXJlU2V0OjpmaWx0ZXIoY29uc3QgREZHOjpBYnN0cmFjdFZhbHVlJiBvdGhlcikKLXsK
LSAgICBmaWx0ZXIob3RoZXIubV9zdHJ1Y3R1cmUpOwotICAgIGZpbHRlcihvdGhlci5tX3R5cGUp
OwotICAgIGZpbHRlckFycmF5TW9kZXMob3RoZXIubV9hcnJheU1vZGVzKTsKLX0KLQotI2VuZGlm
IC8vIEVOQUJMRShERkdfSklUKQotCi1TcGVjdWxhdGVkVHlwZSBTdHJ1Y3R1cmVTZXQ6OnNwZWN1
bGF0aW9uRnJvbVN0cnVjdHVyZXMoKSBjb25zdAotewotICAgIFNwZWN1bGF0ZWRUeXBlIHJlc3Vs
dCA9IFNwZWNOb25lOwotICAgIGZvckVhY2goCi0gICAgICAgIFsmXSAoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpIHsKLSAgICAgICAgICAgIG1lcmdlU3BlY3VsYXRpb24ocmVzdWx0LCBzcGVjdWxhdGlv
bkZyb21TdHJ1Y3R1cmUoc3RydWN0dXJlKSk7Ci0gICAgICAgIH0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLUFycmF5TW9kZXMgU3RydWN0dXJlU2V0OjphcnJheU1vZGVzRnJvbVN0cnVjdHVy
ZXMoKSBjb25zdAotewotICAgIEFycmF5TW9kZXMgcmVzdWx0ID0gMDsKLSAgICBmb3JFYWNoKAot
ICAgICAgICBbJl0gKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7Ci0gICAgICAgICAgICBtZXJnZUFy
cmF5TW9kZXMocmVzdWx0LCBhc0FycmF5TW9kZXMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkp
OwotICAgICAgICB9KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiB2b2lkIFN0cnVjdHVyZVNl
dDo6ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkg
Y29uc3QKIHsKICAgICBDb21tYVByaW50ZXIgY29tbWE7CkBAIC05NywxMyArNDQsNSBAQCB2b2lk
IFN0cnVjdHVyZVNldDo6ZHVtcChQcmludFN0cmVhbSYgb3V0CiAgICAgZHVtcEluQ29udGV4dChv
dXQsIG51bGxwdHIpOwogfQogCi12b2lkIFN0cnVjdHVyZVNldDo6dmFsaWRhdGVSZWZlcmVuY2Vz
KGNvbnN0IFRyYWNrZWRSZWZlcmVuY2VzJiB0cmFja2VkUmVmZXJlbmNlcykgY29uc3QKLXsKLSAg
ICBmb3JFYWNoKAotICAgICAgICBbJl0gKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7Ci0gICAgICAg
ICAgICB0cmFja2VkUmVmZXJlbmNlcy5jaGVjayhzdHJ1Y3R1cmUpOwotICAgICAgICB9KTsKLX0K
LQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU2V0LmgJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUs
MTEgKzM1LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIFRyYWNrZWRSZWZlcmVuY2VzOwog
Ci1uYW1lc3BhY2UgREZHIHsKLWNsYXNzIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU7Ci1zdHJ1Y3Qg
QWJzdHJhY3RWYWx1ZTsKLX0KLQogY2xhc3MgU3RydWN0dXJlU2V0IDogcHVibGljIFRpbnlQdHJT
ZXQ8U3RydWN0dXJlKj4gewogcHVibGljOgogICAgIC8vIEkgcmVhbGx5IHdhbnQgdG8gZG8gdGhp
czoKQEAgLTY2LDIwICs2MSw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG9ubHlFbnRyeSgp
OwogICAgIH0KICAgICAKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICB2b2lkIGZpbHRlcihjb25z
dCBERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWUmKTsKLSAgICB2b2lkIGZpbHRlcihTcGVjdWxh
dGVkVHlwZSk7Ci0gICAgdm9pZCBmaWx0ZXJBcnJheU1vZGVzKEFycmF5TW9kZXMpOwotICAgIHZv
aWQgZmlsdGVyKGNvbnN0IERGRzo6QWJzdHJhY3RWYWx1ZSYpOwotI2VuZGlmIC8vIEVOQUJMRShE
RkdfSklUKQotICAgIAotICAgIFNwZWN1bGF0ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbVN0cnVjdHVy
ZXMoKSBjb25zdDsKLSAgICBBcnJheU1vZGVzIGFycmF5TW9kZXNGcm9tU3RydWN0dXJlcygpIGNv
bnN0OwotICAgIAogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250
ZXh0KikgY29uc3Q7CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7Ci0gICAgCi0g
ICAgdm9pZCB2YWxpZGF0ZVJlZmVyZW5jZXMoY29uc3QgVHJhY2tlZFJlZmVyZW5jZXMmKSBjb25z
dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgJKHJldmlzaW9uIDIxMTIyOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogICAgIHZvaWQgZHVtcChQ
cmludFN0cmVhbSYgb3V0KTsKICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIEZp
bHRyYXRpb25SZXN1bHQgZmlsdGVyKFQgbm9kZSwgY29uc3QgU3RydWN0dXJlU2V0JiBzZXQsIFNw
ZWN1bGF0ZWRUeXBlIGFkbWl0dGVkVHlwZXMgPSBTcGVjTm9uZSkKKyAgICBGaWx0cmF0aW9uUmVz
dWx0IGZpbHRlcihUIG5vZGUsIGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIHNldCwgU3Bl
Y3VsYXRlZFR5cGUgYWRtaXR0ZWRUeXBlcyA9IFNwZWNOb25lKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGZpbHRlcihmb3JOb2RlKG5vZGUpLCBzZXQsIGFkbWl0dGVkVHlwZXMpOwogICAgIH0KQEAg
LTE0MSw3ICsxNDEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBmaWx0ZXJDbGFzc0luZm8o
Zm9yTm9kZShub2RlKSwgY2xhc3NJbmZvKTsKICAgICB9CiAKLSAgICBGaWx0cmF0aW9uUmVzdWx0
IGZpbHRlcihBYnN0cmFjdFZhbHVlJiwgY29uc3QgU3RydWN0dXJlU2V0JiwgU3BlY3VsYXRlZFR5
cGUgYWRtaXR0ZWRUeXBlcyA9IFNwZWNOb25lKTsKKyAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRl
cihBYnN0cmFjdFZhbHVlJiwgY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYsIFNwZWN1bGF0
ZWRUeXBlIGFkbWl0dGVkVHlwZXMgPSBTcGVjTm9uZSk7CiAgICAgRmlsdHJhdGlvblJlc3VsdCBm
aWx0ZXJBcnJheU1vZGVzKEFic3RyYWN0VmFsdWUmLCBBcnJheU1vZGVzKTsKICAgICBGaWx0cmF0
aW9uUmVzdWx0IGZpbHRlcihBYnN0cmFjdFZhbHVlJiwgU3BlY3VsYXRlZFR5cGUpOwogICAgIEZp
bHRyYXRpb25SZXN1bHQgZmlsdGVyQnlWYWx1ZShBYnN0cmFjdFZhbHVlJiwgRnJvemVuVmFsdWUp
OwpAQCAtMTU2LDcgKzE1Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmb3JBbGxWYWx1ZXModW5z
aWduZWQgaW5kZXhJbkJsb2NrLCBGdW5jdG9yJik7CiAgICAgCiAgICAgdm9pZCBjbG9iYmVyU3Ry
dWN0dXJlcyh1bnNpZ25lZCBpbmRleEluQmxvY2spOwotICAgIHZvaWQgb2JzZXJ2ZVRyYW5zaXRp
b24odW5zaWduZWQgaW5kZXhJbkJsb2NrLCBTdHJ1Y3R1cmUqIGZyb20sIFN0cnVjdHVyZSogdG8p
OworICAgIHZvaWQgb2JzZXJ2ZVRyYW5zaXRpb24odW5zaWduZWQgaW5kZXhJbkJsb2NrLCBSZWdp
c3RlcmVkU3RydWN0dXJlIGZyb20sIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgdG8pOwogICAgIHZvaWQg
b2JzZXJ2ZVRyYW5zaXRpb25zKHVuc2lnbmVkIGluZGV4SW5CbG9jaywgY29uc3QgVHJhbnNpdGlv
blZlY3RvciYpOwogICAgIHZvaWQgc2V0RGlkQ2xvYmJlcigpOwogICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaAkocmV2aXNpb24gMjExMjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw3
ICs3Myw3IEBAIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjoKICAgICBp
ZiAoaXNDZWxsU3BlY3VsYXRpb24odmFsdWUubV90eXBlKSAmJiAhdmFsdWUubV9zdHJ1Y3R1cmUu
aXNUb3AoKSkgewogICAgICAgICBib29sIGFsbFRydWUgPSB0cnVlOwogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSB2YWx1ZS5tX3N0cnVjdHVyZS5zaXplKCk7IGktLTspIHsKLSAgICAgICAgICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gdmFsdWUubV9zdHJ1Y3R1cmVbaV07CisgICAgICAgICAg
ICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IHZhbHVlLm1fc3RydWN0dXJlW2ldOwog
ICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+bWFzcXVlcmFkZXNBc1VuZGVmaW5lZChtX2NvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpCiAgICAgICAgICAg
ICAgICAgfHwgc3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBTdHJpbmdUeXBlKSB7CiAg
ICAgICAgICAgICAgICAgYWxsVHJ1ZSA9IGZhbHNlOwpAQCAtMTUyLDcgKzE1Miw3IEBAIGlubGlu
ZSBib29sIGlzVG9UaGlzQW5JZGVudGl0eShib29sIGlzU3QKIAogICAgIGlmICgoaXNTdHJpY3RN
b2RlIHx8ICh2YWx1ZUZvck5vZGUubV90eXBlICYmICEodmFsdWVGb3JOb2RlLm1fdHlwZSAmIH5T
cGVjT2JqZWN0KSkpICYmIHZhbHVlRm9yTm9kZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKSB7CiAg
ICAgICAgIGJvb2wgb3ZlcnJpZGVzVG9UaGlzID0gZmFsc2U7Ci0gICAgICAgIHZhbHVlRm9yTm9k
ZS5tX3N0cnVjdHVyZS5mb3JFYWNoKFsmXShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgeworICAgICAg
ICB2YWx1ZUZvck5vZGUubV9zdHJ1Y3R1cmUuZm9yRWFjaChbJl0oUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBzdHJ1Y3R1cmUpIHsKICAgICAgICAgICAgIFR5cGVJbmZvIHR5cGUgPSBzdHJ1Y3R1cmUtPnR5
cGVJbmZvKCk7CiAgICAgICAgICAgICBBU1NFUlQodHlwZS5pc09iamVjdCgpIHx8IHR5cGUudHlw
ZSgpID09IFN0cmluZ1R5cGUgfHwgdHlwZS50eXBlKCkgPT0gU3ltYm9sVHlwZSk7CiAgICAgICAg
ICAgICBpZiAoIWlzU3RyaWN0TW9kZSkKQEAgLTE2NTYsMTAgKzE2NTYsMTAgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogCiAgICAgICAgIC8vIEZJWE1FOiBXZSBj
b3VsZCBkbyBiZXR0ZXIgaGVyZSBpZiB3ZSBwcm92ZSB0aGF0IHRoZQogICAgICAgICAvLyBpbmNv
bWluZyB2YWx1ZSBoYXMgb25seSBhIHNpbmdsZSBzdHJ1Y3R1cmUuCi0gICAgICAgIFN0cnVjdHVy
ZVNldCBzdHJ1Y3R1cmVTZXQ7Ci0gICAgICAgIHN0cnVjdHVyZVNldC5hZGQoZ2xvYmFsT2JqZWN0
LT5vcmlnaW5hbEFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlKEFycmF5V2l0aEludDMyKSk7
Ci0gICAgICAgIHN0cnVjdHVyZVNldC5hZGQoZ2xvYmFsT2JqZWN0LT5vcmlnaW5hbEFycmF5U3Ry
dWN0dXJlRm9ySW5kZXhpbmdUeXBlKEFycmF5V2l0aENvbnRpZ3VvdXMpKTsKLSAgICAgICAgc3Ry
dWN0dXJlU2V0LmFkZChnbG9iYWxPYmplY3QtPm9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVGb3JJbmRl
eGluZ1R5cGUoQXJyYXlXaXRoRG91YmxlKSk7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVT
ZXQgc3RydWN0dXJlU2V0OworICAgICAgICBzdHJ1Y3R1cmVTZXQuYWRkKG1fZ3JhcGgucmVnaXN0
ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5vcmlnaW5hbEFycmF5U3RydWN0dXJlRm9ySW5kZXhp
bmdUeXBlKEFycmF5V2l0aEludDMyKSkpOworICAgICAgICBzdHJ1Y3R1cmVTZXQuYWRkKG1fZ3Jh
cGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5vcmlnaW5hbEFycmF5U3RydWN0dXJl
Rm9ySW5kZXhpbmdUeXBlKEFycmF5V2l0aENvbnRpZ3VvdXMpKSk7CisgICAgICAgIHN0cnVjdHVy
ZVNldC5hZGQobV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm9yaWdpbmFs
QXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGUoQXJyYXlXaXRoRG91YmxlKSkpOwogCiAgICAg
ICAgIGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIHN0cnVjdHVyZVNldCk7CiAgICAgICAgIGJy
ZWFrOwpAQCAtMTg1Niw3ICsxODU2LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeQogICAgICAgICAgICAgLy8gc3RydWN0dXJlLgogICAgICAgICAgICAgZmlsdGVy
KAogICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxkMSgpLAotICAgICAgICAgICAgICAgIG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnN0cmluZ09iamVjdFN0
cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnN0cmluZ09iamVj
dFN0cnVjdHVyZSgpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTdHJpbmdP
clN0cmluZ09iamVjdFVzZToKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTk2Myw3ICsxOTYzLDcg
QEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgIH0KICAgICAg
ICAgCiAgICAgY2FzZSBOZXdPYmplY3Q6Ci0gICAgICAgIEFTU0VSVChub2RlLT5zdHJ1Y3R1cmUo
KSk7CisgICAgICAgIEFTU0VSVCghIW5vZGUtPnN0cnVjdHVyZSgpLmdldCgpKTsKICAgICAgICAg
Zm9yTm9kZShub2RlKS5zZXQobV9ncmFwaCwgbm9kZS0+c3RydWN0dXJlKCkpOwogICAgICAgICBi
cmVhazsKIApAQCAtMjEyMSw3ICsyMTIxLDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG51bGxwdHI7CiAgICAgICAgICAgICBib29sIG9rID0gdHJ1ZTsKICAgICAgICAgICAgIGZvck5v
ZGUobm9kZS0+Y2hpbGQxKCkpLm1fc3RydWN0dXJlLmZvckVhY2goCi0gICAgICAgICAgICAgICAg
WyZdIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgeworICAgICAgICAgICAgICAgIFsmXSAoUmVnaXN0
ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFnbG9i
YWxPYmplY3QpCiAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxPYmplY3QgPSBzdHJ1Y3R1
cmUtPmdsb2JhbE9iamVjdCgpOwogICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChnbG9iYWxP
YmplY3QgIT0gc3RydWN0dXJlLT5nbG9iYWxPYmplY3QoKSkKQEAgLTIxODQsNyArMjE4NCw3IEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgaWYgKHZh
bHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkKICAgICAgICAgICAgICYmIChub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gQ2VsbFVzZSB8fCAhKHZhbHVlLm1fdHlwZSAmIH5TcGVjQ2VsbCkpKSB7
CiAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVy
cygpW25vZGUtPmlkZW50aWZpZXJOdW1iZXIoKV07Ci0gICAgICAgICAgICBHZXRCeUlkU3RhdHVz
IHN0YXR1cyA9IEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IodmFsdWUubV9zdHJ1Y3R1cmUuc2V0
KCksIHVpZCk7CisgICAgICAgICAgICBHZXRCeUlkU3RhdHVzIHN0YXR1cyA9IEdldEJ5SWRTdGF0
dXM6OmNvbXB1dGVGb3IodmFsdWUubV9zdHJ1Y3R1cmUudG9TdHJ1Y3R1cmVTZXQoKSwgdWlkKTsK
ICAgICAgICAgICAgIGlmIChzdGF0dXMuaXNTaW1wbGUoKSkgewogICAgICAgICAgICAgICAgIC8v
IEZpZ3VyZSBvdXQgd2hhdCB0aGUgcmVzdWx0IGlzIGdvaW5nIHRvIGJlIC0gaXMgaXQgVE9QLCBh
IGNvbnN0YW50LCBvciBtYXliZQogICAgICAgICAgICAgICAgIC8vIHNvbWV0aGluZyBtb3JlIHN1
YnRsZT8KQEAgLTIyMzgsNyArMjIzOCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHkKICAgICBjYXNlIENoZWNrU3RydWN0dXJlOiB7CiAgICAgICAgIEFic3RyYWN0
VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CiAKLSAgICAgICAgU3RydWN0
dXJlU2V0JiBzZXQgPSBub2RlLT5zdHJ1Y3R1cmVTZXQoKTsKKyAgICAgICAgY29uc3QgUmVnaXN0
ZXJlZFN0cnVjdHVyZVNldCYgc2V0ID0gbm9kZS0+c3RydWN0dXJlU2V0KCk7CiAgICAgICAgIAog
ICAgICAgICAvLyBJdCdzIGludGVyZXN0aW5nIHRoYXQgd2UgY291bGQgaGF2ZSBwcm92ZW4gdGhh
dCB0aGUgb2JqZWN0IGhhcyBhIGxhcmdlciBzdHJ1Y3R1cmUgc2V0CiAgICAgICAgIC8vIHRoYXQg
aW5jbHVkZXMgdGhlIHNldCB3ZSdyZSB0ZXN0aW5nLiBJbiB0aGF0IGNhc2Ugd2UgY291bGQgbWFr
ZSB0aGUgc3RydWN0dXJlIGNoZWNrCkBAIC0yMjcwLDExICsyMjcwLDExIEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjk4OAogICAgICAgICAKICAgICAgICAgQWJzdHJh
Y3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgU3RydWN0
dXJlU2V0JiBzZXQgPSBub2RlLT5zdHJ1Y3R1cmVTZXQoKTsKKyAgICAgICAgY29uc3QgUmVnaXN0
ZXJlZFN0cnVjdHVyZVNldCYgc2V0ID0gbm9kZS0+c3RydWN0dXJlU2V0KCk7CiAgICAgICAgIAog
ICAgICAgICBpZiAodmFsdWUudmFsdWUoKSkgewogICAgICAgICAgICAgaWYgKFN0cnVjdHVyZSog
c3RydWN0dXJlID0ganNEeW5hbWljQ2FzdDxTdHJ1Y3R1cmUqPih2YWx1ZS52YWx1ZSgpKSkgewot
ICAgICAgICAgICAgICAgIGlmIChzZXQuY29udGFpbnMoc3RydWN0dXJlKSkgeworICAgICAgICAg
ICAgICAgIGlmIChzZXQuY29udGFpbnMobV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1
cmUpKSkgewogICAgICAgICAgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRy
dWUpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CkBAIC0y
Mjg5LDcgKzIyODksNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
CiAgICAgICAgICAgICAgICAgbm9kZSwKICAgICAgICAgICAgICAgICBbJl0gKE5vZGUqIGluY29t
aW5nKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGlu
Y29taW5nLT5keW5hbWljQ2FzdENvbnN0YW50PFN0cnVjdHVyZSo+KCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChzZXQuY29udGFpbnMoc3RydWN0dXJlKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChzZXQuY29udGFpbnMobV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1
Y3R1cmUpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgYWxsR29vZCA9IGZhbHNlOwpAQCAtMjMw
MCw4ICsyMzAwLDggQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgaWYgKFN0cnVj
dHVyZSogc3RydWN0dXJlID0gc2V0Lm9ubHlTdHJ1Y3R1cmUoKSkgewotICAgICAgICAgICAgZmls
dGVyQnlWYWx1ZShub2RlLT5jaGlsZDEoKSwgKm1fZ3JhcGguZnJlZXplKHN0cnVjdHVyZSkpOwor
ICAgICAgICBpZiAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBzZXQub25seVN0cnVj
dHVyZSgpKSB7CisgICAgICAgICAgICBmaWx0ZXJCeVZhbHVlKG5vZGUtPmNoaWxkMSgpLCAqbV9n
cmFwaC5mcmVlemUoc3RydWN0dXJlLmdldCgpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICAKQEAgLTI0MzIsNyArMjQzMiw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICB9CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJl
OiB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEo
KSk7Ci0gICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc1N1YnNldE9mKFN0cnVjdHVyZVNl
dChub2RlLT5zdHJ1Y3R1cmUoKSkpKQorICAgICAgICBpZiAodmFsdWUubV9zdHJ1Y3R1cmUuaXNT
dWJzZXRPZihSZWdpc3RlcmVkU3RydWN0dXJlU2V0KG5vZGUtPnN0cnVjdHVyZSgpKSkpCiAgICAg
ICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRydWUpOwogICAgICAgICBjbG9iYmVy
U3RydWN0dXJlcyhjbG9iYmVyTGltaXQpOwogICAgICAgICAKQEAgLTI1NDYsMTAgKzI1NDYsMTAg
QEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW25vZGUtPm11bHRpR2V0
QnlPZmZzZXREYXRhKCkuaWRlbnRpZmllck51bWJlcl07CiAKICAgICAgICAgQWJzdHJhY3RWYWx1
ZSBiYXNlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgIFN0cnVjdHVyZVNldCBi
YXNlU2V0OworICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0IGJhc2VTZXQ7CiAgICAgICAg
IEFic3RyYWN0VmFsdWUgcmVzdWx0OwogICAgICAgICBmb3IgKGNvbnN0IE11bHRpR2V0QnlPZmZz
ZXRDYXNlJiBnZXRDYXNlIDogbm9kZS0+bXVsdGlHZXRCeU9mZnNldERhdGEoKS5jYXNlcykgewot
ICAgICAgICAgICAgU3RydWN0dXJlU2V0IHNldCA9IGdldENhc2Uuc2V0KCk7CisgICAgICAgICAg
ICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0IHNldCA9IGdldENhc2Uuc2V0KCk7CiAgICAgICAgICAg
ICBzZXQuZmlsdGVyKGJhc2UpOwogICAgICAgICAgICAgaWYgKHNldC5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CkBAIC0yNTkxLDcgKzI1OTEsNyBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIE11
bHRpUHV0QnlPZmZzZXQ6IHsKLSAgICAgICAgU3RydWN0dXJlU2V0IG5ld1NldDsKKyAgICAgICAg
UmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBuZXdTZXQ7CiAgICAgICAgIFRyYW5zaXRpb25WZWN0b3Ig
dHJhbnNpdGlvbnM7CiAgICAgICAgIAogICAgICAgICAvLyBPcmRpbmFyaWx5IHlvdSBoYXZlIHRv
IGJlIGNhcmVmdWwgd2l0aCBjYWxsaW5nIHNldEZvdW5kQ29uc3RhbnRzKCkKQEAgLTI2MDQsNyAr
MjYwNCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAg
ICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG5vZGUtPm11bHRpUHV0QnlPZmZzZXREYXRh
KCkudmFyaWFudHMuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICBjb25zdCBQdXRCeUlkVmFy
aWFudCYgdmFyaWFudCA9IG5vZGUtPm11bHRpUHV0QnlPZmZzZXREYXRhKCkudmFyaWFudHNbaV07
Ci0gICAgICAgICAgICBTdHJ1Y3R1cmVTZXQgdGhpc1NldCA9IHZhcmlhbnQub2xkU3RydWN0dXJl
KCk7CisgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0IHRoaXNTZXQgPSAqbV9ncmFw
aC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSk7CiAgICAgICAgICAgICB0
aGlzU2V0LmZpbHRlcihiYXNlKTsKICAgICAgICAgICAgIGlmICh0aGlzU2V0LmlzRW1wdHkoKSkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTI2MTQsMTEgKzI2MTQsMTIgQEAgYm9vbCBB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgcmVzdWx0aW5n
VmFsdWUubWVyZ2UodGhpc1ZhbHVlKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKHZh
cmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHRoaXNTZXQub25seVN0cnVjdHVyZSgpICE9IHZhcmlhbnQubmV3U3RydWN0dXJl
KCkpIHsKKyAgICAgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG5ld1N0cnVjdHVyZSA9
IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7CisgICAg
ICAgICAgICAgICAgaWYgKHRoaXNTZXQub25seVN0cnVjdHVyZSgpICE9IG5ld1N0cnVjdHVyZSkg
ewogICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9ucy5hcHBlbmQoCi0gICAgICAgICAgICAg
ICAgICAgICAgICBUcmFuc2l0aW9uKHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigp
LCB2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBUcmFu
c2l0aW9uKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JU
cmFuc2l0aW9uKCkpLCBuZXdTdHJ1Y3R1cmUpKTsKICAgICAgICAgICAgICAgICB9IC8vIGVsc2Ug
dGhpcyBpcyByZWFsbHkgYSByZXBsYWNlLgotICAgICAgICAgICAgICAgIG5ld1NldC5hZGQodmFy
aWFudC5uZXdTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICAgICAgbmV3U2V0LmFkZChuZXdTdHJ1
Y3R1cmUpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBBU1NFUlQodmFy
aWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlJlcGxhY2UpOwogICAgICAgICAgICAgICAg
IG5ld1NldC5tZXJnZSh0aGlzU2V0KTsKQEAgLTI3MDUsMjUgKzI3MDYsMjUgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBpZiAodmFsdWUubV9zdHJ1
Y3R1cmUuaXNGaW5pdGUoKSkgewogICAgICAgICAgICAgUHV0QnlJZFN0YXR1cyBzdGF0dXMgPSBQ
dXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyksCi0gICAgICAgICAgICAgICAgdmFsdWUu
bV9zdHJ1Y3R1cmUuc2V0KCksCisgICAgICAgICAgICAgICAgdmFsdWUubV9zdHJ1Y3R1cmUudG9T
dHJ1Y3R1cmVTZXQoKSwKICAgICAgICAgICAgICAgICBtX2dyYXBoLmlkZW50aWZpZXJzKClbbm9k
ZS0+aWRlbnRpZmllck51bWJlcigpXSwKICAgICAgICAgICAgICAgICBub2RlLT5vcCgpID09IFB1
dEJ5SWREaXJlY3QpOwogCiAgICAgICAgICAgICBpZiAoc3RhdHVzLmlzU2ltcGxlKCkpIHsKLSAg
ICAgICAgICAgICAgICBTdHJ1Y3R1cmVTZXQgbmV3U2V0OworICAgICAgICAgICAgICAgIFJlZ2lz
dGVyZWRTdHJ1Y3R1cmVTZXQgbmV3U2V0OwogICAgICAgICAgICAgICAgIFRyYW5zaXRpb25WZWN0
b3IgdHJhbnNpdGlvbnM7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gc3RhdHVzLm51bVZhcmlhbnRzKCk7IGktLTspIHsKICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQgPSBzdGF0dXNbaV07CiAgICAgICAg
ICAgICAgICAgICAgIGlmICh2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6VHJhbnNp
dGlvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBuZXdT
dHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQubmV3U3RydWN0dXJl
KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbnMuYXBwZW5kKAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRyYW5zaXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLCB2YXJpYW50Lm5l
d1N0cnVjdHVyZSgpKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVy
U3RydWN0dXJlKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgbmV3U2V0LmFkZCh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0cnVj
dHVyZUZvclRyYW5zaXRpb24oKSksIG5ld1N0cnVjdHVyZSkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgbmV3U2V0LmFkZChuZXdTdHJ1Y3R1cmUpOwogICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQua2luZCgpID09IFB1
dEJ5SWRWYXJpYW50OjpSZXBsYWNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NldC5t
ZXJnZSh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5l
d1NldC5tZXJnZSgqbV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5vbGRTdHJ1Y3R1cmUo
KSkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIApAQCAtMzA1OSw3ICszMDYwLDcgQEAgdm9pZCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBYnN0cmFjdFN0YXRlVHlwZT4KIHZv
aWQgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46Om9ic2VydmVUcmFuc2l0
aW9uKAotICAgIHVuc2lnbmVkIGNsb2JiZXJMaW1pdCwgU3RydWN0dXJlKiBmcm9tLCBTdHJ1Y3R1
cmUqIHRvKQorICAgIHVuc2lnbmVkIGNsb2JiZXJMaW1pdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBm
cm9tLCBSZWdpc3RlcmVkU3RydWN0dXJlIHRvKQogewogICAgIEFic3RyYWN0VmFsdWU6OlRyYW5z
aXRpb25PYnNlcnZlciB0cmFuc2l0aW9uT2JzZXJ2ZXIoZnJvbSwgdG8pOwogICAgIGZvckFsbFZh
bHVlcyhjbG9iYmVyTGltaXQsIHRyYW5zaXRpb25PYnNlcnZlcik7CkBAIC0zMTMyLDcgKzMxMzMs
NyBAQCB2b2lkIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIEFic3RyYWN0U3RhdGVUeXBlPgogRmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZmlsdGVyKAotICAgIEFic3RyYWN0VmFsdWUm
IHZhbHVlLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCwgU3BlY3VsYXRlZFR5cGUgYWRtaXR0ZWRU
eXBlcykKKyAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSwgY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVy
ZVNldCYgc2V0LCBTcGVjdWxhdGVkVHlwZSBhZG1pdHRlZFR5cGVzKQogewogICAgIGlmICh2YWx1
ZS5maWx0ZXIobV9ncmFwaCwgc2V0LCBhZG1pdHRlZFR5cGVzKSA9PSBGaWx0cmF0aW9uT0spCiAg
ICAgICAgIHJldHVybiBGaWx0cmF0aW9uT0s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUyLDggKzUyLDEwIEBAIHZvaWQgQWJzdHJhY3RWYWx1ZTo6c2V0KEdyYXBoJiBncmFwaCwg
Y28KIHsKICAgICBpZiAoISF2YWx1ZSAmJiB2YWx1ZS52YWx1ZSgpLmlzQ2VsbCgpKSB7CiAgICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdmFsdWUuc3RydWN0dXJlKCk7Ci0gICAgICAgIGlm
IChncmFwaC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpID09IFN0cnVjdHVyZVJlZ2lzdGVy
ZWRBbmRXYXRjaGVkKSB7Ci0gICAgICAgICAgICBtX3N0cnVjdHVyZSA9IHN0cnVjdHVyZTsKKyAg
ICAgICAgU3RydWN0dXJlUmVnaXN0cmF0aW9uUmVzdWx0IHJlc3VsdDsKKyAgICAgICAgUmVnaXN0
ZXJlZFN0cnVjdHVyZSBSZWdpc3RlcmVkU3RydWN0dXJlID0gZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1
cmUoc3RydWN0dXJlLCByZXN1bHQpOworICAgICAgICBpZiAocmVzdWx0ID09IFN0cnVjdHVyZVJl
Z2lzdGVyZWRBbmRXYXRjaGVkKSB7CisgICAgICAgICAgICBtX3N0cnVjdHVyZSA9IFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmU7CiAgICAgICAgICAgICBpZiAoY2xvYmJlclN0YXRlID09IFN0cnVjdHVyZXNB
cmVDbG9iYmVyZWQpIHsKICAgICAgICAgICAgICAgICBtX2FycmF5TW9kZXMgPSBBTExfQVJSQVlf
TU9ERVM7CiAgICAgICAgICAgICAgICAgbV9zdHJ1Y3R1cmUuY2xvYmJlcigpOwpAQCAtNzcsMTgg
Kzc5LDIzIEBAIHZvaWQgQWJzdHJhY3RWYWx1ZTo6c2V0KEdyYXBoJiBncmFwaCwgY28KIAogdm9p
ZCBBYnN0cmFjdFZhbHVlOjpzZXQoR3JhcGgmIGdyYXBoLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
IHsKKyAgICBzZXQoZ3JhcGgsIGdyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkpOwor
fQorCit2b2lkIEFic3RyYWN0VmFsdWU6OnNldChHcmFwaCYgZ3JhcGgsIFJlZ2lzdGVyZWRTdHJ1
Y3R1cmUgc3RydWN0dXJlKQorewogICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZSk7CiAgICAg
CiAgICAgbV9zdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmU7CiAgICAgbV9hcnJheU1vZGVzID0gYXNBcnJh
eU1vZGVzKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpOwotICAgIG1fdHlwZSA9IHNwZWN1bGF0
aW9uRnJvbVN0cnVjdHVyZShzdHJ1Y3R1cmUpOworICAgIG1fdHlwZSA9IHNwZWN1bGF0aW9uRnJv
bVN0cnVjdHVyZShzdHJ1Y3R1cmUuZ2V0KCkpOwogICAgIG1fdmFsdWUgPSBKU1ZhbHVlKCk7CiAg
ICAgCiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgIGFzc2VydElzUmVnaXN0ZXJlZChncmFw
aCk7CiB9CiAKLXZvaWQgQWJzdHJhY3RWYWx1ZTo6c2V0KEdyYXBoJiBncmFwaCwgY29uc3QgU3Ry
dWN0dXJlU2V0JiBzZXQpCit2b2lkIEFic3RyYWN0VmFsdWU6OnNldChHcmFwaCYgZ3JhcGgsIGNv
bnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIHNldCkKIHsKICAgICBtX3N0cnVjdHVyZSA9IHNl
dDsKICAgICBtX2FycmF5TW9kZXMgPSBzZXQuYXJyYXlNb2Rlc0Zyb21TdHJ1Y3R1cmVzKCk7CkBA
IC0xMDQsOSArMTExLDkgQEAgdm9pZCBBYnN0cmFjdFZhbHVlOjpzZXRUeXBlKEdyYXBoJiBncmFw
aAogICAgIFNwZWN1bGF0ZWRUeXBlIGNlbGxUeXBlID0gdHlwZSAmIFNwZWNDZWxsOwogICAgIGlm
IChjZWxsVHlwZSkgewogICAgICAgICBpZiAoIShjZWxsVHlwZSAmIH5TcGVjU3RyaW5nKSkKLSAg
ICAgICAgICAgIG1fc3RydWN0dXJlID0gZ3JhcGgubV92bS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCk7
CisgICAgICAgICAgICBtX3N0cnVjdHVyZSA9IGdyYXBoLnN0cmluZ1N0cnVjdHVyZTsKICAgICAg
ICAgZWxzZSBpZiAoaXNTeW1ib2xTcGVjdWxhdGlvbihjZWxsVHlwZSkpCi0gICAgICAgICAgICBt
X3N0cnVjdHVyZSA9IGdyYXBoLm1fdm0uc3ltYm9sU3RydWN0dXJlLmdldCgpOworICAgICAgICAg
ICAgbV9zdHJ1Y3R1cmUgPSBncmFwaC5zeW1ib2xTdHJ1Y3R1cmU7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIG1fc3RydWN0dXJlLm1ha2VUb3AoKTsKICAgICAgICAgbV9hcnJheU1vZGVzID0g
QUxMX0FSUkFZX01PREVTOwpAQCAtMjE3LDcgKzIyNCw3IEBAIGJvb2wgQWJzdHJhY3RWYWx1ZTo6
bWVyZ2VPU1JFbnRyeVZhbHVlKEcKICAgICBpZiAoaXNDbGVhcigpKSB7CiAgICAgICAgIEZyb3pl
blZhbHVlKiBmcm96ZW5WYWx1ZSA9IGdyYXBoLmZyZWV6ZSh2YWx1ZSk7CiAgICAgICAgIGlmIChm
cm96ZW5WYWx1ZS0+cG9pbnRzVG9IZWFwKCkpIHsKLSAgICAgICAgICAgIG1fc3RydWN0dXJlID0g
ZnJvemVuVmFsdWUtPnN0cnVjdHVyZSgpOworICAgICAgICAgICAgbV9zdHJ1Y3R1cmUgPSBncmFw
aC5yZWdpc3RlclN0cnVjdHVyZShmcm96ZW5WYWx1ZS0+c3RydWN0dXJlKCkpOwogICAgICAgICAg
ICAgbV9hcnJheU1vZGVzID0gYXNBcnJheU1vZGVzKGZyb3plblZhbHVlLT5zdHJ1Y3R1cmUoKS0+
aW5kZXhpbmdUeXBlKCkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV9zdHJ1Y3R1
cmUuY2xlYXIoKTsKQEAgLTIyOSwxMCArMjM2LDkgQEAgYm9vbCBBYnN0cmFjdFZhbHVlOjptZXJn
ZU9TUkVudHJ5VmFsdWUoRwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1lcmdlU3BlY3VsYXRpb24o
bV90eXBlLCBzcGVjdWxhdGlvbkZyb21WYWx1ZSh2YWx1ZSkpOwogICAgICAgICBpZiAoISF2YWx1
ZSAmJiB2YWx1ZS5pc0NlbGwoKSkgewotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSB2YWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCk7Ci0gICAgICAgICAgICBncmFwaC5yZWdpc3Rl
clN0cnVjdHVyZShzdHJ1Y3R1cmUpOworICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBz
dHJ1Y3R1cmUgPSBncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YWx1ZS5hc0NlbGwoKS0+c3RydWN0
dXJlKCkpOwogICAgICAgICAgICAgbWVyZ2VBcnJheU1vZGVzKG1fYXJyYXlNb2RlcywgYXNBcnJh
eU1vZGVzKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKTsKLSAgICAgICAgICAgIG1fc3RydWN0
dXJlLm1lcmdlKFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgIG1fc3RydWN0
dXJlLm1lcmdlKFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSk7CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKG1fdmFsdWUgIT0gdmFsdWUpCiAgICAgICAgICAgICBtX3ZhbHVlID0gSlNW
YWx1ZSgpOwpAQCAtMjU2LDcgKzI2Miw3IEBAIGJvb2wgQWJzdHJhY3RWYWx1ZTo6aXNUeXBlKEdy
YXBoJiBncmFwaCwKIH0KIAogRmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdFZhbHVlOjpmaWx0ZXIo
Ci0gICAgR3JhcGgmIGdyYXBoLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyLCBTcGVjdWxhdGVk
VHlwZSBhZG1pdHRlZFR5cGVzKQorICAgIEdyYXBoJiBncmFwaCwgY29uc3QgUmVnaXN0ZXJlZFN0
cnVjdHVyZVNldCYgb3RoZXIsIFNwZWN1bGF0ZWRUeXBlIGFkbWl0dGVkVHlwZXMpCiB7CiAgICAg
QVNTRVJUKCEoYWRtaXR0ZWRUeXBlcyAmIFNwZWNDZWxsKSk7CiAgICAgCkBAIC0yNzIsMTAgKzI3
OCwxMCBAQCBGaWx0cmF0aW9uUmVzdWx0IEFic3RyYWN0VmFsdWU6OmZpbHRlcigKICAgICBtX3N0
cnVjdHVyZS5maWx0ZXIob3RoZXIpOwogICAgIAogICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCBw
cmlvciB0byB0aGUgYWJvdmUgdHdvIHN0YXRlbWVudHMgd2UgaGFkIChGb28sIFRPUCksIHdoZXJl
Ci0gICAgLy8gRm9vIGlzIGEgU3BlY3VsYXRlZFR5cGUgdGhhdCBpcyBkaXNqb2ludCB3aXRoIHRo
ZSBwYXNzZWQgU3RydWN0dXJlU2V0LiBJbiB0aGF0CisgICAgLy8gRm9vIGlzIGEgU3BlY3VsYXRl
ZFR5cGUgdGhhdCBpcyBkaXNqb2ludCB3aXRoIHRoZSBwYXNzZWQgUmVnaXN0ZXJlZFN0cnVjdHVy
ZVNldC4gSW4gdGhhdAogICAgIC8vIGNhc2UsIHdlIHdpbGwgbm93IGhhdmUgKE5vbmUsIFtzb21l
U3RydWN0dXJlXSkuIEluIGdlbmVyYWwsIHdlIG5lZWQgdG8gbWFrZQogICAgIC8vIHN1cmUgdGhh
dCBuZXcgaW5mb3JtYXRpb24gZ2xlYW5lZCBmcm9tIHRoZSBTcGVjdWxhdGVkVHlwZSBuZWVkcyB0
byBiZSBmZWQgYmFjawotICAgIC8vIGludG8gdGhlIGluZm9ybWF0aW9uIGdsZWFuZWQgZnJvbSB0
aGUgU3RydWN0dXJlU2V0LgorICAgIC8vIGludG8gdGhlIGluZm9ybWF0aW9uIGdsZWFuZWQgZnJv
bSB0aGUgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldC4KICAgICBtX3N0cnVjdHVyZS5maWx0ZXIobV90
eXBlKTsKICAgICAKICAgICBmaWx0ZXJBcnJheU1vZGVzQnlUeXBlKCk7CkBAIC0yODMsNyArMjg5
LDcgQEAgRmlsdHJhdGlvblJlc3VsdCBBYnN0cmFjdFZhbHVlOjpmaWx0ZXIoCiAgICAgcmV0dXJu
IG5vcm1hbGl6ZUNsYXJpdHkoZ3JhcGgpOwogfQogCi1GaWx0cmF0aW9uUmVzdWx0IEFic3RyYWN0
VmFsdWU6OmNoYW5nZVN0cnVjdHVyZShHcmFwaCYgZ3JhcGgsIGNvbnN0IFN0cnVjdHVyZVNldCYg
b3RoZXIpCitGaWx0cmF0aW9uUmVzdWx0IEFic3RyYWN0VmFsdWU6OmNoYW5nZVN0cnVjdHVyZShH
cmFwaCYgZ3JhcGgsIGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIG90aGVyKQogewogICAg
IG1fdHlwZSAmPSBvdGhlci5zcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmVzKCk7CiAgICAgbV9hcnJh
eU1vZGVzID0gb3RoZXIuYXJyYXlNb2Rlc0Zyb21TdHJ1Y3R1cmVzKCk7CkBAIC0zNjEsMTAgKzM2
NywxMCBAQCBGaWx0cmF0aW9uUmVzdWx0IEFic3RyYWN0VmFsdWU6OmZpbHRlckJ5CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBBYnN0cmFjdFZhbHVlOjpjb250YWlucyhTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkgY29uc3QKK2Jvb2wgQWJzdHJhY3RWYWx1ZTo6Y29udGFpbnMoUmVnaXN0ZXJl
ZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvdWxkQmVUeXBlKHNw
ZWN1bGF0aW9uRnJvbVN0cnVjdHVyZShzdHJ1Y3R1cmUpKQotICAgICAgICAmJiAobV9hcnJheU1v
ZGVzICYgYXJyYXlNb2RlRnJvbVN0cnVjdHVyZShzdHJ1Y3R1cmUpKQorICAgIHJldHVybiBjb3Vs
ZEJlVHlwZShzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmUoc3RydWN0dXJlLmdldCgpKSkKKyAgICAg
ICAgJiYgKG1fYXJyYXlNb2RlcyAmIGFycmF5TW9kZUZyb21TdHJ1Y3R1cmUoc3RydWN0dXJlLmdl
dCgpKSkKICAgICAgICAgJiYgbV9zdHJ1Y3R1cmUuY29udGFpbnMoc3RydWN0dXJlKTsKIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgJKHJl
dmlzaW9uIDIxMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RW
YWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiUmVzdWx0
VHlwZS5oIgogI2luY2x1ZGUgIlNwZWN1bGF0ZWRUeXBlLmgiCiAjaW5jbHVkZSAiRHVtcENvbnRl
eHQuaCIKLSNpbmNsdWRlICJTdHJ1Y3R1cmVTZXQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAg
LTEyMCw3ICsxMTksNyBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgIHZhbHVlLm9i
c2VydmVJbnZhbGlkYXRpb25Qb2ludCgpOwogICAgIH0KICAgICAKLSAgICB2b2lkIG9ic2VydmVU
cmFuc2l0aW9uKFN0cnVjdHVyZSogZnJvbSwgU3RydWN0dXJlKiB0bykKKyAgICB2b2lkIG9ic2Vy
dmVUcmFuc2l0aW9uKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgZnJvbSwgUmVnaXN0ZXJlZFN0cnVjdHVy
ZSB0bykKICAgICB7CiAgICAgICAgIGlmIChtX3R5cGUgJiBTcGVjQ2VsbCkgewogICAgICAgICAg
ICAgbV9zdHJ1Y3R1cmUub2JzZXJ2ZVRyYW5zaXRpb24oZnJvbSwgdG8pOwpAQCAtMTMzLDcgKzEz
Miw3IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAKICAgICBjbGFzcyBUcmFuc2l0aW9u
T2JzZXJ2ZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAgVHJhbnNpdGlvbk9ic2VydmVyKFN0cnVj
dHVyZSogZnJvbSwgU3RydWN0dXJlKiB0bykKKyAgICAgICAgVHJhbnNpdGlvbk9ic2VydmVyKFJl
Z2lzdGVyZWRTdHJ1Y3R1cmUgZnJvbSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSB0bykKICAgICAgICAg
ICAgIDogbV9mcm9tKGZyb20pCiAgICAgICAgICAgICAsIG1fdG8odG8pCiAgICAgICAgIHsKQEAg
LTE0NCw4ICsxNDMsOCBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgICAgICB2YWx1
ZS5vYnNlcnZlVHJhbnNpdGlvbihtX2Zyb20sIG1fdG8pOwogICAgICAgICB9CiAgICAgcHJpdmF0
ZToKLSAgICAgICAgU3RydWN0dXJlKiBtX2Zyb207Ci0gICAgICAgIFN0cnVjdHVyZSogbV90bzsK
KyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBtX2Zyb207CisgICAgICAgIFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgbV90bzsKICAgICB9OwogICAgIAogICAgIGNsYXNzIFRyYW5zaXRpb25zT2JzZXJ2
ZXIgewpAQCAtMjA5LDcgKzIwOCw4IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAKICAg
ICB2b2lkIHNldChHcmFwaCYsIGNvbnN0IEZyb3plblZhbHVlJiwgU3RydWN0dXJlQ2xvYmJlclN0
YXRlKTsKICAgICB2b2lkIHNldChHcmFwaCYsIFN0cnVjdHVyZSopOwotICAgIHZvaWQgc2V0KEdy
YXBoJiwgY29uc3QgU3RydWN0dXJlU2V0Jik7CisgICAgdm9pZCBzZXQoR3JhcGgmLCBSZWdpc3Rl
cmVkU3RydWN0dXJlKTsKKyAgICB2b2lkIHNldChHcmFwaCYsIGNvbnN0IFJlZ2lzdGVyZWRTdHJ1
Y3R1cmVTZXQmKTsKICAgICAKICAgICAvLyBTZXQgdGhpcyB2YWx1ZSB0byByZXByZXNlbnQgdGhl
IGdpdmVuIHNldCBvZiB0eXBlcyBhcyBwcmVjaXNlbHkgYXMgcG9zc2libGUuCiAgICAgdm9pZCBz
ZXRUeXBlKEdyYXBoJiwgU3BlY3VsYXRlZFR5cGUpOwpAQCAtMzAxLDcgKzMwMSw3IEBAIHN0cnVj
dCBBYnN0cmFjdFZhbHVlIHsKICAgICAvLyBTcGVjQ2VsbC4gSGVuY2UsIGFmdGVyIHRoaXMgY2Fs
bCwgdGhlIHZhbHVlIHdpbGwgbm8gbG9uZ2VyIGhhdmUgYW55IG5vbi1jZWxsIG1lbWJlcnMuIEJ1
dCwgeW91IGNhbgogICAgIC8vIHVzZSBhZG1pdHRlZFR5cGVzIHRvIHByZXNlcnZlIHNvbWUgbm9u
LWNlbGwgdHlwZXMuIE5vdGUgdGhhdCBpdCdzIHdyb25nIGZvciBhZG1pdHRlZFR5cGVzIHRvIG92
ZXJsYXAKICAgICAvLyB3aXRoIFNwZWNDZWxsLgotICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVy
KEdyYXBoJiwgY29uc3QgU3RydWN0dXJlU2V0JiwgU3BlY3VsYXRlZFR5cGUgYWRtaXR0ZWRUeXBl
cyA9IFNwZWNOb25lKTsKKyAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlcihHcmFwaCYsIGNvbnN0
IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmLCBTcGVjdWxhdGVkVHlwZSBhZG1pdHRlZFR5cGVzID0g
U3BlY05vbmUpOwogICAgIAogICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyQXJyYXlNb2RlcyhB
cnJheU1vZGVzKTsKICAgICBGaWx0cmF0aW9uUmVzdWx0IGZpbHRlcihTcGVjdWxhdGVkVHlwZSk7
CkBAIC0zMTEsOSArMzExLDkgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogCiAgICAgRmlsdHJh
dGlvblJlc3VsdCBmaWx0ZXIoR3JhcGgmLCBjb25zdCBJbmZlcnJlZFR5cGU6OkRlc2NyaXB0b3Im
KTsKICAgICAKLSAgICBGaWx0cmF0aW9uUmVzdWx0IGNoYW5nZVN0cnVjdHVyZShHcmFwaCYsIGNv
bnN0IFN0cnVjdHVyZVNldCYpOworICAgIEZpbHRyYXRpb25SZXN1bHQgY2hhbmdlU3RydWN0dXJl
KEdyYXBoJiwgY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYpOwogICAgIAotICAgIGJvb2wg
Y29udGFpbnMoU3RydWN0dXJlKikgY29uc3Q7CisgICAgYm9vbCBjb250YWlucyhSZWdpc3RlcmVk
U3RydWN0dXJlKSBjb25zdDsKIAogICAgIGJvb2wgdmFsaWRhdGUoSlNWYWx1ZSB2YWx1ZSkgY29u
c3QKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0Vs
aW1pbmF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIxMTIyOSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM5Myw3ICszOTMsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUpOwogCi0g
ICAgICAgICAgICAgICAgICAgIGlmICghbm9kZS0+c3RydWN0dXJlU2V0KCkuY29udGFpbnMoc3Ry
dWN0dXJlKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlLT5zdHJ1Y3R1cmVTZXQoKS5j
b250YWlucyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkpKQogICAgICAgICAg
ICAgICAgICAgICAgICAgZXNjYXBlKG5vZGUtPmNoaWxkMSgpLCBub2RlKTsKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAkocmV2aXNpb24gMjExMjI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NjAsMTIgKzM2MCwxMiBAQCBib29sIEFycmF5TW9kZTo6YWxyZWFkeUNoZWNrZWQoR3JhcGgmIGdy
CiAgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc1RvcCgpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSB2YWx1ZS5tX3N0cnVjdHVyZS5z
aXplKCk7IGktLTspIHsKLSAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdmFsdWUu
bV9zdHJ1Y3R1cmVbaV07CisgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVy
ZSA9IHZhbHVlLm1fc3RydWN0dXJlW2ldOwogICAgICAgICAgICAgaWYgKChzdHJ1Y3R1cmUtPmlu
ZGV4aW5nVHlwZSgpICYgSW5kZXhpbmdTaGFwZU1hc2spICE9IHNoYXBlKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGlmICghKHN0cnVjdHVyZS0+aW5kZXhpbmdU
eXBlKCkgJiBJc0FycmF5KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICBpZiAoIWdyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5p
c09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmUoc3RydWN0dXJlKSkKKyAgICAgICAgICAgIGlmICghZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmlzT3JpZ2luYWxBcnJh
eVN0cnVjdHVyZShzdHJ1Y3R1cmUuZ2V0KCkpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM3Nyw3ICszNzcsNyBAQCBi
b29sIEFycmF5TW9kZTo6YWxyZWFkeUNoZWNrZWQoR3JhcGgmIGdyCiAgICAgICAgIGlmICh2YWx1
ZS5tX3N0cnVjdHVyZS5pc1RvcCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSB2YWx1ZS5tX3N0cnVjdHVyZS5zaXplKCk7IGktLTspIHsKLSAg
ICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdmFsdWUubV9zdHJ1Y3R1cmVbaV07Cisg
ICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IHZhbHVlLm1fc3RydWN0
dXJlW2ldOwogICAgICAgICAgICAgaWYgKChzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpICYgSW5k
ZXhpbmdTaGFwZU1hc2spICE9IHNoYXBlKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIGlmICghKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkgJiBJc0FycmF5KSkK
QEAgLTM5Miw3ICszOTIsNyBAQCBib29sIEFycmF5TW9kZTo6YWxyZWFkeUNoZWNrZWQoR3JhcGgm
IGdyCiAgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc1RvcCgpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSB2YWx1ZS5tX3N0cnVjdHVy
ZS5zaXplKCk7IGktLTspIHsKLSAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdmFs
dWUubV9zdHJ1Y3R1cmVbaV07CisgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVj
dHVyZSA9IHZhbHVlLm1fc3RydWN0dXJlW2ldOwogICAgICAgICAgICAgaWYgKChzdHJ1Y3R1cmUt
PmluZGV4aW5nVHlwZSgpICYgSW5kZXhpbmdTaGFwZU1hc2spICE9IHNoYXBlKQogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtNDQwLDcgKzQ0MCw3IEBAIGJvb2wg
QXJyYXlNb2RlOjphbHJlYWR5Q2hlY2tlZChHcmFwaCYgZ3IKICAgICAgICAgICAgIGlmICh2YWx1
ZS5tX3N0cnVjdHVyZS5pc1RvcCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHZhbHVlLm1fc3RydWN0dXJlLnNpemUoKTsgaS0t
OykgewotICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdmFsdWUubV9zdHJ1
Y3R1cmVbaV07CisgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUg
PSB2YWx1ZS5tX3N0cnVjdHVyZVtpXTsKICAgICAgICAgICAgICAgICBpZiAoIWhhc0FueUFycmF5
U3RvcmFnZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIGlmICghKHN0cnVjdHVyZS0+aW5kZXhpbmdU
eXBlKCkgJiBJc0FycmF5KSkKQEAgLTQ1NSw3ICs0NTUsNyBAQCBib29sIEFycmF5TW9kZTo6YWxy
ZWFkeUNoZWNrZWQoR3JhcGgmIGdyCiAgICAgICAgICAgICBpZiAodmFsdWUubV9zdHJ1Y3R1cmUu
aXNUb3AoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSB2YWx1ZS5tX3N0cnVjdHVyZS5zaXplKCk7IGktLTspIHsKLSAgICAgICAg
ICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZhbHVlLm1fc3RydWN0dXJlW2ldOworICAg
ICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gdmFsdWUubV9zdHJ1
Y3R1cmVbaV07CiAgICAgICAgICAgICAgICAgaWYgKCFoYXNBbnlBcnJheVN0b3JhZ2Uoc3RydWN0
dXJlLT5pbmRleGluZ1R5cGUoKSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlp
ZnlTbG93UGF0aEdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oCShyZXZpc2lvbiAyMTEyMjkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgICAgIDogSnVt
cGluZ1Nsb3dQYXRoR2VuZXJhdG9yPE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdD4oZnJvbSwgaml0
KQogICAgICAgICAsIG1fb3Aobm9kZS0+b3AoKSkKICAgICAgICAgLCBtX2FycmF5TW9kZShub2Rl
LT5hcnJheU1vZGUoKSkKLSAgICAgICAgLCBtX3N0cnVjdHVyZShub2RlLT5vcCgpID09IEFycmF5
aWZ5VG9TdHJ1Y3R1cmUgPyBub2RlLT5zdHJ1Y3R1cmUoKSA6IDApCisgICAgICAgICwgbV9zdHJ1
Y3R1cmUobm9kZS0+b3AoKSA9PSBBcnJheWlmeVRvU3RydWN0dXJlID8gbm9kZS0+c3RydWN0dXJl
KCkgOiBSZWdpc3RlcmVkU3RydWN0dXJlKCkpCiAgICAgICAgICwgbV9iYXNlR1BSKGJhc2VHUFIp
CiAgICAgICAgICwgbV9wcm9wZXJ0eUdQUihwcm9wZXJ0eUdQUikKICAgICAgICAgLCBtX3RlbXBH
UFIodGVtcEdQUikKQEAgLTExNSw3ICsxMTUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGppdC0+
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgCiAgICAgICAgIGlmIChtX29wID09IEFy
cmF5aWZ5VG9TdHJ1Y3R1cmUpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX3N0cnVjdHVyZSk7Cisg
ICAgICAgICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUuZ2V0KCkpOwogICAgICAgICAgICAgbV9iYWRJ
bmRleGluZ1R5cGVKdW1wLmZpbGwoCiAgICAgICAgICAgICAgICAgaml0LCBqaXQtPm1faml0LmJy
YW5jaFdlYWtTdHJ1Y3R1cmUoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhtX2Jhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIG1fc3Ry
dWN0dXJlKSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0xMzYsNyArMTM2LDcgQEAgcHJvdGVjdGVk
OgogcHJpdmF0ZToKICAgICBOb2RlVHlwZSBtX29wOwogICAgIEFycmF5TW9kZSBtX2FycmF5TW9k
ZTsKLSAgICBTdHJ1Y3R1cmUqIG1fc3RydWN0dXJlOworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
bV9zdHJ1Y3R1cmU7CiAgICAgR1BSUmVnIG1fYmFzZUdQUjsKICAgICBHUFJSZWcgbV9wcm9wZXJ0
eUdQUjsKICAgICBHUFJSZWcgbV90ZW1wR1BSOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOTYwLDcgKzI5NjAsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25z
dGFudEludGVyCiAgICAgICAgICAgICByZXN1bHQgPSBhZGRUb0dyYXBoKENhbGxTdHJpbmdDb25z
dHJ1Y3RvciwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0
KSkpOwogICAgICAgICAKICAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCkKLSAg
ICAgICAgICAgIHJlc3VsdCA9IGFkZFRvR3JhcGgoTmV3U3RyaW5nT2JqZWN0LCBPcEluZm8oZnVu
Y3Rpb24tPmdsb2JhbE9iamVjdCgpLT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSksIHJlc3VsdCk7
CisgICAgICAgICAgICByZXN1bHQgPSBhZGRUb0dyYXBoKE5ld1N0cmluZ09iamVjdCwgT3BJbmZv
KG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgpLT5zdHJp
bmdPYmplY3RTdHJ1Y3R1cmUoKSkpLCByZXN1bHQpOwogICAgICAgICAKICAgICAgICAgc2V0KFZp
cnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CkBAIC0yOTcyLDcgKzI5NzIsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDb25z
dGFudEludGVyCiAKICAgICAgICAgTm9kZSogcmVzdWx0OwogICAgICAgICBpZiAoYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgPD0gMSkKLSAgICAgICAgICAgIHJlc3VsdCA9IGFkZFRvR3JhcGgo
TmV3T2JqZWN0LCBPcEluZm8oZnVuY3Rpb24tPmdsb2JhbE9iamVjdCgpLT5vYmplY3RTdHJ1Y3R1
cmVGb3JPYmplY3RDb25zdHJ1Y3RvcigpKSk7CisgICAgICAgICAgICByZXN1bHQgPSBhZGRUb0dy
YXBoKE5ld09iamVjdCwgT3BJbmZvKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZnVuY3Rpb24t
Pmdsb2JhbE9iamVjdCgpLT5vYmplY3RTdHJ1Y3R1cmVGb3JPYmplY3RDb25zdHJ1Y3RvcigpKSkp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXN1bHQgPSBhZGRUb0dyYXBoKENhbGxPYmpl
Y3RDb25zdHJ1Y3RvciwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVy
T2Zmc2V0KSkpOwogICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBy
ZXN1bHQpOwpAQCAtMzM4Myw3ICszMzgzLDcgQEAgTm9kZSogQnl0ZUNvZGVQYXJzZXI6OmxvYWQo
CiAgICAgICAgICAgICAvLyBXZSBkaWQgZW1pdCBhIHN0cnVjdHVyZSBjaGVjay4gVGhhdCBtZWFu
cyB0aGF0IHdlIGhhdmUgYW4gb3Bwb3J0dW5pdHkgdG8gZG8gY29uc3RhbnQgZm9sZGluZwogICAg
ICAgICAgICAgLy8gaGVyZSwgc2luY2Ugd2UgZGlkbid0IGRvIGl0IGFib3ZlLgogICAgICAgICAg
ICAgSlNWYWx1ZSBjb25zdGFudCA9IG1fZ3JhcGgudHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eSgKLSAg
ICAgICAgICAgICAgICBiYXNlLT5hc0pTVmFsdWUoKSwgdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSwg
dmFyaWFudC5vZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgYmFzZS0+YXNKU1ZhbHVlKCksICpt
X2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50LnN0cnVjdHVyZVNldCgpKSwgdmFyaWFudC5v
ZmZzZXQoKSk7CiAgICAgICAgICAgICBpZiAoY29uc3RhbnQpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHdlYWtKU0NvbnN0YW50KGNvbnN0YW50KTsKICAgICAgICAgfQpAQCAtMzQyOSw3ICszNDI5
LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgICAgICBpZiAob2spCi0gICAgICAgICAgICBnZXRCeUlkU3RhdHVzLmZp
bHRlcihiYXNlLT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICBnZXRCeUlkU3RhdHVzLmZpbHRl
cihiYXNlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CiAgICAgfQogICAgIAogICAgIE5vZGVUeXBlIGdl
dEJ5SWQ7CkBAIC0zNDgyLDcgKzM0ODIsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVH
ZXRCeUlkKAogICAgICAgICAgICAgaWYgKHZhcmlhbnQuY29uZGl0aW9uU2V0KCkuaXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICAgICAgY2FzZXMuYXBwZW5kKAogICAgICAgICAgICAgICAgICAgICBN
dWx0aUdldEJ5T2Zmc2V0Q2FzZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQuc3Ry
dWN0dXJlU2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAqbV9ncmFwaC5hZGRTdHJ1Y3R1
cmVTZXQodmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICBH
ZXRCeU9mZnNldE1ldGhvZDo6bG9hZCh2YXJpYW50Lm9mZnNldCgpKSkpOwogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQpAQCAtMzQ5NCw3ICszNDk0LDcgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2VzLmFwcGVuZChNdWx0
aUdldEJ5T2Zmc2V0Q2FzZSh2YXJpYW50LnN0cnVjdHVyZVNldCgpLCBtZXRob2QpKTsKKyAgICAg
ICAgICAgIGNhc2VzLmFwcGVuZChNdWx0aUdldEJ5T2Zmc2V0Q2FzZSgqbV9ncmFwaC5hZGRTdHJ1
Y3R1cmVTZXQodmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSksIG1ldGhvZCkpOwogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKG1fZ3JhcGguY29tcGlsYXRpb24oKSkKQEAgLTM2MjEsOCArMzYyMSwxMyBA
QCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgICAgICBpZiAobV9ncmFw
aC5jb21waWxhdGlvbigpKQogICAgICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5ub3Rp
Y2VJbmxpbmVkUHV0QnlJZCgpOwogCi0gICAgICAgIGZvciAoY29uc3QgUHV0QnlJZFZhcmlhbnQm
IHZhcmlhbnQgOiBwdXRCeUlkU3RhdHVzLnZhcmlhbnRzKCkpCisgICAgICAgIGZvciAoY29uc3Qg
UHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBwdXRCeUlkU3RhdHVzLnZhcmlhbnRzKCkpIHsKICAg
ICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJJbmZlcnJlZFR5cGUodmFyaWFudC5yZXF1aXJlZFR5
cGUoKSk7CisgICAgICAgICAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogdmFyaWFudC5v
bGRTdHJ1Y3R1cmUoKSkKKyAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJl
KHN0cnVjdHVyZSk7CisgICAgICAgICAgICBpZiAodmFyaWFudC5raW5kKCkgPT0gUHV0QnlJZFZh
cmlhbnQ6OlRyYW5zaXRpb24pCisgICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVj
dHVyZSh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKTsKKyAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgTXVsdGlQdXRCeU9mZnNldERhdGEqIGRhdGEgPSBtX2dyYXBoLm1fbXVsdGlQdXRCeU9mZnNl
dERhdGEuYWRkKCk7CiAgICAgICAgIGRhdGEtPnZhcmlhbnRzID0gcHV0QnlJZFN0YXR1cy52YXJp
YW50cygpOwpAQCAtMzY1Myw3ICszNjU4LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
UHV0QnlJZCgKICAgICAKICAgICAgICAgTm9kZSogcHJvcGVydHlTdG9yYWdlOwogICAgICAgICBU
cmFuc2l0aW9uKiB0cmFuc2l0aW9uID0gbV9ncmFwaC5tX3RyYW5zaXRpb25zLmFkZCgKLSAgICAg
ICAgICAgIHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLCB2YXJpYW50Lm5ld1N0
cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFu
dC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCkpLCBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJl
KHZhcmlhbnQubmV3U3RydWN0dXJlKCkpKTsKIAogICAgICAgICBpZiAodmFyaWFudC5yZWFsbG9j
YXRlc1N0b3JhZ2UoKSkgewogCkBAIC0zOTAwLDcgKzM5MDUsNyBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBo
LndhdGNocG9pbnRzKCkuYWRkTGF6aWx5KHJhcmVEYXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNo
cG9pbnRTZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgY2FsbGVlIGlzIHN0
aWxsIGxpdmUgdXAgdG8gdGhpcyBwb2ludC4KICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoUGhhbnRvbSwgY2FsbGVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNldChWaXJ0
dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGFkZFRvR3JhcGgo
TmV3T2JqZWN0LCBPcEluZm8oc3RydWN0dXJlKSkpOworICAgICAgICAgICAgICAgICAgICAgICAg
c2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRk
VG9HcmFwaChOZXdPYmplY3QsIE9wSW5mbyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVj
dHVyZSkpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBhbHJlYWR5RW1pdHRlZCA9IHRydWU7
CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0zOTE1LDcgKzM5
MjAsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAg
IGNhc2Ugb3BfbmV3X29iamVjdDogewogICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3Rlcihj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwKICAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKE5ld09iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgT3BJbmZvKGN1cnJlbnRJbnN0cnVj
dGlvblszXS51Lm9iamVjdEFsbG9jYXRpb25Qcm9maWxlLT5zdHJ1Y3R1cmUoKSkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoY3VycmVudElu
c3RydWN0aW9uWzNdLnUub2JqZWN0QWxsb2NhdGlvblByb2ZpbGUtPnN0cnVjdHVyZSgpKSkpKTsK
ICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19vYmplY3QpOwogICAgICAgICB9CiAgICAg
ICAgICAgICAKQEAgLTU2NzgsNyArNTY4Myw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFj
a0VudHJ5OjpJbmxpbmUKICAgICAgICAgQVNTRVJUKGNhbGxzaXRlQmxvY2tIZWFkKTsKICAgICAg
ICAgCiAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lID0gYnl0ZUNvZGVQYXJzZXItPm1fZ3JhcGgu
bV9wbGFuLmlubGluZUNhbGxGcmFtZXMtPmFkZCgpOwotICAgICAgICBieXRlQ29kZVBhcnNlci0+
bV9ncmFwaC5mcmVlemUoY29kZUJsb2NrLT5iYXNlbGluZVZlcnNpb24oKSk7CisKICAgICAgICAg
Ly8gVGhlIG93bmVyIGlzIHRoZSBtYWNoaW5lIGNvZGUgYmxvY2ssIGFuZCB3ZSBhbHJlYWR5IGhh
dmUgYSBiYXJyaWVyIG9uIHRoYXQgd2hlbiB0aGUKICAgICAgICAgLy8gcGxhbiBmaW5pc2hlcy4K
ICAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLnNldFdpdGhvdXRX
cml0ZUJhcnJpZXIoY29kZUJsb2NrLT5iYXNlbGluZVZlcnNpb24oKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxsQXJyYXlB
bGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgQ2FsbEFycmF5QWxsb2Nh
dG9yU2xvd1BhdGhHZW5lcmF0bwogcHVibGljOgogICAgIENhbGxBcnJheUFsbG9jYXRvclNsb3dQ
YXRoR2VuZXJhdG9yKAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZnJvbSwgU3Bl
Y3VsYXRpdmVKSVQqIGppdCwgUF9KSVRPcGVyYXRpb25fRVN0WkIgZnVuY3Rpb24sCi0gICAgICAg
IEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzdG9yYWdlR1BSLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgc2l6ZV90IHNpemUpCisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBzdG9yYWdl
R1BSLCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgc2l6ZV90IHNpemUpCiAgICAgICAg
IDogSnVtcGluZ1Nsb3dQYXRoR2VuZXJhdG9yPE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdD4oZnJv
bSwgaml0KQogICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCiAgICAgICAgICwgbV9yZXN1
bHRHUFIocmVzdWx0R1BSKQpAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogICAgIFBfSklUT3Bl
cmF0aW9uX0VTdFpCIG1fZnVuY3Rpb247CiAgICAgR1BSUmVnIG1fcmVzdWx0R1BSOwogICAgIEdQ
UlJlZyBtX3N0b3JhZ2VHUFI7Ci0gICAgU3RydWN0dXJlKiBtX3N0cnVjdHVyZTsKKyAgICBSZWdp
c3RlcmVkU3RydWN0dXJlIG1fc3RydWN0dXJlOwogICAgIHNpemVfdCBtX3NpemU7CiAgICAgVmVj
dG9yPFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4sIDI+IG1fcGxhbnM7CiB9OwpAQCAtNzgsNyArNzgs
NyBAQCBjbGFzcyBDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTaXplCiBwdWJsaWM6CiAg
ICAgQ2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yKAog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGpp
dCwgUF9KSVRPcGVyYXRpb25fRVN0WkIgZnVuY3Rpb24sCi0gICAgICAgIEdQUlJlZyByZXN1bHRH
UFIsIFN0cnVjdHVyZSogY29udGlndW91c1N0cnVjdHVyZSwgU3RydWN0dXJlKiBhcnJheVN0b3Jh
Z2VTdHJ1Y3R1cmUsIEdQUlJlZyBzaXplR1BSLCBHUFJSZWcgc3RvcmFnZUdQUikKKyAgICAgICAg
R1BSUmVnIHJlc3VsdEdQUiwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBjb250aWd1b3VzU3RydWN0dXJl
LCBSZWdpc3RlcmVkU3RydWN0dXJlIGFycmF5U3RvcmFnZVN0cnVjdHVyZSwgR1BSUmVnIHNpemVH
UFIsIEdQUlJlZyBzdG9yYWdlR1BSKQogICAgICAgICA6IEp1bXBpbmdTbG93UGF0aEdlbmVyYXRv
cjxNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Q+KGZyb20sIGppdCkKICAgICAgICAgLCBtX2Z1bmN0
aW9uKGZ1bmN0aW9uKQogICAgICAgICAsIG1fcmVzdWx0R1BSKHJlc3VsdEdQUikKQEAgLTk3LDE1
ICs5NywxNSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X3BsYW5zLnNpemUoKTsgKytpKQogICAgICAgICAgICAgaml0LT5zaWxlbnRTcGlsbChtX3BsYW5z
W2ldKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVj
dFNjcmF0Y2hHUFIobV9zaXplR1BSLCBtX3N0b3JhZ2VHUFIpOwotICAgICAgICBpZiAobV9jb250
aWd1b3VzU3RydWN0dXJlICE9IG1fYXJyYXlTdG9yYWdlT3JDb250aWd1b3VzU3RydWN0dXJlKSB7
CisgICAgICAgIGlmIChtX2NvbnRpZ3VvdXNTdHJ1Y3R1cmUuZ2V0KCkgIT0gbV9hcnJheVN0b3Jh
Z2VPckNvbnRpZ3VvdXNTdHJ1Y3R1cmUuZ2V0KCkpIHsKICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIGJpZ0xlbmd0aCA9IGppdC0+bV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6
OkFib3ZlT3JFcXVhbCwgbV9zaXplR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1J
Tl9BUlJBWV9TVE9SQUdFX0NPTlNUUlVDVElPTl9MRU5HVEgpKTsKLSAgICAgICAgICAgIGppdC0+
bV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2NvbnRpZ3VvdXNTdHJ1
Y3R1cmUpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIGppdC0+bV9qaXQubW92ZShTcGVjdWxh
dGl2ZUpJVDo6VHJ1c3RlZEltbVB0cihtX2NvbnRpZ3VvdXNTdHJ1Y3R1cmUpLCBzY3JhdGNoR1BS
KTsKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUgPSBqaXQtPm1faml0Lmp1
bXAoKTsKICAgICAgICAgICAgIGJpZ0xlbmd0aC5saW5rKCZqaXQtPm1faml0KTsKLSAgICAgICAg
ICAgIGppdC0+bV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2FycmF5
U3RvcmFnZU9yQ29udGlndW91c1N0cnVjdHVyZSksIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAg
aml0LT5tX2ppdC5tb3ZlKFNwZWN1bGF0aXZlSklUOjpUcnVzdGVkSW1tUHRyKG1fYXJyYXlTdG9y
YWdlT3JDb250aWd1b3VzU3RydWN0dXJlKSwgc2NyYXRjaEdQUik7CiAgICAgICAgICAgICBkb25l
LmxpbmsoJmppdC0+bV9qaXQpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGppdC0+bV9q
aXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2NvbnRpZ3VvdXNTdHJ1Y3R1
cmUpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIGppdC0+bV9qaXQubW92ZShTcGVjdWxhdGl2
ZUpJVDo6VHJ1c3RlZEltbVB0cihtX2NvbnRpZ3VvdXNTdHJ1Y3R1cmUpLCBzY3JhdGNoR1BSKTsK
ICAgICAgICAgaml0LT5jYWxsT3BlcmF0aW9uKG1fZnVuY3Rpb24sIG1fcmVzdWx0R1BSLCBzY3Jh
dGNoR1BSLCBtX3NpemVHUFIsIG1fc3RvcmFnZUdQUik7CiAgICAgICAgIEdQUlJlZyBjYW5UcmFt
cGxlID0gU3BlY3VsYXRpdmVKSVQ6OnBpY2tDYW5UcmFtcGxlKG1fcmVzdWx0R1BSKTsKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gbV9wbGFucy5zaXplKCk7IGktLTspCkBAIC0xMTcsOCArMTE3
LDggQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBQX0pJVE9wZXJhdGlvbl9FU3RaQiBtX2Z1
bmN0aW9uOwogICAgIEdQUlJlZyBtX3Jlc3VsdEdQUjsKLSAgICBTdHJ1Y3R1cmUqIG1fY29udGln
dW91c1N0cnVjdHVyZTsKLSAgICBTdHJ1Y3R1cmUqIG1fYXJyYXlTdG9yYWdlT3JDb250aWd1b3Vz
U3RydWN0dXJlOworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgbV9jb250aWd1b3VzU3RydWN0dXJl
OworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgbV9hcnJheVN0b3JhZ2VPckNvbnRpZ3VvdXNTdHJ1
Y3R1cmU7CiAgICAgR1BSUmVnIG1fc2l6ZUdQUjsKICAgICBHUFJSZWcgbV9zdG9yYWdlR1BSOwog
ICAgIFZlY3RvcjxTaWxlbnRSZWdpc3RlclNhdmVQbGFuLCAyPiBtX3BsYW5zOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xvd1Bh
dGhHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhbGxDcmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvci5oCShyZXZpc2lvbiAy
MTEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxDcmVhdGVEaXJlY3RB
cmd1bWVudHNTbG93UGF0aEdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIGNsYXNzIENhbGxDcmVhdGVEaXJl
Y3RBcmd1bWVudHNTbG93UGF0aEdlbmVyYXRvciA6IHB1YmxpYyBKdW1waW5nU2xvd1BhdGhHZW5l
cmF0b3I8TWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0PiB7CiBwdWJsaWM6CiAgICAgQ2FsbENyZWF0
ZURpcmVjdEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yKAotICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6SnVtcExpc3QgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwgR1BSUmVnIHJlc3VsdEdQUiwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBm
cm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBHUFJSZWcgcmVzdWx0R1BSLCBSZWdpc3RlcmVkU3Ry
dWN0dXJlIHN0cnVjdHVyZSwKICAgICAgICAgR1BSUmVnIGxlbmd0aEdQUiwgdW5zaWduZWQgbWlu
Q2FwYWNpdHkpCiAgICAgICAgIDogSnVtcGluZ1Nsb3dQYXRoR2VuZXJhdG9yPE1hY3JvQXNzZW1i
bGVyOjpKdW1wTGlzdD4oZnJvbSwgaml0KQogICAgICAgICAsIG1fcmVzdWx0R1BSKHJlc3VsdEdQ
UikKQEAgLTY5LDcgKzY5LDcgQEAgcHJvdGVjdGVkOgogICAgIAogcHJpdmF0ZToKICAgICBHUFJS
ZWcgbV9yZXN1bHRHUFI7Ci0gICAgU3RydWN0dXJlKiBtX3N0cnVjdHVyZTsKKyAgICBSZWdpc3Rl
cmVkU3RydWN0dXJlIG1fc3RydWN0dXJlOwogICAgIEdQUlJlZyBtX2xlbmd0aEdQUjsKICAgICB1
bnNpZ25lZCBtX21pbkNhcGFjaXR5OwogICAgIFZlY3RvcjxTaWxlbnRSZWdpc3RlclNhdmVQbGFu
LCAyPiBtX3BsYW5zOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25E
YXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1v
bkRhdGEuY3BwCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbW1vbkRhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw4ICs0Myw4IEBAIHZvaWQg
Q29tbW9uRGF0YTo6bm90aWZ5Q29tcGlsaW5nU3RydWN0dXIKICAgICBwbGFuLnRyYW5zaXRpb25z
LmFkZExhemlseSgKICAgICAgICAgY29kZUJsb2NrLAogICAgICAgICBub2RlLT5vcmlnaW4uc2Vt
YW50aWMuY29kZU9yaWdpbk93bmVyKCksCi0gICAgICAgIG5vZGUtPnRyYW5zaXRpb24oKS0+cHJl
dmlvdXMsCi0gICAgICAgIG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dCk7CisgICAgICAgIG5vZGUt
PnRyYW5zaXRpb24oKS0+cHJldmlvdXMuZ2V0KCksCisgICAgICAgIG5vZGUtPnRyYW5zaXRpb24o
KS0+bmV4dC5nZXQoKSk7CiB9CiAKIENhbGxTaXRlSW5kZXggQ29tbW9uRGF0YTo6YWRkQ29kZU9y
aWdpbihDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjEx
MjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw3ICsxNDUsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICAgICAgICAgIGNhc2UgQXJyYXlpZnlUb1N0
cnVjdHVyZTogewogICAgICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gbV9zdGF0
ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVTZXQg
c2V0OworICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgc2V0OwogICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IEFycmF5aWZ5VG9TdHJ1Y3R1cmUpCiAgICAgICAg
ICAgICAgICAgICAgIHNldCA9IG5vZGUtPnN0cnVjdHVyZSgpOwogICAgICAgICAgICAgICAgIGVs
c2UKQEAgLTIwNiwxMSArMjA2LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlSW1tZWRpYXRlOiB7CiAgICAgICAgICAgICAgICAg
QWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwot
ICAgICAgICAgICAgICAgIFN0cnVjdHVyZVNldCYgc2V0ID0gbm9kZS0+c3RydWN0dXJlU2V0KCk7
CisgICAgICAgICAgICAgICAgY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgc2V0ID0gbm9k
ZS0+c3RydWN0dXJlU2V0KCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYg
KHZhbHVlLnZhbHVlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0ganNEeW5hbWljQ2FzdDxTdHJ1Y3R1cmUqPih2YWx1ZS52YWx1ZSgpKSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHNldC5jb250YWlucyhzdHJ1Y3R1cmUpKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoc2V0LmNvbnRhaW5zKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1
Y3R1cmUoc3RydWN0dXJlKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2ludGVy
cHJldGVyLmV4ZWN1dGUoaW5kZXhJbkJsb2NrKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBub2RlLT5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGltaW5hdGVk
ID0gdHJ1ZTsKQEAgLTIyNSw3ICsyMjUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICAgICAgbm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgIFsmXSAoTm9kZSogaW5jb21pbmcp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBpbmNvbWluZy0+ZHluYW1pY0Nhc3RDb25zdGFudDxTdHJ1Y3R1cmUqPigpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXQuY29udGFpbnMoc3RydWN0dXJlKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldC5jb250YWlucyhtX2dyYXBoLnJl
Z2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhbGxHb29kID0gZmFsc2U7CkBAIC00MjEsNyArNDIxLDkgQEAg
cHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkYXRh
LnZhcmlhbnRzLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgIFB1dEJ5SWRWYXJp
YW50JiB2YXJpYW50ID0gZGF0YS52YXJpYW50c1tpXTsKLSAgICAgICAgICAgICAgICAgICAgdmFy
aWFudC5vbGRTdHJ1Y3R1cmUoKS5maWx0ZXIoYmFzZVZhbHVlKTsKKyAgICAgICAgICAgICAgICAg
ICAgdmFyaWFudC5vbGRTdHJ1Y3R1cmUoKS5nZW5lcmljRmlsdGVyKFsmXSAoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpIC0+IGJvb2wgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJhc2VW
YWx1ZS5jb250YWlucyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkpOworICAg
ICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgIGlmICh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgZGF0YS52YXJpYW50c1tpLS1dID0gZGF0YS52YXJpYW50cy5sYXN0KCk7
CkBAIC00NjAsMTIgKzQ2MiwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1faW50ZXJw
cmV0ZXIuZXhlY3V0ZShpbmRleEluQmxvY2spOyAvLyBQdXNoIENGQSBvdmVyIHRoaXMgbm9kZSBh
ZnRlciB3ZSBnZXQgdGhlIHN0YXRlIGJlZm9yZS4KICAgICAgICAgICAgICAgICBhbHJlYWR5SGFu
ZGxlZCA9IHRydWU7IC8vIERvbid0IGFsbG93IHRoZSBkZWZhdWx0IGNvbnN0YW50IGZvbGRlciB0
byBkbyB0aGluZ3MgdG8gdGhpcy4KIAotICAgICAgICAgICAgICAgIGlmIChiYXNlVmFsdWUubV9z
dHJ1Y3R1cmUuaXNUb3AoKSB8fCBiYXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNDbG9iYmVyZWQoKQor
ICAgICAgICAgICAgICAgIGlmICghYmFzZVZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkKICAg
ICAgICAgICAgICAgICAgICAgfHwgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVk
VXNlIHx8IChiYXNlVmFsdWUubV90eXBlICYgflNwZWNDZWxsKSkpCiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIEdldEJ5SWRTdGF0
dXMgc3RhdHVzID0gR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKLSAgICAgICAgICAgICAgICAg
ICAgYmFzZVZhbHVlLm1fc3RydWN0dXJlLnNldCgpLCBtX2dyYXBoLmlkZW50aWZpZXJzKClbaWRl
bnRpZmllck51bWJlcl0pOworICAgICAgICAgICAgICAgICAgICBiYXNlVmFsdWUubV9zdHJ1Y3R1
cmUudG9TdHJ1Y3R1cmVTZXQoKSwgbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1i
ZXJdKTsKICAgICAgICAgICAgICAgICBpZiAoIXN0YXR1cy5pc1NpbXBsZSgpKQogICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKQEAgLTQ5MCw3ICs0OTIsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIGZvciAoY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlh
bnQgOiBzdGF0dXMudmFyaWFudHMoKSkgewogICAgICAgICAgICAgICAgICAgICBkYXRhLT5jYXNl
cy5hcHBlbmQoCiAgICAgICAgICAgICAgICAgICAgICAgICBNdWx0aUdldEJ5T2Zmc2V0Q2FzZSgK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50LnN0cnVjdHVyZVNldCgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICptX2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50
LnN0cnVjdHVyZVNldCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRCeU9mZnNl
dE1ldGhvZDo6bG9hZCh2YXJpYW50Lm9mZnNldCgpKSkpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBkYXRhLT5pZGVudGlmaWVyTnVtYmVyID0gaWRlbnRpZmllck51bWJlcjsK
QEAgLTUxNSwxMiArNTE3LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9pbnRlcnBy
ZXRlci5leGVjdXRlKGluZGV4SW5CbG9jayk7IC8vIFB1c2ggQ0ZBIG92ZXIgdGhpcyBub2RlIGFm
dGVyIHdlIGdldCB0aGUgc3RhdGUgYmVmb3JlLgogICAgICAgICAgICAgICAgIGFscmVhZHlIYW5k
bGVkID0gdHJ1ZTsgLy8gRG9uJ3QgYWxsb3cgdGhlIGRlZmF1bHQgY29uc3RhbnQgZm9sZGVyIHRv
IGRvIHRoaW5ncyB0byB0aGlzLgogCi0gICAgICAgICAgICAgICAgaWYgKGJhc2VWYWx1ZS5tX3N0
cnVjdHVyZS5pc1RvcCgpIHx8IGJhc2VWYWx1ZS5tX3N0cnVjdHVyZS5pc0Nsb2JiZXJlZCgpKQor
ICAgICAgICAgICAgICAgIGlmICghYmFzZVZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpCiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIFB1dEJ5SWRTdGF0dXMgc3RhdHVzID0gUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAg
ICAgICAgICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iob3JpZ2luLnNlbWFudGlj
KSwKLSAgICAgICAgICAgICAgICAgICAgYmFzZVZhbHVlLm1fc3RydWN0dXJlLnNldCgpLAorICAg
ICAgICAgICAgICAgICAgICBiYXNlVmFsdWUubV9zdHJ1Y3R1cmUudG9TdHJ1Y3R1cmVTZXQoKSwK
ICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1i
ZXJdLAogICAgICAgICAgICAgICAgICAgICBub2RlLT5vcCgpID09IFB1dEJ5SWREaXJlY3QpOwog
ICAgICAgICAgICAgICAgIApAQCAtNzEzLDcgKzcxNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8v
IFdlIGFyZW4ndCBzZXQgdXAgdG8gaGFuZGxlIHByb3RvdHlwZSBzdHVmZi4KICAgICAgICAgREZH
X0FTU0VSVChtX2dyYXBoLCBub2RlLCB2YXJpYW50LmNvbmRpdGlvblNldCgpLmlzRW1wdHkoKSk7
CiAKLSAgICAgICAgaWYgKEpTVmFsdWUgdmFsdWUgPSBtX2dyYXBoLnRyeUdldENvbnN0YW50UHJv
cGVydHkoYmFzZVZhbHVlLm1fdmFsdWUsIHZhcmlhbnQuc3RydWN0dXJlU2V0KCksIHZhcmlhbnQu
b2Zmc2V0KCkpKSB7CisgICAgICAgIGlmIChKU1ZhbHVlIHZhbHVlID0gbV9ncmFwaC50cnlHZXRD
b25zdGFudFByb3BlcnR5KGJhc2VWYWx1ZS5tX3ZhbHVlLCAqbV9ncmFwaC5hZGRTdHJ1Y3R1cmVT
ZXQodmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSksIHZhcmlhbnQub2Zmc2V0KCkpKSB7CiAgICAgICAg
ICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG5vZGUsIG1fZ3JhcGguZnJlZXplKHZhbHVl
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTc1OSw3ICs3NjEsNyBAQCBw
cml2YXRlOgogICAgICAgICBUcmFuc2l0aW9uKiB0cmFuc2l0aW9uID0gMDsKICAgICAgICAgaWYg
KHZhcmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uKSB7CiAgICAgICAg
ICAgICB0cmFuc2l0aW9uID0gbV9ncmFwaC5tX3RyYW5zaXRpb25zLmFkZCgKLSAgICAgICAgICAg
ICAgICB2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKSwgdmFyaWFudC5uZXdTdHJ1
Y3R1cmUoKSk7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJp
YW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKSksIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1
cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkpOwogICAgICAgICB9CiAKICAgICAgICAgRWRnZSBw
cm9wZXJ0eVN0b3JhZ2U7CkBAIC04MjEsNiArODIzLDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBh
ZGRCYXNlQ2hlY2soCiAgICAgICAgIHVuc2lnbmVkIGluZGV4SW5CbG9jaywgTm9kZSogbm9kZSwg
Y29uc3QgQWJzdHJhY3RWYWx1ZSYgYmFzZVZhbHVlLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCkK
ICAgICB7CisgICAgICAgIGFkZEJhc2VDaGVjayhpbmRleEluQmxvY2ssIG5vZGUsIGJhc2VWYWx1
ZSwgKm1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHNldCkpOworICAgIH0KKworICAgIHZvaWQgYWRk
QmFzZUNoZWNrKAorICAgICAgICB1bnNpZ25lZCBpbmRleEluQmxvY2ssIE5vZGUqIG5vZGUsIGNv
bnN0IEFic3RyYWN0VmFsdWUmIGJhc2VWYWx1ZSwgY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNl
dCYgc2V0KQorICAgIHsKICAgICAgICAgaWYgKCFiYXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNTdWJz
ZXRPZihzZXQpKSB7CiAgICAgICAgICAgICAvLyBBcmlzZXMgd2hlbiB3ZSBwcnVuZSBNdWx0aUdl
dEJ5T2Zmc2V0LiBXZSBjb3VsZCBoYXZlIGEKICAgICAgICAgICAgIC8vIE11bHRpR2V0QnlPZmZz
ZXQgd2l0aCBhIHNpbmdsZSB2YXJpYW50IHRoYXQgY2hlY2tzIGZvciBzdHJ1Y3R1cmUgUywKQEAg
LTgyOCw3ICs4MzYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgQVNTRVJUKG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAg
ICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQ2hlY2tTdHJ1Y3R1cmUsIG5vZGUtPm9yaWdp
biwKLSAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoc2V0KSks
IG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5hZGRTdHJ1
Y3R1cmVTZXQoc2V0LnRvU3RydWN0dXJlU2V0KCkpKSwgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIApAQCAtODM4LDggKzg0NiwxMiBAQCBw
cml2YXRlOgogICAgIAogICAgIHZvaWQgYWRkU3RydWN0dXJlVHJhbnNpdGlvbkNoZWNrKE5vZGVP
cmlnaW4gb3JpZ2luLCB1bnNpZ25lZCBpbmRleEluQmxvY2ssIEpTQ2VsbCogY2VsbCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBpZiAobV9ncmFwaC5yZWdpc3RlclN0cnVj
dHVyZShjZWxsLT5zdHJ1Y3R1cmUoKSkgPT0gU3RydWN0dXJlUmVnaXN0ZXJlZEFuZFdhdGNoZWQp
Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIHsKKyAgICAgICAgICAgIFN0cnVjdHVyZVJl
Z2lzdHJhdGlvblJlc3VsdCByZXN1bHQ7CisgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3Ry
dWN0dXJlKGNlbGwtPnN0cnVjdHVyZSgpLCByZXN1bHQpOworICAgICAgICAgICAgaWYgKHJlc3Vs
dCA9PSBTdHJ1Y3R1cmVSZWdpc3RlcmVkQW5kV2F0Y2hlZCkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1
cmUoc3RydWN0dXJlKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNp
cmVkV2Vha1JlZmVyZW5jZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmNwcAkocmV2aXNpb24gMjExMjI5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3MiwxMiBAQCB2b2lkIERlc2lyZWRXZWFrUmVmZXJlbmNl
czo6cmVhbGx5QWRkKFZNCiAgICAgICAgICAgICBjb21tb24tPndlYWtTdHJ1Y3R1cmVSZWZlcmVu
Y2VzLmFwcGVuZCgKICAgICAgICAgICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPih2bSwg
bV9jb2RlQmxvY2ssIHN0cnVjdHVyZSkpOwogICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
Ly8gVGhlcmUgYXJlIHdlaXJkIHJlbGF0aW9uc2hpcHMgaW4gaG93IG9wdGltaXplZCBDb2RlQmxv
Y2tzCisgICAgICAgICAgICAvLyBwb2ludCB0byBvdGhlciBDb2RlQmxvY2tzLiBXZSBkb24ndCB3
YW50IHRvIGhhdmUgdGhlbSBiZQorICAgICAgICAgICAgLy8gcGFydCBvZiB0aGUgd2VhayBwb2lu
dGVyIHNldC4gRm9yIGV4YW1wbGUsIGFuIG9wdGltaXplZCBDb2RlQmxvY2sKKyAgICAgICAgICAg
IC8vIGhhdmluZyBhIHdlYWsgcG9pbnRlciB0byBpdHNlbGYgd2lsbCBjYXVzZSBpdCB0byBnZXQg
Y29sbGVjdGVkLgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWpzRHluYW1pY0Nhc3Q8Q29k
ZUJsb2NrKj4odGFyZ2V0KSk7CisKICAgICAgICAgICAgIGNvbW1vbi0+d2Vha1JlZmVyZW5jZXMu
YXBwZW5kKAogICAgICAgICAgICAgICAgIFdyaXRlQmFycmllcjxKU0NlbGw+KHZtLCBtX2NvZGVC
bG9jaywgdGFyZ2V0KSk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMjExMjI5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM2NSw3
ICsyMzY1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAoc3RydWN0dXJlKSB7CiAg
ICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIEFycmF5aWZ5VG9TdHJ1Y3R1
cmUsIG9yaWdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhzdHJ1Y3R1cmUpLCBP
cEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgRWRnZShhcnJheSwgQ2VsbFVzZSksIGluZGV4RWRn
ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5yZWdpc3RlclN0cnVj
dHVyZShzdHJ1Y3R1cmUpKSwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIEVkZ2UoYXJyYXks
IENlbGxVc2UpLCBpbmRleEVkZ2UpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCiAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY05vbmUsIEFycmF5aWZ5LCBvcmlnaW4sCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMjExMjI5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTg4LDYgKzg4LDEwIEBAIEdyYXBoOjpHcmFwaChWTSYgdm0sIFBsYW4mIHBsYW4sIExvbmdM
aXYKICAgICAKICAgICBtX2luZGV4aW5nQ2FjaGUgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb3dJbmRl
eGluZz4oKnRoaXMpOwogICAgIG1fYWJzdHJhY3RWYWx1ZXNDYWNoZSA9IHN0ZDo6bWFrZV91bmlx
dWU8Rmxvd01hcDxBYnN0cmFjdFZhbHVlPj4oKnRoaXMpOworCisgICAgcmVnaXN0ZXJTdHJ1Y3R1
cmUodm0uc3RydWN0dXJlU3RydWN0dXJlLmdldCgpKTsKKyAgICB0aGlzLT5zdHJpbmdTdHJ1Y3R1
cmUgPSByZWdpc3RlclN0cnVjdHVyZSh2bS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOworICAgIHRo
aXMtPnN5bWJvbFN0cnVjdHVyZSA9IHJlZ2lzdGVyU3RydWN0dXJlKHZtLnN5bWJvbFN0cnVjdHVy
ZS5nZXQoKSk7CiB9CiAKIEdyYXBoOjp+R3JhcGgoKQpAQCAtMjQ1LDE1ICsyNDksMTUgQEAgdm9p
ZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdAogICAgIGlmIChub2RlLT5oYXNQ
cm9tb3RlZExvY2F0aW9uRGVzY3JpcHRvcigpKQogICAgICAgICBvdXQucHJpbnQoY29tbWEsIG5v
ZGUtPnByb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yKCkpOwogICAgIGlmIChub2RlLT5oYXNTdHJ1
Y3R1cmVTZXQoKSkKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCBpbkNvbnRleHQobm9kZS0+c3Ry
dWN0dXJlU2V0KCksIGNvbnRleHQpKTsKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCBpbkNvbnRl
eHQobm9kZS0+c3RydWN0dXJlU2V0KCkudG9TdHJ1Y3R1cmVTZXQoKSwgY29udGV4dCkpOwogICAg
IGlmIChub2RlLT5oYXNTdHJ1Y3R1cmUoKSkKLSAgICAgICAgb3V0LnByaW50KGNvbW1hLCBpbkNv
bnRleHQoKm5vZGUtPnN0cnVjdHVyZSgpLCBjb250ZXh0KSk7CisgICAgICAgIG91dC5wcmludChj
b21tYSwgaW5Db250ZXh0KCpub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSwgY29udGV4dCkpOwogICAg
IGlmIChub2RlLT5oYXNUcmFuc2l0aW9uKCkpIHsKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBw
b2ludGVyRHVtcEluQ29udGV4dChub2RlLT50cmFuc2l0aW9uKCksIGNvbnRleHQpKTsKICNpZiBV
U0UoSlNWQUxVRTY0KQogICAgICAgICBvdXQucHJpbnQoIiwgSUQ6Iiwgbm9kZS0+dHJhbnNpdGlv
bigpLT5uZXh0LT5pZCgpKTsKICNlbHNlCi0gICAgICAgIG91dC5wcmludCgiLCBJRDoiLCBSYXdQ
b2ludGVyKG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dCkpOworICAgICAgICBvdXQucHJpbnQoIiwg
SUQ6IiwgUmF3UG9pbnRlcihub2RlLT50cmFuc2l0aW9uKCktPm5leHQuZ2V0KCkpKTsKICNlbmRp
ZgogICAgIH0KICAgICBpZiAobm9kZS0+aGFzQ2VsbE9wZXJhbmQoKSkgewpAQCAtMTIwNyw3ICsx
MjExLDcgQEAgdW5zaWduZWQgR3JhcGg6OnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZvcgogfQogCiBK
U1ZhbHVlIEdyYXBoOjp0cnlHZXRDb25zdGFudFByb3BlcnR5KAotICAgIEpTVmFsdWUgYmFzZSwg
Y29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkK
KyAgICBKU1ZhbHVlIGJhc2UsIGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVy
ZVNldCwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0KQogewogICAgIGlmICghYmFzZSB8fCAhYmFzZS5p
c09iamVjdCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwpAQCAtMTIxNSw4ICsxMjE5LDcg
QEAgSlNWYWx1ZSBHcmFwaDo6dHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eSgKICAgICBKU09iamVjdCog
b2JqZWN0ID0gYXNPYmplY3QoYmFzZSk7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gc3Ry
dWN0dXJlU2V0LnNpemUoKTsgaS0tOykgewotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IHN0cnVjdHVyZVNldFtpXTsKLSAgICAgICAgYXNzZXJ0SXNSZWdpc3RlcmVkKHN0cnVjdHVyZSk7
CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gc3RydWN0dXJlU2V0W2ld
OwogICAgICAgICAKICAgICAgICAgV2F0Y2hwb2ludFNldCogc2V0ID0gc3RydWN0dXJlLT5wcm9w
ZXJ0eVJlcGxhY2VtZW50V2F0Y2hwb2ludFNldChvZmZzZXQpOwogICAgICAgICBpZiAoIXNldCB8
fCAhc2V0LT5pc1N0aWxsVmFsaWQoKSkKQEAgLTEyNDgsNyArMTI1MSw3IEBAIEpTVmFsdWUgR3Jh
cGg6OnRyeUdldENvbnN0YW50UHJvcGVydHkoCiAgICAgLy8gaW5jb21wYXRpYmxlIHdpdGggdGhl
IGdldERpcmVjdCB3ZSdyZSB0cnlpbmcgdG8gZG8uIFRoZSBlYXNpZXN0IHdheSB0byBkbyB0aGF0
IGlzIHRvCiAgICAgLy8gZGV0ZXJtaW5lIGlmIHRoZSBzdHJ1Y3R1cmUgYmVsb25ncyB0byB0aGUg
cHJvdmVuIHNldC4KICAgICAKLSAgICBpZiAoIXN0cnVjdHVyZVNldC5jb250YWlucyhvYmplY3Qt
PnN0cnVjdHVyZSgpKSkKKyAgICBpZiAoIXN0cnVjdHVyZVNldC50b1N0cnVjdHVyZVNldCgpLmNv
bnRhaW5zKG9iamVjdC0+c3RydWN0dXJlKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwog
ICAgIAogICAgIHJldHVybiBvYmplY3QtPmdldERpcmVjdChvZmZzZXQpOwpAQCAtMTI1Niw3ICsx
MjU5LDcgQEAgSlNWYWx1ZSBHcmFwaDo6dHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eSgKIAogSlNWYWx1
ZSBHcmFwaDo6dHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eShKU1ZhbHVlIGJhc2UsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiB7Ci0gICAgcmV0dXJuIHRyeUdldENv
bnN0YW50UHJvcGVydHkoYmFzZSwgU3RydWN0dXJlU2V0KHN0cnVjdHVyZSksIG9mZnNldCk7Cisg
ICAgcmV0dXJuIHRyeUdldENvbnN0YW50UHJvcGVydHkoYmFzZSwgUmVnaXN0ZXJlZFN0cnVjdHVy
ZVNldChyZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpKSwgb2Zmc2V0KTsKIH0KIAogSlNWYWx1
ZSBHcmFwaDo6dHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eSgKQEAgLTEyNzgsMTMgKzEyODEsMTMgQEAg
SlNWYWx1ZSBHcmFwaDo6dHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eShjbwogfQogCiBBYnN0cmFjdFZh
bHVlIEdyYXBoOjppbmZlcnJlZFZhbHVlRm9yUHJvcGVydHkoCi0gICAgY29uc3QgU3RydWN0dXJl
U2V0JiBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUg
Y2xvYmJlclN0YXRlKQorICAgIGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIGJhc2UsIFVu
aXF1ZWRTdHJpbmdJbXBsKiB1aWQsIFN0cnVjdHVyZUNsb2JiZXJTdGF0ZSBjbG9iYmVyU3RhdGUp
CiB7CiAgICAgQWJzdHJhY3RWYWx1ZSByZXN1bHQ7CiAgICAgYmFzZS5mb3JFYWNoKAotICAgICAg
ICBbJl0gKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7CisgICAgICAgIFsmXSAoUmVnaXN0ZXJlZFN0
cnVjdHVyZSBzdHJ1Y3R1cmUpIHsKICAgICAgICAgICAgIEFic3RyYWN0VmFsdWUgdmFsdWU7Ci0g
ICAgICAgICAgICB2YWx1ZS5zZXQoKnRoaXMsIGluZmVycmVkVHlwZUZvclByb3BlcnR5KHN0cnVj
dHVyZSwgdWlkKSk7CisgICAgICAgICAgICB2YWx1ZS5zZXQoKnRoaXMsIGluZmVycmVkVHlwZUZv
clByb3BlcnR5KHN0cnVjdHVyZS5nZXQoKSwgdWlkKSk7CiAgICAgICAgICAgICByZXN1bHQubWVy
Z2UodmFsdWUpOwogICAgICAgICB9KTsKICAgICBpZiAoY2xvYmJlclN0YXRlID09IFN0cnVjdHVy
ZXNBcmVDbG9iYmVyZWQpCkBAIC0xNDEzLDYxICsxNDE2LDE4IEBAIHZvaWQgR3JhcGg6OnZpc2l0
Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHYKICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJl
ZCh2YWx1ZS0+dmFsdWUoKSk7CiAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQodmFs
dWUtPnN0cnVjdHVyZSgpKTsKICAgICB9Ci0gICAgCi0gICAgZm9yIChCbG9ja0luZGV4IGJsb2Nr
SW5kZXggPSBudW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewotICAgICAgICBCYXNpY0Jsb2Nr
KiBibG9jayA9IHRoaXMtPmJsb2NrKGJsb2NrSW5kZXgpOwotICAgICAgICBpZiAoIWJsb2NrKQot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIAotICAgICAgICBmb3IgKGF1dG8qIG5vZGUg
OiAqYmxvY2spIHsKLSAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewotICAgICAgICAg
ICAgY2FzZSBDaGVja1N0cnVjdHVyZToKLSAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBub2RlLT5zdHJ1Y3R1cmVTZXQoKS5zaXplKCk7IGktLTspCi0gICAgICAgICAgICAgICAgICAg
IHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQobm9kZS0+c3RydWN0dXJlU2V0KClbaV0pOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSBO
ZXdPYmplY3Q6Ci0gICAgICAgICAgICBjYXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6Ci0gICAgICAg
ICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKLSAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVu
ZFVuYmFycmllcmVkKG5vZGUtPnN0cnVjdHVyZSgpKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2UgUHV0U3RydWN0dXJlOgotICAgICAg
ICAgICAgY2FzZSBBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKLSAgICAgICAgICAgIGNhc2UgUmVh
bGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKLSAgICAgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZFVu
YmFycmllcmVkKG5vZGUtPnRyYW5zaXRpb24oKS0+cHJldmlvdXMpOwotICAgICAgICAgICAgICAg
IHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQobm9kZS0+dHJhbnNpdGlvbigpLT5uZXh0KTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2Ug
TXVsdGlHZXRCeU9mZnNldDoKLSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IE11bHRpR2V0QnlP
ZmZzZXRDYXNlJiBnZXRDYXNlIDogbm9kZS0+bXVsdGlHZXRCeU9mZnNldERhdGEoKS5jYXNlcykg
ewotICAgICAgICAgICAgICAgICAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogZ2V0Q2Fz
ZS5zZXQoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVy
ZWQoc3RydWN0dXJlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSBNdWx0aVB1dEJ5T2Zmc2V0
OgotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG5vZGUtPm11bHRpUHV0QnlPZmZz
ZXREYXRhKCkudmFyaWFudHMuc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgICAgICAgICAgICAgIFB1
dEJ5SWRWYXJpYW50JiB2YXJpYW50ID0gbm9kZS0+bXVsdGlQdXRCeU9mZnNldERhdGEoKS52YXJp
YW50c1tpXTsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RydWN0dXJlU2V0JiBzZXQgPSB2
YXJpYW50Lm9sZFN0cnVjdHVyZSgpOwotICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGogPSBzZXQuc2l6ZSgpOyBqLS07KQotICAgICAgICAgICAgICAgICAgICAgICAgdmlzaXRvci5h
cHBlbmRVbmJhcnJpZXJlZChzZXRbal0pOwotICAgICAgICAgICAgICAgICAgICBpZiAodmFyaWFu
dC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb24pCi0gICAgICAgICAgICAgICAg
ICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKHZhcmlhbnQubmV3U3RydWN0dXJlKCkp
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9CiB9CiAKIEZyb3plblZhbHVlKiBHcmFwaDo6ZnJl
ZXplKEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKFVOTElLRUxZKCF2YWx1ZSkpCiAgICAgICAg
IHJldHVybiBGcm96ZW5WYWx1ZTo6ZW1wdHlTaW5nbGV0b24oKTsKKworICAgIC8vIFRoZXJlIGFy
ZSB3ZWlyZCByZWxhdGlvbnNoaXBzIGluIGhvdyBvcHRpbWl6ZWQgQ29kZUJsb2NrcworICAgIC8v
IHBvaW50IHRvIG90aGVyIENvZGVCbG9ja3MuIFdlIGRvbid0IHdhbnQgdG8gaGF2ZSB0aGVtIGJl
CisgICAgLy8gcGFydCBvZiB0aGUgd2VhayBwb2ludGVyIHNldC4gRm9yIGV4YW1wbGUsIGFuIG9w
dGltaXplZCBDb2RlQmxvY2sKKyAgICAvLyBoYXZpbmcgYSB3ZWFrIHBvaW50ZXIgdG8gaXRzZWxm
IHdpbGwgY2F1c2UgaXQgdG8gZ2V0IGNvbGxlY3RlZC4KKyAgICBSRUxFQVNFX0FTU0VSVCghanNE
eW5hbWljQ2FzdDxDb2RlQmxvY2sqPih2YWx1ZSkpOwogICAgIAogICAgIGF1dG8gcmVzdWx0ID0g
bV9mcm96ZW5WYWx1ZU1hcC5hZGQoSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKSwgbnVsbHB0cik7CiAg
ICAgaWYgKExJS0VMWSghcmVzdWx0LmlzTmV3RW50cnkpKQpAQCAtMTUwNywxMiArMTQ2NywxNCBA
QCB2b2lkIEdyYXBoOjpjb252ZXJ0VG9TdHJvbmdDb25zdGFudChOb2RlCiAgICAgY29udmVydFRv
Q29uc3RhbnQobm9kZSwgZnJlZXplU3Ryb25nKHZhbHVlKSk7CiB9CiAKLVN0cnVjdHVyZVJlZ2lz
dHJhdGlvblJlc3VsdCBHcmFwaDo6cmVnaXN0ZXJTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCitSZWdpc3RlcmVkU3RydWN0dXJlIEdyYXBoOjpyZWdpc3RlclN0cnVjdHVyZShTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgU3RydWN0dXJlUmVnaXN0cmF0aW9uUmVzdWx0JiByZXN1bHQpCiB7CiAg
ICAgbV9wbGFuLndlYWtSZWZlcmVuY2VzLmFkZExhemlseShzdHJ1Y3R1cmUpOwogICAgIGlmICht
X3BsYW4ud2F0Y2hwb2ludHMuY29uc2lkZXIoc3RydWN0dXJlKSkKLSAgICAgICAgcmV0dXJuIFN0
cnVjdHVyZVJlZ2lzdGVyZWRBbmRXYXRjaGVkOwotICAgIHJldHVybiBTdHJ1Y3R1cmVSZWdpc3Rl
cmVkTm9ybWFsbHk7CisgICAgICAgIHJlc3VsdCA9IFN0cnVjdHVyZVJlZ2lzdGVyZWRBbmRXYXRj
aGVkOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gU3RydWN0dXJlUmVnaXN0ZXJlZE5vcm1h
bGx5OworICAgIHJldHVybiBSZWdpc3RlcmVkU3RydWN0dXJlOjpjcmVhdGVQcml2YXRlKHN0cnVj
dHVyZSk7CiB9CiAKIHZvaWQgR3JhcGg6OmFzc2VydElzUmVnaXN0ZXJlZChTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9u
IDIxMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjEzLDcgKzIxMywxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb252ZXJ0VG9D
b25zdGFudChOb2RlKiBub2RlLCBKU1ZhbHVlIHZhbHVlKTsKICAgICB2b2lkIGNvbnZlcnRUb1N0
cm9uZ0NvbnN0YW50KE5vZGUqIG5vZGUsIEpTVmFsdWUgdmFsdWUpOwogICAgIAotICAgIFN0cnVj
dHVyZVJlZ2lzdHJhdGlvblJlc3VsdCByZWdpc3RlclN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSk7CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSByZWdpc3RlclN0cnVjdHVyZShTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIFN0cnVjdHVyZVJlZ2lzdHJhdGlvblJlc3Vs
dCBpZ25vcmVkOworICAgICAgICByZXR1cm4gcmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlLCBp
Z25vcmVkKTsKKyAgICB9CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSByZWdpc3RlclN0cnVjdHVy
ZShTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmVSZWdpc3RyYXRpb25SZXN1bHQmKTsKICAgICB2b2lkIGFz
c2VydElzUmVnaXN0ZXJlZChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSk7CiAgICAgCiAgICAgLy8gQ29k
ZUJsb2NrIGlzIG9wdGlvbmFsLCBidXQgbWF5IGFsbG93IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24g
dG8gYmUgZHVtcGVkIChlLmcuIElkZW50aWZpZXIgbmFtZXMpLgpAQCAtMzQxLDEyICszNDYsMjYg
QEAgcHVibGljOgogICAgIAogICAgIHN0YXRpYyBjb25zdCBjaGFyICpvcE5hbWUoTm9kZVR5cGUp
OwogICAgIAotICAgIFN0cnVjdHVyZVNldCogYWRkU3RydWN0dXJlU2V0KGNvbnN0IFN0cnVjdHVy
ZVNldCYgc3RydWN0dXJlU2V0KQorICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQqIGFkZFN0cnVj
dHVyZVNldChjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCkKICAgICB7CisgICAgICAg
IG1fc3RydWN0dXJlU2V0cy5hcHBlbmQoKTsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNl
dCogcmVzdWx0ID0gJm1fc3RydWN0dXJlU2V0cy5sYXN0KCk7CisKICAgICAgICAgZm9yIChTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA6IHN0cnVjdHVyZVNldCkKLSAgICAgICAgICAgIHJlZ2lzdGVyU3Ry
dWN0dXJlKHN0cnVjdHVyZSk7Ci0gICAgICAgIG1fc3RydWN0dXJlU2V0LmFwcGVuZChzdHJ1Y3R1
cmVTZXQpOwotICAgICAgICByZXR1cm4gJm1fc3RydWN0dXJlU2V0Lmxhc3QoKTsKKyAgICAgICAg
ICAgIHJlc3VsdC0+YWRkKHJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkpOworCisgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCogYWRk
U3RydWN0dXJlU2V0KGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCkK
KyAgICB7CisgICAgICAgIG1fc3RydWN0dXJlU2V0cy5hcHBlbmQoKTsKKyAgICAgICAgUmVnaXN0
ZXJlZFN0cnVjdHVyZVNldCogcmVzdWx0ID0gJm1fc3RydWN0dXJlU2V0cy5sYXN0KCk7CisKKyAg
ICAgICAgZm9yIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA6IHN0cnVjdHVyZVNldCkK
KyAgICAgICAgICAgIHJlc3VsdC0+YWRkKHN0cnVjdHVyZSk7CisKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CiAgICAgCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdEZvcihD
b2RlT3JpZ2luIGNvZGVPcmlnaW4pCkBAIC03MTUsNyArNzM0LDcgQEAgcHVibGljOgogICAgIH0K
IAogICAgIEFic3RyYWN0VmFsdWUgaW5mZXJyZWRWYWx1ZUZvclByb3BlcnR5KAotICAgICAgICBj
b25zdCBTdHJ1Y3R1cmVTZXQmIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIFN0cnVjdHVy
ZUNsb2JiZXJTdGF0ZSA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkKTsKKyAgICAgICAgY29uc3QgUmVn
aXN0ZXJlZFN0cnVjdHVyZVNldCYgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgU3RydWN0
dXJlQ2xvYmJlclN0YXRlID0gU3RydWN0dXJlc0FyZVdhdGNoZWQpOwogCiAgICAgLy8gVGhpcyB1
c2VzIGVpdGhlciBjb25zdGFudCBwcm9wZXJ0eSBpbmZlcmVuY2Ugb3IgcHJvcGVydHkgdHlwZSBp
bmZlcmVuY2UgdG8gZGVyaXZlIGEgZ29vZCBhYnN0cmFjdAogICAgIC8vIHZhbHVlIGZvciBzb21l
IHByb3BlcnR5IGFjY2Vzc2VkIHdpdGggdGhlIGdpdmVuIGFic3RyYWN0IHZhbHVlIGJhc2UuCkBA
IC04MTgsNyArODM3LDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHJlcXVpcmVkUmVnaXN0ZXJD
b3VudEZvckV4aXQoKTsKICAgICB1bnNpZ25lZCByZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGVj
dXRpb25BbmRFeGl0KCk7CiAgICAgCi0gICAgSlNWYWx1ZSB0cnlHZXRDb25zdGFudFByb3BlcnR5
KEpTVmFsdWUgYmFzZSwgY29uc3QgU3RydWN0dXJlU2V0JiwgUHJvcGVydHlPZmZzZXQpOworICAg
IEpTVmFsdWUgdHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eShKU1ZhbHVlIGJhc2UsIGNvbnN0IFJlZ2lz
dGVyZWRTdHJ1Y3R1cmVTZXQmLCBQcm9wZXJ0eU9mZnNldCk7CiAgICAgSlNWYWx1ZSB0cnlHZXRD
b25zdGFudFByb3BlcnR5KEpTVmFsdWUgYmFzZSwgU3RydWN0dXJlKiwgUHJvcGVydHlPZmZzZXQp
OwogICAgIEpTVmFsdWUgdHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eShKU1ZhbHVlIGJhc2UsIGNvbnN0
IFN0cnVjdHVyZUFic3RyYWN0VmFsdWUmLCBQcm9wZXJ0eU9mZnNldCk7CiAgICAgSlNWYWx1ZSB0
cnlHZXRDb25zdGFudFByb3BlcnR5KGNvbnN0IEFic3RyYWN0VmFsdWUmLCBQcm9wZXJ0eU9mZnNl
dCk7CkBAIC05MTAsNyArOTI5LDYgQEAgcHVibGljOgogICAgIAogICAgIFNlZ21lbnRlZFZlY3Rv
cjxWYXJpYWJsZUFjY2Vzc0RhdGEsIDE2PiBtX3ZhcmlhYmxlQWNjZXNzRGF0YTsKICAgICBTZWdt
ZW50ZWRWZWN0b3I8QXJndW1lbnRQb3NpdGlvbiwgOD4gbV9hcmd1bWVudFBvc2l0aW9uczsKLSAg
ICBTZWdtZW50ZWRWZWN0b3I8U3RydWN0dXJlU2V0LCAxNj4gbV9zdHJ1Y3R1cmVTZXQ7CiAgICAg
QmFnPFRyYW5zaXRpb24+IG1fdHJhbnNpdGlvbnM7CiAgICAgU2VnbWVudGVkVmVjdG9yPE5ld0Fy
cmF5QnVmZmVyRGF0YSwgND4gbV9uZXdBcnJheUJ1ZmZlckRhdGE7CiAgICAgQmFnPEJyYW5jaERh
dGE+IG1fYnJhbmNoRGF0YTsKQEAgLTk2MCw2ICs5NzgsOSBAQCBwdWJsaWM6CiAgICAgc3RkOjp1
bmlxdWVfcHRyPEZsb3dJbmRleGluZz4gbV9pbmRleGluZ0NhY2hlOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxGbG93TWFwPEFic3RyYWN0VmFsdWU+PiBtX2Fic3RyYWN0VmFsdWVzQ2FjaGU7CiAKKyAg
ICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cmluZ1N0cnVjdHVyZTsKKyAgICBSZWdpc3RlcmVkU3Ry
dWN0dXJlIHN5bWJvbFN0cnVjdHVyZTsKKwogcHJpdmF0ZToKICAgICB2b2lkIGFkZE5vZGVUb01h
cEJ5SW5kZXgoTm9kZSopOwogCkBAIC05OTcsNiArMTAxOCw3IEBAIHByaXZhdGU6CiAKICAgICBW
ZWN0b3I8Tm9kZSosIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX25vZGVzQnlJbmRleDsKICAg
ICBWZWN0b3I8dW5zaWduZWQsIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBtX25vZGVJbmRleEZy
ZWVMaXN0OworICAgIFNlZ21lbnRlZFZlY3RvcjxSZWdpc3RlcmVkU3RydWN0dXJlU2V0LCAxNj4g
bV9zdHJ1Y3R1cmVTZXRzOwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gMjEx
MjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNDIsMTQgKzI0MiwxNCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KLSAgICBKdW1wIGJyYW5jaFdlYWtTdHJ1Y3R1cmUoUmVsYXRpb25h
bENvbmRpdGlvbiBjb25kLCBUIGxlZnQsIFN0cnVjdHVyZSogd2Vha1N0cnVjdHVyZSkKKyAgICBK
dW1wIGJyYW5jaFdlYWtTdHJ1Y3R1cmUoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBUIGxlZnQs
IFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgd2Vha1N0cnVjdHVyZSkKICAgICB7CisgICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gd2Vha1N0cnVjdHVyZS5nZXQoKTsKICNpZiBVU0UoSlNWQUxVRTY0
KQotICAgICAgICBKdW1wIHJlc3VsdCA9IGJyYW5jaDMyKGNvbmQsIGxlZnQsIFRydXN0ZWRJbW0z
Mih3ZWFrU3RydWN0dXJlLT5pZCgpKSk7Ci0gICAgICAgIGFkZFdlYWtSZWZlcmVuY2Uod2Vha1N0
cnVjdHVyZSk7CisgICAgICAgIEp1bXAgcmVzdWx0ID0gYnJhbmNoMzIoY29uZCwgbGVmdCwgVHJ1
c3RlZEltbTMyKHN0cnVjdHVyZS0+aWQoKSkpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogI2Vs
c2UKLSAgICAgICAgcmV0dXJuIGJyYW5jaFdlYWtQdHIoY29uZCwgbGVmdCwgd2Vha1N0cnVjdHVy
ZSk7CisgICAgICAgIHJldHVybiBicmFuY2hQdHIoY29uZCwgbGVmdCwgVHJ1c3RlZEltbVB0cihz
dHJ1Y3R1cmUpKTsKICNlbmRpZgogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdNdWx0aUdldEJ5T2Zmc2V0RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdNdWx0aUdldEJ5T2Zmc2V0RGF0YS5jcHAJKHJldmlzaW9uIDIx
MTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTXVsdGlHZXRCeU9mZnNldERh
dGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgR2V0QnlPZmZzZXRN
ZXRob2Q6OmR1bXAoUHJpbnRTdHJlYW0KIAogdm9pZCBNdWx0aUdldEJ5T2Zmc2V0Q2FzZTo6ZHVt
cEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QK
IHsKLSAgICBvdXQucHJpbnQoaW5Db250ZXh0KG1fc2V0LCBjb250ZXh0KSwgIjoiLCBpbkNvbnRl
eHQobV9tZXRob2QsIGNvbnRleHQpKTsKKyAgICBvdXQucHJpbnQoaW5Db250ZXh0KG1fc2V0LnRv
U3RydWN0dXJlU2V0KCksIGNvbnRleHQpLCAiOiIsIGluQ29udGV4dChtX21ldGhvZCwgY29udGV4
dCkpOwogfQogCiB2b2lkIE11bHRpR2V0QnlPZmZzZXRDYXNlOjpkdW1wKFByaW50U3RyZWFtJiBv
dXQpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR011bHRpR2V0QnlP
ZmZzZXREYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdN
dWx0aUdldEJ5T2Zmc2V0RGF0YS5oCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR011bHRpR2V0QnlPZmZzZXREYXRhLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCisjaW5jbHVkZSAiREZHUmVn
aXN0ZXJlZFN0cnVjdHVyZVNldC5oIgogI2luY2x1ZGUgIkR1bXBDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVTZXQuaCIKQEAgLTExOSwyMSArMTIw
LDIxIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogICAgIAotICAgIE11bHRpR2V0QnlPZmZzZXRD
YXNlKGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0LCBjb25zdCBHZXRCeU9mZnNldE1ldGhvZCYgbWV0
aG9kKQorICAgIE11bHRpR2V0QnlPZmZzZXRDYXNlKGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVT
ZXQmIHNldCwgY29uc3QgR2V0QnlPZmZzZXRNZXRob2QmIG1ldGhvZCkKICAgICAgICAgOiBtX3Nl
dChzZXQpCiAgICAgICAgICwgbV9tZXRob2QobWV0aG9kKQogICAgIHsKICAgICB9CiAgICAgCi0g
ICAgU3RydWN0dXJlU2V0JiBzZXQoKSB7IHJldHVybiBtX3NldDsgfQotICAgIGNvbnN0IFN0cnVj
dHVyZVNldCYgc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zZXQ7IH0KKyAgICBSZWdpc3RlcmVkU3Ry
dWN0dXJlU2V0JiBzZXQoKSB7IHJldHVybiBtX3NldDsgfQorICAgIGNvbnN0IFJlZ2lzdGVyZWRT
dHJ1Y3R1cmVTZXQmIHNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2V0OyB9CiAgICAgY29uc3QgR2V0
QnlPZmZzZXRNZXRob2QmIG1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0aG9kOyB9CiAgICAg
CiAgICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25z
dDsKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBT
dHJ1Y3R1cmVTZXQgbV9zZXQ7CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBtX3NldDsKICAg
ICBHZXRCeU9mZnNldE1ldGhvZCBtX21ldGhvZDsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlLmNwcAkocmV2aXNpb24gMjExMjI5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc1LDcgKzE3NSw3IEBA
IHZvaWQgTm9kZTo6Y29udmVydFRvUHV0SGludChjb25zdCBQcm9tb3QKIHZvaWQgTm9kZTo6Y29u
dmVydFRvUHV0U3RydWN0dXJlSGludChOb2RlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgQVNTRVJUKG1f
b3AgPT0gUHV0U3RydWN0dXJlKTsKLSAgICBBU1NFUlQoc3RydWN0dXJlLT5jYXN0Q29uc3RhbnQ8
U3RydWN0dXJlKj4oKSA9PSB0cmFuc2l0aW9uKCktPm5leHQpOworICAgIEFTU0VSVChzdHJ1Y3R1
cmUtPmNhc3RDb25zdGFudDxTdHJ1Y3R1cmUqPigpID09IHRyYW5zaXRpb24oKS0+bmV4dC5nZXQo
KSk7CiAgICAgY29udmVydFRvUHV0SGludChTdHJ1Y3R1cmVQTG9jLCBjaGlsZDEoKS5ub2RlKCks
IHN0cnVjdHVyZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShy
ZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsOCBAQAogI2luY2x1ZGUgIkRGR05vZGVUeXBlLmgi
CiAjaW5jbHVkZSAiREZHT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5oIgogI2luY2x1ZGUgIkRG
R09wSW5mby5oIgorI2luY2x1ZGUgIkRGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRl
ICJERkdSZWdpc3RlcmVkU3RydWN0dXJlU2V0LmgiCiAjaW5jbHVkZSAiREZHVHJhbnNpdGlvbi5o
IgogI2luY2x1ZGUgIkRGR1VzZUtpbmQuaCIKICNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0Rh
dGEuaCIKQEAgLTQxMCwxMCArNDEyLDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVtb3ZlKCk7
CiAKLSAgICB2b2lkIGNvbnZlcnRUb0NoZWNrU3RydWN0dXJlKFN0cnVjdHVyZVNldCogc2V0KQor
ICAgIHZvaWQgY29udmVydFRvQ2hlY2tTdHJ1Y3R1cmUoUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCog
c2V0KQogICAgIHsKICAgICAgICAgc2V0T3BBbmREZWZhdWx0RmxhZ3MoQ2hlY2tTdHJ1Y3R1cmUp
OwotICAgICAgICBtX29wSW5mbyA9IHNldDsgCisgICAgICAgIG1fb3BJbmZvID0gc2V0OwogICAg
IH0KIAogICAgIHZvaWQgY29udmVydFRvQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGUoTm9kZSogc3Ry
dWN0dXJlKQpAQCAtMTYxNCwxMCArMTYxNiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9
CiAgICAgCi0gICAgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQoKQorICAgIGNvbnN0IFJlZ2lz
dGVyZWRTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCgpCiAgICAgewogICAgICAgICBBU1NFUlQo
aGFzU3RydWN0dXJlU2V0KCkpOwotICAgICAgICByZXR1cm4gKm1fb3BJbmZvLmFzPFN0cnVjdHVy
ZVNldCo+KCk7CisgICAgICAgIHJldHVybiAqbV9vcEluZm8uYXM8UmVnaXN0ZXJlZFN0cnVjdHVy
ZVNldCo+KCk7CiAgICAgfQogICAgIAogICAgIGJvb2wgaGFzU3RydWN0dXJlKCkKQEAgLTE2MzIs
MTAgKzE2MzQsMTAgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlKCkKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSgpCiAg
ICAgewogICAgICAgICBBU1NFUlQoaGFzU3RydWN0dXJlKCkpOwotICAgICAgICByZXR1cm4gbV9v
cEluZm8uYXM8U3RydWN0dXJlKj4oKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzUmVnaXN0
ZXJlZFN0cnVjdHVyZSgpOwogICAgIH0KICAgICAKICAgICBib29sIGhhc1N0b3JhZ2VBY2Nlc3NE
YXRhKCkKQEAgLTI1MTMsNiArMjUxNSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgdS5pbnQ2
NCA9IDA7CiAgICAgICAgICAgICB1LmNvbnN0UG9pbnRlciA9IGNvbnN0UG9pbnRlcjsKICAgICAg
ICAgfQorICAgICAgICBPcEluZm9XcmFwcGVyKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJl
KQorICAgICAgICB7CisgICAgICAgICAgICB1LmludDY0ID0gMDsKKyAgICAgICAgICAgIHUucG9p
bnRlciA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RydWN0dXJlKTsKKyAgICAgICAgfQogICAgICAg
ICBPcEluZm9XcmFwcGVyJiBvcGVyYXRvcj0odWludDMyX3QgaW50MzIpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIHUuaW50NjQgPSAwOwpAQCAtMjU0Miw2ICsyNTQ5LDEyIEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICB1LmNvbnN0UG9pbnRlciA9IGNvbnN0UG9pbnRlcjsKICAgICAgICAgICAgIHJl
dHVybiAqdGhpczsKICAgICAgICAgfQorICAgICAgICBPcEluZm9XcmFwcGVyJiBvcGVyYXRvcj0o
UmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHUu
aW50NjQgPSAwOworICAgICAgICAgICAgdS5wb2ludGVyID0gYml0d2lzZV9jYXN0PHZvaWQqPihz
dHJ1Y3R1cmUpOworICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICB9CiAgICAgICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgICAgICBBTFdBWVNfSU5MSU5FIGF1dG8gYXMoKSBj
b25zdCAtPiB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8VD46OnZhbHVl
ICYmICFzdGQ6OmlzX2NvbnN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8VD46OnR5cGU+
Ojp2YWx1ZSwgVD46OnR5cGUKICAgICAgICAgewpAQCAtMjU2Miw2ICsyNTc1LDExIEBAIHByaXZh
dGU6CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiB1LmludDY0OwogICAgICAgICB9Cisg
ICAgICAgIEFMV0FZU19JTkxJTkUgUmVnaXN0ZXJlZFN0cnVjdHVyZSBhc1JlZ2lzdGVyZWRTdHJ1
Y3R1cmUoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0
PFJlZ2lzdGVyZWRTdHJ1Y3R1cmU+KHUucG9pbnRlcik7CisgICAgICAgIH0KKwogICAgICAgICB1
bmlvbiB7CiAgICAgICAgICAgICB1aW50MzJfdCBpbnQzMjsKICAgICAgICAgICAgIHVpbnQ2NF90
IGludDY0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0
aW9uU2lua2luZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMTEyMjkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5n
UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODYsMjggKzE4NiwyOCBAQCBwdWJsaWM6CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBBbGxvY2F0aW9uJiBzZXRTdHJ1Y3R1cmVzKGNvbnN0IFN0
cnVjdHVyZVNldCYgc3RydWN0dXJlcykKKyAgICBBbGxvY2F0aW9uJiBzZXRTdHJ1Y3R1cmVzKGNv
bnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZXMpCiAgICAgewogICAgICAgICBB
U1NFUlQoaGFzU3RydWN0dXJlcygpICYmICFzdHJ1Y3R1cmVzLmlzRW1wdHkoKSk7CiAgICAgICAg
IG1fc3RydWN0dXJlcyA9IHN0cnVjdHVyZXM7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9
CiAKLSAgICBBbGxvY2F0aW9uJiBtZXJnZVN0cnVjdHVyZXMoY29uc3QgU3RydWN0dXJlU2V0JiBz
dHJ1Y3R1cmVzKQorICAgIEFsbG9jYXRpb24mIG1lcmdlU3RydWN0dXJlcyhjb25zdCBSZWdpc3Rl
cmVkU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVzKQogICAgIHsKICAgICAgICAgQVNTRVJUKGhhc1N0
cnVjdHVyZXMoKSB8fCBzdHJ1Y3R1cmVzLmlzRW1wdHkoKSk7CiAgICAgICAgIG1fc3RydWN0dXJl
cy5tZXJnZShzdHJ1Y3R1cmVzKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAotICAg
IEFsbG9jYXRpb24mIGZpbHRlclN0cnVjdHVyZXMoY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1
cmVzKQorICAgIEFsbG9jYXRpb24mIGZpbHRlclN0cnVjdHVyZXMoY29uc3QgUmVnaXN0ZXJlZFN0
cnVjdHVyZVNldCYgc3RydWN0dXJlcykKICAgICB7CiAgICAgICAgIEFTU0VSVChoYXNTdHJ1Y3R1
cmVzKCkpOwogICAgICAgICBtX3N0cnVjdHVyZXMuZmlsdGVyKHN0cnVjdHVyZXMpOwogICAgICAg
ICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1
cmVzKCkgY29uc3QKKyAgICBjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVz
KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX3N0cnVjdHVyZXM7CiAgICAgfQpAQCAt
MjgzLDcgKzI4Myw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgICAgICBvdXQucHJpbnQoIkFs
bG9jYXRpb24oIik7CiAgICAgICAgIGlmICghbV9zdHJ1Y3R1cmVzLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG91dC5wcmludChpbkNvbnRleHQobV9zdHJ1Y3R1cmVzLCBjb250ZXh0KSk7CisgICAg
ICAgICAgICBvdXQucHJpbnQoaW5Db250ZXh0KG1fc3RydWN0dXJlcy50b1N0cnVjdHVyZVNldCgp
LCBjb250ZXh0KSk7CiAgICAgICAgIGlmICghbV9maWVsZHMuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICBpZiAoIW1fc3RydWN0dXJlcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgb3V0LnBy
aW50KCIsICIpOwpAQCAtMjk2LDcgKzI5Niw3IEBAIHByaXZhdGU6CiAgICAgTm9kZSogbV9pZGVu
dGlmaWVyOyAvLyBUaGlzIGlzIHRoZSBhY3R1YWwgbm9kZSB0aGF0IGNyZWF0ZWQgdGhlIGFsbG9j
YXRpb24KICAgICBLaW5kIG1fa2luZDsKICAgICBIYXNoTWFwPFByb21vdGVkTG9jYXRpb25EZXNj
cmlwdG9yLCBOb2RlKj4gbV9maWVsZHM7Ci0gICAgU3RydWN0dXJlU2V0IG1fc3RydWN0dXJlczsK
KyAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0IG1fc3RydWN0dXJlczsKIH07CiAKIGNsYXNzIExv
Y2FsSGVhcCB7CkBAIC04MzIsNyArODMyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHRhcmdl
dCA9ICZtX2hlYXAubmV3QWxsb2NhdGlvbihub2RlLCBBbGxvY2F0aW9uOjpLaW5kOjpPYmplY3Qp
OwogICAgICAgICAgICAgdGFyZ2V0LT5zZXRTdHJ1Y3R1cmVzKG5vZGUtPnN0cnVjdHVyZSgpKTsK
ICAgICAgICAgICAgIHdyaXRlcy5hZGQoCi0gICAgICAgICAgICAgICAgU3RydWN0dXJlUExvYywg
TGF6eU5vZGUobV9ncmFwaC5mcmVlemUobm9kZS0+c3RydWN0dXJlKCkpKSk7CisgICAgICAgICAg
ICAgICAgU3RydWN0dXJlUExvYywgTGF6eU5vZGUobV9ncmFwaC5mcmVlemUobm9kZS0+c3RydWN0
dXJlKCkuZ2V0KCkpKSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIE5ld0Z1
bmN0aW9uOgpAQCAtODc5LDcgKzg3OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgUHV0U3Ry
dWN0dXJlOgogICAgICAgICAgICAgdGFyZ2V0ID0gbV9oZWFwLm9ubHlMb2NhbEFsbG9jYXRpb24o
bm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0
LT5pc09iamVjdEFsbG9jYXRpb24oKSkgewotICAgICAgICAgICAgICAgIHdyaXRlcy5hZGQoU3Ry
dWN0dXJlUExvYywgTGF6eU5vZGUobV9ncmFwaC5mcmVlemUoSlNWYWx1ZShub2RlLT50cmFuc2l0
aW9uKCktPm5leHQpKSkpOworICAgICAgICAgICAgICAgIHdyaXRlcy5hZGQoU3RydWN0dXJlUExv
YywgTGF6eU5vZGUobV9ncmFwaC5mcmVlemUoSlNWYWx1ZShub2RlLT50cmFuc2l0aW9uKCktPm5l
eHQuZ2V0KCkpKSkpOwogICAgICAgICAgICAgICAgIHRhcmdldC0+c2V0U3RydWN0dXJlcyhub2Rl
LT50cmFuc2l0aW9uKCktPm5leHQpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAg
ICAgbV9oZWFwLmVzY2FwZShub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwpAQCAtOTEyLDcgKzkxMiw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBBbGxvY2F0aW9uKiBhbGxvY2F0aW9uID0gbV9oZWFw
Lm9ubHlMb2NhbEFsbG9jYXRpb24obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKICAgICAgICAgICAg
IGlmIChhbGxvY2F0aW9uICYmIGFsbG9jYXRpb24tPmlzT2JqZWN0QWxsb2NhdGlvbigpKSB7CiAg
ICAgICAgICAgICAgICAgTXVsdGlHZXRCeU9mZnNldERhdGEmIGRhdGEgPSBub2RlLT5tdWx0aUdl
dEJ5T2Zmc2V0RGF0YSgpOwotICAgICAgICAgICAgICAgIFN0cnVjdHVyZVNldCB2YWxpZFN0cnVj
dHVyZXM7CisgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCB2YWxpZFN0cnVj
dHVyZXM7CiAgICAgICAgICAgICAgICAgYm9vbCBoYXNJbnZhbGlkU3RydWN0dXJlcyA9IGZhbHNl
OwogICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgbXVsdGlHZXRCeU9mZnNldENhc2Ug
OiBkYXRhLmNhc2VzKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghYWxsb2NhdGlvbi0+c3Ry
dWN0dXJlcygpLm92ZXJsYXBzKG11bHRpR2V0QnlPZmZzZXRDYXNlLnNldCgpKSkKQEAgLTE0NDQs
MTIgKzE0NDQsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgc3dpdGNoIChhbGxvY2F0aW9uLmtpbmQo
KSkgewogICAgICAgICBjYXNlIEFsbG9jYXRpb246OktpbmQ6Ok9iamVjdDogewogICAgICAgICAg
ICAgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSogZGF0YSA9IG1fZ3JhcGgubV9vYmplY3RNYXRl
cmlhbGl6YXRpb25EYXRhLmFkZCgpOwotICAgICAgICAgICAgU3RydWN0dXJlU2V0KiBzZXQgPSBt
X2dyYXBoLmFkZFN0cnVjdHVyZVNldChhbGxvY2F0aW9uLnN0cnVjdHVyZXMoKSk7CiAKICAgICAg
ICAgICAgIHJldHVybiBtX2dyYXBoLmFkZE5vZGUoCiAgICAgICAgICAgICAgICAgYWxsb2NhdGlv
bi5pZGVudGlmaWVyKCktPnByZWRpY3Rpb24oKSwgTm9kZTo6VmFyQXJnLCBNYXRlcmlhbGl6ZU5l
d09iamVjdCwKICAgICAgICAgICAgICAgICB3aGVyZS0+b3JpZ2luLndpdGhTZW1hbnRpYyhhbGxv
Y2F0aW9uLmlkZW50aWZpZXIoKS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICBP
cEluZm8oc2V0KSwgT3BJbmZvKGRhdGEpLCAwLCAwKTsKKyAgICAgICAgICAgICAgICBPcEluZm8o
bV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoYWxsb2NhdGlvbi5zdHJ1Y3R1cmVzKCkpKSwgT3BJbmZv
KGRhdGEpLCAwLCAwKTsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgQWxsb2NhdGlvbjo6S2lu
ZDo6QXN5bmNGdW5jdGlvbjoKQEAgLTIxMDMsNyArMjEwMiw3IEBAIHByaXZhdGU6CiAgICAgICAg
IGNhc2UgTmFtZWRQcm9wZXJ0eVBMb2M6IHsKICAgICAgICAgICAgIEFsbG9jYXRpb24mIGFsbG9j
YXRpb24gPSBtX2hlYXAuZ2V0QWxsb2NhdGlvbihsb2NhdGlvbi5iYXNlKCkpOwogCi0gICAgICAg
ICAgICBWZWN0b3I8U3RydWN0dXJlKj4gc3RydWN0dXJlczsKKyAgICAgICAgICAgIFZlY3RvcjxS
ZWdpc3RlcmVkU3RydWN0dXJlPiBzdHJ1Y3R1cmVzOwogICAgICAgICAgICAgc3RydWN0dXJlcy5h
cHBlbmRSYW5nZShhbGxvY2F0aW9uLnN0cnVjdHVyZXMoKS5iZWdpbigpLCBhbGxvY2F0aW9uLnN0
cnVjdHVyZXMoKS5lbmQoKSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVy
ID0gbG9jYXRpb24uaW5mbygpOwogICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9
IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXTsKQEAgLTIxMTEsNyArMjEx
MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzdGQ6OnNvcnQoCiAgICAgICAgICAgICAgICAg
c3RydWN0dXJlcy5iZWdpbigpLAogICAgICAgICAgICAgICAgIHN0cnVjdHVyZXMuZW5kKCksCi0g
ICAgICAgICAgICAgICAgW3VpZF0gKFN0cnVjdHVyZSAqYSwgU3RydWN0dXJlKiBiKSAtPiBib29s
IHsKKyAgICAgICAgICAgICAgICBbdWlkXSAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBhLCBSZWdpc3Rl
cmVkU3RydWN0dXJlIGIpIC0+IGJvb2wgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS0+
Z2V0Q29uY3VycmVudGx5KHVpZCkgPCBiLT5nZXRDb25jdXJyZW50bHkodWlkKTsKICAgICAgICAg
ICAgICAgICB9KTsKIApAQCAtMjE0Miw3ICsyMTQxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBjdXJyZW50T2Zmc2V0ID0gZmlyc3RP
ZmZzZXQ7CiAgICAgICAgICAgICAgICAgU3RydWN0dXJlU2V0IGN1cnJlbnRTZXQ7Ci0gICAgICAg
ICAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6IHN0cnVjdHVyZXMpIHsKKyAgICAg
ICAgICAgICAgICBmb3IgKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlIDogc3RydWN0dXJl
cykgewogICAgICAgICAgICAgICAgICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1
cmUtPmdldENvbmN1cnJlbnRseSh1aWQpOwogICAgICAgICAgICAgICAgICAgICBpZiAob2Zmc2V0
ICE9IGN1cnJlbnRPZmZzZXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJlY2F1c2Ug
b3VyIGFuYWx5c2lzIHRyZWF0cyBNdWx0aVB1dEJ5T2Zmc2V0IGxpa2UgYW4gZXNjYXBlLCB3ZSBv
bmx5IGhhdmUgdG8KQEAgLTIxNTUsNyArMjE1NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgICAgICAgICBjdXJyZW50T2Zmc2V0ID0gb2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICAg
ICAgY3VycmVudFNldC5jbGVhcigpOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIGN1cnJlbnRTZXQuYWRkKHN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgICAg
IGN1cnJlbnRTZXQuYWRkKHN0cnVjdHVyZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIGRhdGEtPnZhcmlhbnRzLmFwcGVuZCgKICAgICAgICAgICAgICAgICAgICAg
UHV0QnlJZFZhcmlhbnQ6OnJlcGxhY2UoY3VycmVudFNldCwgY3VycmVudE9mZnNldCwgSW5mZXJy
ZWRUeXBlOjpUb3ApKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BJbmZv
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8uaAko
cmV2aXNpb24gMjExMjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcEluZm8u
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yNSw2ICsyNSw4IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVk
ZSAiREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5oIgorI2luY2x1ZGUgIkhlYXBDZWxsLmgiCiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC00Miw4
ICs0NCwxNyBAQCBzdHJ1Y3QgT3BJbmZvIHsKICNpZiBPUyhEQVJXSU4pCiAgICAgZXhwbGljaXQg
T3BJbmZvKHVpbnRwdHJfdCB2YWx1ZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnQ2NF90Pih2
YWx1ZSkpIHsgfQogI2VuZGlmCi0gICAgZXhwbGljaXQgT3BJbmZvKHZvaWQqIHZhbHVlKSA6IG1f
dmFsdWUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih2
YWx1ZSkpKSB7IH0KLSAgICBleHBsaWNpdCBPcEluZm8oY29uc3Qgdm9pZCogdmFsdWUpIDogbV92
YWx1ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHZh
bHVlKSkpIHsgfQorICAgIGV4cGxpY2l0IE9wSW5mbyhSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVj
dHVyZSkgOiBtX3ZhbHVlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihiaXR3aXNlX2Nhc3Q8dWludHB0
cl90PihzdHJ1Y3R1cmUpKSkgeyB9CisKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAg
IGV4cGxpY2l0IE9wSW5mbyhUKiBwdHIpCisgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KCFz
dGQ6OmlzX2Jhc2Vfb2Y8SGVhcENlbGwsIFQ+Ojp2YWx1ZSwgIlRvIG1ha2UgYW4gT3BJbmZvIHdp
dGggYSBjZWxsIGluIGl0LCB0aGUgY2VsbCBtdXN0IGJlIHJlZ2lzdGVyZWQgb3IgZnJvemVuLiIp
OworICAgICAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8U3RydWN0dXJlU2V0LCBU
Pjo6dmFsdWUsICJUbyBtYWtlIGFuIE9wSW5mbyB3aXRoIGEgc3RydWN0dXJlIHNldCBpbiwgbWFr
ZSBzdXJlIHRvIHVzZSBSZWdpc3RlcmVkU3RydWN0dXJlU2V0LiIpOworICAgICAgICBtX3ZhbHVl
ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihwdHIp
KTsKKyAgICB9CisKICAgICB1aW50NjRfdCBtX3ZhbHVlOwogfTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw2
IEBACiAjaW5jbHVkZSAiREZHU3RvcmVCYXJyaWVyQ2x1c3RlcmluZ1BoYXNlLmgiCiAjaW5jbHVk
ZSAiREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuaCIKICNpbmNsdWRlICJERkdTdHJlbmd0
aFJlZHVjdGlvblBoYXNlLmgiCi0jaW5jbHVkZSAiREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhh
c2UuaCIKICNpbmNsdWRlICJERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmgiCiAjaW5jbHVk
ZSAiREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5oIgogI2luY2x1ZGUgIkRGR1VuaWZpY2F0aW9u
UGhhc2UuaCIKQEAgLTMxMSw3ICszMTAsNiBAQCBQbGFuOjpDb21waWxhdGlvblBhdGggUGxhbjo6
Y29tcGlsZUluVGhyCiAgICAgUlVOX1BIQVNFKHBlcmZvcm1CYWNrd2FyZHNQcm9wYWdhdGlvbik7
CiAgICAgUlVOX1BIQVNFKHBlcmZvcm1QcmVkaWN0aW9uUHJvcGFnYXRpb24pOwogICAgIFJVTl9Q
SEFTRShwZXJmb3JtRml4dXApOwotICAgIFJVTl9QSEFTRShwZXJmb3JtU3RydWN0dXJlUmVnaXN0
cmF0aW9uKTsKICAgICBSVU5fUEhBU0UocGVyZm9ybUludmFsaWRhdGlvblBvaW50SW5qZWN0aW9u
KTsKICAgICBSVU5fUEhBU0UocGVyZm9ybVR5cGVDaGVja0hvaXN0aW5nKTsKICAgICAKQEAgLTYw
OCw2ICs2MDYsMTEgQEAgQ29tcGlsYXRpb25SZXN1bHQgUGxhbjo6ZmluYWxpemVXaXRob3V0Tgog
ICAgICAgICAgICAgdHJhY2tlZFJlZmVyZW5jZXMuYWRkKHJlZmVyZW5jZS5nZXQoKSk7CiAgICAg
ICAgIGZvciAoV3JpdGVCYXJyaWVyPFVua25vd24+JiBjb25zdGFudCA6IGNvZGVCbG9jay0+Y29u
c3RhbnRzKCkpCiAgICAgICAgICAgICB0cmFja2VkUmVmZXJlbmNlcy5hZGQoY29uc3RhbnQuZ2V0
KCkpOworCisgICAgICAgIGZvciAoYXV0byogaW5saW5lQ2FsbEZyYW1lIDogKmlubGluZUNhbGxG
cmFtZXMpIHsKKyAgICAgICAgICAgIEFTU0VSVChpbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29k
ZUJsb2NrLmdldCgpKTsKKyAgICAgICAgICAgIHRyYWNrZWRSZWZlcmVuY2VzLmFkZChpbmxpbmVD
YWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLmdldCgpKTsKKyAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgLy8gQ2hlY2sgdGhhdCBhbnkgb3RoZXIgcmVmZXJlbmNlcyB0aGF0IHdlIGhhdmUg
YW55d2hlcmUgaW4gdGhlIEpJVENvZGUgYXJlIGFsc28KICAgICAgICAgLy8gdHJhY2tlZCBlaXRo
ZXIgc3Ryb25nbHkgb3Igd2Vha2x5LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdSZWdpc3RlcmVkU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdSZWdpc3RlcmVkU3RydWN0dXJlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZWdpc3RlcmVkU3RydWN0dXJlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShERkdfSklUKQorCisjaW5jbHVk
ZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlU2V0LmgiCisKK25hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKKworY2xhc3MgR3JhcGg7CisKK2NsYXNzIFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgeworcHVibGljOgorICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUoKSA9IGRlZmF1bHQ7
CisKKyAgICBBTFdBWVNfSU5MSU5FIFN0cnVjdHVyZSogZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9z
dHJ1Y3R1cmU7IH0KKyAgICBTdHJ1Y3R1cmUqIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiBn
ZXQoKTsgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmUm
IG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldCgpID09IG90aGVyLmdldCgp
OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJl
JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsK
KyAgICB9CisKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiAhIWdldCgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3Mg
R3JhcGg7CisKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKQor
ICAgICAgICA6IG1fc3RydWN0dXJlKHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChz
dHJ1Y3R1cmUpOworICAgIH0KKworICAgIHN0YXRpYyBSZWdpc3RlcmVkU3RydWN0dXJlIGNyZWF0
ZVByaXZhdGUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICByZXR1cm4gUmVn
aXN0ZXJlZFN0cnVjdHVyZShzdHJ1Y3R1cmUpOworICAgIH0KKworICAgIFN0cnVjdHVyZSogbV9z
dHJ1Y3R1cmUgeyBudWxscHRyIH07Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisK
KyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdSZWdpc3RlcmVkU3RydWN0dXJlU2V0LmNwcAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmVT
ZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkRGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQuaCIKKworI2lmIEVOQUJMRShERkdfSklUKQor
CisjaW5jbHVkZSAiREZHQWJzdHJhY3RWYWx1ZS5oIgorI2luY2x1ZGUgIlRyYWNrZWRSZWZlcmVu
Y2VzLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKwordm9pZCBSZWdpc3Rl
cmVkU3RydWN0dXJlU2V0OjpmaWx0ZXIoY29uc3QgREZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVl
JiBvdGhlcikKK3sKKyAgICBnZW5lcmljRmlsdGVyKAorICAgICAgICBbJl0gKFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgc3RydWN0dXJlKSAtPiBib29sIHsKKyAgICAgICAgICAgIHJldHVybiBvdGhlci5j
b250YWlucyhzdHJ1Y3R1cmUpOyAKKyAgICAgICAgfSk7Cit9CisKK3ZvaWQgUmVnaXN0ZXJlZFN0
cnVjdHVyZVNldDo6ZmlsdGVyKFNwZWN1bGF0ZWRUeXBlIHR5cGUpCit7CisgICAgZ2VuZXJpY0Zp
bHRlcigKKyAgICAgICAgWyZdIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgLT4gYm9v
bCB7CisgICAgICAgICAgICByZXR1cm4gdHlwZSAmIHNwZWN1bGF0aW9uRnJvbVN0cnVjdHVyZShz
dHJ1Y3R1cmUuZ2V0KCkpOworICAgICAgICB9KTsKK30KKwordm9pZCBSZWdpc3RlcmVkU3RydWN0
dXJlU2V0OjpmaWx0ZXJBcnJheU1vZGVzKEFycmF5TW9kZXMgYXJyYXlNb2RlcykKK3sKKyAgICBn
ZW5lcmljRmlsdGVyKAorICAgICAgICBbJl0gKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJl
KSAtPiBib29sIHsKKyAgICAgICAgICAgIHJldHVybiBhcnJheU1vZGVzICYgYXJyYXlNb2RlRnJv
bVN0cnVjdHVyZShzdHJ1Y3R1cmUuZ2V0KCkpOworICAgICAgICB9KTsKK30KKwordm9pZCBSZWdp
c3RlcmVkU3RydWN0dXJlU2V0OjpmaWx0ZXIoY29uc3QgREZHOjpBYnN0cmFjdFZhbHVlJiBvdGhl
cikKK3sKKyAgICBmaWx0ZXIob3RoZXIubV9zdHJ1Y3R1cmUpOworICAgIGZpbHRlcihvdGhlci5t
X3R5cGUpOworICAgIGZpbHRlckFycmF5TW9kZXMob3RoZXIubV9hcnJheU1vZGVzKTsKK30KKwor
U3BlY3VsYXRlZFR5cGUgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldDo6c3BlY3VsYXRpb25Gcm9tU3Ry
dWN0dXJlcygpIGNvbnN0Cit7CisgICAgU3BlY3VsYXRlZFR5cGUgcmVzdWx0ID0gU3BlY05vbmU7
CisgICAgZm9yRWFjaCgKKyAgICAgICAgWyZdIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVy
ZSkgeworICAgICAgICAgICAgbWVyZ2VTcGVjdWxhdGlvbihyZXN1bHQsIHNwZWN1bGF0aW9uRnJv
bVN0cnVjdHVyZShzdHJ1Y3R1cmUuZ2V0KCkpKTsKKyAgICAgICAgfSk7CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworQXJyYXlNb2RlcyBSZWdpc3RlcmVkU3RydWN0dXJlU2V0OjphcnJheU1vZGVz
RnJvbVN0cnVjdHVyZXMoKSBjb25zdAoreworICAgIEFycmF5TW9kZXMgcmVzdWx0ID0gMDsKKyAg
ICBmb3JFYWNoKAorICAgICAgICBbJl0gKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSB7
CisgICAgICAgICAgICBtZXJnZUFycmF5TW9kZXMocmVzdWx0LCBhc0FycmF5TW9kZXMoc3RydWN0
dXJlLT5pbmRleGluZ1R5cGUoKSkpOworICAgICAgICB9KTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCit2b2lkIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQ6OnZhbGlkYXRlUmVmZXJlbmNlcyhjb25z
dCBUcmFja2VkUmVmZXJlbmNlcyYgdHJhY2tlZFJlZmVyZW5jZXMpIGNvbnN0Cit7CisgICAgLy8g
VGhlIHR5cGUgc3lzdGVtIHNob3VsZCBoZWxwIHVzIGhlcmUsIGJ1dCBwcm90ZWN0IHBlb3BsZSBm
cm9tIGdldHRpbmcgdGhhdCB3cm9uZyB1c2luZyBiaXR3aXNlX2Nhc3Qgb3Igc29tZXRoaW5nIGNy
YXp5LgorICAgIGZvckVhY2goCisgICAgICAgIFsmXSAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1
Y3R1cmUpIHsKKyAgICAgICAgICAgIHRyYWNrZWRSZWZlcmVuY2VzLmNoZWNrKHN0cnVjdHVyZS5n
ZXQoKSk7CisgICAgICAgIH0pOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNl
bmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNldC5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNldC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoREZHX0pJVCkK
KworI2luY2x1ZGUgIkRGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1
cmVTZXQuaCIKKyNpbmNsdWRlIDx3dGYvVGlueVB0clNldC5oPgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgVHJhY2tlZFJlZmVyZW5jZXM7CisKK25hbWVzcGFjZSBERkcgeworCitzdHJ1Y3Qg
QWJzdHJhY3RWYWx1ZTsKK2NsYXNzIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU7CisKK2NsYXNzIFJl
Z2lzdGVyZWRTdHJ1Y3R1cmVTZXQgOiBwdWJsaWMgVGlueVB0clNldDxSZWdpc3RlcmVkU3RydWN0
dXJlPiB7CitwdWJsaWM6CisKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0KCkKKyAgICB7IH0K
KyAgICAKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0KFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3Ry
dWN0dXJlKQorICAgICAgICA6IFRpbnlQdHJTZXQoc3RydWN0dXJlKQorICAgIHsKKyAgICB9Cisg
ICAgCisgICAgQUxXQVlTX0lOTElORSBSZWdpc3RlcmVkU3RydWN0dXJlU2V0KGNvbnN0IFJlZ2lz
dGVyZWRTdHJ1Y3R1cmVTZXQmIG90aGVyKQorICAgICAgICA6IFRpbnlQdHJTZXQob3RoZXIpCisg
ICAgeworICAgIH0KKyAgICAKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG9ubHlTdHJ1Y3R1cmUo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG9ubHlFbnRyeSgpOworICAgIH0KKworICAg
IFN0cnVjdHVyZVNldCB0b1N0cnVjdHVyZVNldCgpIGNvbnN0CisgICAgeworICAgICAgICBTdHJ1
Y3R1cmVTZXQgcmVzdWx0OworICAgICAgICBmb3JFYWNoKFsmXSAoUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBzdHJ1Y3R1cmUpIHsgcmVzdWx0LmFkZChzdHJ1Y3R1cmUuZ2V0KCkpOyB9KTsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICB2b2lkIGZpbHRlcihjb25zdCBERkc6OlN0cnVj
dHVyZUFic3RyYWN0VmFsdWUmKTsKKyAgICB2b2lkIGZpbHRlcihTcGVjdWxhdGVkVHlwZSk7Cisg
ICAgdm9pZCBmaWx0ZXJBcnJheU1vZGVzKEFycmF5TW9kZXMpOworICAgIHZvaWQgZmlsdGVyKGNv
bnN0IERGRzo6QWJzdHJhY3RWYWx1ZSYpOworICAgIAorICAgIFNwZWN1bGF0ZWRUeXBlIHNwZWN1
bGF0aW9uRnJvbVN0cnVjdHVyZXMoKSBjb25zdDsKKyAgICBBcnJheU1vZGVzIGFycmF5TW9kZXNG
cm9tU3RydWN0dXJlcygpIGNvbnN0OworCisgICAgdm9pZCB2YWxpZGF0ZVJlZmVyZW5jZXMoY29u
c3QgVHJhY2tlZFJlZmVyZW5jZXMmKSBjb25zdDsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlND
OjpERkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MjUsNyArNDI1LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBl
JiBzdAogICAgIGNhc2UgQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBSZWFsbG9j
YXRlUHJvcGVydHlTdG9yYWdlOgogICAgICAgICByZXR1cm4gc3RhdGUuZm9yTm9kZShub2RlLT5j
aGlsZDEoKSkubV9zdHJ1Y3R1cmUuaXNTdWJzZXRPZigKLSAgICAgICAgICAgIFN0cnVjdHVyZVNl
dChub2RlLT50cmFuc2l0aW9uKCktPnByZXZpb3VzKSk7CisgICAgICAgICAgICBSZWdpc3RlcmVk
U3RydWN0dXJlU2V0KG5vZGUtPnRyYW5zaXRpb24oKS0+cHJldmlvdXMpKTsKICAgICAgICAgCiAg
ICAgY2FzZSBHZXRCeU9mZnNldDoKICAgICBjYXNlIEdldEdldHRlclNldHRlckJ5T2Zmc2V0OgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTQsNyAr
Mjk0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZQogICAgICAg
ICBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluaygmbV9qaXQpOwogICAgICAgICBHUFJSZWcg
bG9jYWxHbG9iYWxPYmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVjdC5ncHIoKTsKICAgICAgICAg
R1BSUmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9IHJlbW90ZUdsb2JhbE9iamVjdC5ncHIoKTsK
LSAgICAgICAgbV9qaXQubW92ZShKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5ncmFw
aCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbG9j
YWxHbG9iYWxPYmplY3RHUFIpOworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1faml0LmdyYXBoKCksIG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1f
Y3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CiAg
ICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoYXJnUGF5bG9hZEdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVzdWx0UGF5bG9hZEdQUik7CiAgICAgICAg
IG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0UGF5bG9hZEdQUiwgU3Ry
dWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlbW90ZUdsb2JhbE9iamVjdEdQUik7CiAg
ICAgICAgIG1faml0LmNvbXBhcmUzMihKSVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2Jq
ZWN0R1BSLCByZW1vdGVHbG9iYWxPYmplY3RHUFIsIHJlc3VsdFBheWxvYWRHUFIpOwpAQCAtMzU4
LDcgKzM1OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGgKICAg
IAogICAgICAgICBHUFJSZWcgbG9jYWxHbG9iYWxPYmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVj
dC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9IHJlbW90ZUds
b2JhbE9iamVjdC5ncHIoKTsKLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0
LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykp
LCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RG
b3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BS
KTsKICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhhcmdQYXlsb2Fk
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZXN1bHRHUFIpOwogICAgICAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgU3RydWN0dXJlOjpn
bG9iYWxPYmplY3RPZmZzZXQoKSksIHJlbW90ZUdsb2JhbE9iamVjdEdQUik7CiAgICAgICAgIGJy
YW5jaFB0cihKSVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2JqZWN0R1BSLCByZW1vdGVH
bG9iYWxPYmplY3RHUFIsIGludmVydCA/IG5vdFRha2VuIDogdGFrZW4pOwpAQCAtMTA4Miw3ICsx
MDgyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgICAg
ICAgICAgbV9qaXQuZW1pdFJlc3RvcmVDYWxsZWVTYXZlcygpOwogICAgIH0KIAotICAgIG1faml0
Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoaW5mbyksIEdQUkluZm86OnJlZ1Qy
KTsKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoaW5mbyksIEdQUkluZm86OnJlZ1QyKTsK
ICAgICBKSVRDb21waWxlcjo6Q2FsbCBzbG93Q2FsbCA9IG1faml0Lm5lYXJDYWxsKCk7CiAKICAg
ICBkb25lLmxpbmsoJm1faml0KTsKQEAgLTEyNDIsMTAgKzEyNDIsOSBAQCBHUFJSZWcgU3BlY3Vs
YXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsCiAgICAgc3dpdGNoIChpbmZvLnJlZ2lzdGVyRm9y
bWF0KCkpIHsKICAgICBjYXNlIERhdGFGb3JtYXROb25lOiB7CiAgICAgICAgIGlmIChlZGdlLT5o
YXNDb25zdGFudCgpKSB7Ci0gICAgICAgICAgICBKU1ZhbHVlIGpzVmFsdWUgPSBlZGdlLT5hc0pT
VmFsdWUoKTsKICAgICAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwogICAgICAgICAg
ICAgbV9ncHJzLnJldGFpbihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckNvbnN0YW50
KTsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
anNWYWx1ZS5hc0NlbGwoKSksIGdwcik7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJ
bW1QdHIoZWRnZS0+Y29uc3RhbnQoKSksIGdwcik7CiAgICAgICAgICAgICBpbmZvLmZpbGxDZWxs
KCptX3N0cmVhbSwgZ3ByKTsKICAgICAgICAgICAgIHJldHVybiBncHI7CiAgICAgICAgIH0KQEAg
LTE3MjQsNyArMTcyMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RPck90
aGUKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6RXF1YWwsIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIAotICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkuZ2xv
YmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpKSk7CisgICAgICAg
ICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgbV9qaXQu
Z3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSkp
KTsKIAogICAgICAgICBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluaygmbV9qaXQpOwog
ICAgIH0KQEAgLTE4NDMsNyArMTg0Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmpl
Y3RPck90aGVyQnIKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHNjcmF0Y2hHUFIsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCAK
LSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5ncmFw
aCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSkpOwor
ICAgICAgICAgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCks
IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpKSk7CiAKICAgICAgICAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsoJm1f
aml0KTsKICAgICB9CkBAIC0zNzc4LDcgKzM3NzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdBcnJheTogewogICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmlzSGF2aW5n
QUJhZFRpbWUoKSAmJiAhaGFzQW55QXJyYXlTdG9yYWdlKG5vZGUtPmluZGV4aW5nVHlwZSgpKSkg
ewotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmFycmF5
U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5
cGUoKSk7CisgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1faml0
LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZv
ckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKTsKICAg
ICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpID09IG5vZGUtPmluZGV4
aW5nVHlwZSgpKTsKICAgICAgICAgICAgIEFTU0VSVCgKICAgICAgICAgICAgICAgICBoYXNVbmRl
Y2lkZWQoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkKQEAgLTM4NTMsNyArMzg1Miw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGZsdXNo
UmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhp
cyk7CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgICAgIG9wZXJhdGlv
bk5ld0VtcHR5QXJyYXksIHJlc3VsdC5ncHIoKSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVy
ZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKTsK
KyAgICAgICAgICAgICAgICBvcGVyYXRpb25OZXdFbXB0eUFycmF5LCByZXN1bHQuZ3ByKCksIG1f
aml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVy
ZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKSk7
CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAgICAgY2VsbFJl
c3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zOTMwLDcg
KzM5MjksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgCiAgICAgICAg
IGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICBvcGVyYXRpb25OZXdBcnJheSwgcmVzdWx0Lmdw
cigpLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxs
b2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSksCisgICAgICAgICAgICBvcGVyYXRpb25OZXdB
cnJheSwgcmVzdWx0LmdwcigpLCBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2Jh
bE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5v
ZGUtPmluZGV4aW5nVHlwZSgpKSksCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDx2b2lkKj4oYnVm
ZmVyKSwgbm9kZS0+bnVtQ2hpbGRyZW4oKSk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNr
KCk7CiAKQEAgLTM5NzYsMTAgKzM5NzUsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwog
ICAgICAgICBHUFJSZWcgc3RydWN0dXJlR1BSID0gc2VsZWN0U2NyYXRjaEdQUihzaXplR1BSKTsK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgYmlnTGVuZ3RoID0gbV9qaXQuYnJhbmNoMzIo
TWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgc2l6ZUdQUiwgVHJ1c3RlZEltbTMyKE1JTl9B
UlJBWV9TVE9SQUdFX0NPTlNUUlVDVElPTl9MRU5HVEgpKTsKLSAgICAgICAgbV9qaXQubW92ZShU
cnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVE
dXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKSksIHN0cnVjdHVyZUdQUik7Cisg
ICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3Ry
dWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdB
bGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKSkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAgICAgICBiaWdM
ZW5ndGgubGluaygmbV9qaXQpOwotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoZ2xv
YmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24o
QXJyYXlXaXRoQXJyYXlTdG9yYWdlKSksIHN0cnVjdHVyZUdQUik7CisgICAgICAgIG1faml0Lm1v
dmUoVHJ1c3RlZEltbVB0cihtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9i
amVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5
V2l0aEFycmF5U3RvcmFnZSkpKSwgc3RydWN0dXJlR1BSKTsKICAgICAgICAgZG9uZS5saW5rKCZt
X2ppdCk7CiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwg
cmVzdWx0R1BSLCBzdHJ1Y3R1cmVHUFIsIHNpemVHUFIsIG51bGxwdHIpOwogICAgICAgICBtX2pp
dC5leGNlcHRpb25DaGVjaygpOwpAQCAtMzk5OSw3ICszOTk4LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9
IHJlc3VsdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5n
cHIoKTsKIAotICAgICAgICAgICAgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQUiwgZ2xv
YmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24o
aW5kZXhpbmdUeXBlKSwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMsIG51bUVsZW1lbnRzKTsKKyAg
ICAgICAgICAgIGVtaXRBbGxvY2F0ZVJhd09iamVjdChyZXN1bHRHUFIsIG1faml0LmdyYXBoKCku
cmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5n
VHlwZUR1cmluZ0FsbG9jYXRpb24oaW5kZXhpbmdUeXBlKSksIHN0b3JhZ2VHUFIsIG51bUVsZW1l
bnRzLCBudW1FbGVtZW50cyk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChub2RlLT5p
bmRleGluZ1R5cGUoKSA9PSBBcnJheVdpdGhEb3VibGUpIHsKICAgICAgICAgICAgICAgICBKU1Zh
bHVlKiBkYXRhID0gbV9qaXQuY29kZUJsb2NrKCktPmNvbnN0YW50QnVmZmVyKG5vZGUtPnN0YXJ0
Q29uc3RhbnQoKSk7CkBAIC00MDI3LDcgKzQwMjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEdQ
UkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICAgICAgCi0gICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXlCdWZmZXIsIHJlc3VsdC5ncHIoKSwgZ2xvYmFsT2Jq
ZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+
aW5kZXhpbmdUeXBlKCkpLCBub2RlLT5zdGFydENvbnN0YW50KCksIG5vZGUtPm51bUNvbnN0YW50
cygpKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwgcmVz
dWx0LmdwcigpLCBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+
YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4
aW5nVHlwZSgpKSksIG5vZGUtPnN0YXJ0Q29uc3RhbnQoKSwgbm9kZS0+bnVtQ29uc3RhbnRzKCkp
OwogICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAKICAgICAgICAgY2Vs
bFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwpAQCAtNDA1MSw3ICs0MDUwLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKAogICAgICAgICAg
ICAgICAgIG9wZXJhdGlvbk5ld1R5cGVkQXJyYXlXaXRoT25lQXJndW1lbnRGb3JUeXBlKG5vZGUt
PnR5cGVkQXJyYXlUeXBlKCkpLAotICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgZ2xvYmFsT2Jq
ZWN0LT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KG5vZGUtPnR5cGVkQXJyYXlUeXBl
KCkpLCBhcmd1bWVudFJlZ3MpOworICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwgbV9qaXQuZ3Jh
cGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVD
b25jdXJyZW50bHkobm9kZS0+dHlwZWRBcnJheVR5cGUoKSkpLCBhcmd1bWVudFJlZ3MpOwogICAg
ICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtNDE3MSw3ICs0MTcwLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dQYXRoOwogICAgICAgICAKLSAgICAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBub2RlLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgUmVnaXN0ZXJl
ZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBub2RlLT5zdHJ1Y3R1cmUoKTsKICAgICAgICAgc2l6ZV90
IGFsbG9jYXRpb25TaXplID0gSlNGaW5hbE9iamVjdDo6YWxsb2NhdGlvblNpemUoc3RydWN0dXJl
LT5pbmxpbmVDYXBhY2l0eSgpKTsKICAgICAgICAgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3JQ
dHIgPSBzdWJzcGFjZUZvcjxKU0ZpbmFsT2JqZWN0PigqbV9qaXQudm0oKSktPmFsbG9jYXRvckZv
cihhbGxvY2F0aW9uU2l6ZSk7CiAKQEAgLTQ0MTYsOCArNDQxNSw4IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgUHV0
U3RydWN0dXJlOiB7Ci0gICAgICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gbm9kZS0+dHJh
bnNpdGlvbigpLT5wcmV2aW91czsKLSAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBu
b2RlLT50cmFuc2l0aW9uKCktPm5leHQ7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgb2xk
U3RydWN0dXJlID0gbm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91czsKKyAgICAgICAgUmVnaXN0
ZXJlZFN0cnVjdHVyZSBuZXdTdHJ1Y3R1cmUgPSBub2RlLT50cmFuc2l0aW9uKCktPm5leHQ7CiAK
ICAgICAgICAgbV9qaXQuaml0Q29kZSgpLT5jb21tb24ubm90aWZ5Q29tcGlsaW5nU3RydWN0dXJl
VHJhbnNpdGlvbihtX2ppdC5ncmFwaCgpLm1fcGxhbiwgbV9qaXQuY29kZUJsb2NrKCksIG5vZGUp
OwogCkBAIC00NDI3LDcgKzQ0MjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgIEFTU0VSVF9VTlVTRUQob2xkU3RydWN0dXJlLCBvbGRTdHJ1Y3R1
cmUtPmluZGV4aW5nVHlwZSgpID09IG5ld1N0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpOwogICAg
ICAgICBBU1NFUlQob2xkU3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBuZXdTdHJ1Y3R1
cmUtPnR5cGVJbmZvKCkudHlwZSgpKTsKICAgICAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZS0+dHlw
ZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSA9PSBuZXdTdHJ1Y3R1cmUtPnR5cGVJbmZvKCkuaW5s
aW5lVHlwZUZsYWdzKCkpOwotICAgICAgICBtX2ppdC5zdG9yZVB0cihNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihuZXdTdHJ1Y3R1cmUpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKKyAgICAgICAgbV9qaXQuc3RvcmVQ
dHIoVHJ1c3RlZEltbVB0cihuZXdTdHJ1Y3R1cmUpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKICAgICAgICAgCiAgICAgICAg
IG5vUmVzdWx0KG5vZGUpOwogICAgICAgICBicmVhazsKQEAgLTQ2OTEsNyArNDY5MCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgaWYgKCFoYXNJ
bnN0YW5jZVZhbHVlTm9kZS0+aXNDZWxsQ29uc3RhbnQoKSB8fCBkZWZhdWx0SGFzSW5zdGFuY2VG
dW5jdGlvbiAhPSBoYXNJbnN0YW5jZVZhbHVlTm9kZS0+YXNDZWxsKCkpIHsKICAgICAgICAgICAg
IEpTVmFsdWVSZWdzIGhhc0luc3RhbmNlVmFsdWVSZWdzID0gaGFzSW5zdGFuY2VWYWx1ZS5qc1Zh
bHVlUmVncygpOwogICAgICAgICAgICAgbm90RGVmYXVsdEhhc0luc3RhbmNlVmFsdWUuYXBwZW5k
KG1faml0LmJyYW5jaElmTm90Q2VsbChoYXNJbnN0YW5jZVZhbHVlUmVncykpOwotICAgICAgICAg
ICAgbm90RGVmYXVsdEhhc0luc3RhbmNlVmFsdWUuYXBwZW5kKG1faml0LmJyYW5jaFB0cihNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGhhc0luc3RhbmNlVmFsdWVSZWdzLnBheWxvYWRHUFIoKSwg
VHJ1c3RlZEltbVB0cihkZWZhdWx0SGFzSW5zdGFuY2VGdW5jdGlvbikpKTsKKyAgICAgICAgICAg
IG5vdERlZmF1bHRIYXNJbnN0YW5jZVZhbHVlLmFwcGVuZChtX2ppdC5icmFuY2hQdHIoTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCBoYXNJbnN0YW5jZVZhbHVlUmVncy5wYXlsb2FkR1BSKCksIFRy
dXN0ZWRJbW1QdHIobm9kZS0+Y2VsbE9wZXJhbmQoKSkpKTsKICAgICAgICAgfQogCiAgICAgICAg
IC8vIENoZWNrIHRoYXQgY29uc3RydWN0b3IgJ0ltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2Un
LgpAQCAtNDc1Myw3ICs0NzUyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICAgICAgaXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsoJm1faml0
KTsKICAgICAgICAgICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9IGxvY2FsR2xvYmFs
T2JqZWN0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9
IHJlbW90ZUdsb2JhbE9iamVjdC5ncHIoKTsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3Rl
ZEltbVB0cihtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxv
Y2FsR2xvYmFsT2JqZWN0R1BSKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CiAgICAgICAgICAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHZhbHVlLnBheWxvYWRHUFIoKSwgSlND
ZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgICAgIG1f
aml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0LmdwcigpLCBTdHJ1Y3R1cmU6
Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSKTsgCiAgICAgICAg
ICAgICBtX2ppdC5jb21wYXJlMzIoSklUQ29tcGlsZXI6OkVxdWFsLCBsb2NhbEdsb2JhbE9iamVj
dEdQUiwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSLCByZXN1bHQuZ3ByKCkpOwpAQCAtNTcxMywxMyAr
NTcxMiwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2NhdGVOZXdBCiAgICAg
Ly8gV2UgY2FuIHVzZSByZXN1bHQgYXMgYSBzY3JhdGNoIGZvciB0aGlzLgogICAgIGVtaXRJbml0
aWFsaXplQnV0dGVyZmx5KHN0b3JhZ2VHUFIsIHNpemVHUFIsIGVtcHR5VmFsdWVSZWdzLCByZXN1
bHRHUFIpOwogICAgICAgICAgICAgCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxP
YmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRl
eGluZ1R5cGUpOworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9qaXQuZ3Jh
cGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5k
ZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpKTsKICAgICBlbWl0QWxsb2Nh
dGVKU09iamVjdDxKU0FycmF5PihyZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwg
c3RvcmFnZUdQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNlcyk7CiAgICAgICAg
ICAgICAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPENhbGxBcnJh
eUFsbG9jYXRvcldpdGhWYXJpYWJsZVNpemVTbG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAgIHNs
b3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVzdWx0R1BSLAogICAg
ICAgICBzdHJ1Y3R1cmUsCi0gICAgICAgIHNob3VsZENvbnZlcnRMYXJnZVNpemVUb0FycmF5U3Rv
cmFnZSA/IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdB
bGxvY2F0aW9uKEFycmF5V2l0aEFycmF5U3RvcmFnZSkgOiBzdHJ1Y3R1cmUsCisgICAgICAgIHNo
b3VsZENvbnZlcnRMYXJnZVNpemVUb0FycmF5U3RvcmFnZSA/IG1faml0LmdyYXBoKCkucmVnaXN0
ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1
cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSkgOiBzdHJ1Y3R1cmUsCiAgICAg
ICAgIHNpemVHUFIsIHN0b3JhZ2VHUFIpKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyMTEyMjkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNTAsNyArMjUwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9u
U3BlY3VsYXRpdmVOb25QZQogCiAgICAgICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9
IGxvY2FsR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmVtb3RlR2xvYmFsT2Jq
ZWN0R1BSID0gcmVtb3RlR2xvYmFsT2JqZWN0LmdwcigpOwotICAgICAgICBtX2ppdC5tb3ZlKEpJ
VENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1f
Y3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7Cisg
ICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgo
KSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNl
bWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgbV9qaXQuZW1pdExvYWRT
dHJ1Y3R1cmUoYXJnR1BSLCByZXN1bHRHUFIsIHNjcmF0Y2guZ3ByKCkpOwogICAgICAgICBtX2pp
dC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgU3RydWN0dXJlOjpnbG9i
YWxPYmplY3RPZmZzZXQoKSksIHJlbW90ZUdsb2JhbE9iamVjdEdQUik7CiAgICAgICAgIG1faml0
LmNvbXBhcmVQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBsb2NhbEdsb2JhbE9iamVjdEdQUiwgcmVt
b3RlR2xvYmFsT2JqZWN0R1BSLCByZXN1bHRHUFIpOwpAQCAtMzA1LDcgKzMwNSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGgKIAogICAgICAgICBHUFJSZWcgbG9j
YWxHbG9iYWxPYmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVjdC5ncHIoKTsKICAgICAgICAgR1BS
UmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9IHJlbW90ZUdsb2JhbE9iamVjdC5ncHIoKTsKLSAg
ICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0
Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQ
Uik7CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQu
Z3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3Jp
Z2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgbV9qaXQuZW1p
dExvYWRTdHJ1Y3R1cmUoYXJnR1BSLCByZXN1bHRHUFIsIHNjcmF0Y2guZ3ByKCkpOwogICAgICAg
ICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgU3RydWN0dXJl
OjpnbG9iYWxPYmplY3RPZmZzZXQoKSksIHJlbW90ZUdsb2JhbE9iamVjdEdQUik7CiAgICAgICAg
IGJyYW5jaFB0cihKSVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2JqZWN0R1BSLCByZW1v
dGVHbG9iYWxPYmplY3RHUFIsIHRha2VuKTsKQEAgLTEwMDYsNyArMTAwNiw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICBtX2ppdC5lbWl0U3RvcmVDYWxs
U2l0ZUluZGV4KGNhbGxTaXRlKTsKICAgICAKICAgICBKSVRDb21waWxlcjo6RGF0YUxhYmVsUHRy
IHRhcmdldFRvQ2hlY2s7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGggPSBtX2ppdC5i
cmFuY2hQdHJXaXRoUGF0Y2goTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBjYWxsZWVHUFIsIHRh
cmdldFRvQ2hlY2ssIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKDApKTsKKyAgICBKSVRD
b21waWxlcjo6SnVtcCBzbG93UGF0aCA9IG1faml0LmJyYW5jaFB0cldpdGhQYXRjaChNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIGNhbGxlZUdQUiwgdGFyZ2V0VG9DaGVjaywgVHJ1c3RlZEltbVB0
cigwKSk7CiAKICAgICBpZiAoaXNUYWlsKSB7CiAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFRh
aWxDYWxsKSB7CkBAIC0xMDM1LDcgKzEwMzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
Q2FsbChOb2RlKiBub2RlCiAgICAgICAgICAgICBtX2ppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVz
KCk7IC8vIFRoaXMgbmVlZHMgdG8gaGFwcGVuIGFmdGVyIHdlIG1vdmVkIGNhbGxlZUdQUiB0byBy
ZWdUMAogICAgIH0KIAotICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIoY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6cmVnVDIpOyAvLyBMaW5rIGluZm8gbmVlZHMgdG8g
YmUgaW4gcmVnVDIKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoY2FsbExpbmtJbmZvKSwg
R1BSSW5mbzo6cmVnVDIpOyAvLyBMaW5rIGluZm8gbmVlZHMgdG8gYmUgaW4gcmVnVDIKICAgICBK
SVRDb21waWxlcjo6Q2FsbCBzbG93Q2FsbCA9IG1faml0Lm5lYXJDYWxsKCk7CiAKICAgICBkb25l
LmxpbmsoJm1faml0KTsKQEAgLTE4NTYsNyArMTg1Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVPYmplY3RPck90aGUKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAogICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RP
ZmZzZXQoKSksIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1h
bnRpYykpKSk7CisgICAgICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9q
aXQuZ3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+
b3JpZ2luLnNlbWFudGljKSkpKTsKIAogICAgICAgICBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQubGluaygmbV9qaXQpOwogICAgIH0KQEAgLTIwMDcsNyArMjAwNyw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnIKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0
cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIAogICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJlOjpnbG9i
YWxPYmplY3RPZmZzZXQoKSksIAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9y
aWdpbi5zZW1hbnRpYykpKSk7CisgICAgICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1Bv
aW50ZXIobV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJy
ZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSkpKTsKIAogICAgICAgICBpc05vdE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQubGluaygmbV9qaXQpOwogICAgIH0KQEAgLTM3NTcsNyArMzc1Nyw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIE5ld0FycmF5
OiB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgp
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBpZiAoIWds
b2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpICYmICFoYXNBbnlBcnJheVN0b3JhZ2Uobm9k
ZS0+aW5kZXhpbmdUeXBlKCkpKSB7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0
aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKTsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUgc3RydWN0dXJlID0gbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmpl
Y3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5p
bmRleGluZ1R5cGUoKSkpOwogICAgICAgICAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBu
b2RlLCBzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpID09IG5vZGUtPmluZGV4aW5nVHlwZSgpKTsK
ICAgICAgICAgICAgIEFTU0VSVCgKICAgICAgICAgICAgICAgICBoYXNVbmRlY2lkZWQoc3RydWN0
dXJlLT5pbmRleGluZ1R5cGUoKSkKQEAgLTM4MzAsNyArMzgzMCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgaWYgKCFub2RlLT5udW1DaGlsZHJl
bigpKSB7CiAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICAgICAgR1BSRmx1
c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihv
cGVyYXRpb25OZXdFbXB0eUFycmF5LCByZXN1bHQuZ3ByKCksIGdsb2JhbE9iamVjdC0+YXJyYXlT
dHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlw
ZSgpKSk7CisgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0VtcHR5QXJyYXks
IHJlc3VsdC5ncHIoKSwgbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmpl
Y3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5p
bmRleGluZ1R5cGUoKSkpKTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAg
ICAgICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTM5MTIsNyArMzkxMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwog
ICAgICAgICAKICAgICAgICAgY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgIG9wZXJhdGlvbk5l
d0FycmF5LCByZXN1bHQuZ3ByKCksIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRl
eGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKSwKKyAgICAgICAg
ICAgIG9wZXJhdGlvbk5ld0FycmF5LCByZXN1bHQuZ3ByKCksIG1faml0LmdyYXBoKCkucmVnaXN0
ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1
cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKSwKICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PHZvaWQqPihidWZmZXIpLCBub2RlLT5udW1DaGlsZHJlbigpKTsKICAgICAgICAgbV9q
aXQuZXhjZXB0aW9uQ2hlY2soKTsKIApAQCAtMzk1NiwxMCArMzk1NiwxMCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIgPSBzZWxlY3RTY3Jh
dGNoR1BSKHNpemVHUFIpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBiaWdMZW5ndGgg
PSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBzaXplR1BSLCBU
cnVzdGVkSW1tMzIoTUlOX0FSUkFZX1NUT1JBR0VfQ09OU1RSVUNUSU9OX0xFTkdUSCkpOwotICAg
ICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVy
ZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKSwg
c3RydWN0dXJlR1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0Lmdy
YXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvcklu
ZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKSksIHN0cnVj
dHVyZUdQUik7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1w
KCk7CiAgICAgICAgIGJpZ0xlbmd0aC5saW5rKCZtX2ppdCk7Ci0gICAgICAgIG1faml0Lm1vdmUo
VHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBl
RHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2UpKSwgc3RydWN0dXJlR1BSKTsK
KyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkucmVnaXN0ZXJT
dHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmlu
Z0FsbG9jYXRpb24oQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSkpLCBzdHJ1Y3R1cmVHUFIpOwogICAg
ICAgICBkb25lLmxpbmsoJm1faml0KTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25O
ZXdBcnJheVdpdGhTaXplLCByZXN1bHRHUFIsIHN0cnVjdHVyZUdQUiwgc2l6ZUdQUiwgbnVsbHB0
cik7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CkBAIC0zOTc5LDcgKzM5NzksNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHN0b3Jh
Z2VHUFIgPSBzdG9yYWdlLmdwcigpOwogCi0gICAgICAgICAgICBlbWl0QWxsb2NhdGVSYXdPYmpl
Y3QocmVzdWx0R1BSLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBl
RHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cywg
bnVtRWxlbWVudHMpOworICAgICAgICAgICAgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQ
UiwgbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3Ry
dWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpKSwgc3Rv
cmFnZUdQUiwgbnVtRWxlbWVudHMsIG51bUVsZW1lbnRzKTsKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgREZHX0FTU0VSVChtX2ppdC5ncmFwaCgpLCBub2RlLCBpbmRleGluZ1R5cGUgJiBJc0Fy
cmF5KTsKICAgICAgICAgICAgIEpTVmFsdWUqIGRhdGEgPSBtX2ppdC5jb2RlQmxvY2soKS0+Y29u
c3RhbnRCdWZmZXIobm9kZS0+c3RhcnRDb25zdGFudCgpKTsKQEAgLTQwMDUsNyArNDAwNSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hS
ZWdpc3RlcnMoKTsKICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwog
ICAgICAgICAKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwg
cmVzdWx0LmdwcigpLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBl
RHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSksIG5vZGUtPnN0YXJ0Q29uc3Rh
bnQoKSwgbm9kZS0+bnVtQ29uc3RhbnRzKCkpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvbk5ld0FycmF5QnVmZmVyLCByZXN1bHQuZ3ByKCksIG1faml0LmdyYXBoKCkucmVnaXN0ZXJT
dHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmlu
Z0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKSwgbm9kZS0+c3RhcnRDb25zdGFudCgp
LCBub2RlLT5udW1Db25zdGFudHMoKSk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CiAgICAgICAgIAogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CkBAIC00
MDI5LDcgKzQwMjksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgo
KS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgICAgIGNh
bGxPcGVyYXRpb24oCiAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhP
bmVBcmd1bWVudEZvclR5cGUobm9kZS0+dHlwZWRBcnJheVR5cGUoKSksCi0gICAgICAgICAgICAg
ICAgcmVzdWx0R1BSLCBnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50
bHkobm9kZS0+dHlwZWRBcnJheVR5cGUoKSksCisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBt
X2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0
cnVjdHVyZUNvbmN1cnJlbnRseShub2RlLT50eXBlZEFycmF5VHlwZSgpKSksCiAgICAgICAgICAg
ICAgICAgYXJndW1lbnRHUFIpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
ICAgICAgICAgICAgIApAQCAtNDE0Myw3ICs0MTQzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXBMaXN0IHNsb3dQYXRoOwogCi0gICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbm9kZS0+
c3RydWN0dXJlKCk7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbm9k
ZS0+c3RydWN0dXJlKCk7CiAgICAgICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IEpTRmluYWxP
YmplY3Q6OmFsbG9jYXRpb25TaXplKHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAg
ICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yUHRyID0gc3Vic3BhY2VGb3I8SlNGaW5hbE9i
amVjdD4oKm1faml0LnZtKCkpLT5hbGxvY2F0b3JGb3IoYWxsb2NhdGlvblNpemUpOwogCkBAIC00
Mzc2LDggKzQzNzYsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIFB1dFN0cnVjdHVyZTogewotICAgICAgICBTdHJ1
Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IG5vZGUtPnRyYW5zaXRpb24oKS0+cHJldmlvdXM7Ci0gICAg
ICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gbm9kZS0+dHJhbnNpdGlvbigpLT5uZXh0Owor
ICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG9sZFN0cnVjdHVyZSA9IG5vZGUtPnRyYW5zaXRp
b24oKS0+cHJldmlvdXM7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgbmV3U3RydWN0dXJl
ID0gbm9kZS0+dHJhbnNpdGlvbigpLT5uZXh0OwogCiAgICAgICAgIG1faml0LmppdENvZGUoKS0+
Y29tbW9uLm5vdGlmeUNvbXBpbGluZ1N0cnVjdHVyZVRyYW5zaXRpb24obV9qaXQuZ3JhcGgoKS5t
X3BsYW4sIG1faml0LmNvZGVCbG9jaygpLCBub2RlKTsKIApAQCAtNDY1Miw3ICs0NjUyLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAvLyBzaW5j
ZSBpdCByZWxpZXMgb24gT1NSIGluZm9ybWF0aW9uLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU0ODMyCiAgICAgICAgIGlmICghaGFzSW5zdGFuY2VWYWx1ZU5vZGUt
PmlzQ2VsbENvbnN0YW50KCkgfHwgZGVmYXVsdEhhc0luc3RhbmNlRnVuY3Rpb24gIT0gaGFzSW5z
dGFuY2VWYWx1ZU5vZGUtPmFzQ2VsbCgpKSB7CiAgICAgICAgICAgICBHUFJSZWcgaGFzSW5zdGFu
Y2VWYWx1ZUdQUiA9IGhhc0luc3RhbmNlVmFsdWUuZ3ByKCk7Ci0gICAgICAgICAgICBub3REZWZh
dWx0ID0gbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgaGFzSW5zdGFu
Y2VWYWx1ZUdQUiwgVHJ1c3RlZEltbVB0cihkZWZhdWx0SGFzSW5zdGFuY2VGdW5jdGlvbikpOwor
ICAgICAgICAgICAgbm90RGVmYXVsdCA9IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIGhhc0luc3RhbmNlVmFsdWVHUFIsIFRydXN0ZWRJbW1QdHIobm9kZS0+Y2VsbE9w
ZXJhbmQoKSkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gQ2hlY2sgdGhhdCBiYXNlICdJbXBs
ZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlJy4KQEAgLTQ3MTksNyArNDcxOSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGlzTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZC5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICBHUFJSZWcgbG9jYWxHbG9i
YWxPYmplY3RHUFIgPSBsb2NhbEdsb2JhbE9iamVjdC5ncHIoKTsKICAgICAgICAgICAgIEdQUlJl
ZyByZW1vdGVHbG9iYWxPYmplY3RHUFIgPSByZW1vdGVHbG9iYWxPYmplY3QuZ3ByKCk7Ci0gICAg
ICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2JhbE9iamVjdEdQUik7CisgICAgICAgICAg
ICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIG1f
aml0Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbG9jYWxHbG9iYWxP
YmplY3RHUFIpOwogICAgICAgICAgICAgbV9qaXQuZW1pdExvYWRTdHJ1Y3R1cmUodmFsdWUuZ3By
KCksIHJlc3VsdC5ncHIoKSwgc2NyYXRjaC5ncHIoKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2Fk
UHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdC5ncHIoKSwgU3RydWN0dXJlOjpnbG9iYWxP
YmplY3RPZmZzZXQoKSksIHJlbW90ZUdsb2JhbE9iamVjdEdQUik7IAogICAgICAgICAgICAgbV9q
aXQuY29tcGFyZVB0cihKSVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2JqZWN0R1BSLCBy
ZW1vdGVHbG9iYWxPYmplY3RHUFIsIHJlc3VsdC5ncHIoKSk7CkBAIC00OTEyLDkgKzQ5MTIsOSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIG1faml0
LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChidWZmZXJHUFIsIGluZGV4R1BSLCBN
YWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCksIGJ1Y2tldEdQUik7CiAgICAgICAgIG1faml0Lm1v
dmUoYnVja2V0R1BSLCByZXN1bHRHUFIpOwogICAgICAgICBhdXRvIG5vdFByZXNlbnRJblRhYmxl
ID0gbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0gICAgICAgICAgICBi
dWNrZXRHUFIsIFRydXN0ZWRJbW1QdHIoSGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNoTWFw
QnVja2V0RGF0YUtleT4+OjplbXB0eVZhbHVlKCkpKTsKKyAgICAgICAgICAgIGJ1Y2tldEdQUiwg
VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8c2l6ZV90PihIYXNoTWFwSW1wbDxIYXNoTWFwQnVj
a2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46OmVtcHR5VmFsdWUoKSkpKTsKICAgICAgICAgbG9v
cEFyb3VuZC5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCi0g
ICAgICAgICAgICBidWNrZXRHUFIsIFRydXN0ZWRJbW1QdHIoSGFzaE1hcEltcGw8SGFzaE1hcEJ1
Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT4+OjpkZWxldGVkVmFsdWUoKSkpKTsKKyAgICAgICAg
ICAgIGJ1Y2tldEdQUiwgVHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8c2l6ZV90PihIYXNoTWFw
SW1wbDxIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46OmRlbGV0ZWRWYWx1ZSgp
KSkpKTsKIAogICAgICAgICBtX2ppdC5sb2FkNjQoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYnVj
a2V0R1BSLCBIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pjo6b2Zmc2V0T2ZLZXko
KSksIGJ1Y2tldEdQUik7CiAKQEAgLTU5ODIsNyArNTk4Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVBbGxvY2F0ZU5ld0EKICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tNjQo
SlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSkpLCBzY3JhdGNoR1BSKTsKICAgICBlbWl0SW5pdGlh
bGl6ZUJ1dHRlcmZseShzdG9yYWdlR1BSLCBzaXplR1BSLCBKU1ZhbHVlUmVncyhzY3JhdGNoR1BS
KSwgc2NyYXRjaDJHUFIpOwogCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmpl
Y3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGlu
Z1R5cGUpOworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9qaXQuZ3JhcGgo
KS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhp
bmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpKTsKICAgICAKICAgICBlbWl0QWxs
b2NhdGVKU09iamVjdDxKU0FycmF5PihyZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJl
KSwgc3RvcmFnZUdQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNlcyk7CiAgICAg
CkBAIC01OTkxLDcgKzU5OTEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2Nh
dGVOZXdBCiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxDYWxsQXJy
YXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3I+KAogICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIHJlc3VsdEdQUiwKICAg
ICAgICAgc3RydWN0dXJlLAotICAgICAgICBzaG91bGRDb252ZXJ0TGFyZ2VTaXplVG9BcnJheVN0
b3JhZ2UgPyBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5n
QWxsb2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2UpIDogc3RydWN0dXJlLAorICAgICAgICBz
aG91bGRDb252ZXJ0TGFyZ2VTaXplVG9BcnJheVN0b3JhZ2UgPyBtX2ppdC5ncmFwaCgpLnJlZ2lz
dGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVE
dXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aEFycmF5U3RvcmFnZSkpIDogc3RydWN0dXJlLAogICAg
ICAgICBzaXplR1BSLCBzdG9yYWdlR1BSKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyMTEyMjkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODQsNyArODQsNyBAQCBTcGVjdWxhdGl2ZUpJVDo6flNwZWN1bGF0aXZlSklU
KCkKIHsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlUmF3T2JqZWN0KEdQ
UlJlZyByZXN1bHRHUFIsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBHUFJSZWcgc3RvcmFnZUdQUiwg
dW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCkKK3ZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZVJhd09iamVjdChHUFJSZWcgcmVzdWx0R1BSLCBSZWdpc3Rl
cmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgR1BSUmVnIHN0b3JhZ2VHUFIsIHVuc2lnbmVkIG51bUVs
ZW1lbnRzLCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpCiB7CiAgICAgSW5kZXhpbmdUeXBlIGluZGV4
aW5nVHlwZSA9IHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCk7CiAgICAgYm9vbCBoYXNJbmRleGlu
Z0hlYWRlciA9IGhhc0luZGV4ZWRQcm9wZXJ0aWVzKGluZGV4aW5nVHlwZSk7CkBAIC05OCw3ICs5
OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZVJhd09iamUKICAgICBHUFJS
ZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKIAogICAgIEFTU0VSVCh2ZWN0b3JMZW5n
dGggPj0gbnVtRWxlbWVudHMpOwotICAgIHZlY3Rvckxlbmd0aCA9IEJ1dHRlcmZseTo6b3B0aW1h
bENvbnRpZ3VvdXNWZWN0b3JMZW5ndGgoc3RydWN0dXJlLCB2ZWN0b3JMZW5ndGgpOworICAgIHZl
Y3Rvckxlbmd0aCA9IEJ1dHRlcmZseTo6b3B0aW1hbENvbnRpZ3VvdXNWZWN0b3JMZW5ndGgoc3Ry
dWN0dXJlLmdldCgpLCB2ZWN0b3JMZW5ndGgpOwogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1w
TGlzdCBzbG93Q2FzZXM7CiAKQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjplbWl0R2V0Q2FsbGVlKENvZGVPCiAgICAgICAgICAgICAgICAgY2FsbGVlR1BSKTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1faml0Lm1vdmUoCi0gICAgICAgICAgICAgICAgVHJ1
c3RlZEltbVB0cihvcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVSZWNvdmVyeS5jb25zdGFu
dCgpLmFzQ2VsbCgpKSwKKyAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2ppdC5ncmFwaCgpLCBvcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVSZWNvdmVyeS5j
b25zdGFudCgpLmFzQ2VsbCgpKSwKICAgICAgICAgICAgICAgICBjYWxsZWVHUFIpOwogICAgICAg
ICB9CiAgICAgfSBlbHNlCkBAIC02NDgsNyArNjQ4LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
c2lsZW50RmlsbChjb25zdCBTaQogICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihwbGFu
Lm5vZGUoKS0+YXNCb29sZWFuKCkpLCBwbGFuLmdwcigpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBTZXRDZWxsQ29uc3RhbnQ6Ci0gICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihw
bGFuLm5vZGUoKS0+YXNDZWxsKCkpLCBwbGFuLmdwcigpKTsKKyAgICAgICAgQVNTRVJUKHBsYW4u
bm9kZSgpLT5jb25zdGFudCgpLT52YWx1ZSgpLmlzQ2VsbCgpKTsKKyAgICAgICAgbV9qaXQubW92
ZShUcnVzdGVkSW1tUHRyKHBsYW4ubm9kZSgpLT5jb25zdGFudCgpKSwgcGxhbi5ncHIoKSk7CiAg
ICAgICAgIGJyZWFrOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgY2FzZSBTZXRUcnVzdGVkSlND
b25zdGFudDoKQEAgLTg3Nyw3ICs4NzgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjaGVja0Fy
cmF5KE5vZGUqIG5vCiAgICAgICAgIG1faml0LmJyYW5jaFB0cigKICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHRlbXAuZ3ByKCksIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpLAotICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoZXhwZWN0ZWRDbGFzc0luZm8pKSk7CisgICAg
ICAgICAgICBUcnVzdGVkSW1tUHRyKGV4cGVjdGVkQ2xhc3NJbmZvKSkpOwogICAgIAogICAgIG5v
UmVzdWx0KG1fY3VycmVudE5vZGUpOwogfQpAQCAtMjA1NSw3ICsyMDU2LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25TdAogICAgIGNvbnQ4Qml0LmxpbmsoJm1faml0
KTsKIAogICAgIG1faml0LmxzaGlmdDMyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoc2l6
ZW9mKHZvaWQqKSA9PSA0ID8gMiA6IDMpLCBzY3JhdGNoUmVnKTsKLSAgICBtX2ppdC5hZGRQdHIo
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c21hbGxTdHJpbmdzLnNp
bmdsZUNoYXJhY3RlclN0cmluZ3MoKSksIHNjcmF0Y2hSZWcpOworICAgIG1faml0LmFkZFB0cihU
cnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJp
bmdzKCkpLCBzY3JhdGNoUmVnKTsKICAgICBtX2ppdC5sb2FkUHRyKHNjcmF0Y2hSZWcsIHNjcmF0
Y2hSZWcpOwogCiAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCkBAIC0yMTQ2LDcgKzIxNDcsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRnJvbUNoYXJDb2RlCiAKICAgICBKSVRDb21w
aWxlcjo6SnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJh
bmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcsIFRydXN0ZWRJ
bW0zMigweGZmKSkpOwotICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIobV9qaXQudm0oKS0+c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZ3MoKSksIHNt
YWxsU3RyaW5nc1JlZyk7CisgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0LnZtKCkt
PnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmdzKCkpLCBzbWFsbFN0cmluZ3NSZWcp
OwogICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzbWFsbFN0cmlu
Z3NSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6U2NhbGVQdHIsIDApLCBzY3JhdGNo
UmVnKTsKIAogICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNz
ZW1ibGVyOjpaZXJvLCBzY3JhdGNoUmVnKSk7CkBAIC0yNDY4LDcgKzI0NjksNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlRG91YmxlUmVwKE5vCiAgICAgICAgICAgICBKSVRDb21waWxl
cjo6SnVtcCBpc1VuZGVmaW5lZCA9IG1faml0LmJyYW5jaDY0KEpJVENvbXBpbGVyOjpFcXVhbCwg
b3AxR1BSLCBUcnVzdGVkSW1tNjQoVmFsdWVVbmRlZmluZWQpKTsKIAogICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IGRvdWJsZSB6ZXJvID0gMDsKLSAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUo
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJnplcm8pLCByZXN1bHRGUFIpOworICAgICAg
ICAgICAgbV9qaXQubG9hZERvdWJsZShUcnVzdGVkSW1tUHRyKCZ6ZXJvKSwgcmVzdWx0RlBSKTsK
IAogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOdWxsID0gbV9qaXQuYnJhbmNoNjQo
SklUQ29tcGlsZXI6OkVxdWFsLCBvcDFHUFIsIFRydXN0ZWRJbW02NChWYWx1ZU51bGwpKTsKICAg
ICAgICAgICAgIGRvbmUuYXBwZW5kKGlzTnVsbCk7CkBAIC0yNDc4LDEzICsyNDc5LDEzIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVSZXAoTm8KIAogICAgICAgICAgICAgSklU
Q29tcGlsZXI6Okp1bXAgaXNGYWxzZSA9IG1faml0LmJyYW5jaDY0KEpJVENvbXBpbGVyOjpFcXVh
bCwgb3AxR1BSLCBUcnVzdGVkSW1tNjQoVmFsdWVGYWxzZSkpOwogICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IGRvdWJsZSBvbmUgPSAxOwotICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmb25lKSwgcmVzdWx0RlBSKTsKKyAgICAgICAgICAg
IG1faml0LmxvYWREb3VibGUoVHJ1c3RlZEltbVB0cigmb25lKSwgcmVzdWx0RlBSKTsKICAgICAg
ICAgICAgIGRvbmUuYXBwZW5kKG1faml0Lmp1bXAoKSk7CiAgICAgICAgICAgICBkb25lLmFwcGVu
ZChpc0ZhbHNlKTsKIAogICAgICAgICAgICAgaXNVbmRlZmluZWQubGluaygmbV9qaXQpOwogICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBOYU4gPSBQTmFOOwotICAgICAgICAgICAgbV9q
aXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmTmFOKSwgcmVzdWx0
RlBSKTsKKyAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoVHJ1c3RlZEltbVB0cigmTmFOKSwg
cmVzdWx0RlBSKTsKICAgICAgICAgICAgIGRvbmUuYXBwZW5kKG1faml0Lmp1bXAoKSk7CiAKICAg
ICAgICAgICAgIGlzTnVtYmVyLmxpbmsoJm1faml0KTsKQEAgLTI1MTcsNyArMjUxOCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVSZXAoTm8KICAgICAgICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wIGlzVW5kZWZpbmVkID0gbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6OkVx
dWFsLCBvcDFUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpVbmRlZmluZWRUYWcpKTsKIAog
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSB6ZXJvID0gMDsKLSAgICAgICAgICAgIG1f
aml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJnplcm8pLCByZXN1
bHRGUFIpOworICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShUcnVzdGVkSW1tUHRyKCZ6ZXJv
KSwgcmVzdWx0RlBSKTsKIAogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOdWxsID0g
bV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6OkVxdWFsLCBvcDFUYWdHUFIsIFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpOdWxsVGFnKSk7CiAgICAgICAgICAgICBkb25lLmFwcGVuZChpc051bGwpOwpA
QCAtMjUyNiwxMyArMjUyNywxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlRG91Ymxl
UmVwKE5vCiAKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzRmFsc2UgPSBtX2ppdC5i
cmFuY2hUZXN0MzIoSklUQ29tcGlsZXI6Olplcm8sIG9wMVBheWxvYWRHUFIsIFRydXN0ZWRJbW0z
MigxKSk7CiAgICAgICAgICAgICBzdGF0aWMgY29uc3QgZG91YmxlIG9uZSA9IDE7Ci0gICAgICAg
ICAgICBtX2ppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZvbmUp
LCByZXN1bHRGUFIpOworICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShUcnVzdGVkSW1tUHRy
KCZvbmUpLCByZXN1bHRGUFIpOwogICAgICAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuanVtcCgp
KTsKICAgICAgICAgICAgIGRvbmUuYXBwZW5kKGlzRmFsc2UpOwogCiAgICAgICAgICAgICBpc1Vu
ZGVmaW5lZC5saW5rKCZtX2ppdCk7CiAgICAgICAgICAgICBzdGF0aWMgY29uc3QgZG91YmxlIE5h
TiA9IFBOYU47Ci0gICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKCZOYU4pLCByZXN1bHRGUFIpOworICAgICAgICAgICAgbV9qaXQubG9hZERv
dWJsZShUcnVzdGVkSW1tUHRyKCZOYU4pLCByZXN1bHRGUFIpOwogICAgICAgICAgICAgZG9uZS5h
cHBlbmQobV9qaXQuanVtcCgpKTsKIAogICAgICAgICAgICAgaXNOdW1iZXIubGluaygmbV9qaXQp
OwpAQCAtMjY0NywxMiArMjY0OCwxMiBAQCBzdGF0aWMgdm9pZCBjb21waWxlQ2xhbXBEb3VibGVU
b0J5dGUoSklUCiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSB6ZXJvID0gMDsKICAgICBzdGF0aWMg
Y29uc3QgZG91YmxlIGJ5dGVNYXggPSAyNTU7CiAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBoYWxm
ID0gMC41OwotICAgIGppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KCZ6ZXJvKSwgc2NyYXRjaCk7CisgICAgaml0LmxvYWREb3VibGUoSklUQ29tcGlsZXI6OlRydXN0
ZWRJbW1QdHIoJnplcm8pLCBzY3JhdGNoKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCB0b29T
bWFsbCA9IGppdC5icmFuY2hEb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUxlc3NUaGFuT3JF
cXVhbE9yVW5vcmRlcmVkLCBzb3VyY2UsIHNjcmF0Y2gpOwotICAgIGppdC5sb2FkRG91YmxlKE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZieXRlTWF4KSwgc2NyYXRjaCk7CisgICAgaml0
LmxvYWREb3VibGUoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIoJmJ5dGVNYXgpLCBzY3JhdGNo
KTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCB0b29CaWcgPSBqaXQuYnJhbmNoRG91YmxlKE1h
Y3JvQXNzZW1ibGVyOjpEb3VibGVHcmVhdGVyVGhhbiwgc291cmNlLCBzY3JhdGNoKTsKICAgICAK
LSAgICBqaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmaGFsZiks
IHNjcmF0Y2gpOworICAgIGppdC5sb2FkRG91YmxlKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRy
KCZoYWxmKSwgc2NyYXRjaCk7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IGp1
c3QgdXNlIGEgZmxvYXRpbmcgcG9pbnQgcm91bmQhCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMDU0CiAgICAgaml0LmFkZERvdWJsZShzb3VyY2UsIHNj
cmF0Y2gpOwpAQCAtMzkwMCw3ICszOTAxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU1ha2VSb3BlKE5vZAogICAgIE1hcmtlZEFsbG9jYXRvciogbWFya2VkQWxsb2NhdG9yID0gc3Vi
c3BhY2VGb3I8SlNTdHJpbmc+KCptX2ppdC52bSgpKS0+YWxsb2NhdG9yRm9yKHNpemVvZihKU1Jv
cGVTdHJpbmcpKTsKICAgICBSRUxFQVNFX0FTU0VSVChtYXJrZWRBbGxvY2F0b3IpOwogICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtYXJrZWRBbGxvY2F0b3IpLCBhbGxvY2F0b3JHUFIpOwot
ICAgIGVtaXRBbGxvY2F0ZUpTQ2VsbChyZXN1bHRHUFIsIG1hcmtlZEFsbG9jYXRvciwgYWxsb2Nh
dG9yR1BSLCBUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSks
IHNjcmF0Y2hHUFIsIHNsb3dQYXRoKTsKKyAgICBlbWl0QWxsb2NhdGVKU0NlbGwocmVzdWx0R1BS
LCBtYXJrZWRBbGxvY2F0b3IsIGFsbG9jYXRvckdQUiwgVHJ1c3RlZEltbVB0cihtX2ppdC5ncmFw
aCgpLnJlZ2lzdGVyU3RydWN0dXJlKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkp
LCBzY3JhdGNoR1BSLCBzbG93UGF0aCk7CiAgICAgICAgIAogICAgIG1faml0LnN0b3JlUHRyKFRy
dXN0ZWRJbW1QdHIoMCksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNTdHJpbmc6
Om9mZnNldE9mVmFsdWUoKSkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1PcEdQ
UnM7ICsraSkKQEAgLTUwOTcsNyArNTA5OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVBcml0aFJvdW5kaW4KICAgICAgICAgICAgICAgICBGUFJSZWcgcmVzdWx0RlBSID0gcmVzdWx0
LmZwcigpOwogICAgICAgICAgICAgICAgIGlmIChwcm9kdWNlc0ludGVnZXIobm9kZS0+YXJpdGhS
b3VuZGluZ01vZGUoKSkgJiYgIXNob3VsZENoZWNrTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoUm91
bmRpbmdNb2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBkb3VibGUg
aGFsZkNvbnN0YW50ID0gMC41OwotICAgICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkRG91Ymxl
KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZoYWxmQ29uc3RhbnQpLCByZXN1bHRGUFIp
OworICAgICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKFRydXN0ZWRJbW1QdHIoJmhh
bGZDb25zdGFudCksIHJlc3VsdEZQUik7CiAgICAgICAgICAgICAgICAgICAgIG1faml0LmFkZERv
dWJsZSh2YWx1ZUZQUiwgcmVzdWx0RlBSKTsKICAgICAgICAgICAgICAgICAgICAgbV9qaXQuZmxv
b3JEb3VibGUocmVzdWx0RlBSLCByZXN1bHRGUFIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7
CkBAIC01MTA5LDExICs1MTEwLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0
aFJvdW5kaW4KICAgICAgICAgICAgICAgICAgICAgRlBSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7
CiAgICAgICAgICAgICAgICAgICAgIEZQUlJlZyBzY3JhdGNoRlBSID0gc2NyYXRjaC5mcHIoKTsK
ICAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBoYWxmQ29uc3RhbnQgPSAw
LjU7Ci0gICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIoJmhhbGZDb25zdGFudCksIHNjcmF0Y2hGUFIpOworICAgICAgICAgICAg
ICAgICAgICBtX2ppdC5sb2FkRG91YmxlKFRydXN0ZWRJbW1QdHIoJmhhbGZDb25zdGFudCksIHNj
cmF0Y2hGUFIpOwogCiAgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHNob3Vs
ZFVzZUNlaWxlZCA9IG1faml0LmJyYW5jaERvdWJsZShKSVRDb21waWxlcjo6RG91YmxlTGVzc1Ro
YW5PckVxdWFsLCByZWFsUGFydEZQUiwgc2NyYXRjaEZQUik7CiAgICAgICAgICAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBkb3VibGUgb25lQ29uc3RhbnQgPSAtMS4wOwotICAgICAgICAgICAgICAg
ICAgICBtX2ppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZvbmVD
b25zdGFudCksIHNjcmF0Y2hGUFIpOworICAgICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkRG91
YmxlKFRydXN0ZWRJbW1QdHIoJm9uZUNvbnN0YW50KSwgc2NyYXRjaEZQUik7CiAgICAgICAgICAg
ICAgICAgICAgIG1faml0LmFkZERvdWJsZShzY3JhdGNoRlBSLCByZXN1bHRGUFIpOwogICAgICAg
ICAgICAgICAgICAgICBzaG91bGRVc2VDZWlsZWQubGluaygmbV9qaXQpOwogICAgICAgICAgICAg
ICAgIH0KQEAgLTYzNTMsMTIgKzYzNTQsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUNoZWNrU3RyaW5nSQogICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgQ2xhc3NUeXBlPiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3RnVuY3Rpb25Db21t
b24oR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBzY3JhdGNo
MUdQUiwgR1BSUmVnIHNjcmF0Y2gyR1BSLCBHUFJSZWcgc2NvcGVHUFIsIE1hY3JvQXNzZW1ibGVy
OjpKdW1wTGlzdCYgc2xvd1BhdGgsIHNpemVfdCBzaXplLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4
ZWN1dGFibGUsIHB0cmRpZmZfdCBvZmZzZXRPZlNjb3BlQ2hhaW4sIHB0cmRpZmZfdCBvZmZzZXRP
ZkV4ZWN1dGFibGUsIHB0cmRpZmZfdCBvZmZzZXRPZlJhcmVEYXRhKQordGVtcGxhdGUgPHR5cGVu
YW1lIENsYXNzVHlwZT4gdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uQ29t
bW9uKEdQUlJlZyByZXN1bHRHUFIsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCBHUFJS
ZWcgc2NyYXRjaDFHUFIsIEdQUlJlZyBzY3JhdGNoMkdQUiwgR1BSUmVnIHNjb3BlR1BSLCBNYWNy
b0Fzc2VtYmxlcjo6SnVtcExpc3QmIHNsb3dQYXRoLCBzaXplX3Qgc2l6ZSwgRnVuY3Rpb25FeGVj
dXRhYmxlKiBleGVjdXRhYmxlLCBwdHJkaWZmX3Qgb2Zmc2V0T2ZTY29wZUNoYWluLCBwdHJkaWZm
X3Qgb2Zmc2V0T2ZFeGVjdXRhYmxlLCBwdHJkaWZmX3Qgb2Zmc2V0T2ZSYXJlRGF0YSkKIHsKICAg
ICBlbWl0QWxsb2NhdGVKU09iamVjdFdpdGhLbm93blNpemU8Q2xhc3NUeXBlPihyZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgVHJ1c3RlZEltbVB0cigwKSwgc2NyYXRjaDFHUFIs
IHNjcmF0Y2gyR1BSLCBzbG93UGF0aCwgc2l6ZSk7CiAgICAgCiAgICAgbV9qaXQuc3RvcmVQdHIo
c2NvcGVHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0T2ZTY29wZUNo
YWluKSk7Ci0gICAgbV9qaXQuc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihleGVjdXRhYmxlKSwgSklU
Q29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRPZkV4ZWN1dGFibGUpKTsKKyAgICBt
X2ppdC5zdG9yZVB0cihUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBl
eGVjdXRhYmxlKSwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRPZkV4ZWN1
dGFibGUpKTsKICAgICBtX2ppdC5zdG9yZVB0cihUcnVzdGVkSW1tUHRyKDApLCBKSVRDb21waWxl
cjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9mZnNldE9mUmFyZURhdGEpKTsKICAgICAKICAgICBtX2pp
dC5tdXRhdG9yRmVuY2UoKTsKQEAgLTYzOTEsMTAgKzYzOTIsMTAgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPQorICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJl
ID0gbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZSgKICAgICAgICAgbm9kZVR5cGUgPT0g
TmV3R2VuZXJhdG9yRnVuY3Rpb24gPyBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLT5nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpIDoKICAgICAg
ICAgbm9kZVR5cGUgPT0gTmV3QXN5bmNGdW5jdGlvbiA/IG1faml0LmdyYXBoKCkuZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKSA6
Ci0gICAgICAgIG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyktPmZ1bmN0aW9uU3RydWN0dXJlKCk7CisgICAgICAgIG1faml0LmdyYXBoKCkuZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmZ1bmN0aW9uU3RydWN0dXJlKCkpOwog
ICAgIAogICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgR1BSVGVtcG9yYXJ5IHNj
cmF0Y2gxKHRoaXMpOwpAQCAtNjUxMCw4ICs2NTExLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUZvcndhcmRWYXJhcgogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUFj
dGl2YXRpb24oTm9kZSogbm9kZSkKIHsKICAgICBTeW1ib2xUYWJsZSogdGFibGUgPSBub2RlLT5j
YXN0T3BlcmFuZDxTeW1ib2xUYWJsZSo+KCk7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBt
X2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcigKLSAgICAgICAgbm9kZS0+b3JpZ2luLnNlbWFu
dGljKS0+YWN0aXZhdGlvblN0cnVjdHVyZSgpOworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3Ry
dWN0dXJlID0gbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShtX2ppdC5ncmFwaCgpLmds
b2JhbE9iamVjdEZvcigKKyAgICAgICAgbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YWN0aXZhdGlv
blN0cnVjdHVyZSgpKTsKICAgICAgICAgCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEdQUlJlZyBzY29wZUdQUiA9IHNjb3BlLmdwcigp
OwpAQCAtNjU1Miw3ICs2NTUzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0
ZUFjdGl2YQogICAgIC8vIGFjdGl2YXRpb24gbXVzdCBiZSB5b3VuZy4KICAgICBtX2ppdC5zdG9y
ZVB0cihzY29wZUdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU1Njb3BlOjpv
ZmZzZXRPZk5leHQoKSkpOwogICAgIG1faml0LnN0b3JlUHRyKAotICAgICAgICBUcnVzdGVkSW1t
UHRyKHRhYmxlKSwKKyAgICAgICAgVHJ1c3RlZEltbVB0cihub2RlLT5jZWxsT3BlcmFuZCgpKSwK
ICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0xleGljYWxFbnZpcm9u
bWVudDo6b2Zmc2V0T2ZTeW1ib2xUYWJsZSgpKSk7CiAgICAgICAgIAogICAgIC8vIE11c3QgaW5p
dGlhbGl6ZSBhbGwgbWVtYmVycyB0byB1bmRlZmluZWQgb3IgdGhlIFREWiBlbXB0eSB2YWx1ZS4K
QEAgLTY2MTUsOCArNjYxNiw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVE
aXJlY3QKICAgICAgICAgbV9qaXQuc3ViMzIoVHJ1c3RlZEltbTMyKDEpLCBsZW5ndGhHUFIpOwog
ICAgIH0KICAgICAgICAgCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPQotICAgICAgICBtX2pp
dC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5kaXJlY3RB
cmd1bWVudHNTdHJ1Y3R1cmUoKTsKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9
CisgICAgICAgIG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUobV9qaXQuZ3JhcGgoKS5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZGlyZWN0QXJndW1lbnRzU3Ry
dWN0dXJlKCkpOwogICAgICAgICAKICAgICAvLyBVc2UgYSBkaWZmZXJlbnQgc3RyYXRlZ3kgZm9y
IGFsbG9jYXRpbmcgdGhlIG9iamVjdCBkZXBlbmRpbmcgb24gd2hldGhlciB3ZSBrbm93IGl0cwog
ICAgIC8vIHNpemUgc3RhdGljYWxseS4KQEAgLTY2ODEsOCArNjY4Miw4IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVEaXJlY3QKICAgICAgICAgICAgICAgICBzY3JhdGNoMUdQ
Uik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKAotICAgICAgICAg
ICAgICAgIFRydXN0ZWRJbW1QdHIoCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWUtPmNhbGxlZVJlY292ZXJ5LmNvbnN0YW50KCkuYXNDZWxs
KCkpLAorICAgICAgICAgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKAorICAgICAg
ICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLCBub2RlLT5vcmlnaW4uc2VtYW50aWMuaW5saW5l
Q2FsbEZyYW1lLT5jYWxsZWVSZWNvdmVyeS5jb25zdGFudCgpLmFzQ2VsbCgpKSwKICAgICAgICAg
ICAgICAgICBzY3JhdGNoMUdQUik7CiAgICAgICAgIH0KICAgICB9IGVsc2UKQEAgLTY3OTgsNyAr
Njc5OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVTY29wZWQKICAgICBt
X2ppdC5zZXR1cEFyZ3VtZW50KAogICAgICAgICAxLCBbJl0gKEdQUlJlZyBkZXN0R1BSKSB7CiAg
ICAgICAgICAgICBtX2ppdC5tb3ZlKAotICAgICAgICAgICAgICAgIFRydXN0ZWRJbW1QdHIobV9q
aXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnNjb3BlZEFyZ3VtZW50
c1N0cnVjdHVyZSgpKSwKKyAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2ppdC5ncmFwaCgpLCBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKS0+c2NvcGVkQXJndW1lbnRzU3RydWN0dXJlKCkpLAogICAgICAgICAgICAgICAgIGRlc3RH
UFIpOwogICAgICAgICB9KTsKICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50KDAsIFsmXSAoR1BSUmVn
IGRlc3RHUFIpIHsgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgZGVzdEdQ
Uik7IH0pOwpAQCAtNjgyNSw4ICs2ODI2LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUNyZWF0ZUNsb25lZAogICAgIG1faml0LnNldHVwQXJndW1lbnQoCiAgICAgICAgIDEsIFsmXSAo
R1BSUmVnIGRlc3RHUFIpIHsKICAgICAgICAgICAgIG1faml0Lm1vdmUoCi0gICAgICAgICAgICAg
ICAgVHJ1c3RlZEltbVB0cigKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQuZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmNsb25lZEFyZ3VtZW50c1N0cnVjdHVyZSgpKSwK
KyAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcigKKyAgICAgICAgICAg
ICAgICAgICAgbV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyktPmNsb25lZEFyZ3VtZW50c1N0cnVjdHVyZSgpKSwKICAgICAgICAgICAgICAg
ICBkZXN0R1BSKTsKICAgICAgICAgfSk7CiAgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgwLCBbJl0g
KEdQUlJlZyBkZXN0R1BSKSB7IG1faml0Lm1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IGRlc3RHUFIpOyB9KTsKQEAgLTY5NDksNyArNjk1MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVTcHJlYWQoTm9kZSoKICAgICAgICAgbV9qaXQubHNoaWZ0MzIoVHJ1c3RlZEltbTMy
KDMpLCBzY3JhdGNoMUdQUik7CiAgICAgICAgIG1faml0LmFkZDMyKFRydXN0ZWRJbW0zMihKU0Zp
eGVkQXJyYXk6Om9mZnNldE9mRGF0YSgpKSwgc2NyYXRjaDFHUFIpOwogCi0gICAgICAgIG1faml0
LmVtaXRBbGxvY2F0ZVZhcmlhYmxlU2l6ZWRDZWxsPEpTRml4ZWRBcnJheT4ocmVzdWx0R1BSLCBU
cnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkubV92bS5maXhlZEFycmF5U3RydWN0dXJlLmdldCgp
KSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd1BhdGgpOworICAg
ICAgICBtX2ppdC5lbWl0QWxsb2NhdGVWYXJpYWJsZVNpemVkQ2VsbDxKU0ZpeGVkQXJyYXk+KHJl
c3VsdEdQUiwgVHJ1c3RlZEltbVB0cihtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKG1f
aml0LmdyYXBoKCkubV92bS5maXhlZEFycmF5U3RydWN0dXJlLmdldCgpKSksIHNjcmF0Y2gxR1BS
LCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIsIHNsb3dQYXRoKTsKICAgICAgICAgbV9qaXQuc3Rv
cmUzMihsZW5ndGhHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNGaXhl
ZEFycmF5OjpvZmZzZXRPZlNpemUoKSkpOwogCiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYXJndW1lbnQsIEpTT2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSks
IHNjcmF0Y2gxR1BSKTsKQEAgLTcyNjYsMTcgKzcyNjcsMTcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUFycmF5U2xpY2UoTgogICAgICAgICAvLyB0byBlbnN1cmUgdGhlIGluY29taW5n
IGFycmF5IGlzIG9uZSB0byBiZSBvbmUgb2YgdGhlIG9yaWdpbmFsIGFycmF5IHN0cnVjdHVyZXMK
ICAgICAgICAgLy8gd2l0aCBvbmUgb2YgdGhlIGZvbGxvd2luZyBpbmRleGluZyBzaGFwZXM6IElu
dDMyLCBDb250aWd1b3VzLCBEb3VibGUuIFRoZXJlZm9yZSwKICAgICAgICAgLy8gd2UncmUgYSBk
b3VibGUgYXJyYXkgaGVyZS4KLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKGdsb2Jh
bE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFy
cmF5V2l0aERvdWJsZSkpLCB0ZW1wVmFsdWUpOworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJ
bW1QdHIobV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5
U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhEb3VibGUp
KSksIHRlbXBWYWx1ZSk7CiAgICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZShqc05hTigpKTsKICAg
ICAgICAgZG9uZS5hcHBlbmQobV9qaXQuanVtcCgpKTsKIAogICAgICAgICBpc0NvbnRpZ3VvdXMu
bGluaygmbV9qaXQpOwotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2Jq
ZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlX
aXRoQ29udGlndW91cykpLCB0ZW1wVmFsdWUpOworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJ
bW1QdHIobV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5
U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhDb250aWd1
b3VzKSkpLCB0ZW1wVmFsdWUpOwogICAgICAgICBlbWl0TW92ZUVtcHR5VmFsdWUoSlNWYWx1ZSgp
KTsKICAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuanVtcCgpKTsKIAogICAgICAgICBpc0ludDMy
LmxpbmsoJm1faml0KTsKLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKGdsb2JhbE9i
amVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5
V2l0aEludDMyKSksIHRlbXBWYWx1ZSk7CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0
cihtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1
Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aEludDMyKSkpLCB0
ZW1wVmFsdWUpOwogICAgICAgICBlbWl0TW92ZUVtcHR5VmFsdWUoSlNWYWx1ZSgpKTsKIAogICAg
ICAgICBkb25lLmxpbmsoJm1faml0KTsKQEAgLTc0NTYsNyArNzQ1Nyw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVUeXBlT2YoTm9kZSoKICAgICBtX2ppdC5lbWl0VHlwZU9mKAogICAg
ICAgICB2YWx1ZVJlZ3MsIHJlc3VsdEdQUiwKICAgICAgICAgWyZdIChUeXBlb2ZUeXBlIHR5cGUs
IGJvb2wgZmFsbHNUaHJvdWdoKSB7Ci0gICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1Q
dHIobV9qaXQudm0oKS0+c21hbGxTdHJpbmdzLnR5cGVTdHJpbmcodHlwZSkpLCByZXN1bHRHUFIp
OworICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2pp
dC5ncmFwaCgpLCBtX2ppdC52bSgpLT5zbWFsbFN0cmluZ3MudHlwZVN0cmluZyh0eXBlKSksIHJl
c3VsdEdQUik7CiAgICAgICAgICAgICBpZiAoIWZhbGxzVGhyb3VnaCkKICAgICAgICAgICAgICAg
ICBkb25lLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogICAgICAgICB9LApAQCAtNzU4MCw3ICs3NTgx
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFsbG9jYXRlUHJvcAogICAgIEdQUlJl
ZyBzY3JhdGNoR1BSMiA9IHNjcmF0Y2gyLmdwcigpOwogICAgIEdQUlJlZyBzY3JhdGNoR1BSMyA9
IHNjcmF0Y2gzLmdwcigpOwogICAgICAgICAKLSAgICBtX2ppdC5tb3ZlKEpJVENvbXBpbGVyOjpU
cnVzdGVkSW1tUHRyKGFsbG9jYXRvciksIHNjcmF0Y2hHUFIyKTsKKyAgICBtX2ppdC5tb3ZlKFRy
dXN0ZWRJbW1QdHIoYWxsb2NhdG9yKSwgc2NyYXRjaEdQUjIpOwogICAgIEpJVENvbXBpbGVyOjpK
dW1wTGlzdCBzbG93UGF0aDsKICAgICBtX2ppdC5lbWl0QWxsb2NhdGUoc2NyYXRjaEdQUjEsIGFs
bG9jYXRvciwgc2NyYXRjaEdQUjIsIHNjcmF0Y2hHUFIzLCBzbG93UGF0aCk7CiAgICAgbV9qaXQu
YWRkUHRyKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoc2l6ZSArIHNpemVvZihJbmRleGluZ0hl
YWRlcikpLCBzY3JhdGNoR1BSMSk7CkBAIC03NjI4LDcgKzc2MjksNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlUmVhbGxvY2F0ZVByCiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIzID0gc2Ny
YXRjaDMuZ3ByKCk7CiAgICAgCiAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dQYXRoOwot
ICAgIG1faml0Lm1vdmUoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIoYWxsb2NhdG9yKSwgc2Ny
YXRjaEdQUjIpOworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihhbGxvY2F0b3IpLCBzY3Jh
dGNoR1BSMik7CiAgICAgbV9qaXQuZW1pdEFsbG9jYXRlKHNjcmF0Y2hHUFIxLCBhbGxvY2F0b3Is
IHNjcmF0Y2hHUFIyLCBzY3JhdGNoR1BSMywgc2xvd1BhdGgpOwogICAgIAogICAgIG1faml0LmFk
ZFB0cihKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKG5ld1NpemUgKyBzaXplb2YoSW5kZXhpbmdI
ZWFkZXIpKSwgc2NyYXRjaEdQUjEpOwpAQCAtNzg1NywxMCArNzg1OCwxMCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdPckNhCiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7CiAKICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpBZGRy
ZXNzKG9wMUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVzdWx0R1BSKTsKLSAg
ICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNTdHJpbmcgPSBtX2ppdC5icmFuY2hTdHJ1Y3R1cmUo
CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzU3RyaW5nID0gbV9qaXQuYnJhbmNoV2Vha1N0
cnVjdHVyZSgKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpFcXVhbCwKICAgICAgICAgICAgIHJl
c3VsdEdQUiwKLSAgICAgICAgICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSk7
CisgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKG1faml0LnZtKCkt
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogCiAgICAgICAgIHNwZWN1bGF0ZVN0cmluZ09iamVj
dEZvclN0cnVjdHVyZShub2RlLT5jaGlsZDEoKSwgcmVzdWx0R1BSKTsKICAgICAgICAgCkBAIC03
OTU2LDggKzc5NTcsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJh
CiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgVHlwZWRBcnJheVR5cGUg
dHlwZSA9IG5vZGUtPnR5cGVkQXJyYXlUeXBlKCk7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBnbG9iYWxPYmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZSk7Ci0g
ICAgUkVMRUFTRV9BU1NFUlQoc3RydWN0dXJlKTsKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0
cnVjdHVyZSA9IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT50
eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVudGx5KHR5cGUpKTsKKyAgICBSRUxFQVNFX0FTU0VS
VChzdHJ1Y3R1cmUuZ2V0KCkpOwogICAgIAogICAgIFNwZWN1bGF0ZUludDMyT3BlcmFuZCBzaXpl
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBHUFJSZWcgc2l6ZUdQUiA9IHNpemUuZ3ByKCk7
CkBAIC04NDAxLDEwICs4NDAyLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0
cmluZ09yU3QKICAgICBHUFJSZWcgc3RydWN0dXJlSURHUFIgPSBzdHJ1Y3R1cmVJRC5ncHIoKTsK
IAogICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6QWRkcmVzcyhncHIsIEpTQ2VsbDo6c3Ry
dWN0dXJlSURPZmZzZXQoKSksIHN0cnVjdHVyZUlER1BSKTsgCi0gICAgSklUQ29tcGlsZXI6Okp1
bXAgaXNTdHJpbmcgPSBtX2ppdC5icmFuY2hTdHJ1Y3R1cmUoCisgICAgSklUQ29tcGlsZXI6Okp1
bXAgaXNTdHJpbmcgPSBtX2ppdC5icmFuY2hXZWFrU3RydWN0dXJlKAogICAgICAgICBKSVRDb21w
aWxlcjo6RXF1YWwsCiAgICAgICAgIHN0cnVjdHVyZUlER1BSLCAKLSAgICAgICAgbV9qaXQudm0o
KS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKTsKKyAgICAgICAgbV9qaXQuZ3JhcGgoKS5yZWdpc3Rl
clN0cnVjdHVyZShtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAKICAg
ICBzcGVjdWxhdGVTdHJpbmdPYmplY3RGb3JTdHJ1Y3R1cmUoZWRnZSwgc3RydWN0dXJlSURHUFIp
OwogICAgIApAQCAtOTI2Nyw4ICs5MjY4LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUxhenlKU0NvbnN0YQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTWF0ZXJpYWxpemVO
ZXdPYmplY3QoTm9kZSogbm9kZSkKIHsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5vZGUt
PnN0cnVjdHVyZVNldCgpWzBdOwotICAgIEFTU0VSVChtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxk
KG5vZGUsIDApLT5keW5hbWljQ2FzdENvbnN0YW50PFN0cnVjdHVyZSo+KCkgPT0gc3RydWN0dXJl
KTsKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG5vZGUtPnN0cnVjdHVyZVNl
dCgpLmF0KDApOworICAgIEFTU0VSVChtX2ppdC5ncmFwaCgpLnZhckFyZ0NoaWxkKG5vZGUsIDAp
LT5keW5hbWljQ2FzdENvbnN0YW50PFN0cnVjdHVyZSo+KCkgPT0gc3RydWN0dXJlLmdldCgpKTsK
IAogICAgIE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEmIGRhdGEgPSBub2RlLT5vYmplY3RNYXRl
cmlhbGl6YXRpb25EYXRhKCk7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMjExMjI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBA
IC03NSw3ICs3NSw2IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKIHByaXZhdGU6CiAgICAgdHlw
ZWRlZiBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyIFRydXN0ZWRJbW0zMjsKICAgICB0eXBlZGVm
IEpJVENvbXBpbGVyOjpJbW0zMiBJbW0zMjsKLSAgICB0eXBlZGVmIEpJVENvbXBpbGVyOjpUcnVz
dGVkSW1tUHRyIFRydXN0ZWRJbW1QdHI7CiAgICAgdHlwZWRlZiBKSVRDb21waWxlcjo6SW1tUHRy
IEltbVB0cjsKICAgICB0eXBlZGVmIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tNjQgVHJ1c3RlZElt
bTY0OwogICAgIHR5cGVkZWYgSklUQ29tcGlsZXI6OkltbTY0IEltbTY0OwpAQCAtMTEyLDYgKzEx
MSw2NCBAQCBwdWJsaWM6CiAgICAgU3BlY3VsYXRpdmVKSVQoSklUQ29tcGlsZXImKTsKICAgICB+
U3BlY3VsYXRpdmVKSVQoKTsKIAorICAgIHN0cnVjdCBUcnVzdGVkSW1tUHRyIHsKKyAgICAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIoVCog
dmFsdWUpCisgICAgICAgICAgICA6IG1fdmFsdWUodmFsdWUpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxIZWFwQ2VsbCwgVD46OnZhbHVlLCAi
VG8gdXNlIGEgR0MgcG9pbnRlciwgdGhlIGdyYXBoIG11c3QgYmUgYXdhcmUgb2YgaXQuIFVzZSBT
cGVjdWxhdGl2ZUpJVDo6VHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIgaW5zdGVhZC4iKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIoUmVnaXN0ZXJlZFN0cnVj
dHVyZSBzdHJ1Y3R1cmUpCisgICAgICAgICAgICA6IG1fdmFsdWUoc3RydWN0dXJlLmdldCgpKQor
ICAgICAgICB7IH0KKyAgICAgICAgCisgICAgICAgIC8vIFRoaXMgaXMgb25seSBoZXJlIHNvIHRo
YXQgVHJ1c3RlZEltbVB0cigwKSBkb2VzIG5vdCBjb25mdXNlIHRoZSBDKysKKyAgICAgICAgLy8g
b3ZlcmxvYWQgaGFuZGxpbmcgcnVsZXMuCisgICAgICAgIGV4cGxpY2l0IFRydXN0ZWRJbW1QdHIo
aW50IHZhbHVlKQorICAgICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQorICAgICAgICB7CisgICAg
ICAgICAgICBBU1NFUlQoIXZhbHVlKTsKKyAgICAgICAgfQorCisgICAgICAgIGV4cGxpY2l0IFRy
dXN0ZWRJbW1QdHIoc3RkOjpudWxscHRyX3QpCisgICAgICAgICAgICA6IG1fdmFsdWUoMCkKKyAg
ICAgICAgeyB9CisKKyAgICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbVB0cihGcm96ZW5WYWx1ZSog
dmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHZhbHVlLT52YWx1
ZSgpLmlzQ2VsbCgpKTsKKyAgICAgICAgICAgIG1fdmFsdWUgPSBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cih2YWx1ZS0+Y2VsbCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGV4cGxpY2l0
IFRydXN0ZWRJbW1QdHIoc2l6ZV90IHZhbHVlKQorICAgICAgICAgICAgOiBtX3ZhbHVlKGJpdHdp
c2VfY2FzdDx2b2lkKj4odmFsdWUpKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBz
dGF0aWMgVHJ1c3RlZEltbVB0ciB3ZWFrUG9pbnRlcihHcmFwaCYgZ3JhcGgsIEpTQ2VsbCogY2Vs
bCkKKyAgICAgICAgeyAgICAgCisgICAgICAgICAgICAvLyBUaGVyZSBhcmUgd2VpcmQgcmVsYXRp
b25zaGlwcyBpbiBob3cgb3B0aW1pemVkIENvZGVCbG9ja3MKKyAgICAgICAgICAgIC8vIHBvaW50
IHRvIG90aGVyIENvZGVCbG9ja3MuIFdlIGRvbid0IHdhbnQgdG8gaGF2ZSB0aGVtIGJlCisgICAg
ICAgICAgICAvLyBwYXJ0IG9mIHRoZSB3ZWFrIHBvaW50ZXIgc2V0LiBGb3IgZXhhbXBsZSwgYW4g
b3B0aW1pemVkIENvZGVCbG9jaworICAgICAgICAgICAgLy8gaGF2aW5nIGEgd2VhayBwb2ludGVy
IHRvIGl0c2VsZiB3aWxsIGNhdXNlIGl0IHRvIGdldCBjb2xsZWN0ZWQuCisgICAgICAgICAgICBB
U1NFUlQoIWpzRHluYW1pY0Nhc3Q8Q29kZUJsb2NrKj4oY2VsbCkpOworCisgICAgICAgICAgICBn
cmFwaC5tX3BsYW4ud2Vha1JlZmVyZW5jZXMuYWRkTGF6aWx5KGNlbGwpOworICAgICAgICAgICAg
cmV0dXJuIFRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHNpemVfdD4oY2VsbCkpOworICAgICAg
ICB9CisKKyAgICAgICAgb3BlcmF0b3IgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoKSBj
b25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisKKyAgICAgICAgaW50cHRyX3QgYXNJbnRwdHIoKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV92YWx1ZS5hc0ludHB0cigpOworICAgICAg
ICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
ciBtX3ZhbHVlOworICAgIH07CisKICAgICBib29sIGNvbXBpbGUoKTsKICAgICAKICAgICB2b2lk
IGNyZWF0ZU9TUkVudHJpZXMoKTsKQEAgLTk4MiwxNyArMTAzOSwxNyBAQCBwdWJsaWM6CiAgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShvYmosIGltcGwpOwogICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQot
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVN0IG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3Qgb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkKICAgICB7CiAgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVj
dHVyZSkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRP
cGVyYXRpb25fRVN0WlAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVN0WlAgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmcz
KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0
ZWRJbW1QdHIoc3RydWN0dXJlKSwgYXJnMiwgYXJnMyk7CiAgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RaUCBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgYXJnMiwgR1BSUmVnIGFyZzMp
CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3Ra
UCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJl
LCBzaXplX3QgYXJnMiwgR1BSUmVnIGFyZzMpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1t
MzIoYXJnMiksIGFyZzMpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdCk7CkBAIC0xMDAyLDEyICsxMDU5LDEyIEBAIHB1YmxpYzoKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAg
fQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVN0
WkIgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVn
IGFyZzIsIEdQUlJlZyBidXR0ZXJmbHkpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihQX0pJVE9wZXJhdGlvbl9FU3RaQiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFJlZ2lz
dGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGJ1dHRlcmZseSkK
ICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVk
SW1tUHRyKHN0cnVjdHVyZSksIGFyZzIsIGJ1dHRlcmZseSk7CiAgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RaQiBvcGVyYXRpb24sIEdQ
UlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgYXJnMiwgR1BSUmVnIGJ1
dHRlcmZseSkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0
aW9uX0VTdFpCIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBz
dHJ1Y3R1cmUsIHNpemVfdCBhcmcyLCBHUFJSZWcgYnV0dGVyZmx5KQogICAgIHsKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJl
KSwgVHJ1c3RlZEltbTMyKGFyZzIpLCBidXR0ZXJmbHkpOwogICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CkBAIC0xMDIyLDEyICsxMDc5LDEyIEBA
IHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IGFyZzIsIFRydXN0ZWRJbW1QdHIoYnV0dGVyZmx5KSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RQUyBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB2b2lkKiBwb2ludGVyLCBzaXplX3Qgc2l6
ZSkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VT
dFBTIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1
cmUsIHZvaWQqIHBvaW50ZXIsIHNpemVfdCBzaXplKQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgVHJ1c3Rl
ZEltbVB0cihwb2ludGVyKSwgVHJ1c3RlZEltbVB0cihzaXplKSk7CiAgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RTUyBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgaW5kZXgsIHNpemVf
dCBzaXplKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRp
b25fRVN0U1Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0
cnVjdHVyZSwgc2l6ZV90IGluZGV4LCBzaXplX3Qgc2l6ZSkKICAgICB7CiAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRy
dXN0ZWRJbW1QdHIoaW5kZXgpLCBUcnVzdGVkSW1tUHRyKHNpemUpKTsKICAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwpAQCAtMTA0NCw3ICsxMTAx
LDcgQEAgcHVibGljOgogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KENfSklUT3BlcmF0aW9uX0VDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgSlNDZWxsKiBjZWxs
KQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0
ZWRJbW1QdHIoY2VsbCkpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgY2VsbCkpOwogICAg
ICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAg
fQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUNa
IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQpAQCAt
MTA1OSw3ICsxMTE2LDcgQEAgcHVibGljOgogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKc2NDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dCwgR1BSUmVnIGFyZzEsIEpTQ2VsbCogY2VsbCkKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGNlbGwpKTsKKyAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHI6
OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGNlbGwpKTsKICAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VJY2Ygb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0LCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkKQEAgLTEwNjcsNDYg
KzExMjQsNDYgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoVHJ1c3RlZEltbVB0cihpbmxpbmVDYWxsRnJhbWUpKTsKICAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdCBvcGVyYXRpb24sIEdQ
UlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRVN0IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsKICAg
ICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAg
IH0KIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihDX0pJVE9wZXJhdGlvbl9FU3RKc2NTeW10YWJKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBzY29wZSwgU3ltYm9sVGFibGUqIHRhYmxl
LCBUcnVzdGVkSW1tNjQgaW5pdGlhbFZhbHVlKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRVN0SnNjU3ltdGFiSiBvcGVyYXRpb24sIEdQUlJlZyBy
ZXN1bHQsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCBHUFJSZWcgc2NvcGUsIFN5bWJv
bFRhYmxlKiB0YWJsZSwgVHJ1c3RlZEltbTY0IGluaXRpYWxWYWx1ZSkKICAgICB7Ci0gICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVy
ZSksIHNjb3BlLCBUcnVzdGVkSW1tUHRyKHRhYmxlKSwgaW5pdGlhbFZhbHVlKTsKKyAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJl
KSwgc2NvcGUsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIHRhYmxl
KSwgaW5pdGlhbFZhbHVlKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3Bl
cmF0aW9uLCByZXN1bHQpOwogICAgIH0KICNlbHNlCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FU3RKc2NTeW10YWJKIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBzY29wZSwgU3ltYm9sVGFibGUq
IHRhYmxlLCBUcnVzdGVkSW1tMzIgdGFnLCBUcnVzdGVkSW1tMzIgcGF5bG9hZCkKKyAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdEpzY1N5bXRhYkog
b3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwg
R1BSUmVnIHNjb3BlLCBTeW1ib2xUYWJsZSogdGFibGUsIFRydXN0ZWRJbW0zMiB0YWcsIFRydXN0
ZWRJbW0zMiBwYXlsb2FkKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgc2NvcGUsIFRydXN0ZWRJbW1QdHIo
dGFibGUpLCBwYXlsb2FkLCB0YWcpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBzY29wZSwgVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgdGFibGUpLCBwYXlsb2FkLCB0YWcpOwogICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQog
I2VuZGlmCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlv
bl9FU3RaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVu
c2lnbmVkIGtub3duTGVuZ3RoKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24o
Q19KSVRPcGVyYXRpb25fRVN0WiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgc3RydWN0dXJlLCB1bnNpZ25lZCBrbm93bkxlbmd0aCkKICAgICB7CiAgICAgICAg
IG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVy
ZSksIFRydXN0ZWRJbW0zMihrbm93bkxlbmd0aCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRVN0Wlogb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQga25vd25MZW5ndGgsIHVuc2ln
bmVkIG1pbkNhcGFjaXR5KQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19K
SVRPcGVyYXRpb25fRVN0Wlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBSZWdpc3RlcmVkU3Ry
dWN0dXJlIHN0cnVjdHVyZSwgdW5zaWduZWQga25vd25MZW5ndGgsIHVuc2lnbmVkIG1pbkNhcGFj
aXR5KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRy
dXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgVHJ1c3RlZEltbTMyKGtub3duTGVuZ3RoKSwgVHJ1c3Rl
ZEltbTMyKG1pbkNhcGFjaXR5KSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FU3RaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBsZW5ndGgpCisgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FU3RaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3Vs
dCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIEdQUlJlZyBsZW5ndGgpCiAgICAgewog
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihz
dHJ1Y3R1cmUpLCBsZW5ndGgpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oQ19KSVRPcGVyYXRpb25fRVN0Wlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIGxlbmd0aCwgdW5zaWduZWQgbWluQ2FwYWNpdHkpCisg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FU3RaWiBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCBH
UFJSZWcgbGVuZ3RoLCB1bnNpZ25lZCBtaW5DYXBhY2l0eSkKICAgICB7CiAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGxl
bmd0aCwgVHJ1c3RlZEltbTMyKG1pbkNhcGFjaXR5KSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FSnNzU3Qgb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FSnNzU3Qgb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1
cmUpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwpAQCAtMTE0MCwxMyArMTE5NywxMyBAQCBwdWJs
aWM6CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFNfSklUT3BlcmF0aW9u
X0VHQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEdQUlJlZyBhcmcyKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0KSwgYXJnMik7CisgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3QpLCBhcmcyKTsKICAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAogICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUdDIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgR1BSUmVnIGFyZzIp
CiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbVB0cihnbG9iYWxPYmplY3QpLCBhcmcyKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCks
IGdsb2JhbE9iamVjdCksIGFyZzIpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3Vs
dChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCkBAIC0xMTcwLDcgKzEyMjcsNyBAQCBwdWJs
aWM6CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfSklUT3BlcmF0aW9u
X0VDIG9wZXJhdGlvbiwgSlNDZWxsKiBhcmcxKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoYXJnMSkpOworICAgICAgICBtX2pp
dC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIo
bV9qaXQuZ3JhcGgoKSwgYXJnMSkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRp
b24pOwogICAgIH0KIApAQCAtMTE5NywxMiArMTI1NCwxMiBAQCBwdWJsaWM6CiAgICAgfQogICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRpb25fRUNDIG9wZXJh
dGlvbiwgR1BSUmVnIGFyZzEsIEpTQ2VsbCogYXJnMikKICAgICB7Ci0gICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGFyZzIpKTsKKyAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGFyZzIpKTsKICAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FQ0Mgb3BlcmF0aW9uLCBKU0NlbGwqIGFyZzEsIEdQUlJl
ZyBhcmcyKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KFRydXN0ZWRJbW1QdHIoYXJnMSksIGFyZzIpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwg
YXJnMSksIGFyZzIpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAg
IH0KIApAQCAtMTI3MywxMyArMTMzMCwxMyBAQCBwdWJsaWM6CiAKICAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKc2NDIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdCwgR1BSUmVnIGFyZzEsIEpTQ2VsbCogY2VsbCkKICAgICB7Ci0gICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyKGNlbGwpKTsK
KyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGNlbGwpKTsKICAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICAKICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKc2NDSiBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwsIEdQUlJl
ZyBhcmcyKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCksIGFyZzIpOworICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9q
aXQuZ3JhcGgoKSwgY2VsbCksIGFyZzIpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCkBAIC0xNDc0LDcgKzE1MzEsNyBAQCBw
dWJsaWM6CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRP
cGVyYXRpb25fRUMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBKU0NlbGwqIGNlbGwpCiAgICAg
ewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0
cihjZWxsKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVz
dGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBjZWxsKSk7CiAgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAgICAg
SklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FQ1ogb3BlcmF0
aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCkBAIC0xNTQ0LDcg
KzE2MDEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKFBfSklUT3BlcmF0aW9uX0VTdEogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIGFyZzIpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwg
UmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIEdQUlJlZyBhcmcyKQogICAgIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0
dXJlKSwgYXJnMik7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKQEAgLTE1NTIsNyArMTYwOSw3IEBAIHB1YmxpYzoKIAogICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUdKIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgR1BSUmVnIGFyZzEpCiAg
ICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bVB0cihnbG9iYWxPYmplY3QpLCBhcmcxKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGds
b2JhbE9iamVjdCksIGFyZzEpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCkBAIC0xOTAwLDcgKzE5NTcsNyBAQCBwdWJsaWM6
CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oRF9KSVRPcGVyYXRp
b25fRyBvcGVyYXRpb24sIEZQUlJlZyByZXN1bHQsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50cyhUcnVzdGVkSW1tUHRyKGds
b2JhbE9iamVjdCkpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50cyhUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBnbG9iYWxPYmplY3QpKTsKICAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFpfSklUT3BlcmF0aW9uX0Qgb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0LCBGUFJSZWcgYXJnMSkKQEAgLTIwMDksNyArMjA2Niw3IEBAIHB1Ymxp
YzoKIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25f
RUMgb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQsIEpTQ2VsbCogY2VsbCkKICAgICB7Ci0g
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGNl
bGwpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGNlbGwpKTsKICAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQucGF5bG9hZEdQUigpLCByZXN1
bHQudGFnR1BSKCkpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KEpfSklUT3BlcmF0aW9uX0VDWiBvcGVyYXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVn
IGFyZzEsIEdQUlJlZyBhcmcyKQpAQCAtMjAxOSwxMiArMjA3NiwxMiBAQCBwdWJsaWM6CiAgICAg
fQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpz
Y0Mgb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBhcmcxLCBKU0NlbGwqIGNl
bGwpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgVHJ1c3RlZEltbVB0cihjZWxsKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgp
LCBjZWxsKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0LnBheWxvYWRHUFIoKSwgcmVzdWx0LnRhZ0dQUigpKTsKICAgICB9CiAgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FSnNjQ0ogb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgSlNDZWxsKiBjZWxsLCBKU1ZhbHVlUmVncyBh
cmcyKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCksIEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzIucGF5bG9h
ZEdQUigpLCBhcmcyLnRhZ0dQUigpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCks
IGNlbGwpLCBFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcyLnBheWxvYWRHUFIoKSwgYXJnMi50YWdH
UFIoKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9w
ZXJhdGlvbl9FR1Jlb0ogb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBhcmcx
LCBHUFJSZWcgYXJnMiwgSlNWYWx1ZVJlZ3MgYXJnMykKQEAgLTIxMDksNyArMjE2Niw3IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOwogICAgIH0KIAotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRP
cGVyYXRpb25fRVN0SiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU1ZhbHVlUmVncyBhcmcyKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oUF9KSVRPcGVyYXRpb25fRVN0SiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCBKU1ZhbHVlUmVncyBhcmcyKQogICAgIHsKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJl
KSwgYXJnMi5wYXlsb2FkR1BSKCksIGFyZzIudGFnR1BSKCkpOwogICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CkBAIC0yMTE3LDcgKzIxNzQsNyBA
QCBwdWJsaWM6CiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3Bl
cmF0aW9uX0VHSiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWVSZWdzIGFyZzEpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QpLCBhcmcxLnBh
eWxvYWRHUFIoKSwgYXJnMS50YWdHUFIoKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBn
bG9iYWxPYmplY3QpLCBhcmcxLnBheWxvYWRHUFIoKSwgYXJnMS50YWdHUFIoKSk7CiAgICAgICAg
IHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAK
QEAgLTI2NjcsNyArMjcyNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZv
ckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVk
QXJyYXlUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KE5v
ZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5
cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJyYXlU
eXBlKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlPiB2b2lkIGNvbXBpbGVOZXdG
dW5jdGlvbkNvbW1vbihHUFJSZWcsIFN0cnVjdHVyZSosIEdQUlJlZywgR1BSUmVnLCBHUFJSZWcs
IE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYsIHNpemVfdCwgRnVuY3Rpb25FeGVjdXRhYmxlKiwg
cHRyZGlmZl90LCBwdHJkaWZmX3QsIHB0cmRpZmZfdCk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IENsYXNzVHlwZT4gdm9pZCBjb21waWxlTmV3RnVuY3Rpb25Db21tb24oR1BSUmVnLCBSZWdpc3Rl
cmVkU3RydWN0dXJlLCBHUFJSZWcsIEdQUlJlZywgR1BSUmVnLCBNYWNyb0Fzc2VtYmxlcjo6SnVt
cExpc3QmLCBzaXplX3QsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIHB0cmRpZmZfdCwgcHRyZGlmZl90
LCBwdHJkaWZmX3QpOwogICAgIHZvaWQgY29tcGlsZU5ld0Z1bmN0aW9uKE5vZGUqKTsKICAgICB2
b2lkIGNvbXBpbGVTZXRGdW5jdGlvbk5hbWUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUZvcndh
cmRWYXJhcmdzKE5vZGUqKTsKQEAgLTI3NTMsMTMgKzI4MTAsMTMgQEAgcHVibGljOgogICAgIH0K
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENsYXNzVHlwZT4KLSAgICB2b2lkIGVtaXRBbGxvY2F0
ZURlc3RydWN0aWJsZU9iamVjdChHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgCisgICAgdm9pZCBlbWl0QWxsb2NhdGVEZXN0cnVjdGlibGVPYmplY3QoR1BSUmVnIHJlc3Vs
dEdQUiwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIAogICAgICAgICBHUFJSZWcgc2Ny
YXRjaEdQUjEsIEdQUlJlZyBzY3JhdGNoR1BSMiwgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBz
bG93UGF0aCkKICAgICB7Ci0gICAgICAgIG1faml0LmVtaXRBbGxvY2F0ZURlc3RydWN0aWJsZU9i
amVjdDxDbGFzc1R5cGU+KHJlc3VsdEdQUiwgc3RydWN0dXJlLCBzY3JhdGNoR1BSMSwgc2NyYXRj
aEdQUjIsIHNsb3dQYXRoKTsKKyAgICAgICAgbV9qaXQuZW1pdEFsbG9jYXRlRGVzdHJ1Y3RpYmxl
T2JqZWN0PENsYXNzVHlwZT4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmUuZ2V0KCksIHNjcmF0Y2hHUFIx
LCBzY3JhdGNoR1BSMiwgc2xvd1BhdGgpOwogICAgIH0KIAotICAgIHZvaWQgZW1pdEFsbG9jYXRl
UmF3T2JqZWN0KEdQUlJlZyByZXN1bHRHUFIsIFN0cnVjdHVyZSosIEdQUlJlZyBzdG9yYWdlR1BS
LCB1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKTsKKyAgICB2b2lk
IGVtaXRBbGxvY2F0ZVJhd09iamVjdChHUFJSZWcgcmVzdWx0R1BSLCBSZWdpc3RlcmVkU3RydWN0
dXJlLCBHUFJSZWcgc3RvcmFnZUdQUiwgdW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIHZl
Y3Rvckxlbmd0aCk7CiAgICAgCiAgICAgdm9pZCBlbWl0R2V0TGVuZ3RoKElubGluZUNhbGxGcmFt
ZSosIEdQUlJlZyBsZW5ndGhHUFIsIGJvb2wgaW5jbHVkZVRoaXMgPSBmYWxzZSk7CiAgICAgdm9p
ZCBlbWl0R2V0TGVuZ3RoKENvZGVPcmlnaW4sIEdQUlJlZyBsZW5ndGhHUFIsIGJvb2wgaW5jbHVk
ZVRoaXMgPSBmYWxzZSk7CkBAIC0zNzc0LDEzICszODMxLDEzIEBAIHByaXZhdGU6CiB0ZW1wbGF0
ZTx0eXBlbmFtZSBTdHJ1Y3R1cmVMb2NhdGlvblR5cGU+CiB2b2lkIFNwZWN1bGF0aXZlSklUOjpz
cGVjdWxhdGVTdHJpbmdPYmplY3RGb3JTdHJ1Y3R1cmUoRWRnZSBlZGdlLCBTdHJ1Y3R1cmVMb2Nh
dGlvblR5cGUgc3RydWN0dXJlTG9jYXRpb24pCiB7Ci0gICAgU3RydWN0dXJlKiBzdHJpbmdPYmpl
Y3RTdHJ1Y3R1cmUgPQotICAgICAgICBtX2ppdC5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9k
ZS0+b3JpZ2luLnNlbWFudGljKS0+c3RyaW5nT2JqZWN0U3RydWN0dXJlKCk7CisgICAgUmVnaXN0
ZXJlZFN0cnVjdHVyZSBzdHJpbmdPYmplY3RTdHJ1Y3R1cmUgPQorICAgICAgICBtX2ppdC5ncmFw
aCgpLnJlZ2lzdGVyU3RydWN0dXJlKG1faml0Lmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2Rl
LT5vcmlnaW4uc2VtYW50aWMpLT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSk7CiAgICAgCi0gICAg
aWYgKCFtX3N0YXRlLmZvck5vZGUoZWRnZSkubV9zdHJ1Y3R1cmUuaXNTdWJzZXRPZihTdHJ1Y3R1
cmVTZXQoc3RyaW5nT2JqZWN0U3RydWN0dXJlKSkpIHsKKyAgICBpZiAoIW1fc3RhdGUuZm9yTm9k
ZShlZGdlKS5tX3N0cnVjdHVyZS5pc1N1YnNldE9mKFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQoc3Ry
aW5nT2JqZWN0U3RydWN0dXJlKSkpIHsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAg
ICAgICAgIE5vdFN0cmluZ09iamVjdCwgSlNWYWx1ZVJlZ3MoKSwgMCwKLSAgICAgICAgICAgIG1f
aml0LmJyYW5jaFN0cnVjdHVyZSgKKyAgICAgICAgICAgIG1faml0LmJyYW5jaFdlYWtTdHJ1Y3R1
cmUoCiAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBzdHJ1Y3R1cmVMb2Nh
dGlvbiwgc3RyaW5nT2JqZWN0U3RydWN0dXJlKSk7CiAgICAgfQogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2Uu
Y3BwCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0
cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDAsNyArNTQwLDcg
QEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgaWYgKG1fbm9kZS0+b3AoKSA9PSBSZWdFeHBFeGVj
KSB7CiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICAgICAgICAgICAgICBT
dHJ1Y3R1cmVTZXQqIHN0cnVjdHVyZVNldCA9IG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHN0cnVj
dHVyZSk7CisgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQqIHN0cnVj
dHVyZVNldCA9IG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHN0cnVjdHVyZSk7CiAKICAgICAgICAg
ICAgICAgICAgICAgLy8gQ3JlYXRlIGFuIGFycmF5IG1vZGVsaW5nIHRoZSBKUyBhcnJheSB0aGF0
IHdlIHdpbGwgdHJ5IHRvIGFsbG9jYXRlLiBUaGlzIGlzCiAgICAgICAgICAgICAgICAgICAgIC8v
IGJhc2ljYWxseSBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXkgYnV0IG92ZXIgQysrIHN0cmluZ3Mg
aW5zdGVhZCBvZiBKU1N0cmluZ3MuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0cnVjdHVyZUFic3RyYWN0VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5jcHAJKHJldmlzaW9uIDIxMTIy
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAgdm9pZCBTdHJ1Y3R1cmVBYnN0
cmFjdFZhbHVlOjphc3NlcnRJc1JlZwogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgZm9yICh1
bnNpZ25lZCBpID0gc2l6ZSgpOyBpLS07KQotICAgICAgICBncmFwaC5hc3NlcnRJc1JlZ2lzdGVy
ZWQoYXQoaSkpOworICAgICAgICBncmFwaC5hc3NlcnRJc1JlZ2lzdGVyZWQoYXQoaSkuZ2V0KCkp
OwogfQogI2VuZGlmIC8vICFBU1NFUlRfRElTQUJMRUQKIApAQCAtNjIsNyArNjIsNyBAQCB2b2lk
IFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmNsb2JiZXIoKQogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIAotICAgIFN0cnVjdHVyZVNldDo6T3V0T2ZMaW5lTGlzdCogbGlzdCA9IG1fc2V0Lmxp
c3QoKTsKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0OjpPdXRPZkxpbmVMaXN0KiBsaXN0ID0g
bV9zZXQubGlzdCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IGxpc3QtPm1fbGVuZ3RoOyBpLS07
KSB7CiAgICAgICAgIGlmICghbGlzdC0+bGlzdCgpW2ldLT5kZmdTaG91bGRXYXRjaCgpKSB7CiAg
ICAgICAgICAgICBtYWtlVG9wKCk7CkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgU3RydWN0dXJlQWJz
dHJhY3RWYWx1ZTo6Y2xvYmJlcigpCiAgICAgfQogfQogCi12b2lkIFN0cnVjdHVyZUFic3RyYWN0
VmFsdWU6Om9ic2VydmVUcmFuc2l0aW9uKFN0cnVjdHVyZSogZnJvbSwgU3RydWN0dXJlKiB0bykK
K3ZvaWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6b2JzZXJ2ZVRyYW5zaXRpb24oUmVnaXN0ZXJl
ZFN0cnVjdHVyZSBmcm9tLCBSZWdpc3RlcmVkU3RydWN0dXJlIHRvKQogewogICAgIEFTU0VSVCgh
ZnJvbS0+ZGZnU2hvdWxkV2F0Y2goKSk7CiAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBTdHJ1Y3R1
cmVBYnN0cmFjdFZhbHVlOjpvYnNlcnZlVHJhbgogICAgIGlmIChpc1RvcCgpKQogICAgICAgICBy
ZXR1cm47CiAgICAgCi0gICAgU3RydWN0dXJlU2V0IG5ld1N0cnVjdHVyZXM7CisgICAgUmVnaXN0
ZXJlZFN0cnVjdHVyZVNldCBuZXdTdHJ1Y3R1cmVzOwogICAgIGZvciAodW5zaWduZWQgaSA9IHZl
Y3Rvci5zaXplKCk7IGktLTspIHsKICAgICAgICAgQVNTRVJUKCF2ZWN0b3JbaV0ucHJldmlvdXMt
PmRmZ1Nob3VsZFdhdGNoKCkpOwogCkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBTdHJ1Y3R1cmVB
YnN0cmFjdFZhbHVlOjpvYnNlcnZlVHJhbgogICAgICAgICBtYWtlVG9wKCk7CiB9CiAKLWJvb2wg
U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6YWRkKFN0cnVjdHVyZSogc3RydWN0dXJlKQorYm9vbCBT
dHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjphZGQoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUp
CiB7CiAgICAgaWYgKGlzVG9wKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEyNCw3ICsx
MjQsNyBAQCBib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmFkZChTdHJ1Y3R1CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6bWVyZ2UoY29uc3Qg
U3RydWN0dXJlU2V0JiBvdGhlcikKK2Jvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6bWVyZ2Uo
Y29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgb3RoZXIpCiB7CiAgICAgaWYgKGlzVG9wKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE3NSw3ICsxNzUsNyBAQCBib29sIFN0cnVjdHVy
ZUFic3RyYWN0VmFsdWU6Om1lcmdlU2xvdyhjCiAgICAgcmV0dXJuIGNoYW5nZWQ7CiB9CiAKLWJv
b2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6bWVyZ2VOb3RUb3AoY29uc3QgU3RydWN0dXJlU2V0
JiBvdGhlcikKK2Jvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6bWVyZ2VOb3RUb3AoY29uc3Qg
UmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgb3RoZXIpCiB7CiAgICAgaWYgKCFtX3NldC5tZXJnZShv
dGhlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE4Niw3ICsxODYsNyBAQCBib29sIFN0
cnVjdHVyZUFic3RyYWN0VmFsdWU6Om1lcmdlTm90VG9wCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXZvaWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYg
b3RoZXIpCit2b2lkIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmZpbHRlcihjb25zdCBSZWdpc3Rl
cmVkU3RydWN0dXJlU2V0JiBvdGhlcikKIHsKICAgICBpZiAoaXNUb3AoKSkgewogICAgICAgICBt
X3NldCA9IG90aGVyOwpAQCAtMjI5LDcgKzIyOSw3IEBAIHZvaWQgU3RydWN0dXJlQWJzdHJhY3RW
YWx1ZTo6ZmlsdGVyKGNvbnMKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgICAg
IGlmICghaXNDbG9iYmVyZWQoKSkgewotICAgICAgICAgICAgLy8gU2VlIGp1c3RpZmljYXRpb24g
aW4gZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYpLCBhYm92ZS4gQW4gdW5jbG9iYmVyZWQgc2V0
IGlzCisgICAgICAgICAgICAvLyBTZWUganVzdGlmaWNhdGlvbiBpbiBmaWx0ZXIoY29uc3QgUmVn
aXN0ZXJlZFN0cnVjdHVyZVNldCYpLCBhYm92ZS4gQW4gdW5jbG9iYmVyZWQgc2V0IGlzCiAgICAg
ICAgICAgICAvLyBhbG1vc3QgYWx3YXlzIGJldHRlci4KICAgICAgICAgICAgIGlmIChtX3NldC5z
aXplKCkgPiBvdGhlci5tX3NldC5zaXplKCkgKyBjbG9iYmVyZWRTdXByZW1hY3lUaHJlc2hvbGQp
CiAgICAgICAgICAgICAgICAgKnRoaXMgPSBvdGhlcjsgLy8gS2VlcCB0aGUgY2xvYmJlcmVkIHNl
dC4KQEAgLTI1Myw4ICsyNTMsOCBAQCB2b2lkIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmZpbHRl
clNsb3coCiAgICAgQVNTRVJUKCFpc1RvcCgpKTsKICAgICAKICAgICBtX3NldC5nZW5lcmljRmls
dGVyKAotICAgICAgICBbJl0gKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gISEoc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKHN0cnVjdHVyZSkgJiB0eXBlKTsKKyAg
ICAgICAgWyZdIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgeworICAgICAgICAgICAg
cmV0dXJuICEhKHNwZWN1bGF0aW9uRnJvbVN0cnVjdHVyZShzdHJ1Y3R1cmUuZ2V0KCkpICYgdHlw
ZSk7CiAgICAgICAgIH0pOwogfQogCkBAIC0yNjIsMTIgKzI2MiwxMiBAQCB2b2lkIFN0cnVjdHVy
ZUFic3RyYWN0VmFsdWU6OmZpbHRlckNsYXNzCiB7CiAgICAgQVNTRVJUKCFpc1RvcCgpKTsKICAg
ICBtX3NldC5nZW5lcmljRmlsdGVyKAotICAgICAgICBbJl0gKFN0cnVjdHVyZSogc3RydWN0dXJl
KSB7CisgICAgICAgIFsmXSAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIHsKICAgICAg
ICAgICAgIHJldHVybiBzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5pc1N1YkNsYXNzT2YoY2xhc3NJ
bmZvKTsKICAgICAgICAgfSk7CiB9CiAKLWJvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6Y29u
dGFpbnMoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIGNvbnN0Citib29sIFN0cnVjdHVyZUFic3RyYWN0
VmFsdWU6OmNvbnRhaW5zKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSBjb25zdAogewog
ICAgIGlmIChpc0luZmluaXRlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjc1LDcgKzI3
NSwxNSBAQCBib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmNvbnRhaW5zKFN0CiAgICAgcmV0
dXJuIG1fc2V0LmNvbnRhaW5zKHN0cnVjdHVyZSk7CiB9CiAKLWJvb2wgU3RydWN0dXJlQWJzdHJh
Y3RWYWx1ZTo6aXNTdWJzZXRPZihjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKSBjb25zdAorYm9v
bCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpjb250YWlucyhTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkg
Y29uc3QKK3sKKyAgICBpZiAoaXNJbmZpbml0ZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAKKyAgICByZXR1cm4gbV9zZXQudG9TdHJ1Y3R1cmVTZXQoKS5jb250YWlucyhzdHJ1Y3R1cmUp
OworfQorCitib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3Vic2V0T2YoY29uc3QgUmVn
aXN0ZXJlZFN0cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0CiB7CiAgICAgaWYgKGlzSW5maW5pdGUo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzA0LDcgKzMxMiw3IEBAIGJvb2wgU3RydWN0
dXJlQWJzdHJhY3RWYWx1ZTo6aXNTdWJzZXRPZigKICAgICByZXR1cm4gbV9zZXQuaXNTdWJzZXRP
ZihvdGhlci5tX3NldCk7CiB9CiAKLWJvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6aXNTdXBl
cnNldE9mKGNvbnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0Citib29sIFN0cnVjdHVyZUFi
c3RyYWN0VmFsdWU6OmlzU3VwZXJzZXRPZihjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0JiBv
dGhlcikgY29uc3QKIHsKICAgICBpZiAoaXNJbmZpbml0ZSgpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTMxMiw3ICszMjAsNyBAQCBib29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmlzU3Vw
ZXJzZXRPCiAgICAgcmV0dXJuIG1fc2V0LmlzU3VwZXJzZXRPZihvdGhlcik7CiB9CiAKLWJvb2wg
U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6b3ZlcmxhcHMoY29uc3QgU3RydWN0dXJlU2V0JiBvdGhl
cikgY29uc3QKK2Jvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6b3ZlcmxhcHMoY29uc3QgUmVn
aXN0ZXJlZFN0cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0CiB7CiAgICAgaWYgKGlzSW5maW5pdGUo
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0zMzQsNyArMzQyLDcgQEAgYm9vbCBTdHJ1Y3R1
cmVBYnN0cmFjdFZhbHVlOjppc1N1YkNsYXNzTwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICAvLyBOb3RlIHRhaHQgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUgaWYgdGhlIHN0cnVjdHVy
ZSBzZXQgaXMgZW1wdHkuCi0gICAgZm9yIChjb25zdCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6IG1f
c2V0KSB7CisgICAgZm9yIChjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA6IG1f
c2V0KSB7CiAgICAgICAgIGlmICghc3RydWN0dXJlLT5jbGFzc0luZm8oKS0+aXNTdWJDbGFzc09m
KGNsYXNzSW5mbykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMzU5LDcg
KzM2Nyw3IEBAIHZvaWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZHVtcEluQ29udGUKICAgICBp
ZiAoaXNUb3AoKSkKICAgICAgICAgb3V0LnByaW50KCJUT1AiKTsKICAgICBlbHNlCi0gICAgICAg
IG91dC5wcmludChpbkNvbnRleHQobV9zZXQsIGNvbnRleHQpKTsKKyAgICAgICAgb3V0LnByaW50
KGluQ29udGV4dChtX3NldC50b1N0cnVjdHVyZVNldCgpLCBjb250ZXh0KSk7CiB9CiAKIHZvaWQg
U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0
cmFjdFZhbHVlLmgJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMCAr
MjcsMTEgQEAKIAogI2lmIEVOQUJMRShERkdfSklUKQogCisjaW5jbHVkZSAiREZHUmVnaXN0ZXJl
ZFN0cnVjdHVyZVNldC5oIgogI2luY2x1ZGUgIkRGR1RyYW5zaXRpb24uaCIKKyNpbmNsdWRlICJE
dW1wQ29udGV4dC5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIlNwZWN1bGF0ZWRU
eXBlLmgiCi0jaW5jbHVkZSAiRHVtcENvbnRleHQuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVTZXQu
aCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00MiwxMiArNDMsMTIgQEAgbmFtZXNwYWNlIERGRyB7
CiBjbGFzcyBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlIHsKIHB1YmxpYzoKICAgICBTdHJ1Y3R1cmVB
YnN0cmFjdFZhbHVlKCkgeyB9Ci0gICAgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZShTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKLSAgICAgICAgOiBtX3NldChTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSkKKyAg
ICBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKQor
ICAgICAgICA6IG1fc2V0KHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAgIHNldENsb2JiZXJlZChm
YWxzZSk7CiAgICAgfQotICAgIFN0cnVjdHVyZUFic3RyYWN0VmFsdWUoY29uc3QgU3RydWN0dXJl
U2V0JiBvdGhlcikKKyAgICBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlKGNvbnN0IFJlZ2lzdGVyZWRT
dHJ1Y3R1cmVTZXQmIG90aGVyKQogICAgICAgICA6IG1fc2V0KG90aGVyKQogICAgIHsKICAgICAg
ICAgc2V0Q2xvYmJlcmVkKGZhbHNlKTsKQEAgLTU4LDEzICs1OSwxMyBAQCBwdWJsaWM6CiAgICAg
ICAgIHNldENsb2JiZXJlZChvdGhlci5pc0Nsb2JiZXJlZCgpKTsKICAgICB9CiAgICAgCi0gICAg
QUxXQVlTX0lOTElORSBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvcGVyYXRvcj0oU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCisgICAgQUxXQVlTX0lOTElORSBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBv
cGVyYXRvcj0oUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBt
X3NldCA9IFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpOworICAgICAgICBtX3NldCA9IFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKTsKICAgICAgICAgc2V0Q2xvYmJlcmVkKGZhbHNlKTsK
ICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KLSAgICBBTFdBWVNfSU5MSU5FIFN0cnVjdHVy
ZUFic3RyYWN0VmFsdWUmIG9wZXJhdG9yPShjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKQorICAg
IEFMV0FZU19JTkxJTkUgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSYgb3BlcmF0b3I9KGNvbnN0IFJl
Z2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIG90aGVyKQogICAgIHsKICAgICAgICAgbV9zZXQgPSBvdGhl
cjsKICAgICAgICAgc2V0Q2xvYmJlcmVkKGZhbHNlKTsKQEAgLTk4LDcgKzk5LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgY2xvYmJlcigpOwogICAgIHZvaWQgb2JzZXJ2ZUludmFsaWRhdGlvblBvaW50
KCkgeyBzZXRDbG9iYmVyZWQoZmFsc2UpOyB9CiAgICAgCi0gICAgdm9pZCBvYnNlcnZlVHJhbnNp
dGlvbihTdHJ1Y3R1cmUqIGZyb20sIFN0cnVjdHVyZSogdG8pOworICAgIHZvaWQgb2JzZXJ2ZVRy
YW5zaXRpb24oUmVnaXN0ZXJlZFN0cnVjdHVyZSBmcm9tLCBSZWdpc3RlcmVkU3RydWN0dXJlIHRv
KTsKICAgICB2b2lkIG9ic2VydmVUcmFuc2l0aW9ucyhjb25zdCBUcmFuc2l0aW9uVmVjdG9yJik7
CiAgICAgCiAgICAgc3RhdGljIFN0cnVjdHVyZUFic3RyYWN0VmFsdWUgdG9wKCkKQEAgLTEzMSw5
ICsxMzIsOSBAQCBwdWJsaWM6CiAgICAgLy8gQW4gaW5maW5pdGUgc3RydWN0dXJlIGFic3RyYWN0
IHZhbHVlIG1heSBjdXJyZW50bHkgaGF2ZSBhbnkgc3RydWN0dXJlLgogICAgIGJvb2wgaXNJbmZp
bml0ZSgpIGNvbnN0IHsgcmV0dXJuICFpc0Zpbml0ZSgpOyB9CiAgICAgCi0gICAgYm9vbCBhZGQo
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpOworICAgIGJvb2wgYWRkKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUp
OwogICAgIAotICAgIGJvb2wgbWVyZ2UoY29uc3QgU3RydWN0dXJlU2V0JiBvdGhlcik7CisgICAg
Ym9vbCBtZXJnZShjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0JiBvdGhlcik7CiAgICAgCiAg
ICAgQUxXQVlTX0lOTElORSBib29sIG1lcmdlKGNvbnN0IFN0cnVjdHVyZUFic3RyYWN0VmFsdWUm
IG90aGVyKQogICAgIHsKQEAgLTE1MSw3ICsxNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBtZXJnZVNsb3cob3RoZXIpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGZpbHRlcihjb25zdCBT
dHJ1Y3R1cmVTZXQmIG90aGVyKTsKKyAgICB2b2lkIGZpbHRlcihjb25zdCBSZWdpc3RlcmVkU3Ry
dWN0dXJlU2V0JiBvdGhlcik7CiAgICAgdm9pZCBmaWx0ZXIoY29uc3QgU3RydWN0dXJlQWJzdHJh
Y3RWYWx1ZSYgb3RoZXIpOwogICAgIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBmaWx0ZXIoU3Bl
Y3VsYXRlZFR5cGUgdHlwZSkKQEAgLTE3OCwxMSArMTc5LDE3IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGVxdWFsc1Nsb3cob3RoZXIpOwogICAgIH0KICAgICAKLSAgICBjb25zdCBTdHJ1Y3R1
cmVTZXQmIHNldCgpIGNvbnN0CisgICAgY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgc2V0
KCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVCghaXNUb3AoKSk7CiAgICAgICAgIHJldHVy
biBtX3NldDsKICAgICB9CisKKyAgICBTdHJ1Y3R1cmVTZXQgdG9TdHJ1Y3R1cmVTZXQoKSBjb25z
dAorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNGaW5pdGUoKSk7CisgICAgICAgIHJl
dHVybiBtX3NldC50b1N0cnVjdHVyZVNldCgpOworICAgIH0KICAgICAKICAgICBzaXplX3Qgc2l6
ZSgpIGNvbnN0CiAgICAgewpAQCAtMTkwLDIxICsxOTcsMjEgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gbV9zZXQuc2l6ZSgpOwogICAgIH0KICAgICAKLSAgICBTdHJ1Y3R1cmUqIGF0KHNpemVf
dCBpKSBjb25zdAorICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgYXQoc2l6ZV90IGkpIGNvbnN0CiAg
ICAgewogICAgICAgICBBU1NFUlQoIWlzVG9wKCkpOwogICAgICAgICByZXR1cm4gbV9zZXQuYXQo
aSk7CiAgICAgfQogICAgIAotICAgIFN0cnVjdHVyZSogb3BlcmF0b3JbXShzaXplX3QgaSkgY29u
c3QgeyByZXR1cm4gYXQoaSk7IH0KKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG9wZXJhdG9yW10o
c2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIGF0KGkpOyB9CiAKICAgICAvLyBJbiBtb3N0IGNhc2Vz
LCB3aGF0IHlvdSByZWFsbHkgd2FudCB0byBkbyBpcyB2ZXJpZnkgd2hldGhlciB0aGUgc2V0IGlz
IHRvcCBvciBjbG9iYmVyZWQsIGFuZAogICAgIC8vIGlmIG5vdCwgZW51bWVyYXRlIHRoZSBzZXQg
b2Ygc3RydWN0dXJlcy4gVXNlIHRoaXMgb25seSBpbiBjYXNlcyB3aGVyZSB0aGUgc2luZ2xldG9u
IGNhc2UgaXMKICAgICAvLyBtZWFuaW5nZnVsbHkgc3BlY2lhbCwgbGlrZSBmb3IgdHJhbnNpdGlv
bnMuCi0gICAgU3RydWN0dXJlKiBvbmx5U3RydWN0dXJlKCkgY29uc3QKKyAgICBSZWdpc3RlcmVk
U3RydWN0dXJlIG9ubHlTdHJ1Y3R1cmUoKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKGlzSW5m
aW5pdGUoKSkKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgcmV0dXJu
IFJlZ2lzdGVyZWRTdHJ1Y3R1cmUoKTsKICAgICAgICAgcmV0dXJuIG1fc2V0Lm9ubHlTdHJ1Y3R1
cmUoKTsKICAgICB9CiAKQEAgLTIyNCwxOCArMjMxLDE5IEBAIHB1YmxpYzoKICAgICAvLyBvcHRp
bWl6YXRpb25zIGFzIGEgY29uc2VxdWVuY2Ugb2YgdGhlICJ0aGlzIGlzIHNtYWxsZXIiIHJldHVy
biB2YWx1ZSAtIHNvIGZhbHNlIGZvcgogICAgIC8vIGNvbnRhaW5zKCksIHRydWUgZm9yIGlzU3Vi
c2V0T2YoKSwgZmFsc2UgZm9yIGlzU3VwZXJzZXRPZigpLCBhbmQgZmFsc2UgZm9yIG92ZXJsYXBz
KCkuCiAKKyAgICBib29sIGNvbnRhaW5zKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUpIGNvbnN0OwogICAg
IGJvb2wgY29udGFpbnMoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIGNvbnN0OwogICAgIAotICAgIGJv
b2wgaXNTdWJzZXRPZihjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKSBjb25zdDsKKyAgICBib29s
IGlzU3Vic2V0T2YoY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0Owog
ICAgIGJvb2wgaXNTdWJzZXRPZihjb25zdCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcikg
Y29uc3Q7CiAgICAgCi0gICAgYm9vbCBpc1N1cGVyc2V0T2YoY29uc3QgU3RydWN0dXJlU2V0JiBv
dGhlcikgY29uc3Q7CisgICAgYm9vbCBpc1N1cGVyc2V0T2YoY29uc3QgUmVnaXN0ZXJlZFN0cnVj
dHVyZVNldCYgb3RoZXIpIGNvbnN0OwogICAgIGJvb2wgaXNTdXBlcnNldE9mKGNvbnN0IFN0cnVj
dHVyZUFic3RyYWN0VmFsdWUmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG90
aGVyLmlzU3Vic2V0T2YoKnRoaXMpOwogICAgIH0KICAgICAKLSAgICBib29sIG92ZXJsYXBzKGNv
bnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0OworICAgIGJvb2wgb3ZlcmxhcHMoY29uc3Qg
UmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0OwogICAgIGJvb2wgb3ZlcmxhcHMo
Y29uc3QgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSYgb3RoZXIpIGNvbnN0OwogCiAgICAgYm9vbCBp
c1N1YkNsYXNzT2YoY29uc3QgQ2xhc3NJbmZvKikgY29uc3Q7CkBAIC0yNDMsOCArMjUxLDggQEAg
cHVibGljOgogICAgIHZvaWQgdmFsaWRhdGVSZWZlcmVuY2VzKGNvbnN0IFRyYWNrZWRSZWZlcmVu
Y2VzJikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgotICAgIHN0YXRpYyBjb25zdCB1aW50cHRyX3Qg
Y2xvYmJlcmVkRmxhZyA9IFN0cnVjdHVyZVNldDo6cmVzZXJ2ZWRGbGFnOwotICAgIHN0YXRpYyBj
b25zdCB1aW50cHRyX3QgdG9wVmFsdWUgPSBTdHJ1Y3R1cmVTZXQ6OnJlc2VydmVkVmFsdWU7Cisg
ICAgc3RhdGljIGNvbnN0IHVpbnRwdHJfdCBjbG9iYmVyZWRGbGFnID0gUmVnaXN0ZXJlZFN0cnVj
dHVyZVNldDo6cmVzZXJ2ZWRGbGFnOworICAgIHN0YXRpYyBjb25zdCB1aW50cHRyX3QgdG9wVmFs
dWUgPSBSZWdpc3RlcmVkU3RydWN0dXJlU2V0OjpyZXNlcnZlZFZhbHVlOwogICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBwb2x5bW9ycGhpc21MaW1pdCA9IDEwOwogICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBjbG9iYmVyZWRTdXByZW1hY3lUaHJlc2hvbGQgPSAyOwogICAgIApAQCAtMjYwLDcg
KzI2OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fc2V0Lm1fcG9pbnRlciA9IHRvcFZhbHVlOwog
ICAgIH0KICAgICAKLSAgICBib29sIG1lcmdlTm90VG9wKGNvbnN0IFN0cnVjdHVyZVNldCYgb3Ro
ZXIpOworICAgIGJvb2wgbWVyZ2VOb3RUb3AoY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYg
b3RoZXIpOwogICAgIAogICAgIHZvaWQgc2V0Q2xvYmJlcmVkKGJvb2wgY2xvYmJlcmVkKQogICAg
IHsKQEAgLTI2OCw3ICsyNzYsNyBAQCBwcml2YXRlOgogICAgICAgICBtX3NldC5zZXRSZXNlcnZl
ZEZsYWcoY2xvYmJlcmVkKTsKICAgICB9CiAgICAgCi0gICAgU3RydWN0dXJlU2V0IG1fc2V0Owor
ICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgbV9zZXQ7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJl
Z2lzdHJhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjExMjI5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMjI1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuaCIKLQotI2lmIEVOQUJMRShE
RkdfSklUKQotCi0jaW5jbHVkZSAiREZHQmFzaWNCbG9ja0lubGluZXMuaCIKLSNpbmNsdWRlICJE
RkdHcmFwaC5oIgotI2luY2x1ZGUgIkRGR1BoYXNlLmgiCi0jaW5jbHVkZSAiSlNDSW5saW5lcy5o
IgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0KLWNsYXNzIFN0cnVjdHVyZVJl
Z2lzdHJhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKLXB1YmxpYzoKLSAgICBTdHJ1Y3R1cmVS
ZWdpc3RyYXRpb25QaGFzZShHcmFwaCYgZ3JhcGgpCi0gICAgICAgIDogUGhhc2UoZ3JhcGgsICJz
dHJ1Y3R1cmUgcmVnaXN0cmF0aW9uIikKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGJvb2wgcnVu
KCkKLSAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIHBoYXNlIHNob3VsZG4ndCBleGlzdC4g
V2Ugc2hvdWxkIGhhdmUgcmVnaXN0ZXJlZCBhbGwgc3RydWN0dXJlcyBieSBub3csIHNpbmNlCi0g
ICAgICAgIC8vIHdlIG1heSBhbHJlYWR5IGhhdmUgZG9uZSBvcHRpbWl6YXRpb25zIHRoYXQgcmVs
eSBvbiBzdHJ1Y3R1cmVzIGhhdmluZyBiZWVuIHJlZ2lzdGVyZWQuCi0gICAgICAgIC8vIEN1cnJl
bnRseSwgd2Ugc3RpbGwgaGF2ZSBwbGFjZXMgd2hlcmUgd2UgZG9uJ3QgcmVnaXN0ZXIgc3RydWN0
dXJlcyBwcmlvciB0byB0aGlzIHBoYXNlLAotICAgICAgICAvLyBidXQgc3RydWN0dXJlcyBkb24n
dCBlbmQgdXAgYmVpbmcgdXNlZCBmb3Igb3B0aW1pemF0aW9uIHByaW9yIHRvIHRoaXMgcGhhc2Uu
IFRoYXQncyBhCi0gICAgICAgIC8vIHByZXR0eSBmcmFnaWxlIHNpdHVhdGlvbiBhbmQgd2Ugc2hv
dWxkIGZpeCBpdCBldmVudHVhbGx5LgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3ODg5Ci0gICAgICAgIAotICAgICAgICAvLyBXZSBuZWVkIHRv
IHNldCB0aGlzIGJlZm9yZSB0aGlzIHBoYXNlIGZpbmlzaGVzLiBUaGlzIHBoYXNlIGRvZXNuJ3Qg
ZG8gYW55dGhpbmcKLSAgICAgICAgLy8gY29uZGl0aW9uZWQgb24gdGhpcyBmaWVsZCwgZXhjZXB0
IGZvciBhc3NlcnRJc1JlZ2lzdGVyZWQoKSBiZWxvdy4gV2UgaW50ZW5kIGZvciB0aGF0Ci0gICAg
ICAgIC8vIG1ldGhvZCB0byBiZWhhdmUgYXMgaWYgdGhlIHBoYXNlIHdhcyBhbHJlYWR5IGZpbmlz
aGVkLiBTbywgd2Ugc2V0IHRoaXMgdXAgaGVyZS4KLSAgICAgICAgbV9ncmFwaC5tX3N0cnVjdHVy
ZVJlZ2lzdHJhdGlvblN0YXRlID0gQWxsU3RydWN0dXJlc0FyZVJlZ2lzdGVyZWQ7Ci0gICAgICAg
IAotICAgICAgICAvLyBUaGVzZSBhcmUgcHJldHR5IGR1bWIsIGJ1dCBuZWVkZWQgdG8gcGxhY2F0
ZSBzdWJzZXF1ZW50IGFzc2VydGlvbnMuIFdlIGRvbid0IGFjdHVhbGx5Ci0gICAgICAgIC8vIGhh
dmUgdG8gd2F0Y2ggdGhlc2UgYmVjYXVzZSB0aGVyZSBpcyBubyB3YXkgdG8gdHJhbnNpdGlvbiBh
d2F5IGZyb20gaXQsIGJ1dCB0aGV5IGFyZQotICAgICAgICAvLyB3YXRjaGFibGUgYW5kIHNvIHdl
IHdpbGwgYXNzZXJ0IGlmIHRoZXkgYXJlbid0IHdhdGNoZWQuCi0gICAgICAgIHJlZ2lzdGVyU3Ry
dWN0dXJlKG1fZ3JhcGgubV92bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUuZ2V0KCkpOwotICAgICAgICBy
ZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLm1fdm0uc3RyaW5nU3RydWN0dXJlLmdldCgpKTsKLSAg
ICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5tX3ZtLnN5bWJvbFN0cnVjdHVyZS5nZXQo
KSk7Ci0gICAgICAgIAotICAgICAgICBmb3IgKEZyb3plblZhbHVlKiB2YWx1ZSA6IG1fZ3JhcGgu
bV9mcm96ZW5WYWx1ZXMpCi0gICAgICAgICAgICBhc3NlcnRJc1JlZ2lzdGVyZWQodmFsdWUtPnN0
cnVjdHVyZSgpKTsKLSAgICAgICAgCi0gICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4
ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgewotICAgICAgICAgICAgQmFz
aWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwotICAgICAgICAgICAg
aWYgKCFibG9jaykKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAgICAg
ICAgICBmb3IgKGF1dG8qIG5vZGUgOiAqYmxvY2spIHsKLSAgICAgICAgICAgICAgICBzd2l0Y2gg
KG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgotICAg
ICAgICAgICAgICAgICAgICBhc3NlcnRBcmVSZWdpc3RlcmVkKG5vZGUtPnN0cnVjdHVyZVNldCgp
KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgY2FzZSBOZXdPYmplY3Q6Ci0gICAgICAgICAgICAgICAgY2FzZSBBcnJheWlmeVRv
U3RydWN0dXJlOgotICAgICAgICAgICAgICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgotICAgICAg
ICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShub2RlLT5zdHJ1Y3R1cmUoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IGNhc2UgUHV0U3RydWN0dXJlOgotICAgICAgICAgICAgICAgIGNhc2UgQWxsb2NhdGVQcm9wZXJ0
eVN0b3JhZ2U6Ci0gICAgICAgICAgICAgICAgY2FzZSBSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdl
OgotICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShub2RlLT50cmFuc2l0aW9u
KCktPnByZXZpb3VzKTsKLSAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobm9k
ZS0+dHJhbnNpdGlvbigpLT5uZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAg
ICAgICAgICAgICAgICBjYXNlIEdldEdldHRlclNldHRlckJ5T2Zmc2V0OgotICAgICAgICAgICAg
ICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpLT5nZXR0ZXJTZXR0ZXJTdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgICAgY2FzZSBNdWx0aUdldEJ5T2Zmc2V0Ogot
ICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IE11bHRpR2V0QnlPZmZzZXRDYXNlJiBnZXRD
YXNlIDogbm9kZS0+bXVsdGlHZXRCeU9mZnNldERhdGEoKS5jYXNlcykKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlcyhnZXRDYXNlLnNldCgpKTsKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNh
c2UgTXVsdGlQdXRCeU9mZnNldDoKLSAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gbm9kZS0+bXVsdGlQdXRCeU9mZnNldERhdGEoKS52YXJpYW50cy5zaXplKCk7IGktLTspIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50ID0gbm9kZS0+
bXVsdGlQdXRCeU9mZnNldERhdGEoKS52YXJpYW50c1tpXTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJlZ2lzdGVyU3RydWN0dXJlcyh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICh2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6VHJh
bnNpdGlvbikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZSh2
YXJpYW50Lm5ld1N0cnVjdHVyZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
Y2FzZSBOZXdBcnJheToKLSAgICAgICAgICAgICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgotICAg
ICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXlXaXRoU2l6ZTogewotICAgICAgICAgICAgICAgICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1
Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0Fs
bG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKTsKLSAgICAgICAgICAgICAgICAgICAgcmVn
aXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5vcmlnaW5hbEFycmF5U3RydWN0dXJlRm9ySW5k
ZXhpbmdUeXBlKEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpKTsKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgY2FzZSBO
ZXdBcnJheVdpdGhTcHJlYWQ6IHsKLSAgICAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdB
QmFkVGltZVdhdGNocG9pbnQobm9kZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdl
J3ZlIGNvbXBpbGVkIGFzc3VtaW5nIHdlJ3JlIG5vdCBoYXZpbmcgYSBiYWQgdGltZSwgc28gdG8g
YmUgY29uc2lzdGVudAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2l0aCBBSSB3ZSBtdXN0
IHNheSB3ZSBwcm9kdWNlIGFuIG9yaWdpbmFsIGFycmF5IGFsbG9jYXRpb24gc3RydWN0dXJlLgot
ICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5v
cmlnaW5hbEFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlKEFycmF5V2l0aENvbnRpZ3VvdXMp
KTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBy
ZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdU
eXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhDb250aWd1b3VzKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGNhc2Ug
U3ByZWFkOiB7Ci0gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGgu
bV92bS5maXhlZEFycmF5U3RydWN0dXJlLmdldCgpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgY2FzZSBDcmVhdGVSZXN0
OiB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFk
VGltZVdhdGNocG9pbnQobm9kZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUo
Z2xvYmFsT2JqZWN0LT5yZXN0UGFyYW1ldGVyU3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgY2FzZSBOZXdUeXBlZEFycmF5Ogot
ICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT50eXBlZEFycmF5U3RydWN0dXJlQ29uY3VycmVu
dGx5KG5vZGUtPnR5cGVkQXJyYXlUeXBlKCkpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNhc2UgVG9TdHJpbmc6Ci0g
ICAgICAgICAgICAgICAgY2FzZSBDYWxsU3RyaW5nQ29uc3RydWN0b3I6Ci0gICAgICAgICAgICAg
ICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyktPnN0cmluZ09iamVjdFN0cnVjdHVyZSgpKTsKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNhc2Ug
Q3JlYXRlQWN0aXZhdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUo
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YWN0aXZhdGlv
blN0cnVjdHVyZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgotICAg
ICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5kaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUoKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICBjYXNlIENyZWF0ZVNjb3BlZEFyZ3VtZW50czoKLSAgICAgICAgICAgICAgICAgICAg
cmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKS0+c2NvcGVkQXJndW1lbnRzU3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLQotICAgICAgICAgICAgICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOgot
ICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5jbG9uZWRBcmd1bWVudHNTdHJ1Y3R1cmUoKSk7
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgICAgY2FzZSBOZXdS
ZWdleHA6Ci0gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnJlZ0V4cFN0cnVjdHVyZSgpKTsK
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBOZXdGdW5j
dGlvbjoKLSAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgTmV3R2Vu
ZXJhdG9yRnVuY3Rpb246Ci0gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmdlbmVyYXRvckZ1
bmN0aW9uU3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICBjYXNlIE5ld0FzeW5jRnVuY3Rpb246Ci0gICAgICAgICAgICAgICAgICAgIHJlZ2lz
dGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YyktPmFzeW5jRnVuY3Rpb25TdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCByZWdpc3Rl
clN0cnVjdHVyZXMoY29uc3QgU3RydWN0dXJlU2V0JiBzZXQpCi0gICAgewotICAgICAgICBmb3Ig
KFN0cnVjdHVyZSogc3RydWN0dXJlIDogc2V0KQotICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1
cmUoc3RydWN0dXJlKTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCByZWdpc3RlclN0cnVjdHVyZShT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgICAgIGlmIChzdHJ1Y3R1cmUpCi0gICAg
ICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSk7Ci0gICAgfQotCi0g
ICAgdm9pZCBhc3NlcnRBcmVSZWdpc3RlcmVkKGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0KQotICAg
IHsKLSAgICAgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6IHNldCkKLSAgICAgICAgICAg
IGFzc2VydElzUmVnaXN0ZXJlZChzdHJ1Y3R1cmUpOwotICAgIH0KLQotICAgIHZvaWQgYXNzZXJ0
SXNSZWdpc3RlcmVkKFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgIHsKLSAgICAgICAgaWYgKHN0
cnVjdHVyZSkKLSAgICAgICAgICAgIG1fZ3JhcGguYXNzZXJ0SXNSZWdpc3RlcmVkKHN0cnVjdHVy
ZSk7Ci0gICAgfQotfTsKLQotYm9vbCBwZXJmb3JtU3RydWN0dXJlUmVnaXN0cmF0aW9uKEdyYXBo
JiBncmFwaCkKLXsKLSAgICByZXR1cm4gcnVuUGhhc2U8U3RydWN0dXJlUmVnaXN0cmF0aW9uUGhh
c2U+KGdyYXBoKTsKLX0KLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwotCi0jZW5kaWYgLy8g
RU5BQkxFKERGR19KSVQpCi0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Ry
dWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmgJKHJldmlzaW9uIDIxMTIy
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9u
UGhhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxF
KERGR19KSVQpCi0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLQotY2xhc3MgR3Jh
cGg7Ci0KLS8vIFJlZ2lzdGVycyBhbnkgc3RydWN0dXJlcyB3ZSBrbm93IGFib3V0IGFzIHdlYWsg
cmVmZXJlbmNlcywgYW5kIHNldHMgd2F0Y2hwb2ludHMgb24gYW55Ci0vLyBzdWNoIHN0cnVjdHVy
ZXMgdGhhdCB3ZSBrbm93IG9mIHRoYXQgYXJlIGN1cnJlbnRseSB3YXRjaGFibGUuIEl0J3Mgc29t
ZXdoYXQKLS8vIGNvdW50ZXJpbnR1aXRpdmUsIGJ1dCB0aGlzIGVuZHMgdXAgYmVpbmcgdGhlIGNs
ZWFuZXN0IGFuZCBtb3N0IGVmZmVjdGl2ZSB3YXkgb2YgcmVkdWNpbmcKLS8vIHN0cnVjdHVyZSBj
aGVja3Mgb24gdGVybWluYWwgc3RydWN0dXJlczoKLS8vCi0vLyAtIFdlIHVzZWQgdG8gb25seSBz
ZXQgd2F0Y2hwb2ludHMgb24gd2F0Y2hhYmxlIHN0cnVjdHVyZXMgaWYgd2Uga25ldyB0aGF0IHRo
aXMgd291bGQKLS8vICAgcmVtb3ZlIGEgc3RydWN0dXJlIGNoZWNrLiBFeHBlcmltZW50cyBzaG93
IHRoYXQgc3dpdGNoaW5nIGZyb20gdGhhdCwgdG8gYmxpbmRseQotLy8gICBzZXR0aW5nIHdhdGNo
cG9pbnRzIG9uIGFsbCB3YXRjaGFibGUgc3RydWN0dXJlcywgd2FzIG5vdCBhIHJlZ3Jlc3Npb24u
Ci0vLwotLy8gLSBJdCBtYWtlcyBhYnN0cmFjdCBpbnRlcnByZXRhdGlvbiBhIHdob2xlIGxvdCBl
YXNpZXIuIFdlIGp1c3QgYXNzdW1lIHRoYXQgd2F0Y2hhYmxlCi0vLyAgIHN0cnVjdHVyZXMgYXJl
IHVuY2xvYmJlcmFibGUgd2l0aG91dCBoYXZpbmcgdG8gZG8gYW55IG90aGVyIGxvZ2ljLgotCi1i
b29sIHBlcmZvcm1TdHJ1Y3R1cmVSZWdpc3RyYXRpb24oR3JhcGgmKTsKLQotfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkRGRwotCi0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1RyYW5zaXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHJhbnNpdGlvbi5jcHAJKHJldmlzaW9uIDIxMTIyOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHJhbnNpdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
CiB2b2lkIFRyYW5zaXRpb246OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENv
bnRleHQqIGNvbnRleHQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KHBvaW50ZXJEdW1wSW5Db250
ZXh0KHByZXZpb3VzLCBjb250ZXh0KSwgIiAtPiAiLCBwb2ludGVyRHVtcEluQ29udGV4dChuZXh0
LCBjb250ZXh0KSk7CisgICAgb3V0LnByaW50KHBvaW50ZXJEdW1wSW5Db250ZXh0KHByZXZpb3Vz
LmdldCgpLCBjb250ZXh0KSwgIiAtPiAiLCBwb2ludGVyRHVtcEluQ29udGV4dChuZXh0LmdldCgp
LCBjb250ZXh0KSk7CiB9CiAKIHZvaWQgVHJhbnNpdGlvbjo6ZHVtcChQcmludFN0cmVhbSYgb3V0
KSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUcmFuc2l0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUcmFuc2l0aW9uLmgJ
KHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHJhbnNp
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoREZH
X0pJVCkKIAorI2luY2x1ZGUgIkRGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlIDx3
dGYvUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTM4LDE2ICsz
OSwxMiBAQCBzdHJ1Y3QgRHVtcENvbnRleHQ7CiBuYW1lc3BhY2UgREZHIHsKIAogc3RydWN0IFRy
YW5zaXRpb24gewotICAgIFN0cnVjdHVyZSogcHJldmlvdXM7Ci0gICAgU3RydWN0dXJlKiBuZXh0
OworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgcHJldmlvdXM7CisgICAgUmVnaXN0ZXJlZFN0cnVj
dHVyZSBuZXh0OwogICAgIAotICAgIFRyYW5zaXRpb24oKQotICAgICAgICA6IHByZXZpb3VzKG51
bGxwdHIpCi0gICAgICAgICwgbmV4dChudWxscHRyKQotICAgIHsKLSAgICB9CisgICAgVHJhbnNp
dGlvbigpID0gZGVmYXVsdDsKICAgICAKLSAgICBUcmFuc2l0aW9uKFN0cnVjdHVyZSogcHJldmlv
dXMsIFN0cnVjdHVyZSogbmV4dCkKKyAgICBUcmFuc2l0aW9uKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
cHJldmlvdXMsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgbmV4dCkKICAgICAgICAgOiBwcmV2aW91cyhw
cmV2aW91cykKICAgICAgICAgLCBuZXh0KG5leHQpCiAgICAgewpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3Bw
CShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVD
aGVja0hvaXN0aW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjUsMjMgKzQ2NSwyMyBA
QCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBu
b3RpY2VTdHJ1Y3R1cmVDaGVjayhWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKKyAgICB2b2lkIG5vdGljZVN0cnVjdHVyZUNoZWNrKFZhcmlhYmxlQWNj
ZXNzRGF0YSogdmFyaWFibGUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKQogICAgIHsK
LSAgICAgICAgSGFzaE1hcDxWYXJpYWJsZUFjY2Vzc0RhdGEqLCBDaGVja0RhdGE+OjpBZGRSZXN1
bHQgcmVzdWx0ID0gbV9tYXAuYWRkKHZhcmlhYmxlLCBDaGVja0RhdGEoc3RydWN0dXJlKSk7Cisg
ICAgICAgIEhhc2hNYXA8VmFyaWFibGVBY2Nlc3NEYXRhKiwgQ2hlY2tEYXRhPjo6QWRkUmVzdWx0
IHJlc3VsdCA9IG1fbWFwLmFkZCh2YXJpYWJsZSwgQ2hlY2tEYXRhKHN0cnVjdHVyZS5nZXQoKSkp
OwogICAgICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIGlmIChyZXN1bHQuaXRlcmF0b3ItPnZhbHVlLm1fc3RydWN0dXJlID09IHN0cnVjdHVy
ZSkKKyAgICAgICAgaWYgKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUubV9zdHJ1Y3R1cmUgPT0gc3Ry
dWN0dXJlLmdldCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICByZXN1bHQuaXRlcmF0
b3ItPnZhbHVlLm1fc3RydWN0dXJlID0gMDsKICAgICB9CiAgICAgCi0gICAgdm9pZCBub3RpY2VT
dHJ1Y3R1cmVDaGVjayhWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlLCBjb25zdCBTdHJ1Y3R1
cmVTZXQmIHNldCkKKyAgICB2b2lkIG5vdGljZVN0cnVjdHVyZUNoZWNrKFZhcmlhYmxlQWNjZXNz
RGF0YSogdmFyaWFibGUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgc2V0KQogICAgIHsKICAgICAg
ICAgaWYgKHNldC5zaXplKCkgIT0gMSkgewotICAgICAgICAgICAgbm90aWNlU3RydWN0dXJlQ2hl
Y2sodmFyaWFibGUsIDApOworICAgICAgICAgICAgbm90aWNlU3RydWN0dXJlQ2hlY2sodmFyaWFi
bGUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KLSAgICAgICAgbm90aWNlU3RydWN0dXJlQ2hlY2sodmFyaWFibGUsIHNldC5vbmx5U3RydWN0
dXJlKCkpOworICAgICAgICBub3RpY2VTdHJ1Y3R1cmVDaGVjayh2YXJpYWJsZSwgc2V0LmF0KDAp
KTsKICAgICB9CiAKICAgICB2b2lkIG5vdGljZUNoZWNrQXJyYXkoVmFyaWFibGVBY2Nlc3NEYXRh
KiB2YXJpYWJsZSwgQXJyYXlNb2RlIGFycmF5TW9kZSkKQEAgLTUwMSwyMiArNTAxLDIyIEBAIHBy
aXZhdGU6CiAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZGlzYWJsZUNoZWNrQXJyYXlI
b2lzdGluZygpOwogICAgIH0KIAotICAgIHZvaWQgbm90aWNlU3RydWN0dXJlQ2hlY2tBY2NvdW50
aW5nRm9yQXJyYXlNb2RlKFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUsIFN0cnVjdHVyZSog
c3RydWN0dXJlKQorICAgIHZvaWQgbm90aWNlU3RydWN0dXJlQ2hlY2tBY2NvdW50aW5nRm9yQXJy
YXlNb2RlKFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
c3RydWN0dXJlKQogICAgIHsKICAgICAgICAgSGFzaE1hcDxWYXJpYWJsZUFjY2Vzc0RhdGEqLCBD
aGVja0RhdGE+OjppdGVyYXRvciByZXN1bHQgPSBtX21hcC5maW5kKHZhcmlhYmxlKTsKICAgICAg
ICAgaWYgKHJlc3VsdCA9PSBtX21hcC5lbmQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgaWYgKCFyZXN1bHQtPnZhbHVlLm1fYXJyYXlNb2RlSG9pc3RpbmdPa2F5IHx8ICFyZXN1bHQt
PnZhbHVlLm1fYXJyYXlNb2RlSXNWYWxpZCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
aWYgKHJlc3VsdC0+dmFsdWUubV9hcnJheU1vZGUuc3RydWN0dXJlV291bGRQYXNzQXJyYXlNb2Rl
RmlsdGVyaW5nKHN0cnVjdHVyZSkpCisgICAgICAgIGlmIChyZXN1bHQtPnZhbHVlLm1fYXJyYXlN
b2RlLnN0cnVjdHVyZVdvdWxkUGFzc0FycmF5TW9kZUZpbHRlcmluZyhzdHJ1Y3R1cmUuZ2V0KCkp
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICByZXN1bHQtPnZhbHVlLmRpc2FibGVDaGVj
a0FycmF5SG9pc3RpbmcoKTsKICAgICB9CiAKLSAgICB2b2lkIG5vdGljZVN0cnVjdHVyZUNoZWNr
QWNjb3VudGluZ0ZvckFycmF5TW9kZShWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlLCBjb25z
dCBTdHJ1Y3R1cmVTZXQmIHNldCkKKyAgICB2b2lkIG5vdGljZVN0cnVjdHVyZUNoZWNrQWNjb3Vu
dGluZ0ZvckFycmF5TW9kZShWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlLCBSZWdpc3RlcmVk
U3RydWN0dXJlU2V0IHNldCkKICAgICB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBzZXQuc2l6ZSgpOyBpKyspCi0gICAgICAgICAgICBub3RpY2VTdHJ1Y3R1cmVDaGVja0FjY291
bnRpbmdGb3JBcnJheU1vZGUodmFyaWFibGUsIHNldFtpXSk7CisgICAgICAgICAgICBub3RpY2VT
dHJ1Y3R1cmVDaGVja0FjY291bnRpbmdGb3JBcnJheU1vZGUodmFyaWFibGUsIHNldC5hdChpKSk7
CiAgICAgfQogCiAgICAgSGFzaE1hcDxWYXJpYWJsZUFjY2Vzc0RhdGEqLCBDaGVja0RhdGE+IG1f
bWFwOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHJl
dmlzaW9uIDIxMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFsaWRhdGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDksNyArMjA5LDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgICAgICAgICAgfHwgbm9kZS0+b3JpZ2luLmZvckV4aXQgIT0gcHJldmlvdXNOb2RlLT5v
cmlnaW4uZm9yRXhpdCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIW5vZGUtPmhhc1N0cnVjdHVyZSgpIHx8ICEh
bm9kZS0+c3RydWN0dXJlKCkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIW5v
ZGUtPmhhc1N0cnVjdHVyZSgpIHx8ICEhbm9kZS0+c3RydWN0dXJlKCkuZ2V0KCkpOwogICAgICAg
ICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIW5vZGUtPmhhc0NlbGxPcGVyYW5kKCkgfHwgbm9k
ZS0+Y2VsbE9wZXJhbmQoKS0+dmFsdWUoKS5pc0NlbGwoKSk7CiAgICAgICAgICAgICAgICAgVkFM
SURBVEUoKG5vZGUpLCAhbm9kZS0+aGFzQ2VsbE9wZXJhbmQoKSB8fCAhIW5vZGUtPmNlbGxPcGVy
YW5kKCktPnZhbHVlKCkpOwogICAgICAgICAgICAgICAgIApAQCAtMjg1LDcgKzI4NSw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgotICAgICAgICAgICAg
ICAgICAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogbm9kZS0+c3RydWN0dXJlU2V0KCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVy
ZSA6IG5vZGUtPnN0cnVjdHVyZVNldCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBU
aGlzIG9ubHkgc3VwcG9ydHMgc3RydWN0dXJlcyB0aGF0IGFyZSBKU0ZpbmFsT2JqZWN0IG9yIEpT
QXJyYXkuCiAgICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAobm9kZSksCkBAIC01NjUsNyArNTY1LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICAgICAgLy8gQ1BTIGRpc2FsbG93cyBpbnQzMiBhbmQgZG91YmxlIGFycmF5cy4g
VGhvc2UgcmVxdWlyZSB3ZWlyZCB0eXBlIGNoZWNrcyBhbmQKICAgICAgICAgICAgICAgICAgICAg
Ly8gY29udmVyc2lvbnMuIFRoZXkgYXJlIG5vdCBuZWVkZWQgaW4gdGhlIERGRyByaWdodCBub3cu
IFdlIHNob3VsZCBhZGQgc3VwcG9ydAogICAgICAgICAgICAgICAgICAgICAvLyBmb3IgdGhlc2Ug
aWYgdGhlIERGRyBldmVyIG5lZWRzIGl0LgotICAgICAgICAgICAgICAgICAgICBmb3IgKFN0cnVj
dHVyZSogc3RydWN0dXJlIDogbm9kZS0+c3RydWN0dXJlU2V0KCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgZm9yIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA6IG5vZGUtPnN0cnVjdHVy
ZVNldCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICFoYXNJ
bnQzMihzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBWQUxJREFURSgobm9kZSksICFoYXNEb3VibGUoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkp
OwogICAgICAgICAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5
Niw3ICsxOTYsOSBAQCBwdWJsaWM6CiAgICAgICAgIG1fcHJvYy5hZGRGYXN0Q29uc3RhbnQobV90
YWdUeXBlTnVtYmVyLT5rZXkoKSk7CiAgICAgICAgIG1fcHJvYy5hZGRGYXN0Q29uc3RhbnQobV90
YWdNYXNrLT5rZXkoKSk7CiAgICAgICAgIAotICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5j
b25zdEludFB0cihjb2RlQmxvY2soKSksIGFkZHJlc3NGb3IoQ2FsbEZyYW1lU2xvdDo6Y29kZUJs
b2NrKSk7CisgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdGhlIENvZGVCbG9jayB0byBoYXZlIGEg
d2VhayBwb2ludGVyIHRvIGl0c2VsZiBiZWNhdXNlCisgICAgICAgIC8vIHRoYXQgd291bGQgY2F1
c2UgaXQgdG8gYWx3YXlzIGdldCBjb2xsZWN0ZWQuCisgICAgICAgIG1fb3V0LnN0b3JlUHRyKG1f
b3V0LmNvbnN0SW50UHRyKGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oY29kZUJsb2NrKCkpKSwgYWRk
cmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2RlQmxvY2spKTsKIAogICAgICAgICAvLyBTdGFjayBP
dmVyZmxvdyBDaGVjay4KICAgICAgICAgdW5zaWduZWQgZXhpdEZyYW1lU2l6ZSA9IG1fZ3JhcGgu
cmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhpdCgpICogc2l6ZW9mKFJlZ2lzdGVyKTsKQEAgLTE1
NjAsNyArMTU2Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0LmJyYW5jaChpc09iamVjdCh2
YWx1ZSksIHVzdWFsbHkoY29udGludWF0aW9uKSwgcmFyZWx5KHNsb3dDYXNlKSk7CiAKICAgICAg
ICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAgIFZhbHVl
RnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKEludDY0LCBtX291dC5v
cGVyYXRpb24ob3BlcmF0aW9uT2JqZWN0Q29uc3RydWN0b3IpLCBtX2NhbGxGcmFtZSwgbV9vdXQu
Y29uc3RJbnRQdHIoZ2xvYmFsT2JqZWN0KSwgdmFsdWUpKTsKKyAgICAgICAgVmFsdWVGcm9tQmxv
Y2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlv
bihvcGVyYXRpb25PYmplY3RDb25zdHJ1Y3RvciksIG1fY2FsbEZyYW1lLCB3ZWFrUG9pbnRlcihn
bG9iYWxPYmplY3QpLCB2YWx1ZSkpOwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7
CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC0y
NjY0LDcgKzI2NjYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2hlY2tTdHJ1Y3R1cmUoCiAg
ICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyKGNlbGwsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVy
ZUlEKSwganNWYWx1ZVZhbHVlKGNlbGwpLAogICAgICAgICAgICAgICAgIGV4aXRLaW5kLCBtX25v
ZGUtPnN0cnVjdHVyZVNldCgpLAotICAgICAgICAgICAgICAgIFsmXSAoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpIHsKKyAgICAgICAgICAgICAgICBbJl0gKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0
dXJlKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3ZWFrU3RydWN0dXJlSUQoc3RydWN0
dXJlKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI2ODQs
NyArMjY4Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjaGVja1N0cnVjdHVyZSgKICAgICAg
ICAgICAgICAgICBtX291dC5sb2FkMzIodmFsdWUsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlE
KSwganNWYWx1ZVZhbHVlKHZhbHVlKSwKICAgICAgICAgICAgICAgICBleGl0S2luZCwgbV9ub2Rl
LT5zdHJ1Y3R1cmVTZXQoKSwKLSAgICAgICAgICAgICAgICBbJl0gKFN0cnVjdHVyZSogc3RydWN0
dXJlKSB7CisgICAgICAgICAgICAgICAgWyZdIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVy
ZSkgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2Vha1N0cnVjdHVyZUlEKHN0cnVjdHVy
ZSk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVh
dGlvbik7CkBAIC0yNzk4LDggKzI4MDAsOCBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgbV9m
dGxTdGF0ZS5qaXRDb2RlLT5jb21tb24ubm90aWZ5Q29tcGlsaW5nU3RydWN0dXJlVHJhbnNpdGlv
bihtX2dyYXBoLm1fcGxhbiwgY29kZUJsb2NrKCksIG1fbm9kZSk7CiAgICAgICAgIAotICAgICAg
ICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IG1fbm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91
czsKLSAgICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBtX25vZGUtPnRyYW5zaXRpb24o
KS0+bmV4dDsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBvbGRTdHJ1Y3R1cmUgPSBtX25v
ZGUtPnRyYW5zaXRpb24oKS0+cHJldmlvdXM7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
bmV3U3RydWN0dXJlID0gbV9ub2RlLT50cmFuc2l0aW9uKCktPm5leHQ7CiAgICAgICAgIEFTU0VS
VF9VTlVTRUQob2xkU3RydWN0dXJlLCBvbGRTdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpID09IG5l
d1N0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpOwogICAgICAgICBBU1NFUlQob2xkU3RydWN0dXJl
LT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpID09IG5ld1N0cnVjdHVyZS0+dHlwZUluZm8o
KS5pbmxpbmVUeXBlRmxhZ3MoKSk7CiAgICAgICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUtPnR5cGVJ
bmZvKCkudHlwZSgpID09IG5ld1N0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkpOwpAQCAtMzg5
OSwxMCArMzkwMSwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgLy8gd2l0aCBvbmUgb2YgdGhl
IGZvbGxvd2luZyBpbmRleGluZyBzaGFwZXM6IEludDMyLCBDb250aWd1b3VzLCBEb3VibGUuCiAg
ICAgICAgICAgICBMVmFsdWUgc3RydWN0dXJlID0gbV9vdXQuc2VsZWN0KAogICAgICAgICAgICAg
ICAgIG1fb3V0LmVxdWFsKGluZGV4aW5nVHlwZSwgbV9vdXQuY29uc3RJbnQzMihBcnJheVdpdGhJ
bnQzMikpLAotICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKGdsb2JhbE9iamVjdC0+
YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aElu
dDMyKSksCisgICAgICAgICAgICAgICAgd2Vha1N0cnVjdHVyZShtX2dyYXBoLnJlZ2lzdGVyU3Ry
dWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdB
bGxvY2F0aW9uKEFycmF5V2l0aEludDMyKSkpLAogICAgICAgICAgICAgICAgIG1fb3V0LnNlbGVj
dChtX291dC5lcXVhbChpbmRleGluZ1R5cGUsIG1fb3V0LmNvbnN0SW50MzIoQXJyYXlXaXRoQ29u
dGlndW91cykpLAotICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihnbG9iYWxP
YmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJh
eVdpdGhDb250aWd1b3VzKSksCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRy
KGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0
aW9uKEFycmF5V2l0aERvdWJsZSkpKSk7CisgICAgICAgICAgICAgICAgICAgIHdlYWtTdHJ1Y3R1
cmUobV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJl
Rm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhDb250aWd1b3VzKSkpLAor
ICAgICAgICAgICAgICAgICAgICB3ZWFrU3RydWN0dXJlKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1
cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9j
YXRpb24oQXJyYXlXaXRoRG91YmxlKSkpKSk7CiAgICAgICAgICAgICBhcnJheVJlc3VsdCA9IGFs
bG9jYXRlSlNBcnJheShyZXN1bHRMZW5ndGgsIHN0cnVjdHVyZSwgaW5kZXhpbmdUeXBlLCBmYWxz
ZSwgZmFsc2UpOwogICAgICAgICB9CiAKQEAgLTM5OTQsMTMgKzM5OTYsMTMgQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgICAgIExWYWx1ZSBzY29wZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgIFN5bWJvbFRhYmxlKiB0YWJsZSA9IG1fbm9kZS0+Y2FzdE9wZXJhbmQ8U3ltYm9s
VGFibGUqPigpOwotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YWN0aXZhdGlvblN0cnVjdHVyZSgp
OworICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0
ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50
aWMpLT5hY3RpdmF0aW9uU3RydWN0dXJlKCkpOwogICAgICAgICBKU1ZhbHVlIGluaXRpYWxpemF0
aW9uVmFsdWUgPSBtX25vZGUtPmluaXRpYWxpemF0aW9uVmFsdWVGb3JBY3RpdmF0aW9uKCk7CiAg
ICAgICAgIEFTU0VSVChpbml0aWFsaXphdGlvblZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgaW5pdGlh
bGl6YXRpb25WYWx1ZSA9PSBqc1REWlZhbHVlKCkpOwogICAgICAgICBpZiAodGFibGUtPnNpbmds
ZXRvblNjb3BlKCktPmlzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgICAgICBMVmFsdWUgY2FsbFJl
c3VsdCA9IHZtQ2FsbCgKICAgICAgICAgICAgICAgICBJbnQ2NCwKLSAgICAgICAgICAgICAgICBt
X291dC5vcGVyYXRpb24ob3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlvbkRpcmVjdCksIG1fY2FsbEZy
YW1lLCB3ZWFrUG9pbnRlcihzdHJ1Y3R1cmUpLAorICAgICAgICAgICAgICAgIG1fb3V0Lm9wZXJh
dGlvbihvcGVyYXRpb25DcmVhdGVBY3RpdmF0aW9uRGlyZWN0KSwgbV9jYWxsRnJhbWUsIHdlYWtT
dHJ1Y3R1cmUoc3RydWN0dXJlKSwKICAgICAgICAgICAgICAgICBzY29wZSwgd2Vha1BvaW50ZXIo
dGFibGUpLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShpbml0aWFsaXphdGlvblZh
bHVlKSkpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZShjYWxsUmVzdWx0KTsKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTQwMzUsNyArNDAzNyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBbPV0g
KGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0
aDo6R2VuZXJhdG9yPiB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2Vu
ZXJhdG9yKAogICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25DcmVhdGVBY3RpdmF0aW9uRGly
ZWN0LCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksCi0gICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BS
KCksCisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1
Y3R1cmUuZ2V0KCkpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksCiAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cih0YWJsZSksCiAgICAgICAgICAgICAgICAg
ICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShpbml0aWFsaXph
dGlvblZhbHVlKSkpOwogICAgICAgICAgICAgfSwKQEAgLTQwNjUsMTAgKzQwNjcsMTAgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPQorICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVj
dHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoCiAgICAgICAgICAgICBpc0dlbmVyYXRv
ckZ1bmN0aW9uID8gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50
aWMpLT5nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpIDoKICAgICAgICAgICAgIGlzQXN5bmNG
dW5jdGlvbiA/IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
KS0+YXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpIDoKLSAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKTsK
KyAgICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFu
dGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CiAgICAgICAgIAogICAgICAgICBMQmFzaWNCbG9j
ayBzbG93UGF0aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRp
bnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC00MTI4LDggKzQxMzAsOCBAQCBwcml2YXRl
OgogICAgICAgICAvLyB0aGVtIGJlIGV4cGxpY2l0IGFyZ3VtZW50cyB0byB0aGlzIG5vZGUuCiAg
ICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDIyMDcK
ICAgICAgICAgCi0gICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0KLSAgICAgICAgICAgIG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZGlyZWN0QXJn
dW1lbnRzU3RydWN0dXJlKCk7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJl
ID0KKyAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxP
YmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5kaXJlY3RBcmd1bWVudHNTdHJ1Y3R1
cmUoKSk7CiAgICAgICAgIAogICAgICAgICB1bnNpZ25lZCBtaW5DYXBhY2l0eSA9IG1fZ3JhcGgu
YmFzZWxpbmVDb2RlQmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5udW1QYXJhbWV0
ZXJzKCkgLSAxOwogICAgICAgICAKQEAgLTQxNzEsNyArNDE3Myw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBbPV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRy
PExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0
ZUxhenlDYWxsR2VuZXJhdG9yKAogICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25DcmVhdGVE
aXJlY3RBcmd1bWVudHMsIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwKLSAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGxvY2F0aW9uc1sx
XS5kaXJlY3RHUFIoKSwKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVk
SW1tUHRyKHN0cnVjdHVyZS5nZXQoKSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSwKICAgICAg
ICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobWluQ2FwYWNpdHkpKTsK
ICAgICAgICAgICAgIH0sIGxlbmd0aC52YWx1ZSk7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNs
b3dSZXN1bHQgPSBtX291dC5hbmNob3IoY2FsbFJlc3VsdCk7CkBAIC00MjU5LDcgKzQyNjEsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgTFZhbHVlIGFycmF5TGVuZ3RoID0gbG93SW50MzIobV9u
b2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBsb29wU3RhcnQgPSBtX291
dC5uZXdCbG9jaygpOwogICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAg
ICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5yZXN0UGFyYW1ldGVy
U3RydWN0dXJlKCk7CisgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9
IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5yZXN0UGFyYW1ldGVyU3Ry
dWN0dXJlKCkpOwogICAgICAgICAgICAgQXJyYXlWYWx1ZXMgYXJyYXlWYWx1ZXMgPSBhbGxvY2F0
ZVVuaW5pdGlhbGl6ZWRDb250aWd1b3VzSlNBcnJheShhcnJheUxlbmd0aCwgc3RydWN0dXJlKTsK
ICAgICAgICAgICAgIExWYWx1ZSBhcnJheSA9IGFycmF5VmFsdWVzLmFycmF5OwogICAgICAgICAg
ICAgTFZhbHVlIGJ1dHRlcmZseSA9IGFycmF5VmFsdWVzLmJ1dHRlcmZseTsKQEAgLTQzMjcsOCAr
NDMyOSw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzcGVjdWxhdGUobV9ncmFwaC52YXJBcmdD
aGlsZChtX25vZGUsIG9wZXJhbmRJbmRleCkpOwogICAgICAgICAKICAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljKTsKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmpl
Y3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbigKLSAgICAg
ICAgICAgIG1fbm9kZS0+aW5kZXhpbmdUeXBlKCkpOworICAgICAgICBSZWdpc3RlcmVkU3RydWN0
dXJlIHN0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5h
cnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oCisgICAgICAgICAg
ICBtX25vZGUtPmluZGV4aW5nVHlwZSgpKSk7CiAKICAgICAgICAgaWYgKCFnbG9iYWxPYmplY3Qt
PmlzSGF2aW5nQUJhZFRpbWUoKSAmJiAhaGFzQW55QXJyYXlTdG9yYWdlKG1fbm9kZS0+aW5kZXhp
bmdUeXBlKCkpKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBudW1FbGVtZW50cyA9IG1fbm9kZS0+
bnVtQ2hpbGRyZW4oKTsKQEAgLTQzNzMsNyArNDM3NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlm
ICghbV9ub2RlLT5udW1DaGlsZHJlbigpKSB7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKHZtQ2Fs
bCgKICAgICAgICAgICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Vt
cHR5QXJyYXkpLCBtX2NhbGxGcmFtZSwKLSAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0
cihzdHJ1Y3R1cmUpKSk7CisgICAgICAgICAgICAgICAgd2Vha1N0cnVjdHVyZShzdHJ1Y3R1cmUp
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCkBAIC00Mzk0LDcg
KzQzOTYsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZt
Q2FsbCgKICAgICAgICAgICAgIEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJy
YXkpLCBtX2NhbGxGcmFtZSwKLSAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHN0cnVjdHVy
ZSksIG1fb3V0LmNvbnN0SW50UHRyKGJ1ZmZlciksCisgICAgICAgICAgICB3ZWFrU3RydWN0dXJl
KHN0cnVjdHVyZSksIG1fb3V0LmNvbnN0SW50UHRyKGJ1ZmZlciksCiAgICAgICAgICAgICBtX291
dC5jb25zdEludFB0cihtX25vZGUtPm51bUNoaWxkcmVuKCkpKTsKICAgICAgICAgCiAgICAgICAg
IG1fb3V0LnN0b3JlUHRyKG1fb3V0LmludFB0clplcm8sIG1fb3V0LmFic29sdXRlKHNjcmF0Y2hC
dWZmZXItPmFjdGl2ZUxlbmd0aFB0cigpKSk7CkBAIC00NDM0LDcgKzQ0MzYsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5z
ZW1hbnRpYyktPm9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGUoQXJyYXlXaXRo
Q29udGlndW91cyk7CisgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9
IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLT5vcmlnaW5hbEFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBl
KEFycmF5V2l0aENvbnRpZ3VvdXMpKTsKICAgICAgICAgICAgIEFycmF5VmFsdWVzIGFycmF5VmFs
dWVzID0gYWxsb2NhdGVVbmluaXRpYWxpemVkQ29udGlndW91c0pTQXJyYXkobGVuZ3RoLCBzdHJ1
Y3R1cmUpOwogICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IGFycmF5VmFsdWVzLmFycmF5Owog
ICAgICAgICAgICAgTFZhbHVlIHN0b3JhZ2UgPSBhcnJheVZhbHVlcy5idXR0ZXJmbHk7CkBAIC00
NjU2LDggKzQ2NTgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZU5ld0FycmF5QnVmZmVy
KCkKICAgICB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5n
VHlwZUR1cmluZ0FsbG9jYXRpb24oCi0gICAgICAgICAgICBtX25vZGUtPmluZGV4aW5nVHlwZSgp
KTsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lz
dGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVE
dXJpbmdBbGxvY2F0aW9uKAorICAgICAgICAgICAgbV9ub2RlLT5pbmRleGluZ1R5cGUoKSkpOwog
ICAgICAgICAKICAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmlzSGF2aW5nQUJhZFRpbWUoKSAm
JiAhaGFzQW55QXJyYXlTdG9yYWdlKG1fbm9kZS0+aW5kZXhpbmdUeXBlKCkpKSB7CiAgICAgICAg
ICAgICB1bnNpZ25lZCBudW1FbGVtZW50cyA9IG1fbm9kZS0+bnVtQ29uc3RhbnRzKCk7CkBAIC00
Njg2LDcgKzQ2ODgsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgc2V0SlNWYWx1ZSh2
bUNhbGwoCiAgICAgICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0Fy
cmF5QnVmZmVyKSwgbV9jYWxsRnJhbWUsCi0gICAgICAgICAgICBtX291dC5jb25zdEludFB0cihz
dHJ1Y3R1cmUpLCBtX291dC5jb25zdEludFB0cihtX25vZGUtPnN0YXJ0Q29uc3RhbnQoKSksCisg
ICAgICAgICAgICB3ZWFrU3RydWN0dXJlKHN0cnVjdHVyZSksIG1fb3V0LmNvbnN0SW50UHRyKG1f
bm9kZS0+c3RhcnRDb25zdGFudCgpKSwKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKG1f
bm9kZS0+bnVtQ29uc3RhbnRzKCkpKSk7CiAgICAgfQogCkBAIC00Njk1LDIzICs0Njk3LDIyIEBA
IHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSBwdWJsaWNMZW5ndGggPSBsb3dJbnQzMihtX25vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgCiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0g
ICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVy
ZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oCi0gICAgICAgICAgICBtX25vZGUtPmlu
ZGV4aW5nVHlwZSgpKTsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBt
X2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJ
bmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKAorICAgICAgICAgICAgbV9ub2RlLT5pbmRleGlu
Z1R5cGUoKSkpOwogICAgICAgICAKICAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmlzSGF2aW5n
QUJhZFRpbWUoKSAmJiAhaGFzQW55QXJyYXlTdG9yYWdlKG1fbm9kZS0+aW5kZXhpbmdUeXBlKCkp
KSB7CiAgICAgICAgICAgICBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlID0gbV9ub2RlLT5pbmRl
eGluZ1R5cGUoKTsKICAgICAgICAgICAgIHNldEpTVmFsdWUoCiAgICAgICAgICAgICAgICAgYWxs
b2NhdGVKU0FycmF5KAotICAgICAgICAgICAgICAgICAgICBwdWJsaWNMZW5ndGgsIG1fb3V0LmNv
bnN0SW50UHRyKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJp
bmdBbGxvY2F0aW9uKGluZGV4aW5nVHlwZSkpLCBtX291dC5jb25zdEludDMyKGluZGV4aW5nVHlw
ZSkpLmFycmF5KTsKKyAgICAgICAgICAgICAgICAgICAgcHVibGljTGVuZ3RoLCB3ZWFrUG9pbnRl
cihnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2Nh
dGlvbihpbmRleGluZ1R5cGUpKSwgbV9vdXQuY29uc3RJbnQzMihpbmRleGluZ1R5cGUpKS5hcnJh
eSk7CiAgICAgICAgICAgICBtdXRhdG9yRmVuY2UoKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgTFZhbHVlIHN0cnVjdHVyZVZhbHVlID0gbV9vdXQu
c2VsZWN0KAogICAgICAgICAgICAgbV9vdXQuYWJvdmVPckVxdWFsKHB1YmxpY0xlbmd0aCwgbV9v
dXQuY29uc3RJbnQzMihNSU5fQVJSQVlfU1RPUkFHRV9DT05TVFJVQ1RJT05fTEVOR1RIKSksCi0g
ICAgICAgICAgICBtX291dC5jb25zdEludFB0cigKLSAgICAgICAgICAgICAgICBnbG9iYWxPYmpl
Y3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdp
dGhBcnJheVN0b3JhZ2UpKSwKLSAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHN0cnVjdHVy
ZSkpOworICAgICAgICAgICAgd2Vha1N0cnVjdHVyZShtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJl
KGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0
aW9uKEFycmF5V2l0aEFycmF5U3RvcmFnZSkpKSwKKyAgICAgICAgICAgIHdlYWtTdHJ1Y3R1cmUo
c3RydWN0dXJlKSk7CiAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBtX291dC5vcGVy
YXRpb24ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSksIG1fY2FsbEZyYW1lLCBzdHJ1Y3R1cmVW
YWx1ZSwgcHVibGljTGVuZ3RoLCBtX291dC5pbnRQdHJaZXJvKSk7CiAgICAgfQogCkBAIC00NzIy
LDcgKzQ3MjMsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgc3dpdGNoIChtX25vZGUt
PmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgICAgICBjYXNlIEludDMyVXNlOiB7Ci0gICAgICAg
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVj
dHVyZUNvbmN1cnJlbnRseSh0eXBlKTsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
c3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnR5cGVk
QXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZSkpOwogCiAgICAgICAgICAgICBMVmFsdWUg
c2l6ZSA9IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQxKCkpOwogCkBAIC00NzgxLDcgKzQ3ODIsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIFs9XSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYg
bG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKAogICAgICAgICAgICAg
ICAgICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhTaXplRm9yVHlwZSh0eXBlKSwg
bG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLAotICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihz
dHJ1Y3R1cmUuZ2V0KCkpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksCiAgICAgICAgICAgICAg
ICAgICAgICAgICBsb2NhdGlvbnNbMl0uZGlyZWN0R1BSKCkpOwogICAgICAgICAgICAgICAgIH0s
CiAgICAgICAgICAgICAgICAgc2l6ZSwgc3RvcmFnZVZhbHVlKTsKQEAgLTQ4MTMsNyArNDgxNCw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxlQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoKQog
ICAgIHsKICAgICAgICAgTFZhbHVlIG9iamVjdCA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7
Ci0gICAgICAgIHNldFN0b3JhZ2UoYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2Uob2JqZWN0LCBtX25v
ZGUtPnRyYW5zaXRpb24oKS0+cHJldmlvdXMpKTsKKyAgICAgICAgc2V0U3RvcmFnZShhbGxvY2F0
ZVByb3BlcnR5U3RvcmFnZShvYmplY3QsIG1fbm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91cy5n
ZXQoKSkpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZVJlYWxsb2NhdGVQcm9wZXJ0eVN0b3Jh
Z2UoKQpAQCAtNDgyNCw3ICs0ODI1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIHNl
dFN0b3JhZ2UoCiAgICAgICAgICAgICByZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKAotICAgICAg
ICAgICAgICAgIG9iamVjdCwgb2xkU3RvcmFnZSwgdHJhbnNpdGlvbi0+cHJldmlvdXMsIHRyYW5z
aXRpb24tPm5leHQpKTsKKyAgICAgICAgICAgICAgICBvYmplY3QsIG9sZFN0b3JhZ2UsIHRyYW5z
aXRpb24tPnByZXZpb3VzLmdldCgpLCB0cmFuc2l0aW9uLT5uZXh0LmdldCgpKSk7CiAgICAgfQog
ICAgIAogICAgIHZvaWQgY29tcGlsZU51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHkoKQpAQCAt
NTI4NiwxMSArNTI4NywxMSBAQCBwcml2YXRlOgogICAgICAgICBMQmFzaWNCbG9jayBjb250aW51
YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICAKICAgICAgICAgVmVjdG9yPFN3aXRj
aENhc2UsIDI+IGNhc2VzOwotICAgICAgICBTdHJ1Y3R1cmVTZXQgYmFzZVNldDsKKyAgICAgICAg
UmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBiYXNlU2V0OwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBkYXRhLmNhc2VzLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgTXVsdGlHZXRCeU9mZnNl
dENhc2UgZ2V0Q2FzZSA9IGRhdGEuY2FzZXNbaV07CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGogPSBnZXRDYXNlLnNldCgpLnNpemUoKTsgai0tOykgewotICAgICAgICAgICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gZ2V0Q2FzZS5zZXQoKVtqXTsKKyAgICAgICAgICAgICAgICBSZWdp
c3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IGdldENhc2Uuc2V0KClbal07CiAgICAgICAgICAg
ICAgICAgYmFzZVNldC5hZGQoc3RydWN0dXJlKTsKICAgICAgICAgICAgICAgICBjYXNlcy5hcHBl
bmQoU3dpdGNoQ2FzZSh3ZWFrU3RydWN0dXJlSUQoc3RydWN0dXJlKSwgYmxvY2tzW2ldLCBXZWln
aHQoMSkpKTsKICAgICAgICAgICAgIH0KQEAgLTUzNjgsMTEgKzUzNjksMTEgQEAgcHJpdmF0ZToK
ICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKICAg
ICAgICAgCiAgICAgICAgIFZlY3RvcjxTd2l0Y2hDYXNlLCAyPiBjYXNlczsKLSAgICAgICAgU3Ry
dWN0dXJlU2V0IGJhc2VTZXQ7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgYmFzZVNl
dDsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS52YXJpYW50cy5zaXplKCk7IGktLTsp
IHsKICAgICAgICAgICAgIFB1dEJ5SWRWYXJpYW50IHZhcmlhbnQgPSBkYXRhLnZhcmlhbnRzW2ld
OwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gdmFyaWFudC5vbGRTdHJ1Y3R1cmUoKS5z
aXplKCk7IGotLTspIHsKLSAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHZh
cmlhbnQub2xkU3RydWN0dXJlKClbal07CisgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVj
dHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQub2xkU3Ry
dWN0dXJlKClbal0pOwogICAgICAgICAgICAgICAgIGJhc2VTZXQuYWRkKHN0cnVjdHVyZSk7CiAg
ICAgICAgICAgICAgICAgY2FzZXMuYXBwZW5kKFN3aXRjaENhc2Uod2Vha1N0cnVjdHVyZUlEKHN0
cnVjdHVyZSksIGJsb2Nrc1tpXSwgV2VpZ2h0KDEpKSk7CiAgICAgICAgICAgICB9CkBAIC01NDEz
LDcgKzU0MTQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIEFTU0VSVCh2YXJpYW50Lm9s
ZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKS0+dHlwZUluZm8oKS5pbmxpbmVUeXBlRmxhZ3MoKSA9
PSB2YXJpYW50Lm5ld1N0cnVjdHVyZSgpLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpKTsK
ICAgICAgICAgICAgICAgICBBU1NFUlQodmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9u
KCktPnR5cGVJbmZvKCkudHlwZSgpID09IHZhcmlhbnQubmV3U3RydWN0dXJlKCktPnR5cGVJbmZv
KCkudHlwZSgpKTsKICAgICAgICAgICAgICAgICBtX291dC5zdG9yZTMyKAotICAgICAgICAgICAg
ICAgICAgICB3ZWFrU3RydWN0dXJlSUQodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSksIGJhc2UsIG1f
aGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKTsKKyAgICAgICAgICAgICAgICAgICAgd2Vha1N0cnVj
dHVyZUlEKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkp
LCBiYXNlLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKQEAgLTc3NDYs
MTEgKzc3NDcsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgTFZhbHVlIGluZGV4ID0gbV9vdXQuYml0
QW5kKG1hc2ssIHVubWFza2VkSW5kZXgpOwogICAgICAgICBMVmFsdWUgaGFzaE1hcEJ1Y2tldCA9
IG1fb3V0LmxvYWQ2NChtX291dC5iYXNlSW5kZXgobV9oZWFwcy5wcm9wZXJ0aWVzLmF0QW55TnVt
YmVyKCksIGJ1ZmZlciwgbV9vdXQuemVyb0V4dChpbmRleCwgSW50NjQpLCBTY2FsZUVpZ2h0KSk7
CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGJ1Y2tldFJlc3VsdCA9IG1fb3V0LmFuY2hvcihoYXNo
TWFwQnVja2V0KTsKLSAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKGhhc2hNYXBCdWNr
ZXQsIG1fb3V0LmNvbnN0SW50UHRyKEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1
Y2tldERhdGFLZXk+Pjo6ZW1wdHlWYWx1ZSgpKSksCisgICAgICAgIG1fb3V0LmJyYW5jaChtX291
dC5lcXVhbChoYXNoTWFwQnVja2V0LCBtX291dC5jb25zdEludFB0cihiaXR3aXNlX2Nhc3Q8aW50
cHRyX3Q+KEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+Pjo6
ZW1wdHlWYWx1ZSgpKSkpLAogICAgICAgICAgICAgdW5zdXJlKG5vdFByZXNlbnRJblRhYmxlKSwg
dW5zdXJlKG5vdEVtcHR5VmFsdWUpKTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhub3RFbXB0
eVZhbHVlLCBub3REZWxldGVkVmFsdWUpOwotICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1
YWwoaGFzaE1hcEJ1Y2tldCwgbV9vdXQuY29uc3RJbnRQdHIoSGFzaE1hcEltcGw8SGFzaE1hcEJ1
Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT4+OjpkZWxldGVkVmFsdWUoKSkpLAorICAgICAgICBt
X291dC5icmFuY2gobV9vdXQuZXF1YWwoaGFzaE1hcEJ1Y2tldCwgbV9vdXQuY29uc3RJbnRQdHIo
Yml0d2lzZV9jYXN0PGludHB0cl90PihIYXNoTWFwSW1wbDxIYXNoTWFwQnVja2V0PEhhc2hNYXBC
dWNrZXREYXRhS2V5Pj46OmRlbGV0ZWRWYWx1ZSgpKSkpLAogICAgICAgICAgICAgdW5zdXJlKGxv
b3BBcm91bmQpLCB1bnN1cmUobm90RGVsZXRlZFZhbHVlKSk7CiAKICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8obm90RGVsZXRlZFZhbHVlLCBsb29wQXJvdW5kKTsKQEAgLTgyMjIsNyArODIyMyw4IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIGNvbXBpbGVPdmVycmlkZXNIYXNJbnN0YW5jZSgpCiAgICAg
ewotICAgICAgICBKU0Z1bmN0aW9uKiBkZWZhdWx0SGFzSW5zdGFuY2VGdW5jdGlvbiA9IGpzQ2Fz
dDxKU0Z1bmN0aW9uKj4obV9ub2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpKTsKKyAgICAgICAg
RnJvemVuVmFsdWUqIGRlZmF1bHRIYXNJbnN0YW5jZUZ1bmN0aW9uID0gbV9ub2RlLT5jZWxsT3Bl
cmFuZCgpOworICAgICAgICBBU1NFUlQoZGVmYXVsdEhhc0luc3RhbmNlRnVuY3Rpb24tPmNlbGwo
KS0+aW5oZXJpdHMoSlNGdW5jdGlvbjo6aW5mbygpKSk7CiAKICAgICAgICAgTFZhbHVlIGNvbnN0
cnVjdG9yID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgTFZhbHVlIGhhc0lu
c3RhbmNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKTsKQEAgLTgyMzMsNyArODIzNSw3
IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIFVubGlrZSBpbiB0aGUgREZHLCB3ZSBkb24ndCB3b3Jy
eSBhYm91dCBjbGVhbmluZyB0aGlzIGNvZGUgdXAgZm9yIHRoZSBjYXNlIHdoZXJlIHdlIGhhdmUg
cHJvdmVuIHRoZSBoYXNJbnN0YW5jZVZhbHVlIGlzIGEgY29uc3RhbnQgYXMgQjMgc2hvdWxkIGZp
eCBpdCBmb3IgdXMuCiAKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgbm90RGVmYXVsdEhhc0luc3Rh
bmNlUmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmJvb2xlYW5UcnVlKTsKLSAgICAgICAgbV9v
dXQuYnJhbmNoKG1fb3V0Lm5vdEVxdWFsKGhhc0luc3RhbmNlLCBtX291dC5jb25zdEludFB0cihk
ZWZhdWx0SGFzSW5zdGFuY2VGdW5jdGlvbikpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJl
KGRlZmF1bHRIYXNJbnN0YW5jZSkpOworICAgICAgICBtX291dC5icmFuY2gobV9vdXQubm90RXF1
YWwoaGFzSW5zdGFuY2UsIGZyb3plblBvaW50ZXIoZGVmYXVsdEhhc0luc3RhbmNlRnVuY3Rpb24p
KSwgdW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShkZWZhdWx0SGFzSW5zdGFuY2UpKTsKIAog
ICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGRlZmF1bHRIYXNJ
bnN0YW5jZSwgY29udGludWF0aW9uKTsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgaW1wbGVtZW50
c0RlZmF1bHRIYXNJbnN0YW5jZVJlc3VsdCA9IG1fb3V0LmFuY2hvcihtX291dC50ZXN0SXNaZXJv
MzIoCkBAIC04NTgxLDcgKzg1ODMsNyBAQCBwcml2YXRlOgogICAgICAgICBMVmFsdWUgc3RydWN0
dXJlID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgY2hlY2tTdHJ1Y3R1cmUo
CiAgICAgICAgICAgICBzdHJ1Y3R1cmUsIG5vVmFsdWUoKSwgQmFkQ2FjaGUsIG1fbm9kZS0+c3Ry
dWN0dXJlU2V0KCksCi0gICAgICAgICAgICBbdGhpc10gKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7
CisgICAgICAgICAgICBbdGhpc10gKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSB7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHdlYWtTdHJ1Y3R1cmUoc3RydWN0dXJlKTsKICAgICAgICAg
ICAgIH0pOwogICAgIH0KQEAgLTg2MDYsNyArODYwOCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0
ID0gbV9ub2RlLT5zdHJ1Y3R1cmVTZXQoKTsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNl
dCBzZXQgPSBtX25vZGUtPnN0cnVjdHVyZVNldCgpOwogCiAgICAgICAgIFZlY3RvcjxMQmFzaWNC
bG9jaywgMT4gYmxvY2tzKHNldC5zaXplKCkpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBz
ZXQuc2l6ZSgpOyBpLS07KQpAQCAtODYxNiw3ICs4NjE4LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
CiAgICAgICAgIFZlY3RvcjxTd2l0Y2hDYXNlLCAxPiBjYXNlcyhzZXQuc2l6ZSgpKTsKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gc2V0LnNpemUoKTsgaS0tOykKLSAgICAgICAgICAgIGNhc2Vz
W2ldID0gU3dpdGNoQ2FzZSh3ZWFrU3RydWN0dXJlKHNldFtpXSksIGJsb2Nrc1tpXSwgV2VpZ2h0
KDEpKTsKKyAgICAgICAgICAgIGNhc2VzW2ldID0gU3dpdGNoQ2FzZSh3ZWFrU3RydWN0dXJlKHNl
dC5hdChpKSksIGJsb2Nrc1tpXSwgV2VpZ2h0KDEpKTsKICAgICAgICAgbV9vdXQuc3dpdGNoSW5z
dHJ1Y3Rpb24oCiAgICAgICAgICAgICBsb3dDZWxsKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2Rl
LCAwKSksIGNhc2VzLCBkdW1teURlZmF1bHQsIFdlaWdodCgwKSk7CiAgICAgICAgIApAQCAtODYy
Nyw3ICs4NjI5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gc2V0LnNp
emUoKTsgaS0tOykgewogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oYmxvY2tzW2ldLCBpICsg
MSA8IHNldC5zaXplKCkgPyBibG9ja3NbaSArIDFdIDogZHVtbXlEZWZhdWx0KTsKICAgICAgICAg
ICAgIAotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzZXRbaV07CisgICAgICAg
ICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IHNldC5hdChpKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgTFZhbHVlIG9iamVjdDsKICAgICAgICAgICAgIExWYWx1ZSBidXR0
ZXJmbHk7CkBAIC04NzA5LDcgKzg3MTEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICAgICAgWz1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxM
YXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3BlcmF0aW9uTmV3T2JqZWN0V2l0aEJ1dHRlcmZseVdpdGhJbmRleGluZ0hlYWRlckFu
ZFZlY3Rvckxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25z
WzBdLmRpcmVjdEdQUigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigp
LCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlLmdldCgpKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpLCBsb2NhdGlv
bnNbMl0uZGlyZWN0R1BSKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAg
ICAgICAgICAgICAgICAgIHZlY3Rvckxlbmd0aCwgYnV0dGVyZmx5VmFsdWUpOwpAQCAtODcxOCw3
ICs4NzIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgIFs9XSAoY29uc3Qg
VmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5l
cmF0b3I+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNh
bGxHZW5lcmF0b3IoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5l
d09iamVjdFdpdGhCdXR0ZXJmbHksIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVj
dHVyZSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUuZ2V0KCkpLCBs
b2NhdGlvbnNbMV0uZGlyZWN0R1BSKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAg
ICAgICAgICAgICAgICAgICAgICAgIGJ1dHRlcmZseVZhbHVlKTsKICAgICAgICAgICAgICAgICB9
CkBAIC04ODkxLDcgKzg4OTMsNyBAQCBwcml2YXRlOgogICAgICAgICBMVmFsdWUgc2NvcGUgPSBs
b3dDZWxsKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxKSk7CiAgICAgICAgIFN5bWJvbFRh
YmxlKiB0YWJsZSA9IG1fbm9kZS0+Y2FzdE9wZXJhbmQ8U3ltYm9sVGFibGUqPigpOwogICAgICAg
ICBBU1NFUlQodGFibGUgPT0gbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDApLT5jYXN0Q29u
c3RhbnQ8U3ltYm9sVGFibGUqPigpKTsKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFjdGl2YXRp
b25TdHJ1Y3R1cmUoKTsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBt
X2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljKS0+YWN0aXZhdGlvblN0cnVjdHVyZSgpKTsKIAogICAgICAgICBMQmFz
aWNCbG9jayBzbG93UGF0aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2Nr
IGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CkBAIC04OTE4LDcgKzg5MjAsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgWz1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlv
bnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gewogICAgICAgICAgICAgICAg
IHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICAgICAgb3Bl
cmF0aW9uQ3JlYXRlQWN0aXZhdGlvbkRpcmVjdCwgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLAot
ICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJl
KSwgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpLAorICAgICAgICAgICAgICAgICAgICBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlLmdldCgpKSwgbG9jYXRpb25zWzFdLmRpcmVj
dEdQUigpLAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
dGFibGUpLAogICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpKTsKICAgICAgICAgICAgIH0sIHNjb3BlKTsK
QEAgLTkwNDMsMTEgKzkwNDUsMTIgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29tcGlsZU5ld1Jl
Z2V4cCgpCiAgICAgewotICAgICAgICBSZWdFeHAqIHJlZ2V4cCA9IG1fbm9kZS0+Y2FzdE9wZXJh
bmQ8UmVnRXhwKj4oKTsKKyAgICAgICAgRnJvemVuVmFsdWUqIHJlZ2V4cCA9IG1fbm9kZS0+Y2Vs
bE9wZXJhbmQoKTsKKyAgICAgICAgQVNTRVJUKHJlZ2V4cC0+Y2VsbCgpLT5pbmhlcml0cyhSZWdF
eHA6OmluZm8oKSkpOwogICAgICAgICBMVmFsdWUgcmVzdWx0ID0gdm1DYWxsKAogICAgICAgICAg
ICAgcG9pbnRlclR5cGUoKSwKICAgICAgICAgICAgIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25O
ZXdSZWdleHApLCBtX2NhbGxGcmFtZSwKLSAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHJl
Z2V4cCkpOworICAgICAgICAgICAgZnJvemVuUG9pbnRlcihyZWdleHApKTsKICAgICAgICAgCiAg
ICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICB9CkBAIC05MTQwLDEwICs5MTQzLDEyIEBA
IHByaXZhdGU6CiAgICAgICAgIENhbGxTaXRlSW5kZXggY2FsbFNpdGVJbmRleCA9IG1fZnRsU3Rh
dGUuaml0Q29kZS0+Y29tbW9uLmFkZENvZGVPcmlnaW4obV9ub2RlLT5vcmlnaW4uc2VtYW50aWMp
OwogICAgICAgICAKICAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9jYWxsRnJhbWUsIHBhY2tldCwg
bV9oZWFwcy5TaGFkb3dDaGlja2VuX1BhY2tldF9mcmFtZSk7Ci0gICAgICAgIG1fb3V0LnN0b3Jl
UHRyKG1fb3V0LmNvbnN0SW50UHRyKFNoYWRvd0NoaWNrZW46OlBhY2tldDo6dGFpbE1hcmtlcigp
KSwgcGFja2V0LCBtX2hlYXBzLlNoYWRvd0NoaWNrZW5fUGFja2V0X2NhbGxlZSk7CisgICAgICAg
IG1fb3V0LnN0b3JlUHRyKG1fb3V0LmNvbnN0SW50UHRyKGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4o
U2hhZG93Q2hpY2tlbjo6UGFja2V0Ojp0YWlsTWFya2VyKCkpKSwgcGFja2V0LCBtX2hlYXBzLlNo
YWRvd0NoaWNrZW5fUGFja2V0X2NhbGxlZSk7CiAgICAgICAgIG1fb3V0LnN0b3JlNjQodGhpc1Zh
bHVlLCBwYWNrZXQsIG1faGVhcHMuU2hhZG93Q2hpY2tlbl9QYWNrZXRfdGhpc1ZhbHVlKTsKICAg
ICAgICAgbV9vdXQuc3RvcmVQdHIoc2NvcGUsIHBhY2tldCwgbV9oZWFwcy5TaGFkb3dDaGlja2Vu
X1BhY2tldF9zY29wZSk7Ci0gICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0LmNvbnN0SW50UHRy
KGNvZGVCbG9jaygpKSwgcGFja2V0LCBtX2hlYXBzLlNoYWRvd0NoaWNrZW5fUGFja2V0X2NvZGVC
bG9jayk7CisgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdGhlIENvZGVCbG9jayB0byBoYXZlIGEg
d2VhayBwb2ludGVyIHRvIGl0c2VsZiBiZWNhdXNlCisgICAgICAgIC8vIHRoYXQgd291bGQgY2F1
c2UgaXQgdG8gYWx3YXlzIGdldCBjb2xsZWN0ZWQuCisgICAgICAgIG1fb3V0LnN0b3JlUHRyKG1f
b3V0LmNvbnN0SW50UHRyKGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oY29kZUJsb2NrKCkpKSwgcGFj
a2V0LCBtX2hlYXBzLlNoYWRvd0NoaWNrZW5fUGFja2V0X2NvZGVCbG9jayk7CiAgICAgICAgIG1f
b3V0LnN0b3JlMzIobV9vdXQuY29uc3RJbnQzMihjYWxsU2l0ZUluZGV4LmJpdHMoKSksIHBhY2tl
dCwgbV9oZWFwcy5TaGFkb3dDaGlja2VuX1BhY2tldF9jYWxsU2l0ZUluZGV4KTsKICAgICB9CiAK
QEAgLTkyMzQsNyArOTIzOSw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rvcj4KICAgICB2b2lkIGNoZWNrU3RydWN0dXJlKAogICAgICAgICBMVmFsdWUgc3RydWN0dXJl
RGlzY3JpbWluYW50LCBjb25zdCBGb3JtYXR0ZWRWYWx1ZSYgZm9ybWF0dGVkVmFsdWUsIEV4aXRL
aW5kIGV4aXRLaW5kLAotICAgICAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCwgY29uc3QgRnVu
Y3RvciYgd2Vha1N0cnVjdHVyZURpc2NyaW1pbmFudCkKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVj
dHVyZVNldCBzZXQsIGNvbnN0IEZ1bmN0b3ImIHdlYWtTdHJ1Y3R1cmVEaXNjcmltaW5hbnQpCiAg
ICAgewogICAgICAgICBpZiAoc2V0LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgdGVybWluYXRl
KGV4aXRLaW5kKTsKQEAgLTkzNjksMTYgKzkzNzQsMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IHNwZWN1bGF0ZShCYWRUeXBlLCBqc1ZhbHVlVmFsdWUodmFsdWUpLCBlZGdlLm5vZGUoKSwgaXNO
b3RTeW1ib2wodmFsdWUsIHByb3ZlblR5cGUoZWRnZSkpKTsKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBjYXNlIEluZmVycmVkVHlwZTo6T2JqZWN0V2l0aFN0cnVjdHVyZToKKyAgICAg
ICAgY2FzZSBJbmZlcnJlZFR5cGU6Ok9iamVjdFdpdGhTdHJ1Y3R1cmU6IHsKKyAgICAgICAgICAg
IFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVy
ZSh0eXBlLnN0cnVjdHVyZSgpKTsKICAgICAgICAgICAgIHNwZWN1bGF0ZShCYWRUeXBlLCBqc1Zh
bHVlVmFsdWUodmFsdWUpLCBlZGdlLm5vZGUoKSwgaXNOb3RDZWxsKHZhbHVlLCBwcm92ZW5UeXBl
KGVkZ2UpKSk7Ci0gICAgICAgICAgICBpZiAoIWFic3RyYWN0VmFsdWUoZWRnZSkubV9zdHJ1Y3R1
cmUuaXNTdWJzZXRPZihTdHJ1Y3R1cmVTZXQodHlwZS5zdHJ1Y3R1cmUoKSkpKSB7CisgICAgICAg
ICAgICBpZiAoIWFic3RyYWN0VmFsdWUoZWRnZSkubV9zdHJ1Y3R1cmUuaXNTdWJzZXRPZihSZWdp
c3RlcmVkU3RydWN0dXJlU2V0KHN0cnVjdHVyZSkpKSB7CiAgICAgICAgICAgICAgICAgc3BlY3Vs
YXRlKAogICAgICAgICAgICAgICAgICAgICBCYWRUeXBlLCBqc1ZhbHVlVmFsdWUodmFsdWUpLCBl
ZGdlLm5vZGUoKSwKICAgICAgICAgICAgICAgICAgICAgbV9vdXQubm90RXF1YWwoCiAgICAgICAg
ICAgICAgICAgICAgICAgICBtX291dC5sb2FkMzIodmFsdWUsIG1faGVhcHMuSlNDZWxsX3N0cnVj
dHVyZUlEKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHdlYWtTdHJ1Y3R1cmVJRCh0eXBlLnN0
cnVjdHVyZSgpKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgd2Vha1N0cnVjdHVyZUlEKHN0
cnVjdHVyZSkpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQogCiAgICAgICAgIGNhc2UgSW5mZXJyZWRUeXBlOjpPYmplY3RXaXRoU3RydWN0dXJlT3JPdGhl
cjogewogICAgICAgICAgICAgTEJhc2ljQmxvY2sgY2VsbENhc2UgPSBtX291dC5uZXdCbG9jaygp
OwpAQCAtOTM4OSwxMiArOTM5NiwxMyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICBMQmFzaWNC
bG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGNlbGxDYXNlLCBub3RDZWxsQ2FzZSk7CiAK
LSAgICAgICAgICAgIGlmICghYWJzdHJhY3RWYWx1ZShlZGdlKS5tX3N0cnVjdHVyZS5pc1N1YnNl
dE9mKFN0cnVjdHVyZVNldCh0eXBlLnN0cnVjdHVyZSgpKSkpIHsKKyAgICAgICAgICAgIFJlZ2lz
dGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh0eXBl
LnN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIGlmICghYWJzdHJhY3RWYWx1ZShlZGdlKS5tX3N0
cnVjdHVyZS5pc1N1YnNldE9mKFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSkpIHsK
ICAgICAgICAgICAgICAgICBzcGVjdWxhdGUoCiAgICAgICAgICAgICAgICAgICAgIEJhZFR5cGUs
IGpzVmFsdWVWYWx1ZSh2YWx1ZSksIGVkZ2Uubm9kZSgpLAogICAgICAgICAgICAgICAgICAgICBt
X291dC5ub3RFcXVhbCgKICAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQzMih2YWx1
ZSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpLAotICAgICAgICAgICAgICAgICAgICAgICAg
d2Vha1N0cnVjdHVyZUlEKHR5cGUuc3RydWN0dXJlKCkpKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICB3ZWFrU3RydWN0dXJlSUQoc3RydWN0dXJlKSkpOwogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CkBAIC0xMDQ5Myw5ICsxMDUwMSw5IEBA
IHByaXZhdGU6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgTFZhbHVlIGFs
bG9jYXRlT2JqZWN0KExWYWx1ZSBhbGxvY2F0b3IsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBMVmFs
dWUgYnV0dGVyZmx5LCBMQmFzaWNCbG9jayBzbG93UGF0aCkKKyAgICBMVmFsdWUgYWxsb2NhdGVP
YmplY3QoTFZhbHVlIGFsbG9jYXRvciwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIExW
YWx1ZSBidXR0ZXJmbHksIExCYXNpY0Jsb2NrIHNsb3dQYXRoKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFsbG9jYXRlT2JqZWN0KGFsbG9jYXRvciwgbV9vdXQuY29uc3RJbnRQdHIoc3RydWN0dXJl
KSwgYnV0dGVyZmx5LCBzbG93UGF0aCk7CisgICAgICAgIHJldHVybiBhbGxvY2F0ZU9iamVjdChh
bGxvY2F0b3IsIHdlYWtTdHJ1Y3R1cmUoc3RydWN0dXJlKSwgYnV0dGVyZmx5LCBzbG93UGF0aCk7
CiAgICAgfQogCiAgICAgTFZhbHVlIGFsbG9jYXRlT2JqZWN0KExWYWx1ZSBhbGxvY2F0b3IsIExW
YWx1ZSBzdHJ1Y3R1cmUsIExWYWx1ZSBidXR0ZXJmbHksIExCYXNpY0Jsb2NrIHNsb3dQYXRoKQpA
QCAtMTA1ODksNyArMTA1OTcsNyBAQCBwcml2YXRlOgogICAgIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENsYXNzVHlwZT4KICAgICBMVmFsdWUgYWxsb2NhdGVWYXJpYWJsZVNpemVkT2JqZWN0KAot
ICAgICAgICBMVmFsdWUgc2l6ZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIExWYWx1ZSBidXR0ZXJm
bHksIExCYXNpY0Jsb2NrIHNsb3dQYXRoKQorICAgICAgICBMVmFsdWUgc2l6ZSwgUmVnaXN0ZXJl
ZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIExWYWx1ZSBidXR0ZXJmbHksIExCYXNpY0Jsb2NrIHNsb3dQ
YXRoKQogICAgIHsKICAgICAgICAgTFZhbHVlIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvclNpemUo
CiAgICAgICAgICAgICAqc3Vic3BhY2VGb3I8Q2xhc3NUeXBlPih2bSgpKSwgc2l6ZSwgc2xvd1Bh
dGgpOwpAQCAtMTA2MDUsOSArMTA2MTMsOSBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gYWxs
b2NhdGVDZWxsKGFsbG9jYXRvciwgc3RydWN0dXJlLCBzbG93UGF0aCk7CiAgICAgfQogICAgIAot
ICAgIExWYWx1ZSBhbGxvY2F0ZU9iamVjdChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICBMVmFs
dWUgYWxsb2NhdGVPYmplY3QoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpCiAgICAgewot
ICAgICAgICBzaXplX3QgYWxsb2NhdGlvblNpemUgPSBKU0ZpbmFsT2JqZWN0OjphbGxvY2F0aW9u
U2l6ZShzdHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkpOworICAgICAgICBzaXplX3QgYWxsb2Nh
dGlvblNpemUgPSBKU0ZpbmFsT2JqZWN0OjphbGxvY2F0aW9uU2l6ZShzdHJ1Y3R1cmUuZ2V0KCkt
PmlubGluZUNhcGFjaXR5KCkpOwogICAgICAgICBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciA9
IHN1YnNwYWNlRm9yPEpTRmluYWxPYmplY3Q+KHZtKCkpLT5hbGxvY2F0b3JGb3IoYWxsb2NhdGlv
blNpemUpOwogICAgICAgICAKICAgICAgICAgLy8gRklYTUU6IElmIHRoZSBhbGxvY2F0b3IgaXMg
bnVsbCwgd2UgY291bGQgc2ltcGx5IGVtaXQgYSBub3JtYWwgQyBjYWxsIHRvIHRoZSBhbGxvY2F0
b3IKQEAgLTEwNjMwLDcgKzEwNjM4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFs9XSAoY29u
c3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpH
ZW5lcmF0b3I+IHsKICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0
b3IoCiAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld09iamVjdCwgbG9jYXRpb25zWzBd
LmRpcmVjdEdQUigpLAotICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW1QdHIoc3RydWN0dXJlKSk7CisgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1
c3RlZEltbVB0cihzdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICBW
YWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHNsb3dSZXN1bHRWYWx1ZSk7
CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKQEAgLTEwNzMzLDggKzEwNzQxLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGxhcmdlQ2FzZSwg
ZmFpbENhc2UpOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBsYXJnZVN0cnVjdHVyZSA9IG1fb3V0
LmFuY2hvcigKLSAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKAotICAgICAgICAgICAgICAg
IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0
aW9uKEFycmF5V2l0aEFycmF5U3RvcmFnZSkpKTsKKyAgICAgICAgICAgIHdlYWtTdHJ1Y3R1cmUo
bV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9y
SW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2UpKSkpOwog
ICAgICAgICBtX291dC5qdW1wKHNsb3dDYXNlKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFw
cGVuZFRvKGZhaWxDYXNlLCBzbG93Q2FzZSk7CkBAIC0xMDc2MywxMiArMTA3NzAsMTIgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIG1fb3V0LnBoaShwb2ludGVyVHlwZSgpLCBmYXN0QnV0dGVyZmx5
LCBzbG93QnV0dGVyZmx5KSk7CiAgICAgfQogICAgIAotICAgIEFycmF5VmFsdWVzIGFsbG9jYXRl
VW5pbml0aWFsaXplZENvbnRpZ3VvdXNKU0FycmF5KExWYWx1ZSBwdWJsaWNMZW5ndGgsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQorICAgIEFycmF5VmFsdWVzIGFsbG9jYXRlVW5pbml0aWFsaXplZENv
bnRpZ3VvdXNKU0FycmF5KExWYWx1ZSBwdWJsaWNMZW5ndGgsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
c3RydWN0dXJlKQogICAgIHsKICAgICAgICAgYm9vbCBzaG91bGRJbml0aWFsaXplRWxlbWVudHMg
PSBmYWxzZTsKICAgICAgICAgYm9vbCBzaG91bGRMYXJnZUFycmF5U2l6ZUNyZWF0ZUFycmF5U3Rv
cmFnZSA9IGZhbHNlOwogICAgICAgICByZXR1cm4gYWxsb2NhdGVKU0FycmF5KAotICAgICAgICAg
ICAgcHVibGljTGVuZ3RoLCBtX291dC5jb25zdEludFB0cihzdHJ1Y3R1cmUpLCBtX291dC5jb25z
dEludDMyKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpLCBzaG91bGRJbml0aWFsaXplRWxlbWVu
dHMsCisgICAgICAgICAgICBwdWJsaWNMZW5ndGgsIHdlYWtTdHJ1Y3R1cmUoc3RydWN0dXJlKSwg
bV9vdXQuY29uc3RJbnQzMihzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSwgc2hvdWxkSW5pdGlh
bGl6ZUVsZW1lbnRzLAogICAgICAgICAgICAgc2hvdWxkTGFyZ2VBcnJheVNpemVDcmVhdGVBcnJh
eVN0b3JhZ2UpOwogICAgIH0KICAgICAKQEAgLTEwOTEwLDcgKzEwOTE3LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhtYXNxdWVyYWRlc0Nhc2UpOwogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlzVHJ1dGh5T2JqZWN0ID0gbV9vdXQubm90RXF1
YWwoCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKSksCisgICAgICAgICAgICAgICAgICAg
IHdlYWtQb2ludGVyKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFu
dGljKSksCiAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmxvYWRQdHIobG9hZFN0cnVjdHVyZSh2
YWx1ZSksIG1faGVhcHMuU3RydWN0dXJlX2dsb2JhbE9iamVjdCkpOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKGlzVHJ1dGh5T2JqZWN0KSk7
CkBAIC0xMTAwOSw3ICsxMTAxNiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIHJlc3VsdHMuYXBwZW5kKG1fb3V0LmFuY2hvcigKICAgICAgICAgICAgICAgICBtX291dC5l
cXVhbCgKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIobV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwKKyAgICAgICAgICAgICAgICAg
ICAgd2Vha1BvaW50ZXIobV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwKICAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZFB0cihzdHJ1Y3R1cmUsIG1f
aGVhcHMuU3RydWN0dXJlX2dsb2JhbE9iamVjdCkpKSk7CiAgICAgICAgICAgICBtX291dC5qdW1w
KGNvbnRpbnVhdGlvbik7CiAgICAgICAgIH0KQEAgLTExOTMxLDEyICsxMTkzOCwxMiBAQCBwcml2
YXRlOgogICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbW9kZSA9PSBNYW51YWxP
cGVyYW5kU3BlY3VsYXRpb24gfHwgREZHOjppc0NlbGwoZWRnZS51c2VLaW5kKCkpKTsKICAgICAg
ICAgCiAgICAgICAgIGlmIChlZGdlLT5vcCgpID09IEpTQ29uc3RhbnQpIHsKLSAgICAgICAgICAg
IEpTVmFsdWUgdmFsdWUgPSBlZGdlLT5hc0pTVmFsdWUoKTsKLSAgICAgICAgICAgIGlmICghdmFs
dWUuaXNDZWxsKCkpIHsKKyAgICAgICAgICAgIEZyb3plblZhbHVlKiB2YWx1ZSA9IGVkZ2UtPmNv
bnN0YW50KCk7CisgICAgICAgICAgICBpZiAoIXZhbHVlLT52YWx1ZSgpLmlzQ2VsbCgpKSB7CiAg
ICAgICAgICAgICAgICAgdGVybWluYXRlKFVuY291bnRhYmxlKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gbV9vdXQuaW50UHRyWmVybzsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVy
biBtX291dC5jb25zdEludFB0cih2YWx1ZS5hc0NlbGwoKSk7CisgICAgICAgICAgICByZXR1cm4g
ZnJvemVuUG9pbnRlcih2YWx1ZSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIExvd2Vy
ZWROb2RlVmFsdWUgdmFsdWUgPSBtX2pzVmFsdWVWYWx1ZXMuZ2V0KGVkZ2Uubm9kZSgpKTsKQEAg
LTEyOTAxLDEwICsxMjkwOCwxMCBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgc3BlY3VsYXRl
U3RyaW5nT2JqZWN0Rm9yU3RydWN0dXJlSUQoRWRnZSBlZGdlLCBMVmFsdWUgc3RydWN0dXJlSUQp
CiAgICAgewotICAgICAgICBTdHJ1Y3R1cmUqIHN0cmluZ09iamVjdFN0cnVjdHVyZSA9Ci0gICAg
ICAgICAgICBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykt
PnN0cmluZ09iamVjdFN0cnVjdHVyZSgpOwotICAgICAgICAKLSAgICAgICAgaWYgKGFic3RyYWN0
U3RydWN0dXJlKGVkZ2UpLmlzU3Vic2V0T2YoU3RydWN0dXJlU2V0KHN0cmluZ09iamVjdFN0cnVj
dHVyZSkpKQorICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cmluZ09iamVjdFN0cnVjdHVy
ZSA9CisgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+c3RyaW5nT2JqZWN0U3RydWN0dXJl
KCkpOworCisgICAgICAgIGlmIChhYnN0cmFjdFN0cnVjdHVyZShlZGdlKS5pc1N1YnNldE9mKFJl
Z2lzdGVyZWRTdHJ1Y3R1cmVTZXQoc3RyaW5nT2JqZWN0U3RydWN0dXJlKSkpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIAogICAgICAgICBzcGVjdWxhdGUoCkBAIC0xMzY4OSwxOSArMTM2
OTYsMzAgQEAgcHJpdmF0ZToKIAogICAgIExWYWx1ZSB3ZWFrUG9pbnRlcihKU0NlbGwqIHBvaW50
ZXIpCiAgICAgeworICAgICAgICAvLyBUaGVyZSBhcmUgd2VpcmQgcmVsYXRpb25zaGlwcyBpbiBo
b3cgb3B0aW1pemVkIENvZGVCbG9ja3MKKyAgICAgICAgLy8gcG9pbnQgdG8gb3RoZXIgQ29kZUJs
b2Nrcy4gV2UgZG9uJ3Qgd2FudCB0byBoYXZlIHRoZW0gYmUKKyAgICAgICAgLy8gcGFydCBvZiB0
aGUgd2VhayBwb2ludGVyIHNldC4gRm9yIGV4YW1wbGUsIGFuIG9wdGltaXplZCBDb2RlQmxvY2sK
KyAgICAgICAgLy8gaGF2aW5nIGEgd2VhayBwb2ludGVyIHRvIGl0c2VsZiB3aWxsIGNhdXNlIGl0
IHRvIGdldCBjb2xsZWN0ZWQuCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFqc0R5bmFtaWNDYXN0
PENvZGVCbG9jayo+KHBvaW50ZXIpKTsKKwogICAgICAgICBhZGRXZWFrUmVmZXJlbmNlKHBvaW50
ZXIpOwotICAgICAgICByZXR1cm4gbV9vdXQuY29uc3RJbnRQdHIocG9pbnRlcik7CisgICAgICAg
IHJldHVybiBtX291dC53ZWFrUG9pbnRlcihtX2dyYXBoLCBwb2ludGVyKTsKKyAgICB9CisKKyAg
ICBMVmFsdWUgZnJvemVuUG9pbnRlcihGcm96ZW5WYWx1ZSogdmFsdWUpCisgICAgeworICAgICAg
ICByZXR1cm4gbV9vdXQud2Vha1BvaW50ZXIodmFsdWUpOwogICAgIH0KIAotICAgIExWYWx1ZSB3
ZWFrU3RydWN0dXJlSUQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgTFZhbHVlIHdlYWtTdHJ1
Y3R1cmVJRChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIGFk
ZFdlYWtSZWZlcmVuY2Uoc3RydWN0dXJlKTsKICAgICAgICAgcmV0dXJuIG1fb3V0LmNvbnN0SW50
MzIoc3RydWN0dXJlLT5pZCgpKTsKICAgICB9CiAgICAgCi0gICAgTFZhbHVlIHdlYWtTdHJ1Y3R1
cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgTFZhbHVlIHdlYWtTdHJ1Y3R1cmUoUmVnaXN0
ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICByZXR1cm4gd2Vha1BvaW50
ZXIoc3RydWN0dXJlKTsKKyAgICAgICAgQVNTRVJUKCEhc3RydWN0dXJlLmdldCgpKTsKKyAgICAg
ICAgcmV0dXJuIG1fb3V0LndlYWtQb2ludGVyKG1fZ3JhcGgsIHN0cnVjdHVyZS5nZXQoKSk7CiAg
ICAgfQogICAgIAogICAgIFR5cGVkUG9pbnRlciBhZGRyZXNzRm9yKExWYWx1ZSBiYXNlLCBpbnQg
b3BlcmFuZCwgcHRyZGlmZl90IG9mZnNldCA9IDApCkBAIC0xMzgwOSw3ICsxMzgyNyw5IEBAIHBy
aXZhdGU6CiAgICAgICAgIG1fb3V0LmNhbGwoCiAgICAgICAgICAgICBWb2lkLAogICAgICAgICAg
ICAgbV9vdXQuY29uc3RJbnRQdHIoZnRsVW5yZWFjaGFibGUpLAotICAgICAgICAgICAgbV9vdXQu
Y29uc3RJbnRQdHIoY29kZUJsb2NrKCkpLCBtX291dC5jb25zdEludDMyKGJsb2NrSW5kZXgpLAor
ICAgICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0aGUgQ29kZUJsb2NrIHRvIGhhdmUgYSB3ZWFr
IHBvaW50ZXIgdG8gaXRzZWxmIGJlY2F1c2UKKyAgICAgICAgICAgIC8vIHRoYXQgd291bGQgY2F1
c2UgaXQgdG8gYWx3YXlzIGdldCBjb2xsZWN0ZWQuCisgICAgICAgICAgICBtX291dC5jb25zdElu
dFB0cihiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KGNvZGVCbG9jaygpKSksIG1fb3V0LmNvbnN0SW50
MzIoYmxvY2tJbmRleCksCiAgICAgICAgICAgICBtX291dC5jb25zdEludDMyKG5vZGVJbmRleCkp
OwogI2VuZGlmCiAgICAgICAgIG1fb3V0LnVucmVhY2hhYmxlKCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcg
QEAKICNpbmNsdWRlICJGVExWYWx1ZUZyb21CbG9jay5oIgogI2luY2x1ZGUgIkZUTFdlaWdodC5o
IgogI2luY2x1ZGUgIkZUTFdlaWdodGVkVGFyZ2V0LmgiCisjaW5jbHVkZSAiSGVhcENlbGwuaCIK
ICNpbmNsdWRlIDx3dGYvT3JkZXJNYWtlci5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0
cmVhbS5oPgogCkBAIC0xMDQsOSArMTA1LDI5IEBAIHB1YmxpYzoKIAogICAgIExWYWx1ZSBjb25z
dEJvb2woYm9vbCB2YWx1ZSk7CiAgICAgTFZhbHVlIGNvbnN0SW50MzIoaW50MzJfdCB2YWx1ZSk7
CisKKyAgICBMVmFsdWUgd2Vha1BvaW50ZXIoREZHOjpHcmFwaCYgZ3JhcGgsIEpTQ2VsbCogY2Vs
bCkKKyAgICB7CisgICAgICAgIEFTU0VSVChncmFwaC5tX3BsYW4ud2Vha1JlZmVyZW5jZXMuY29u
dGFpbnMoY2VsbCkpOworCisgICAgICAgIGlmIChzaXplb2Yodm9pZCopID09IDgpCisgICAgICAg
ICAgICByZXR1cm4gY29uc3RJbnQ2NChiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KGNlbGwpKTsKKyAg
ICAgICAgcmV0dXJuIGNvbnN0SW50MzIoYml0d2lzZV9jYXN0PGludHB0cl90PihjZWxsKSk7Cisg
ICAgfQorCisgICAgTFZhbHVlIHdlYWtQb2ludGVyKERGRzo6RnJvemVuVmFsdWUqIHZhbHVlKQor
ICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQodmFsdWUtPnZhbHVlKCkuaXNDZWxsKCkpOwor
CisgICAgICAgIGlmIChzaXplb2Yodm9pZCopID09IDgpCisgICAgICAgICAgICByZXR1cm4gY29u
c3RJbnQ2NChiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KHZhbHVlLT5jZWxsKCkpKTsKKyAgICAgICAg
cmV0dXJuIGNvbnN0SW50MzIoYml0d2lzZV9jYXN0PGludHB0cl90Pih2YWx1ZS0+Y2VsbCgpKSk7
CisgICAgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBMVmFsdWUgY29uc3RJbnRQ
dHIoVCogdmFsdWUpCiAgICAgeworICAgICAgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vf
b2Y8SGVhcENlbGwsIFQ+Ojp2YWx1ZSwgIlRvIHVzZSBhIEdDIHBvaW50ZXIsIHRoZSBncmFwaCBt
dXN0IGJlIGF3YXJlIG9mIGl0LiBVc2UgZ2NQb2ludGVyIGluc3RlYWQgYW5kIG1ha2Ugc3VyZSB0
aGUgZ3JhcGggaXMgYXdhcmUgb2YgdGhpcyByZWZlcmVuY2UuIik7CiAgICAgICAgIGlmIChzaXpl
b2Yodm9pZCopID09IDgpCiAgICAgICAgICAgICByZXR1cm4gY29uc3RJbnQ2NChiaXR3aXNlX2Nh
c3Q8aW50cHRyX3Q+KHZhbHVlKSk7CiAgICAgICAgIHJldHVybiBjb25zdEludDMyKGJpdHdpc2Vf
Y2FzdDxpbnRwdHJfdD4odmFsdWUpKTsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE3LTAx
LTI2ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIEhhcmRlbiBo
b3cgdGhlIGNvbXBpbGVyIHJlZmVyZW5jZXMgR0Mgb2JqZWN0cworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3Mjc3CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zMDE3OTUwNj4KKworICAgICAgICBSZXZpZXdlZCBieSBGaWxpcCBQaXpsby4KKworICAg
ICAgICBJIG1hZGUgVGlueVB0clNldCB1c2UgYml0d2lzZV9jYXN0IGluc3RlYWQgb2Ygc3RhdGlj
X2Nhc3QKKyAgICAgICAgZm9yIGl0cyBzaW5nbGVFbnRyeSgpIGZ1bmN0aW9uIHNvIHRoYXQgaXQg
Y2FuIHdvcmsgb24gcG9pbnRlci1saWtlCisgICAgICAgIHR5cGVzIGp1c3QgYXMgaXQgY2FuIG9u
IGFjdHVhbCBwb2ludGVyIHR5cGVzLgorICAgICAgICAKKyAgICAgICAgQW4gZXhhbXBsZSBvZiB3
aGVyZSB0aGlzIG1hdHRlcnMgaXMgd2hlbiB5b3UgaGF2ZSBUaW55UHRyU2V0PFQ+CisgICAgICAg
IHdoZXJlIFQgaXMgZGVmaW5lZCB0byBiZSBhIHN0cnVjdCB3aGljaCB3cmFwcyBhIHBvaW50ZXIs
IGUuZzoKKyAgICAgICAgCisgICAgICAgIHN0cnVjdCBUIHsKKyAgICAgICAgICAgIHZvaWQqIG1f
cG9pbnRlcjsKKyAgICAgICAgfQorCisgICAgICAgICogd3RmL1RpbnlQdHJTZXQuaDoKKyAgICAg
ICAgKFdURjo6VGlueVB0clNldDo6c2luZ2xlRW50cnkpOgorCiAyMDE3LTAxLTI1ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEludHJvZHVjZSBhbiBp
dGVtLXByb3ZpZGVyLWJhc2VkIHBhc3RlYm9hcmQgd3JhcHBlcgpJbmRleDogU291cmNlL1dURi93
dGYvVGlueVB0clNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1RpbnlQdHJTZXQu
aAkocmV2aXNpb24gMjExMjI5KQorKysgU291cmNlL1dURi93dGYvVGlueVB0clNldC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBXVEYgewogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgogY2xhc3MgVGlueVB0clNldCB7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2Yo
VCkgPT0gc2l6ZW9mKHZvaWQqKSwgIkl0J3MgaW4gdGhlIHRpdGxlIG9mIHRoZSBjbGFzcy4iKTsK
IHB1YmxpYzoKICAgICBUaW55UHRyU2V0KCkKICAgICAgICAgOiBtX3BvaW50ZXIoMCkKQEAgLTQ3
NSw3ICs0NzYsNyBAQCBwcml2YXRlOgogICAgIFQgc2luZ2xlRW50cnkoKSBjb25zdAogICAgIHsK
ICAgICAgICAgQVNTRVJUKGlzVGhpbigpKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+
KHBvaW50ZXIoKSk7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VD4ocG9pbnRlcigpKTsK
ICAgICB9CiAgICAgCiAgICAgT3V0T2ZMaW5lTGlzdCogbGlzdCgpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>299853</attachid>
            <date>2017-01-26 14:17:11 -0800</date>
            <delta_ts>2017-01-26 14:17:11 -0800</delta_ts>
            <desc>perf numbers</desc>
            <filename>perf-numbers.txt</filename>
            <type>text/plain</type>
            <size>89375</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">QmVuY2htYXJrIHJlcG9ydCBmb3IgU3VuU3BpZGVyLCBMb25nU3BpZGVyLCBWOFNwaWRlciwgT2N0
YW5lLCBLcmFrZW4sIE1pY3JvYmVuY2htYXJrcywgQXNtQmVuY2gsIGFuZCBDb21wcmVzc2lvbkJl
bmNoIG9uIFNhYW1zLU1hY0Jvb2stUHJvIChNYWNCb29rUHJvMTEsMykuCgpWTXMgdGVzdGVkOgoi
b2ciIGF0IC9Wb2x1bWVzL0RhdGEvV0svYS9PcGVuU291cmNlL1dlYktpdEJ1aWxkL1JlbGVhc2Uv
anNjIChyMjExMTkzKQoiY2hhbmdlIiBhdCAvVm9sdW1lcy9EYXRhL1dLL2IvT3BlblNvdXJjZS9X
ZWJLaXRCdWlsZC9SZWxlYXNlL2pzYyAocjIxMTE5MykKCkNvbGxlY3RlZCA4IHNhbXBsZXMgcGVy
IGJlbmNobWFyay9WTSwgd2l0aCA4IFZNIGludm9jYXRpb25zIHBlciBiZW5jaG1hcmsuIEVtaXR0
ZWQgYSBjYWxsIHRvIGdjKCkgYmV0d2VlbiBzYW1wbGUgbWVhc3VyZW1lbnRzLgpVc2VkIDEgYmVu
Y2htYXJrIGl0ZXJhdGlvbiBwZXIgVk0gaW52b2NhdGlvbiBmb3Igd2FybS11cC4gVXNlZCB0aGUg
anNjLXNwZWNpZmljIHByZWNpc2VUaW1lKCkgZnVuY3Rpb24gdG8gZ2V0IG1pY3Jvc2Vjb25kLWxl
dmVsCnRpbWluZy4gUmVwb3J0aW5nIGJlbmNobWFyayBleGVjdXRpb24gdGltZXMgd2l0aCA5NSUg
Y29uZmlkZW5jZSBpbnRlcnZhbHMgaW4gbWlsbGlzZWNvbmRzLgoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2cgICAgICAgICAgICAg
ICAgICAgICAgY2hhbmdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKU3Vu
U3BpZGVyOgogICAzZC1jdWJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA0LjQ1MzQrLTAuNDQxMCAgICAgPyAgICAgIDQuNjA4NSstMC4xOTc2ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDM0OHggc2xvd2VyCiAgIDNkLW1vcnBoICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDQuODYwOSstMC4xNDExICAgICAgICAgICAgNC43ODIzKy0wLjA3
NDcgICAgICAgICAgbWlnaHQgYmUgMS4wMTY0eCBmYXN0ZXIKICAgM2QtcmF5dHJhY2UgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41NzMxKy0wLjEzMjEgICAgICAgICAg
ICA0LjU1OTErLTAuMjE0MyAgICAgICAgCiAgIGFjY2Vzcy1iaW5hcnktdHJlZXMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDIuMTkxNystMC4zMzEyICAgICAgICAgICAgMi4wODY2Ky0w
LjEyNzEgICAgICAgICAgbWlnaHQgYmUgMS4wNTA0eCBmYXN0ZXIKICAgYWNjZXNzLWZhbm5rdWNo
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC43OTcwKy0wLjA4OTEgICAgICAg
ICAgICA0Ljc3NDArLTAuMDkzMCAgICAgICAgCiAgIGFjY2Vzcy1uYm9keSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIuNTE4NCstMC4wOTEzICAgICAgICAgICAgMi41MDQy
Ky0wLjA2MDUgICAgICAgIAogICBhY2Nlc3MtbnNpZXZlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyLjk2NDArLTAuMDkyNSAgICAgICAgICAgIDIuODgwOCstMC4wNDE2ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDI4OXggZmFzdGVyCiAgIGJpdG9wcy0zYml0LWJpdHMtaW4tYnl0
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMjIyOSstMC4xMjg5ICAgICA/ICAgICAgMS4y
NDY4Ky0wLjE5MDEgICAgICAgID8gbWlnaHQgYmUgMS4wMTk1eCBzbG93ZXIKICAgYml0b3BzLWJp
dHMtaW4tYnl0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi44MjY5Ky0wLjEyODQg
ICAgICAgICAgICAyLjc4MTQrLTAuMDg0OCAgICAgICAgICBtaWdodCBiZSAxLjAxNjN4IGZhc3Rl
cgogICBiaXRvcHMtYml0d2lzZS1hbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAy
LjE3NTcrLTAuMjgxOCAgICAgICAgICAgIDIuMDQ0NSstMC4wNjU0ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDY0MnggZmFzdGVyCiAgIGJpdG9wcy1uc2lldmUtYml0cyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDMuMDYwOCstMC4wNTk3ICAgICA/ICAgICAgMy4yMzE1Ky0wLjM1NzMgICAg
ICAgID8gbWlnaHQgYmUgMS4wNTU4eCBzbG93ZXIKICAgY29udHJvbGZsb3ctcmVjdXJzaXZlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMi40NjczKy0wLjI4OTQgICAgICAgICAgICAyLjMw
NjMrLTAuMTY0MCAgICAgICAgICBtaWdodCBiZSAxLjA2OTh4IGZhc3RlcgogICBjcnlwdG8tYWVz
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjMyNjMrLTAuNjgwMSAg
ICAgICAgICAgIDQuMTEyMSstMC40ODI0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDUyMXggZmFzdGVy
CiAgIGNyeXB0by1tZDUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIu
NDQ0MCstMC4wNzYxICAgICAgICAgICAgMi40MjI4Ky0wLjA1MzggICAgICAgIAogICBjcnlwdG8t
c2hhMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjU1MzcrLTAuMTY3
OCAgICAgPyAgICAgIDIuNTY4OSstMC4xMDA0ICAgICAgICA/CiAgIGRhdGUtZm9ybWF0LXRvZnRl
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuMDI2MystMC4xODkzICAgICA/ICAg
ICAgNy4wNDgzKy0wLjQ2NzcgICAgICAgID8KICAgZGF0ZS1mb3JtYXQteHBhcmIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNC43NDA3Ky0wLjExMzcgICAgID8gICAgICA0Ljc0MTEr
LTAuMTIwMiAgICAgICAgPwogICBtYXRoLWNvcmRpYyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyLjczMjErLTAuMDQ3NCAgICAgPyAgICAgIDIuODUzOSstMC4yNjc2ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDQ0Nnggc2xvd2VyCiAgIG1hdGgtcGFydGlhbC1zdW1zICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMTI3NSstMC4zNzAxICAgICAgICAgICAgMy45
OTY2Ky0wLjA5NjEgICAgICAgICAgbWlnaHQgYmUgMS4wMzI4eCBmYXN0ZXIKICAgbWF0aC1zcGVj
dHJhbC1ub3JtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4xNjI2Ky0wLjQwMDAg
ICAgICAgICAgICAyLjAwMjkrLTAuMDg1MSAgICAgICAgICBtaWdodCBiZSAxLjA3OTd4IGZhc3Rl
cgogICByZWdleHAtZG5hICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2
LjE5NTkrLTAuMTU3OCAgICAgPyAgICAgIDYuMjM2NystMC4yMDgwICAgICAgICA/CiAgIHN0cmlu
Zy1iYXNlNjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNjI0NSstMC4x
NzAwICAgICA/ICAgICAgNC43NjYxKy0wLjQxOTIgICAgICAgID8gbWlnaHQgYmUgMS4wMzA2eCBz
bG93ZXIKICAgc3RyaW5nLWZhc3RhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNS41MTkwKy0wLjM4MjUgICAgICAgICAgICA1LjQwNDcrLTAuMTAwNSAgICAgICAgICBtaWdo
dCBiZSAxLjAyMTF4IGZhc3RlcgogICBzdHJpbmctdGFnY2xvdWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA4LjYzMzIrLTAuMzYzNSAgICAgPyAgICAgIDguODU4MistMC42ODE2
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI2MXggc2xvd2VyCiAgIHN0cmluZy11bnBhY2stY29kZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTcuOTY4MSstMC40MzE5ICAgICA/ICAgICAx
OS4wMzkzKy0xLjE0NjMgICAgICAgID8gbWlnaHQgYmUgMS4wNTk2eCBzbG93ZXIKICAgc3RyaW5n
LXZhbGlkYXRlLWlucHV0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC40NzA4Ky0wLjM1
NDYgICAgICAgICAgICA0LjE1MjkrLTAuMDk5NSAgICAgICAgICBtaWdodCBiZSAxLjA3NjV4IGZh
c3RlcgoKICAgPGFyaXRobWV0aWM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNC40NDc2Ky0wLjA1MjUgICAgID8gICAgICA0LjQ2MTkrLTAuMDY5MSAgICAgICAgPyBtaWdo
dCBiZSAxLjAwMzJ4IHNsb3dlcgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb2cgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKTG9uZ1NwaWRlcjoKICAgM2QtY3Vi
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc1MS40MTc5Ky04LjI0
NDkgICAgID8gICAgNzYwLjY1MzgrLTExLjYyOTQgICAgICAgPyBtaWdodCBiZSAxLjAxMjN4IHNs
b3dlcgogICAzZC1tb3JwaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NTc1LjU2NzQrLTUuNDgyNyAgICAgPyAgICA1ODIuMDEzNCstNy41MTUxICAgICAgICA/IG1pZ2h0
IGJlIDEuMDExMnggc2xvd2VyCiAgIDNkLXJheXRyYWNlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA0NTMuNjA4MistMy4xNDczICAgICA/ICAgIDQ2MC40MzYwKy0yMy41NDI3
ICAgICAgID8gbWlnaHQgYmUgMS4wMTUxeCBzbG93ZXIKICAgYWNjZXNzLWJpbmFyeS10cmVlcyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDg1MS4yMTQxKy02LjIzNzIgICAgICAgICAgODQ4
LjY3MjArLTguMDA4NyAgICAgICAgCiAgIGFjY2Vzcy1mYW5ua3VjaCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAyMzIuODI1NistNC44MjgyICAgICA/ICAgIDIzNC4zMTY4Ky02Ljcz
NjQgICAgICAgID8KICAgYWNjZXNzLW5ib2R5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDUzMS45ODE4Ky05LjgxMjQgICAgID8gICAgNTM2LjIwNDkrLTkuNTQ5MyAgICAgICAg
PwogICBhY2Nlc3MtbnNpZXZlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjg3
Ljg0MTIrLTYuMDI0MSAgICAgPyAgICAyOTAuMDk0OCstNS45OTkyICAgICAgICA/CiAgIGJpdG9w
cy0zYml0LWJpdHMtaW4tYnl0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgMzEuODQ2MystMC45
NTE3ICAgICAgICAgICAzMS44Mjg2Ky0wLjU0MDcgICAgICAgIAogICBiaXRvcHMtYml0cy1pbi1i
eXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgzLjYzMjIrLTQuNDk1NyAgICAgPyAg
ICAgODYuNTg5OCstNC44MTM2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDM1NHggc2xvd2VyCiAgIGJp
dG9wcy1uc2lldmUtYml0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNzIuODI5OCst
NC44NjE5ICAgICA/ICAgIDM4Mi4yNTM0Ky0xNi44MTgzICAgICAgID8gbWlnaHQgYmUgMS4wMjUz
eCBzbG93ZXIKICAgY29udHJvbGZsb3ctcmVjdXJzaXZlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDQwNy4wMjQ0Ky01Ljk4ODIgICAgICAgICAgNDAyLjA1MDgrLTQuMzk4MyAgICAgICAgICBt
aWdodCBiZSAxLjAxMjR4IGZhc3RlcgogICBjcnlwdG8tYWVzICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNTU1LjMwNzQrLTIuNTc5OCAgICAgPyAgICA1NjUuMTI3MystMjUu
MjU5MCAgICAgICA/IG1pZ2h0IGJlIDEuMDE3N3ggc2xvd2VyCiAgIGNyeXB0by1tZDUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MjYuOTM2NistNS4wNDQxICAgICA/ICAg
IDUzOS41MjA3Ky0xOS40OTYyICAgICAgID8gbWlnaHQgYmUgMS4wMjM5eCBzbG93ZXIKICAgY3J5
cHRvLXNoYTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYyMC4wODAwKy0z
LjEyMzEgICAgID8gICAgNjMwLjQ4ODIrLTM3Ljc4NzggICAgICAgPyBtaWdodCBiZSAxLjAxNjh4
IHNsb3dlcgogICBkYXRlLWZvcm1hdC10b2Z0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMzQ5LjY2OTcrLTkuNzExMCAgICAgICAgICAzNDYuOTg4MCstMTkuODY1NiAgICAgICAKICAg
ZGF0ZS1mb3JtYXQteHBhcmIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYxNy44NjU1
Ky0xMi44OTcxICAgICAgICAgNjE2Ljg3MDkrLTIxLjY3NDggICAgICAgCiAgIGhhc2gtbWFwICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNDMuMDgyNCstMy42MjAzICAg
ICA/ICAgIDE0My4yNDI5Ky00LjE5MzQgICAgICAgID8KICAgbWF0aC1jb3JkaWMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQxNS40ODIxKy01LjQ2MzggICAgID8gICAgNDE3
Ljk3OTkrLTQuNzU5OCAgICAgICAgPwogICBtYXRoLXBhcnRpYWwtc3VtcyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMjg2LjUwMjErLTMuMTcyMiAgICAgPyAgICAyOTYuNjk4MistMTEu
MjcxNCAgICAgICA/IG1pZ2h0IGJlIDEuMDM1Nnggc2xvd2VyCiAgIG1hdGgtc3BlY3RyYWwtbm9y
bSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MzEuOTM1MistNC4yODY0ICAgICAgICAg
IDUyNy45NzYzKy00LjA3MTAgICAgICAgIAogICBzdHJpbmctYmFzZTY0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMzUzLjkzMzArLTMxLjExNTYgICAgICAgICAzNTIuNTk0Mist
MzIuODc2MSAgICAgICAKICAgc3RyaW5nLWZhc3RhICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDMyNi4wMTM5Ky00LjQwNjYgICAgID8gICAgMzMyLjM5MzErLTYuMTQzNyAgICAg
ICAgPyBtaWdodCBiZSAxLjAxOTZ4IHNsb3dlcgogICBzdHJpbmctdGFnY2xvdWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMTY5LjUzODArLTIuMzk0NiAgICAgPyAgICAxNjkuNzk3
OSstMS41ODU2ICAgICAgICA/CgogICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMzM5LjgyNjYrLTEuNjg1NiAgICAgPyAgICAzNDIuNzI2MistMy4yOTY4
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDA4NXggc2xvd2VyCgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZyAgICAgICAgICAgICAgICAg
ICAgICBjaGFuZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApWOFNwaWRl
cjoKICAgY3J5cHRvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAz
NC45NjAxKy0xLjk5MjkgICAgICAgICAgIDMzLjgwOTYrLTAuNjIzOCAgICAgICAgICBtaWdodCBi
ZSAxLjAzNDB4IGZhc3RlcgogICBkZWx0YWJsdWUgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDUwLjI1MDErLTIuODI4MSAgICAgICAgICAgNDkuNjQ5MystMS4yNzM2ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDEyMXggZmFzdGVyCiAgIGVhcmxleS1ib3llciAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMzUuMjQzNCstMC45ODk4ICAgICAgICAgICAzNS4w
MDU5Ky0wLjM0OTcgICAgICAgIAogICByYXl0cmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDE5LjI1NjErLTAuNjAxOSAgICAgPyAgICAgMTkuMjk3NSstMC41NjI1
ICAgICAgICA/CiAgIHJlZ2V4cCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNTEuOTQ4MistMS4zMzA0ICAgICA/ICAgICA1MS45ODIxKy0xLjI5MjEgICAgICAgID8K
ICAgcmljaGFyZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzOS40
ODIyKy0xLjAwMDkgICAgICAgICAgIDM5LjE5NjUrLTEuNDQyNiAgICAgICAgCiAgIHNwbGF5ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjkuMDczNSstMC43NTUx
ICAgICAgICAgICAyOC4zNzAxKy0wLjQwMTQgICAgICAgICAgbWlnaHQgYmUgMS4wMjQ4eCBmYXN0
ZXIKCiAgIDxnZW9tZXRyaWM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MzUuNDc0NystMC4zOTE2ICAgICAgICAgICAzNS4wODI3Ky0wLjM0NjMgICAgICAgICAgbWlnaHQg
YmUgMS4wMTEyeCBmYXN0ZXIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9nICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCk9jdGFuZToKICAgZW5jcnlwdCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjE1MjE1Ky0wLjAwMDkxICAg
ID8gICAgIDAuMTUyNzQrLTAuMDAxMjMgICAgICAgPwogICBkZWNyeXB0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNjgxMTYrLTAuMDM0MDggICAgPyAgICAgMi42
OTMyMSstMC4wMjY4NyAgICAgICA/CiAgIGRlbHRhYmx1ZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeDIgICAgICAgMC4xMjcwNSstMC4wMDEwMCAgICA/ICAgICAwLjEyNzIwKy0wLjAw
MTgwICAgICAgID8KICAgZWFybGV5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLjI1NjE3Ky0wLjAwMTI0ICAgID8gICAgIDAuMjU4MjQrLTAuMDAyOTIgICAgICAg
PwogICBib3llciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQu
NDIyNjQrLTAuMDY3MzUgICAgPyAgICAgNC41NzMxOSstMC4xNjYyOCAgICAgICA/IG1pZ2h0IGJl
IDEuMDM0MHggc2xvd2VyCiAgIG5hdmllci1zdG9rZXMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeDIgICAgICAgNC43NjM1NCstMC4xMDI3NSAgICAgICAgICA0Ljc0NTc5Ky0wLjAzNzg4ICAg
ICAgIAogICByYXl0cmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICAg
IDAuNzE2MDUrLTAuMDA1OTEgICAgPyAgICAgMC43MjEzOCstMC4wMDQ3OCAgICAgICA/CiAgIHJp
Y2hhcmRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgICAgMC4wNzk2Nyst
MC4wMDA3NiAgICA/ICAgICAwLjA4MDAwKy0wLjAwMTI3ICAgICAgID8KICAgc3BsYXkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgICAwLjI5NDQ0Ky0wLjAwMzEwICAg
ID8gICAgIDAuMjk0OTgrLTAuMDAzMjAgICAgICAgPwogICByZWdleHAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHgyICAgICAgMTYuNTg3MTQrLTAuMjUzNjIgICAgPyAgICAxNi42
NTE4MCstMC4zMDY4OSAgICAgICA/CiAgIHBkZmpzICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeDIgICAgICAzOC43NzA3MystMC4zODM4MCAgICAgICAgIDM4LjA5NzI3Ky0wLjY4
MzYwICAgICAgICAgbWlnaHQgYmUgMS4wMTc3eCBmYXN0ZXIKICAgbWFuZHJlZWwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB4MiAgICAgIDQwLjQ1NzUyKy0wLjE4MTQ4ICAgID8gICAg
NDAuNjg4NDErLTAuMjY0NTcgICAgICAgPwogICBnYmVtdSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHgyICAgICAgMjkuNDQ4NjUrLTEuNzE3NDAgICAgICAgICAyOC42MDQ4Myst
MC4yNDMyNyAgICAgICAgIG1pZ2h0IGJlIDEuMDI5NXggZmFzdGVyCiAgIGNsb3N1cmUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC40ODM0MystMC4wMjA5MiAgICAg
ICAgICAwLjQ3NDkyKy0wLjAwMjg3ICAgICAgICAgbWlnaHQgYmUgMS4wMTc5eCBmYXN0ZXIKICAg
anF1ZXJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjQxNjY0
Ky0wLjA1MTE1ICAgICAgICAgIDYuNDA1MTUrLTAuMDI5NzQgICAgICAgCiAgIGJveDJkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIgICAgICAgOC45MDk5MistMC4wODA0OSAg
ICA/ICAgICA4Ljk1MjAyKy0wLjA1NjkwICAgICAgID8KICAgemxpYiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB4MiAgICAgMzQ3LjQwMzYzKy0xOC4zMTY1NCAgICAgICAzMzgu
Njk5MzUrLTkuNjE5MjkgICAgICAgICBtaWdodCBiZSAxLjAyNTd4IGZhc3RlcgogICB0eXBlc2Ny
aXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyICAgICA1ODkuNzU2NjIrLTMuOTI5
NjAgICAgICAgIDU4OC4zNDYxMystNC4yNTg4NCAgICAgICAKCiAgIDxnZW9tZXRyaWM+ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC44MDc2NCstMC4wMjAwMCAgICAgICAg
ICA0Ljc5NzcwKy0wLjAxOTE0ICAgICAgICAgbWlnaHQgYmUgMS4wMDIxeCBmYXN0ZXIKCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9n
ICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCktyYWtlbjoKICAgYWktYXN0YXIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOTMuOTgzKy01LjIxMSAgICAgICAgICAgICA5MS40MDArLTEuNjk4ICAg
ICAgICAgICBtaWdodCBiZSAxLjAyODN4IGZhc3RlcgogICBhdWRpby1iZWF0LWRldGVjdGlvbiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNy41MDgrLTAuMjAyICAgICAgPyAgICAgIDM4
LjM5NystMS44NjMgICAgICAgICA/IG1pZ2h0IGJlIDEuMDIzN3ggc2xvd2VyCiAgIGF1ZGlvLWRm
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDk2LjUyNystMi4yMzcg
ICAgICAgICAgICAgOTYuMDg4Ky0yLjEwMiAgICAgICAgIAogICBhdWRpby1mZnQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNy44NzMrLTAuNTY0ICAgICAgPyAgICAg
IDI4LjMzNSstMS4wNDkgICAgICAgICA/IG1pZ2h0IGJlIDEuMDE2Nnggc2xvd2VyCiAgIGF1ZGlv
LW9zY2lsbGF0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQzLjg2NystMS4x
NTIgICAgICAgICAgICAgNDMuNzAxKy0xLjE1OSAgICAgICAgIAogICBpbWFnaW5nLWRhcmtyb29t
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Ni4xNTgrLTAuMzU1ICAgICAgPyAg
ICAgIDU2LjcwMystMS4wNTQgICAgICAgICA/CiAgIGltYWdpbmctZGVzYXR1cmF0ZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDQ0LjQ3OCstMi43MTYgICAgICAgICAgICAgNDMuMjgx
Ky0yLjUxNCAgICAgICAgICAgbWlnaHQgYmUgMS4wMjc3eCBmYXN0ZXIKICAgaW1hZ2luZy1nYXVz
c2lhbi1ibHVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjIuMzk2Ky0yLjY5NCAgICAg
ICAgICAgICA1OS4zNzArLTQuMDUxICAgICAgICAgICBtaWdodCBiZSAxLjA1MTB4IGZhc3Rlcgog
ICBqc29uLXBhcnNlLWZpbmFuY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMi4x
NzMrLTAuOTE5ICAgICAgPyAgICAgIDMyLjUyOSstMS4yMjYgICAgICAgICA/IG1pZ2h0IGJlIDEu
MDExMXggc2xvd2VyCiAgIGpzb24tc3RyaW5naWZ5LXRpbmRlcmJveCAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDIxLjY3NistMS4wMTUgICAgICA/ICAgICAgMjMuMzEyKy0xLjc1MSAgICAgICAg
ID8gbWlnaHQgYmUgMS4wNzU1eCBzbG93ZXIKICAgc3RhbmZvcmQtY3J5cHRvLWFlcyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMzUuMTkwKy0wLjEzOSAgICAgID8gICAgICAzNi4wNzAr
LTEuMTc1ICAgICAgICAgPyBtaWdodCBiZSAxLjAyNTB4IHNsb3dlcgogICBzdGFuZm9yZC1jcnlw
dG8tY2NtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMS42OTQrLTEuNDQ4ICAgICAg
PyAgICAgIDMzLjI2NistMS4xMzUgICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ5Nnggc2xvd2VyCiAg
IHN0YW5mb3JkLWNyeXB0by1wYmtkZjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDg2Ljg0
MystMi4xNDIgICAgICA/ICAgICAgODcuMjkzKy0yLjA3OSAgICAgICAgID8KICAgc3RhbmZvcmQt
Y3J5cHRvLXNoYTI1Ni1pdGVyYXRpdmUgICAgICAgICAgICAgICAgICAgMjguMTI4Ky0wLjI2NCAg
ICAgID8gICAgICAyOC42NzErLTEuMzM1ICAgICAgICAgPyBtaWdodCBiZSAxLjAxOTN4IHNsb3dl
cgoKICAgPGFyaXRobWV0aWM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NDkuODkyKy0wLjU4OCAgICAgICAgICAgICA0OS44ODcrLTAuMzI2ICAgICAgICAgICBtaWdodCBi
ZSAxLjAwMDF4IGZhc3RlcgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb2cgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKTWljcm9iZW5jaG1hcmtzOgogICBhYmMt
Zm9yd2FyZC1sb29wLWVxdWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyLjg5MTgrLTAu
NTQxMSAgICAgPyAgICAgMjMuNDg4NystMC45MTEwICAgICAgICA/IG1pZ2h0IGJlIDEuMDI2MXgg
c2xvd2VyCiAgIGFiYy1wb3N0Zml4LWJhY2t3YXJkLWxvb3AgICAgICAgICAgICAgICAgICAgICAg
ICAgMjkuODU0NSstMS4yODUwICAgICA/ICAgICAzMC4xNjQ1Ky0xLjQ1NDEgICAgICAgID8gbWln
aHQgYmUgMS4wMTA0eCBzbG93ZXIKICAgYWJjLXNpbXBsZS1iYWNrd2FyZC1sb29wICAgICAgICAg
ICAgICAgICAgICAgICAgICAyNC4wOTk1Ky0xLjMxMTQgICAgICAgICAgIDIyLjc3MTIrLTAuMzU1
NyAgICAgICAgICBtaWdodCBiZSAxLjA1ODN4IGZhc3RlcgogICBhYmMtc2ltcGxlLWZvcndhcmQt
bG9vcCAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LjU0ODUrLTEuMTcyNiAgICAgICAgICAg
MjMuMDIzNSstMS4yMjg5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDY2MnggZmFzdGVyCiAgIGFiYy1z
a2lwcHktbG9vcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAuMDkyMystMC40
Mjc3ICAgICAhICAgICAyMi4zMjg3Ky0xLjMyNDEgICAgICAgICEgZGVmaW5pdGVseSAxLjExMTN4
IHNsb3dlcgogICBhYnMtYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyLjMyMTcrLTAuMzM5MyAgICAgPyAgICAgIDIuMzI0NystMC4yMjQ1ICAgICAgICA/CiAg
IGFkYXB0LXRvLWRvdWJsZS1kaXZpZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQuMDc5
OCstMC4yNTIyICAgICA/ICAgICAxNC4xNjE0Ky0wLjIwOTIgICAgICAgID8KICAgYWxpYXNlZC1h
cmd1bWVudHMtZ2V0Ynl2YWwgICAgICAgICAgICAgICAgICAgICAgICAgMS4xMDgyKy0wLjA5Nzkg
ICAgICAgICAgICAxLjAwNDArLTAuMDcxMyAgICAgICAgICBtaWdodCBiZSAxLjEwMzh4IGZhc3Rl
cgogICBhbGxvY2F0ZS1iaWctb2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAy
LjE2MjMrLTAuMTM5OCAgICAgICAgICAgIDIuMTM4NystMC4wNzc5ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDExMHggZmFzdGVyCiAgIGFwcGx5LW5vdC1hcHBseSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQuNDUxNCstMC4yNTk4ICAgICAgICAgICAgNC4zNTExKy0wLjA3NjcgICAg
ICAgICAgbWlnaHQgYmUgMS4wMjMxeCBmYXN0ZXIKICAgYXJndW1lbnRzLW5hbWVkLWFuZC1yZWZs
ZWN0aXZlICAgICAgICAgICAgICAgICAgICAgNy44MzgzKy0wLjE4NjYgICAgID8gICAgICA3Ljky
NTQrLTAuMzU1NCAgICAgICAgPyBtaWdodCBiZSAxLjAxMTF4IHNsb3dlcgogICBhcmd1bWVudHMt
b3V0LW9mLWJvdW5kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICA5LjY3NzkrLTAuMjUyMyAg
ICAgICAgICAgIDkuNDQzNistMC4wOTc5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI0OHggZmFzdGVy
CiAgIGFyZ3VtZW50cy1zdHJpY3QtbW9kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDAu
MDA1MCstNC41MzA5ICAgICAgICAgICAzNy4wMTMwKy0xLjA0NTkgICAgICAgICAgbWlnaHQgYmUg
MS4wODA4eCBmYXN0ZXIKICAgYXJndW1lbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNi4yMTQyKy0wLjE3NzkgICAgID8gICAgICA2LjMwMTQrLTAuNDA3NSAgICAg
ICAgPyBtaWdodCBiZSAxLjAxNDB4IHNsb3dlcgogICBhcml0eS1taXNtYXRjaC1pbmxpbmluZyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAwLjg5NjArLTAuMDM2NyAgICAgICAgICAgIDAuODkw
NistMC4wMTc2ICAgICAgICAKICAgYXJyYXktYWNjZXNzLXBvbHltb3JwaGljLXN0cnVjdHVyZSAg
ICAgICAgICAgICAgICAgMy40MTMzKy0wLjExMjIgICAgID8gICAgICAzLjUwODArLTAuMTAzMyAg
ICAgICAgPyBtaWdodCBiZSAxLjAyNzd4IHNsb3dlcgogICBhcnJheS1ub25hcnJheS1wb2x5bW9y
aHBpYy1hY2Nlc3MgICAgICAgICAgICAgICAgIDIwLjE4ODIrLTEuMzE4MyAgICAgICAgICAgMTku
NzgzNystMC44NTM1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIwNHggZmFzdGVyCiAgIGFycmF5LXBy
b3RvdHlwZS1ldmVyeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzQuMjc4MCstNi44Njc2
ICAgICAgICAgICA3MS4wODEzKy0xLjQwNDYgICAgICAgICAgbWlnaHQgYmUgMS4wNDUweCBmYXN0
ZXIKICAgYXJyYXktcHJvdG90eXBlLWZvckVhY2ggICAgICAgICAgICAgICAgICAgICAgICAgICA3
MC43MTY4Ky0xLjEwMjkgICAgID8gICAgIDcyLjgwMjcrLTIuODI0NSAgICAgICAgPyBtaWdodCBi
ZSAxLjAyOTV4IHNsb3dlcgogICBhcnJheS1wcm90b3R5cGUtbWFwICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDc0Ljg4NzgrLTE2Ljc4MDYgICAgICAgICAgNjguNTgxNSstMS44MzgzICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDkyMHggZmFzdGVyCiAgIGFycmF5LXByb3RvdHlwZS1yZWR1Y2Ug
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNjkuNjkzOCstMy42MDgxICAgICA/ICAgICA3MC4z
NDEzKy0yLjA0NzYgICAgICAgID8KICAgYXJyYXktcHJvdG90eXBlLXJlZHVjZVJpZ2h0ICAgICAg
ICAgICAgICAgICAgICAgIDEzOS4xMzA0Ky00LjU1NDYgICAgICAgICAgMTM2LjY5NzkrLTQuMjYy
MCAgICAgICAgICBtaWdodCBiZSAxLjAxNzh4IGZhc3RlcgogICBhcnJheS1wcm90b3R5cGUtc29t
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcxLjMyNjgrLTMuMDQ4OSAgICAgPyAgICAg
NzEuNTM4OSstMS40MjcxICAgICAgICA/CiAgIGFycmF5LXNwbGljZS1jb250aWd1b3VzICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMjIuODI4MistMC45NTQ1ICAgICBeICAgICAyMS4zMjg1Ky0w
LjUyMDggICAgICAgIF4gZGVmaW5pdGVseSAxLjA3MDN4IGZhc3RlcgogICBhcnJheS13aXRoLWRv
dWJsZS1hZGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjEwNTcrLTAuNDA1OSAgICAg
ICAgICAgIDIuOTYzMCstMC4wODE5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ4MnggZmFzdGVyCiAg
IGFycmF5LXdpdGgtZG91YmxlLWluY3JlbWVudCAgICAgICAgICAgICAgICAgICAgICAgIDIuODM0
OCstMC4zNDU5ICAgICAgICAgICAgMi43NTUzKy0wLjEyMzggICAgICAgICAgbWlnaHQgYmUgMS4w
Mjg4eCBmYXN0ZXIKICAgYXJyYXktd2l0aC1kb3VibGUtbXVsLWFkZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgMy41MjYyKy0wLjA5NTMgICAgICAgICAgICAzLjQ5NzkrLTAuMTIwNSAgICAgICAg
CiAgIGFycmF5LXdpdGgtZG91YmxlLXN1bSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMu
MDQxNSstMC42MTY4ICAgICAgICAgICAgMi42NDM0Ky0wLjEwMzUgICAgICAgICAgbWlnaHQgYmUg
MS4xNTA2eCBmYXN0ZXIKICAgYXJyYXktd2l0aC1pbnQzMi1hZGQtc3ViICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNC4yNjk3Ky0wLjA3ODYgICAgID8gICAgICA0LjMzMTUrLTAuMTQ4NCAgICAg
ICAgPyBtaWdodCBiZSAxLjAxNDV4IHNsb3dlcgogICBhcnJheS13aXRoLWludDMyLW9yLWRvdWJs
ZS1zdW0gICAgICAgICAgICAgICAgICAgICAyLjg5MDMrLTAuMjg4NCAgICAgICAgICAgIDIuODgx
OSstMC4zMDU2ICAgICAgICAKICAgQXJyYXlCdWZmZXItRGF0YVZpZXctYWxsb2MtbGFyZ2UtbG9u
Zy1saXZlZCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDQ2LjA4MjcrLTAuOTI0MyAgICAgPyAgICAgNDcuMzEyMystMS42MDA2ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDI2N3ggc2xvd2VyCiAgIEFycmF5QnVmZmVyLURhdGFWaWV3LWFsbG9jLWxv
bmctbGl2ZWQgICAgICAgICAgICAgMTYuNzcyOSstMC41ODkwICAgICAgICAgICAxNi42MTA2Ky0w
LjI2NTMgICAgICAgIAogICBBcnJheUJ1ZmZlci1JbnQzMkFycmF5LWJ5dGVPZmZzZXQgICAgICAg
ICAgICAgICAgICAzLjkxMDQrLTAuMzY2OSAgICAgICAgICAgIDMuNjU2NCstMC4xMDg2ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDY5NXggZmFzdGVyCiAgIEFycmF5QnVmZmVyLUludDhBcnJheS1hbGxv
Yy1sYXJnZS1sb25nLWxpdmVkICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNDUuMDU3NistMS40MzAyICAgICA/ICAgICA0Ni4xNDAwKy0yLjAw
NzYgICAgICAgID8gbWlnaHQgYmUgMS4wMjQweCBzbG93ZXIKICAgQXJyYXlCdWZmZXItSW50OEFy
cmF5LWFsbG9jLWxvbmctbGl2ZWQtYnVmZmVyICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjMuMTk2MSstMC4zMjA1ICAgICAgICAgICAyMy4w
ODIzKy0wLjQ3NDMgICAgICAgIAogICBBcnJheUJ1ZmZlci1JbnQ4QXJyYXktYWxsb2MtbG9uZy1s
aXZlZCAgICAgICAgICAgIDE2LjU3MDUrLTAuNzIyNyAgICAgICAgICAgMTYuMDE2OSstMC4zODA3
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM0NnggZmFzdGVyCiAgIEFycmF5QnVmZmVyLUludDhBcnJh
eS1hbGxvYyAgICAgICAgICAgICAgICAgICAgICAgMTQuOTMyMystMC44MjY3ICAgICAgICAgICAx
NC40NDAxKy0wLjQ0MjggICAgICAgICAgbWlnaHQgYmUgMS4wMzQxeCBmYXN0ZXIKICAgYXJyb3dm
dW5jdGlvbi1jYWxsLWluLWNsYXNzLWNvbnN0cnVjdG9yICAgICAgICAgICAyMi45MjY0Ky0wLjM3
MTEgICAgICAgICAgIDIyLjY2MDYrLTAuMDk2NSAgICAgICAgICBtaWdodCBiZSAxLjAxMTd4IGZh
c3RlcgogICBhcnJvd2Z1bmN0aW9uLWNhbGwtaW4tY2xhc3MtbWV0aG9kICAgICAgICAgICAgICAg
IDEwLjAwMDkrLTAuNDY4NSAgICAgICAgICAgIDkuNDQ2MCstMC4yNDM3ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDU4N3ggZmFzdGVyCiAgIGFycm93ZnVuY3Rpb24tY2FsbC1pbi1mdW5jdGlvbiAgICAg
ICAgICAgICAgICAgICAgMTAuMjY0MystMC42MzE3ICAgICAgICAgICAgOS43MTQ4Ky0wLjIzMTMg
ICAgICAgICAgbWlnaHQgYmUgMS4wNTY2eCBmYXN0ZXIKICAgYXJyb3dmdW5jdGlvbi1jYWxsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy41OTI4Ky0wLjA3NzEgICAgID8gICAgICA3
Ljk4NzUrLTAuODk1NyAgICAgICAgPyBtaWdodCBiZSAxLjA1MjB4IHNsb3dlcgogICBhc21qc19i
b29sX2J1ZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3Ljg3NzIrLTAuMTE1
NSAgICAgPyAgICAgIDguMDU3MistMC4zNjc0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIyOXggc2xv
d2VyCiAgIGFzc2lnbi1jdXN0b20tc2V0dGVyLXBvbHltb3JwaGljICAgICAgICAgICAgICAgICAg
IDIuNzM1MSstMC4xMDk4ICAgICAgICAgICAgMi42MTcyKy0wLjA3NDMgICAgICAgICAgbWlnaHQg
YmUgMS4wNDUweCBmYXN0ZXIKICAgYXNzaWduLWN1c3RvbS1zZXR0ZXIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMy45NzQyKy0wLjA1NzYgICAgID8gICAgICA0LjIyNjMrLTAuMzk3MSAg
ICAgICAgPyBtaWdodCBiZSAxLjA2MzR4IHNsb3dlcgogICBiYXNpYy1zZXQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjgyMDUrLTAuNDAxMiAgICAgPyAgICAgIDYu
OTI1MistMC41MzY3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE1M3ggc2xvd2VyCiAgIGJpZy1pbnQt
bXVsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMDgzOSstMC4wNzY5
ICAgICA/ICAgICAgMy4zOTMyKy0wLjQwMzMgICAgICAgID8gbWlnaHQgYmUgMS4xMDAzeCBzbG93
ZXIKICAgYmlnc3dpdGNoLWluZGlyZWN0LXN5bWJvbC1vci11bmRlZmluZWQgICAgICAgICAgICA1
Ny4yMzYxKy0xLjU1NTYgICAgID8gICAgIDYxLjUxNTYrLTQuMzQ5MyAgICAgICAgPyBtaWdodCBi
ZSAxLjA3NDh4IHNsb3dlcgogICBiaWdzd2l0Y2gtaW5kaXJlY3Qtc3ltYm9sICAgICAgICAgICAg
ICAgICAgICAgICAgIDY5LjM2OTgrLTEuOTE5MiAgICAgICAgICAgNjguNDQzNSstMS4xMjQ2ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDEzNXggZmFzdGVyCiAgIGJpZ3N3aXRjaC1pbmRpcmVjdCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMzkuODQzNCstMC41MTIwICAgICA/ICAgICA0MC45
NDQ2Ky0xLjgxNzUgICAgICAgID8gbWlnaHQgYmUgMS4wMjc2eCBzbG93ZXIKICAgYmlnc3dpdGNo
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMS44ODUxKy0wLjYyOTcg
ICAgID8gICAgIDIyLjA4OTUrLTAuNjIxMCAgICAgICAgPwogICBib29sZWFuLXRlc3QgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjk1NDIrLTAuMTQyNCAgICAgPyAgICAg
IDMuMDkwNistMC40Mjk4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ2Mnggc2xvd2VyCiAgIGJvdW5k
LWZ1bmN0aW9uLWNhbGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuNjgzNistMC4z
MDk3ICAgICAgICAgICAgOS40NjI0Ky0wLjE5MzEgICAgICAgICAgbWlnaHQgYmUgMS4wMjM0eCBm
YXN0ZXIKICAgYm91bmQtZnVuY3Rpb24tY29uc3RydWN0aW9uLXBlcmZvcm1hbmNlICAgICAgICAg
ICA3MC42MzkwKy0yLjYyMjAgICAgICAgICAgIDY4LjI4MDkrLTEuMTY3MCAgICAgICAgICBtaWdo
dCBiZSAxLjAzNDV4IGZhc3RlcgogICBicmFuY2gtZm9sZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAzLjgxOTkrLTAuMjkwOSAgICAgICAgICAgIDMuNjg5NistMC4wOTEz
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM1M3ggZmFzdGVyCiAgIGJyYW5jaC1vbi1zdHJpbmctYXMt
Ym9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgMTAuNzE2MystMC45NDQ4ICAgICA/ICAgICAx
MC43MjA0Ky0wLjM4NTkgICAgICAgID8KICAgYnVnLTE1MzQzMSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMy4yNjI2Ky0wLjMxMTkgICAgICAgICAgICAyLjk5MjArLTAu
MDk5NSAgICAgICAgICBtaWdodCBiZSAxLjA5MDR4IGZhc3RlcgogICBidWlsZC1sYXJnZS1vYmpl
Y3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI3LjU1NjkrLTAuMTU3NCAgICAgPyAg
ICAgMjcuODI5NSstMC4xNDQzICAgICAgICA/CiAgIGJ5LXZhbC1nZW5lcmljICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIuMTMxNistMC4yODMyICAgICAgICAgICAgMi4wODI1
Ky0wLjA4NTIgICAgICAgICAgbWlnaHQgYmUgMS4wMjM2eCBmYXN0ZXIKICAgY2FsbC1vci1ub3Qt
Y2FsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyOS45ODgyKy0wLjk4ODYgICAg
ID8gICAgIDMwLjM3ODArLTAuOTI3NiAgICAgICAgPyBtaWdodCBiZSAxLjAxMzB4IHNsb3dlcgog
ICBjYWxsLXNwcmVhZC1hcHBseSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LjU4
NzQrLTAuNTE5MCAgICAgPyAgICAgMjUuNDY1OSstMS43NDA2ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDM1N3ggc2xvd2VyCiAgIGNhbGwtc3ByZWFkLWNhbGwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMjQuMzYyNystMC45MjAxICAgICAgICAgICAyMy45MDc5Ky0xLjQ0MDcgICAgICAg
ICAgbWlnaHQgYmUgMS4wMTkweCBmYXN0ZXIKICAgY2FsbC11c2luZy1zcHJlYWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOC41MDM0Ky0wLjEzOTggICAgID8gICAgICA4LjkzODcr
LTAuNzY1NiAgICAgICAgPyBtaWdodCBiZSAxLjA1MTJ4IHNsb3dlcgogICBjYXB0dXJlZC1hc3Np
Z25tZW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjQzMzcrLTAuMDM0OCAgICAg
PyAgICAgIDAuNTA2MystMC4xODE4ICAgICAgICA/IG1pZ2h0IGJlIDEuMTY3M3ggc2xvd2VyCiAg
IGNhc3QtaW50LXRvLWRvdWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuODk0
OCstMC4zNjQyICAgICAgICAgICAgNC44MTIwKy0wLjIxMDggICAgICAgICAgbWlnaHQgYmUgMS4w
MTcyeCBmYXN0ZXIKICAgY2VsbC1hcmd1bWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMi44MDQ3Ky0wLjI0MTAgICAgICAgICAgICAyLjcxMDMrLTAuMDczMyAgICAgICAg
ICBtaWdodCBiZSAxLjAzNDh4IGZhc3RlcgogICBjZmctc2ltcGxpZnkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAyLjgwMTUrLTAuMDgxMiAgICAgPyAgICAgIDIuOTM4Nyst
MC4yMTg3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ5MHggc2xvd2VyCiAgIGNoYWluLWdldHRlci1h
Y2Nlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAuODYyNystMC42Njk0ICAgICAg
ICAgICAxMC40MTg0Ky0wLjEyMTcgICAgICAgICAgbWlnaHQgYmUgMS4wNDI2eCBmYXN0ZXIKICAg
Y21wZXEtb2JqLXRvLW9iai1vdGhlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOC4yMTcy
Ky0wLjE5OTggICAgICAgICAgICA4LjEyNDIrLTAuMjAwMiAgICAgICAgICBtaWdodCBiZSAxLjAx
MTR4IGZhc3RlcgogICBjb25jYXQtYXBwZW5kLW9uZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA3LjQxOTIrLTAuMzk2MSAgICAgPyAgICAgIDcuNTA2NistMC40OTk3ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDExOHggc2xvd2VyCiAgIGNvbnN0YW50LXRlc3QgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDQuNTI5NistMC4yNDI4ICAgICA/ICAgICAgNC41MzU5Ky0w
LjA4NTUgICAgICAgID8KICAgY3JlYXRlLWxvdHMtb2YtZnVuY3Rpb25zICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNi42Mzk4Ky0wLjYzODkgICAgICAgICAgICA2LjI3ODQrLTAuMjg5MiAgICAg
ICAgICBtaWdodCBiZSAxLjA1NzZ4IGZhc3RlcgogICBjc2UtbmV3LWFycmF5LWJ1ZmZlciAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxLjk1OTErLTAuMTQ4NCAgICAgPyAgICAgIDIuMTEy
NCstMC4zNDM2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDc4Mnggc2xvd2VyCiAgIGNzZS1uZXctYXJy
YXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMTg2MSstMC4zNTc4ICAg
ICAgICAgICAgMi4wNTIzKy0wLjEwNjkgICAgICAgICAgbWlnaHQgYmUgMS4wNjUyeCBmYXN0ZXIK
ICAgY3VzdG9tLXNldHRlci1nZXR0ZXItYXMtcHV0LWdldC1ieS1pZCAgICAgICAgICAgICAgMC40
OTM3Ky0wLjAyMjkgICAgICAgICAgICAwLjQ4OTArLTAuMDE1NCAgICAgICAgCiAgIERhdGFWaWV3
LWN1c3RvbS1wcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgNTEuNDkwNSstMS4wNjM3
ICAgICA/ICAgICA1Mi42MjUyKy0yLjExNzUgICAgICAgID8gbWlnaHQgYmUgMS4wMjIweCBzbG93
ZXIKICAgZGVmYXVsdC1kZXJpdmVkLWNvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgIDYz
Mi4wMzk5Ky00MC40NTM1ICAgICAgICAgNjI2LjcwNzQrLTQwLjQyNDggICAgICAgCiAgIGRlbGF5
LXRlYXItb2ZmLWFyZ3VtZW50cy1zdHJpY3Rtb2RlICAgICAgICAgICAgICAgIDUuMTEwNystMC40
MjM0ICAgICAgICAgICAgNC44NDIwKy0wLjI4NzEgICAgICAgICAgbWlnaHQgYmUgMS4wNTU1eCBm
YXN0ZXIKICAgZGVsdGFibHVlLWZvci1vZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAzMS43MjUxKy0xLjU5MDUgICAgICAgICAgIDMxLjcwNDgrLTEuNjkxNCAgICAgICAgCiAgIGRl
bHRhYmx1ZS12YXJhcmdzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAuMzUzOSst
MC42MjczICAgICAgICAgICAyMC4yMjU0Ky0wLjg1MjcgICAgICAgIAogICBkZW5zZS1zZXQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNTc2LjIwNjUrLTI5Ljg0MTMgICAg
PyAgIDE1ODEuMjE4MistMzUuMzI2NSAgICAgICA/CiAgIGRlc3RydWN0dXJpbmctYXJndW1lbnRz
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNDAuNDIwOSstMS4yOTE5ICAgICAgICAgICAzOS40
NTIwKy0xLjEzNjkgICAgICAgICAgbWlnaHQgYmUgMS4wMjQ2eCBmYXN0ZXIKICAgZGVzdHJ1Y3R1
cmluZy1wYXJhbWV0ZXJzLW92ZXJyaWRkZW4tYnktZnVuY3Rpb24gICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC40OTk4Ky0wLjAyNzUgICAg
ID8gICAgICAwLjUyOTArLTAuMDU5MSAgICAgICAgPyBtaWdodCBiZSAxLjA1ODN4IHNsb3dlcgog
ICBkZXN0cnVjdHVyaW5nLXN3YXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjM3
NTkrLTAuMTE3NSAgICAgICAgICAgIDQuMzM4NystMC4xNDIwICAgICAgICAKICAgZGlyZWN0LWFy
Z3VtZW50cy1nZXRieXZhbCAgICAgICAgICAgICAgICAgICAgICAgICAgMS4wMDM1Ky0wLjA0NTYg
ICAgICAgICAgICAwLjk5NTMrLTAuMDQ3MCAgICAgICAgCiAgIGRpcmVjdC1hcmd1bWVudHMtbGVu
Z3RoICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuNjE4OCstMC41MDcxICAgICAgICAgICAg
Ni4zMzIzKy0wLjM0MDkgICAgICAgICAgbWlnaHQgYmUgMS4wNDUyeCBmYXN0ZXIKICAgZGlyZWN0
LWFyZ3VtZW50cy1vdmVycmlkZGVuLWxlbmd0aCAgICAgICAgICAgICAgICAgNS45OTY1Ky0wLjI1
ODEgICAgID8gICAgICA2LjQxMjArLTAuMzQwMyAgICAgICAgPyBtaWdodCBiZSAxLjA2OTN4IHNs
b3dlcgogICBkaXJlY3QtYXJndW1lbnRzLXBvc3NpYmx5LW92ZXJyaWRkZW4tbGVuZ3RoICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuNjI0
OSstMC4yMjc0ICAgICAgICAgICAgNi41MzUyKy0wLjA1MTMgICAgICAgICAgbWlnaHQgYmUgMS4w
MTM3eCBmYXN0ZXIKICAgZGlyZWN0LWNhbGwtYXJpdHktbWlzbWF0Y2ggICAgICAgICAgICAgICAg
ICAgICAgICA1Ny4zNDcxKy0wLjI5MjggICAgICAgICAgIDU3LjIzMDkrLTAuMjA4NiAgICAgICAg
CiAgIGRpcmVjdC1jYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTMu
NzE4NCstMy4yNzQxICAgICA/ICAgICA1NS4yMjAxKy0zLjA1NDIgICAgICAgID8gbWlnaHQgYmUg
MS4wMjgweCBzbG93ZXIKICAgZGlyZWN0LWNvbnN0cnVjdC1hcml0eS1taXNtYXRjaCAgICAgICAg
ICAgICAgICAgICA5MC40MTIyKy0wLjcyODYgICAgID8gICAgIDkxLjU5OTArLTIuNDkyMSAgICAg
ICAgPyBtaWdodCBiZSAxLjAxMzF4IHNsb3dlcgogICBkaXJlY3QtY29uc3RydWN0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDgwLjA3MTArLTEuMDE3MiAgICAgPyAgICAgODAuODgx
MCstMS41Mzg1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDEwMXggc2xvd2VyCiAgIGRpcmVjdC10YWls
LWNhbGwtYXJpdHktbWlzbWF0Y2ggICAgICAgICAgICAgICAgICAgNjQuOTI2MSstMy4zMDQxICAg
ICA/ICAgICA2NS4zMTU4Ky0yLjgwMjQgICAgICAgID8KICAgZGlyZWN0LXRhaWwtY2FsbC1pbmxp
bmVkLWNhbGxlci1hcml0eS1taXNtYXRjaCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDU5LjQwNTkrLTEuOTc5MSAgICAgICAgICAgNTkuMTU0
OSstMS4wODM2ICAgICAgICAKICAgZGlyZWN0LXRhaWwtY2FsbC1pbmxpbmVkLWNhbGxlciAgICAg
ICAgICAgICAgICAgICA1NC44NzE1Ky0wLjg5MzggICAgICAgICAgIDUzLjMyMzArLTAuNzc0MiAg
ICAgICAgICBtaWdodCBiZSAxLjAyOTB4IGZhc3RlcgogICBkaXJlY3QtdGFpbC1jYWxsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYwLjk5NDcrLTMuMzY4OCAgICAgICAgICAgNTgu
NzAxOCstMS41NzYyICAgICAgICAgIG1pZ2h0IGJlIDEuMDM5MXggZmFzdGVyCiAgIGRpdi1ib29s
ZWFuLWRvdWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNzgyOSstMC4wODg0
ICAgICA/ICAgICAgMy44NDcwKy0wLjI2MTAgICAgICAgID8gbWlnaHQgYmUgMS4wMTcweCBzbG93
ZXIKICAgZGl2LWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ny4xNjQ2Ky0wLjI4MTggICAgICAgICAgICA3LjA1MDErLTAuMTA5MyAgICAgICAgICBtaWdodCBi
ZSAxLjAxNjJ4IGZhc3RlcgogICBkb3VibGUtZ2V0LWJ5LXZhbC1vdXQtb2YtYm91bmRzICAgICAg
ICAgICAgICAgICAgICA0LjExMzcrLTAuMTUwNCAgICAgPyAgICAgIDQuMzA1NistMC40NDc1ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDQ2N3ggc2xvd2VyCiAgIGRvdWJsZS1wb2xsdXRpb24tZ2V0Ynl2
YWwgICAgICAgICAgICAgICAgICAgICAgICAgIDYuOTQ1MCstMC4yMjQ3ICAgICA/ICAgICAgNy4w
MDM3Ky0wLjQwODkgICAgICAgID8KICAgZG91YmxlLXBvbGx1dGlvbi1wdXRieW9mZnNldCAgICAg
ICAgICAgICAgICAgICAgICAgMy42MzI4Ky0wLjM2MzQgICAgICAgICAgICAzLjM1MzIrLTAuMDY5
MiAgICAgICAgICBtaWdodCBiZSAxLjA4MzR4IGZhc3RlcgogICBkb3VibGUtcmVhbC11c2UgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI5LjI5MjArLTAuNDcwMyAgICAgPyAgICAg
MjkuMzE3MistMS44MjU0ICAgICAgICA/CiAgIGRvdWJsZS10by1pbnQzMi10eXBlZC1hcnJheS1u
by1pbmxpbmUgICAgICAgICAgICAgIDIuMzA2NSstMC4yMzM1ICAgICAgICAgICAgMi4yOTY2Ky0w
LjEyNzIgICAgICAgIAogICBkb3VibGUtdG8taW50MzItdHlwZWQtYXJyYXkgICAgICAgICAgICAg
ICAgICAgICAgICAyLjEzNzMrLTAuMDc0MyAgICAgPyAgICAgIDIuMjM2NystMC4xMzA1ICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDQ2NXggc2xvd2VyCiAgIGRvdWJsZS10by11aW50MzItdHlwZWQtYXJy
YXktbm8taW5saW5lICAgICAgICAgICAgIDIuMzE0MSstMC4wMzc5ICAgICA/ICAgICAgMi40NTg2
Ky0wLjIxNjcgICAgICAgID8gbWlnaHQgYmUgMS4wNjI0eCBzbG93ZXIKICAgZG91YmxlLXRvLXVp
bnQzMi10eXBlZC1hcnJheSAgICAgICAgICAgICAgICAgICAgICAgMi4yODEyKy0wLjA3OTkgICAg
ID8gICAgICAyLjMwMzQrLTAuMDU5NyAgICAgICAgPwogICBlbGlkYWJsZS1uZXctb2JqZWN0LWRh
ZyAgICAgICAgICAgICAgICAgICAgICAgICAgIDE4LjE1NTErLTAuOTAxNiAgICAgICAgICAgMTgu
MTM1OCstMC41ODQ1ICAgICAgICAKICAgZWxpZGFibGUtbmV3LW9iamVjdC1yb2ZsY29wdGVyICAg
ICAgICAgICAgICAgICAgICAxOC4yNjY4Ky0zLjQwNDkgICAgICAgICAgIDE3LjAwMDErLTAuMjg1
OCAgICAgICAgICBtaWdodCBiZSAxLjA3NDV4IGZhc3RlcgogICBlbGlkYWJsZS1uZXctb2JqZWN0
LXRoZW4tY2FsbCAgICAgICAgICAgICAgICAgICAgIDE2LjY2MjcrLTAuODMxMyAgICAgICAgICAg
MTYuNTcyNistMC43NTU0ICAgICAgICAKICAgZWxpZGFibGUtbmV3LW9iamVjdC10cmVlICAgICAg
ICAgICAgICAgICAgICAgICAgICAxOC4wMTI5Ky0wLjMxNjkgICAgICAgICAgIDE3LjMwNzUrLTAu
NjQ4NyAgICAgICAgICBtaWdodCBiZSAxLjA0MDh4IGZhc3RlcgogICBlbXB0eS1zdHJpbmctcGx1
cy1pbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjQ2MjErLTAuMDkwNyAgICAgPyAg
ICAgIDQuNTYzNystMC4xNDU2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIyOHggc2xvd2VyCiAgIGVt
c2NyaXB0ZW4tY3ViZTJoYXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjMuNjExNCst
MS4zMjk4ICAgICAgICAgICAyMi4zOTgxKy0wLjQ2NTcgICAgICAgICAgbWlnaHQgYmUgMS4wNTQy
eCBmYXN0ZXIKICAgZXZhbC1jYWNoZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxNy44MTI4Ky0xLjI3ODIgICAgICAgICAgIDE3LjY1NDMrLTAuNTQ1MyAgICAgICAgCiAg
IGV2YWwtY29tcHV0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQuNzIx
NSstMC45MjY2ICAgICAgICAgICAyNC4zODA2Ky0xLjAxNDYgICAgICAgICAgbWlnaHQgYmUgMS4w
MTQweCBmYXN0ZXIKICAgZXZhbC1ub3QtZXZhbC1jb21wdXRlLWFyZ3MgICAgICAgICAgICAgICAg
ICAgICAgICAyNC4yNDc2Ky0xLjAzNTQgICAgICAgICAgIDIzLjI2MDgrLTAuMzkxNCAgICAgICAg
ICBtaWdodCBiZSAxLjA0MjR4IGZhc3RlcgogICBldmFsLW5vdC1ldmFsLWNvbXB1dGUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDI0LjExMDArLTAuODY2NyAgICAgICAgICAgMjMuNDEwOSst
MC42NTU2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI5OXggZmFzdGVyCiAgIGV4aXQtbGVuZ3RoLW9u
LXBsYWluLW9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgIDkuNTc1MCstMC4yMTU2ICAgICA/
ICAgICAxMC40NDY3Ky0wLjcxOTEgICAgICAgID8gbWlnaHQgYmUgMS4wOTEweCBzbG93ZXIKICAg
ZXh0ZXJuYWwtYXJndW1lbnRzLWdldGJ5dmFsICAgICAgICAgICAgICAgICAgICAgICAgMS4xNTg5
Ky0wLjEzMDQgICAgICAgICAgICAxLjA5NTYrLTAuMDg1MCAgICAgICAgICBtaWdodCBiZSAxLjA1
Nzd4IGZhc3RlcgogICBleHRlcm5hbC1hcmd1bWVudHMtcHV0Ynl2YWwgICAgICAgICAgICAgICAg
ICAgICAgICAyLjI5MTcrLTAuNDM2MyAgICAgICAgICAgIDIuMDU4MystMC4xMTUzICAgICAgICAg
IG1pZ2h0IGJlIDEuMTEzNHggZmFzdGVyCiAgIGZpeGVkLXR5cGVkLWFycmF5LXN0b3JhZ2UtdmFy
LWluZGV4ICAgICAgICAgICAgICAgIDEuNDk5NSstMC4wNDk2ICAgICAgICAgICAgMS40OTEwKy0w
LjEwMjUgICAgICAgIAogICBmaXhlZC10eXBlZC1hcnJheS1zdG9yYWdlICAgICAgICAgICAgICAg
ICAgICAgICAgICAxLjM3MTIrLTAuMzMwNyAgICAgICAgICAgIDEuMzY5NistMC4yNzE1ICAgICAg
ICAKICAgRmxvYXQzMkFycmF5LW1hdHJpeC1tdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAg
NS4xNTQwKy0wLjM4NTkgICAgICAgICAgICA1LjA0NTMrLTAuMTc3MSAgICAgICAgICBtaWdodCBi
ZSAxLjAyMTV4IGZhc3RlcgogICBGbG9hdDMyQXJyYXktdG8tRmxvYXQ2NEFycmF5LXNldCAgICAg
ICAgICAgICAgICAgIDM4LjQxMzUrLTAuNjIyMCAgICAgICAgICAgMzcuNzAzNSstMC45OTUwICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDE4OHggZmFzdGVyCiAgIEZsb2F0NjRBcnJheS1hbGxvYy1sb25n
LWxpdmVkICAgICAgICAgICAgICAgICAgICAgNjEuNjk3OSstMS4wODg3ICAgICAgICAgICA2MS42
ODczKy0xLjMxNDQgICAgICAgIAogICBGbG9hdDY0QXJyYXktdG8tSW50MTZBcnJheS1zZXQgICAg
ICAgICAgICAgICAgICAgIDQ2LjA0ODIrLTEuNzYxMSAgICAgPyAgICAgNDYuODk3NistMi40NDY1
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE4NHggc2xvd2VyCiAgIGZvbGQtZG91YmxlLXRvLWludCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIuNjU5NystMC40MTU1ICAgICA/ICAgICAx
My4wOTA5Ky0wLjY3MDcgICAgICAgID8gbWlnaHQgYmUgMS4wMzQxeCBzbG93ZXIKICAgZm9sZC1n
ZXQtYnktaWQtdG8tbXVsdGktZ2V0LWJ5LW9mZnNldC1yYXJlLWludCAgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjY0MTUrLTAuNzc0NiAg
ICAgPyAgICAgIDguOTE3OSstMC45NjE2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDMyMHggc2xvd2Vy
CiAgIGZvbGQtZ2V0LWJ5LWlkLXRvLW11bHRpLWdldC1ieS1vZmZzZXQgICAgICAgICAgICAgIDYu
MTIxMCstMC4zMDc4ICAgICAgICAgICAgNS44ODc3Ky0wLjIxODQgICAgICAgICAgbWlnaHQgYmUg
MS4wMzk2eCBmYXN0ZXIKICAgZm9sZC1tdWx0aS1nZXQtYnktb2Zmc2V0LXRvLWdldC1ieS1vZmZz
ZXQgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMy45Mjk5Ky0wLjA2NTIgICAgID8gICAgICA0LjAxODMrLTAuMTAxNiAgICAgICAgPyBtaWdo
dCBiZSAxLjAyMjV4IHNsb3dlcgogICBmb2xkLW11bHRpLWdldC1ieS1vZmZzZXQtdG8tcG9seS1n
ZXQtYnktb2Zmc2V0ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQuMDI3OSstMC4xNjcyICAgICA/ICAgICAgNC4xNTYyKy0wLjM0NTIgICAg
ICAgID8gbWlnaHQgYmUgMS4wMzE4eCBzbG93ZXIKICAgZm9sZC1tdWx0aS1wdXQtYnktb2Zmc2V0
LXRvLXBvbHktcHV0LWJ5LW9mZnNldCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA0LjIwNzcrLTAuMjQyMSAgICAgPyAgICAgIDUuNTI5Mist
MS41OTkxICAgICAgICA/IG1pZ2h0IGJlIDEuMzE0MXggc2xvd2VyCiAgIGZvbGQtbXVsdGktcHV0
LWJ5LW9mZnNldC10by1wdXQtYnktb2Zmc2V0ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNjY1OCstMC4wNjgzICAgICAgICAgICAgMy42
MjkwKy0wLjA2NTMgICAgICAgICAgbWlnaHQgYmUgMS4wMTAxeCBmYXN0ZXIKICAgZm9sZC1tdWx0
aS1wdXQtYnktb2Zmc2V0LXRvLXJlcGxhY2Utb3ItdHJhbnNpdGlvbi1wdXQtYnktb2Zmc2V0ICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYu
Mzc2OSstMC4yMTI3ICAgICAgICAgICAgNi4yNjkwKy0wLjE2MTYgICAgICAgICAgbWlnaHQgYmUg
MS4wMTcyeCBmYXN0ZXIKICAgZm9sZC1wdXQtYnktaWQtdG8tbXVsdGktcHV0LWJ5LW9mZnNldCAg
ICAgICAgICAgICAgOC42MTc5Ky0xLjE1NzQgICAgID8gICAgICA4LjY0MjYrLTEuNDkyMiAgICAg
ICAgPwogICBmb2xkLXB1dC1ieS12YWwtd2l0aC1zdHJpbmctdG8tbXVsdGktcHV0LWJ5LW9mZnNl
dCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA3LjMzMDYrLTAuMDkxOSAgICAgPyAgICAgIDcuNTEzNSstMC4yMjExICAgICAgICA/IG1pZ2h0
IGJlIDEuMDI0OXggc2xvd2VyCiAgIGZvbGQtcHV0LWJ5LXZhbC13aXRoLXN5bWJvbC10by1tdWx0
aS1wdXQtYnktb2Zmc2V0ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDcuNDQwMSstMC4zNDY3ICAgICA/ICAgICAgNy42MzM5Ky0wLjY0NDAg
ICAgICAgID8gbWlnaHQgYmUgMS4wMjYxeCBzbG93ZXIKICAgZm9sZC1wdXQtc3RydWN0dXJlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4yMzU5Ky0wLjExODMgICAgID8gICAgICAz
LjY0NzcrLTEuMjU0NyAgICAgICAgPyBtaWdodCBiZSAxLjEyNzN4IHNsb3dlcgogICBmb3Itb2Yt
aXRlcmF0ZS1hcnJheS1lbnRyaWVzICAgICAgICAgICAgICAgICAgICAgICA4LjQ0MDErLTAuOTEz
MyAgICAgICAgICAgIDguMzI1NSstMC40NDE0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEzOHggZmFz
dGVyCiAgIGZvci1vZi1pdGVyYXRlLWFycmF5LWtleXMgICAgICAgICAgICAgICAgICAgICAgICAg
IDQuMTM2NystMC4xMTg5ICAgICAgICAgICAgNC4xMDcwKy0wLjI1MzQgICAgICAgIAogICBmb3It
b2YtaXRlcmF0ZS1hcnJheS12YWx1ZXMgICAgICAgICAgICAgICAgICAgICAgICAzLjg3NzErLTAu
MDg1NyAgICAgPyAgICAgIDMuOTA0OSstMC4wOTk5ICAgICAgICA/CiAgIGZyZWV6ZS1hbmQtZG8t
d29yayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIuNjYwNCstMC4zMTgyICAgICA/
ICAgICAxMi44Mjg5Ky0wLjc2ODUgICAgICAgID8gbWlnaHQgYmUgMS4wMTMzeCBzbG93ZXIKICAg
ZnJvdW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOS42NTAy
Ky0wLjEzMDQgICAgICAgICAgICA5LjY0MjArLTAuMTc1OCAgICAgICAgCiAgIGZ0bC1saWJyYXJ5
LWlubGluaW5nLWRhdGF2aWV3ICAgICAgICAgICAgICAgICAgICAgNzQuMzkxNistMC41NTcxICAg
ICA/ICAgICA3Ni44OTc5Ky0yLjEzNjggICAgICAgID8gbWlnaHQgYmUgMS4wMzM3eCBzbG93ZXIK
ICAgZnRsLWxpYnJhcnktaW5saW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNC4w
MjEwKy0xLjA3NjEgICAgICAgICAgIDIzLjI2MjUrLTEuMDU5OSAgICAgICAgICBtaWdodCBiZSAx
LjAzMjZ4IGZhc3RlcgogICBmdGwtcG9seW1vcnBoaWMtYml0YW5kICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTM1LjAxNDYrLTQuNDg3MiAgICAgICAgICAxMzMuNTc5MistMy4xNTY0ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDEwN3ggZmFzdGVyCiAgIGZ0bC1wb2x5bW9ycGhpYy1iaXRvciAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxMzIuNzQwOSstMS43MTE0ICAgICAgICAgIDEzMi43MzI1
Ky0yLjI3MzEgICAgICAgIAogICBmdGwtcG9seW1vcnBoaWMtYml0eG9yICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMTM2LjYwNjcrLTYuMDgxMSAgICAgICAgICAxMzQuODIyMSstMy4yNzM4ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDEzMnggZmFzdGVyCiAgIGZ0bC1wb2x5bW9ycGhpYy1kaXYgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA0NjEuNTAwOSstMTEuMzk0OSAgICAgICAgIDQ1Ni42
OTc0Ky00Ljg1NjEgICAgICAgICAgbWlnaHQgYmUgMS4wMTA1eCBmYXN0ZXIKICAgZnRsLXBvbHlt
b3JwaGljLWxzaGlmdCAgICAgICAgICAgICAgICAgICAgICAgICAgIDE3MS42MjM5Ky0yMC40ODQw
ICAgICAgICAgMTYzLjAwNDArLTMuOTkwNyAgICAgICAgICBtaWdodCBiZSAxLjA1Mjl4IGZhc3Rl
cgogICBmdGwtcG9seW1vcnBoaWMtbXVsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjM2
Ljc5MDYrLTcuMjcxOCAgICAgICAgICAyMzQuMzI2NistMi41MDAwICAgICAgICAgIG1pZ2h0IGJl
IDEuMDEwNXggZmFzdGVyCiAgIGZ0bC1wb2x5bW9ycGhpYy1yc2hpZnQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxNjMuNDg0MCstMy44OTU5ICAgICAgICAgIDE1OS42MjE4Ky0yLjI2MzAgICAg
ICAgICAgbWlnaHQgYmUgMS4wMjQyeCBmYXN0ZXIKICAgZnRsLXBvbHltb3JwaGljLVN0cmluZ0Zy
b21DaGFyQ29kZSAgICAgICAgICAgICAgICA0MS43NTcyKy0wLjU0MjUgICAgICAgICAgIDQxLjU2
NzcrLTAuMTkwNSAgICAgICAgCiAgIGZ0bC1wb2x5bW9ycGhpYy1zdWIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxNTkuNDk2MCstNi4yOTc2ICAgICA/ICAgIDE2MS40NzIxKy03LjMzOTgg
ICAgICAgID8gbWlnaHQgYmUgMS4wMTI0eCBzbG93ZXIKICAgZnRsLXBvbHltb3JwaGljLXVyc2hp
ZnQgICAgICAgICAgICAgICAgICAgICAgICAgIDE4Mi4zNDU1Ky04LjY4NjQgICAgICAgICAgMTc2
LjAzNjYrLTYuMDAxNiAgICAgICAgICBtaWdodCBiZSAxLjAzNTh4IGZhc3RlcgogICBmdW5jdGlv
bi1iaW5kLWlubGluaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgNDc0LjA5NjArLTM0LjQ5
NTEgICAgICAgICA0NTguNzk2NistMTEuMDIzMiAgICAgICAgIG1pZ2h0IGJlIDEuMDMzM3ggZmFz
dGVyCiAgIGZ1bmN0aW9uLWJpbmQtbm8taW5saW5pbmcgICAgICAgICAgICAgICAgICAgICAgICA0
NTcuOTkxNistNC41NjE5ICAgICA/ICAgIDQ2MC4xOTk1Ky00LjcxMDIgICAgICAgID8KICAgZnVu
Y3Rpb24tY2FsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOS42NzkzKy0y
LjE1OTAgICAgICAgICAgICA4Ljk1NjgrLTAuMTc1MiAgICAgICAgICBtaWdodCBiZSAxLjA4MDd4
IGZhc3RlcgogICBmdW5jdGlvbi1kb3QtYXBwbHkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyLjA2NDQrLTAuMDg0MSAgICAgICAgICAgIDIuMDEwNystMC4wMzc5ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDI2N3ggZmFzdGVyCiAgIGZ1bmN0aW9uLXRlc3QgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDIuODQxNystMC4zNjU3ICAgICAgICAgICAgMi43OTYwKy0wLjI4
MjIgICAgICAgICAgbWlnaHQgYmUgMS4wMTY0eCBmYXN0ZXIKICAgZnVuY3Rpb24td2l0aC1ldmFs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MC43NTY4Ky0wLjM3MjYgICAgICEgICAg
IDQzLjk3NDQrLTIuNzM4NiAgICAgICAgISBkZWZpbml0ZWx5IDEuMDc4OXggc2xvd2VyCiAgIGdj
c2UtcG9seS1nZXQtbGVzcy1vYnZpb3VzICAgICAgICAgICAgICAgICAgICAgICAgMTQuMzI2OSst
MC43MzAxICAgICA/ICAgICAxNC40NjE0Ky0wLjQwOTMgICAgICAgID8KICAgZ2NzZS1wb2x5LWdl
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNS42MzAyKy0wLjY3NzYgICAg
ICAgICAgIDE1LjM2ODIrLTEuMzIxMCAgICAgICAgICBtaWdodCBiZSAxLjAxNzB4IGZhc3Rlcgog
ICBnY3NlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjI2
MTErLTAuMTA5MCAgICAgPyAgICAgIDMuMzEzOCstMC4wNDY4ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDE2Mnggc2xvd2VyCiAgIGdlbmVyYXRvci1jcmVhdGUgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAuODMwNCstMC4wNDkyICAgICA/ICAgICAgMC45MjI2Ky0wLjE3OTcgICAgICAg
ID8gbWlnaHQgYmUgMS4xMTExeCBzbG93ZXIKICAgZ2VuZXJhdG9yLWZpYiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAyMS41OTIyKy0wLjg3MzEgICAgICAgICAgIDIxLjIwMTEr
LTAuNzE3OCAgICAgICAgICBtaWdodCBiZSAxLjAxODR4IGZhc3RlcgogICBnZW5lcmF0b3ItZnVu
Y3Rpb24tY3JlYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAzLjY1NjIrLTAuMzY5NCAgICAg
ICAgICAgIDMuNjE1OSstMC4zNDg1ICAgICAgICAgIG1pZ2h0IGJlIDEuMDExMXggZmFzdGVyCiAg
IGdlbmVyYXRvci1zdW5zcGlkZXItYWNjZXNzLW5zaWV2ZSAgICAgICAgICAgICAgICAgIDQuNTE2
OCstMC4xNDEwICAgICAgICAgICAgNC40MTc2Ky0wLjExNTggICAgICAgICAgbWlnaHQgYmUgMS4w
MjI0eCBmYXN0ZXIKICAgZ2VuZXJhdG9yLXdpdGgtc2V2ZXJhbC10eXBlcyAgICAgICAgICAgICAg
ICAgICAgIDEwMy41MjU0Ky0xMy4wNTYwICAgID8gICAgMTA0LjgxMDUrLTEyLjAyMDUgICAgICAg
PyBtaWdodCBiZSAxLjAxMjR4IHNsb3dlcgogICBnZXQtYnktaWQtYmltb3JwaGljLWNoZWNrLXN0
cnVjdHVyZS1lbGltaW5hdGlvbi1zaW1wbGUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4zODMwKy0wLjIyMzYgICAgICAgICAgICAyLjM4
MTgrLTAuMTI0NyAgICAgICAgCiAgIGdldC1ieS1pZC1iaW1vcnBoaWMtY2hlY2stc3RydWN0dXJl
LWVsaW1pbmF0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDQuMjc3MystMC4wNjc2ICAgICA/ICAgICAgNC41OTk0Ky0wLjU1NTMgICAg
ICAgID8gbWlnaHQgYmUgMS4wNzUzeCBzbG93ZXIKICAgZ2V0LWJ5LWlkLWNoYWluLWZyb20tdHJ5
LWJsb2NrICAgICAgICAgICAgICAgICAgICAgMS45MzA4Ky0wLjA1NjAgICAgID8gICAgICAyLjA2
MjkrLTAuMjY0MCAgICAgICAgPyBtaWdodCBiZSAxLjA2ODR4IHNsb3dlcgogICBnZXQtYnktaWQt
Y2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uICAgICAgICAgICAgICAyLjg2OTMrLTAuMTM3MCAg
ICAgPyAgICAgIDMuMTE0MystMC41OTc3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDg1NHggc2xvd2Vy
CiAgIGdldC1ieS1pZC1wcm90by1vci1zZWxmICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcu
OTY3MCstMS4wMjA5ICAgICAgICAgICAgNy42ODU5Ky0wLjUyMDEgICAgICAgICAgbWlnaHQgYmUg
MS4wMzY2eCBmYXN0ZXIKICAgZ2V0LWJ5LWlkLXF1YWRtb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1l
bGltaW5hdGlvbi1zaW1wbGUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMi44MjQzKy0wLjEyNjAgICAgICAgICAgICAyLjgwMTkrLTAuMTgz
MSAgICAgICAgCiAgIGdldC1ieS1pZC1zZWxmLW9yLXByb3RvICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDcuNzU0OCstMC42NzE4ICAgICA/ICAgICAgOS4wODQyKy0xLjQ4MDkgICAgICAgID8g
bWlnaHQgYmUgMS4xNzE0eCBzbG93ZXIKICAgZ2V0LWJ5LXZhbC1vdXQtb2YtYm91bmRzICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNC4xMjI3Ky0wLjE4MDcgICAgICAgICAgICA0LjA5NzUrLTAu
MTczMiAgICAgICAgCiAgIGdldC1ieS12YWwtd2l0aC1zdHJpbmctYmltb3JwaGljLWNoZWNrLXN0
cnVjdHVyZS1lbGltaW5hdGlvbi1zaW1wbGUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMi40Mjg2Ky0wLjA3ODEgICAgID8gICAgICAyLjU3
MTIrLTAuMjc1MiAgICAgICAgPyBtaWdodCBiZSAxLjA1ODd4IHNsb3dlcgogICBnZXQtYnktdmFs
LXdpdGgtc3RyaW5nLWJpbW9ycGhpYy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24gICAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi4wMTQ4
Ky0wLjM0NjAgICAgID8gICAgICA2LjY0MTErLTEuMjcyNSAgICAgICAgPyBtaWdodCBiZSAxLjEw
NDF4IHNsb3dlcgogICBnZXQtYnktdmFsLXdpdGgtc3RyaW5nLWNoYWluLWZyb20tdHJ5LWJsb2Nr
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDEuOTkyMSstMC4wNDg2ICAgICA/ICAgICAgMi4wNDUyKy0wLjE2NTQgICAgICAgID8gbWlnaHQg
YmUgMS4wMjY2eCBzbG93ZXIKICAgZ2V0LWJ5LXZhbC13aXRoLXN0cmluZy1jaGVjay1zdHJ1Y3R1
cmUtZWxpbWluYXRpb24gICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNS4xNjg4Ky0wLjA1MzIgICAgID8gICAgICA1LjMyNjIrLTAuMzE4NCAg
ICAgICAgPyBtaWdodCBiZSAxLjAzMDV4IHNsb3dlcgogICBnZXQtYnktdmFsLXdpdGgtc3RyaW5n
LXByb3RvLW9yLXNlbGYgICAgICAgICAgICAgIDEwLjQ0MDYrLTAuOTE5OSAgICAgPyAgICAgMTEu
NDUyNystMC45MTQ2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDk2OXggc2xvd2VyCiAgIGdldC1ieS12
YWwtd2l0aC1zdHJpbmctcXVhZG1vcnBoaWMtY2hlY2stc3RydWN0dXJlLWVsaW1pbmF0aW9uLXNp
bXBsZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAzLjE0MDkrLTAuMDQ5NCAgICAgPyAgICAgIDMuNDAxNSstMC40OTA0ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDgyOXggc2xvd2VyCiAgIGdldC1ieS12YWwtd2l0aC1zdHJpbmctc2VsZi1vci1w
cm90byAgICAgICAgICAgICAgMTEuMjQ4NystMC43NjY4ICAgICA/ICAgICAxMS4zMDg3Ky0wLjM5
NjUgICAgICAgID8KICAgZ2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1iaW1vcnBoaWMtY2hlY2stc3Ry
dWN0dXJlLWVsaW1pbmF0aW9uLXNpbXBsZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyLjU0MjUrLTAuMDg0NSAgICAgPyAgICAgIDIuNzQw
MystMC40NDYyICAgICAgICA/IG1pZ2h0IGJlIDEuMDc3OHggc2xvd2VyCiAgIGdldC1ieS12YWwt
d2l0aC1zeW1ib2wtYmltb3JwaGljLWNoZWNrLXN0cnVjdHVyZS1lbGltaW5hdGlvbiAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjQ1NjQr
LTAuMDY3NCAgICAgPyAgICAgIDcuODIyMSstMC43MjgyICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ5
MHggc2xvd2VyCiAgIGdldC1ieS12YWwtd2l0aC1zeW1ib2wtY2hhaW4tZnJvbS10cnktYmxvY2sg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MS45NTA2Ky0wLjA3MzkgICAgID8gICAgICAyLjAxMzkrLTAuMTMwNyAgICAgICAgPyBtaWdodCBi
ZSAxLjAzMjR4IHNsb3dlcgogICBnZXQtYnktdmFsLXdpdGgtc3ltYm9sLWNoZWNrLXN0cnVjdHVy
ZS1lbGltaW5hdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA2LjAyNDArLTAuNDU1OCAgICAgPyAgICAgIDYuMDc4MistMC40ODM5ICAg
ICAgICA/CiAgIGdldC1ieS12YWwtd2l0aC1zeW1ib2wtcHJvdG8tb3Itc2VsZiAgICAgICAgICAg
ICAgMTEuMDc2MystMC41MjEyICAgICAgICAgICAxMC43MjgzKy0xLjA4NDQgICAgICAgICAgbWln
aHQgYmUgMS4wMzI0eCBmYXN0ZXIKICAgZ2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1xdWFkbW9ycGhp
Yy1jaGVjay1zdHJ1Y3R1cmUtZWxpbWluYXRpb24tc2ltcGxlICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNTYyMistMC40Njc5ICAgICAg
ICAgICAgMy4zOTE1Ky0wLjA5MDEgICAgICAgICAgbWlnaHQgYmUgMS4wNTAzeCBmYXN0ZXIKICAg
Z2V0LWJ5LXZhbC13aXRoLXN5bWJvbC1zZWxmLW9yLXByb3RvICAgICAgICAgICAgICAxMS4yNDgw
Ky0wLjMwMzEgICAgID8gICAgIDExLjQ0MTYrLTAuNTg0MyAgICAgICAgPyBtaWdodCBiZSAxLjAx
NzJ4IHNsb3dlcgogICBnZXRfYnlfdmFsLUludDMyQXJyYXkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxLjMxNjkrLTAuMDk5NiAgICAgPyAgICAgIDEuMzIxNCstMC4wODY2ICAgICAgICA/
CiAgIGdldF9jYWxsZWVfbW9ub21vcnBoaWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIu
MDc4OCstMC4xMDU1ICAgICA/ICAgICAgMi4yNTY4Ky0wLjIwOTAgICAgICAgID8gbWlnaHQgYmUg
MS4wODU3eCBzbG93ZXIKICAgZ2V0X2NhbGxlZV9wb2x5bW9ycGhpYyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMi44MDgzKy0wLjExMTMgICAgID8gICAgICAyLjgzNjUrLTAuMTc2NCAgICAg
ICAgPyBtaWdodCBiZSAxLjAxMDB4IHNsb3dlcgogICBnZXR0ZXItbm8tYWN0aXZhdGlvbiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyLjk3MzArLTAuMjgyNSAgICAgICAgICAgIDIuOTY3
NSstMC4yNzQ2ICAgICAgICAKICAgZ2V0dGVyLXByb3RvdHlwZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNC42NDA3Ky0wLjA3NjEgICAgID8gICAgICA0LjY5MDIrLTAuMTk1NyAg
ICAgICAgPyBtaWdodCBiZSAxLjAxMDd4IHNsb3dlcgogICBnZXR0ZXItcmljaGFyZHMtdHJ5LWNh
dGNoICAgICAgICAgICAgICAgICAgICAgICAgIDgyLjMxMTYrLTEuMjA3OSAgICAgICAgICAgODIu
MTUzOSstMC42OTM4ICAgICAgICAKICAgZ2V0dGVyLXJpY2hhcmRzICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA2NC4wNzI0Ky0zLjMzMTYgICAgICAgICAgIDYxLjkwNDgrLTIuOTc0
MiAgICAgICAgICBtaWdodCBiZSAxLjAzNTB4IGZhc3RlcgogICBnZXR0ZXIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjE1MjcrLTAuMzgzNCAgICAgPyAgICAg
IDMuMjQ3OSstMC40Mzg3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDMwMnggc2xvd2VyCiAgIGdsb2Jh
bC1pc05hTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAuMTE4OCstMC4y
NTk5ICAgICA/ICAgICAxMC4zMDQwKy0wLjMzNzcgICAgICAgID8gbWlnaHQgYmUgMS4wMTgzeCBz
bG93ZXIKICAgZ2xvYmFsLW9iamVjdC1hY2Nlc3Mtd2l0aC1tdXRhdGluZy1zdHJ1Y3R1cmUgICAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS4z
ODM5Ky0wLjM0MTkgICAgICAgICAgICA1LjA2MzUrLTAuMjM4NCAgICAgICAgICBtaWdodCBiZSAx
LjA2MzN4IGZhc3RlcgogICBnbG9iYWwtdmFyLWNvbnN0LWluZmVyLWZpcmUtZnJvbS1vcHQgICAg
ICAgICAgICAgICAwLjg1MDIrLTAuMDU0MCAgICAgICAgICAgIDAuODIwNCstMC4wMzkxICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDM2M3ggZmFzdGVyCiAgIGdsb2JhbC12YXItY29uc3QtaW5mZXIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAuNzU1OSstMC4wMzA4ICAgICA/ICAgICAgMC43NjY2
Ky0wLjA2MDcgICAgICAgID8gbWlnaHQgYmUgMS4wMTQxeCBzbG93ZXIKICAgaGFyZC1vdmVyZmxv
dy1jaGVjay1lcXVhbCAgICAgICAgICAgICAgICAgICAgICAgICAyNS4yMTMwKy0xLjYyODIgICAg
ICAgICAgIDI0LjQ0OTErLTEuOTA5MiAgICAgICAgICBtaWdodCBiZSAxLjAzMTJ4IGZhc3Rlcgog
ICBoYXJkLW92ZXJmbG93LWNoZWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LjQ5
NTgrLTEuNzgzNSAgICAgPyAgICAgMjUuOTU4MCstMi4xMTc1ICAgICAgICA/IG1pZ2h0IGJlIDEu
MDU5N3ggc2xvd2VyCiAgIGhhcy1vd24tcHJvcGVydHktbmFtZS1jYWNoZSAgICAgICAgICAgICAg
ICAgICAgICAgNTEuOTc3OCstMC4yNTg0ICAgICA/ICAgICA1Mi42NzcyKy0xLjEyOTkgICAgICAg
ID8gbWlnaHQgYmUgMS4wMTM1eCBzbG93ZXIKICAgSGFzaE1hcC1wdXQtZ2V0LWl0ZXJhdGUta2V5
cyAgICAgICAgICAgICAgICAgICAgICAyMS4yNzU4Ky0wLjMwOTQgICAgID8gICAgIDIyLjMwMjAr
LTEuNjAyOCAgICAgICAgPyBtaWdodCBiZSAxLjA0ODJ4IHNsb3dlcgogICBIYXNoTWFwLXB1dC1n
ZXQtaXRlcmF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLjUwMDgrLTAuNDkyMiAgICAg
ICAgICAgMjEuNDU2NystMC40MTUyICAgICAgICAKICAgSGFzaE1hcC1zdHJpbmctcHV0LWdldC1p
dGVyYXRlICAgICAgICAgICAgICAgICAgICAyMy41MDk2Ky0wLjE3MjYgICAgID8gICAgIDIzLjcz
MTIrLTAuNTgyMiAgICAgICAgPwogICBob2lzdC1tYWtlLXJvcGUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAzLjYxODUrLTAuMjI3MiAgICAgPyAgICAgIDMuNzI3MSstMC4yNzU0
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDMwMHggc2xvd2VyCiAgIGhvaXN0LXBvbHktY2hlY2stc3Ry
dWN0dXJlLWVmZmVjdGZ1bC1sb29wICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDMuMDM4MSstMC4wMzg0ICAgICA/ICAgICAgMy4xMzM4Ky0w
LjA4MzkgICAgICAgID8gbWlnaHQgYmUgMS4wMzE1eCBzbG93ZXIKICAgaG9pc3QtcG9seS1jaGVj
ay1zdHJ1Y3R1cmUgICAgICAgICAgICAgICAgICAgICAgICAgMi4xOTAzKy0wLjEzODIgICAgICAg
ICAgICAyLjE1OTQrLTAuMDU4MCAgICAgICAgICBtaWdodCBiZSAxLjAxNDN4IGZhc3RlcgogICBp
bXBsaWNpdC1iaWdzd2l0Y2gtaW5kaXJlY3Qtc3ltYm9sICAgICAgICAgICAgICAgIDQ5LjM3NDYr
LTIuMDQxOSAgICAgICAgICAgNDguODc5MystMS41Mjc5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEw
MXggZmFzdGVyCiAgIGltdWwtZG91YmxlLW9ubHkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDMuMjI2NistMC4wOTM3ICAgICA/ICAgICAgMy42MzIxKy0wLjUzNjggICAgICAgID8g
bWlnaHQgYmUgMS4xMjU3eCBzbG93ZXIKICAgaW11bC1pbnQtb25seSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNS4yODQ0Ky0wLjM0NjUgICAgICAgICAgICA1LjIwOTYrLTAu
MTMwMCAgICAgICAgICBtaWdodCBiZSAxLjAxNDN4IGZhc3RlcgogICBpbXVsLW1peGVkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjA5NTQrLTAuMTk5MiAgICAgICAg
ICAgIDMuMDE5NCstMC4xNDgxICAgICAgICAgIG1pZ2h0IGJlIDEuMDI1MnggZmFzdGVyCiAgIGlu
LWZvdXItY2FzZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUuMDMzNyst
MS4wODc3ICAgICA/ICAgICAxNS4wODMzKy0wLjQ5NzUgICAgICAgID8KICAgaW4tb25lLWNhc2Ut
ZmFsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi45NzAyKy0wLjE3MjMgICAg
ID8gICAgICA3LjE0MzArLTAuNDEwNSAgICAgICAgPyBtaWdodCBiZSAxLjAyNDh4IHNsb3dlcgog
ICBpbi1vbmUtY2FzZS10cnVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjAz
MDUrLTAuMDc3NCAgICAgPyAgICAgIDcuMDkyNistMC4zNTU1ICAgICAgICA/CiAgIGluLXR3by1j
YXNlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuMTM3NCstMC4xNjE3
ICAgICA/ICAgICAgNy4yOTY1Ky0wLjMxMjMgICAgICAgID8gbWlnaHQgYmUgMS4wMjIzeCBzbG93
ZXIKICAgaW5kZXhlZC1wcm9wZXJ0aWVzLWluLW9iamVjdHMgICAgICAgICAgICAgICAgICAgICAg
Mi42NjE0Ky0wLjAzODcgICAgID8gICAgICAyLjc5NjgrLTAuMTQzMyAgICAgICAgPyBtaWdodCBi
ZSAxLjA1MDh4IHNsb3dlcgogICBpbmZlci1jbG9zdXJlLWNvbnN0LXRoZW4tbW92LW5vLWlubGlu
ZSAgICAgICAgICAgICAzLjA4MjArLTAuMTE1OSAgICAgPyAgICAgIDMuMzEzNCstMC4zMjYyICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDc1MXggc2xvd2VyCiAgIGluZmVyLWNsb3N1cmUtY29uc3QtdGhl
bi1tb3YgICAgICAgICAgICAgICAgICAgICAgIDYuNjY4MistMC40NTQ2ICAgICAgICAgICAgNi4z
NjU1Ky0wLjEwMjMgICAgICAgICAgbWlnaHQgYmUgMS4wNDc2eCBmYXN0ZXIKICAgaW5mZXItY2xv
c3VyZS1jb25zdC10aGVuLXB1dC10by1zY29wZS1uby1pbmxpbmUgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMS42MjY3Ky0wLjc4NzIgICAg
ICAgICAgIDExLjI1NDkrLTAuMzI3NiAgICAgICAgICBtaWdodCBiZSAxLjAzMzB4IGZhc3Rlcgog
ICBpbmZlci1jbG9zdXJlLWNvbnN0LXRoZW4tcHV0LXRvLXNjb3BlICAgICAgICAgICAgIDIwLjgy
NzIrLTEuNTM5NyAgICAgICAgICAgMjAuNzEwOSstMS4zMDUzICAgICAgICAKICAgaW5mZXItY2xv
c3VyZS1jb25zdC10aGVuLXJlZW50ZXItbm8taW5saW5lICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDcuOTc3OSstMS4zMzg5ICAgICAgICAg
ICA0Ny4yMTYzKy0wLjQxODAgICAgICAgICAgbWlnaHQgYmUgMS4wMTYxeCBmYXN0ZXIKICAgaW5m
ZXItY2xvc3VyZS1jb25zdC10aGVuLXJlZW50ZXIgICAgICAgICAgICAgICAgICAyMC4wODkwKy0w
LjY2ODkgICAgID8gICAgIDIxLjA0MDMrLTEuMjAxNyAgICAgICAgPyBtaWdodCBiZSAxLjA0NzR4
IHNsb3dlcgogICBpbmZlci1jb25zdGFudC1nbG9iYWwtcHJvcGVydHkgICAgICAgICAgICAgICAg
ICAgICAyLjY2NzgrLTAuMjE4OSAgICAgICAgICAgIDIuNTI4NystMC4wODE1ICAgICAgICAgIG1p
Z2h0IGJlIDEuMDU1MHggZmFzdGVyCiAgIGluZmVyLWNvbnN0YW50LXByb3BlcnR5ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDIuMTE2NCstMC4wNTE0ICAgICA/ICAgICAgMi4xODUwKy0wLjEy
MTcgICAgICAgID8gbWlnaHQgYmUgMS4wMzI0eCBzbG93ZXIKICAgaW5mZXItb25lLXRpbWUtY2xv
c3VyZS10ZW4tdmFycyAgICAgICAgICAgICAgICAgICAgNi4zNTY5Ky0wLjExMjcgICAgID8gICAg
ICA2LjM3NTErLTAuMjA5MiAgICAgICAgPwogICBpbmZlci1vbmUtdGltZS1jbG9zdXJlLXR3by12
YXJzICAgICAgICAgICAgICAgICAgICA2LjAyMTUrLTAuMDc1NSAgICAgPyAgICAgIDYuMTQ3Nist
MC4yMzIyICAgICAgICA/IG1pZ2h0IGJlIDEuMDIxMHggc2xvd2VyCiAgIGluZmVyLW9uZS10aW1l
LWNsb3N1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuMjg4OSstMC42ODY1ICAgICAg
ICAgICAgNi4xNzc5Ky0wLjQzNDcgICAgICAgICAgbWlnaHQgYmUgMS4wMTgweCBmYXN0ZXIKICAg
aW5mZXItb25lLXRpbWUtZGVlcC1jbG9zdXJlICAgICAgICAgICAgICAgICAgICAgICAxMS4zNDYx
Ky0wLjU2MjggICAgICAgICAgIDExLjIzOTkrLTAuMjY0OCAgICAgICAgCiAgIGlubGluZS1hcmd1
bWVudHMtYWNjZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMTc3MCstMC40MjQ3ICAg
ICA/ICAgICAgMy4yMDY4Ky0wLjMxMjEgICAgICAgID8KICAgaW5saW5lLWFyZ3VtZW50cy1hbGlh
c2VkLWFjY2VzcyAgICAgICAgICAgICAgICAgICAgMy4xMDE0Ky0wLjI5NjcgICAgID8gICAgICAz
LjEwODQrLTAuMTExNSAgICAgICAgPwogICBpbmxpbmUtYXJndW1lbnRzLWxvY2FsLWVzY2FwZSAg
ICAgICAgICAgICAgICAgICAgICAzLjI5MjgrLTAuMjI1NyAgICAgPyAgICAgIDMuMzY2OSstMC4x
Nzc1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIyNXggc2xvd2VyCiAgIGlubGluZS1nZXQtc2NvcGVk
LXZhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMjQ2NistMC4wNDMyICAgICA/ICAg
ICAgMi4zMjQ2Ky0wLjE3OTcgICAgICAgID8gbWlnaHQgYmUgMS4wMzQ3eCBzbG93ZXIKICAgaW5s
aW5lZC1wdXQtYnktaWQtdHJhbnNpdGlvbiAgICAgICAgICAgICAgICAgICAgICAgNy42NzMxKy0w
LjM3NTggICAgID8gICAgICA3Ljk2MTkrLTAuMzkxNSAgICAgICAgPyBtaWdodCBiZSAxLjAzNzZ4
IHNsb3dlcgogICBpbmxpbmVkLXB1dC1ieS12YWwtd2l0aC1zdHJpbmctdHJhbnNpdGlvbiAgIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQxLjY0
NzUrLTAuNzEwNSAgICAgPyAgICAgNDEuOTEzNSstMC41MjgwICAgICAgICA/CiAgIGlubGluZWQt
cHV0LWJ5LXZhbC13aXRoLXN5bWJvbC10cmFuc2l0aW9uICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDEuMzU5NSstMC40MTA1ICAgICA/ICAg
ICA0Mi4zNzc4Ky0xLjQ5MzIgICAgICAgID8gbWlnaHQgYmUgMS4wMjQ2eCBzbG93ZXIKICAgaW5z
dGFuY2VvZi1ib3VuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMC43MjAyKy0w
Ljc5ODMgICAgID8gICAgIDIxLjIyNzErLTAuNjA0NiAgICAgICAgPyBtaWdodCBiZSAxLjAyNDV4
IHNsb3dlcgogICBpbnQtb3Itb3RoZXItYWJzLXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAgICAg
ICAgICA3Ljk5ODYrLTAuMDY3OSAgICAgPyAgICAgIDguMTY2MistMC4zMTI0ICAgICAgICA/IG1p
Z2h0IGJlIDEuMDIxMHggc2xvd2VyCiAgIGludC1vci1vdGhlci1hYnMtemVyby10aGVuLWdldC1i
eS12YWwgICAgICAgICAgICAgMTUuNzc2OCstMC44MzY0ICAgICAgICAgICAxNS40MzA5Ky0wLjU4
MDkgICAgICAgICAgbWlnaHQgYmUgMS4wMjI0eCBmYXN0ZXIKICAgaW50LW9yLW90aGVyLWFkZC10
aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAgNC4wNDE4Ky0wLjE2NDMgICAgICAgICAg
ICA0LjAwNDkrLTAuMTEzNyAgICAgICAgCiAgIGludC1vci1vdGhlci1hZGQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDQuNTQ3NCstMC4wNTYwICAgICAgICAgICAgNC41MjU2Ky0w
LjAzODcgICAgICAgIAogICBpbnQtb3Itb3RoZXItZGl2LXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAg
ICAgICAgICAgICAzLjM3ODErLTAuMDg2MCAgICAgICAgICAgIDMuMzIxNystMC4xMDE4ICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDE3MHggZmFzdGVyCiAgIGludC1vci1vdGhlci1tYXgtdGhlbi1nZXQt
YnktdmFsICAgICAgICAgICAgICAgICAgIDMuNzc4OCstMC4yMTk3ICAgICAgICAgICAgMy42MzI3
Ky0wLjA5MTEgICAgICAgICAgbWlnaHQgYmUgMS4wNDAyeCBmYXN0ZXIKICAgaW50LW9yLW90aGVy
LW1pbi10aGVuLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAgMy42MDM4Ky0wLjA3MDEgICAg
ID8gICAgICAzLjY3NzcrLTAuMTUwMSAgICAgICAgPyBtaWdodCBiZSAxLjAyMDV4IHNsb3dlcgog
ICBpbnQtb3Itb3RoZXItbW9kLXRoZW4tZ2V0LWJ5LXZhbCAgICAgICAgICAgICAgICAgICAzLjU0
MTIrLTAuMDg0NSAgICAgPyAgICAgIDMuNjQ5MSstMC4zNzYwICAgICAgICA/IG1pZ2h0IGJlIDEu
MDMwNXggc2xvd2VyCiAgIGludC1vci1vdGhlci1tdWwtdGhlbi1nZXQtYnktdmFsICAgICAgICAg
ICAgICAgICAgIDUuNTkxOCstMC4xNjM3ICAgICA/ICAgICAgNS44MDU5Ky0wLjI3MzQgICAgICAg
ID8gbWlnaHQgYmUgMS4wMzgzeCBzbG93ZXIKICAgaW50LW9yLW90aGVyLW5lZy10aGVuLWdldC1i
eS12YWwgICAgICAgICAgICAgICAgICAyMS44MDAyKy0xLjE2MTggICAgICAgICAgIDIxLjAwMjMr
LTAuNTMwMSAgICAgICAgICBtaWdodCBiZSAxLjAzODB4IGZhc3RlcgogICBpbnQtb3Itb3RoZXIt
bmVnLXplcm8tdGhlbi1nZXQtYnktdmFsICAgICAgICAgICAgIDE2LjI2MjUrLTAuNTM1NiAgICAg
ICAgICAgMTYuMTc0NSstMC41MzMyICAgICAgICAKICAgaW50LW9yLW90aGVyLXN1Yi10aGVuLWdl
dC1ieS12YWwgICAgICAgICAgICAgICAgICAgNC42NTcyKy0wLjE3MjEgICAgID8gICAgICA0Ljg4
NTgrLTAuNDg5OCAgICAgICAgPyBtaWdodCBiZSAxLjA0OTF4IHNsb3dlcgogICBpbnQtb3Itb3Ro
ZXItc3ViICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjc3ODQrLTAuMzMwMSAg
ICAgICAgICAgIDMuNDc5OSstMC4wNjA3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDg1OHggZmFzdGVy
CiAgIGludC1vdmVyZmxvdy1sb2NhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQu
MDcxNystMC4wMjEzICAgICA/ICAgICAgNC4zMTQwKy0wLjQwODYgICAgICAgID8gbWlnaHQgYmUg
MS4wNTk1eCBzbG93ZXIKICAgSW50MTZBcnJheS1hbGxvYy1sb25nLWxpdmVkICAgICAgICAgICAg
ICAgICAgICAgICA0MS45NDk0Ky0zLjM0ODcgICAgID8gICAgIDQyLjM4OTkrLTIuNjc1OSAgICAg
ICAgPyBtaWdodCBiZSAxLjAxMDV4IHNsb3dlcgogICBJbnQxNkFycmF5LWJ1YmJsZS1zb3J0LXdp
dGgtYnl0ZUxlbmd0aCAgICAgICAgICAgIDE1LjcwOTcrLTAuNjk1MCAgICAgPyAgICAgMTYuMTIw
NCstMS40MTk1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI2MXggc2xvd2VyCiAgIEludDE2QXJyYXkt
YnViYmxlLXNvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUuNDYzMistMC41Njc4ICAg
ICAgICAgICAxNS4yNTU3Ky0wLjU5MTUgICAgICAgICAgbWlnaHQgYmUgMS4wMTM2eCBmYXN0ZXIK
ICAgSW50MTZBcnJheS1sb2FkLWludC1tdWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS45
NTg3Ky0wLjQyODAgICAgICAgICAgICAxLjg1MjYrLTAuMTg5NyAgICAgICAgICBtaWdodCBiZSAx
LjA1NzN4IGZhc3RlcgogICBJbnQxNkFycmF5LXRvLUludDMyQXJyYXktc2V0ICAgICAgICAgICAg
ICAgICAgICAgIDM2LjY0NjkrLTAuNTA5NCAgICAgICAgICAgMzYuNTg2MistMC41NTk0ICAgICAg
ICAKICAgSW50MzJBcnJheS1hbGxvYy1sYXJnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
Mi44NzY0Ky0wLjMzNjMgICAgICAgICAgIDEyLjY5OTYrLTAuNDg5NSAgICAgICAgICBtaWdodCBi
ZSAxLjAxMzl4IGZhc3RlcgogICBJbnQzMkFycmF5LWFsbG9jLWxvbmctbGl2ZWQgICAgICAgICAg
ICAgICAgICAgICAgIDQ5LjA2MzgrLTIuOTQxNSAgICAgICAgICAgNDguNDc4MCstMi4xMzk1ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDEyMXggZmFzdGVyCiAgIEludDMyQXJyYXktYWxsb2MgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMTkyNSstMC4xMjc3ICAgICA/ICAgICAgMy4y
NTI3Ky0wLjExNTEgICAgICAgID8gbWlnaHQgYmUgMS4wMTg5eCBzbG93ZXIKICAgSW50MzJBcnJh
eS1JbnQ4QXJyYXktdmlldy1hbGxvYyAgICAgICAgICAgICAgICAgICAgOC4yMTAzKy0wLjM2MTIg
ICAgICAgICAgICA3Ljg1ODUrLTAuMjU4NiAgICAgICAgICBtaWdodCBiZSAxLjA0NDh4IGZhc3Rl
cgogICBpbnQ1Mi1zcGlsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0
Ljk5NjkrLTAuMDg2NiAgICAgICAgICAgIDQuOTgwNSstMC4yODQ3ICAgICAgICAKICAgSW50OEFy
cmF5LWFsbG9jLWxvbmctbGl2ZWQgICAgICAgICAgICAgICAgICAgICAgICAzNi45OTUwKy0xLjU3
OTYgICAgICAgICAgIDM2Ljk4MDErLTEuMTM0OSAgICAgICAgCiAgIEludDhBcnJheS1sb2FkLXdp
dGgtYnl0ZUxlbmd0aCAgICAgICAgICAgICAgICAgICAgIDMuNDU4MistMC4wNjcyICAgICA/ICAg
ICAgMy42MDMxKy0wLjM2NzAgICAgICAgID8gbWlnaHQgYmUgMS4wNDE5eCBzbG93ZXIKICAgSW50
OEFycmF5LWxvYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy42NTEyKy0w
LjMzMDggICAgICAgICAgICAzLjU5MjArLTAuMjU4OCAgICAgICAgICBtaWdodCBiZSAxLjAxNjV4
IGZhc3RlcgogICBpbnRlZ2VyLWRpdmlkZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA5Ljk3ODcrLTAuMzY5NCAgICAgPyAgICAgMTAuNjcxMCstMS4zNjAzICAgICAgICA/IG1p
Z2h0IGJlIDEuMDY5NHggc2xvd2VyCiAgIGludGVnZXItbW9kdWxvICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDIuMjI0MSstMC4wOTEwICAgICAgICAgICAgMi4xOTQwKy0wLjEw
MDYgICAgICAgICAgbWlnaHQgYmUgMS4wMTM3eCBmYXN0ZXIKICAgaXMtYXJyYXktZm9yLWFycmF5
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4wNjcyKy0wLjA5NDIgICAgICAgICAg
ICAyLjA2MzYrLTAuMTUwNyAgICAgICAgCiAgIGlzLWFycmF5LWZvci1taXhlZC1jYXNlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDQuNDYwMistMC4yNDI5ICAgICAgICAgICAgNC4yMTI5Ky0w
LjA5ODAgICAgICAgICAgbWlnaHQgYmUgMS4wNTg3eCBmYXN0ZXIKICAgaXMtYXJyYXktZm9yLW5v
bi1hcnJheS1vYmplY3QgICAgICAgICAgICAgICAgICAgICAgMi4xMTg5Ky0wLjA5MDcgICAgICAg
ICAgICAyLjA2NzQrLTAuMDMwNCAgICAgICAgICBtaWdodCBiZSAxLjAyNDl4IGZhc3RlcgogICBp
cy1hcnJheS1mb3ItcHJveHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjEyMTEr
LTAuMzYxNSAgICAgICAgICAgIDIuOTk0OCstMC4wMzk2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQy
MnggZmFzdGVyCiAgIGlzLWJvb2xlYW4tZm9sZC10cmlja3kgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDIuODY1NCstMC40MDc2ICAgICAgICAgICAgMi43MTQxKy0wLjA3OTIgICAgICAgICAg
bWlnaHQgYmUgMS4wNTU3eCBmYXN0ZXIKICAgaXMtYm9vbGVhbi1mb2xkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMi4xOTczKy0wLjIyNTUgICAgICAgICAgICAyLjA0MzIrLTAu
MDQ4MiAgICAgICAgICBtaWdodCBiZSAxLjA3NTR4IGZhc3RlcgogICBpcy1mdW5jdGlvbi1mb2xk
LXRyaWNreS1pbnRlcm5hbC1mdW5jdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDEwLjA2NzArLTAuMTUzOCAgICAgPyAgICAgMTAuMjI5
NCstMC4xODMzICAgICAgICA/IG1pZ2h0IGJlIDEuMDE2MXggc2xvd2VyCiAgIGlzLWZ1bmN0aW9u
LWZvbGQtdHJpY2t5ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuODk1MCstMC4wNzY0ICAg
ICA/ICAgICAgMi45ODA5Ky0wLjI5OTcgICAgICAgID8gbWlnaHQgYmUgMS4wMjk3eCBzbG93ZXIK
ICAgaXMtZnVuY3Rpb24tZm9sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4x
Mjc2Ky0wLjA3MDEgICAgICAgICAgICAyLjA2OTQrLTAuMDI4MyAgICAgICAgICBtaWdodCBiZSAx
LjAyODJ4IGZhc3RlcgogICBpcy1udW1iZXItZm9sZC10cmlja3kgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyLjc1NzUrLTAuMDQ0MiAgICAgPyAgICAgIDIuODQwOSstMC4xMjUxICAgICAg
ICA/IG1pZ2h0IGJlIDEuMDMwMnggc2xvd2VyCiAgIGlzLW51bWJlci1mb2xkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIuMjA3NistMC4xMTQ1ICAgICAgICAgICAgMi4wNTQ1
Ky0wLjEyNDEgICAgICAgICAgbWlnaHQgYmUgMS4wNzQ1eCBmYXN0ZXIKICAgaXMtb2JqZWN0LW9y
LW51bGwtZm9sZC1mdW5jdGlvbnMgICAgICAgICAgICAgICAgICAgMi4xNzkxKy0wLjExOTMgICAg
ID8gICAgICAyLjE4NzErLTAuMTEwNyAgICAgICAgPwogICBpcy1vYmplY3Qtb3ItbnVsbC1mb2xk
LWxlc3MtdHJpY2t5ICAgICAgICAgICAgICAgICAyLjg0NTgrLTAuMDQ3NiAgICAgICAgICAgIDIu
ODEzNistMC4wMzIyICAgICAgICAgIG1pZ2h0IGJlIDEuMDExNXggZmFzdGVyCiAgIGlzLW9iamVj
dC1vci1udWxsLWZvbGQtdHJpY2t5ICAgICAgICAgICAgICAgICAgICAgIDMuMTE5MSstMC4wOTQ1
ICAgICAgICAgICAgMy4wNTczKy0wLjA3ODMgICAgICAgICAgbWlnaHQgYmUgMS4wMjAyeCBmYXN0
ZXIKICAgaXMtb2JqZWN0LW9yLW51bGwtZm9sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Mi4wOTQ4Ky0wLjA3NDYgICAgID8gICAgICAyLjE0MzcrLTAuMTkxMiAgICAgICAgPyBtaWdodCBi
ZSAxLjAyMzR4IHNsb3dlcgogICBpcy1vYmplY3Qtb3ItbnVsbC10cmlja2llci1mdW5jdGlvbiAg
ICAgICAgICAgICAgICAyLjg0NTErLTAuMDU2OCAgICAgPyAgICAgIDMuMDMyMSstMC4yODUzICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDY1N3ggc2xvd2VyCiAgIGlzLW9iamVjdC1vci1udWxsLXRyaWNr
aWVyLWludGVybmFsLWZ1bmN0aW9uICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDkuOTkxNistMC40NTIyICAgICAgICAgICAgOS44NTIzKy0w
LjQ3MjIgICAgICAgICAgbWlnaHQgYmUgMS4wMTQxeCBmYXN0ZXIKICAgaXMtb2JqZWN0LW9yLW51
bGwtdHJpY2t5LWZ1bmN0aW9uICAgICAgICAgICAgICAgICAgMi45NjAwKy0wLjIxMTcgICAgID8g
ICAgICAzLjM4OTYrLTAuNjA5NCAgICAgICAgPyBtaWdodCBiZSAxLjE0NTF4IHNsb3dlcgogICBp
cy1vYmplY3Qtb3ItbnVsbC10cmlja3ktaW50ZXJuYWwtZnVuY3Rpb24gICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy4zODk0Ky0yLjA5MjMg
ICAgICAgICAgICA2Ljg2NjArLTAuNDM1OSAgICAgICAgICBtaWdodCBiZSAxLjA3NjJ4IGZhc3Rl
cgogICBpcy1zdHJpbmctZm9sZC10cmlja3kgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAy
Ljc3NjcrLTAuMTAwMyAgICAgICAgICAgIDIuNzQ4NystMC4wOTM2ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDEwMnggZmFzdGVyCiAgIGlzLXN0cmluZy1mb2xkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDIuMTMxMSstMC4xOTgwICAgICAgICAgICAgMi4wODg4Ky0wLjA5MjYgICAg
ICAgICAgbWlnaHQgYmUgMS4wMjAyeCBmYXN0ZXIKICAgaXMtc3ltYm9sLW1peGVkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMy45NzI3Ky0wLjQyNjUgICAgID8gICAgICA0LjEw
NjMrLTAuNTA3OCAgICAgICAgPyBtaWdodCBiZSAxLjAzMzZ4IHNsb3dlcgogICBpcy1zeW1ib2wg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjYzNTArLTAuMzcwOSAg
ICAgICAgICAgIDEuNTI5NistMC4wOTE2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDY4OXggZmFzdGVy
CiAgIGlzLXVuZGVmaW5lZC1mb2xkLXRyaWNreSAgICAgICAgICAgICAgICAgICAgICAgICAgIDIu
NjczNCstMC4zODcwICAgICAgICAgICAgMi40Nzk0Ky0wLjA0MTEgICAgICAgICAgbWlnaHQgYmUg
MS4wNzgzeCBmYXN0ZXIKICAgaXMtdW5kZWZpbmVkLWZvbGQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMi4yODE2Ky0wLjQxMTEgICAgICAgICAgICAyLjAzNTUrLTAuMDM3MyAgICAg
ICAgICBtaWdodCBiZSAxLjEyMDl4IGZhc3RlcgogICBKU09OUC1uZWdhdGl2ZS0wICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAwLjM1NDkrLTAuMTIxOCAgICAgICAgICAgIDAuMjky
MistMC4wMjQ4ICAgICAgICAgIG1pZ2h0IGJlIDEuMjE0NXggZmFzdGVyCiAgIGxhcmdlLWludC1j
YXB0dXJlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuOTgwOSstMC4xMzkzICAg
ICAgICAgICAgMi45NTM4Ky0wLjE5NjYgICAgICAgIAogICBsYXJnZS1pbnQtbmVnICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5LjgyNTUrLTAuMjQyNCAgICAgPyAgICAgIDku
OTM2OCstMC41MzM3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDExM3ggc2xvd2VyCiAgIGxhcmdlLWlu
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguMjg5MystMS4xOTA5
ICAgICAgICAgICAgNy43MTY5Ky0wLjI3MjcgICAgICAgICAgbWlnaHQgYmUgMS4wNzQyeCBmYXN0
ZXIKICAgbGFyZ2UtbWFwLWl0ZXJhdGlvbi13aXRoLWFkZGl0aW9ucyAgICAgICAgICAgICAgIDQz
OC45NDY2Ky0xOC41NTI2ICAgID8gICAgNDQ0Ljc2NjYrLTkuMjIwMyAgICAgICAgPyBtaWdodCBi
ZSAxLjAxMzN4IHNsb3dlcgogICBsYXJnZS1tYXAtaXRlcmF0aW9uLXdpdGgtbXV0YXRpb24gICAg
ICAgICAgICAgICAgMjE3LjI0MTUrLTUuNDU4MCAgICAgPyAgICAyMjUuNjg0MystNy4zNjE3ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDM4OXggc2xvd2VyCiAgIGxhcmdlLW1hcC1pdGVyYXRpb24gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxMTAuODUzMCstNS4wNTAyICAgICAgICAgIDEwNy4z
NTQxKy0xLjI3NjEgICAgICAgICAgbWlnaHQgYmUgMS4wMzI2eCBmYXN0ZXIKICAgbGF6eS1hcnJh
eS1zcGVjaWVzLXdhdGNocG9pbnRzICAgICAgICAgICAgICAgICAgICAxOC40NDY3Ky0wLjIwMjgg
ICAgID8gICAgIDE4LjgzMzYrLTEuMTIyOSAgICAgICAgPyBtaWdodCBiZSAxLjAyMTB4IHNsb3dl
cgogICBsaWNtLWRyYWdvbnMtb3V0LW9mLWJvdW5kcyAgICAgICAgICAgICAgICAgICAgICAgIDMx
LjYzODUrLTEuNTI0OSAgICAgICAgICAgMzEuMjg2NistMC43NTQ0ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDExMnggZmFzdGVyCiAgIGxpY20tZHJhZ29ucy1vdmVyZmxvdyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMTkuMzEyNSstMS4xNjMzICAgICAgICAgICAxOC4yOTg2Ky0wLjU1NzUgICAg
ICAgICAgbWlnaHQgYmUgMS4wNTU0eCBmYXN0ZXIKICAgbGljbS1kcmFnb25zICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAzNS4xMzMwKy0wLjg2MzMgICAgICAgICAgIDM0LjM0
MjMrLTAuMzY4NyAgICAgICAgICBtaWdodCBiZSAxLjAyMzB4IGZhc3RlcgogICBsb2FkLXZhcmFy
Z3MtZWxpbWluYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgIDE3LjM4NTIrLTAuODA3NCAg
ICAgICAgICAgMTcuMTMzMSstMC44NTI2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE0N3ggZmFzdGVy
CiAgIGxvY2FsZS1jb21wYXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTku
ODE1MSstMC40MjA0ICAgICA/ICAgICAyMC41MTU4Ky0wLjQ4MDggICAgICAgID8gbWlnaHQgYmUg
MS4wMzU0eCBzbG93ZXIKICAgbG9naWNhbC1ub3Qtd2VpcmQtdHlwZXMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMi41MDk4Ky0wLjA1NDkgICAgID8gICAgICAyLjU0NzkrLTAuMTQyNCAgICAg
ICAgPyBtaWdodCBiZSAxLjAxNTJ4IHNsb3dlcgogICBsb2dpY2FsLW5vdCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAzLjU3MTQrLTAuMTAwMiAgICAgPyAgICAgIDMuNjUw
MCstMC4yMDQyICAgICAgICA/IG1pZ2h0IGJlIDEuMDIyMHggc2xvd2VyCiAgIGxvdHMtb2YtZmll
bGRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDguOTM0OSstMC4yNjc0ICAg
ICAgICAgICAgOC44NzgxKy0wLjU0MTcgICAgICAgIAogICBtYWtlLWluZGV4ZWQtc3RvcmFnZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjYzNDArLTAuMTI2OCAgICAgICAgICAgIDIu
NTkzNCstMC4wOTA2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE1N3ggZmFzdGVyCiAgIG1ha2Utcm9w
ZS1jc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuODQ4MCstMC4xODE4
ICAgICAgICAgICAgMi44MjMwKy0wLjA2NjEgICAgICAgIAogICBtYW55LWZvcmVhY2gtY2FsbHMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjMwMzIrLTAuMTM2MiAgICAgICAgICAg
IDIuMjM5NSstMC4wNjY3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI4NXggZmFzdGVyCiAgIG1hbnkt
cmVwZWF0LXN0b3JlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTkuMTM1MCstMC44
ODUzICAgICAgICAgICAxOS4wNTgxKy0wLjc1NTEgICAgICAgIAogICBtYXAtY29uc3RhbnQta2V5
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTU3LjcyMzYrLTMuNjcxMiAgICAgPyAg
ICAxNTguMzQ2NSstMy41NDYwICAgICAgICA/CiAgIG1hcC1mb3ItZWFjaCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDQuNjY5OCstMC4xNDQxICAgICA/ICAgICAgNC44NTAx
Ky0wLjQzNDEgICAgICAgID8gbWlnaHQgYmUgMS4wMzg2eCBzbG93ZXIKICAgbWFwLWZvci1vZiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMC4zMTgzKy0wLjgwODQgICAg
ID8gICAgIDIwLjYyMDQrLTAuOTA4NiAgICAgICAgPyBtaWdodCBiZSAxLjAxNDl4IHNsb3dlcgog
ICBtYXAtZ2V0LWdldC1jc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTgxLjg2
MDgrLTMwLjM5MzQgICAgICAgICA1NTguNzM3NSstOC44MTYxICAgICAgICAgIG1pZ2h0IGJlIDEu
MDQxNHggZmFzdGVyCiAgIG1hcC1oYXMtZ2V0LWNzZS1vcHBvcnR1bml0eSAgICAgICAgICAgICAg
ICAgICAgICAgNzQuMzQxNistMi4xNjgxICAgICAgICAgICA3Mi43MDk1Ky0xLjE2NzQgICAgICAg
ICAgbWlnaHQgYmUgMS4wMjI0eCBmYXN0ZXIKICAgbWFwLWtleS13ZWxsLXR5cGVkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA3OC45Nzc0Ky00LjE1MjggICAgICAgICAgIDc2LjY3MTcr
LTIuMjE5MyAgICAgICAgICBtaWdodCBiZSAxLjAzMDF4IGZhc3RlcgogICBtYXAtcmVoYXNoICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjM3NDArLTAuNDc2MCAgICAg
PyAgICAgIDcuNDA4NystMC4wNTQzICAgICAgICA/CiAgIG1hcnNhZ2xpYS1sYXJnZXItaW50cyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNjEuOTc4MSstMC41Njg1ICAgICA/ICAgICA2My42
ODY4Ky0xLjYwNjAgICAgICAgID8gbWlnaHQgYmUgMS4wMjc2eCBzbG93ZXIKICAgbWFyc2FnbGlh
LW9zci1lbnRyeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi44MzI3Ky0wLjU4MDYg
ICAgID8gICAgIDE3LjE5MTgrLTAuNjQ0MyAgICAgICAgPyBtaWdodCBiZSAxLjAyMTN4IHNsb3dl
cgogICBtYXRoLXJhbmRvbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0
LjM1MDgrLTAuNDU1NyAgICAgICAgICAgMTQuMDU1OSstMC40NzI1ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDIxMHggZmFzdGVyCiAgIG1hdGgtdHJ1bmMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDUuNjEwOCstMC4zNzM4ICAgICAgICAgICAgNS40MjQyKy0wLjE2NTkgICAg
ICAgICAgbWlnaHQgYmUgMS4wMzQ0eCBmYXN0ZXIKICAgbWF0aC13aXRoLW91dC1vZi1ib3VuZHMt
YXJyYXktdmFsdWVzICAgICAgICAgICAgICAyNy45MTgwKy0xLjI4MTMgICAgICAgICAgIDI3LjY2
ODArLTEuMzgxOCAgICAgICAgCiAgIG1heC1ib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDIuMjQ3MCstMC4xMDE4ICAgICAgICAgICAgMi4yMDY3Ky0wLjA2Mzcg
ICAgICAgICAgbWlnaHQgYmUgMS4wMTgzeCBmYXN0ZXIKICAgbWVnYW1vcnBoaWMtbG9hZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyOC4zNDAxKy0yLjYwMTIgICAgID8gICAgIDI5
Ljc5MTgrLTIuMjI2MiAgICAgICAgPyBtaWdodCBiZSAxLjA1MTJ4IHNsb3dlcgogICBtZXRob2Qt
b24tbnVtYmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLjI1MjErLTEuODcx
NSAgICAgICAgICAgMTguNzIzNystMC43MDc3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDgxNnggZmFz
dGVyCiAgIG1pbi1ib29sZWFuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDIuMTkxNistMC4wNDkxICAgICA/ICAgICAgMi4yMDA5Ky0wLjA1NzkgICAgICAgID8KICAgbWlu
dXMtYm9vbGVhbi1kb3VibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi4zMzM0Ky0w
LjEyNTggICAgID8gICAgICAyLjMzNDErLTAuMjAwMCAgICAgICAgPwogICBtaW51cy1ib29sZWFu
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjk5MDMrLTAuMTA3OSAgICAg
PyAgICAgIDIuMDAyNCstMC4xMzA0ICAgICAgICA/CiAgIG1pc2MtYnVncy04NDczODktanBlZzIw
MDAgICAgICAgICAgICAgICAgICAgICAgIDM4ODcuOTM2OCstMjQuMzIwOSAgICAgICAgMzg2NS4x
OTY4Ky0yNS44NjQyICAgICAgIAogICBtaXNjLXN0cmljdC1lcSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDIwLjgyMjIrLTAuNzY0NCAgICAgPyAgICAgMjAuOTA2NystMC45NTgx
ICAgICAgICA/CiAgIG1vZC1ib29sZWFuLWRvdWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDguOTk0MystMC4yMTk0ICAgICA/ICAgICAgOS4wNjA1Ky0wLjUyODcgICAgICAgID8K
ICAgbW9kLWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi44
NTQzKy0wLjE0ODIgICAgICAgICAgICA2LjgxMjkrLTAuMDgxMCAgICAgICAgCiAgIG11bC1ib29s
ZWFuLWRvdWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuNzYwNCstMC4yNTkz
ICAgICAgICAgICAgMi42NTAxKy0wLjA3ODQgICAgICAgICAgbWlnaHQgYmUgMS4wNDE2eCBmYXN0
ZXIKICAgbXVsLWJvb2xlYW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Mi41MzU5Ky0wLjQwMTIgICAgICAgICAgICAyLjMwMDUrLTAuMDY0MiAgICAgICAgICBtaWdodCBi
ZSAxLjEwMjN4IGZhc3RlcgogICBuZWctYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyLjMwNTcrLTAuMDYwOSAgICAgICAgICAgIDIuMjgxOCstMC4wNDAwICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDEwNXggZmFzdGVyCiAgIG5lZ2F0aXZlLXplcm8tZGl2aWRlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNDAyNystMC4wNjQ1ICAgICAgICAgICAgMC4z
ODU3Ky0wLjAyOTMgICAgICAgICAgbWlnaHQgYmUgMS4wNDQxeCBmYXN0ZXIKICAgbmVnYXRpdmUt
emVyby1tb2R1bG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC40MDI3Ky0wLjAxNzUg
ICAgID8gICAgICAwLjQ2MDQrLTAuMDc1MSAgICAgICAgPyBtaWdodCBiZSAxLjE0MzJ4IHNsb3dl
cgogICBuZWdhdGl2ZS16ZXJvLW5lZ2F0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
LjM4MTMrLTAuMDI2MCAgICAgPyAgICAgIDAuNDIxOSstMC4wNDA5ICAgICAgICA/IG1pZ2h0IGJl
IDEuMTA2Nnggc2xvd2VyCiAgIG5lc3RlZC1mdW5jdGlvbi1wYXJzaW5nICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMzMuNjM4NSstMC4yMjY5ICAgICA/ICAgICAzMy42NzcxKy0wLjQ3MTEgICAg
ICAgID8KICAgbmV3LWFycmF5LWJ1ZmZlci1kZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA1Ni42MzE3Ky0yLjYyMTAgICAgICAgICAgIDU1LjYyMjUrLTAuMTgyOSAgICAgICAgICBtaWdo
dCBiZSAxLjAxODF4IGZhc3RlcgogICBuZXctYXJyYXktYnVmZmVyLXB1c2ggICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA0LjAxMjIrLTAuMDg2NiAgICAgPyAgICAgIDQuMDg1NystMC4xMDQ2
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE4M3ggc2xvd2VyCiAgIG5ldy1hcnJheS1kZWFkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuOTE0MSstMC4yMzc0ICAgICA/ICAgICAg
Ny4wMTk3Ky0wLjI5MzYgICAgICAgID8gbWlnaHQgYmUgMS4wMTUzeCBzbG93ZXIKICAgbmV3LWFy
cmF5LXB1c2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4zNjM3Ky0wLjQ2
MDkgICAgICAgICAgICAzLjEyNTMrLTAuMTc2NCAgICAgICAgICBtaWdodCBiZSAxLjA3NjN4IGZh
c3RlcgogICBuby1pbmxpbmUtY29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDI0LjY3NjUrLTAuNTY0MSAgICAgICAgICAgMjQuNTc4MCstMC4zNDc2ICAgICAgICAKICAgTnVt
YmVyLWlzTmFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMC4yNTUyKy0w
LjUyNDAgICAgICAgICAgICA5LjkyODErLTAuMTE5MSAgICAgICAgICBtaWdodCBiZSAxLjAzMjl4
IGZhc3RlcgogICBudW1iZXItdGVzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAyLjg5MDkrLTAuMTA5NyAgICAgICAgICAgIDIuODQ4OCstMC4xMDUzICAgICAgICAgIG1p
Z2h0IGJlIDEuMDE0OHggZmFzdGVyCiAgIG9iamVjdC1hbmQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDQuNzU5MystMC4wNTk1ICAgICA/ICAgICAgNC44ODA4Ky0wLjMz
MzcgICAgICAgID8gbWlnaHQgYmUgMS4wMjU1eCBzbG93ZXIKICAgb2JqZWN0LWNsb3N1cmUtY2Fs
bCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41MDkwKy0wLjA5NDkgICAgID8gICAg
ICA0LjY1NzgrLTAuMjQ4OCAgICAgICAgPyBtaWdodCBiZSAxLjAzMzB4IHNsb3dlcgogICBvYmpl
Y3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLW9uLWxhcmdlLWFycmF5ICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMjk4NSstMC4xNjk2
ICAgICAgICAgICAgMS4yMTE2Ky0wLjA4MDIgICAgICAgICAgbWlnaHQgYmUgMS4wNzE3eCBmYXN0
ZXIKICAgb2JqZWN0LWludC1hZGQtYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OS43OTUzKy0wLjE0ODggICAgID8gICAgICA5Ljk1NzkrLTAuMzU1MiAgICAgICAgPyBtaWdodCBi
ZSAxLjAxNjZ4IHNsb3dlcgogICBvYmplY3QtaW50LWFkZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDEzLjA5NTArLTAuNDExMiAgICAgICAgICAgMTIuOTQ3NCstMC40NzU0ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDExNHggZmFzdGVyCiAgIG9iamVjdC1pbnQtYW5kLWFycmF5ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuODE2NistMC4xODAxICAgICA/ICAgICAgOS45
MDg3Ky0wLjIzMzkgICAgICAgID8KICAgb2JqZWN0LWludC1tdWwtYXJyYXkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOS44ODE2Ky0wLjE4ODMgICAgID8gICAgICA5Ljg4MzkrLTAuMTI2
NCAgICAgICAgPwogICBvYmplY3QtaW50LXN1Yi1hcnJheSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA3LjcyNjYrLTAuMTA2MyAgICAgPyAgICAgIDguMTI4OCstMC41MDc5ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDUyMHggc2xvd2VyCiAgIG9iamVjdC1pbnQtc3ViICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMTIuODk4MistMC4yMzM0ICAgICA/ICAgICAxMy4wNDgxKy0w
LjQ2NDAgICAgICAgID8gbWlnaHQgYmUgMS4wMTE2eCBzbG93ZXIKICAgb2JqZWN0LWxzaGlmdCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNC43OTA3Ky0wLjEwMTggICAgID8g
ICAgICA0LjgzMTkrLTAuMjgwNSAgICAgICAgPwogICBvYmplY3Qtb3IgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA0Ljc2NTQrLTAuMDc4NCAgICAgPyAgICAgIDUuMDgw
MCstMC40NDQ3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDY2MHggc2xvd2VyCiAgIG9iamVjdC1yc2hp
ZnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuODI5NCstMC4zMTkwICAg
ICA/ICAgICAgNC44NzkxKy0wLjIxNzEgICAgICAgID8gbWlnaHQgYmUgMS4wMTAzeCBzbG93ZXIK
ICAgb2JqZWN0LXRlc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi42
MjM1Ky0wLjI0NDUgICAgICAgICAgICAyLjU1MDYrLTAuMDMyNiAgICAgICAgICBtaWdodCBiZSAx
LjAyODZ4IGZhc3RlcgogICBvYmplY3QtdXJzaGlmdCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA0LjY5OTMrLTAuMDUxNSAgICAgPyAgICAgIDQuNzM3MystMC4wNzU2ICAgICAg
ICA/CiAgIG9iamVjdC14b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDQuODM5NSstMC4yNzI0ICAgICAgICAgICAgNC44MjYzKy0wLjE1MzQgICAgICAgIAogICBvYnZp
b3VzLXNpbmstcGF0aG9sb2d5LXRha2VuICAgICAgICAgICAgICAgICAgICAgIDgwLjYxMDUrLTQu
MzQ4NiAgICAgICAgICAgNzcuODk2NistMC42MzM5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDM0OHgg
ZmFzdGVyCiAgIG9idmlvdXMtc2luay1wYXRob2xvZ3kgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTYuNjgyMistMC44MDYxICAgICA/ICAgICAxNi45NjU5Ky0wLjc3NzAgICAgICAgID8gbWln
aHQgYmUgMS4wMTcweCBzbG93ZXIKICAgb2J2aW91c2x5LWVsaWRhYmxlLW5ldy1vYmplY3QgICAg
ICAgICAgICAgICAgICAgICAxNC4zOTk5Ky0wLjMwMDUgICAgID8gICAgIDE1LjQ4NTIrLTEuMjIw
MiAgICAgICAgPyBtaWdodCBiZSAxLjA3NTR4IHNsb3dlcgogICBwbHVzLWJvb2xlYW4tYXJpdGgg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjEyNjYrLTAuMDk0MSAgICAgPyAgICAg
IDIuMjE5MistMC4zMDUxICAgICAgICA/IG1pZ2h0IGJlIDEuMDQzNXggc2xvd2VyCiAgIHBsdXMt
Ym9vbGVhbi1kb3VibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMjY3MystMC4w
Mzg4ICAgICAgICAgICAgMi4yNTY3Ky0wLjA0OTIgICAgICAgIAogICBwbHVzLWJvb2xlYW4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjk3MjYrLTAuMDY5NSAgICAgPyAg
ICAgIDIuMDEyMystMC4xNTc1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIwMXggc2xvd2VyCiAgIHBv
bHktY2hhaW4tYWNjZXNzLWRpZmZlcmVudC1wcm90b3R5cGVzLXNpbXBsZSAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjYxMTgrLTAuMzc2
NCAgICAgICAgICAgIDIuMzU2NistMC4wNDA1ICAgICAgICAgIG1pZ2h0IGJlIDEuMTA4M3ggZmFz
dGVyCiAgIHBvbHktY2hhaW4tYWNjZXNzLWRpZmZlcmVudC1wcm90b3R5cGVzICAgICAgICAgICAg
IDIuNDA0MistMC4xMDAyICAgICAgICAgICAgMi4zOTUzKy0wLjA5MTggICAgICAgIAogICBwb2x5
LWNoYWluLWFjY2Vzcy1zaW1wbGVyICAgICAgICAgICAgICAgICAgICAgICAgICAyLjQxNjIrLTAu
MDc2MiAgICAgICAgICAgIDIuMzY0MSstMC4wNzQ5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIyMHgg
ZmFzdGVyCiAgIHBvbHktY2hhaW4tYWNjZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDIuNDI4MystMC4wNzIyICAgICA/ICAgICAgMi42Nzc1Ky0wLjQwMjIgICAgICAgID8gbWln
aHQgYmUgMS4xMDI2eCBzbG93ZXIKICAgcG9seS1zdHJpY3RlcSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA0Ni4wNzYwKy0xLjk3MjUgICAgID8gICAgIDQ2LjE4MjErLTEuMjk0
OCAgICAgICAgPwogICBwb2x5bW9ycGhpYy1hcnJheS1jYWxsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxLjMxODMrLTAuMTQ1OSAgICAgPyAgICAgIDEuMzYzNystMC4zMjk1ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDM0NXggc2xvd2VyCiAgIHBvbHltb3JwaGljLWdldC1ieS1pZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEuOTkwMistMC4xMjUwICAgICA/ICAgICAgMi4xMjIxKy0w
LjQwNzMgICAgICAgID8gbWlnaHQgYmUgMS4wNjYzeCBzbG93ZXIKICAgcG9seW1vcnBoaWMtcHV0
LWJ5LWlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMy4xNjQ1Ky0wLjQ1ODcgICAgID8g
ICAgIDIzLjkzNzcrLTAuOTA1MCAgICAgICAgPyBtaWdodCBiZSAxLjAzMzR4IHNsb3dlcgogICBw
b2x5bW9ycGhpYy1wdXQtYnktdmFsLXdpdGgtc3RyaW5nICAgICAgICAgICAgICAgIDI0LjM4MDAr
LTAuNzI1OSAgICAgICAgICAgMjQuMzQ4OSstMS4xNzU1ICAgICAgICAKICAgcG9seW1vcnBoaWMt
cHV0LWJ5LXZhbC13aXRoLXN5bWJvbCAgICAgICAgICAgICAgICAyNC4zNTE2Ky0wLjYwMjQgICAg
ID8gICAgIDI1LjQ5MjArLTEuMjA5NyAgICAgICAgPyBtaWdodCBiZSAxLjA0Njh4IHNsb3dlcgog
ICBwb2x5bW9ycGhpYy1zdHJ1Y3R1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLjk5
ODMrLTAuMjM0OSAgICAgPyAgICAgMTIuNDk2MistMC40MzQxICAgICAgICA/IG1pZ2h0IGJlIDEu
MDQxNXggc2xvd2VyCiAgIHBvbHl2YXJpYW50LW1vbm9tb3JwaGljLWdldC1ieS1pZCAgICAgICAg
ICAgICAgICAgIDMuNDMwOCstMC4zOTk1ICAgICAgICAgICAgMy4xOTA1Ky0wLjEzNTEgICAgICAg
ICAgbWlnaHQgYmUgMS4wNzUzeCBmYXN0ZXIKICAgcHJldmVudC1leHRlbnNpb25zLWFuZC1kby13
b3JrICAgICAgICAgICAgICAgICAgICAxMi42NTQ1Ky0wLjMwMDQgICAgICAgICAgIDEyLjU2NzUr
LTAuMzAzNiAgICAgICAgCiAgIHByb3RvLWdldHRlci1hY2Nlc3MgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMTAuNDg0OCstMC4xMDc4ICAgICA/ICAgICAxMC42MjI2Ky0wLjM0OTQgICAg
ICAgID8gbWlnaHQgYmUgMS4wMTMxeCBzbG93ZXIKICAgcHJvdG90eXBlLWFjY2Vzcy13aXRoLW11
dGF0aW5nLXByb3RvdHlwZSAgICAgICAgICAgNC43NjI2Ky0wLjIxNzUgICAgID8gICAgICA0Ljc5
NjMrLTAuNTUzNyAgICAgICAgPwogICBwdXQtYnktaWQtcmVwbGFjZS1hbmQtdHJhbnNpdGlvbiAg
ICAgICAgICAgICAgICAgICA1LjQzNzYrLTAuMjcwOSAgICAgPyAgICAgIDUuNTk5OSstMC4yNzY3
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI5OHggc2xvd2VyCiAgIHB1dC1ieS1pZC1zbGlnaHRseS1w
b2x5bW9ycGhpYyAgICAgICAgICAgICAgICAgICAgIDIuNDY2MystMC4zMzUyICAgICA/ICAgICAg
Mi40NzA4Ky0wLjMzODYgICAgICAgID8KICAgcHV0LWJ5LWlkLXRyYW5zaXRpb24td2l0aC1pbmRl
eGluZy1oZWFkZXIgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxMi44ODg2Ky0wLjgwNjUgICAgICAgICAgIDEyLjg1ODQrLTAuNjQ1NSAgICAg
ICAgCiAgIHB1dC1ieS1pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDkuNzE5MCstMC40NjE1ICAgICAgICAgICAgOS4zMjgyKy0wLjQ0NjggICAgICAgICAgbWlnaHQg
YmUgMS4wNDE5eCBmYXN0ZXIKICAgcHV0LWJ5LXZhbC1kaXJlY3QgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMC4zODk1Ky0wLjAyNDYgICAgID8gICAgICAwLjM5OTcrLTAuMDQ1NSAg
ICAgICAgPyBtaWdodCBiZSAxLjAyNjF4IHNsb3dlcgogICBwdXQtYnktdmFsLWxhcmdlLWluZGV4
LWJsYW5rLWluZGV4aW5nLXR5cGUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNS4xODg2Ky0wLjE0MjEgICAgID8gICAgICA1LjMzNjkrLTAu
MTkxNiAgICAgICAgPyBtaWdodCBiZSAxLjAyODZ4IHNsb3dlcgogICBwdXQtYnktdmFsLW1hY2hp
bmUtaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjYxMDUrLTAuMTIwMSAgICAgPyAg
ICAgIDIuNzMzMSstMC4xNTM5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDQ3MHggc2xvd2VyCiAgIHB1
dC1ieS12YWwtd2l0aC1zdHJpbmctcmVwbGFjZS1hbmQtdHJhbnNpdGlvbiAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjY1MTQrLTAuMjEy
MyAgICAgPyAgICAgIDkuMjM5NystMC40MDEzICAgICAgICA/IG1pZ2h0IGJlIDEuMDY4MHggc2xv
d2VyCiAgIHB1dC1ieS12YWwtd2l0aC1zdHJpbmctc2xpZ2h0bHktcG9seW1vcnBoaWMgICAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMi41NTk3
Ky0wLjAzMDEgICAgID8gICAgICAyLjcyMjUrLTAuMjY5MSAgICAgICAgPyBtaWdodCBiZSAxLjA2
MzZ4IHNsb3dlcgogICBwdXQtYnktdmFsLXdpdGgtc3RyaW5nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDEwLjMxMzkrLTEuMzQwNSAgICAgICAgICAgIDkuNDU0MystMC40NjAyICAgICAgICAg
IG1pZ2h0IGJlIDEuMDkwOXggZmFzdGVyCiAgIHB1dC1ieS12YWwtd2l0aC1zeW1ib2wtcmVwbGFj
ZS1hbmQtdHJhbnNpdGlvbiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA5LjcwNjErLTEuMjU2NyAgICAgICAgICAgIDkuMjM1MystMC4yNjQ0
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDUxMHggZmFzdGVyCiAgIHB1dC1ieS12YWwtd2l0aC1zeW1i
b2wtc2xpZ2h0bHktcG9seW1vcnBoaWMgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMi42MTQ5Ky0wLjA1MTQgICAgICAgICAgICAyLjYwNjAr
LTAuMDQxNSAgICAgICAgCiAgIHB1dC1ieS12YWwtd2l0aC1zeW1ib2wgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDkuOTg3MystMC44Mzk1ICAgICAgICAgICAgOS45NjQyKy0wLjQ3MTcgICAg
ICAgIAogICByYXJlLW9zci1leGl0LW9uLWxvY2FsICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDEwLjIzNTUrLTEuMjAxNiAgICAgICAgICAgMTAuMDMzOCstMS42OTA3ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDIwMXggZmFzdGVyCiAgIHJheXRyYWNlLXdpdGgtZW1wdHktdHJ5LWNhdGNoICAgICAg
ICAgICAgICAgICAgICAgIDQuODg3MCstMC4zMDA2ICAgICA/ICAgICAgNS4xMjU0Ky0wLjUwMzgg
ICAgICAgID8gbWlnaHQgYmUgMS4wNDg4eCBzbG93ZXIKICAgcmF5dHJhY2Utd2l0aC10cnktY2F0
Y2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgNy43NDY3Ky0wLjM0MjQgICAgICAgICAgICA3
LjczMDMrLTAuNTI0MiAgICAgICAgCiAgIHJlZ2V4cC1leGVjICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMzIuNTk0NistMC4zODQ1ICAgICA/ICAgICAzMy40NjU1Ky0xLjU5
NjggICAgICAgID8gbWlnaHQgYmUgMS4wMjY3eCBzbG93ZXIKICAgcmVnZXhwLWxhc3QtaW5kZXgg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOC44MTA5Ky0wLjYzODYgICAgICAgICAg
ICA4LjUyNTgrLTAuMTE4NyAgICAgICAgICBtaWdodCBiZSAxLjAzMzR4IGZhc3RlcgogICByZWdl
eHAtbmVzdGVkLW5vbnplcm8tbWluLWNvdW50ZWQtcGFyZW5zICAgICAgICAgICAwLjI5OTErLTAu
MDE5NCAgICAgPyAgICAgIDAuMzAzMSstMC4wMTAwICAgICAgICA/IG1pZ2h0IGJlIDEuMDEzM3gg
c2xvd2VyCiAgIHJlZ2V4cC1wcm90b3R5cGUtaXMtbm90LWluc3RhbmNlICAgICAgICAgICAgICAg
ICAgIDAuNDU5MSstMC4wMjQyICAgICA/ICAgICAgMC41MzgwKy0wLjEwOTkgICAgICAgID8gbWln
aHQgYmUgMS4xNzE4eCBzbG93ZXIKICAgcmVnZXhwLXByb3RvdHlwZS1zZWFyY2gtb2JzZXJ2YWJs
ZS1zaWRlLWVmZmVjdHMgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMC43Mjc0Ky0wLjA1MzYgICAgID8gICAgICAwLjc0ODcrLTAuMDczMyAg
ICAgICAgPyBtaWdodCBiZSAxLjAyOTJ4IHNsb3dlcgogICByZWdleHAtcHJvdG90eXBlLXNlYXJj
aC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czIgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zNDc1Ky0wLjAzMTcgICAgID8gICAgICAwLjM3
MjUrLTAuMDYyNSAgICAgICAgPyBtaWdodCBiZSAxLjA3MTh4IHNsb3dlcgogICByZWdleHAtcHJv
dG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMDA2NCstMC4wNTIzICAgICA/
ICAgICAgMS4wOTkyKy0wLjE0MDggICAgICAgID8gbWlnaHQgYmUgMS4wOTIzeCBzbG93ZXIKICAg
cmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czIgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4zNjAyKy0w
LjAzMDQgICAgICAgICAgICAwLjM0MzIrLTAuMDA3MiAgICAgICAgICBtaWdodCBiZSAxLjA0OTR4
IGZhc3RlcgogICByZWdleHAtcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3Rz
My1mbGFncyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLjM2ODArLTAuMDIzNiAgICAgICAgICAgIDAuMzUwMSstMC4wMTMyICAgICAgICAg
IG1pZ2h0IGJlIDEuMDUxMnggZmFzdGVyCiAgIHJlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2
YWJsZS1zaWRlLWVmZmVjdHMzLWdsb2JhbCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAwLjM2OTErLTAuMDI2OCAgICAgICAgICAgIDAuMzY3
NSstMC4wMjYyICAgICAgICAKICAgcmVnZXhwLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNp
ZGUtZWZmZWN0czMtaWdub3JlQ2FzZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLjM3NDErLTAuMDM3NiAgICAgPyAgICAgIDAuMzk0OSst
MC4wNjQzICAgICAgICA/IG1pZ2h0IGJlIDEuMDU1Nnggc2xvd2VyCiAgIHJlZ2V4cC1wcm90b3R5
cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLW11bHRpbGluZSAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjM4NzQrLTAuMDM4
NiAgICAgPyAgICAgIDAuNDIwNystMC4xMzQ3ICAgICAgICA/IG1pZ2h0IGJlIDEuMDg1OXggc2xv
d2VyCiAgIHJlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzLXN0
aWNreSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwLjQzMDkrLTAuMTQ1NCAgICAgPyAgICAgIDAuNTUwMCstMC4yODkyICAgICAgICA/IG1p
Z2h0IGJlIDEuMjc2NXggc2xvd2VyCiAgIHJlZ2V4cC1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2YWJs
ZS1zaWRlLWVmZmVjdHMzLXVuaWNvZGUgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMC4zNTc1Ky0wLjAxODAgICAgID8gICAgICAwLjM3MzUr
LTAuMDMwNCAgICAgICAgPyBtaWdodCBiZSAxLjA0NDl4IHNsb3dlcgogICByZWdleHAtcHJvdG90
eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzNCAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjM5MjUrLTAuMDUyNiAgICAgICAg
ICAgIDAuMzczNCstMC4wMTE0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDUxMXggZmFzdGVyCiAgIHJl
Z2V4cC1wcm90b3R5cGUtdGVzdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0cyAgIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjU5OTgrLTAuMDU4
MyAgICAgICAgICAgIDAuNTk0MistMC4wMzU1ICAgICAgICAKICAgcmVnZXhwLXByb3RvdHlwZS10
ZXN0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMiAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjMzNTUrLTAuMDE2MyAgICAgPyAgICAgIDAu
MzQyOCstMC4wMjcyICAgICAgICA/IG1pZ2h0IGJlIDEuMDIxOXggc2xvd2VyCiAgIHJlZ2V4cC1z
ZXQtbGFzdC1pbmRleCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuNjA5NistMC44NTQx
ICAgICAgICAgICAgOS40OTkxKy0xLjA2MTYgICAgICAgICAgbWlnaHQgYmUgMS4wMTE2eCBmYXN0
ZXIKICAgcmVnaXN0ZXItcHJlc3N1cmUtZnJvbS1vc3IgICAgICAgICAgICAgICAgICAgICAgICAx
NS44NTkzKy0xLjUxMjYgICAgICAgICAgIDE1LjUyNDArLTAuNTI5NyAgICAgICAgICBtaWdodCBi
ZSAxLjAyMTZ4IGZhc3RlcgogICByZXBlYXQtbXVsdGktZ2V0LWJ5LW9mZnNldCAgICAgICAgICAg
ICAgICAgICAgICAgIDE3LjcwNTQrLTAuODk5MiAgICAgICAgICAgMTcuNDkyNSstMC4zOTg0ICAg
ICAgICAgIG1pZ2h0IGJlIDEuMDEyMnggZmFzdGVyCiAgIHJlc3QtcGFyYW1ldGVyLWFsbG9jYXRp
b24tZWxpbWluYXRpb24gICAgICAgICAgICAxNzIuMzgyNSstOC45MzE3ICAgICAgICAgIDE2Ny44
MjA3Ky0yLjU2OTggICAgICAgICAgbWlnaHQgYmUgMS4wMjcyeCBmYXN0ZXIKICAgcmVzdC1wYXJh
bWV0ZXItY29uc3RydWN0aW9uLXBlcmZvcm1hbmNlICAgICAgICAgICAxOC44NzYyKy0xLjI3NTUg
ICAgICAgICAgIDE4LjE0MDYrLTAuMjYxOCAgICAgICAgICBtaWdodCBiZSAxLjA0MDZ4IGZhc3Rl
cgogICByaWNoYXJkcy1lbXB0eS10cnktY2F0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgIDQ4
LjkwMjUrLTAuODg4OSAgICAgICAgICAgNDguMDgwMSstMC45NDU0ICAgICAgICAgIG1pZ2h0IGJl
IDEuMDE3MXggZmFzdGVyCiAgIHJpY2hhcmRzLXRyeS1jYXRjaCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyMDAuNjU5MystMTAuNjg0OCAgICA/ICAgIDIwMS41NjQ1Ky0xMC4wNjA5ICAg
ICAgID8KICAgc2NvcGVkLWFyZ3VtZW50cy1sZW5ndGggICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNi4yMzU2Ky0wLjI0MjkgICAgICAgICAgICA2LjEzMjUrLTAuMTEwNSAgICAgICAgICBtaWdo
dCBiZSAxLjAxNjh4IGZhc3RlcgogICBzY29wZWQtYXJndW1lbnRzLW92ZXJyaWRkZW4tbGVuZ3Ro
ICAgICAgICAgICAgICAgICA2LjIwMzgrLTAuMzExOSAgICAgICAgICAgIDUuOTAwMistMC4xMDEy
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDUxNXggZmFzdGVyCiAgIHNjb3BlZC1hcmd1bWVudHMtcG9z
c2libHktb3ZlcnJpZGRlbi1sZW5ndGggICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNi42MjU5Ky0wLjA0NDQgICAgID8gICAgICA2Ljc5Njcr
LTAuMzQ3MSAgICAgICAgPyBtaWdodCBiZSAxLjAyNTh4IHNsb3dlcgogICBzZWFsLWFuZC1kby13
b3JrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjUzOTQrLTAuMTg5MyAgICAg
PyAgICAgMTIuNTk4NCstMC40MTMyICAgICAgICA/CiAgIHNldC1mb3ItZWFjaCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuNzMxOSstMC40MDYzICAgICAgICAgICAgMy41
NzAzKy0wLjA0OTYgICAgICAgICAgbWlnaHQgYmUgMS4wNDUzeCBmYXN0ZXIKICAgc2V0LWZvci1v
ZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy4xMzQ4Ky0wLjE2ODgg
ICAgID8gICAgICA3LjE5NzMrLTAuMzAwMSAgICAgICAgPwogICBzZXR0ZXItcHJvdG90eXBlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjUyMTArLTAuMzIwNiAgICAgICAgICAg
IDQuNDA0MSstMC4wNDc3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI2NXggZmFzdGVyCiAgIHNldHRl
ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuODgyMCstMC4w
NzE1ICAgICA/ICAgICAgMi44ODIyKy0wLjAzMzMgICAgICAgID8KICAgc2ltcGxlLWFjdGl2YXRp
b24tZGVtbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMS40MTA2Ky0wLjczOTIgICAgID8g
ICAgIDIxLjkzMjUrLTAuNjkyMiAgICAgICAgPyBtaWdodCBiZSAxLjAyNDR4IHNsb3dlcgogICBz
aW1wbGUtZ2V0dGVyLWFjY2VzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE3LjE5MDEr
LTAuOTAyNiAgICAgICAgICAgMTYuNzM4NistMC41MTY0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDI3
MHggZmFzdGVyCiAgIHNpbXBsZS1wb2x5LWNhbGwtbmVzdGVkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDMuNzE5NystMC4wNzIzICAgICAgICAgICAgMy43MTg2Ky0wLjA2OTUgICAgICAgIAog
ICBzaW1wbGUtcG9seS1jYWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjMx
NzcrLTAuMTI5MyAgICAgICAgICAgIDEuMjAyMystMC4wMTY1ICAgICAgICAgIG1pZ2h0IGJlIDEu
MDk2MHggZmFzdGVyCiAgIHNpbXBsZS1yZWdleHAtZXhlYy1mb2xkaW5nLWZhaWwgICAgICAgICAg
ICAgICAgICAgIDMuMDA4MSstMC4yNjQwICAgICAgICAgICAgMi44OTYzKy0wLjE0NDUgICAgICAg
ICAgbWlnaHQgYmUgMS4wMzg2eCBmYXN0ZXIKICAgc2ltcGxlLXJlZ2V4cC1leGVjLWZvbGRpbmcg
ICAgICAgICAgICAgICAgICAgICAgICAxNi4zNzY1Ky0wLjM5NzQgICAgID8gICAgIDE2LjQxMjkr
LTAuNTIyNCAgICAgICAgPwogICBzaW1wbGUtcmVnZXhwLXRlc3QtZm9sZGluZy1mYWlsLXdpdGgt
aG9pc3RlZC1yZWdleHAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOC4xMTk3Ky0wLjgyMDkgICAgICAgICAgICA4LjA4NTArLTAuODk2NiAg
ICAgICAgCiAgIHNpbXBsZS1yZWdleHAtdGVzdC1mb2xkaW5nLWZhaWwgICAgICAgICAgICAgICAg
ICAgMTQuNTAzNSstMC40OTE3ICAgICA/ICAgICAxNS4wMDg1Ky0wLjY0MjQgICAgICAgID8gbWln
aHQgYmUgMS4wMzQ4eCBzbG93ZXIKICAgc2ltcGxlLXJlZ2V4cC10ZXN0LWZvbGRpbmctd2l0aC1o
b2lzdGVkLXJlZ2V4cCAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDEwLjAwNjUrLTAuMzk3NyAgICAgPyAgICAgMTAuMzg3MSstMC44MTI5ICAg
ICAgICA/IG1pZ2h0IGJlIDEuMDM4MHggc2xvd2VyCiAgIHNpbXBsZS1yZWdleHAtdGVzdC1mb2xk
aW5nICAgICAgICAgICAgICAgICAgICAgICAgMTUuNjU4NSstMC41ODcwICAgICAgICAgICAxNS40
ODI1Ky0wLjUwMjEgICAgICAgICAgbWlnaHQgYmUgMS4wMTE0eCBmYXN0ZXIKICAgc2luLWJvb2xl
YW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi4yMDY1Ky0wLjIwMTYg
ICAgID8gICAgICA2LjMwMDErLTAuMjY5MyAgICAgICAgPyBtaWdodCBiZSAxLjAxNTF4IHNsb3dl
cgogICBzaW5nbGV0b24tc2NvcGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ5
LjUxMjMrLTEuOTY0NCAgICAgPyAgICAgNTAuNDIwNCstMi4wMzkzICAgICAgICA/IG1pZ2h0IGJl
IDEuMDE4M3ggc2xvd2VyCiAgIHNpbmstZnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDUuMDAxOSstMC41MjI5ICAgICA/ICAgICAgNS4yOTU1Ky0wLjQzMjQgICAg
ICAgID8gbWlnaHQgYmUgMS4wNTg3eCBzbG93ZXIKICAgc2luay1odWdlLWFjdGl2YXRpb24gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxMS44OTA4Ky0wLjQ3MDMgICAgICAgICAgIDExLjc3
NzMrLTAuMzAwMCAgICAgICAgCiAgIHNpbmthYmxlLW5ldy1vYmplY3QtZGFnICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMzQuODY2MistMC4yODA2ICAgICAgICAgICAzNC44MTAyKy0wLjYxMjEg
ICAgICAgIAogICBzaW5rYWJsZS1uZXctb2JqZWN0LXRha2VuICAgICAgICAgICAgICAgICAgICAg
ICAgIDI5Ljg0NTUrLTAuNTU0NyAgICAgPyAgICAgMzEuMDE5NystMS4yNjgwICAgICAgICA/IG1p
Z2h0IGJlIDEuMDM5M3ggc2xvd2VyCiAgIHNpbmthYmxlLW5ldy1vYmplY3QgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTcuNTkxMCstMS45Njk5ICAgICAgICAgICAxNi40OTYxKy0wLjcx
OTkgICAgICAgICAgbWlnaHQgYmUgMS4wNjY0eCBmYXN0ZXIKICAgc2xvdy1hcnJheS1wcm9maWxl
LWNvbnZlcmdlbmNlICAgICAgICAgICAgICAgICAgICAgMi4yNzA2Ky0wLjEwMDYgICAgID8gICAg
ICAyLjI3MzIrLTAuMDUyMyAgICAgICAgPwogICBzbG93LWNvbnZlcmdlbmNlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAyLjYzODUrLTAuNjU3NSAgICAgICAgICAgIDIuNDkwNist
MC4xMjE3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDU5NHggZmFzdGVyCiAgIHNsb3ctdGVybmFyaWVz
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIuNzk4MSstMS4wNzg4ICAgICAg
ICAgICAxMi40Nzg3Ky0wLjE5ODEgICAgICAgICAgbWlnaHQgYmUgMS4wMjU2eCBmYXN0ZXIKICAg
c29ydGluZy1iZW5jaG1hcmsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNy42Njgy
Ky0xLjAzNDYgICAgICAgICAgIDE3LjUzOTkrLTAuODg5NyAgICAgICAgCiAgIHNwYXJzZS1jb25k
aXRpb25hbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEuMTg0OSstMC4wNjUxICAg
ICA/ICAgICAgMS4xODgwKy0wLjA0OTkgICAgICAgID8KICAgc3BhcnNlLXNldCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0OS4wNDk3Ky0wLjg0MTYgICAgID8gICAgIDQ5
LjU4ODgrLTEuNjc2MyAgICAgICAgPyBtaWdodCBiZSAxLjAxMTB4IHNsb3dlcgogICBzcGxpY2Ut
dG8tcmVtb3ZlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzLjkxNDIrLTAuNDc4
NSAgICAgPyAgICAgMTQuMTQyNSstMC40NTY2ICAgICAgICA/IG1pZ2h0IGJlIDEuMDE2NHggc2xv
d2VyCiAgIHNwcmVhZC1sYXJnZS1hcnJheSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OTUuNjk5MystMC42MjUyICAgICAgICAgICA5NS4wODA2Ky0xLjAxNzAgICAgICAgIAogICBzcHJl
YWQtc21hbGwtYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjU2Ljg1MjQrLTEu
NzM2OCAgICAgPyAgICAyNTcuMDk1NistMS4yNDc3ICAgICAgICA/CiAgIHN0cmNhdC1jb25zdCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuNTAzMCstMC4zNjk0ICAgICAg
ICAgICAgNS4zNTIwKy0wLjE4MzMgICAgICAgICAgbWlnaHQgYmUgMS4wMjgyeCBmYXN0ZXIKICAg
c3RyY2F0LWxlbmd0aC1jb25zdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNS4zMjQy
Ky0wLjA5NDEgICAgID8gICAgICA1LjQxNDIrLTAuMjMxOSAgICAgICAgPyBtaWdodCBiZSAxLjAx
Njl4IHNsb3dlcgogICBzdHJpY3Qtb3NyLWVudHJ5ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA4LjU1MjYrLTAuMzk0NiAgICAgPyAgICAgIDguNjA1MSstMC42NjUxICAgICAgICA/
CiAgIHN0cmluZy1hZGQtY29uc3RhbnQtZm9sZGluZyAgICAgICAgICAgICAgICAgICAgICAxNTYu
ODQzNSstMS42NTM4ICAgICA/ICAgIDE1OS43NzU2Ky01LjEwMDYgICAgICAgID8gbWlnaHQgYmUg
MS4wMTg3eCBzbG93ZXIKICAgc3RyaW5nLWNoYXItY29kZS1hdCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxMy42OTQzKy0wLjMwNzkgICAgID8gICAgIDE0LjIxMzUrLTAuMjUyNSAgICAg
ICAgPyBtaWdodCBiZSAxLjAzNzl4IHNsb3dlcgogICBzdHJpbmctY29uY2F0LW9iamVjdCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxLjg0NjYrLTAuMDYzOSAgICAgPyAgICAgIDIuMDI0
MistMC4zNjg4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDk2Mnggc2xvd2VyCiAgIHN0cmluZy1jb25j
YXQtcGFpci1vYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgIDEuOTQzMSstMC4xNTMzICAg
ICAgICAgICAgMS44NTk1Ky0wLjE0NzkgICAgICAgICAgbWlnaHQgYmUgMS4wNDUweCBmYXN0ZXIK
ICAgc3RyaW5nLWNvbmNhdC1wYWlyLXNpbXBsZSAgICAgICAgICAgICAgICAgICAgICAgICAgMi44
NjQ0Ky0wLjE1ODQgICAgICAgICAgICAyLjgxNzYrLTAuMTM1OSAgICAgICAgICBtaWdodCBiZSAx
LjAxNjZ4IGZhc3RlcgogICBzdHJpbmctY29uY2F0LXNpbXBsZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA4LjEwODgrLTAuMzEzMiAgICAgICAgICAgIDguMDQzMystMC41NTcyICAgICAg
ICAKICAgc3RyaW5nLWNvbnMtcmVwZWF0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
NS43MTI4Ky0wLjE2ODMgICAgICAgICAgICA1LjY3ODYrLTAuMjc5OCAgICAgICAgCiAgIHN0cmlu
Zy1jb25zLXRvd2VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNDc4OSstMC4x
ODU3ICAgICA/ICAgICAgNC41MzMzKy0wLjMxOTUgICAgICAgID8gbWlnaHQgYmUgMS4wMTIxeCBz
bG93ZXIKICAgc3RyaW5nLWVxdWFsaXR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxNS43NDUwKy0wLjU1MTcgICAgICAgICAgIDE1LjY1MTcrLTAuNjczNiAgICAgICAgCiAgIHN0
cmluZy1mcm9tLWNoYXItY29kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuODM3Myst
MC4zMzA2ICAgICA/ICAgICAgNS45NjA0Ky0wLjM3MzkgICAgICAgID8gbWlnaHQgYmUgMS4wMjEx
eCBzbG93ZXIKICAgc3RyaW5nLWdldC1ieS12YWwtYmlnLWNoYXIgICAgICAgICAgICAgICAgICAg
ICAgICAgNC4zMzgwKy0wLjQwOTkgICAgICAgICAgICA0LjI2MjMrLTAuMDkxNSAgICAgICAgICBt
aWdodCBiZSAxLjAxNzh4IGZhc3RlcgogICBzdHJpbmctZ2V0LWJ5LXZhbC1vdXQtb2YtYm91bmRz
LWluc2FuZSAgICAgICAgICAgICAzLjcyNzcrLTAuMjgwMiAgICAgPyAgICAgIDMuODMzNCstMC4z
MTIzICAgICAgICA/IG1pZ2h0IGJlIDEuMDI4NHggc2xvd2VyCiAgIHN0cmluZy1nZXQtYnktdmFs
LW91dC1vZi1ib3VuZHMgICAgICAgICAgICAgICAgICAgIDQuMDkyOCstMC4yODA2ICAgICAgICAg
ICAgMy45NTc2Ky0wLjIxODEgICAgICAgICAgbWlnaHQgYmUgMS4wMzQyeCBmYXN0ZXIKICAgc3Ry
aW5nLWdldC1ieS12YWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS45MTUxKy0w
LjA3OTAgICAgICAgICAgICAxLjg2MjcrLTAuMDI5MiAgICAgICAgICBtaWdodCBiZSAxLjAyODF4
IGZhc3RlcgogICBzdHJpbmctaGFzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxLjkxNjArLTAuMDIxNCAgICAgICAgICAgIDEuOTA4NystMC4wNjM1ICAgICAgICAKICAg
c3RyaW5nLWxvbmctaWRlbnQtZXF1YWxpdHkgICAgICAgICAgICAgICAgICAgICAgICAxMy4wMTA5
Ky0wLjYxNjQgICAgID8gICAgIDEzLjI1OTYrLTAuNjQzMiAgICAgICAgPyBtaWdodCBiZSAxLjAx
OTF4IHNsb3dlcgogICBzdHJpbmctb3V0LW9mLWJvdW5kcyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA5LjQ3ODIrLTAuMjQ3NSAgICAgPyAgICAgIDkuNzgwMystMC42MDk3ICAgICAgICA/
IG1pZ2h0IGJlIDEuMDMxOXggc2xvd2VyCiAgIHN0cmluZy1wcm90b3R5cGUtc2VhcmNoLW9ic2Vy
dmFibGUtc2lkZS1lZmZlY3RzICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAuOTA2NystMC4xNjY5ICAgICAgICAgICAgMC44MDUwKy0wLjAy
NDIgICAgICAgICAgbWlnaHQgYmUgMS4xMjY0eCBmYXN0ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1z
ZWFyY2gtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMyICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNDQzOCstMC4wNTE5ICAgICAgICAgICAg
MC40MDM3Ky0wLjAxODEgICAgICAgICAgbWlnaHQgYmUgMS4wOTk0eCBmYXN0ZXIKICAgc3RyaW5n
LXByb3RvdHlwZS1zZWFyY2gtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHMzICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMzg4MystMC4wMTA2
ICAgICA/ICAgICAgMC4zOTMzKy0wLjAxNjAgICAgICAgID8gbWlnaHQgYmUgMS4wMTI5eCBzbG93
ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zZWFyY2gtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHM0ICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAu
Mzk4NCstMC4wMzMzICAgICA/ICAgICAgMC40NjQ4Ky0wLjEzMDcgICAgICAgID8gbWlnaHQgYmUg
MS4xNjY2eCBzbG93ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUt
ZWZmZWN0cyAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxLjIzOTQrLTAuMjQ4NSAgICAgICAgICAgIDEuMjAxMystMC4xNzI5ICAgICAgICAg
IG1pZ2h0IGJlIDEuMDMxN3ggZmFzdGVyCiAgIHN0cmluZy1wcm90b3R5cGUtc3BsaXQtb2JzZXJ2
YWJsZS1zaWRlLWVmZmVjdHMyICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAuNDQ2OSstMC4wNDg5ICAgICA/ICAgICAgMC40Nzc4Ky0wLjEx
NjAgICAgICAgID8gbWlnaHQgYmUgMS4wNjkxeCBzbG93ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1z
cGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtZmxhZ3MgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC40MjI1Ky0wLjAyNzMgICAgID8g
ICAgICAwLjU2MjUrLTAuMjcyNiAgICAgICAgPyBtaWdodCBiZSAxLjMzMTR4IHNsb3dlcgogICBz
dHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1lZmZlY3RzMy1nbG9iYWwgICAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC40
NDg1Ky0wLjA2MTEgICAgICAgICAgICAwLjQ0MzErLTAuMDMyNyAgICAgICAgICBtaWdodCBiZSAx
LjAxMjF4IGZhc3RlcgogICBzdHJpbmctcHJvdG90eXBlLXNwbGl0LW9ic2VydmFibGUtc2lkZS1l
ZmZlY3RzMy1pZ25vcmVDYXNlICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAuNDM5MSstMC4wMzE1ICAgICAgICAgICAgMC40MjExKy0wLjAy
MzEgICAgICAgICAgbWlnaHQgYmUgMS4wNDI5eCBmYXN0ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1z
cGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtbXVsdGlsaW5lICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNDI4NCstMC4wMzAzICAg
ICA/ICAgICAgMC40NDYzKy0wLjAzOTUgICAgICAgID8gbWlnaHQgYmUgMS4wNDE4eCBzbG93ZXIK
ICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNpZGUtZWZmZWN0czMtc3RpY2t5
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAuNDg1MCstMC4xMjEyICAgICAgICAgICAgMC40MTMxKy0wLjAxMzggICAgICAgICAgbWlnaHQg
YmUgMS4xNzQxeCBmYXN0ZXIKICAgc3RyaW5nLXByb3RvdHlwZS1zcGxpdC1vYnNlcnZhYmxlLXNp
ZGUtZWZmZWN0czMtdW5pY29kZSAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAwLjQ0MTMrLTAuMDI2NyAgICAgICAgICAgIDAuNDIyOCstMC4w
Mjk5ICAgICAgICAgIG1pZ2h0IGJlIDEuMDQzN3ggZmFzdGVyCiAgIHN0cmluZy1wcm90b3R5cGUt
c3BsaXQtb2JzZXJ2YWJsZS1zaWRlLWVmZmVjdHM0ICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuNDUyOCstMC4wNDMxICAgICA/ICAgICAg
MC40NjA2Ky0wLjAzNTkgICAgICAgID8gbWlnaHQgYmUgMS4wMTcxeCBzbG93ZXIKICAgc3RyaW5n
LXJlcGVhdC1hcml0aCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS44NzE5Ky0wLjc0
OTQgICAgICAgICAgIDE5LjcwODMrLTEuMDE1MyAgICAgICAgCiAgIHN0cmluZy1yZXBlYXQtbm90
LXJlc29sdmluZy1maXhlZCAgICAgICAgICAgICAgICAgIDIuNzU1NystMC4wODc5ICAgICAgICAg
ICAgMi43Mzc1Ky0wLjExMDIgICAgICAgIAogICBzdHJpbmctcmVwZWF0LW5vdC1yZXNvbHZpbmct
bm8taW5saW5lICAgICAgICAgICAgICAzLjM5OTMrLTAuMjI2MSAgICAgICAgICAgIDMuMjQ1OSst
MC4xMzIyICAgICAgICAgIG1pZ2h0IGJlIDEuMDQ3M3ggZmFzdGVyCiAgIHN0cmluZy1yZXBlYXQt
bm90LXJlc29sdmluZyAgICAgICAgICAgICAgICAgICAgICAgIDMuNjQ2NystMC4yNjUwICAgICAg
ICAgICAgMy41MTE0Ky0wLjI1OTYgICAgICAgICAgbWlnaHQgYmUgMS4wMzg1eCBmYXN0ZXIKICAg
c3RyaW5nLXJlcGVhdC1yZXNvbHZpbmctZml4ZWQgICAgICAgICAgICAgICAgICAgICAyMS45ODg2
Ky0wLjY1MjkgICAgICAgICAgIDIxLjQ2MDcrLTAuNzcwNyAgICAgICAgICBtaWdodCBiZSAxLjAy
NDZ4IGZhc3RlcgogICBzdHJpbmctcmVwZWF0LXJlc29sdmluZy1uby1pbmxpbmUgICAgICAgICAg
ICAgICAgIDI5Ljc5NjkrLTEuNTAzNyAgICAgICAgICAgMjguMjE4OSstMC4zMzA3ICAgICAgICAg
IG1pZ2h0IGJlIDEuMDU1OXggZmFzdGVyCiAgIHN0cmluZy1yZXBlYXQtcmVzb2x2aW5nICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMjkuNDAyMSstMS4wNTQzICAgICAgICAgICAyOS4yMjM0Ky0x
LjMxODggICAgICAgIAogICBzdHJpbmctcmVwZWF0LXNpbmdsZS1ub3QtcmVzb2x2aW5nICAgICAg
ICAgICAgICAgICA2LjkyMjUrLTAuODEyNyAgICAgICAgICAgIDYuNzMxNistMC41OTIzICAgICAg
ICAgIG1pZ2h0IGJlIDEuMDI4NHggZmFzdGVyCiAgIHN0cmluZy1yZXBlYXQtc2luZ2xlLXJlc29s
dmluZyAgICAgICAgICAgICAgICAgICAgIDcuMDc1NistMC42MzU5ICAgICAgICAgICAgNi45NTk3
Ky0wLjY4MDMgICAgICAgICAgbWlnaHQgYmUgMS4wMTY2eCBmYXN0ZXIKICAgc3RyaW5nLXJlcGVh
dC1zbWFsbC1ub3QtcmVzb2x2aW5nICAgICAgICAgICAgICAgICAgMi45NjAwKy0wLjM1NjcgICAg
ICAgICAgICAyLjc0MzArLTAuMTUzNyAgICAgICAgICBtaWdodCBiZSAxLjA3OTF4IGZhc3Rlcgog
ICBzdHJpbmctcmVwZWF0LXNtYWxsLXJlc29sdmluZyAgICAgICAgICAgICAgICAgICAgIDI5LjU0
MzgrLTEuMTI2NCAgICAgPyAgICAgMzAuNjI3NystMS45MzgwICAgICAgICA/IG1pZ2h0IGJlIDEu
MDM2N3ggc2xvd2VyCiAgIHN0cmluZy1yZXBsYWNlLWVtcHR5ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDguNDk0NistMC4yNDE1ICAgICAgICAgICAgOC4wNTUyKy0wLjI1MzQgICAgICAg
ICAgbWlnaHQgYmUgMS4wNTQ1eCBmYXN0ZXIKICAgc3RyaW5nLXJlcGxhY2UtZ2VuZXJpYyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA0Ny4wNjMwKy0zLjk2NDcgICAgICAgICAgIDQzLjI4MTUr
LTAuNDU3NCAgICAgICAgICBtaWdodCBiZSAxLjA4NzR4IGZhc3RlcgogICBzdHJpbmctcmVwbGFj
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjQxNjYrLTAuNjM3MiAgICAg
PyAgICAgIDguNDU1MystMC4yMzA1ICAgICAgICA/CiAgIHN0cmluZy1yb3BlLXdpdGgtb2JqZWN0
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYuNjQzOCstMC44MTY3ICAgICAgICAgICAxNi4y
ODgzKy0wLjc2NDcgICAgICAgICAgbWlnaHQgYmUgMS4wMjE4eCBmYXN0ZXIKICAgc3RyaW5nLXN1
YiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzNC40NTcyKy0wLjk0MjUg
ICAgICAgICAgIDMyLjkwODArLTAuOTQxMSAgICAgICAgICBtaWdodCBiZSAxLjA0NzF4IGZhc3Rl
cgogICBzdHJpbmctdGVzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAy
LjY5MDMrLTAuMDk5NyAgICAgPyAgICAgIDIuNzY0NystMC4xMjczICAgICAgICA/IG1pZ2h0IGJl
IDEuMDI3N3ggc2xvd2VyCiAgIHN0cmluZy10cmFuc2NvZGluZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMTYuMjI2MSstMS4wMTkyICAgICAgICAgICAxNS4zMjIzKy0wLjcxMDcgICAg
ICAgICAgbWlnaHQgYmUgMS4wNTkweCBmYXN0ZXIKICAgc3RyaW5nLXZhci1lcXVhbGl0eSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyNi43NDEwKy0xLjA0OTMgICAgID8gICAgIDI3Ljgz
MzUrLTAuNjQyNiAgICAgICAgPyBtaWdodCBiZSAxLjA0MDl4IHNsb3dlcgogICBzdHJpbmdhbGxv
YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgwLjcxNjMrLTMuMTI5MyAg
ICAgICAgICAgNzkuNDgxNistMS4zNjA0ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE1NXggZmFzdGVy
CiAgIHN0cnVjdHVyZS1ob2lzdC1vdmVyLXRyYW5zaXRpb25zICAgICAgICAgICAgICAgICAgIDIu
MjU3NystMC4xMjIwICAgICAgICAgICAgMi4xODY4Ky0wLjA5NTUgICAgICAgICAgbWlnaHQgYmUg
MS4wMzI0eCBmYXN0ZXIKICAgc3Vic3RyaW5nLWNvbmNhdC13ZWlyZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAzMi45MDUwKy0xLjEzMTYgICAgICAgICAgIDMyLjQxMzgrLTAuMjczMSAgICAg
ICAgICBtaWdodCBiZSAxLjAxNTJ4IGZhc3RlcgogICBzdWJzdHJpbmctY29uY2F0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDM1LjExNDkrLTAuNjIyMSAgICAgPyAgICAgMzYuMzYx
NSstMi4wMDMzICAgICAgICA/IG1pZ2h0IGJlIDEuMDM1NXggc2xvd2VyCiAgIHN1YnN0cmluZyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDEuNDcyNistMC40OTU0ICAg
ICAgICAgICA0MS4yMzY1Ky0wLjQ3MTQgICAgICAgIAogICBzdXBlci1nZXQtYnktaWQtd2l0aC10
aGlzLW1vbm9tb3JwaGljICAgICAgICAgICAgIDIzLjc1ODArLTAuNzAzMiAgICAgPyAgICAgMjMu
NzYwNystMC40NDY3ICAgICAgICA/CiAgIHN1cGVyLWdldC1ieS1pZC13aXRoLXRoaXMtcG9seW1v
cnBoaWMgICAgICAgICAgICAgMjIuNDM5OCstMC45NzEyICAgICAgICAgICAyMS44NzIxKy0wLjQ4
ODQgICAgICAgICAgbWlnaHQgYmUgMS4wMjYweCBmYXN0ZXIKICAgc3VwZXItZ2V0LWJ5LXZhbC13
aXRoLXRoaXMtbW9ub21vcnBoaWMgICAgICAgICAgICAyNC42NTI4Ky0wLjU0MzMgICAgID8gICAg
IDI1LjYyNTgrLTEuNTc2MSAgICAgICAgPyBtaWdodCBiZSAxLjAzOTV4IHNsb3dlcgogICBzdXBl
ci1nZXQtYnktdmFsLXdpdGgtdGhpcy1wb2x5bW9ycGhpYyAgICAgICAgICAgIDIyLjc1MTUrLTAu
NTkwNiAgICAgPyAgICAgMjMuMDg3NCstMC4zODIzICAgICAgICA/IG1pZ2h0IGJlIDEuMDE0OHgg
c2xvd2VyCiAgIHN3aXRjaC1jaGFyLWNvbnN0YW50ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDIuMDA4NSstMC4xNjMyICAgICA/ICAgICAgMi4xODk0Ky0wLjQ5MDQgICAgICAgID8gbWln
aHQgYmUgMS4wOTAxeCBzbG93ZXIKICAgc3dpdGNoLWNoYXIgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNC43OTE3Ky0wLjM5ODIgICAgICAgICAgICA0LjYyMzcrLTAuMzEx
NSAgICAgICAgICBtaWdodCBiZSAxLjAzNjN4IGZhc3RlcgogICBzd2l0Y2gtY29uc3RhbnQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjEwMTQrLTAuMTI2NyAgICAgPyAgICAg
IDQuMTIwOSstMC4xMDM4ICAgICAgICA/CiAgIHN3aXRjaC1zdHJpbmctYmFzaWMtYmlnLXZhciAg
ICAgICAgICAgICAgICAgICAgICAgMTMuNDI2MCstMC4zMDg4ICAgICAgICAgICAxMy4yMTUwKy0w
LjI1MjIgICAgICAgICAgbWlnaHQgYmUgMS4wMTYweCBmYXN0ZXIKICAgc3dpdGNoLXN0cmluZy1i
YXNpYy1iaWcgICAgICAgICAgICAgICAgICAgICAgICAgICAxMS42Mzg0Ky0wLjI5ODMgICAgID8g
ICAgIDExLjk4NzgrLTAuNDY0NiAgICAgICAgPyBtaWdodCBiZSAxLjAzMDB4IHNsb3dlcgogICBz
d2l0Y2gtc3RyaW5nLWJhc2ljLXZhciAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjg0NzEr
LTAuMTk2OSAgICAgPyAgICAgMTMuMTMzMCstMC40NDA1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDIy
M3ggc2xvd2VyCiAgIHN3aXRjaC1zdHJpbmctYmFzaWMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTEuMDk1MCstMC4yMDQ1ICAgICA/ICAgICAxMS43OTQ2Ky0wLjc3MDIgICAgICAgID8g
bWlnaHQgYmUgMS4wNjMxeCBzbG93ZXIKICAgc3dpdGNoLXN0cmluZy1iaWctbGVuZ3RoLXRvd2Vy
LXZhciAgICAgICAgICAgICAgICAxOS4yMjE2Ky0wLjkwMjMgICAgICAgICAgIDE4LjU1NTYrLTAu
ODk5MiAgICAgICAgICBtaWdodCBiZSAxLjAzNTl4IGZhc3RlcgogICBzd2l0Y2gtc3RyaW5nLWxl
bmd0aC10b3dlci12YXIgICAgICAgICAgICAgICAgICAgIDEzLjUxMDQrLTAuNDUwNCAgICAgPyAg
ICAgMTMuODY5MystMC41MjU1ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI2Nnggc2xvd2VyCiAgIHN3
aXRjaC1zdHJpbmctbGVuZ3RoLXRvd2VyICAgICAgICAgICAgICAgICAgICAgICAgMTEuMTMyNist
MC40NDE0ICAgICAgICAgICAxMS4wMjk4Ky0wLjIzODkgICAgICAgIAogICBzd2l0Y2gtc3RyaW5n
LXNob3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLjE3MjArLTAuNDI3MCAgICAg
ICAgICAgMTEuMDExOCstMC40MzY2ICAgICAgICAgIG1pZ2h0IGJlIDEuMDE0NXggZmFzdGVyCiAg
IHN3aXRjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuNjkz
NystMC4zNjU2ICAgICAgICAgICAgNS42MTMzKy0wLjQxNDUgICAgICAgICAgbWlnaHQgYmUgMS4w
MTQzeCBmYXN0ZXIKICAgc3dpdGNoaW5nLXNpemUtY2xhc3NlcyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA0Mi4xMjc5Ky0wLjUwMzUgICAgID8gICAgIDQyLjIwMTMrLTAuNDI4NSAgICAgICAg
PwogICBzeW1ib2wtdG9zdHJpbmd0YWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAy
LjgwNTcrLTAuMjMwMCAgICAgICAgICAgIDIuNjMwOSstMC4wNDIxICAgICAgICAgIG1pZ2h0IGJl
IDEuMDY2NHggZmFzdGVyCiAgIHRhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNjcuNzk0MystMi4yMzI3ICAgICA/ICAgICA2OC4wMDM1Ky0yLjk0NjEgICAg
ICAgID8KICAgdGVhci1vZmYtYXJndW1lbnRzLXNpbXBsZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgMi4yMjI2Ky0wLjEwMDkgICAgICAgICAgICAyLjE4NjYrLTAuMTM0NiAgICAgICAgICBtaWdo
dCBiZSAxLjAxNjV4IGZhc3RlcgogICB0ZWFyLW9mZi1hcmd1bWVudHMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAyLjk4NjErLTAuMTk1NSAgICAgICAgICAgIDIuOTQ4OCstMC4xMzE0
ICAgICAgICAgIG1pZ2h0IGJlIDEuMDEyN3ggZmFzdGVyCiAgIHRlbXBvcmFsLXN0cnVjdHVyZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAuNzE4MCstMC44MzEzICAgICA/ICAgICAx
MC45MzQxKy0wLjQ5MDcgICAgICAgID8gbWlnaHQgYmUgMS4wMjAyeCBzbG93ZXIKICAgdG8taW50
MzItYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi43MTEyKy0wLjMw
ODMgICAgICAgICAgIDEyLjYyOTIrLTAuMjI4MiAgICAgICAgCiAgIHRvLWxvd2VyLWNhc2UgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDAuNDQ5MSstMy44NzE5ICAgICAgICAg
ICA5OC44MTIzKy0xLjQwNjcgICAgICAgICAgbWlnaHQgYmUgMS4wMTY2eCBmYXN0ZXIKICAgdG8t
bnVtYmVyLWNvbnN0cnVjdG9yLW51bWJlci1zdHJpbmctbnVtYmVyLXN0cmluZyAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjU1NDkrLTAu
MTQyMyAgICAgICAgICAgIDMuNTEzNystMC4zNzAyICAgICAgICAgIG1pZ2h0IGJlIDEuMDExN3gg
ZmFzdGVyCiAgIHRvLW51bWJlci1jb25zdHJ1Y3Rvci1vbmx5LW51bWJlciAgICAgICAgICAgICAg
ICAgIDAuNjcwMCstMC4wMzg4ICAgICA/ICAgICAgMC43NjA4Ky0wLjIwNTUgICAgICAgID8gbWln
aHQgYmUgMS4xMzU2eCBzbG93ZXIKICAgdG8tbnVtYmVyLWNvbnN0cnVjdG9yLW9ubHktc3RyaW5n
ICAgICAgICAgICAgICAgICAgMS42NDQxKy0wLjA1ODUgICAgID8gICAgICAxLjY3MDcrLTAuMDY2
NiAgICAgICAgPyBtaWdodCBiZSAxLjAxNjJ4IHNsb3dlcgogICB0by1udW1iZXItY29uc3RydWN0
b3Itc3RyaW5nLW51bWJlci1zdHJpbmctbnVtYmVyICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMuMjUxMSstMC4yNTI5ICAgICAgICAgICAg
Mi45NTk5Ky0wLjA0NzkgICAgICAgICAgbWlnaHQgYmUgMS4wOTg0eCBmYXN0ZXIKICAgdG8tbnVt
YmVyLW51bWJlci1zdHJpbmctbnVtYmVyLXN0cmluZyAgICAgICAgICAgICAgMy4xNzMxKy0wLjM3
OTMgICAgICAgICAgICAyLjk2ODgrLTAuMDQ2OCAgICAgICAgICBtaWdodCBiZSAxLjA2ODh4IGZh
c3RlcgogICB0by1udW1iZXItb25seS1udW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLjYyMjgrLTAuMDU5MyAgICAgICAgICAgIDAuNTkzMistMC4wMjA0ICAgICAgICAgIG1pZ2h0
IGJlIDEuMDQ5OXggZmFzdGVyCiAgIHRvLW51bWJlci1vbmx5LXN0cmluZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDEuNjU1OCstMC4wOTg0ICAgICAgICAgICAgMS42MTY1Ky0wLjA2MjAg
ICAgICAgICAgbWlnaHQgYmUgMS4wMjQzeCBmYXN0ZXIKICAgdG8tbnVtYmVyLXN0cmluZy1udW1i
ZXItc3RyaW5nLW51bWJlciAgICAgICAgICAgICAgMy4xNTExKy0wLjE4ODEgICAgICAgICAgICAy
Ljk1NTkrLTAuMDQ4NCAgICAgICAgICBtaWdodCBiZSAxLjA2NjF4IGZhc3RlcgogICB0cnktY2F0
Y2gtZ2V0LWJ5LXZhbC1jbG9uZWQtYXJndW1lbnRzICAgICAgICAgICAgICAzLjQ4ODgrLTAuMTcx
NiAgICAgICAgICAgIDMuNDY5MSstMC4xNjY2ICAgICAgICAKICAgdHJ5LWNhdGNoLWdldC1ieS12
YWwtZGlyZWN0LWFyZ3VtZW50cyAgICAgICAgICAgICAgMS44NjE1Ky0wLjEwMTYgICAgID8gICAg
ICAxLjk0MjUrLTAuMDU5MCAgICAgICAgPyBtaWdodCBiZSAxLjA0MzV4IHNsb3dlcgogICB0cnkt
Y2F0Y2gtZ2V0LWJ5LXZhbC1zY29wZWQtYXJndW1lbnRzICAgICAgICAgICAgICA0LjE5MjkrLTAu
MjY4NyAgICAgPyAgICAgIDQuMzE2NCstMC40NTE5ICAgICAgICA/IG1pZ2h0IGJlIDEuMDI5NHgg
c2xvd2VyCiAgIHRyeS1nZXQtYnktaWQtYmFzaWMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDUuMzQ3MistMC4xNjY2ICAgICA/ICAgICAgNS42Mzc3Ky0wLjMxOTUgICAgICAgID8gbWln
aHQgYmUgMS4wNTQzeCBzbG93ZXIKICAgdHJ5LWdldC1ieS1pZC1wb2x5bW9ycGhpYyAgICAgICAg
ICAgICAgICAgICAgICAgICAgNi4xNDcyKy0wLjEwNDggICAgID8gICAgICA2LjIwMjArLTAuMTM4
NCAgICAgICAgPwogICB0eXBlZC1hcnJheS1nZXQtc2V0LWJ5LXZhbC1wcm9maWxpbmcgICAgICAg
ICAgICAgIDE5LjkxMDUrLTEuMjQ5MiAgICAgICAgICAgMTkuMjg5MSstMC42OTI5ICAgICAgICAg
IG1pZ2h0IGJlIDEuMDMyMnggZmFzdGVyCiAgIHR5cGVkLWFycmF5LXN1YmFycmF5ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMzUuMDM2NCstMS4yODc3ICAgICAgICAgICAzNC4yMjk4Ky0x
LjE0NjkgICAgICAgICAgbWlnaHQgYmUgMS4wMjM2eCBmYXN0ZXIKICAgdW5kZWZpbmVkLXByb3Bl
cnR5LWFjY2VzcyAgICAgICAgICAgICAgICAgICAgICAgIDE5Ny44MDY5Ky0yLjYyNzQgICAgICAg
ICAgMTk3LjI3MjcrLTEuNDY2OCAgICAgICAgCiAgIHVuZGVmaW5lZC10ZXN0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDIuODI3MistMC4wODIzICAgICAgICAgICAgMi44MTM3
Ky0wLjA2OTcgICAgICAgIAogICB1bnByb2ZpbGVkLWxpY20gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA1LjcxNjYrLTAuMDc2NSAgICAgICAgICAgIDUuNjk3MSstMC4xMDE3ICAg
ICAgICAKICAgdW50eXBlZC1zdHJpbmctZnJvbS1jaGFyLWNvZGUgICAgICAgICAgICAgICAgICAg
ICAgOS40NDE5Ky0wLjQxMjIgICAgICAgICAgICA5LjI5OTcrLTAuMjc2NSAgICAgICAgICBtaWdo
dCBiZSAxLjAxNTN4IGZhc3RlcgogICB2OC1yYXl0cmFjZS13aXRoLWVtcHR5LXRyeS1jYXRjaCAg
ICAgICAgICAgICAgICAgIDI2LjY1NzIrLTAuODg4NyAgICAgPyAgICAgMjcuNTEzNCstMS4xNzMx
ICAgICAgICA/IG1pZ2h0IGJlIDEuMDMyMXggc2xvd2VyCiAgIHY4LXJheXRyYWNlLXdpdGgtdHJ5
LWNhdGNoLWhpZ2gtZnJlcXVlbmN5LXRocm93cyAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMzE5LjIyODgrLTMuODU4NiAgICAgPyAgICAzMjEu
NTU4NCstMTQuMDI3NCAgICAgICA/CiAgIHY4LXJheXRyYWNlLXdpdGgtdHJ5LWNhdGNoICAgICAg
ICAgICAgICAgICAgICAgICAgNTUuODkzMystMS40ODg0ICAgICA/ICAgICA1Ni4xMDgyKy0wLjg4
NzIgICAgICAgID8KICAgdjgtcmVnZXhwLXNlYXJjaCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA0OC44Njg2Ky0yLjQ4MzkgICAgICAgICAgIDQ4LjU5NjcrLTEuNTMxMiAgICAgICAg
CiAgIHZhcmFyZ3MtY2FsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIu
MTMzMystMC40MDU5ICAgICAgICAgICAxMi4xMzE0Ky0wLjQ1ODcgICAgICAgIAogICB2YXJhcmdz
LWNvbnN0cnVjdC1pbmxpbmUgICAgICAgICAgICAgICAgICAgICAgICAgIDE1LjM0NTMrLTAuNjc1
OSAgICAgICAgICAgMTUuMDI4NistMC4zNTk3ICAgICAgICAgIG1pZ2h0IGJlIDEuMDIxMXggZmFz
dGVyCiAgIHZhcmFyZ3MtY29uc3RydWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MjAuODMyOSstMS44Mjk0ICAgICA/ICAgICAyMS4xMDA2Ky0xLjA2NjkgICAgICAgID8gbWlnaHQg
YmUgMS4wMTI4eCBzbG93ZXIKICAgdmFyYXJncy1pbmxpbmUgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNy45MDAxKy0wLjI5NDMgICAgID8gICAgICA4LjAwMDUrLTAuNDEwNiAg
ICAgICAgPyBtaWdodCBiZSAxLjAxMjd4IHNsb3dlcgogICB2YXJhcmdzLXN0cmljdC1tb2RlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LjU3MTQrLTAuMTY1MSAgICAgPyAgICAgIDku
MDA1NystMC43NTY4ICAgICAgICA/IG1pZ2h0IGJlIDEuMDUwN3ggc2xvd2VyCiAgIHZhcmFyZ3Mg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuMTE5NSstMS4wMzA5
ICAgICAgICAgICAgOC40OTAxKy0wLjA4OTkgICAgICAgICAgbWlnaHQgYmUgMS4wNzQxeCBmYXN0
ZXIKICAgd2VpcmQtaW5saW5pbmctY29uc3QtcHJvcCAgICAgICAgICAgICAgICAgICAgICAgICAg
Mi4wMzIxKy0wLjExNzcgICAgID8gICAgICAyLjIwODMrLTAuNDM3OCAgICAgICAgPyBtaWdodCBi
ZSAxLjA4Njd4IHNsb3dlcgoKICAgPGdlb21ldHJpYz4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNy44MjU2Ky0wLjAyNjkgICAgID8gICAgICA3LjgyODkrLTAuMDI1MiAg
ICAgICAgPyBtaWdodCBiZSAxLjAwMDR4IHNsb3dlcgoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2cgICAgICAgICAgICAgICAgICAg
ICAgY2hhbmdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKQXNtQmVuY2g6
CiAgIGJpZ2ZpYi5jcHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MTgu
MTkwNistMTYuMDQxOCAgICAgICAgIDQwOS4yNDg3Ky00LjA4MjUgICAgICAgICAgbWlnaHQgYmUg
MS4wMjE4eCBmYXN0ZXIKICAgY3JheS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDM2OC45Mjk3Ky0xMC45NTA0ICAgICAgICAgMzY4LjYyMjgrLTUuNjExMCAgICAg
ICAgCiAgIGRyeS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0
MDQuMjE4MistNy44MDc5ICAgICA/ICAgIDQwNC43NzI3Ky05LjQ4NDIgICAgICAgID8KICAgRmxv
YXRNTS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDY1My44OTgzKy0y
Ni45MzY4ICAgID8gICAgNjYwLjg0ODQrLTMxLjQ2MTggICAgICAgPyBtaWdodCBiZSAxLjAxMDZ4
IHNsb3dlcgogICBnY2MtbG9vcHMuY3BwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAzNDI4LjU5NDUrLTEyLjU5MjIgICAgPyAgIDM1NjkuMTk4MCstMzM1LjM5NzEgICAgICA/IG1p
Z2h0IGJlIDEuMDQxMHggc2xvd2VyCiAgIG4tYm9keS5jICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA3NjYuMDI5OSstNi4yNzE4ICAgICA/ICAgIDc2Ny4xOTMxKy04LjUw
OTUgICAgICAgID8KICAgUXVpY2tzb3J0LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDM3OC42Nzk2Ky02LjI3MTQgICAgID8gICAgMzg1LjM0OTYrLTEwLjA3NDUgICAgICAg
PyBtaWdodCBiZSAxLjAxNzZ4IHNsb3dlcgogICBzdGVwYW5vdl9jb250YWluZXIuY3BwICAgICAg
ICAgICAgICAgICAgICAgICAgICAzMjA1LjA1NDYrLTM2LjY3NTIgICAgPyAgIDMyMDkuNzAxNCst
MTguNTUxNSAgICAgICA/CiAgIFRvd2Vycy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAyMjguNDczNCstMy40NzE2ICAgICAgICAgIDIyOC40MjUxKy01LjMxMzIgICAg
ICAgIAoKICAgPGdlb21ldHJpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDY3Ni4zNTk0Ky02LjI2ODMgICAgID8gICAgNjc5Ljc5OTArLTcuODUzOSAgICAgICAgPyBtaWdo
dCBiZSAxLjAwNTF4IHNsb3dlcgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb2cgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKQ29tcHJlc3Npb25CZW5jaDoKICAg
aHVmZm1hbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS4yNTUy
Ky0xLjE1OTQgICAgICAgICAgIDE5LjAwODQrLTAuNjgyMyAgICAgICAgICBtaWdodCBiZSAxLjAx
MzB4IGZhc3RlcgogICBhcml0aG1ldGljLXNpbXBsZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMjUzLjIwNjErLTMuNzUzMiAgICAgICAgICAyNDguNzQwMCstMS43NDkyICAgICAgICAg
IG1pZ2h0IGJlIDEuMDE4MHggZmFzdGVyCiAgIGFyaXRobWV0aWMtcHJlY2lzZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAyMzIuNjU2OSstMi4wOTQ0ICAgICA/ICAgIDIzOC4zNTIzKy04
Ljg0MTkgICAgICAgID8gbWlnaHQgYmUgMS4wMjQ1eCBzbG93ZXIKICAgYXJpdGhtZXRpYy1jb21w
bGV4LXByZWNpc2UgICAgICAgICAgICAgICAgICAgICAgIDIzOS44MDAxKy03LjE5NjIgICAgID8g
ICAgMjQyLjIyMTErLTMuOTMyMCAgICAgICAgPyBtaWdodCBiZSAxLjAxMDF4IHNsb3dlcgogICBh
cml0aG1ldGljLXByZWNpc2Utb3JkZXItMCAgICAgICAgICAgICAgICAgICAgICAgMjUzLjE1MTYr
LTIuMzU1MyAgICAgPyAgICAyNTMuMjAzNystMi44Nzk4ICAgICAgICA/CiAgIGFyaXRobWV0aWMt
cHJlY2lzZS1vcmRlci0xICAgICAgICAgICAgICAgICAgICAgICAyODQuMzA0NCstMi4xMTY0ICAg
ICA/ICAgIDI4NC44NDE2Ky0zLjU1MzggICAgICAgID8KICAgYXJpdGhtZXRpYy1wcmVjaXNlLW9y
ZGVyLTIgICAgICAgICAgICAgICAgICAgICAgIDMzMi4zOTY3Ky04LjI4NDggICAgICAgICAgMzI3
LjM5ODIrLTIuMTI2NSAgICAgICAgICBtaWdodCBiZSAxLjAxNTN4IGZhc3RlcgogICBhcml0aG1l
dGljLXNpbXBsZS1vcmRlci0xICAgICAgICAgICAgICAgICAgICAgICAgMjk0LjAxMzIrLTMuNDEz
OSAgICAgICAgICAyOTMuOTg1MystNC4zNjIyICAgICAgICAKICAgYXJpdGhtZXRpYy1zaW1wbGUt
b3JkZXItMiAgICAgICAgICAgICAgICAgICAgICAgIDMzNi4yODkwKy0zLjgzMjQgICAgID8gICAg
MzQ1LjE5OTIrLTEzLjUwNjMgICAgICAgPyBtaWdodCBiZSAxLjAyNjV4IHNsb3dlcgogICBsei1z
dHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjU5LjYzNjIrLTcu
MTQ4NSAgICAgICAgICAyNTguMTQ1MCstNi4wNDQ0ICAgICAgICAKCiAgIDxnZW9tZXRyaWM+ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDkuOTUxMistMC45NTM1ICAgICA/
ICAgIDIxMC4xOTEwKy0xLjIyNDAgICAgICAgID8gbWlnaHQgYmUgMS4wMDExeCBzbG93ZXIKCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9nICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgCkdlb21lYW4gb2YgcHJlZmVycmVkIG1lYW5zOgogICA8c2NhbGVkLXJlc3Vs
dD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ0LjA5MjgrLTAuMTA0NSAgICAg
PyAgICAgNDQuMTIwNCstMC4xNDY0ICAgICAgICA/IG1pZ2h0IGJlIDEuMDAwNnggc2xvd2VyCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>299861</attachid>
            <date>2017-01-26 15:10:59 -0800</date>
            <delta_ts>2017-01-26 15:52:19 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>253869</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjExMjMwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4NCBA
QAorMjAxNy0wMS0yNiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBIYXJkZW4gaG93IHRoZSBjb21waWxlciByZWZlcmVuY2VzIEdDIG9iamVjdHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NzI3NworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzAxNzk1MDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAgUGl6
bG8uCisKKyAgICAgICAgU2luY2UgcjIxMDk3MSwgdGhlIERGRy9GVEwgd2lsbCBmbGFzaCBzYWZl
cG9pbnRzIGJlZm9yZQorICAgICAgICBlYWNoIHBoYXNlLiBUaGlzIG1lYW5zIHRoYXQgdGhlcmUg
YXJlIG1vcmUgb3Bwb3J0dW5pdGllcyBmb3IKKyAgICAgICAgYSBHQyB0byBoYXBwZW4gd2hpbGUg
dGhlIGNvbXBpbGVyIGlzIHJ1bm5pbmcuIEJlY2F1c2Ugb2YgdGhpcywKKyAgICAgICAgdGhlIGNv
bXBpbGVyIG11c3Qga2VlcCB0cmFjayBvZiBhbGwgdGhlIGhlYXAgcG9pbnRlcnMgdGhhdCBhcmUg
cGFydAorICAgICAgICBvZiB0aGUgR3JhcGggZGF0YSBzdHJ1Y3R1cmUuIFRvIGFjY29tcGxpc2gg
dGhpcywgSSd2ZSBkZXNpZ25lZAorICAgICAgICBhIG5ldyB0eXBlIGNhbGxlZCBSZWdpc3RlcmVk
U3RydWN0dXJlIHRoYXQgY2FuIG9ubHkgYmUgY29uc3RydWN0ZWQKKyAgICAgICAgYWZ0ZXIgdGhl
IEdyYXBoIGJlY29tZXMgYXdhcmUgb2YgaXRzIHVuZGVybHlpbmcgU3RydWN0dXJlKi4gSQorICAg
ICAgICBkZXNpZ25lZCB0aGlzIG5ldyB0eXBlIHRvIGhhdmUgdGhlIHR5cGUgc3lzdGVtIGluIEMr
KyBoZWxwIHVzIGNhdGNoCisgICAgICAgIGVycm9ycyB3aGVyZSB3ZSdyZSBub3QgaW5mb3JtaW5n
IHRoZSBncmFwaC9wbGFuIG9mIGEgaGVhcCBwb2ludGVyLgorICAgICAgICBJJ3ZlIG1hZGUgaXQg
YSBjb21waWxlIGVycm9yIHRvIGNyZWF0ZSBhbiBPcEluZm8gd2l0aCBhIHBvaW50ZXIKKyAgICAg
ICAgVCogd2hlcmUgVCBpbmhlcml0cyBmcm9tIEhlYXBDZWxsLiBUaGlzIGVuY291cmFnZXMgYW4g
T3BJbmZvCisgICAgICAgIHRvIGJlIGNyZWF0ZWQgd2l0aCBlaXRoZXIgYSBGcm96ZW5WYWx1ZSog
b3IgYSBSZWdpc3RlcmVkU3RydWN0dXJlLgorICAgICAgICBJJ3ZlIGFkZGVkIHNpbWlsYXIgY29t
cGlsZSB0aW1lIGFzc2VydGlvbnMgZm9yIFRydXN0ZWRJbW1QdHIgaW4gREZHOjpTcGVjdWxhdGl2
ZUpJVAorICAgICAgICBhbmQgRlRMOjpPdXRwdXQ6OmNvbnN0SW50UHRyLiBUaGVzZSBzdGF0aWMg
YXNzZXJ0cyBkb24ndCBzYXZlIHVzIGZyb20gYWxsIGJhZAorICAgICAgICBwcm9ncmFtcyBiZWNh
dXNlIHRoZXJlIGFyZSB3YXlzIHRvIHdyaXRlIGNvZGUgdGhhdCdzIGluY29ycmVjdCB0aGF0IGNv
bXBpbGVzLAorICAgICAgICBidXQgdGhlIG5ldyB0eXBlcyBkbyBoZWxwIHVzIGVuc3VyZSB0aGF0
IHRoZSBtb3N0IG9idmlvdXMgd2F5IG9mIHdyaXRpbmcgdGhlCisgICAgICAgIGNvZGUgaXMgY29y
cmVjdC4KKyAgICAgICAgCisgICAgICAgIFRoZSByZWFzb24gdGhpcyBwYXRjaCBpcyBzbyBiaWcg
aXMgdGhhdCBJJ3ZlIHN0cnVuZyBSZWdpc3RlcmVkU3RydWN0dXJlIGFuZAorICAgICAgICBSZWdp
c3RlcmVkU3RydWN0dXJlU2V0IHRocm91Z2ggdGhlIGVudGlyZSBERkcvRlRMLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmRldGVybWluZUxpdmVuZXNzKToKKyAgICAgICAgKiBieXRlY29k
ZS9TdHJ1Y3R1cmVTZXQuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTZXQ6OmZpbHRlcik6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlN0cnVjdHVyZVNldDo6ZmlsdGVyQXJyYXlNb2Rlcyk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlN0cnVjdHVyZVNldDo6c3BlY3VsYXRpb25Gcm9tU3Ry
dWN0dXJlcyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlN0cnVjdHVyZVNldDo6YXJyYXlNb2Rl
c0Zyb21TdHJ1Y3R1cmVzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U3RydWN0dXJlU2V0Ojp2
YWxpZGF0ZVJlZmVyZW5jZXMpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVy
ZVNldC5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmg6CisgICAgICAg
IChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjo6ZmlsdGVyKToKKyAgICAgICAgKiBkZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6Ym9vbGVhblJlc3VsdCk6CisgICAg
ICAgIChKU0M6OkRGRzo6aXNUb1RoaXNBbklkZW50aXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgor
ICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+
OjpvYnNlcnZlVHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmZpbHRlcik6CisgICAgICAgICogZGZnL0RGR0Fic3Ry
YWN0VmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OnNldCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6c2V0VHlwZSk6CisgICAgICAgIChKU0M6
OkRGRzo6QWJzdHJhY3RWYWx1ZTo6bWVyZ2VPU1JFbnRyeVZhbHVlKToKKyAgICAgICAgKEpTQzo6
REZHOjpBYnN0cmFjdFZhbHVlOjpmaWx0ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
VmFsdWU6OmNoYW5nZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1
ZTo6Y29udGFpbnMpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFZhbHVlLmg6CisgICAgICAg
IChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6b2JzZXJ2ZVRyYW5zaXRpb24pOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0VmFsdWU6OlRyYW5zaXRpb25PYnNlcnZlcjo6VHJhbnNpdGlvbk9i
c2VydmVyKToKKyAgICAgICAgKiBkZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHA6
CisgICAgICAgICogZGZnL0RGR0FycmF5TW9kZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QXJy
YXlNb2RlOjphbHJlYWR5Q2hlY2tlZCk6CisgICAgICAgICogZGZnL0RGR0FycmF5aWZ5U2xvd1Bh
dGhHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheWlmeVNsb3dQYXRoR2VuZXJh
dG9yOjpBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVD
b25zdGFudEludGVybmFsRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpsb2FkKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0
QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3Rh
Y2tFbnRyeSk6CisgICAgICAgICogZGZnL0RGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2Vu
ZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkRGRzo6Q2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhH
ZW5lcmF0b3I6OkNhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6REZHOjpDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTaXplU2xvd1BhdGhHZW5l
cmF0b3I6OkNhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJsZVNpemVTbG93UGF0aEdlbmVyYXRv
cik6CisgICAgICAgICogZGZnL0RGR0NhbGxDcmVhdGVEaXJlY3RBcmd1bWVudHNTbG93UGF0aEdl
bmVyYXRvci5oOgorICAgICAgICAoSlNDOjpERkc6OkNhbGxDcmVhdGVEaXJlY3RBcmd1bWVudHNT
bG93UGF0aEdlbmVyYXRvcjo6Q2FsbENyZWF0ZURpcmVjdEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJh
dG9yKToKKyAgICAgICAgKiBkZmcvREZHQ29tbW9uRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Q29tbW9uRGF0YTo6bm90aWZ5Q29tcGlsaW5nU3RydWN0dXJlVHJhbnNpdGlvbik6CisgICAg
ICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgIChKU0M6OkRG
Rzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmVtaXRHZXRCeU9mZnNldCk6CisgICAgICAgIChKU0M6
OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmVtaXRQdXRCeU9mZnNldCk6CisgICAgICAgIChK
U0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmFkZEJhc2VDaGVjayk6CisgICAgICAgIChK
U0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmFkZFN0cnVjdHVyZVRyYW5zaXRpb25DaGVj
ayk6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6RGVzaXJlZFdlYWtSZWZlcmVuY2VzOjpyZWFsbHlBZGQpOgorICAgICAgICAq
IGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpj
aGVja0FycmF5KToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkdyYXBoOjpHcmFwaCk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1bXApOgorICAg
ICAgICAoSlNDOjpERkc6OkdyYXBoOjp0cnlHZXRDb25zdGFudFByb3BlcnR5KToKKyAgICAgICAg
KEpTQzo6REZHOjpHcmFwaDo6aW5mZXJyZWRWYWx1ZUZvclByb3BlcnR5KToKKyAgICAgICAgKEpT
Qzo6REZHOjpHcmFwaDo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6
OmZyZWV6ZSk6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OnJlZ2lzdGVyU3RydWN0dXJlKToK
KyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6YXNzZXJ0SXNSZWdpc3RlcmVkKToKKyAgICAgICAg
KiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6cmVnaXN0ZXJTdHJ1
Y3R1cmUpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjphZGRTdHJ1Y3R1cmVTZXQpOgorICAg
ICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBp
bGVyOjpicmFuY2hXZWFrU3RydWN0dXJlKToKKyAgICAgICAgKiBkZmcvREZHTXVsdGlHZXRCeU9m
ZnNldERhdGEuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok11bHRpR2V0QnlPZmZzZXRDYXNlOjpk
dW1wSW5Db250ZXh0KToKKyAgICAgICAgKiBkZmcvREZHTXVsdGlHZXRCeU9mZnNldERhdGEuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpNdWx0aUdldEJ5T2Zmc2V0Q2FzZTo6TXVsdGlHZXRCeU9mZnNl
dENhc2UpOgorICAgICAgICAoSlNDOjpERkc6Ok11bHRpR2V0QnlPZmZzZXRDYXNlOjpzZXQpOgor
ICAgICAgICAqIGRmZy9ERkdOb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252
ZXJ0VG9QdXRTdHJ1Y3R1cmVIaW50KToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb0NoZWNrU3RydWN0dXJlKToKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpzdHJ1Y3R1cmVTZXQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnN0
cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6T3BJbmZvV3JhcHBlcjo6T3BJbmZv
V3JhcHBlcik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6T3BJbmZvV3JhcHBlcjo6b3BlcmF0
b3I9KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpPcEluZm9XcmFwcGVyOjphc1JlZ2lzdGVy
ZWRTdHJ1Y3R1cmUpOgorICAgICAgICAqIGRmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1Bo
YXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BJbmZvLmg6CisgICAgICAgIChKU0M6OkRGRzo6
T3BJbmZvOjpPcEluZm8pOgorICAgICAgICAqIGRmZy9ERkdQbGFuLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpQbGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKToKKyAgICAgICAgKEpTQzo6REZHOjpQ
bGFuOjpmaW5hbGl6ZVdpdGhvdXROb3RpZnlpbmdDYWxsYmFjayk6CisgICAgICAgICogZGZnL0RG
R1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0
ZXJlZFN0cnVjdHVyZTo6Z2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlcmVkU3RydWN0
dXJlOjpvcGVyYXRvci0+KToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlcmVkU3RydWN0dXJl
OjpvcGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlcmVkU3RydWN0dXJlOjpv
cGVyYXRvciE9KToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlcmVkU3RydWN0dXJlOjpvcGVy
YXRvciBib29sKToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlcmVkU3RydWN0dXJlOjpSZWdp
c3RlcmVkU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6REZHOjpSZWdpc3RlcmVkU3RydWN0dXJl
OjpjcmVhdGVQcml2YXRlKToKKyAgICAgICAgKiBkZmcvREZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNl
dC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQ6
OmZpbHRlcik6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZVNldDo6Zmls
dGVyQXJyYXlNb2Rlcyk6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0ZXJlZFN0cnVjdHVyZVNl
dDo6c3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlcyk6CisgICAgICAgIChKU0M6OkRGRzo6UmVnaXN0
ZXJlZFN0cnVjdHVyZVNldDo6YXJyYXlNb2Rlc0Zyb21TdHJ1Y3R1cmVzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpSZWdpc3RlcmVkU3RydWN0dXJlU2V0Ojp2YWxpZGF0ZVJlZmVyZW5jZXMpOgorICAg
ICAgICAqIGRmZy9ERkdSZWdpc3RlcmVkU3RydWN0dXJlU2V0Lmg6IEFkZGVkLgorICAgICAgICAo
SlNDOjpERkc6OlJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQ6OlJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQp
OgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQ6Om9ubHlTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpERkc6OlJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQ6OnRvU3RydWN0
dXJlU2V0KToKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlND
OjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZVJhd09i
amVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRHZXRDYWxsZWUp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzaWxlbnRGaWxsKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcnJheSk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uU3RyaW5nKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUZyb21DaGFyQ29kZSk6CisgICAgICAg
IChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVSZXApOgorICAgICAgICAo
SlNDOjpERkc6OmNvbXBpbGVDbGFtcERvdWJsZVRvQnl0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYWtlUm9wZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFJvdW5kaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uQ29tbW9uKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZUFjdGl2YXRpb24pOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlRGlyZWN0QXJndW1lbnRzKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVNjb3BlZEFy
Z3VtZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVh
dGVDbG9uZWRBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlU3ByZWFkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUFycmF5U2xpY2UpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
VHlwZU9mKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFsbG9j
YXRlUHJvcGVydHlTdG9yYWdlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdPckNhbGxTdHJpbmdDb25zdHJ1Y3Rvck9uQ2Vs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFy
cmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5n
T3JTdHJpbmdPYmplY3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlTWF0ZXJpYWxpemVOZXdPYmplY3QpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpUcnVzdGVkSW1tUHRyOjpU
cnVzdGVkSW1tUHRyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6VHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
OjpUcnVzdGVkSW1tUHRyOjpvcGVyYXRvciBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cik6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OlRydXN0ZWRJbW1QdHI6OmFzSW50
cHRyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZURlc3RydWN0
aWJsZU9iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0
ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVj
dWxhdGl2ZU5vblBlZXBob2xlQ29tcGFyZU51bGxPclVuZGVmaW5lZCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2hOdWxsT3JV
bmRlZmluZWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZXJM
b2dpY2FsTm90KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9iamVj
dE9yT3RoZXJCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFsbG9jYXRl
TmV3QXJyYXlXaXRoU2l6ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBl
ZXBob2xlQ29tcGFyZU51bGxPclVuZGVmaW5lZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2hOdWxsT3JVbmRlZmluZWQpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RPck90aGVyTG9naWNhbE5vdCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnJh
bmNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBbGxvY2F0ZU5ld0FycmF5V2l0
aFNpemUpOgorICAgICAgICAqIGRmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTdHJlbmd0aFJlZHVjdGlvblBoYXNlOjpoYW5kbGVOb2RlKToKKyAg
ICAgICAgKiBkZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6YXNzZXJ0SXNSZWdpc3RlcmVkKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpjbG9iYmVyKToKKyAgICAgICAg
KEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpvYnNlcnZlVHJhbnNpdGlvbik6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6b2JzZXJ2ZVRyYW5zaXRp
b25zKToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjphZGQpOgor
ICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om1lcmdlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjptZXJnZU5vdFRvcCk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyKToKKyAgICAgICAg
KEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpmaWx0ZXJTbG93KToKKyAgICAgICAg
KEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpmaWx0ZXJDbGFzc0luZm9TbG93KToK
KyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpjb250YWlucyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6aXNTdWJzZXRPZik6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6aXNTdXBlcnNldE9mKToK
KyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpvdmVybGFwcyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6aXNTdWJDbGFzc09mKToK
KyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpkdW1wSW5Db250ZXh0
KToKKyAgICAgICAgKiBkZmcvREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oOgorICAgICAgICAo
SlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWUp
OgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om9wZXJhdG9yPSk6
CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6c2V0KToKKyAgICAg
ICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjp0b1N0cnVjdHVyZVNldCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6YXQpOgorICAgICAgICAo
SlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om9wZXJhdG9yW10pOgorICAgICAgICAo
SlNDOjpERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6Om9ubHlTdHJ1Y3R1cmUpOgorICAgICAg
ICAqIGRmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2U6OlN0cnVjdHVyZVJlZ2lzdHJhdGlvblBo
YXNlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZTo6cnVuKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3Ry
YXRpb25QaGFzZTo6cmVnaXN0ZXJTdHJ1Y3R1cmVzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZTo6cmVnaXN0ZXJTdHJ1Y3R1cmUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlOjphc3Nl
cnRBcmVSZWdpc3RlcmVkKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVS
ZWdpc3RyYXRpb25QaGFzZTo6YXNzZXJ0SXNSZWdpc3RlcmVkKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6REZHOjpwZXJmb3JtU3RydWN0dXJlUmVnaXN0cmF0aW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBkZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuaDoKKyAgICAgICAgKiBkZmcv
REZHVHJhbnNpdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6VHJhbnNpdGlvbjo6ZHVtcElu
Q29udGV4dCk6CisgICAgICAgICogZGZnL0RGR1RyYW5zaXRpb24uaDoKKyAgICAgICAgKEpTQzo6
REZHOjpUcmFuc2l0aW9uOjpUcmFuc2l0aW9uKToKKyAgICAgICAgKiBkZmcvREZHVHlwZUNoZWNr
SG9pc3RpbmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6VHlwZUNoZWNrSG9pc3RpbmdQ
aGFzZTo6bm90aWNlU3RydWN0dXJlQ2hlY2spOgorICAgICAgICAoSlNDOjpERkc6OlR5cGVDaGVj
a0hvaXN0aW5nUGhhc2U6Om5vdGljZVN0cnVjdHVyZUNoZWNrQWNjb3VudGluZ0ZvckFycmF5TW9k
ZSk6CisgICAgICAgICogZGZnL0RGR1ZhbGlkYXRlLmNwcDoKKyAgICAgICAgKiBmdGwvRlRMTG93
ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bG93
ZXIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbE9i
amVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZUNoZWNrU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZVB1dFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVBcnJheVNsaWNlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZUNyZWF0ZUFjdGl2YXRpb24pOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ3JlYXRlRGlyZWN0QXJndW1lbnRzKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNyZWF0ZVJlc3QpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3QXJyYXkpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTmV3QXJyYXlXaXRo
U3ByZWFkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5l
d0FycmF5QnVmZmVyKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29t
cGlsZU5ld0FycmF5V2l0aFNpemUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlTmV3VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdl
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU11bHRpR2V0
QnlPZmZzZXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
TXVsdGlQdXRCeU9mZnNldCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmNvbXBpbGVHZXRNYXBCdWNrZXQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlT3ZlcnJpZGVzSGFzSW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGUpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTWF0ZXJpYWxpemVOZXdPYmpl
Y3QpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTWF0ZXJp
YWxpemVDcmVhdGVBY3RpdmF0aW9uKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZU5ld1JlZ2V4cCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRG
R1RvQjM6OmNvbXBpbGVMb2dTaGFkb3dDaGlja2VuVGFpbCk6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmNoZWNrU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y2hlY2tJbmZlcnJlZFR5cGUpOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0IzOjphbGxvY2F0ZU9iamVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6
REZHOjpMb3dlckRGR1RvQjM6OmFsbG9jYXRlVmFyaWFibGVTaXplZE9iamVjdCk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmFsbG9jYXRlSlNBcnJheSk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmFsbG9jYXRlVW5pbml0aWFsaXplZENvbnRp
Z3VvdXNKU0FycmF5KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Ym9v
bGlmeSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmVxdWFsTnVsbE9y
VW5kZWZpbmVkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bG93Q2Vs
bCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OnNwZWN1bGF0ZVN0cmlu
Z09iamVjdEZvclN0cnVjdHVyZUlEKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6d2Vha1BvaW50ZXIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpmcm96ZW5Qb2ludGVyKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
d2Vha1N0cnVjdHVyZUlEKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
d2Vha1N0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNy
YXNoKToKKyAgICAgICAgKiBmdGwvRlRMT3V0cHV0Lmg6CisgICAgICAgIChKU0M6OkZUTDo6T3V0
cHV0Ojp3ZWFrUG9pbnRlcik6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpjb25zdEludFB0
cik6CisKIDIwMTctMDEtMjYgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIE9TUiBlbnRyeTogZGVsYXkgb3V0ZXItbG9vcCBjb21waWxhdGlvbiB3aGVuIGF0IGlu
bmVyLWxvb3AKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9u
IDIxMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMzczLDYgKzM3Myw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAg
ICAgZGZnL0RGR1Byb21vdGVkSGVhcExvY2F0aW9uLmNwcAogICAgIGRmZy9ERkdQdXJlVmFsdWUu
Y3BwCiAgICAgZGZnL0RGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcAorICAgIGRmZy9ERkdSZWdp
c3RlcmVkU3RydWN0dXJlU2V0LmNwcAogICAgIGRmZy9ERkdTU0FDYWxjdWxhdG9yLmNwcAogICAg
IGRmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCiAgICAgZGZnL0RGR1NTQUxvd2VyaW5nUGhh
c2UuY3BwCkBAIC0zODYsNyArMzg3LDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAg
ICBkZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCiAgICAgZGZnL0RGR1N0cmVu
Z3RoUmVkdWN0aW9uUGhhc2UuY3BwCiAgICAgZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUu
Y3BwCi0gICAgZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAogICAgIGRmZy9E
RkdUaHJlYWREYXRhLmNwcAogICAgIGRmZy9ERkdUaHVua3MuY3BwCiAgICAgZGZnL0RGR1RpZXJV
cENoZWNrSW5qZWN0aW9uUGhhc2UuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMjExMjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTUyMCw4ICs1
MjAsNiBAQAogCQkwRjc2NkQzODE1QUU0QTFDMDA4RjM2M0UgLyogU3RydWN0dXJlU3R1YkNsZWFy
aW5nV2F0Y2hwb2ludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjc2NkQzNjE1QUU0QTFBMDA4RjM2M0UgLyogU3RydWN0dXJlU3R1YkNsZWFyaW5n
V2F0Y2hwb2ludC5jcHAgKi87IH07CiAJCTBGNzY2RDM5MTVBRTRBMUYwMDhGMzYzRSAvKiBTdHJ1
Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc2NkQzNzE1QUU0QTFBMDA4RjM2M0UgLyogU3RydWN0dXJl
U3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGNzcwMDkyMTQwMkZGM0MwMDc4RUIzOSAvKiBTYW1wbGluZ0Nv
dW50ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY3NzAwOTExNDAyRkYyODAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgKi87IH07Ci0J
CTBGNzkwODU1MTlBMjkwQjIwMEY2MzEwQyAvKiBERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFz
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc5
MDg1MzE5QTI5MEIyMDBGNjMxMEMgLyogREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3Bw
ICovOyB9OwotCQkwRjc5MDg1NjE5QTI5MEIyMDBGNjMxMEMgLyogREZHU3RydWN0dXJlUmVnaXN0
cmF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNzkwODU0MTlBMjkwQjIwMEY2MzEwQyAvKiBERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZS5oICovOyB9OwogCQkwRjdCMjk0QjE0QzNDRDJGMDA3QzNEQjEgLyogREZHQ2FwYWJpbGl0
aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkQ4
MkUxRjE0MTcyQzJGMDAxNzlDOTQgLyogREZHQ2FwYWJpbGl0aWVzLmggKi87IH07CiAJCTBGN0Iy
OTREMTRDM0NENEMwMDdDM0RCMSAvKiBERkdDb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5NzdFMTQ2OUVCQzQwMENGMjQ0MiAvKiBERkdD
b21tb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjdDMzlGQjFDOEY2MjkzMDA0ODAxNTEgLyogUmVnRXhwSW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3QzM5RkExQzhGNjI5MzAwNDgw
MTUxIC8qIFJlZ0V4cElubGluZXMuaCAqLzsgfTsKQEAgLTE0NDEsNiArMTQzOSw4IEBACiAJCTc5
NkZCNDNBMURGRjhDM0YwMDM5Qzk1RCAvKiBKU1dlYkFzc2VtYmx5SGVscGVycy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzk2RkI0MzkxREZGOEMzRjAw
MzlDOTVEIC8qIEpTV2ViQXNzZW1ibHlIZWxwZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzk3RTA3QTkxQjhGQ0ZCOTAwODQwMEJBIC8qIEpT
R2xvYmFsTGV4aWNhbEVudmlyb25tZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDc5N0UwN0E3MUI4RkNGQjkwMDg0MDBCQSAvKiBKU0dsb2JhbExl
eGljYWxFbnZpcm9ubWVudC5jcHAgKi87IH07CiAJCTc5N0UwN0FBMUI4RkNGQjkwMDg0MDBCQSAv
KiBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzk3RTA3QTgxQjhGQ0ZCOTAwODQwMEJBIC8qIEpTR2xvYmFs
TGV4aWNhbEVudmlyb25tZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJNzk4MEMxNkMxRTNBOTQwRTAwQjcxNjE1IC8qIERGR1JlZ2lzdGVyZWRT
dHJ1Y3R1cmVTZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzk4MEMxNkExRTNBOTQwRTAwQjcxNjE1IC8qIERGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmVT
ZXQuY3BwICovOyB9OworCQk3OTgwQzE2RDFFM0E5NDBFMDBCNzE2MTUgLyogREZHUmVnaXN0ZXJl
ZFN0cnVjdHVyZVNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzk4MEMxNkIxRTNBOTQwRTAwQjcxNjE1IC8qIERGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmVT
ZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3
OTg5Mzc3ODFEQ0FCNTczMDBGOEQ0RkIgLyogSlNGaXhlZEFycmF5LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5ODkzNzc2MURDQUI1NzMwMEY4RDRG
QiAvKiBKU0ZpeGVkQXJyYXkuY3BwICovOyB9OwogCQk3OTg5Mzc3OTFEQ0FCNTczMDBGOEQ0RkIg
LyogSlNGaXhlZEFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3OTg5Mzc3NzFEQ0FCNTczMDBGOEQ0RkIgLyogSlNGaXhlZEFycmF5LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzk5RUY3QzQxQzU2
RUQ5NjAwMkIwNTM0IC8qIEIzUENUb09yaWdpbk1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzk5RUY3QzMxQzU2RUQ5NjAwMkIwNTM0IC8qIEIzUENU
b09yaWdpbk1hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0xNDcxLDYgKzE0NzEsNyBAQAogCQk3OUVFMEMwMDFCNEFGQjg1MDAwMzg1QzkgLyog
VmFyaWFibGVFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzlFRTBCRkUxQjRBRkI4NTAwMDM4NUM5IC8qIFZhcmlhYmxlRW52aXJvbm1l
bnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3
OUY4RkMxRTFCOUZFRDBGMDBDQTY2QUIgLyogREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2Uu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzlGOEZD
MUMxQjlGRUQwRjAwQ0E2NkFCIC8qIERGR01heGltYWxGbHVzaEluc2VydGlvblBoYXNlLmNwcCAq
LzsgfTsKIAkJNzlGOEZDMUYxQjlGRUQwRjAwQ0E2NkFCIC8qIERGR01heGltYWxGbHVzaEluc2Vy
dGlvblBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3OUY4RkMxRDFCOUZFRDBGMDBDQTY2QUIgLyogREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhh
c2UuaCAqLzsgfTsKKwkJNzlGQzhBMDgxRTMyRTlGMDAwRDg4RjBFIC8qIERGR1JlZ2lzdGVyZWRT
dHJ1Y3R1cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDc5RkM4QTA3MUUzMkU5RjAwMEQ4OEYwRSAvKiBERkdSZWdpc3RlcmVkU3RydWN0dXJlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0JDNTQ3RDMx
QjY5NTlBMTAwOTU5QjU4IC8qIFdhc21Gb3JtYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQzU0N0QyMUI2OTU5OUIwMDk1OUI1OCAvKiBXYXNtRm9y
bWF0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
N0MwMDhDREExODcxMjRCQjAwOTU1QzI0IC8qIEpTUHJvbWlzZURlZmVycmVkLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMDA4Q0Q4MTg3MTI0QkIw
MDk1NUMyNCAvKiBKU1Byb21pc2VEZWZlcnJlZC5jcHAgKi87IH07CiAJCTdDMDA4Q0RCMTg3MTI0
QkIwMDk1NUMyNCAvKiBKU1Byb21pc2VEZWZlcnJlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MwMDhDRDkxODcxMjRCQjAwOTU1QzI0IC8qIEpTUHJv
bWlzZURlZmVycmVkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTI5NzcsOCArMjk3OCw2IEBACiAJCTBGNzY2RDM3MTVBRTRBMUEwMDhGMzYzRSAv
KiBTdHJ1Y3R1cmVTdHViQ2xlYXJpbmdXYXRjaHBvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3NzAwOEUxNDAyRkRENjAwNzhFQjM5IC8qIFNhbXBsaW5n
Q291bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYW1wbGluZ0NvdW50
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY3NzAwOTExNDAyRkYyODAwNzhF
QjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTYW1wbGluZ0NvdW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkwRjc5MDg1MzE5QTI5MEIyMDBGNjMxMEMgLyogREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhh
c2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3RydWN0dXJl
UmVnaXN0cmF0aW9uUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlv
blBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEY3OTA4NTQxOUEyOTBC
MjAwRjYzMTBDIC8qIERGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmg7IHBh
dGggPSBkZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY3QzM5RkExQzhGNjI5MzAwNDgwMTUxIC8qIFJlZ0V4cElubGluZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwSW5saW5lcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjdDMzlGQzFDOEY2NTk1MDA0ODAxNTEgLyogUmVn
RXhwT2JqZWN0SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdF
eHBPYmplY3RJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGN0MzOUZF
MUM5MEM1NUIwMDQ4MDE1MSAvKiBERkdPcEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gREZHT3BJbmZvLmg7IHBhdGggPSBkZmcvREZHT3BJbmZvLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0zOTExLDYgKzM5MTAsOCBAQAogCQk3OTZGQjQzOTFERkY4QzNG
MDAzOUM5NUQgLyogSlNXZWJBc3NlbWJseUhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gSlNXZWJBc3NlbWJseUhlbHBlcnMuaDsgcGF0aCA9IGpzL0pTV2ViQXNzZW1i
bHlIZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc5N0UwN0E3MUI4RkNG
QjkwMDg0MDBCQSAvKiBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc5N0UwN0E4MUI4RkNGQjkwMDg0MDBCQSAv
KiBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0dsb2JhbExleGljYWxFbnZpcm9ubWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3OTgwQzE2QTFFM0E5NDBFMDBCNzE2MTUgLyogREZHUmVnaXN0ZXJlZFN0cnVj
dHVyZVNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdSZWdp
c3RlcmVkU3RydWN0dXJlU2V0LmNwcDsgcGF0aCA9IGRmZy9ERkdSZWdpc3RlcmVkU3RydWN0dXJl
U2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzk4MEMxNkIxRTNBOTQwRTAw
QjcxNjE1IC8qIERGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gREZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNldC5oOyBwYXRoID0gZGZnL0RG
R1JlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Nzk4OTM3NzYxRENBQjU3MzAwRjhENEZCIC8qIEpTRml4ZWRBcnJheS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ZpeGVkQXJyYXkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3OTg5Mzc3NzFEQ0FCNTczMDBGOEQ0RkIgLyogSlNGaXhlZEFycmF5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRml4ZWRBcnJheS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3OTlFRjdDMzFDNTZFRDk2MDAyQjA1MzQgLyogQjNQ
Q1RvT3JpZ2luTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzUENUb09y
aWdpbk1hcC5oOyBwYXRoID0gYjMvQjNQQ1RvT3JpZ2luTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0zOTQxLDYgKzM5NDIsNyBAQAogCQk3OUVFMEJGRTFCNEFGQjg1MDAwMzg1
QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBWYXJpYWJsZUVudmlyb25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTc5RjhGQzFDMUI5RkVEMEYwMENBNjZBQiAvKiBERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFz
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdNYXhpbWFsRmx1
c2hJbnNlcnRpb25QaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9u
UGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3OUY4RkMxRDFCOUZFRDBG
MDBDQTY2QUIgLyogREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gREZHTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UuaDsgcGF0
aCA9IGRmZy9ERkdNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3OUZDOEEwNzFFMzJFOUYwMDBEODhGMEUgLyogREZHUmVnaXN0ZXJlZFN0
cnVjdHVyZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdSZWdpc3RlcmVk
U3RydWN0dXJlLmg7IHBhdGggPSBkZmcvREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QkM1NDdEMjFCNjk1OTlCMDA5NTlCNTggLyogV2FzbUZv
cm1hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtRm9ybWF0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDA4Q0Q4MTg3MTI0QkIwMDk1NUMyNCAvKiBK
U1Byb21pc2VEZWZlcnJlZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU1Byb21pc2VEZWZlcnJlZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
MDA4Q0Q5MTg3MTI0QkIwMDk1NUMyNCAvKiBKU1Byb21pc2VEZWZlcnJlZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb21pc2VEZWZlcnJlZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzA5MSw2ICs3MDkzLDkgQEAKIAkJCQkwRkIxNzY1RjE5NkI4RjlF
MDA5MTA1MkEgLyogREZHUHVyZVZhbHVlLmggKi8sCiAJCQkJMEYzQTFCRjcxQTlFQ0I3RDAwMERF
MDFBIC8qIERGR1B1dFN0YWNrU2lua2luZ1BoYXNlLmNwcCAqLywKIAkJCQkwRjNBMUJGODFBOUVD
QjdEMDAwREUwMUEgLyogREZHUHV0U3RhY2tTaW5raW5nUGhhc2UuaCAqLywKKwkJCQk3OUZDOEEw
NzFFMzJFOUYwMDBEODhGMEUgLyogREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5oICovLAorCQkJCTc5
ODBDMTZBMUUzQTk0MEUwMEI3MTYxNSAvKiBERkdSZWdpc3RlcmVkU3RydWN0dXJlU2V0LmNwcCAq
LywKKwkJCQk3OTgwQzE2QjFFM0E5NDBFMDBCNzE2MTUgLyogREZHUmVnaXN0ZXJlZFN0cnVjdHVy
ZVNldC5oICovLAogCQkJCTg2RUM5REMxMTMyOERGODIwMDJCMkFENyAvKiBERkdSZWdpc3RlckJh
bmsuaCAqLywKIAkJCQkwRjJGQ0NGNDE4QTYwMDcwMDAxQTI3RjggLyogREZHU2FmZXBvaW50LmNw
cCAqLywKIAkJCQkwRjJGQ0NGNTE4QTYwMDcwMDAxQTI3RjggLyogREZHU2FmZXBvaW50LmggKi8s
CkBAIC03MTIzLDggKzcxMjgsNiBAQAogCQkJCTBGODkzQkRBMTkzNkUyM0MwMDEyMTFGNCAvKiBE
RkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmNwcCAqLywKIAkJCQkwRjYzOTQ3NjE1RENFMzQ3MDA2
QTU5N0MgLyogREZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oICovLAogCQkJCTBGNTBBRjNCMTkz
RThCMzkwMDY3NEVFOCAvKiBERkdTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUuaCAqLywKLQkJCQkwRjc5
MDg1MzE5QTI5MEIyMDBGNjMxMEMgLyogREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3Bw
ICovLAotCQkJCTBGNzkwODU0MTlBMjkwQjIwMEY2MzEwQyAvKiBERkdTdHJ1Y3R1cmVSZWdpc3Ry
YXRpb25QaGFzZS5oICovLAogCQkJCTBGMkZDQ0Y3MThBNjAwNzAwMDFBMjdGOCAvKiBERkdUaHJl
YWREYXRhLmNwcCAqLywKIAkJCQkwRjJGQ0NGODE4QTYwMDcwMDAxQTI3RjggLyogREZHVGhyZWFk
RGF0YS5oICovLAogCQkJCTBGQzA5NzlGMTQ2QjI4QzcwMENGMjQ0MiAvKiBERkdUaHVua3MuY3Bw
ICovLApAQCAtODA3Niw2ICs4MDc5LDcgQEAKIAkJCQkwRjIxQzI3RDE0QkU3MjdBMDBBREM2NEIg
LyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQTcx
NEJDRjUwNzAwODg1QjRGIC8qIENvZGVUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkE3NjIw
NTFEQjkyNDI5MDBCN0EyRkQgLyogQ29sbGVjdGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk3OUZDOEEwODFFMzJFOUYwMDBEODhGMEUgLyogREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTUzMjQzOTgxODU2QTQ4OTAwMkVENjkyIC8qIENvbWJpbmVkRG9t
YWlucy5qc29uIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRjMwRTE2RjVDRDAwQjM0NDYwIC8q
IENvbW1vbklkZW50aWZpZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE1RjE1RjE0QjdBNzNF
MDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggaW4gSGVhZGVycyAqLywKQEAgLTgyOTEsNyAr
ODI5NSw2IEBACiAJCQkJMEZDMjBDQjYxODUyRTJDNjAwQzlFOTU0IC8qIERGR1N0cmVuZ3RoUmVk
dWN0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjM5NDc4MTVEQ0UzNEIwMDZBNTk3
QyAvKiBERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjUw
QUYzQzE5M0U4QjM5MDA2NzRFRTggLyogREZHU3RydWN0dXJlQ2xvYmJlclN0YXRlLmggaW4gSGVh
ZGVycyAqLywKLQkJCQkwRjc5MDg1NjE5QTI5MEIyMDBGNjMxMEMgLyogREZHU3RydWN0dXJlUmVn
aXN0cmF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkZDQ0ZGMThBNjAwNzAwMDFB
MjdGOCAvKiBERkdUaHJlYWREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMwOTdBMjE0NkIy
OENDMDBDRjI0NDIgLyogREZHVGh1bmtzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4QTMyODE3
RDUxRjU3MDBDQTJDNDAgLyogREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5oIGluIEhlYWRl
cnMgKi8sCkBAIC04Njc5LDYgKzg2ODIsNyBAQAogCQkJCUE1MEU0QjY0MTg4MDlERDUwMDY4QTQ2
RCAvKiBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUw
M0ZBMkExODhGMTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE1MTNFNUMwMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVj
dGVkU2NyaXB0SG9zdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzk4MEMxNkQxRTNBOTQwRTAwQjcx
NjE1IC8qIERGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1
MTNFNUMyMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdFByb3RvdHlwZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQzQ0MkNCMjUxQTZDREI4QzAwNUQzRDdDIC8qIEpTSW5wdXRz
Lmpzb24gaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZGODE3QjZCNUFCMDBBN0FFM0YgLyogSlNJ
bnQxNkFycmF5LmggaW4gSGVhZGVycyAqLywKQEAgLTk5OTcsNyArMTAwMDEsNiBAQAogCQkJCTBG
QzIwQ0I1MTg1MkUyQzYwMEM5RTk1NCAvKiBERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGN0RGMTNCMUUyOTcxMTEwMDk1OTUxQiAvKiBKU0Rlc3RydWN0
aWJsZU9iamVjdFN1YnNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGODkzQkRCMTkzNkUy
M0MwMDEyMTFGNCAvKiBERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCTBGNzkwODU1MTlBMjkwQjIwMEY2MzEwQyAvKiBERkdTdHJ1Y3R1cmVSZWdpc3RyYXRp
b25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJGQ0NGRTE4QTYwMDcwMDAxQTI3Rjgg
LyogREZHVGhyZWFkRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkMwOTdBMTE0NkIyOENB
MDBDRjI0NDIgLyogREZHVGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDhBMzI3MTdE
NTFGNTcwMENBMkM0MCAvKiBERkdUaWVyVXBDaGVja0luamVjdGlvblBoYXNlLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMTAwMzksNiArMTAwNDIsNyBAQAogCQkJCTE0QUQ5MTE3MURDQTk3RkQwMDE0
RjlGRSAvKiBFdmFsQ29kZUJsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0NzM0MUUyMURD
MkNFOTYwMEFBMjlCQSAvKiBFdmFsRXhlY3V0YWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
NTQ5ODIwMzE4OTFEMEIwMDA4MUU1QjggLyogRXZlbnRMb29wLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTc5ODBDMTZDMUUzQTk0MEUwMEI3MTYxNSAvKiBERkdSZWdpc3RlcmVkU3RydWN0dXJlU2V0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFMUMwRkZGMUIxOTRGRDEwMEI1M0ZDQSAvKiBFeGNl
cHRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkU4MEMxOUIxRDc3NkE5ODAwODUxMEMwIC8q
IEV4Y2VwdGlvbkV2ZW50TG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYxMkRFMEYx
OTc5RDVGRDAwMDZGRjRFIC8qIEV4Y2VwdGlvbkZ1enouY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNp
b24gMjExMjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MjUsNiArMjcyNSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpk
ZXRlcm1pbmVMaXZlbmVzcyhjb25zdCAKICAgICAvLyBHQyB3ZSBzdGlsbCBoYXZlIG5vdCBwcm92
ZWQgbGl2ZW5lc3MsIHRoZW4gdGhpcyBjb2RlIGJsb2NrIGlzIHRvYXN0LgogICAgIGJvb2wgYWxs
QXJlTGl2ZVNvRmFyID0gdHJ1ZTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGZnQ29t
bW9uLT53ZWFrUmVmZXJlbmNlcy5zaXplKCk7ICsraSkgeworICAgICAgICBBU1NFUlQoIWpzRHlu
YW1pY0Nhc3Q8Q29kZUJsb2NrKj4oZGZnQ29tbW9uLT53ZWFrUmVmZXJlbmNlc1tpXS5nZXQoKSkp
OwogICAgICAgICBpZiAoIUhlYXA6OmlzTWFya2VkQ29uY3VycmVudGx5KGRmZ0NvbW1vbi0+d2Vh
a1JlZmVyZW5jZXNbaV0uZ2V0KCkpKSB7CiAgICAgICAgICAgICBhbGxBcmVMaXZlU29GYXIgPSBm
YWxzZTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N0cnVjdHVyZVNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5jcHAJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw2NCArMjYsMTEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTdHJ1
Y3R1cmVTZXQuaCIKIAotI2luY2x1ZGUgIkRGR0Fic3RyYWN0VmFsdWUuaCIKICNpbmNsdWRlICJU
cmFja2VkUmVmZXJlbmNlcy5oIgogI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLSNpZiBFTkFCTEUoREZHX0pJVCkKLQotdm9pZCBTdHJ1Y3R1cmVTZXQ6
OmZpbHRlcihjb25zdCBERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWUmIG90aGVyKQotewotICAg
IGdlbmVyaWNGaWx0ZXIoWyZdIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgLT4gYm9vbCB7IHJldHVy
biBvdGhlci5jb250YWlucyhzdHJ1Y3R1cmUpOyB9KTsKLX0KLQotdm9pZCBTdHJ1Y3R1cmVTZXQ6
OmZpbHRlcihTcGVjdWxhdGVkVHlwZSB0eXBlKQotewotICAgIGdlbmVyaWNGaWx0ZXIoCi0gICAg
ICAgIFsmXSAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIC0+IGJvb2wgewotICAgICAgICAgICAgcmV0
dXJuIHR5cGUgJiBzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmUoc3RydWN0dXJlKTsKLSAgICAgICAg
fSk7Ci19Ci0KLXZvaWQgU3RydWN0dXJlU2V0OjpmaWx0ZXJBcnJheU1vZGVzKEFycmF5TW9kZXMg
YXJyYXlNb2RlcykKLXsKLSAgICBnZW5lcmljRmlsdGVyKAotICAgICAgICBbJl0gKFN0cnVjdHVy
ZSogc3RydWN0dXJlKSAtPiBib29sIHsKLSAgICAgICAgICAgIHJldHVybiBhcnJheU1vZGVzICYg
YXJyYXlNb2RlRnJvbVN0cnVjdHVyZShzdHJ1Y3R1cmUpOwotICAgICAgICB9KTsKLX0KLQotdm9p
ZCBTdHJ1Y3R1cmVTZXQ6OmZpbHRlcihjb25zdCBERkc6OkFic3RyYWN0VmFsdWUmIG90aGVyKQot
ewotICAgIGZpbHRlcihvdGhlci5tX3N0cnVjdHVyZSk7Ci0gICAgZmlsdGVyKG90aGVyLm1fdHlw
ZSk7Ci0gICAgZmlsdGVyQXJyYXlNb2RlcyhvdGhlci5tX2FycmF5TW9kZXMpOwotfQotCi0jZW5k
aWYgLy8gRU5BQkxFKERGR19KSVQpCi0KLVNwZWN1bGF0ZWRUeXBlIFN0cnVjdHVyZVNldDo6c3Bl
Y3VsYXRpb25Gcm9tU3RydWN0dXJlcygpIGNvbnN0Ci17Ci0gICAgU3BlY3VsYXRlZFR5cGUgcmVz
dWx0ID0gU3BlY05vbmU7Ci0gICAgZm9yRWFjaCgKLSAgICAgICAgWyZdIChTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkgewotICAgICAgICAgICAgbWVyZ2VTcGVjdWxhdGlvbihyZXN1bHQsIHNwZWN1bGF0
aW9uRnJvbVN0cnVjdHVyZShzdHJ1Y3R1cmUpKTsKLSAgICAgICAgfSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotQXJyYXlNb2RlcyBTdHJ1Y3R1cmVTZXQ6OmFycmF5TW9kZXNGcm9tU3RydWN0
dXJlcygpIGNvbnN0Ci17Ci0gICAgQXJyYXlNb2RlcyByZXN1bHQgPSAwOwotICAgIGZvckVhY2go
Ci0gICAgICAgIFsmXSAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIHsKLSAgICAgICAgICAgIG1lcmdl
QXJyYXlNb2RlcyhyZXN1bHQsIGFzQXJyYXlNb2RlcyhzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgp
KSk7Ci0gICAgICAgIH0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIHZvaWQgU3RydWN0dXJl
U2V0OjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0
KSBjb25zdAogewogICAgIENvbW1hUHJpbnRlciBjb21tYTsKQEAgLTk3LDEzICs0NCw1IEBAIHZv
aWQgU3RydWN0dXJlU2V0OjpkdW1wKFByaW50U3RyZWFtJiBvdXQKICAgICBkdW1wSW5Db250ZXh0
KG91dCwgbnVsbHB0cik7CiB9CiAKLXZvaWQgU3RydWN0dXJlU2V0Ojp2YWxpZGF0ZVJlZmVyZW5j
ZXMoY29uc3QgVHJhY2tlZFJlZmVyZW5jZXMmIHRyYWNrZWRSZWZlcmVuY2VzKSBjb25zdAotewot
ICAgIGZvckVhY2goCi0gICAgICAgIFsmXSAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIHsKLSAgICAg
ICAgICAgIHRyYWNrZWRSZWZlcmVuY2VzLmNoZWNrKHN0cnVjdHVyZSk7Ci0gICAgICAgIH0pOwot
fQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N0cnVjdHVyZVNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAkocmV2aXNpb24gMjExMjI5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSwxMSArMzUsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgVHJhY2tlZFJlZmVyZW5jZXM7
CiAKLW5hbWVzcGFjZSBERkcgewotY2xhc3MgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTsKLXN0cnVj
dCBBYnN0cmFjdFZhbHVlOwotfQotCiBjbGFzcyBTdHJ1Y3R1cmVTZXQgOiBwdWJsaWMgVGlueVB0
clNldDxTdHJ1Y3R1cmUqPiB7CiBwdWJsaWM6CiAgICAgLy8gSSByZWFsbHkgd2FudCB0byBkbyB0
aGlzOgpAQCAtNjYsMjAgKzYxLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gb25seUVudHJ5
KCk7CiAgICAgfQogICAgIAotI2lmIEVOQUJMRShERkdfSklUKQotICAgIHZvaWQgZmlsdGVyKGNv
bnN0IERGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1ZSYpOwotICAgIHZvaWQgZmlsdGVyKFNwZWN1
bGF0ZWRUeXBlKTsKLSAgICB2b2lkIGZpbHRlckFycmF5TW9kZXMoQXJyYXlNb2Rlcyk7Ci0gICAg
dm9pZCBmaWx0ZXIoY29uc3QgREZHOjpBYnN0cmFjdFZhbHVlJik7Ci0jZW5kaWYgLy8gRU5BQkxF
KERGR19KSVQpCi0gICAgCi0gICAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tU3RydWN0
dXJlcygpIGNvbnN0OwotICAgIEFycmF5TW9kZXMgYXJyYXlNb2Rlc0Zyb21TdHJ1Y3R1cmVzKCkg
Y29uc3Q7Ci0gICAgCiAgICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENv
bnRleHQqKSBjb25zdDsKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKLSAgICAK
LSAgICB2b2lkIHZhbGlkYXRlUmVmZXJlbmNlcyhjb25zdCBUcmFja2VkUmVmZXJlbmNlcyYpIGNv
bnN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMjExMjI5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTExMiw3ICsxMTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkdW1w
KFByaW50U3RyZWFtJiBvdXQpOwogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAg
RmlsdHJhdGlvblJlc3VsdCBmaWx0ZXIoVCBub2RlLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCwg
U3BlY3VsYXRlZFR5cGUgYWRtaXR0ZWRUeXBlcyA9IFNwZWNOb25lKQorICAgIEZpbHRyYXRpb25S
ZXN1bHQgZmlsdGVyKFQgbm9kZSwgY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgc2V0LCBT
cGVjdWxhdGVkVHlwZSBhZG1pdHRlZFR5cGVzID0gU3BlY05vbmUpCiAgICAgewogICAgICAgICBy
ZXR1cm4gZmlsdGVyKGZvck5vZGUobm9kZSksIHNldCwgYWRtaXR0ZWRUeXBlcyk7CiAgICAgfQpA
QCAtMTQxLDcgKzE0MSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGZpbHRlckNsYXNzSW5m
byhmb3JOb2RlKG5vZGUpLCBjbGFzc0luZm8pOwogICAgIH0KIAotICAgIEZpbHRyYXRpb25SZXN1
bHQgZmlsdGVyKEFic3RyYWN0VmFsdWUmLCBjb25zdCBTdHJ1Y3R1cmVTZXQmLCBTcGVjdWxhdGVk
VHlwZSBhZG1pdHRlZFR5cGVzID0gU3BlY05vbmUpOworICAgIEZpbHRyYXRpb25SZXN1bHQgZmls
dGVyKEFic3RyYWN0VmFsdWUmLCBjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0JiwgU3BlY3Vs
YXRlZFR5cGUgYWRtaXR0ZWRUeXBlcyA9IFNwZWNOb25lKTsKICAgICBGaWx0cmF0aW9uUmVzdWx0
IGZpbHRlckFycmF5TW9kZXMoQWJzdHJhY3RWYWx1ZSYsIEFycmF5TW9kZXMpOwogICAgIEZpbHRy
YXRpb25SZXN1bHQgZmlsdGVyKEFic3RyYWN0VmFsdWUmLCBTcGVjdWxhdGVkVHlwZSk7CiAgICAg
RmlsdHJhdGlvblJlc3VsdCBmaWx0ZXJCeVZhbHVlKEFic3RyYWN0VmFsdWUmLCBGcm96ZW5WYWx1
ZSk7CkBAIC0xNTYsNyArMTU2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZvckFsbFZhbHVlcyh1
bnNpZ25lZCBpbmRleEluQmxvY2ssIEZ1bmN0b3ImKTsKICAgICAKICAgICB2b2lkIGNsb2JiZXJT
dHJ1Y3R1cmVzKHVuc2lnbmVkIGluZGV4SW5CbG9jayk7Ci0gICAgdm9pZCBvYnNlcnZlVHJhbnNp
dGlvbih1bnNpZ25lZCBpbmRleEluQmxvY2ssIFN0cnVjdHVyZSogZnJvbSwgU3RydWN0dXJlKiB0
byk7CisgICAgdm9pZCBvYnNlcnZlVHJhbnNpdGlvbih1bnNpZ25lZCBpbmRleEluQmxvY2ssIFJl
Z2lzdGVyZWRTdHJ1Y3R1cmUgZnJvbSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSB0byk7CiAgICAgdm9p
ZCBvYnNlcnZlVHJhbnNpdGlvbnModW5zaWduZWQgaW5kZXhJbkJsb2NrLCBjb25zdCBUcmFuc2l0
aW9uVmVjdG9yJik7CiAgICAgdm9pZCBzZXREaWRDbG9iYmVyKCk7CiAgICAgCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTcz
LDcgKzczLDcgQEAgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OgogICAg
IGlmIChpc0NlbGxTcGVjdWxhdGlvbih2YWx1ZS5tX3R5cGUpICYmICF2YWx1ZS5tX3N0cnVjdHVy
ZS5pc1RvcCgpKSB7CiAgICAgICAgIGJvb2wgYWxsVHJ1ZSA9IHRydWU7CiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IHZhbHVlLm1fc3RydWN0dXJlLnNpemUoKTsgaS0tOykgewotICAgICAgICAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2YWx1ZS5tX3N0cnVjdHVyZVtpXTsKKyAgICAgICAg
ICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gdmFsdWUubV9zdHJ1Y3R1cmVbaV07
CiAgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKG1fY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSkKICAgICAgICAg
ICAgICAgICB8fCBzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IFN0cmluZ1R5cGUpIHsK
ICAgICAgICAgICAgICAgICBhbGxUcnVlID0gZmFsc2U7CkBAIC0xNTIsNyArMTUyLDcgQEAgaW5s
aW5lIGJvb2wgaXNUb1RoaXNBbklkZW50aXR5KGJvb2wgaXNTdAogCiAgICAgaWYgKChpc1N0cmlj
dE1vZGUgfHwgKHZhbHVlRm9yTm9kZS5tX3R5cGUgJiYgISh2YWx1ZUZvck5vZGUubV90eXBlICYg
flNwZWNPYmplY3QpKSkgJiYgdmFsdWVGb3JOb2RlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpIHsK
ICAgICAgICAgYm9vbCBvdmVycmlkZXNUb1RoaXMgPSBmYWxzZTsKLSAgICAgICAgdmFsdWVGb3JO
b2RlLm1fc3RydWN0dXJlLmZvckVhY2goWyZdKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7CisgICAg
ICAgIHZhbHVlRm9yTm9kZS5tX3N0cnVjdHVyZS5mb3JFYWNoKFsmXShSZWdpc3RlcmVkU3RydWN0
dXJlIHN0cnVjdHVyZSkgewogICAgICAgICAgICAgVHlwZUluZm8gdHlwZSA9IHN0cnVjdHVyZS0+
dHlwZUluZm8oKTsKICAgICAgICAgICAgIEFTU0VSVCh0eXBlLmlzT2JqZWN0KCkgfHwgdHlwZS50
eXBlKCkgPT0gU3RyaW5nVHlwZSB8fCB0eXBlLnR5cGUoKSA9PSBTeW1ib2xUeXBlKTsKICAgICAg
ICAgICAgIGlmICghaXNTdHJpY3RNb2RlKQpAQCAtMTY1NiwxMCArMTY1NiwxMCBAQCBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAKICAgICAgICAgLy8gRklYTUU6IFdl
IGNvdWxkIGRvIGJldHRlciBoZXJlIGlmIHdlIHByb3ZlIHRoYXQgdGhlCiAgICAgICAgIC8vIGlu
Y29taW5nIHZhbHVlIGhhcyBvbmx5IGEgc2luZ2xlIHN0cnVjdHVyZS4KLSAgICAgICAgU3RydWN0
dXJlU2V0IHN0cnVjdHVyZVNldDsKLSAgICAgICAgc3RydWN0dXJlU2V0LmFkZChnbG9iYWxPYmpl
Y3QtPm9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGUoQXJyYXlXaXRoSW50MzIp
KTsKLSAgICAgICAgc3RydWN0dXJlU2V0LmFkZChnbG9iYWxPYmplY3QtPm9yaWdpbmFsQXJyYXlT
dHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGUoQXJyYXlXaXRoQ29udGlndW91cykpOwotICAgICAgICBz
dHJ1Y3R1cmVTZXQuYWRkKGdsb2JhbE9iamVjdC0+b3JpZ2luYWxBcnJheVN0cnVjdHVyZUZvcklu
ZGV4aW5nVHlwZShBcnJheVdpdGhEb3VibGUpKTsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVy
ZVNldCBzdHJ1Y3R1cmVTZXQ7CisgICAgICAgIHN0cnVjdHVyZVNldC5hZGQobV9ncmFwaC5yZWdp
c3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVGb3JJbmRl
eGluZ1R5cGUoQXJyYXlXaXRoSW50MzIpKSk7CisgICAgICAgIHN0cnVjdHVyZVNldC5hZGQobV9n
cmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm9yaWdpbmFsQXJyYXlTdHJ1Y3R1
cmVGb3JJbmRleGluZ1R5cGUoQXJyYXlXaXRoQ29udGlndW91cykpKTsKKyAgICAgICAgc3RydWN0
dXJlU2V0LmFkZChtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+b3JpZ2lu
YWxBcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZShBcnJheVdpdGhEb3VibGUpKSk7CiAKICAg
ICAgICAgZm9yTm9kZShub2RlKS5zZXQobV9ncmFwaCwgc3RydWN0dXJlU2V0KTsKICAgICAgICAg
YnJlYWs7CkBAIC0xODU2LDcgKzE4NTYsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICAvLyBzdHJ1Y3R1cmUuCiAgICAgICAgICAgICBmaWx0
ZXIoCiAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGQxKCksCi0gICAgICAgICAgICAgICAgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+c3RyaW5nT2JqZWN0
U3RydWN0dXJlKCkpOworICAgICAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUo
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+c3RyaW5nT2Jq
ZWN0U3RydWN0dXJlKCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFN0cmlu
Z09yU3RyaW5nT2JqZWN0VXNlOgogICAgICAgICAgICAgYnJlYWs7CkBAIC0xOTYzLDcgKzE5NjMs
NyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgfQogICAg
ICAgICAKICAgICBjYXNlIE5ld09iamVjdDoKLSAgICAgICAgQVNTRVJUKG5vZGUtPnN0cnVjdHVy
ZSgpKTsKKyAgICAgICAgQVNTRVJUKCEhbm9kZS0+c3RydWN0dXJlKCkuZ2V0KCkpOwogICAgICAg
ICBmb3JOb2RlKG5vZGUpLnNldChtX2dyYXBoLCBub2RlLT5zdHJ1Y3R1cmUoKSk7CiAgICAgICAg
IGJyZWFrOwogCkBAIC0yMTIxLDcgKzIxMjEsNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gbnVsbHB0cjsKICAgICAgICAgICAgIGJvb2wgb2sgPSB0cnVlOwogICAgICAgICAgICAgZm9y
Tm9kZShub2RlLT5jaGlsZDEoKSkubV9zdHJ1Y3R1cmUuZm9yRWFjaCgKLSAgICAgICAgICAgICAg
ICBbJl0gKFN0cnVjdHVyZSogc3RydWN0dXJlKSB7CisgICAgICAgICAgICAgICAgWyZdIChSZWdp
c3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoIWds
b2JhbE9iamVjdCkKICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbE9iamVjdCA9IHN0cnVj
dHVyZS0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGdsb2Jh
bE9iamVjdCAhPSBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpKQpAQCAtMjE4NCw3ICsyMTg0LDcg
QEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICBpZiAo
dmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKQogICAgICAgICAgICAgJiYgKG5vZGUtPmNoaWxk
MSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlIHx8ICEodmFsdWUubV90eXBlICYgflNwZWNDZWxsKSkp
IHsKICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBoLmlkZW50aWZp
ZXJzKClbbm9kZS0+aWRlbnRpZmllck51bWJlcigpXTsKLSAgICAgICAgICAgIEdldEJ5SWRTdGF0
dXMgc3RhdHVzID0gR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcih2YWx1ZS5tX3N0cnVjdHVyZS5z
ZXQoKSwgdWlkKTsKKyAgICAgICAgICAgIEdldEJ5SWRTdGF0dXMgc3RhdHVzID0gR2V0QnlJZFN0
YXR1czo6Y29tcHV0ZUZvcih2YWx1ZS5tX3N0cnVjdHVyZS50b1N0cnVjdHVyZVNldCgpLCB1aWQp
OwogICAgICAgICAgICAgaWYgKHN0YXR1cy5pc1NpbXBsZSgpKSB7CiAgICAgICAgICAgICAgICAg
Ly8gRmlndXJlIG91dCB3aGF0IHRoZSByZXN1bHQgaXMgZ29pbmcgdG8gYmUgLSBpcyBpdCBUT1As
IGEgY29uc3RhbnQsIG9yIG1heWJlCiAgICAgICAgICAgICAgICAgLy8gc29tZXRoaW5nIG1vcmUg
c3VidGxlPwpAQCAtMjIzOCw3ICsyMjM4LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeQogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6IHsKICAgICAgICAgQWJzdHJh
Y3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKIAotICAgICAgICBTdHJ1
Y3R1cmVTZXQmIHNldCA9IG5vZGUtPnN0cnVjdHVyZVNldCgpOworICAgICAgICBjb25zdCBSZWdp
c3RlcmVkU3RydWN0dXJlU2V0JiBzZXQgPSBub2RlLT5zdHJ1Y3R1cmVTZXQoKTsKICAgICAgICAg
CiAgICAgICAgIC8vIEl0J3MgaW50ZXJlc3RpbmcgdGhhdCB3ZSBjb3VsZCBoYXZlIHByb3ZlbiB0
aGF0IHRoZSBvYmplY3QgaGFzIGEgbGFyZ2VyIHN0cnVjdHVyZSBzZXQKICAgICAgICAgLy8gdGhh
dCBpbmNsdWRlcyB0aGUgc2V0IHdlJ3JlIHRlc3RpbmcuIEluIHRoYXQgY2FzZSB3ZSBjb3VsZCBt
YWtlIHRoZSBzdHJ1Y3R1cmUgY2hlY2sKQEAgLTIyNzAsMTEgKzIyNzAsMTEgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2OTg4CiAgICAgICAgIAogICAgICAgICBBYnN0
cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICBTdHJ1
Y3R1cmVTZXQmIHNldCA9IG5vZGUtPnN0cnVjdHVyZVNldCgpOworICAgICAgICBjb25zdCBSZWdp
c3RlcmVkU3RydWN0dXJlU2V0JiBzZXQgPSBub2RlLT5zdHJ1Y3R1cmVTZXQoKTsKICAgICAgICAg
CiAgICAgICAgIGlmICh2YWx1ZS52YWx1ZSgpKSB7CiAgICAgICAgICAgICBpZiAoU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBqc0R5bmFtaWNDYXN0PFN0cnVjdHVyZSo+KHZhbHVlLnZhbHVlKCkpKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKHNldC5jb250YWlucyhzdHJ1Y3R1cmUpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKHNldC5jb250YWlucyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVj
dHVyZSkpKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUuc2V0Rm91bmRDb25zdGFudHMo
dHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KQEAg
LTIyODksNyArMjI4OSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHkKICAgICAgICAgICAgICAgICBub2RlLAogICAgICAgICAgICAgICAgIFsmXSAoTm9kZSogaW5j
b21pbmcpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKFN0cnVjdHVyZSogc3RydWN0dXJlID0g
aW5jb21pbmctPmR5bmFtaWNDYXN0Q29uc3RhbnQ8U3RydWN0dXJlKj4oKSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHNldC5jb250YWlucyhzdHJ1Y3R1cmUpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHNldC5jb250YWlucyhtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0
cnVjdHVyZSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBhbGxHb29kID0gZmFsc2U7CkBAIC0y
MzAwLDggKzIzMDAsOCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBpZiAoU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBzZXQub25seVN0cnVjdHVyZSgpKSB7Ci0gICAgICAgICAgICBm
aWx0ZXJCeVZhbHVlKG5vZGUtPmNoaWxkMSgpLCAqbV9ncmFwaC5mcmVlemUoc3RydWN0dXJlKSk7
CisgICAgICAgIGlmIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IHNldC5vbmx5U3Ry
dWN0dXJlKCkpIHsKKyAgICAgICAgICAgIGZpbHRlckJ5VmFsdWUobm9kZS0+Y2hpbGQxKCksICpt
X2dyYXBoLmZyZWV6ZShzdHJ1Y3R1cmUuZ2V0KCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIApAQCAtMjQzMiw3ICsyNDMyLDcgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgIH0KICAgICBjYXNlIEFycmF5aWZ5VG9TdHJ1Y3R1
cmU6IHsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKTsKLSAgICAgICAgaWYgKHZhbHVlLm1fc3RydWN0dXJlLmlzU3Vic2V0T2YoU3RydWN0dXJl
U2V0KG5vZGUtPnN0cnVjdHVyZSgpKSkpCisgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5p
c1N1YnNldE9mKFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQobm9kZS0+c3RydWN0dXJlKCkpKSkKICAg
ICAgICAgICAgIG1fc3RhdGUuc2V0Rm91bmRDb25zdGFudHModHJ1ZSk7CiAgICAgICAgIGNsb2Ji
ZXJTdHJ1Y3R1cmVzKGNsb2JiZXJMaW1pdCk7CiAgICAgICAgIApAQCAtMjU0NiwxMCArMjU0Niwx
MCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIFVu
aXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBoLmlkZW50aWZpZXJzKClbbm9kZS0+bXVsdGlH
ZXRCeU9mZnNldERhdGEoKS5pZGVudGlmaWVyTnVtYmVyXTsKIAogICAgICAgICBBYnN0cmFjdFZh
bHVlIGJhc2UgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgU3RydWN0dXJlU2V0
IGJhc2VTZXQ7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgYmFzZVNldDsKICAgICAg
ICAgQWJzdHJhY3RWYWx1ZSByZXN1bHQ7CiAgICAgICAgIGZvciAoY29uc3QgTXVsdGlHZXRCeU9m
ZnNldENhc2UmIGdldENhc2UgOiBub2RlLT5tdWx0aUdldEJ5T2Zmc2V0RGF0YSgpLmNhc2VzKSB7
Ci0gICAgICAgICAgICBTdHJ1Y3R1cmVTZXQgc2V0ID0gZ2V0Q2FzZS5zZXQoKTsKKyAgICAgICAg
ICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgc2V0ID0gZ2V0Q2FzZS5zZXQoKTsKICAgICAgICAg
ICAgIHNldC5maWx0ZXIoYmFzZSk7CiAgICAgICAgICAgICBpZiAoc2V0LmlzRW1wdHkoKSkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTI1OTEsNyArMjU5MSw3IEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICB9CiAgICAgICAgIAogICAgIGNhc2Ug
TXVsdGlQdXRCeU9mZnNldDogewotICAgICAgICBTdHJ1Y3R1cmVTZXQgbmV3U2V0OworICAgICAg
ICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0IG5ld1NldDsKICAgICAgICAgVHJhbnNpdGlvblZlY3Rv
ciB0cmFuc2l0aW9uczsKICAgICAgICAgCiAgICAgICAgIC8vIE9yZGluYXJpbHkgeW91IGhhdmUg
dG8gYmUgY2FyZWZ1bCB3aXRoIGNhbGxpbmcgc2V0Rm91bmRDb25zdGFudHMoKQpAQCAtMjYwNCw3
ICsyNjA0LDcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAg
ICAgICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbm9kZS0+bXVsdGlQdXRCeU9mZnNldERh
dGEoKS52YXJpYW50cy5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIGNvbnN0IFB1dEJ5SWRW
YXJpYW50JiB2YXJpYW50ID0gbm9kZS0+bXVsdGlQdXRCeU9mZnNldERhdGEoKS52YXJpYW50c1tp
XTsKLSAgICAgICAgICAgIFN0cnVjdHVyZVNldCB0aGlzU2V0ID0gdmFyaWFudC5vbGRTdHJ1Y3R1
cmUoKTsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgdGhpc1NldCA9ICptX2dy
YXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKTsKICAgICAgICAgICAg
IHRoaXNTZXQuZmlsdGVyKGJhc2UpOwogICAgICAgICAgICAgaWYgKHRoaXNTZXQuaXNFbXB0eSgp
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjYxNCwxMSArMjYxNCwxMiBAQCBib29s
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICByZXN1bHRp
bmdWYWx1ZS5tZXJnZSh0aGlzVmFsdWUpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAo
dmFyaWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb24pIHsKLSAgICAgICAg
ICAgICAgICBpZiAodGhpc1NldC5vbmx5U3RydWN0dXJlKCkgIT0gdmFyaWFudC5uZXdTdHJ1Y3R1
cmUoKSkgeworICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgbmV3U3RydWN0dXJl
ID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKTsKKyAg
ICAgICAgICAgICAgICBpZiAodGhpc1NldC5vbmx5U3RydWN0dXJlKCkgIT0gbmV3U3RydWN0dXJl
KSB7CiAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25zLmFwcGVuZCgKLSAgICAgICAgICAg
ICAgICAgICAgICAgIFRyYW5zaXRpb24odmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9u
KCksIHZhcmlhbnQubmV3U3RydWN0dXJlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFRy
YW5zaXRpb24obV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm9sZFN0cnVjdHVyZUZv
clRyYW5zaXRpb24oKSksIG5ld1N0cnVjdHVyZSkpOwogICAgICAgICAgICAgICAgIH0gLy8gZWxz
ZSB0aGlzIGlzIHJlYWxseSBhIHJlcGxhY2UuCi0gICAgICAgICAgICAgICAgbmV3U2V0LmFkZCh2
YXJpYW50Lm5ld1N0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICBuZXdTZXQuYWRkKG5ld1N0
cnVjdHVyZSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIEFTU0VSVCh2
YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6UmVwbGFjZSk7CiAgICAgICAgICAgICAg
ICAgbmV3U2V0Lm1lcmdlKHRoaXNTZXQpOwpAQCAtMjcwNSwyNSArMjcwNiwyNSBAQCBib29sIEFi
c3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGlmICh2YWx1ZS5tX3N0
cnVjdHVyZS5pc0Zpbml0ZSgpKSB7CiAgICAgICAgICAgICBQdXRCeUlkU3RhdHVzIHN0YXR1cyA9
IFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgICAgICAgICAgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSwKLSAgICAgICAgICAgICAgICB2YWx1
ZS5tX3N0cnVjdHVyZS5zZXQoKSwKKyAgICAgICAgICAgICAgICB2YWx1ZS5tX3N0cnVjdHVyZS50
b1N0cnVjdHVyZVNldCgpLAogICAgICAgICAgICAgICAgIG1fZ3JhcGguaWRlbnRpZmllcnMoKVtu
b2RlLT5pZGVudGlmaWVyTnVtYmVyKCldLAogICAgICAgICAgICAgICAgIG5vZGUtPm9wKCkgPT0g
UHV0QnlJZERpcmVjdCk7CiAKICAgICAgICAgICAgIGlmIChzdGF0dXMuaXNTaW1wbGUoKSkgewot
ICAgICAgICAgICAgICAgIFN0cnVjdHVyZVNldCBuZXdTZXQ7CisgICAgICAgICAgICAgICAgUmVn
aXN0ZXJlZFN0cnVjdHVyZVNldCBuZXdTZXQ7CiAgICAgICAgICAgICAgICAgVHJhbnNpdGlvblZl
Y3RvciB0cmFuc2l0aW9uczsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBzdGF0dXMubnVtVmFyaWFudHMoKTsgaS0tOykgewogICAgICAgICAgICAg
ICAgICAgICBjb25zdCBQdXRCeUlkVmFyaWFudCYgdmFyaWFudCA9IHN0YXR1c1tpXTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKHZhcmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpUcmFu
c2l0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG5l
d1N0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1
cmUoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9ucy5hcHBlbmQoCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNpdGlvbigKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCksIHZhcmlhbnQu
bmV3U3RydWN0dXJlKCkpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0
ZXJTdHJ1Y3R1cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBuZXdTZXQuYWRkKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQub2xkU3Ry
dWN0dXJlRm9yVHJhbnNpdGlvbigpKSwgbmV3U3RydWN0dXJlKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBuZXdTZXQuYWRkKG5ld1N0cnVjdHVyZSk7CiAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQodmFyaWFudC5raW5kKCkgPT0g
UHV0QnlJZFZhcmlhbnQ6OlJlcGxhY2UpOwotICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2V0
Lm1lcmdlKHZhcmlhbnQub2xkU3RydWN0dXJlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAg
bmV3U2V0Lm1lcmdlKCptX2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50Lm9sZFN0cnVjdHVy
ZSgpKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgCkBAIC0zMDU5LDcgKzMwNjAsNyBAQCB2b2lkIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFic3RyYWN0U3RhdGVUeXBlPgog
dm9pZCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6b2JzZXJ2ZVRyYW5z
aXRpb24oCi0gICAgdW5zaWduZWQgY2xvYmJlckxpbWl0LCBTdHJ1Y3R1cmUqIGZyb20sIFN0cnVj
dHVyZSogdG8pCisgICAgdW5zaWduZWQgY2xvYmJlckxpbWl0LCBSZWdpc3RlcmVkU3RydWN0dXJl
IGZyb20sIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgdG8pCiB7CiAgICAgQWJzdHJhY3RWYWx1ZTo6VHJh
bnNpdGlvbk9ic2VydmVyIHRyYW5zaXRpb25PYnNlcnZlcihmcm9tLCB0byk7CiAgICAgZm9yQWxs
VmFsdWVzKGNsb2JiZXJMaW1pdCwgdHJhbnNpdGlvbk9ic2VydmVyKTsKQEAgLTMxMzIsNyArMzEz
Myw3IEBAIHZvaWQgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKIAogdGVtcGxh
dGU8dHlwZW5hbWUgQWJzdHJhY3RTdGF0ZVR5cGU+CiBGaWx0cmF0aW9uUmVzdWx0IEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpmaWx0ZXIoCi0gICAgQWJzdHJhY3RWYWx1
ZSYgdmFsdWUsIGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0LCBTcGVjdWxhdGVkVHlwZSBhZG1pdHRl
ZFR5cGVzKQorICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlLCBjb25zdCBSZWdpc3RlcmVkU3RydWN0
dXJlU2V0JiBzZXQsIFNwZWN1bGF0ZWRUeXBlIGFkbWl0dGVkVHlwZXMpCiB7CiAgICAgaWYgKHZh
bHVlLmZpbHRlcihtX2dyYXBoLCBzZXQsIGFkbWl0dGVkVHlwZXMpID09IEZpbHRyYXRpb25PSykK
ICAgICAgICAgcmV0dXJuIEZpbHRyYXRpb25PSzsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcAkocmV2aXNpb24gMjExMjI5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTIsOCArNTIsMTAgQEAgdm9pZCBBYnN0cmFjdFZhbHVlOjpzZXQoR3JhcGgmIGdyYXBo
LCBjbwogewogICAgIGlmICghIXZhbHVlICYmIHZhbHVlLnZhbHVlKCkuaXNDZWxsKCkpIHsKICAg
ICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2YWx1ZS5zdHJ1Y3R1cmUoKTsKLSAgICAgICAg
aWYgKGdyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkgPT0gU3RydWN0dXJlUmVnaXN0
ZXJlZEFuZFdhdGNoZWQpIHsKLSAgICAgICAgICAgIG1fc3RydWN0dXJlID0gc3RydWN0dXJlOwor
ICAgICAgICBTdHJ1Y3R1cmVSZWdpc3RyYXRpb25SZXN1bHQgcmVzdWx0OworICAgICAgICBSZWdp
c3RlcmVkU3RydWN0dXJlIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgPSBncmFwaC5yZWdpc3RlclN0cnVj
dHVyZShzdHJ1Y3R1cmUsIHJlc3VsdCk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gU3RydWN0dXJl
UmVnaXN0ZXJlZEFuZFdhdGNoZWQpIHsKKyAgICAgICAgICAgIG1fc3RydWN0dXJlID0gUmVnaXN0
ZXJlZFN0cnVjdHVyZTsKICAgICAgICAgICAgIGlmIChjbG9iYmVyU3RhdGUgPT0gU3RydWN0dXJl
c0FyZUNsb2JiZXJlZCkgewogICAgICAgICAgICAgICAgIG1fYXJyYXlNb2RlcyA9IEFMTF9BUlJB
WV9NT0RFUzsKICAgICAgICAgICAgICAgICBtX3N0cnVjdHVyZS5jbG9iYmVyKCk7CkBAIC03Nywx
OCArNzksMjMgQEAgdm9pZCBBYnN0cmFjdFZhbHVlOjpzZXQoR3JhcGgmIGdyYXBoLCBjbwogCiB2
b2lkIEFic3RyYWN0VmFsdWU6OnNldChHcmFwaCYgZ3JhcGgsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQogeworICAgIHNldChncmFwaCwgZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKSk7
Cit9CisKK3ZvaWQgQWJzdHJhY3RWYWx1ZTo6c2V0KEdyYXBoJiBncmFwaCwgUmVnaXN0ZXJlZFN0
cnVjdHVyZSBzdHJ1Y3R1cmUpCit7CiAgICAgUkVMRUFTRV9BU1NFUlQoc3RydWN0dXJlKTsKICAg
ICAKICAgICBtX3N0cnVjdHVyZSA9IHN0cnVjdHVyZTsKICAgICBtX2FycmF5TW9kZXMgPSBhc0Fy
cmF5TW9kZXMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSk7Ci0gICAgbV90eXBlID0gc3BlY3Vs
YXRpb25Gcm9tU3RydWN0dXJlKHN0cnVjdHVyZSk7CisgICAgbV90eXBlID0gc3BlY3VsYXRpb25G
cm9tU3RydWN0dXJlKHN0cnVjdHVyZS5nZXQoKSk7CiAgICAgbV92YWx1ZSA9IEpTVmFsdWUoKTsK
ICAgICAKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgYXNzZXJ0SXNSZWdpc3RlcmVkKGdy
YXBoKTsKIH0KIAotdm9pZCBBYnN0cmFjdFZhbHVlOjpzZXQoR3JhcGgmIGdyYXBoLCBjb25zdCBT
dHJ1Y3R1cmVTZXQmIHNldCkKK3ZvaWQgQWJzdHJhY3RWYWx1ZTo6c2V0KEdyYXBoJiBncmFwaCwg
Y29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgc2V0KQogewogICAgIG1fc3RydWN0dXJlID0g
c2V0OwogICAgIG1fYXJyYXlNb2RlcyA9IHNldC5hcnJheU1vZGVzRnJvbVN0cnVjdHVyZXMoKTsK
QEAgLTEwNCw5ICsxMTEsOSBAQCB2b2lkIEFic3RyYWN0VmFsdWU6OnNldFR5cGUoR3JhcGgmIGdy
YXBoCiAgICAgU3BlY3VsYXRlZFR5cGUgY2VsbFR5cGUgPSB0eXBlICYgU3BlY0NlbGw7CiAgICAg
aWYgKGNlbGxUeXBlKSB7CiAgICAgICAgIGlmICghKGNlbGxUeXBlICYgflNwZWNTdHJpbmcpKQot
ICAgICAgICAgICAgbV9zdHJ1Y3R1cmUgPSBncmFwaC5tX3ZtLnN0cmluZ1N0cnVjdHVyZS5nZXQo
KTsKKyAgICAgICAgICAgIG1fc3RydWN0dXJlID0gZ3JhcGguc3RyaW5nU3RydWN0dXJlOwogICAg
ICAgICBlbHNlIGlmIChpc1N5bWJvbFNwZWN1bGF0aW9uKGNlbGxUeXBlKSkKLSAgICAgICAgICAg
IG1fc3RydWN0dXJlID0gZ3JhcGgubV92bS5zeW1ib2xTdHJ1Y3R1cmUuZ2V0KCk7CisgICAgICAg
ICAgICBtX3N0cnVjdHVyZSA9IGdyYXBoLnN5bWJvbFN0cnVjdHVyZTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgbV9zdHJ1Y3R1cmUubWFrZVRvcCgpOwogICAgICAgICBtX2FycmF5TW9kZXMg
PSBBTExfQVJSQVlfTU9ERVM7CkBAIC0yMTcsNyArMjI0LDcgQEAgYm9vbCBBYnN0cmFjdFZhbHVl
OjptZXJnZU9TUkVudHJ5VmFsdWUoRwogICAgIGlmIChpc0NsZWFyKCkpIHsKICAgICAgICAgRnJv
emVuVmFsdWUqIGZyb3plblZhbHVlID0gZ3JhcGguZnJlZXplKHZhbHVlKTsKICAgICAgICAgaWYg
KGZyb3plblZhbHVlLT5wb2ludHNUb0hlYXAoKSkgewotICAgICAgICAgICAgbV9zdHJ1Y3R1cmUg
PSBmcm96ZW5WYWx1ZS0+c3RydWN0dXJlKCk7CisgICAgICAgICAgICBtX3N0cnVjdHVyZSA9IGdy
YXBoLnJlZ2lzdGVyU3RydWN0dXJlKGZyb3plblZhbHVlLT5zdHJ1Y3R1cmUoKSk7CiAgICAgICAg
ICAgICBtX2FycmF5TW9kZXMgPSBhc0FycmF5TW9kZXMoZnJvemVuVmFsdWUtPnN0cnVjdHVyZSgp
LT5pbmRleGluZ1R5cGUoKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX3N0cnVj
dHVyZS5jbGVhcigpOwpAQCAtMjI5LDEwICsyMzYsOSBAQCBib29sIEFic3RyYWN0VmFsdWU6Om1l
cmdlT1NSRW50cnlWYWx1ZShHCiAgICAgfSBlbHNlIHsKICAgICAgICAgbWVyZ2VTcGVjdWxhdGlv
bihtX3R5cGUsIHNwZWN1bGF0aW9uRnJvbVZhbHVlKHZhbHVlKSk7CiAgICAgICAgIGlmICghIXZh
bHVlICYmIHZhbHVlLmlzQ2VsbCgpKSB7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IHZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKTsKLSAgICAgICAgICAgIGdyYXBoLnJlZ2lz
dGVyU3RydWN0dXJlKHN0cnVjdHVyZSk7CisgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJl
IHN0cnVjdHVyZSA9IGdyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhbHVlLmFzQ2VsbCgpLT5zdHJ1
Y3R1cmUoKSk7CiAgICAgICAgICAgICBtZXJnZUFycmF5TW9kZXMobV9hcnJheU1vZGVzLCBhc0Fy
cmF5TW9kZXMoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkpOwotICAgICAgICAgICAgbV9zdHJ1
Y3R1cmUubWVyZ2UoU3RydWN0dXJlU2V0KHN0cnVjdHVyZSkpOworICAgICAgICAgICAgbV9zdHJ1
Y3R1cmUubWVyZ2UoUmVnaXN0ZXJlZFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpKTsKICAgICAgICAg
fQogICAgICAgICBpZiAobV92YWx1ZSAhPSB2YWx1ZSkKICAgICAgICAgICAgIG1fdmFsdWUgPSBK
U1ZhbHVlKCk7CkBAIC0yNTYsNyArMjYyLDcgQEAgYm9vbCBBYnN0cmFjdFZhbHVlOjppc1R5cGUo
R3JhcGgmIGdyYXBoLAogfQogCiBGaWx0cmF0aW9uUmVzdWx0IEFic3RyYWN0VmFsdWU6OmZpbHRl
cigKLSAgICBHcmFwaCYgZ3JhcGgsIGNvbnN0IFN0cnVjdHVyZVNldCYgb3RoZXIsIFNwZWN1bGF0
ZWRUeXBlIGFkbWl0dGVkVHlwZXMpCisgICAgR3JhcGgmIGdyYXBoLCBjb25zdCBSZWdpc3RlcmVk
U3RydWN0dXJlU2V0JiBvdGhlciwgU3BlY3VsYXRlZFR5cGUgYWRtaXR0ZWRUeXBlcykKIHsKICAg
ICBBU1NFUlQoIShhZG1pdHRlZFR5cGVzICYgU3BlY0NlbGwpKTsKICAgICAKQEAgLTI3MiwxMCAr
Mjc4LDEwIEBAIEZpbHRyYXRpb25SZXN1bHQgQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyKAogICAgIG1f
c3RydWN0dXJlLmZpbHRlcihvdGhlcik7CiAgICAgCiAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0
IHByaW9yIHRvIHRoZSBhYm92ZSB0d28gc3RhdGVtZW50cyB3ZSBoYWQgKEZvbywgVE9QKSwgd2hl
cmUKLSAgICAvLyBGb28gaXMgYSBTcGVjdWxhdGVkVHlwZSB0aGF0IGlzIGRpc2pvaW50IHdpdGgg
dGhlIHBhc3NlZCBTdHJ1Y3R1cmVTZXQuIEluIHRoYXQKKyAgICAvLyBGb28gaXMgYSBTcGVjdWxh
dGVkVHlwZSB0aGF0IGlzIGRpc2pvaW50IHdpdGggdGhlIHBhc3NlZCBSZWdpc3RlcmVkU3RydWN0
dXJlU2V0LiBJbiB0aGF0CiAgICAgLy8gY2FzZSwgd2Ugd2lsbCBub3cgaGF2ZSAoTm9uZSwgW3Nv
bWVTdHJ1Y3R1cmVdKS4gSW4gZ2VuZXJhbCwgd2UgbmVlZCB0byBtYWtlCiAgICAgLy8gc3VyZSB0
aGF0IG5ldyBpbmZvcm1hdGlvbiBnbGVhbmVkIGZyb20gdGhlIFNwZWN1bGF0ZWRUeXBlIG5lZWRz
IHRvIGJlIGZlZCBiYWNrCi0gICAgLy8gaW50byB0aGUgaW5mb3JtYXRpb24gZ2xlYW5lZCBmcm9t
IHRoZSBTdHJ1Y3R1cmVTZXQuCisgICAgLy8gaW50byB0aGUgaW5mb3JtYXRpb24gZ2xlYW5lZCBm
cm9tIHRoZSBSZWdpc3RlcmVkU3RydWN0dXJlU2V0LgogICAgIG1fc3RydWN0dXJlLmZpbHRlciht
X3R5cGUpOwogICAgIAogICAgIGZpbHRlckFycmF5TW9kZXNCeVR5cGUoKTsKQEAgLTI4Myw3ICsy
ODksNyBAQCBGaWx0cmF0aW9uUmVzdWx0IEFic3RyYWN0VmFsdWU6OmZpbHRlcigKICAgICByZXR1
cm4gbm9ybWFsaXplQ2xhcml0eShncmFwaCk7CiB9CiAKLUZpbHRyYXRpb25SZXN1bHQgQWJzdHJh
Y3RWYWx1ZTo6Y2hhbmdlU3RydWN0dXJlKEdyYXBoJiBncmFwaCwgY29uc3QgU3RydWN0dXJlU2V0
JiBvdGhlcikKK0ZpbHRyYXRpb25SZXN1bHQgQWJzdHJhY3RWYWx1ZTo6Y2hhbmdlU3RydWN0dXJl
KEdyYXBoJiBncmFwaCwgY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgb3RoZXIpCiB7CiAg
ICAgbV90eXBlICY9IG90aGVyLnNwZWN1bGF0aW9uRnJvbVN0cnVjdHVyZXMoKTsKICAgICBtX2Fy
cmF5TW9kZXMgPSBvdGhlci5hcnJheU1vZGVzRnJvbVN0cnVjdHVyZXMoKTsKQEAgLTM2MSwxMCAr
MzY3LDEwIEBAIEZpbHRyYXRpb25SZXN1bHQgQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyQnkKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi1ib29sIEFic3RyYWN0VmFsdWU6OmNvbnRhaW5zKFN0cnVjdHVy
ZSogc3RydWN0dXJlKSBjb25zdAorYm9vbCBBYnN0cmFjdFZhbHVlOjpjb250YWlucyhSZWdpc3Rl
cmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgY29uc3QKIHsKLSAgICByZXR1cm4gY291bGRCZVR5cGUo
c3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKHN0cnVjdHVyZSkpCi0gICAgICAgICYmIChtX2FycmF5
TW9kZXMgJiBhcnJheU1vZGVGcm9tU3RydWN0dXJlKHN0cnVjdHVyZSkpCisgICAgcmV0dXJuIGNv
dWxkQmVUeXBlKHNwZWN1bGF0aW9uRnJvbVN0cnVjdHVyZShzdHJ1Y3R1cmUuZ2V0KCkpKQorICAg
ICAgICAmJiAobV9hcnJheU1vZGVzICYgYXJyYXlNb2RlRnJvbVN0cnVjdHVyZShzdHJ1Y3R1cmUu
Z2V0KCkpKQogICAgICAgICAmJiBtX3N0cnVjdHVyZS5jb250YWlucyhzdHJ1Y3R1cmUpOwogfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAko
cmV2aXNpb24gMjExMjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dFZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJSZXN1
bHRUeXBlLmgiCiAjaW5jbHVkZSAiU3BlY3VsYXRlZFR5cGUuaCIKICNpbmNsdWRlICJEdW1wQ29u
dGV4dC5oIgotI2luY2x1ZGUgIlN0cnVjdHVyZVNldC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApA
QCAtMTIwLDcgKzExOSw3IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgdmFsdWUu
b2JzZXJ2ZUludmFsaWRhdGlvblBvaW50KCk7CiAgICAgfQogICAgIAotICAgIHZvaWQgb2JzZXJ2
ZVRyYW5zaXRpb24oU3RydWN0dXJlKiBmcm9tLCBTdHJ1Y3R1cmUqIHRvKQorICAgIHZvaWQgb2Jz
ZXJ2ZVRyYW5zaXRpb24oUmVnaXN0ZXJlZFN0cnVjdHVyZSBmcm9tLCBSZWdpc3RlcmVkU3RydWN0
dXJlIHRvKQogICAgIHsKICAgICAgICAgaWYgKG1fdHlwZSAmIFNwZWNDZWxsKSB7CiAgICAgICAg
ICAgICBtX3N0cnVjdHVyZS5vYnNlcnZlVHJhbnNpdGlvbihmcm9tLCB0byk7CkBAIC0xMzMsNyAr
MTMyLDcgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgIAogICAgIGNsYXNzIFRyYW5zaXRp
b25PYnNlcnZlciB7CiAgICAgcHVibGljOgotICAgICAgICBUcmFuc2l0aW9uT2JzZXJ2ZXIoU3Ry
dWN0dXJlKiBmcm9tLCBTdHJ1Y3R1cmUqIHRvKQorICAgICAgICBUcmFuc2l0aW9uT2JzZXJ2ZXIo
UmVnaXN0ZXJlZFN0cnVjdHVyZSBmcm9tLCBSZWdpc3RlcmVkU3RydWN0dXJlIHRvKQogICAgICAg
ICAgICAgOiBtX2Zyb20oZnJvbSkKICAgICAgICAgICAgICwgbV90byh0bykKICAgICAgICAgewpA
QCAtMTQ0LDggKzE0Myw4IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgICAgIHZh
bHVlLm9ic2VydmVUcmFuc2l0aW9uKG1fZnJvbSwgbV90byk7CiAgICAgICAgIH0KICAgICBwcml2
YXRlOgotICAgICAgICBTdHJ1Y3R1cmUqIG1fZnJvbTsKLSAgICAgICAgU3RydWN0dXJlKiBtX3Rv
OworICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG1fZnJvbTsKKyAgICAgICAgUmVnaXN0ZXJl
ZFN0cnVjdHVyZSBtX3RvOwogICAgIH07CiAgICAgCiAgICAgY2xhc3MgVHJhbnNpdGlvbnNPYnNl
cnZlciB7CkBAIC0yMDksNyArMjA4LDggQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgIAog
ICAgIHZvaWQgc2V0KEdyYXBoJiwgY29uc3QgRnJvemVuVmFsdWUmLCBTdHJ1Y3R1cmVDbG9iYmVy
U3RhdGUpOwogICAgIHZvaWQgc2V0KEdyYXBoJiwgU3RydWN0dXJlKik7Ci0gICAgdm9pZCBzZXQo
R3JhcGgmLCBjb25zdCBTdHJ1Y3R1cmVTZXQmKTsKKyAgICB2b2lkIHNldChHcmFwaCYsIFJlZ2lz
dGVyZWRTdHJ1Y3R1cmUpOworICAgIHZvaWQgc2V0KEdyYXBoJiwgY29uc3QgUmVnaXN0ZXJlZFN0
cnVjdHVyZVNldCYpOwogICAgIAogICAgIC8vIFNldCB0aGlzIHZhbHVlIHRvIHJlcHJlc2VudCB0
aGUgZ2l2ZW4gc2V0IG9mIHR5cGVzIGFzIHByZWNpc2VseSBhcyBwb3NzaWJsZS4KICAgICB2b2lk
IHNldFR5cGUoR3JhcGgmLCBTcGVjdWxhdGVkVHlwZSk7CkBAIC0zMDEsNyArMzAxLDcgQEAgc3Ry
dWN0IEFic3RyYWN0VmFsdWUgewogICAgIC8vIFNwZWNDZWxsLiBIZW5jZSwgYWZ0ZXIgdGhpcyBj
YWxsLCB0aGUgdmFsdWUgd2lsbCBubyBsb25nZXIgaGF2ZSBhbnkgbm9uLWNlbGwgbWVtYmVycy4g
QnV0LCB5b3UgY2FuCiAgICAgLy8gdXNlIGFkbWl0dGVkVHlwZXMgdG8gcHJlc2VydmUgc29tZSBu
b24tY2VsbCB0eXBlcy4gTm90ZSB0aGF0IGl0J3Mgd3JvbmcgZm9yIGFkbWl0dGVkVHlwZXMgdG8g
b3ZlcmxhcAogICAgIC8vIHdpdGggU3BlY0NlbGwuCi0gICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0
ZXIoR3JhcGgmLCBjb25zdCBTdHJ1Y3R1cmVTZXQmLCBTcGVjdWxhdGVkVHlwZSBhZG1pdHRlZFR5
cGVzID0gU3BlY05vbmUpOworICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyKEdyYXBoJiwgY29u
c3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYsIFNwZWN1bGF0ZWRUeXBlIGFkbWl0dGVkVHlwZXMg
PSBTcGVjTm9uZSk7CiAgICAgCiAgICAgRmlsdHJhdGlvblJlc3VsdCBmaWx0ZXJBcnJheU1vZGVz
KEFycmF5TW9kZXMpOwogICAgIEZpbHRyYXRpb25SZXN1bHQgZmlsdGVyKFNwZWN1bGF0ZWRUeXBl
KTsKQEAgLTMxMSw5ICszMTEsOSBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAKICAgICBGaWx0
cmF0aW9uUmVzdWx0IGZpbHRlcihHcmFwaCYsIGNvbnN0IEluZmVycmVkVHlwZTo6RGVzY3JpcHRv
ciYpOwogICAgIAotICAgIEZpbHRyYXRpb25SZXN1bHQgY2hhbmdlU3RydWN0dXJlKEdyYXBoJiwg
Y29uc3QgU3RydWN0dXJlU2V0Jik7CisgICAgRmlsdHJhdGlvblJlc3VsdCBjaGFuZ2VTdHJ1Y3R1
cmUoR3JhcGgmLCBjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0Jik7CiAgICAgCi0gICAgYm9v
bCBjb250YWlucyhTdHJ1Y3R1cmUqKSBjb25zdDsKKyAgICBib29sIGNvbnRhaW5zKFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmUpIGNvbnN0OwogCiAgICAgYm9vbCB2YWxpZGF0ZShKU1ZhbHVlIHZhbHVlKSBj
b25zdAogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRz
RWxpbWluYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjExMjI5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzkzLDcgKzM5Myw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSk7CiAK
LSAgICAgICAgICAgICAgICAgICAgaWYgKCFub2RlLT5zdHJ1Y3R1cmVTZXQoKS5jb250YWlucyhz
dHJ1Y3R1cmUpKQorICAgICAgICAgICAgICAgICAgICBpZiAoIW5vZGUtPnN0cnVjdHVyZVNldCgp
LmNvbnRhaW5zKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKSkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBlc2NhcGUobm9kZS0+Y2hpbGQxKCksIG5vZGUpOwogICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM2MCwxMiArMzYwLDEyIEBAIGJvb2wgQXJyYXlNb2RlOjphbHJlYWR5Q2hlY2tlZChHcmFwaCYg
Z3IKICAgICAgICAgaWYgKHZhbHVlLm1fc3RydWN0dXJlLmlzVG9wKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHZhbHVlLm1fc3RydWN0dXJl
LnNpemUoKTsgaS0tOykgewotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2YWx1
ZS5tX3N0cnVjdHVyZVtpXTsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0
dXJlID0gdmFsdWUubV9zdHJ1Y3R1cmVbaV07CiAgICAgICAgICAgICBpZiAoKHN0cnVjdHVyZS0+
aW5kZXhpbmdUeXBlKCkgJiBJbmRleGluZ1NoYXBlTWFzaykgIT0gc2hhcGUpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgaWYgKCEoc3RydWN0dXJlLT5pbmRleGlu
Z1R5cGUoKSAmIElzQXJyYXkpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgIGlmICghZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykt
PmlzT3JpZ2luYWxBcnJheVN0cnVjdHVyZShzdHJ1Y3R1cmUpKQorICAgICAgICAgICAgaWYgKCFn
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+aXNPcmlnaW5hbEFy
cmF5U3RydWN0dXJlKHN0cnVjdHVyZS5nZXQoKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMzc3LDcgKzM3Nyw3IEBA
IGJvb2wgQXJyYXlNb2RlOjphbHJlYWR5Q2hlY2tlZChHcmFwaCYgZ3IKICAgICAgICAgaWYgKHZh
bHVlLm1fc3RydWN0dXJlLmlzVG9wKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IHZhbHVlLm1fc3RydWN0dXJlLnNpemUoKTsgaS0tOykgewot
ICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2YWx1ZS5tX3N0cnVjdHVyZVtpXTsK
KyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gdmFsdWUubV9zdHJ1
Y3R1cmVbaV07CiAgICAgICAgICAgICBpZiAoKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkgJiBJ
bmRleGluZ1NoYXBlTWFzaykgIT0gc2hhcGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgaWYgKCEoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSAmIElzQXJyYXkp
KQpAQCAtMzkyLDcgKzM5Miw3IEBAIGJvb2wgQXJyYXlNb2RlOjphbHJlYWR5Q2hlY2tlZChHcmFw
aCYgZ3IKICAgICAgICAgaWYgKHZhbHVlLm1fc3RydWN0dXJlLmlzVG9wKCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHZhbHVlLm1fc3RydWN0
dXJlLnNpemUoKTsgaS0tOykgewotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2
YWx1ZS5tX3N0cnVjdHVyZVtpXTsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3Ry
dWN0dXJlID0gdmFsdWUubV9zdHJ1Y3R1cmVbaV07CiAgICAgICAgICAgICBpZiAoKHN0cnVjdHVy
ZS0+aW5kZXhpbmdUeXBlKCkgJiBJbmRleGluZ1NoYXBlTWFzaykgIT0gc2hhcGUpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC00NDAsNyArNDQwLDcgQEAgYm9v
bCBBcnJheU1vZGU6OmFscmVhZHlDaGVja2VkKEdyYXBoJiBncgogICAgICAgICAgICAgaWYgKHZh
bHVlLm1fc3RydWN0dXJlLmlzVG9wKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gdmFsdWUubV9zdHJ1Y3R1cmUuc2l6ZSgpOyBp
LS07KSB7Ci0gICAgICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB2YWx1ZS5tX3N0
cnVjdHVyZVtpXTsKKyAgICAgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVy
ZSA9IHZhbHVlLm1fc3RydWN0dXJlW2ldOwogICAgICAgICAgICAgICAgIGlmICghaGFzQW55QXJy
YXlTdG9yYWdlKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKQogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgaWYgKCEoc3RydWN0dXJlLT5pbmRleGlu
Z1R5cGUoKSAmIElzQXJyYXkpKQpAQCAtNDU1LDcgKzQ1NSw3IEBAIGJvb2wgQXJyYXlNb2RlOjph
bHJlYWR5Q2hlY2tlZChHcmFwaCYgZ3IKICAgICAgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVy
ZS5pc1RvcCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IHZhbHVlLm1fc3RydWN0dXJlLnNpemUoKTsgaS0tOykgewotICAgICAg
ICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdmFsdWUubV9zdHJ1Y3R1cmVbaV07Cisg
ICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSB2YWx1ZS5tX3N0
cnVjdHVyZVtpXTsKICAgICAgICAgICAgICAgICBpZiAoIWhhc0FueUFycmF5U3RvcmFnZShzdHJ1
Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJh
eWlmeVNsb3dQYXRoR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmgJKHJldmlzaW9uIDIxMTIyOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICAgICAgOiBK
dW1waW5nU2xvd1BhdGhHZW5lcmF0b3I8TWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0Pihmcm9tLCBq
aXQpCiAgICAgICAgICwgbV9vcChub2RlLT5vcCgpKQogICAgICAgICAsIG1fYXJyYXlNb2RlKG5v
ZGUtPmFycmF5TW9kZSgpKQotICAgICAgICAsIG1fc3RydWN0dXJlKG5vZGUtPm9wKCkgPT0gQXJy
YXlpZnlUb1N0cnVjdHVyZSA/IG5vZGUtPnN0cnVjdHVyZSgpIDogMCkKKyAgICAgICAgLCBtX3N0
cnVjdHVyZShub2RlLT5vcCgpID09IEFycmF5aWZ5VG9TdHJ1Y3R1cmUgPyBub2RlLT5zdHJ1Y3R1
cmUoKSA6IFJlZ2lzdGVyZWRTdHJ1Y3R1cmUoKSkKICAgICAgICAgLCBtX2Jhc2VHUFIoYmFzZUdQ
UikKICAgICAgICAgLCBtX3Byb3BlcnR5R1BSKHByb3BlcnR5R1BSKQogICAgICAgICAsIG1fdGVt
cEdQUih0ZW1wR1BSKQpAQCAtMTE1LDcgKzExNSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgaml0
LT5tX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAKICAgICAgICAgaWYgKG1fb3AgPT0g
QXJyYXlpZnlUb1N0cnVjdHVyZSkgewotICAgICAgICAgICAgQVNTRVJUKG1fc3RydWN0dXJlKTsK
KyAgICAgICAgICAgIEFTU0VSVChtX3N0cnVjdHVyZS5nZXQoKSk7CiAgICAgICAgICAgICBtX2Jh
ZEluZGV4aW5nVHlwZUp1bXAuZmlsbCgKICAgICAgICAgICAgICAgICBqaXQsIGppdC0+bV9qaXQu
YnJhbmNoV2Vha1N0cnVjdHVyZShNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKG1fYmFzZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgbV9z
dHJ1Y3R1cmUpKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTEzNiw3ICsxMzYsNyBAQCBwcm90ZWN0
ZWQ6CiBwcml2YXRlOgogICAgIE5vZGVUeXBlIG1fb3A7CiAgICAgQXJyYXlNb2RlIG1fYXJyYXlN
b2RlOwotICAgIFN0cnVjdHVyZSogbV9zdHJ1Y3R1cmU7CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBtX3N0cnVjdHVyZTsKICAgICBHUFJSZWcgbV9iYXNlR1BSOwogICAgIEdQUlJlZyBtX3Byb3Bl
cnR5R1BSOwogICAgIEdQUlJlZyBtX3RlbXBHUFI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMjExMjI5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI5NjAsNyArMjk2MCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNv
bnN0YW50SW50ZXIKICAgICAgICAgICAgIHJlc3VsdCA9IGFkZFRvR3JhcGgoQ2FsbFN0cmluZ0Nv
bnN0cnVjdG9yLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0ZXJPZmZz
ZXQpKSk7CiAgICAgICAgIAogICAgICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KQot
ICAgICAgICAgICAgcmVzdWx0ID0gYWRkVG9HcmFwaChOZXdTdHJpbmdPYmplY3QsIE9wSW5mbyhm
dW5jdGlvbi0+Z2xvYmFsT2JqZWN0KCktPnN0cmluZ09iamVjdFN0cnVjdHVyZSgpKSwgcmVzdWx0
KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGFkZFRvR3JhcGgoTmV3U3RyaW5nT2JqZWN0LCBPcElu
Zm8obV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0KCktPnN0
cmluZ09iamVjdFN0cnVjdHVyZSgpKSksIHJlc3VsdCk7CiAgICAgICAgIAogICAgICAgICBzZXQo
VmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCByZXN1bHQpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTI5NzIsNyArMjk3Miw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNv
bnN0YW50SW50ZXIKIAogICAgICAgICBOb2RlKiByZXN1bHQ7CiAgICAgICAgIGlmIChhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyA8PSAxKQotICAgICAgICAgICAgcmVzdWx0ID0gYWRkVG9HcmFw
aChOZXdPYmplY3QsIE9wSW5mbyhmdW5jdGlvbi0+Z2xvYmFsT2JqZWN0KCktPm9iamVjdFN0cnVj
dHVyZUZvck9iamVjdENvbnN0cnVjdG9yKCkpKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGFkZFRv
R3JhcGgoTmV3T2JqZWN0LCBPcEluZm8obV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShmdW5jdGlv
bi0+Z2xvYmFsT2JqZWN0KCktPm9iamVjdFN0cnVjdHVyZUZvck9iamVjdENvbnN0cnVjdG9yKCkp
KSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlc3VsdCA9IGFkZFRvR3JhcGgoQ2FsbE9i
amVjdENvbnN0cnVjdG9yLCBnZXQodmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMSwgcmVnaXN0
ZXJPZmZzZXQpKSk7CiAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCks
IHJlc3VsdCk7CkBAIC0zMzgzLDcgKzMzODMsNyBAQCBOb2RlKiBCeXRlQ29kZVBhcnNlcjo6bG9h
ZCgKICAgICAgICAgICAgIC8vIFdlIGRpZCBlbWl0IGEgc3RydWN0dXJlIGNoZWNrLiBUaGF0IG1l
YW5zIHRoYXQgd2UgaGF2ZSBhbiBvcHBvcnR1bml0eSB0byBkbyBjb25zdGFudCBmb2xkaW5nCiAg
ICAgICAgICAgICAvLyBoZXJlLCBzaW5jZSB3ZSBkaWRuJ3QgZG8gaXQgYWJvdmUuCiAgICAgICAg
ICAgICBKU1ZhbHVlIGNvbnN0YW50ID0gbV9ncmFwaC50cnlHZXRDb25zdGFudFByb3BlcnR5KAot
ICAgICAgICAgICAgICAgIGJhc2UtPmFzSlNWYWx1ZSgpLCB2YXJpYW50LnN0cnVjdHVyZVNldCgp
LCB2YXJpYW50Lm9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICBiYXNlLT5hc0pTVmFsdWUoKSwg
Km1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQuc3RydWN0dXJlU2V0KCkpLCB2YXJpYW50
Lm9mZnNldCgpKTsKICAgICAgICAgICAgIGlmIChjb25zdGFudCkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gd2Vha0pTQ29uc3RhbnQoY29uc3RhbnQpOwogICAgICAgICB9CkBAIC0zNDI5LDcgKzM0
MjksNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgICAgIGlmIChvaykKLSAgICAgICAgICAgIGdldEJ5SWRTdGF0dXMu
ZmlsdGVyKGJhc2UtPnN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIGdldEJ5SWRTdGF0dXMuZmls
dGVyKGJhc2UtPnN0cnVjdHVyZSgpLmdldCgpKTsKICAgICB9CiAgICAgCiAgICAgTm9kZVR5cGUg
Z2V0QnlJZDsKQEAgLTM0ODIsNyArMzQ4Miw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUdldEJ5SWQoCiAgICAgICAgICAgICBpZiAodmFyaWFudC5jb25kaXRpb25TZXQoKS5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgICAgICBjYXNlcy5hcHBlbmQoCiAgICAgICAgICAgICAgICAgICAg
IE11bHRpR2V0QnlPZmZzZXRDYXNlKAotICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudC5z
dHJ1Y3R1cmVTZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICptX2dyYXBoLmFkZFN0cnVj
dHVyZVNldCh2YXJpYW50LnN0cnVjdHVyZVNldCgpKSwKICAgICAgICAgICAgICAgICAgICAgICAg
IEdldEJ5T2Zmc2V0TWV0aG9kOjpsb2FkKHZhcmlhbnQub2Zmc2V0KCkpKSk7CiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CkBAIC0zNDk0LDcgKzM0OTQsNyBAQCB2b2lk
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZXMuYXBwZW5kKE11
bHRpR2V0QnlPZmZzZXRDYXNlKHZhcmlhbnQuc3RydWN0dXJlU2V0KCksIG1ldGhvZCkpOworICAg
ICAgICAgICAgY2FzZXMuYXBwZW5kKE11bHRpR2V0QnlPZmZzZXRDYXNlKCptX2dyYXBoLmFkZFN0
cnVjdHVyZVNldCh2YXJpYW50LnN0cnVjdHVyZVNldCgpKSwgbWV0aG9kKSk7CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAobV9ncmFwaC5jb21waWxhdGlvbigpKQpAQCAtMzYyMSw4ICszNjIxLDEz
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgICAgIGlmIChtX2dy
YXBoLmNvbXBpbGF0aW9uKCkpCiAgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9uKCktPm5v
dGljZUlubGluZWRQdXRCeUlkKCk7CiAKLSAgICAgICAgZm9yIChjb25zdCBQdXRCeUlkVmFyaWFu
dCYgdmFyaWFudCA6IHB1dEJ5SWRTdGF0dXMudmFyaWFudHMoKSkKKyAgICAgICAgZm9yIChjb25z
dCBQdXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IHB1dEJ5SWRTdGF0dXMudmFyaWFudHMoKSkgewog
ICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlckluZmVycmVkVHlwZSh2YXJpYW50LnJlcXVpcmVk
VHlwZSgpKTsKKyAgICAgICAgICAgIGZvciAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgOiB2YXJpYW50
Lm9sZFN0cnVjdHVyZSgpKQorICAgICAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1
cmUoc3RydWN0dXJlKTsKKyAgICAgICAgICAgIGlmICh2YXJpYW50LmtpbmQoKSA9PSBQdXRCeUlk
VmFyaWFudDo6VHJhbnNpdGlvbikKKyAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3Ry
dWN0dXJlKHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOworICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICBNdWx0aVB1dEJ5T2Zmc2V0RGF0YSogZGF0YSA9IG1fZ3JhcGgubV9tdWx0aVB1dEJ5T2Zm
c2V0RGF0YS5hZGQoKTsKICAgICAgICAgZGF0YS0+dmFyaWFudHMgPSBwdXRCeUlkU3RhdHVzLnZh
cmlhbnRzKCk7CkBAIC0zNjUzLDcgKzM2NTgsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVQdXRCeUlkKAogICAgIAogICAgICAgICBOb2RlKiBwcm9wZXJ0eVN0b3JhZ2U7CiAgICAgICAg
IFRyYW5zaXRpb24qIHRyYW5zaXRpb24gPSBtX2dyYXBoLm1fdHJhbnNpdGlvbnMuYWRkKAotICAg
ICAgICAgICAgdmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFuc2l0aW9uKCksIHZhcmlhbnQubmV3
U3RydWN0dXJlKCkpOworICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJp
YW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRpb24oKSksIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1
cmUodmFyaWFudC5uZXdTdHJ1Y3R1cmUoKSkpOwogCiAgICAgICAgIGlmICh2YXJpYW50LnJlYWxs
b2NhdGVzU3RvcmFnZSgpKSB7CiAKQEAgLTM5MDAsNyArMzkwNSw3IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3Jh
cGgud2F0Y2hwb2ludHMoKS5hZGRMYXppbHkocmFyZURhdGEtPmFsbG9jYXRpb25Qcm9maWxlV2F0
Y2hwb2ludFNldCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBjYWxsZWUgaXMg
c3RpbGwgbGl2ZSB1cCB0byB0aGlzIHBvaW50LgogICAgICAgICAgICAgICAgICAgICAgICAgYWRk
VG9HcmFwaChQaGFudG9tLCBjYWxsZWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgc2V0KFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRkVG9HcmFw
aChOZXdPYmplY3QsIE9wSW5mbyhzdHJ1Y3R1cmUpKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBh
ZGRUb0dyYXBoKE5ld09iamVjdCwgT3BJbmZvKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoc3Ry
dWN0dXJlKSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGFscmVhZHlFbWl0dGVkID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KQEAgLTM5MTUsNyAr
MzkyMCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAg
ICAgY2FzZSBvcF9uZXdfb2JqZWN0OiB7CiAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVy
KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLAogICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoTmV3T2JqZWN0LAotICAgICAgICAgICAgICAgICAgICBPcEluZm8oY3VycmVudEluc3Ry
dWN0aW9uWzNdLnUub2JqZWN0QWxsb2NhdGlvblByb2ZpbGUtPnN0cnVjdHVyZSgpKSkpOworICAg
ICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShjdXJyZW50
SW5zdHJ1Y3Rpb25bM10udS5vYmplY3RBbGxvY2F0aW9uUHJvZmlsZS0+c3RydWN0dXJlKCkpKSkp
OwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbmV3X29iamVjdCk7CiAgICAgICAgIH0KICAg
ICAgICAgICAgIApAQCAtNTY3OCw3ICs1NjgzLDcgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0
YWNrRW50cnk6OklubGluZQogICAgICAgICBBU1NFUlQoY2FsbHNpdGVCbG9ja0hlYWQpOwogICAg
ICAgICAKICAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUgPSBieXRlQ29kZVBhcnNlci0+bV9ncmFw
aC5tX3BsYW4uaW5saW5lQ2FsbEZyYW1lcy0+YWRkKCk7Ci0gICAgICAgIGJ5dGVDb2RlUGFyc2Vy
LT5tX2dyYXBoLmZyZWV6ZShjb2RlQmxvY2stPmJhc2VsaW5lVmVyc2lvbigpKTsKKwogICAgICAg
ICAvLyBUaGUgb3duZXIgaXMgdGhlIG1hY2hpbmUgY29kZSBibG9jaywgYW5kIHdlIGFscmVhZHkg
aGF2ZSBhIGJhcnJpZXIgb24gdGhhdCB3aGVuIHRoZQogICAgICAgICAvLyBwbGFuIGZpbmlzaGVz
LgogICAgICAgICBtX2lubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2suc2V0V2l0aG91
dFdyaXRlQmFycmllcihjb2RlQmxvY2stPmJhc2VsaW5lVmVyc2lvbigpKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxBcnJh
eUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmgJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBjbGFzcyBDYWxsQXJyYXlBbGxv
Y2F0b3JTbG93UGF0aEdlbmVyYXRvCiBwdWJsaWM6CiAgICAgQ2FsbEFycmF5QWxsb2NhdG9yU2xv
d1BhdGhHZW5lcmF0b3IoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBmcm9tLCBT
cGVjdWxhdGl2ZUpJVCogaml0LCBQX0pJVE9wZXJhdGlvbl9FU3RaQiBmdW5jdGlvbiwKLSAgICAg
ICAgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHN0b3JhZ2VHUFIsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBzaXplX3Qgc2l6ZSkKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHN0b3Jh
Z2VHUFIsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCBzaXplX3Qgc2l6ZSkKICAgICAg
ICAgOiBKdW1waW5nU2xvd1BhdGhHZW5lcmF0b3I8TWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0Pihm
cm9tLCBqaXQpCiAgICAgICAgICwgbV9mdW5jdGlvbihmdW5jdGlvbikKICAgICAgICAgLCBtX3Jl
c3VsdEdQUihyZXN1bHRHUFIpCkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgUF9KSVRP
cGVyYXRpb25fRVN0WkIgbV9mdW5jdGlvbjsKICAgICBHUFJSZWcgbV9yZXN1bHRHUFI7CiAgICAg
R1BSUmVnIG1fc3RvcmFnZUdQUjsKLSAgICBTdHJ1Y3R1cmUqIG1fc3RydWN0dXJlOworICAgIFJl
Z2lzdGVyZWRTdHJ1Y3R1cmUgbV9zdHJ1Y3R1cmU7CiAgICAgc2l6ZV90IG1fc2l6ZTsKICAgICBW
ZWN0b3I8U2lsZW50UmVnaXN0ZXJTYXZlUGxhbiwgMj4gbV9wbGFuczsKIH07CkBAIC03OCw3ICs3
OCw3IEBAIGNsYXNzIENhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJsZVNpemUKIHB1YmxpYzoK
ICAgICBDYWxsQXJyYXlBbGxvY2F0b3JXaXRoVmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3Io
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBmcm9tLCBTcGVjdWxhdGl2ZUpJVCog
aml0LCBQX0pJVE9wZXJhdGlvbl9FU3RaQiBmdW5jdGlvbiwKLSAgICAgICAgR1BSUmVnIHJlc3Vs
dEdQUiwgU3RydWN0dXJlKiBjb250aWd1b3VzU3RydWN0dXJlLCBTdHJ1Y3R1cmUqIGFycmF5U3Rv
cmFnZVN0cnVjdHVyZSwgR1BSUmVnIHNpemVHUFIsIEdQUlJlZyBzdG9yYWdlR1BSKQorICAgICAg
ICBHUFJSZWcgcmVzdWx0R1BSLCBSZWdpc3RlcmVkU3RydWN0dXJlIGNvbnRpZ3VvdXNTdHJ1Y3R1
cmUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgYXJyYXlTdG9yYWdlU3RydWN0dXJlLCBHUFJSZWcgc2l6
ZUdQUiwgR1BSUmVnIHN0b3JhZ2VHUFIpCiAgICAgICAgIDogSnVtcGluZ1Nsb3dQYXRoR2VuZXJh
dG9yPE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdD4oZnJvbSwgaml0KQogICAgICAgICAsIG1fZnVu
Y3Rpb24oZnVuY3Rpb24pCiAgICAgICAgICwgbV9yZXN1bHRHUFIocmVzdWx0R1BSKQpAQCAtOTcs
MTUgKzk3LDE1IEBAIHByb3RlY3RlZDoKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fcGxhbnMuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICBqaXQtPnNpbGVudFNwaWxsKG1fcGxh
bnNbaV0pOwogICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IEFzc2VtYmx5SGVscGVyczo6c2Vs
ZWN0U2NyYXRjaEdQUihtX3NpemVHUFIsIG1fc3RvcmFnZUdQUik7Ci0gICAgICAgIGlmIChtX2Nv
bnRpZ3VvdXNTdHJ1Y3R1cmUgIT0gbV9hcnJheVN0b3JhZ2VPckNvbnRpZ3VvdXNTdHJ1Y3R1cmUp
IHsKKyAgICAgICAgaWYgKG1fY29udGlndW91c1N0cnVjdHVyZS5nZXQoKSAhPSBtX2FycmF5U3Rv
cmFnZU9yQ29udGlndW91c1N0cnVjdHVyZS5nZXQoKSkgewogICAgICAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXAgYmlnTGVuZ3RoID0gaml0LT5tX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxl
cjo6QWJvdmVPckVxdWFsLCBtX3NpemVHUFIsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIo
TUlOX0FSUkFZX1NUT1JBR0VfQ09OU1RSVUNUSU9OX0xFTkdUSCkpOwotICAgICAgICAgICAgaml0
LT5tX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1fY29udGlndW91c1N0
cnVjdHVyZSksIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgaml0LT5tX2ppdC5tb3ZlKFNwZWN1
bGF0aXZlSklUOjpUcnVzdGVkSW1tUHRyKG1fY29udGlndW91c1N0cnVjdHVyZSksIHNjcmF0Y2hH
UFIpOwogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9IGppdC0+bV9qaXQu
anVtcCgpOwogICAgICAgICAgICAgYmlnTGVuZ3RoLmxpbmsoJmppdC0+bV9qaXQpOwotICAgICAg
ICAgICAgaml0LT5tX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1fYXJy
YXlTdG9yYWdlT3JDb250aWd1b3VzU3RydWN0dXJlKSwgc2NyYXRjaEdQUik7CisgICAgICAgICAg
ICBqaXQtPm1faml0Lm1vdmUoU3BlY3VsYXRpdmVKSVQ6OlRydXN0ZWRJbW1QdHIobV9hcnJheVN0
b3JhZ2VPckNvbnRpZ3VvdXNTdHJ1Y3R1cmUpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgICAgIGRv
bmUubGluaygmaml0LT5tX2ppdCk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgaml0LT5t
X2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1fY29udGlndW91c1N0cnVj
dHVyZSksIHNjcmF0Y2hHUFIpOworICAgICAgICAgICAgaml0LT5tX2ppdC5tb3ZlKFNwZWN1bGF0
aXZlSklUOjpUcnVzdGVkSW1tUHRyKG1fY29udGlndW91c1N0cnVjdHVyZSksIHNjcmF0Y2hHUFIp
OwogICAgICAgICBqaXQtPmNhbGxPcGVyYXRpb24obV9mdW5jdGlvbiwgbV9yZXN1bHRHUFIsIHNj
cmF0Y2hHUFIsIG1fc2l6ZUdQUiwgbV9zdG9yYWdlR1BSKTsKICAgICAgICAgR1BSUmVnIGNhblRy
YW1wbGUgPSBTcGVjdWxhdGl2ZUpJVDo6cGlja0NhblRyYW1wbGUobV9yZXN1bHRHUFIpOwogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3BsYW5zLnNpemUoKTsgaS0tOykKQEAgLTExNyw4ICsx
MTcsOCBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFBfSklUT3BlcmF0aW9uX0VTdFpCIG1f
ZnVuY3Rpb247CiAgICAgR1BSUmVnIG1fcmVzdWx0R1BSOwotICAgIFN0cnVjdHVyZSogbV9jb250
aWd1b3VzU3RydWN0dXJlOwotICAgIFN0cnVjdHVyZSogbV9hcnJheVN0b3JhZ2VPckNvbnRpZ3Vv
dXNTdHJ1Y3R1cmU7CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBtX2NvbnRpZ3VvdXNTdHJ1Y3R1
cmU7CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBtX2FycmF5U3RvcmFnZU9yQ29udGlndW91c1N0
cnVjdHVyZTsKICAgICBHUFJSZWcgbV9zaXplR1BSOwogICAgIEdQUlJlZyBtX3N0b3JhZ2VHUFI7
CiAgICAgVmVjdG9yPFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4sIDI+IG1fcGxhbnM7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxDcmVhdGVEaXJlY3RBcmd1bWVudHNTbG93
UGF0aEdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2FsbENyZWF0ZURpcmVjdEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yLmgJKHJldmlzaW9u
IDIxMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FsbENyZWF0ZURpcmVj
dEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5
LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogY2xhc3MgQ2FsbENyZWF0ZURp
cmVjdEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yIDogcHVibGljIEp1bXBpbmdTbG93UGF0aEdl
bmVyYXRvcjxNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Q+IHsKIHB1YmxpYzoKICAgICBDYWxsQ3Jl
YXRlRGlyZWN0QXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IoCi0gICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wTGlzdCBmcm9tLCBTcGVjdWxhdGl2ZUpJVCogaml0LCBHUFJSZWcgcmVzdWx0R1BS
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0
IGZyb20sIFNwZWN1bGF0aXZlSklUKiBqaXQsIEdQUlJlZyByZXN1bHRHUFIsIFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgc3RydWN0dXJlLAogICAgICAgICBHUFJSZWcgbGVuZ3RoR1BSLCB1bnNpZ25lZCBt
aW5DYXBhY2l0eSkKICAgICAgICAgOiBKdW1waW5nU2xvd1BhdGhHZW5lcmF0b3I8TWFjcm9Bc3Nl
bWJsZXI6Okp1bXBMaXN0Pihmcm9tLCBqaXQpCiAgICAgICAgICwgbV9yZXN1bHRHUFIocmVzdWx0
R1BSKQpAQCAtNjksNyArNjksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgCiBwcml2YXRlOgogICAgIEdQ
UlJlZyBtX3Jlc3VsdEdQUjsKLSAgICBTdHJ1Y3R1cmUqIG1fc3RydWN0dXJlOworICAgIFJlZ2lz
dGVyZWRTdHJ1Y3R1cmUgbV9zdHJ1Y3R1cmU7CiAgICAgR1BSUmVnIG1fbGVuZ3RoR1BSOwogICAg
IHVuc2lnbmVkIG1fbWluQ2FwYWNpdHk7CiAgICAgVmVjdG9yPFNpbGVudFJlZ2lzdGVyU2F2ZVBs
YW4sIDI+IG1fcGxhbnM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1v
bkRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29t
bW9uRGF0YS5jcHAJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ29tbW9uRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDggKzQzLDggQEAgdm9p
ZCBDb21tb25EYXRhOjpub3RpZnlDb21waWxpbmdTdHJ1Y3R1cgogICAgIHBsYW4udHJhbnNpdGlv
bnMuYWRkTGF6aWx5KAogICAgICAgICBjb2RlQmxvY2ssCiAgICAgICAgIG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYy5jb2RlT3JpZ2luT3duZXIoKSwKLSAgICAgICAgbm9kZS0+dHJhbnNpdGlvbigpLT5w
cmV2aW91cywKLSAgICAgICAgbm9kZS0+dHJhbnNpdGlvbigpLT5uZXh0KTsKKyAgICAgICAgbm9k
ZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91cy5nZXQoKSwKKyAgICAgICAgbm9kZS0+dHJhbnNpdGlv
bigpLT5uZXh0LmdldCgpKTsKIH0KIAogQ2FsbFNpdGVJbmRleCBDb21tb25EYXRhOjphZGRDb2Rl
T3JpZ2luKENvZGVPcmlnaW4gY29kZU9yaWdpbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAy
MTEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1Bo
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgogICAgICAgICAgICAgY2FzZSBBcnJheWlmeVRv
U3RydWN0dXJlOiB7CiAgICAgICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0
YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgICAgIFN0cnVjdHVyZVNl
dCBzZXQ7CisgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBzZXQ7CiAgICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gQXJyYXlpZnlUb1N0cnVjdHVyZSkKICAgICAg
ICAgICAgICAgICAgICAgc2V0ID0gbm9kZS0+c3RydWN0dXJlKCk7CiAgICAgICAgICAgICAgICAg
ZWxzZQpAQCAtMjA2LDExICsyMDYsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmVJbW1lZGlhdGU6IHsKICAgICAgICAgICAgICAg
ICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7
Ci0gICAgICAgICAgICAgICAgU3RydWN0dXJlU2V0JiBzZXQgPSBub2RlLT5zdHJ1Y3R1cmVTZXQo
KTsKKyAgICAgICAgICAgICAgICBjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0JiBzZXQgPSBu
b2RlLT5zdHJ1Y3R1cmVTZXQoKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBp
ZiAodmFsdWUudmFsdWUoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBqc0R5bmFtaWNDYXN0PFN0cnVjdHVyZSo+KHZhbHVlLnZhbHVlKCkpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0LmNvbnRhaW5zKHN0cnVjdHVyZSkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXQuY29udGFpbnMobV9ncmFwaC5yZWdpc3RlclN0
cnVjdHVyZShzdHJ1Y3R1cmUpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW50
ZXJwcmV0ZXIuZXhlY3V0ZShpbmRleEluQmxvY2spOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5vZGUtPnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsaW1pbmF0
ZWQgPSB0cnVlOwpAQCAtMjI1LDcgKzIyNSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
ICAgICAgICBub2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgWyZdIChOb2RlKiBpbmNvbWlu
ZykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IGluY29taW5nLT5keW5hbWljQ2FzdENvbnN0YW50PFN0cnVjdHVyZSo+KCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldC5jb250YWlucyhzdHJ1Y3R1cmUpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0LmNvbnRhaW5zKG1fZ3JhcGgu
cmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFsbEdvb2QgPSBmYWxzZTsKQEAgLTQyMSw3ICs0MjEsOSBA
QCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRh
dGEudmFyaWFudHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgICAgICAgICAgUHV0QnlJZFZh
cmlhbnQmIHZhcmlhbnQgPSBkYXRhLnZhcmlhbnRzW2ldOwotICAgICAgICAgICAgICAgICAgICB2
YXJpYW50Lm9sZFN0cnVjdHVyZSgpLmZpbHRlcihiYXNlVmFsdWUpOworICAgICAgICAgICAgICAg
ICAgICB2YXJpYW50Lm9sZFN0cnVjdHVyZSgpLmdlbmVyaWNGaWx0ZXIoWyZdIChTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYmFz
ZVZhbHVlLmNvbnRhaW5zKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKSk7Cisg
ICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICAgICAgaWYgKHZhcmlhbnQub2xkU3RydWN0dXJlKCkuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBkYXRhLnZhcmlhbnRzW2ktLV0gPSBkYXRhLnZhcmlhbnRzLmxhc3Qo
KTsKQEAgLTQ2MCwxMiArNDYyLDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9pbnRl
cnByZXRlci5leGVjdXRlKGluZGV4SW5CbG9jayk7IC8vIFB1c2ggQ0ZBIG92ZXIgdGhpcyBub2Rl
IGFmdGVyIHdlIGdldCB0aGUgc3RhdGUgYmVmb3JlLgogICAgICAgICAgICAgICAgIGFscmVhZHlI
YW5kbGVkID0gdHJ1ZTsgLy8gRG9uJ3QgYWxsb3cgdGhlIGRlZmF1bHQgY29uc3RhbnQgZm9sZGVy
IHRvIGRvIHRoaW5ncyB0byB0aGlzLgogCi0gICAgICAgICAgICAgICAgaWYgKGJhc2VWYWx1ZS5t
X3N0cnVjdHVyZS5pc1RvcCgpIHx8IGJhc2VWYWx1ZS5tX3N0cnVjdHVyZS5pc0Nsb2JiZXJlZCgp
CisgICAgICAgICAgICAgICAgaWYgKCFiYXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKQog
ICAgICAgICAgICAgICAgICAgICB8fCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlw
ZWRVc2UgfHwgKGJhc2VWYWx1ZS5tX3R5cGUgJiB+U3BlY0NlbGwpKSkKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgR2V0QnlJZFN0
YXR1cyBzdGF0dXMgPSBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAotICAgICAgICAgICAgICAg
ICAgICBiYXNlVmFsdWUubV9zdHJ1Y3R1cmUuc2V0KCksIG1fZ3JhcGguaWRlbnRpZmllcnMoKVtp
ZGVudGlmaWVyTnVtYmVyXSk7CisgICAgICAgICAgICAgICAgICAgIGJhc2VWYWx1ZS5tX3N0cnVj
dHVyZS50b1N0cnVjdHVyZVNldCgpLCBtX2dyYXBoLmlkZW50aWZpZXJzKClbaWRlbnRpZmllck51
bWJlcl0pOwogICAgICAgICAgICAgICAgIGlmICghc3RhdHVzLmlzU2ltcGxlKCkpCiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIApAQCAtNDkwLDcgKzQ5Miw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFy
aWFudCA6IHN0YXR1cy52YXJpYW50cygpKSB7CiAgICAgICAgICAgICAgICAgICAgIGRhdGEtPmNh
c2VzLmFwcGVuZCgKICAgICAgICAgICAgICAgICAgICAgICAgIE11bHRpR2V0QnlPZmZzZXRDYXNl
KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQuc3RydWN0dXJlU2V0KCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKm1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHZhcmlh
bnQuc3RydWN0dXJlU2V0KCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldEJ5T2Zm
c2V0TWV0aG9kOjpsb2FkKHZhcmlhbnQub2Zmc2V0KCkpKSk7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIGRhdGEtPmlkZW50aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVtYmVy
OwpAQCAtNTE1LDEyICs1MTcsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBtX2ludGVy
cHJldGVyLmV4ZWN1dGUoaW5kZXhJbkJsb2NrKTsgLy8gUHVzaCBDRkEgb3ZlciB0aGlzIG5vZGUg
YWZ0ZXIgd2UgZ2V0IHRoZSBzdGF0ZSBiZWZvcmUuCiAgICAgICAgICAgICAgICAgYWxyZWFkeUhh
bmRsZWQgPSB0cnVlOyAvLyBEb24ndCBhbGxvdyB0aGUgZGVmYXVsdCBjb25zdGFudCBmb2xkZXIg
dG8gZG8gdGhpbmdzIHRvIHRoaXMuCiAKLSAgICAgICAgICAgICAgICBpZiAoYmFzZVZhbHVlLm1f
c3RydWN0dXJlLmlzVG9wKCkgfHwgYmFzZVZhbHVlLm1fc3RydWN0dXJlLmlzQ2xvYmJlcmVkKCkp
CisgICAgICAgICAgICAgICAgaWYgKCFiYXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkK
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgUHV0QnlJZFN0YXR1cyBzdGF0dXMgPSBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAog
ICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihvcmlnaW4uc2VtYW50
aWMpLAotICAgICAgICAgICAgICAgICAgICBiYXNlVmFsdWUubV9zdHJ1Y3R1cmUuc2V0KCksCisg
ICAgICAgICAgICAgICAgICAgIGJhc2VWYWx1ZS5tX3N0cnVjdHVyZS50b1N0cnVjdHVyZVNldCgp
LAogICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmlkZW50aWZpZXJzKClbaWRlbnRpZmllck51
bWJlcl0sCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm9wKCkgPT0gUHV0QnlJZERpcmVjdCk7
CiAgICAgICAgICAgICAgICAgCkBAIC03MTMsNyArNzE1LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
Ly8gV2UgYXJlbid0IHNldCB1cCB0byBoYW5kbGUgcHJvdG90eXBlIHN0dWZmLgogICAgICAgICBE
RkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUsIHZhcmlhbnQuY29uZGl0aW9uU2V0KCkuaXNFbXB0eSgp
KTsKIAotICAgICAgICBpZiAoSlNWYWx1ZSB2YWx1ZSA9IG1fZ3JhcGgudHJ5R2V0Q29uc3RhbnRQ
cm9wZXJ0eShiYXNlVmFsdWUubV92YWx1ZSwgdmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSwgdmFyaWFu
dC5vZmZzZXQoKSkpIHsKKyAgICAgICAgaWYgKEpTVmFsdWUgdmFsdWUgPSBtX2dyYXBoLnRyeUdl
dENvbnN0YW50UHJvcGVydHkoYmFzZVZhbHVlLm1fdmFsdWUsICptX2dyYXBoLmFkZFN0cnVjdHVy
ZVNldCh2YXJpYW50LnN0cnVjdHVyZVNldCgpKSwgdmFyaWFudC5vZmZzZXQoKSkpIHsKICAgICAg
ICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobm9kZSwgbV9ncmFwaC5mcmVlemUodmFs
dWUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNzU5LDcgKzc2MSw3IEBA
IHByaXZhdGU6CiAgICAgICAgIFRyYW5zaXRpb24qIHRyYW5zaXRpb24gPSAwOwogICAgICAgICBp
ZiAodmFyaWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb24pIHsKICAgICAg
ICAgICAgIHRyYW5zaXRpb24gPSBtX2dyYXBoLm1fdHJhbnNpdGlvbnMuYWRkKAotICAgICAgICAg
ICAgICAgIHZhcmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLCB2YXJpYW50Lm5ld1N0
cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZh
cmlhbnQub2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpKSwgbV9ncmFwaC5yZWdpc3RlclN0cnVj
dHVyZSh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKSk7CiAgICAgICAgIH0KIAogICAgICAgICBFZGdl
IHByb3BlcnR5U3RvcmFnZTsKQEAgLTgyMSw2ICs4MjMsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGFkZEJhc2VDaGVjaygKICAgICAgICAgdW5zaWduZWQgaW5kZXhJbkJsb2NrLCBOb2RlKiBub2Rl
LCBjb25zdCBBYnN0cmFjdFZhbHVlJiBiYXNlVmFsdWUsIGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0
KQogICAgIHsKKyAgICAgICAgYWRkQmFzZUNoZWNrKGluZGV4SW5CbG9jaywgbm9kZSwgYmFzZVZh
bHVlLCAqbV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoc2V0KSk7CisgICAgfQorCisgICAgdm9pZCBh
ZGRCYXNlQ2hlY2soCisgICAgICAgIHVuc2lnbmVkIGluZGV4SW5CbG9jaywgTm9kZSogbm9kZSwg
Y29uc3QgQWJzdHJhY3RWYWx1ZSYgYmFzZVZhbHVlLCBjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJl
U2V0JiBzZXQpCisgICAgewogICAgICAgICBpZiAoIWJhc2VWYWx1ZS5tX3N0cnVjdHVyZS5pc1N1
YnNldE9mKHNldCkpIHsKICAgICAgICAgICAgIC8vIEFyaXNlcyB3aGVuIHdlIHBydW5lIE11bHRp
R2V0QnlPZmZzZXQuIFdlIGNvdWxkIGhhdmUgYQogICAgICAgICAgICAgLy8gTXVsdGlHZXRCeU9m
ZnNldCB3aXRoIGEgc2luZ2xlIHZhcmlhbnQgdGhhdCBjaGVja3MgZm9yIHN0cnVjdHVyZSBTLApA
QCAtODI4LDcgKzgzNiw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBBU1NFUlQobm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAg
ICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBDaGVja1N0cnVjdHVyZSwgbm9kZS0+b3Jp
Z2luLAotICAgICAgICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChzZXQp
KSwgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLmFkZFN0
cnVjdHVyZVNldChzZXQudG9TdHJ1Y3R1cmVTZXQoKSkpLCBub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCkBAIC04MzgsOCArODQ2LDEyIEBA
IHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBhZGRTdHJ1Y3R1cmVUcmFuc2l0aW9uQ2hlY2soTm9k
ZU9yaWdpbiBvcmlnaW4sIHVuc2lnbmVkIGluZGV4SW5CbG9jaywgSlNDZWxsKiBjZWxsLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIGlmIChtX2dyYXBoLnJlZ2lzdGVyU3Ry
dWN0dXJlKGNlbGwtPnN0cnVjdHVyZSgpKSA9PSBTdHJ1Y3R1cmVSZWdpc3RlcmVkQW5kV2F0Y2hl
ZCkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgeworICAgICAgICAgICAgU3RydWN0dXJl
UmVnaXN0cmF0aW9uUmVzdWx0IHJlc3VsdDsKKyAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJT
dHJ1Y3R1cmUoY2VsbC0+c3RydWN0dXJlKCksIHJlc3VsdCk7CisgICAgICAgICAgICBpZiAocmVz
dWx0ID09IFN0cnVjdHVyZVJlZ2lzdGVyZWRBbmRXYXRjaGVkKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVj
dHVyZShzdHJ1Y3R1cmUpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rl
c2lyZWRXZWFrUmVmZXJlbmNlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEZXNpcmVkV2Vha1JlZmVyZW5jZXMuY3BwCShyZXZpc2lvbiAyMTEyMjkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRXZWFrUmVmZXJlbmNlcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDEyIEBAIHZvaWQgRGVzaXJlZFdlYWtSZWZlcmVu
Y2VzOjpyZWFsbHlBZGQoVk0KICAgICAgICAgICAgIGNvbW1vbi0+d2Vha1N0cnVjdHVyZVJlZmVy
ZW5jZXMuYXBwZW5kKAogICAgICAgICAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KHZt
LCBtX2NvZGVCbG9jaywgc3RydWN0dXJlKSk7CiAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAvLyBUaGVyZSBhcmUgd2VpcmQgcmVsYXRpb25zaGlwcyBpbiBob3cgb3B0aW1pemVkIENvZGVC
bG9ja3MKKyAgICAgICAgICAgIC8vIHBvaW50IHRvIG90aGVyIENvZGVCbG9ja3MuIFdlIGRvbid0
IHdhbnQgdG8gaGF2ZSB0aGVtIGJlCisgICAgICAgICAgICAvLyBwYXJ0IG9mIHRoZSB3ZWFrIHBv
aW50ZXIgc2V0LiBGb3IgZXhhbXBsZSwgYW4gb3B0aW1pemVkIENvZGVCbG9jaworICAgICAgICAg
ICAgLy8gaGF2aW5nIGEgd2VhayBwb2ludGVyIHRvIGl0c2VsZiB3aWxsIGNhdXNlIGl0IHRvIGdl
dCBjb2xsZWN0ZWQuCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghanNEeW5hbWljQ2FzdDxD
b2RlQmxvY2sqPih0YXJnZXQpKTsKKwogICAgICAgICAgICAgY29tbW9uLT53ZWFrUmVmZXJlbmNl
cy5hcHBlbmQoCiAgICAgICAgICAgICAgICAgV3JpdGVCYXJyaWVyPEpTQ2VsbD4odm0sIG1fY29k
ZUJsb2NrLCB0YXJnZXQpKTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzY1
LDcgKzIzNjUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUpIHsK
ICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAg
ICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQXJyYXlpZnlUb1N0cnVj
dHVyZSwgb3JpZ2luLAotICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKHN0cnVjdHVyZSks
IE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBFZGdlKGFycmF5LCBDZWxsVXNlKSwgaW5kZXhF
ZGdlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLnJlZ2lzdGVyU3Ry
dWN0dXJlKHN0cnVjdHVyZSkpLCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgRWRnZShhcnJh
eSwgQ2VsbFVzZSksIGluZGV4RWRnZSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAgICAg
ICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgQXJyYXlpZnksIG9yaWdpbiwKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAyMTEyMjkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODgsNiArODgsMTAgQEAgR3JhcGg6OkdyYXBoKFZNJiB2bSwgUGxhbiYgcGxhbiwgTG9u
Z0xpdgogICAgIAogICAgIG1faW5kZXhpbmdDYWNoZSA9IHN0ZDo6bWFrZV91bmlxdWU8Rmxvd0lu
ZGV4aW5nPigqdGhpcyk7CiAgICAgbV9hYnN0cmFjdFZhbHVlc0NhY2hlID0gc3RkOjptYWtlX3Vu
aXF1ZTxGbG93TWFwPEFic3RyYWN0VmFsdWU+PigqdGhpcyk7CisKKyAgICByZWdpc3RlclN0cnVj
dHVyZSh2bS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUuZ2V0KCkpOworICAgIHRoaXMtPnN0cmluZ1N0cnVj
dHVyZSA9IHJlZ2lzdGVyU3RydWN0dXJlKHZtLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSk7CisgICAg
dGhpcy0+c3ltYm9sU3RydWN0dXJlID0gcmVnaXN0ZXJTdHJ1Y3R1cmUodm0uc3ltYm9sU3RydWN0
dXJlLmdldCgpKTsKIH0KIAogR3JhcGg6On5HcmFwaCgpCkBAIC0yNDUsMTUgKzI0OSwxNSBAQCB2
b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0CiAgICAgaWYgKG5vZGUtPmhh
c1Byb21vdGVkTG9jYXRpb25EZXNjcmlwdG9yKCkpCiAgICAgICAgIG91dC5wcmludChjb21tYSwg
bm9kZS0+cHJvbW90ZWRMb2NhdGlvbkRlc2NyaXB0b3IoKSk7CiAgICAgaWYgKG5vZGUtPmhhc1N0
cnVjdHVyZVNldCgpKQotICAgICAgICBvdXQucHJpbnQoY29tbWEsIGluQ29udGV4dChub2RlLT5z
dHJ1Y3R1cmVTZXQoKSwgY29udGV4dCkpOworICAgICAgICBvdXQucHJpbnQoY29tbWEsIGluQ29u
dGV4dChub2RlLT5zdHJ1Y3R1cmVTZXQoKS50b1N0cnVjdHVyZVNldCgpLCBjb250ZXh0KSk7CiAg
ICAgaWYgKG5vZGUtPmhhc1N0cnVjdHVyZSgpKQotICAgICAgICBvdXQucHJpbnQoY29tbWEsIGlu
Q29udGV4dCgqbm9kZS0+c3RydWN0dXJlKCksIGNvbnRleHQpKTsKKyAgICAgICAgb3V0LnByaW50
KGNvbW1hLCBpbkNvbnRleHQoKm5vZGUtPnN0cnVjdHVyZSgpLmdldCgpLCBjb250ZXh0KSk7CiAg
ICAgaWYgKG5vZGUtPmhhc1RyYW5zaXRpb24oKSkgewogICAgICAgICBvdXQucHJpbnQoY29tbWEs
IHBvaW50ZXJEdW1wSW5Db250ZXh0KG5vZGUtPnRyYW5zaXRpb24oKSwgY29udGV4dCkpOwogI2lm
IFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIG91dC5wcmludCgiLCBJRDoiLCBub2RlLT50cmFuc2l0
aW9uKCktPm5leHQtPmlkKCkpOwogI2Vsc2UKLSAgICAgICAgb3V0LnByaW50KCIsIElEOiIsIFJh
d1BvaW50ZXIobm9kZS0+dHJhbnNpdGlvbigpLT5uZXh0KSk7CisgICAgICAgIG91dC5wcmludCgi
LCBJRDoiLCBSYXdQb2ludGVyKG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dC5nZXQoKSkpOwogI2Vu
ZGlmCiAgICAgfQogICAgIGlmIChub2RlLT5oYXNDZWxsT3BlcmFuZCgpKSB7CkBAIC0xMjA3LDcg
KzEyMTEsNyBAQCB1bnNpZ25lZCBHcmFwaDo6cmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yCiB9CiAK
IEpTVmFsdWUgR3JhcGg6OnRyeUdldENvbnN0YW50UHJvcGVydHkoCi0gICAgSlNWYWx1ZSBiYXNl
LCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0
KQorICAgIEpTVmFsdWUgYmFzZSwgY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgc3RydWN0
dXJlU2V0LCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQpCiB7CiAgICAgaWYgKCFiYXNlIHx8ICFiYXNl
LmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CkBAIC0xMjE1LDggKzEyMTks
NyBAQCBKU1ZhbHVlIEdyYXBoOjp0cnlHZXRDb25zdGFudFByb3BlcnR5KAogICAgIEpTT2JqZWN0
KiBvYmplY3QgPSBhc09iamVjdChiYXNlKTsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBz
dHJ1Y3R1cmVTZXQuc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gc3RydWN0dXJlU2V0W2ldOwotICAgICAgICBhc3NlcnRJc1JlZ2lzdGVyZWQoc3RydWN0dXJl
KTsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVTZXRb
aV07CiAgICAgICAgIAogICAgICAgICBXYXRjaHBvaW50U2V0KiBzZXQgPSBzdHJ1Y3R1cmUtPnBy
b3BlcnR5UmVwbGFjZW1lbnRXYXRjaHBvaW50U2V0KG9mZnNldCk7CiAgICAgICAgIGlmICghc2V0
IHx8ICFzZXQtPmlzU3RpbGxWYWxpZCgpKQpAQCAtMTI0OCw3ICsxMjUxLDcgQEAgSlNWYWx1ZSBH
cmFwaDo6dHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eSgKICAgICAvLyBpbmNvbXBhdGlibGUgd2l0aCB0
aGUgZ2V0RGlyZWN0IHdlJ3JlIHRyeWluZyB0byBkby4gVGhlIGVhc2llc3Qgd2F5IHRvIGRvIHRo
YXQgaXMgdG8KICAgICAvLyBkZXRlcm1pbmUgaWYgdGhlIHN0cnVjdHVyZSBiZWxvbmdzIHRvIHRo
ZSBwcm92ZW4gc2V0LgogICAgIAotICAgIGlmICghc3RydWN0dXJlU2V0LmNvbnRhaW5zKG9iamVj
dC0+c3RydWN0dXJlKCkpKQorICAgIGlmICghc3RydWN0dXJlU2V0LnRvU3RydWN0dXJlU2V0KCku
Y29udGFpbnMob2JqZWN0LT5zdHJ1Y3R1cmUoKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7
CiAgICAgCiAgICAgcmV0dXJuIG9iamVjdC0+Z2V0RGlyZWN0KG9mZnNldCk7CkBAIC0xMjU2LDcg
KzEyNTksNyBAQCBKU1ZhbHVlIEdyYXBoOjp0cnlHZXRDb25zdGFudFByb3BlcnR5KAogCiBKU1Zh
bHVlIEdyYXBoOjp0cnlHZXRDb25zdGFudFByb3BlcnR5KEpTVmFsdWUgYmFzZSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIFByb3BlcnR5T2Zmc2V0IG9mZnNldCkKIHsKLSAgICByZXR1cm4gdHJ5R2V0
Q29uc3RhbnRQcm9wZXJ0eShiYXNlLCBTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSwgb2Zmc2V0KTsK
KyAgICByZXR1cm4gdHJ5R2V0Q29uc3RhbnRQcm9wZXJ0eShiYXNlLCBSZWdpc3RlcmVkU3RydWN0
dXJlU2V0KHJlZ2lzdGVyU3RydWN0dXJlKHN0cnVjdHVyZSkpLCBvZmZzZXQpOwogfQogCiBKU1Zh
bHVlIEdyYXBoOjp0cnlHZXRDb25zdGFudFByb3BlcnR5KApAQCAtMTI3OCwxMyArMTI4MSwxMyBA
QCBKU1ZhbHVlIEdyYXBoOjp0cnlHZXRDb25zdGFudFByb3BlcnR5KGNvCiB9CiAKIEFic3RyYWN0
VmFsdWUgR3JhcGg6OmluZmVycmVkVmFsdWVGb3JQcm9wZXJ0eSgKLSAgICBjb25zdCBTdHJ1Y3R1
cmVTZXQmIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIFN0cnVjdHVyZUNsb2JiZXJTdGF0
ZSBjbG9iYmVyU3RhdGUpCisgICAgY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgYmFzZSwg
VW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgU3RydWN0dXJlQ2xvYmJlclN0YXRlIGNsb2JiZXJTdGF0
ZSkKIHsKICAgICBBYnN0cmFjdFZhbHVlIHJlc3VsdDsKICAgICBiYXNlLmZvckVhY2goCi0gICAg
ICAgIFsmXSAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIHsKKyAgICAgICAgWyZdIChSZWdpc3RlcmVk
U3RydWN0dXJlIHN0cnVjdHVyZSkgewogICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSB2YWx1ZTsK
LSAgICAgICAgICAgIHZhbHVlLnNldCgqdGhpcywgaW5mZXJyZWRUeXBlRm9yUHJvcGVydHkoc3Ry
dWN0dXJlLCB1aWQpKTsKKyAgICAgICAgICAgIHZhbHVlLnNldCgqdGhpcywgaW5mZXJyZWRUeXBl
Rm9yUHJvcGVydHkoc3RydWN0dXJlLmdldCgpLCB1aWQpKTsKICAgICAgICAgICAgIHJlc3VsdC5t
ZXJnZSh2YWx1ZSk7CiAgICAgICAgIH0pOwogICAgIGlmIChjbG9iYmVyU3RhdGUgPT0gU3RydWN0
dXJlc0FyZUNsb2JiZXJlZCkKQEAgLTE0MTMsNjEgKzE0MTYsMTggQEAgdm9pZCBHcmFwaDo6dmlz
aXRDaGlsZHJlbihTbG90VmlzaXRvciYgdgogICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmll
cmVkKHZhbHVlLT52YWx1ZSgpKTsKICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZCh2
YWx1ZS0+c3RydWN0dXJlKCkpOwogICAgIH0KLSAgICAKLSAgICBmb3IgKEJsb2NrSW5kZXggYmxv
Y2tJbmRleCA9IG51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7Ci0gICAgICAgIEJhc2ljQmxv
Y2sqIGJsb2NrID0gdGhpcy0+YmxvY2soYmxvY2tJbmRleCk7Ci0gICAgICAgIGlmICghYmxvY2sp
Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0gICAgICAgIGZvciAoYXV0byogbm9k
ZSA6ICpibG9jaykgewotICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Ci0gICAgICAg
ICAgICBjYXNlIENoZWNrU3RydWN0dXJlOgotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IG5vZGUtPnN0cnVjdHVyZVNldCgpLnNpemUoKTsgaS0tOykKLSAgICAgICAgICAgICAgICAg
ICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChub2RlLT5zdHJ1Y3R1cmVTZXQoKVtpXSk7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNl
IE5ld09iamVjdDoKLSAgICAgICAgICAgIGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZToKLSAgICAg
ICAgICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgotICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBw
ZW5kVW5iYXJyaWVyZWQobm9kZS0+c3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6Ci0gICAg
ICAgICAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgotICAgICAgICAgICAgY2FzZSBS
ZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgotICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5k
VW5iYXJyaWVyZWQobm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91cyk7Ci0gICAgICAgICAgICAg
ICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChub2RlLT50cmFuc2l0aW9uKCktPm5leHQpOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2Fz
ZSBNdWx0aUdldEJ5T2Zmc2V0OgotICAgICAgICAgICAgICAgIGZvciAoY29uc3QgTXVsdGlHZXRC
eU9mZnNldENhc2UmIGdldENhc2UgOiBub2RlLT5tdWx0aUdldEJ5T2Zmc2V0RGF0YSgpLmNhc2Vz
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgOiBnZXRD
YXNlLnNldCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJp
ZXJlZChzdHJ1Y3R1cmUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNlIE11bHRpUHV0QnlPZmZz
ZXQ6Ci0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbm9kZS0+bXVsdGlQdXRCeU9m
ZnNldERhdGEoKS52YXJpYW50cy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgICAgICAgICAgICAg
UHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQgPSBub2RlLT5tdWx0aVB1dEJ5T2Zmc2V0RGF0YSgpLnZh
cmlhbnRzW2ldOwotICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCA9
IHZhcmlhbnQub2xkU3RydWN0dXJlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaiA9IHNldC5zaXplKCk7IGotLTspCi0gICAgICAgICAgICAgICAgICAgICAgICB2aXNpdG9y
LmFwcGVuZFVuYmFycmllcmVkKHNldFtqXSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2YXJp
YW50LmtpbmQoKSA9PSBQdXRCeUlkVmFyaWFudDo6VHJhbnNpdGlvbikKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQodmFyaWFudC5uZXdTdHJ1Y3R1cmUo
KSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KIH0KIAogRnJvemVuVmFsdWUqIEdyYXBoOjpm
cmVlemUoSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAoVU5MSUtFTFkoIXZhbHVlKSkKICAgICAg
ICAgcmV0dXJuIEZyb3plblZhbHVlOjplbXB0eVNpbmdsZXRvbigpOworCisgICAgLy8gVGhlcmUg
YXJlIHdlaXJkIHJlbGF0aW9uc2hpcHMgaW4gaG93IG9wdGltaXplZCBDb2RlQmxvY2tzCisgICAg
Ly8gcG9pbnQgdG8gb3RoZXIgQ29kZUJsb2Nrcy4gV2UgZG9uJ3Qgd2FudCB0byBoYXZlIHRoZW0g
YmUKKyAgICAvLyBwYXJ0IG9mIHRoZSB3ZWFrIHBvaW50ZXIgc2V0LiBGb3IgZXhhbXBsZSwgYW4g
b3B0aW1pemVkIENvZGVCbG9jaworICAgIC8vIGhhdmluZyBhIHdlYWsgcG9pbnRlciB0byBpdHNl
bGYgd2lsbCBjYXVzZSBpdCB0byBnZXQgY29sbGVjdGVkLgorICAgIFJFTEVBU0VfQVNTRVJUKCFq
c0R5bmFtaWNDYXN0PENvZGVCbG9jayo+KHZhbHVlKSk7CiAgICAgCiAgICAgYXV0byByZXN1bHQg
PSBtX2Zyb3plblZhbHVlTWFwLmFkZChKU1ZhbHVlOjplbmNvZGUodmFsdWUpLCBudWxscHRyKTsK
ICAgICBpZiAoTElLRUxZKCFyZXN1bHQuaXNOZXdFbnRyeSkpCkBAIC0xNTA3LDEyICsxNDY3LDE0
IEBAIHZvaWQgR3JhcGg6OmNvbnZlcnRUb1N0cm9uZ0NvbnN0YW50KE5vZGUKICAgICBjb252ZXJ0
VG9Db25zdGFudChub2RlLCBmcmVlemVTdHJvbmcodmFsdWUpKTsKIH0KIAotU3RydWN0dXJlUmVn
aXN0cmF0aW9uUmVzdWx0IEdyYXBoOjpyZWdpc3RlclN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKK1JlZ2lzdGVyZWRTdHJ1Y3R1cmUgR3JhcGg6OnJlZ2lzdGVyU3RydWN0dXJlKFN0cnVj
dHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmVSZWdpc3RyYXRpb25SZXN1bHQmIHJlc3VsdCkKIHsK
ICAgICBtX3BsYW4ud2Vha1JlZmVyZW5jZXMuYWRkTGF6aWx5KHN0cnVjdHVyZSk7CiAgICAgaWYg
KG1fcGxhbi53YXRjaHBvaW50cy5jb25zaWRlcihzdHJ1Y3R1cmUpKQotICAgICAgICByZXR1cm4g
U3RydWN0dXJlUmVnaXN0ZXJlZEFuZFdhdGNoZWQ7Ci0gICAgcmV0dXJuIFN0cnVjdHVyZVJlZ2lz
dGVyZWROb3JtYWxseTsKKyAgICAgICAgcmVzdWx0ID0gU3RydWN0dXJlUmVnaXN0ZXJlZEFuZFdh
dGNoZWQ7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBTdHJ1Y3R1cmVSZWdpc3RlcmVkTm9y
bWFsbHk7CisgICAgcmV0dXJuIFJlZ2lzdGVyZWRTdHJ1Y3R1cmU6OmNyZWF0ZVByaXZhdGUoc3Ry
dWN0dXJlKTsKIH0KIAogdm9pZCBHcmFwaDo6YXNzZXJ0SXNSZWdpc3RlcmVkKFN0cnVjdHVyZSog
c3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNp
b24gMjExMjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTMsNyArMjEzLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbnZlcnRU
b0NvbnN0YW50KE5vZGUqIG5vZGUsIEpTVmFsdWUgdmFsdWUpOwogICAgIHZvaWQgY29udmVydFRv
U3Ryb25nQ29uc3RhbnQoTm9kZSogbm9kZSwgSlNWYWx1ZSB2YWx1ZSk7CiAgICAgCi0gICAgU3Ry
dWN0dXJlUmVnaXN0cmF0aW9uUmVzdWx0IHJlZ2lzdGVyU3RydWN0dXJlKFN0cnVjdHVyZSogc3Ry
dWN0dXJlKTsKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHJlZ2lzdGVyU3RydWN0dXJlKFN0cnVj
dHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgU3RydWN0dXJlUmVnaXN0cmF0aW9uUmVz
dWx0IGlnbm9yZWQ7CisgICAgICAgIHJldHVybiByZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUs
IGlnbm9yZWQpOworICAgIH0KKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHJlZ2lzdGVyU3RydWN0
dXJlKFN0cnVjdHVyZSosIFN0cnVjdHVyZVJlZ2lzdHJhdGlvblJlc3VsdCYpOwogICAgIHZvaWQg
YXNzZXJ0SXNSZWdpc3RlcmVkKFN0cnVjdHVyZSogc3RydWN0dXJlKTsKICAgICAKICAgICAvLyBD
b2RlQmxvY2sgaXMgb3B0aW9uYWwsIGJ1dCBtYXkgYWxsb3cgYWRkaXRpb25hbCBpbmZvcm1hdGlv
biB0byBiZSBkdW1wZWQgKGUuZy4gSWRlbnRpZmllciBuYW1lcykuCkBAIC0zNDEsMTIgKzM0Niwy
NiBAQCBwdWJsaWM6CiAgICAgCiAgICAgc3RhdGljIGNvbnN0IGNoYXIgKm9wTmFtZShOb2RlVHlw
ZSk7CiAgICAgCi0gICAgU3RydWN0dXJlU2V0KiBhZGRTdHJ1Y3R1cmVTZXQoY29uc3QgU3RydWN0
dXJlU2V0JiBzdHJ1Y3R1cmVTZXQpCisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCogYWRkU3Ry
dWN0dXJlU2V0KGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0KQogICAgIHsKKyAgICAg
ICAgbV9zdHJ1Y3R1cmVTZXRzLmFwcGVuZCgpOworICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJl
U2V0KiByZXN1bHQgPSAmbV9zdHJ1Y3R1cmVTZXRzLmxhc3QoKTsKKwogICAgICAgICBmb3IgKFN0
cnVjdHVyZSogc3RydWN0dXJlIDogc3RydWN0dXJlU2V0KQotICAgICAgICAgICAgcmVnaXN0ZXJT
dHJ1Y3R1cmUoc3RydWN0dXJlKTsKLSAgICAgICAgbV9zdHJ1Y3R1cmVTZXQuYXBwZW5kKHN0cnVj
dHVyZVNldCk7Ci0gICAgICAgIHJldHVybiAmbV9zdHJ1Y3R1cmVTZXQubGFzdCgpOworICAgICAg
ICAgICAgcmVzdWx0LT5hZGQocmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKSk7CisKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0KiBh
ZGRTdHJ1Y3R1cmVTZXQoY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0
KQorICAgIHsKKyAgICAgICAgbV9zdHJ1Y3R1cmVTZXRzLmFwcGVuZCgpOworICAgICAgICBSZWdp
c3RlcmVkU3RydWN0dXJlU2V0KiByZXN1bHQgPSAmbV9zdHJ1Y3R1cmVTZXRzLmxhc3QoKTsKKwor
ICAgICAgICBmb3IgKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlIDogc3RydWN0dXJlU2V0
KQorICAgICAgICAgICAgcmVzdWx0LT5hZGQoc3RydWN0dXJlKTsKKworICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KICAgICAKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0Rm9y
KENvZGVPcmlnaW4gY29kZU9yaWdpbikKQEAgLTcxNSw3ICs3MzQsNyBAQCBwdWJsaWM6CiAgICAg
fQogCiAgICAgQWJzdHJhY3RWYWx1ZSBpbmZlcnJlZFZhbHVlRm9yUHJvcGVydHkoCi0gICAgICAg
IGNvbnN0IFN0cnVjdHVyZVNldCYgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgU3RydWN0
dXJlQ2xvYmJlclN0YXRlID0gU3RydWN0dXJlc0FyZVdhdGNoZWQpOworICAgICAgICBjb25zdCBS
ZWdpc3RlcmVkU3RydWN0dXJlU2V0JiBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBTdHJ1
Y3R1cmVDbG9iYmVyU3RhdGUgPSBTdHJ1Y3R1cmVzQXJlV2F0Y2hlZCk7CiAKICAgICAvLyBUaGlz
IHVzZXMgZWl0aGVyIGNvbnN0YW50IHByb3BlcnR5IGluZmVyZW5jZSBvciBwcm9wZXJ0eSB0eXBl
IGluZmVyZW5jZSB0byBkZXJpdmUgYSBnb29kIGFic3RyYWN0CiAgICAgLy8gdmFsdWUgZm9yIHNv
bWUgcHJvcGVydHkgYWNjZXNzZWQgd2l0aCB0aGUgZ2l2ZW4gYWJzdHJhY3QgdmFsdWUgYmFzZS4K
QEAgLTgxOCw3ICs4MzcsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgcmVxdWlyZWRSZWdpc3Rl
ckNvdW50Rm9yRXhpdCgpOwogICAgIHVuc2lnbmVkIHJlcXVpcmVkUmVnaXN0ZXJDb3VudEZvckV4
ZWN1dGlvbkFuZEV4aXQoKTsKICAgICAKLSAgICBKU1ZhbHVlIHRyeUdldENvbnN0YW50UHJvcGVy
dHkoSlNWYWx1ZSBiYXNlLCBjb25zdCBTdHJ1Y3R1cmVTZXQmLCBQcm9wZXJ0eU9mZnNldCk7Cisg
ICAgSlNWYWx1ZSB0cnlHZXRDb25zdGFudFByb3BlcnR5KEpTVmFsdWUgYmFzZSwgY29uc3QgUmVn
aXN0ZXJlZFN0cnVjdHVyZVNldCYsIFByb3BlcnR5T2Zmc2V0KTsKICAgICBKU1ZhbHVlIHRyeUdl
dENvbnN0YW50UHJvcGVydHkoSlNWYWx1ZSBiYXNlLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eU9mZnNl
dCk7CiAgICAgSlNWYWx1ZSB0cnlHZXRDb25zdGFudFByb3BlcnR5KEpTVmFsdWUgYmFzZSwgY29u
c3QgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSYsIFByb3BlcnR5T2Zmc2V0KTsKICAgICBKU1ZhbHVl
IHRyeUdldENvbnN0YW50UHJvcGVydHkoY29uc3QgQWJzdHJhY3RWYWx1ZSYsIFByb3BlcnR5T2Zm
c2V0KTsKQEAgLTkxMCw3ICs5MjksNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgU2VnbWVudGVkVmVj
dG9yPFZhcmlhYmxlQWNjZXNzRGF0YSwgMTY+IG1fdmFyaWFibGVBY2Nlc3NEYXRhOwogICAgIFNl
Z21lbnRlZFZlY3RvcjxBcmd1bWVudFBvc2l0aW9uLCA4PiBtX2FyZ3VtZW50UG9zaXRpb25zOwot
ICAgIFNlZ21lbnRlZFZlY3RvcjxTdHJ1Y3R1cmVTZXQsIDE2PiBtX3N0cnVjdHVyZVNldDsKICAg
ICBCYWc8VHJhbnNpdGlvbj4gbV90cmFuc2l0aW9uczsKICAgICBTZWdtZW50ZWRWZWN0b3I8TmV3
QXJyYXlCdWZmZXJEYXRhLCA0PiBtX25ld0FycmF5QnVmZmVyRGF0YTsKICAgICBCYWc8QnJhbmNo
RGF0YT4gbV9icmFuY2hEYXRhOwpAQCAtOTYwLDYgKzk3OCw5IEBAIHB1YmxpYzoKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8Rmxvd0luZGV4aW5nPiBtX2luZGV4aW5nQ2FjaGU7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPEZsb3dNYXA8QWJzdHJhY3RWYWx1ZT4+IG1fYWJzdHJhY3RWYWx1ZXNDYWNoZTsKIAor
ICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RyaW5nU3RydWN0dXJlOworICAgIFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgc3ltYm9sU3RydWN0dXJlOworCiBwcml2YXRlOgogICAgIHZvaWQgYWRkTm9kZVRv
TWFwQnlJbmRleChOb2RlKik7CiAKQEAgLTk5Nyw2ICsxMDE4LDcgQEAgcHJpdmF0ZToKIAogICAg
IFZlY3RvcjxOb2RlKiwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IG1fbm9kZXNCeUluZGV4Owog
ICAgIFZlY3Rvcjx1bnNpZ25lZCwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IG1fbm9kZUluZGV4
RnJlZUxpc3Q7CisgICAgU2VnbWVudGVkVmVjdG9yPFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQsIDE2
PiBtX3N0cnVjdHVyZVNldHM7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lvbiAy
MTEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI0MiwxNCArMjQyLDE0IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIEp1bXAgYnJhbmNoV2Vha1N0cnVjdHVyZShSZWxhdGlv
bmFsQ29uZGl0aW9uIGNvbmQsIFQgbGVmdCwgU3RydWN0dXJlKiB3ZWFrU3RydWN0dXJlKQorICAg
IEp1bXAgYnJhbmNoV2Vha1N0cnVjdHVyZShSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFQgbGVm
dCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSB3ZWFrU3RydWN0dXJlKQogICAgIHsKKyAgICAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSB3ZWFrU3RydWN0dXJlLmdldCgpOwogI2lmIFVTRShKU1ZBTFVF
NjQpCi0gICAgICAgIEp1bXAgcmVzdWx0ID0gYnJhbmNoMzIoY29uZCwgbGVmdCwgVHJ1c3RlZElt
bTMyKHdlYWtTdHJ1Y3R1cmUtPmlkKCkpKTsKLSAgICAgICAgYWRkV2Vha1JlZmVyZW5jZSh3ZWFr
U3RydWN0dXJlKTsKKyAgICAgICAgSnVtcCByZXN1bHQgPSBicmFuY2gzMihjb25kLCBsZWZ0LCBU
cnVzdGVkSW1tMzIoc3RydWN0dXJlLT5pZCgpKSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAj
ZWxzZQotICAgICAgICByZXR1cm4gYnJhbmNoV2Vha1B0cihjb25kLCBsZWZ0LCB3ZWFrU3RydWN0
dXJlKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaFB0cihjb25kLCBsZWZ0LCBUcnVzdGVkSW1tUHRy
KHN0cnVjdHVyZSkpOwogI2VuZGlmCiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR011bHRpR2V0QnlPZmZzZXREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR011bHRpR2V0QnlPZmZzZXREYXRhLmNwcAkocmV2aXNpb24g
MjExMjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNdWx0aUdldEJ5T2Zmc2V0
RGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBHZXRCeU9mZnNl
dE1ldGhvZDo6ZHVtcChQcmludFN0cmVhbQogCiB2b2lkIE11bHRpR2V0QnlPZmZzZXRDYXNlOjpk
dW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25z
dAogewotICAgIG91dC5wcmludChpbkNvbnRleHQobV9zZXQsIGNvbnRleHQpLCAiOiIsIGluQ29u
dGV4dChtX21ldGhvZCwgY29udGV4dCkpOworICAgIG91dC5wcmludChpbkNvbnRleHQobV9zZXQu
dG9TdHJ1Y3R1cmVTZXQoKSwgY29udGV4dCksICI6IiwgaW5Db250ZXh0KG1fbWV0aG9kLCBjb250
ZXh0KSk7CiB9CiAKIHZvaWQgTXVsdGlHZXRCeU9mZnNldENhc2U6OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTXVsdGlHZXRC
eU9mZnNldERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R011bHRpR2V0QnlPZmZzZXREYXRhLmgJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTXVsdGlHZXRCeU9mZnNldERhdGEuaAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKKyNpbmNsdWRlICJERkdS
ZWdpc3RlcmVkU3RydWN0dXJlU2V0LmgiCiAjaW5jbHVkZSAiRHVtcENvbnRleHQuaCIKICNpbmNs
dWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVNldC5oIgpAQCAtMTE5LDIxICsx
MjAsMjEgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAgCi0gICAgTXVsdGlHZXRCeU9mZnNl
dENhc2UoY29uc3QgU3RydWN0dXJlU2V0JiBzZXQsIGNvbnN0IEdldEJ5T2Zmc2V0TWV0aG9kJiBt
ZXRob2QpCisgICAgTXVsdGlHZXRCeU9mZnNldENhc2UoY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVy
ZVNldCYgc2V0LCBjb25zdCBHZXRCeU9mZnNldE1ldGhvZCYgbWV0aG9kKQogICAgICAgICA6IG1f
c2V0KHNldCkKICAgICAgICAgLCBtX21ldGhvZChtZXRob2QpCiAgICAgewogICAgIH0KICAgICAK
LSAgICBTdHJ1Y3R1cmVTZXQmIHNldCgpIHsgcmV0dXJuIG1fc2V0OyB9Ci0gICAgY29uc3QgU3Ry
dWN0dXJlU2V0JiBzZXQoKSBjb25zdCB7IHJldHVybiBtX3NldDsgfQorICAgIFJlZ2lzdGVyZWRT
dHJ1Y3R1cmVTZXQmIHNldCgpIHsgcmV0dXJuIG1fc2V0OyB9CisgICAgY29uc3QgUmVnaXN0ZXJl
ZFN0cnVjdHVyZVNldCYgc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zZXQ7IH0KICAgICBjb25zdCBH
ZXRCeU9mZnNldE1ldGhvZCYgbWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9tZXRob2Q7IH0KICAg
ICAKICAgICB2b2lkIGR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mLCBEdW1wQ29udGV4dCopIGNv
bnN0OwogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogCiBwcml2YXRlOgotICAg
IFN0cnVjdHVyZVNldCBtX3NldDsKKyAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0IG1fc2V0Owog
ICAgIEdldEJ5T2Zmc2V0TWV0aG9kIG1fbWV0aG9kOwogfTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuY3BwCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzUsNyArMTc1LDcg
QEAgdm9pZCBOb2RlOjpjb252ZXJ0VG9QdXRIaW50KGNvbnN0IFByb21vdAogdm9pZCBOb2RlOjpj
b252ZXJ0VG9QdXRTdHJ1Y3R1cmVIaW50KE5vZGUqIHN0cnVjdHVyZSkKIHsKICAgICBBU1NFUlQo
bV9vcCA9PSBQdXRTdHJ1Y3R1cmUpOwotICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmNhc3RDb25zdGFu
dDxTdHJ1Y3R1cmUqPigpID09IHRyYW5zaXRpb24oKS0+bmV4dCk7CisgICAgQVNTRVJUKHN0cnVj
dHVyZS0+Y2FzdENvbnN0YW50PFN0cnVjdHVyZSo+KCkgPT0gdHJhbnNpdGlvbigpLT5uZXh0Lmdl
dCgpKTsKICAgICBjb252ZXJ0VG9QdXRIaW50KFN0cnVjdHVyZVBMb2MsIGNoaWxkMSgpLm5vZGUo
KSwgc3RydWN0dXJlKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJ
KHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw4IEBACiAjaW5jbHVkZSAiREZHTm9kZVR5cGUu
aCIKICNpbmNsdWRlICJERkdPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhLmgiCiAjaW5jbHVkZSAi
REZHT3BJbmZvLmgiCisjaW5jbHVkZSAiREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5oIgorI2luY2x1
ZGUgIkRGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQuaCIKICNpbmNsdWRlICJERkdUcmFuc2l0aW9u
LmgiCiAjaW5jbHVkZSAiREZHVXNlS2luZC5oIgogI2luY2x1ZGUgIkRGR1ZhcmlhYmxlQWNjZXNz
RGF0YS5oIgpAQCAtNDEwLDEwICs0MTIsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCByZW1vdmUo
KTsKIAotICAgIHZvaWQgY29udmVydFRvQ2hlY2tTdHJ1Y3R1cmUoU3RydWN0dXJlU2V0KiBzZXQp
CisgICAgdm9pZCBjb252ZXJ0VG9DaGVja1N0cnVjdHVyZShSZWdpc3RlcmVkU3RydWN0dXJlU2V0
KiBzZXQpCiAgICAgewogICAgICAgICBzZXRPcEFuZERlZmF1bHRGbGFncyhDaGVja1N0cnVjdHVy
ZSk7Ci0gICAgICAgIG1fb3BJbmZvID0gc2V0OyAKKyAgICAgICAgbV9vcEluZm8gPSBzZXQ7CiAg
ICAgfQogCiAgICAgdm9pZCBjb252ZXJ0VG9DaGVja1N0cnVjdHVyZUltbWVkaWF0ZShOb2RlKiBz
dHJ1Y3R1cmUpCkBAIC0xNjE0LDEwICsxNjE2LDEwIEBAIHB1YmxpYzoKICAgICAgICAgfQogICAg
IH0KICAgICAKLSAgICBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCgpCisgICAgY29uc3QgUmVn
aXN0ZXJlZFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0KCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChoYXNTdHJ1Y3R1cmVTZXQoKSk7Ci0gICAgICAgIHJldHVybiAqbV9vcEluZm8uYXM8U3RydWN0
dXJlU2V0Kj4oKTsKKyAgICAgICAgcmV0dXJuICptX29wSW5mby5hczxSZWdpc3RlcmVkU3RydWN0
dXJlU2V0Kj4oKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBoYXNTdHJ1Y3R1cmUoKQpAQCAtMTYz
MiwxMCArMTYzNCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUoKQorICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChoYXNTdHJ1Y3R1cmUoKSk7Ci0gICAgICAgIHJldHVybiBt
X29wSW5mby5hczxTdHJ1Y3R1cmUqPigpOworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXNSZWdp
c3RlcmVkU3RydWN0dXJlKCk7CiAgICAgfQogICAgIAogICAgIGJvb2wgaGFzU3RvcmFnZUFjY2Vz
c0RhdGEoKQpAQCAtMjUxMyw2ICsyNTE1LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICB1Lmlu
dDY0ID0gMDsKICAgICAgICAgICAgIHUuY29uc3RQb2ludGVyID0gY29uc3RQb2ludGVyOwogICAg
ICAgICB9CisgICAgICAgIE9wSW5mb1dyYXBwZXIoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1
cmUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHUuaW50NjQgPSAwOworICAgICAgICAgICAgdS5w
b2ludGVyID0gYml0d2lzZV9jYXN0PHZvaWQqPihzdHJ1Y3R1cmUpOworICAgICAgICB9CiAgICAg
ICAgIE9wSW5mb1dyYXBwZXImIG9wZXJhdG9yPSh1aW50MzJfdCBpbnQzMikKICAgICAgICAgewog
ICAgICAgICAgICAgdS5pbnQ2NCA9IDA7CkBAIC0yNTQyLDYgKzI1NDksMTIgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIHUuY29uc3RQb2ludGVyID0gY29uc3RQb2ludGVyOwogICAgICAgICAgICAg
cmV0dXJuICp0aGlzOwogICAgICAgICB9CisgICAgICAgIE9wSW5mb1dyYXBwZXImIG9wZXJhdG9y
PShSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkKKyAgICAgICAgeworICAgICAgICAgICAg
dS5pbnQ2NCA9IDA7CisgICAgICAgICAgICB1LnBvaW50ZXIgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+
KHN0cnVjdHVyZSk7CisgICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAgIH0KICAgICAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAgICAgIEFMV0FZU19JTkxJTkUgYXV0byBhcygp
IGNvbnN0IC0+IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfcG9pbnRlcjxUPjo6dmFs
dWUgJiYgIXN0ZDo6aXNfY29uc3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxUPjo6dHlw
ZT46OnZhbHVlLCBUPjo6dHlwZQogICAgICAgICB7CkBAIC0yNTYyLDYgKzI1NzUsMTEgQEAgcHJp
dmF0ZToKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIHUuaW50NjQ7CiAgICAgICAgIH0K
KyAgICAgICAgQUxXQVlTX0lOTElORSBSZWdpc3RlcmVkU3RydWN0dXJlIGFzUmVnaXN0ZXJlZFN0
cnVjdHVyZSgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nh
c3Q8UmVnaXN0ZXJlZFN0cnVjdHVyZT4odS5wb2ludGVyKTsKKyAgICAgICAgfQorCiAgICAgICAg
IHVuaW9uIHsKICAgICAgICAgICAgIHVpbnQzMl90IGludDMyOwogICAgICAgICAgICAgdWludDY0
X3QgaW50NjQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9j
YXRpb25TaW5raW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDIxMTIy
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtp
bmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NiwyOCArMTg2LDI4IEBAIHB1YmxpYzoK
ICAgICAgICAgfQogICAgIH0KIAotICAgIEFsbG9jYXRpb24mIHNldFN0cnVjdHVyZXMoY29uc3Qg
U3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVzKQorICAgIEFsbG9jYXRpb24mIHNldFN0cnVjdHVyZXMo
Y29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgc3RydWN0dXJlcykKICAgICB7CiAgICAgICAg
IEFTU0VSVChoYXNTdHJ1Y3R1cmVzKCkgJiYgIXN0cnVjdHVyZXMuaXNFbXB0eSgpKTsKICAgICAg
ICAgbV9zdHJ1Y3R1cmVzID0gc3RydWN0dXJlczsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAg
IH0KIAotICAgIEFsbG9jYXRpb24mIG1lcmdlU3RydWN0dXJlcyhjb25zdCBTdHJ1Y3R1cmVTZXQm
IHN0cnVjdHVyZXMpCisgICAgQWxsb2NhdGlvbiYgbWVyZ2VTdHJ1Y3R1cmVzKGNvbnN0IFJlZ2lz
dGVyZWRTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZXMpCiAgICAgewogICAgICAgICBBU1NFUlQoaGFz
U3RydWN0dXJlcygpIHx8IHN0cnVjdHVyZXMuaXNFbXB0eSgpKTsKICAgICAgICAgbV9zdHJ1Y3R1
cmVzLm1lcmdlKHN0cnVjdHVyZXMpOwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0g
ICAgQWxsb2NhdGlvbiYgZmlsdGVyU3RydWN0dXJlcyhjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVj
dHVyZXMpCisgICAgQWxsb2NhdGlvbiYgZmlsdGVyU3RydWN0dXJlcyhjb25zdCBSZWdpc3RlcmVk
U3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVzKQogICAgIHsKICAgICAgICAgQVNTRVJUKGhhc1N0cnVj
dHVyZXMoKSk7CiAgICAgICAgIG1fc3RydWN0dXJlcy5maWx0ZXIoc3RydWN0dXJlcyk7CiAgICAg
ICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKLSAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVj
dHVyZXMoKSBjb25zdAorICAgIGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVy
ZXMoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlczsKICAgICB9CkBA
IC0yODMsNyArMjgzLDcgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgICAgIG91dC5wcmludCgi
QWxsb2NhdGlvbigiKTsKICAgICAgICAgaWYgKCFtX3N0cnVjdHVyZXMuaXNFbXB0eSgpKQotICAg
ICAgICAgICAgb3V0LnByaW50KGluQ29udGV4dChtX3N0cnVjdHVyZXMsIGNvbnRleHQpKTsKKyAg
ICAgICAgICAgIG91dC5wcmludChpbkNvbnRleHQobV9zdHJ1Y3R1cmVzLnRvU3RydWN0dXJlU2V0
KCksIGNvbnRleHQpKTsKICAgICAgICAgaWYgKCFtX2ZpZWxkcy5pc0VtcHR5KCkpIHsKICAgICAg
ICAgICAgIGlmICghbV9zdHJ1Y3R1cmVzLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBvdXQu
cHJpbnQoIiwgIik7CkBAIC0yOTYsNyArMjk2LDcgQEAgcHJpdmF0ZToKICAgICBOb2RlKiBtX2lk
ZW50aWZpZXI7IC8vIFRoaXMgaXMgdGhlIGFjdHVhbCBub2RlIHRoYXQgY3JlYXRlZCB0aGUgYWxs
b2NhdGlvbgogICAgIEtpbmQgbV9raW5kOwogICAgIEhhc2hNYXA8UHJvbW90ZWRMb2NhdGlvbkRl
c2NyaXB0b3IsIE5vZGUqPiBtX2ZpZWxkczsKLSAgICBTdHJ1Y3R1cmVTZXQgbV9zdHJ1Y3R1cmVz
OworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQgbV9zdHJ1Y3R1cmVzOwogfTsKIAogY2xhc3Mg
TG9jYWxIZWFwIHsKQEAgLTgzMiw3ICs4MzIsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgdGFy
Z2V0ID0gJm1faGVhcC5uZXdBbGxvY2F0aW9uKG5vZGUsIEFsbG9jYXRpb246OktpbmQ6Ok9iamVj
dCk7CiAgICAgICAgICAgICB0YXJnZXQtPnNldFN0cnVjdHVyZXMobm9kZS0+c3RydWN0dXJlKCkp
OwogICAgICAgICAgICAgd3JpdGVzLmFkZCgKLSAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVQTG9j
LCBMYXp5Tm9kZShtX2dyYXBoLmZyZWV6ZShub2RlLT5zdHJ1Y3R1cmUoKSkpKTsKKyAgICAgICAg
ICAgICAgICBTdHJ1Y3R1cmVQTG9jLCBMYXp5Tm9kZShtX2dyYXBoLmZyZWV6ZShub2RlLT5zdHJ1
Y3R1cmUoKS5nZXQoKSkpKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgTmV3
RnVuY3Rpb246CkBAIC04NzksNyArODc5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBQdXRT
dHJ1Y3R1cmU6CiAgICAgICAgICAgICB0YXJnZXQgPSBtX2hlYXAub25seUxvY2FsQWxsb2NhdGlv
bihub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwogICAgICAgICAgICAgaWYgKHRhcmdldCAmJiB0YXJn
ZXQtPmlzT2JqZWN0QWxsb2NhdGlvbigpKSB7Ci0gICAgICAgICAgICAgICAgd3JpdGVzLmFkZChT
dHJ1Y3R1cmVQTG9jLCBMYXp5Tm9kZShtX2dyYXBoLmZyZWV6ZShKU1ZhbHVlKG5vZGUtPnRyYW5z
aXRpb24oKS0+bmV4dCkpKSk7CisgICAgICAgICAgICAgICAgd3JpdGVzLmFkZChTdHJ1Y3R1cmVQ
TG9jLCBMYXp5Tm9kZShtX2dyYXBoLmZyZWV6ZShKU1ZhbHVlKG5vZGUtPnRyYW5zaXRpb24oKS0+
bmV4dC5nZXQoKSkpKSk7CiAgICAgICAgICAgICAgICAgdGFyZ2V0LT5zZXRTdHJ1Y3R1cmVzKG5v
ZGUtPnRyYW5zaXRpb24oKS0+bmV4dCk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
ICAgICBtX2hlYXAuZXNjYXBlKG5vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CkBAIC05MTIsNyArOTEy
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIEFsbG9jYXRpb24qIGFsbG9jYXRpb24gPSBtX2hl
YXAub25seUxvY2FsQWxsb2NhdGlvbihub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwogICAgICAgICAg
ICAgaWYgKGFsbG9jYXRpb24gJiYgYWxsb2NhdGlvbi0+aXNPYmplY3RBbGxvY2F0aW9uKCkpIHsK
ICAgICAgICAgICAgICAgICBNdWx0aUdldEJ5T2Zmc2V0RGF0YSYgZGF0YSA9IG5vZGUtPm11bHRp
R2V0QnlPZmZzZXREYXRhKCk7Ci0gICAgICAgICAgICAgICAgU3RydWN0dXJlU2V0IHZhbGlkU3Ry
dWN0dXJlczsKKyAgICAgICAgICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0IHZhbGlkU3Ry
dWN0dXJlczsKICAgICAgICAgICAgICAgICBib29sIGhhc0ludmFsaWRTdHJ1Y3R1cmVzID0gZmFs
c2U7CiAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBtdWx0aUdldEJ5T2Zmc2V0Q2Fz
ZSA6IGRhdGEuY2FzZXMpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFhbGxvY2F0aW9uLT5z
dHJ1Y3R1cmVzKCkub3ZlcmxhcHMobXVsdGlHZXRCeU9mZnNldENhc2Uuc2V0KCkpKQpAQCAtMTQ0
NCwxMiArMTQ0NCwxMSBAQCBwcml2YXRlOgogICAgICAgICBzd2l0Y2ggKGFsbG9jYXRpb24ua2lu
ZCgpKSB7CiAgICAgICAgIGNhc2UgQWxsb2NhdGlvbjo6S2luZDo6T2JqZWN0OiB7CiAgICAgICAg
ICAgICBPYmplY3RNYXRlcmlhbGl6YXRpb25EYXRhKiBkYXRhID0gbV9ncmFwaC5tX29iamVjdE1h
dGVyaWFsaXphdGlvbkRhdGEuYWRkKCk7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmVTZXQqIHNldCA9
IG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KGFsbG9jYXRpb24uc3RydWN0dXJlcygpKTsKIAogICAg
ICAgICAgICAgcmV0dXJuIG1fZ3JhcGguYWRkTm9kZSgKICAgICAgICAgICAgICAgICBhbGxvY2F0
aW9uLmlkZW50aWZpZXIoKS0+cHJlZGljdGlvbigpLCBOb2RlOjpWYXJBcmcsIE1hdGVyaWFsaXpl
TmV3T2JqZWN0LAogICAgICAgICAgICAgICAgIHdoZXJlLT5vcmlnaW4ud2l0aFNlbWFudGljKGFs
bG9jYXRpb24uaWRlbnRpZmllcigpLT5vcmlnaW4uc2VtYW50aWMpLAotICAgICAgICAgICAgICAg
IE9wSW5mbyhzZXQpLCBPcEluZm8oZGF0YSksIDAsIDApOworICAgICAgICAgICAgICAgIE9wSW5m
byhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChhbGxvY2F0aW9uLnN0cnVjdHVyZXMoKSkpLCBPcElu
Zm8oZGF0YSksIDAsIDApOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBBbGxvY2F0aW9uOjpL
aW5kOjpBc3luY0Z1bmN0aW9uOgpAQCAtMjEwMyw3ICsyMTAyLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgY2FzZSBOYW1lZFByb3BlcnR5UExvYzogewogICAgICAgICAgICAgQWxsb2NhdGlvbiYgYWxs
b2NhdGlvbiA9IG1faGVhcC5nZXRBbGxvY2F0aW9uKGxvY2F0aW9uLmJhc2UoKSk7CiAKLSAgICAg
ICAgICAgIFZlY3RvcjxTdHJ1Y3R1cmUqPiBzdHJ1Y3R1cmVzOworICAgICAgICAgICAgVmVjdG9y
PFJlZ2lzdGVyZWRTdHJ1Y3R1cmU+IHN0cnVjdHVyZXM7CiAgICAgICAgICAgICBzdHJ1Y3R1cmVz
LmFwcGVuZFJhbmdlKGFsbG9jYXRpb24uc3RydWN0dXJlcygpLmJlZ2luKCksIGFsbG9jYXRpb24u
c3RydWN0dXJlcygpLmVuZCgpKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1i
ZXIgPSBsb2NhdGlvbi5pbmZvKCk7CiAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlk
ID0gbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdOwpAQCAtMjExMSw3ICsy
MTEwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHN0ZDo6c29ydCgKICAgICAgICAgICAgICAg
ICBzdHJ1Y3R1cmVzLmJlZ2luKCksCiAgICAgICAgICAgICAgICAgc3RydWN0dXJlcy5lbmQoKSwK
LSAgICAgICAgICAgICAgICBbdWlkXSAoU3RydWN0dXJlICphLCBTdHJ1Y3R1cmUqIGIpIC0+IGJv
b2wgeworICAgICAgICAgICAgICAgIFt1aWRdIChSZWdpc3RlcmVkU3RydWN0dXJlIGEsIFJlZ2lz
dGVyZWRTdHJ1Y3R1cmUgYikgLT4gYm9vbCB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBh
LT5nZXRDb25jdXJyZW50bHkodWlkKSA8IGItPmdldENvbmN1cnJlbnRseSh1aWQpOwogICAgICAg
ICAgICAgICAgIH0pOwogCkBAIC0yMTQyLDcgKzIxNDEsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IGN1cnJlbnRPZmZzZXQgPSBmaXJz
dE9mZnNldDsKICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVTZXQgY3VycmVudFNldDsKLSAgICAg
ICAgICAgICAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogc3RydWN0dXJlcykgeworICAg
ICAgICAgICAgICAgIGZvciAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgOiBzdHJ1Y3R1
cmVzKSB7CiAgICAgICAgICAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCA9IHN0cnVj
dHVyZS0+Z2V0Q29uY3VycmVudGx5KHVpZCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChvZmZz
ZXQgIT0gY3VycmVudE9mZnNldCkgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gQmVjYXVz
ZSBvdXIgYW5hbHlzaXMgdHJlYXRzIE11bHRpUHV0QnlPZmZzZXQgbGlrZSBhbiBlc2NhcGUsIHdl
IG9ubHkgaGF2ZSB0bwpAQCAtMjE1NSw3ICsyMTU0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAgICAgICAgIGN1cnJlbnRPZmZzZXQgPSBvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBjdXJyZW50U2V0LmNsZWFyKCk7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgY3VycmVudFNldC5hZGQoc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICAg
ICAgY3VycmVudFNldC5hZGQoc3RydWN0dXJlLmdldCgpKTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgZGF0YS0+dmFyaWFudHMuYXBwZW5kKAogICAgICAgICAgICAgICAgICAg
ICBQdXRCeUlkVmFyaWFudDo6cmVwbGFjZShjdXJyZW50U2V0LCBjdXJyZW50T2Zmc2V0LCBJbmZl
cnJlZFR5cGU6OlRvcCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcElu
Zm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5mby5o
CShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wSW5m
by5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDYgKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJERkdSZWdpc3RlcmVkU3RydWN0dXJlLmgiCisjaW5jbHVkZSAiSGVhcENlbGwuaCIKICNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTQy
LDggKzQ0LDE3IEBAIHN0cnVjdCBPcEluZm8gewogI2lmIE9TKERBUldJTikKICAgICBleHBsaWNp
dCBPcEluZm8odWludHB0cl90IHZhbHVlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KHZhbHVlKSkgeyB9CiAjZW5kaWYKLSAgICBleHBsaWNpdCBPcEluZm8odm9pZCogdmFsdWUpIDog
bV92YWx1ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+
KHZhbHVlKSkpIHsgfQotICAgIGV4cGxpY2l0IE9wSW5mbyhjb25zdCB2b2lkKiB2YWx1ZSkgOiBt
X3ZhbHVlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4o
dmFsdWUpKSkgeyB9CisgICAgZXhwbGljaXQgT3BJbmZvKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3Ry
dWN0dXJlKSA6IG1fdmFsdWUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGJpdHdpc2VfY2FzdDx1aW50
cHRyX3Q+KHN0cnVjdHVyZSkpKSB7IH0KKworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cisg
ICAgZXhwbGljaXQgT3BJbmZvKFQqIHB0cikKKyAgICB7CisgICAgICAgIHN0YXRpY19hc3NlcnQo
IXN0ZDo6aXNfYmFzZV9vZjxIZWFwQ2VsbCwgVD46OnZhbHVlLCAiVG8gbWFrZSBhbiBPcEluZm8g
d2l0aCBhIGNlbGwgaW4gaXQsIHRoZSBjZWxsIG11c3QgYmUgcmVnaXN0ZXJlZCBvciBmcm96ZW4u
Iik7CisgICAgICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxTdHJ1Y3R1cmVTZXQs
IFQ+Ojp2YWx1ZSwgIlRvIG1ha2UgYW4gT3BJbmZvIHdpdGggYSBzdHJ1Y3R1cmUgc2V0IGluLCBt
YWtlIHN1cmUgdG8gdXNlIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQuIik7CisgICAgICAgIG1fdmFs
dWUgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHB0
cikpOworICAgIH0KKwogICAgIHVpbnQ2NF90IG1fdmFsdWU7CiB9OwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3
LDYgQEAKICNpbmNsdWRlICJERkdTdG9yZUJhcnJpZXJDbHVzdGVyaW5nUGhhc2UuaCIKICNpbmNs
dWRlICJERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5oIgogI2luY2x1ZGUgIkRGR1N0cmVu
Z3RoUmVkdWN0aW9uUGhhc2UuaCIKLSNpbmNsdWRlICJERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZS5oIgogI2luY2x1ZGUgIkRGR1RpZXJVcENoZWNrSW5qZWN0aW9uUGhhc2UuaCIKICNpbmNs
dWRlICJERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmgiCiAjaW5jbHVkZSAiREZHVW5pZmljYXRp
b25QaGFzZS5oIgpAQCAtMzExLDcgKzMxMCw2IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFu
Ojpjb21waWxlSW5UaHIKICAgICBSVU5fUEhBU0UocGVyZm9ybUJhY2t3YXJkc1Byb3BhZ2F0aW9u
KTsKICAgICBSVU5fUEhBU0UocGVyZm9ybVByZWRpY3Rpb25Qcm9wYWdhdGlvbik7CiAgICAgUlVO
X1BIQVNFKHBlcmZvcm1GaXh1cCk7Ci0gICAgUlVOX1BIQVNFKHBlcmZvcm1TdHJ1Y3R1cmVSZWdp
c3RyYXRpb24pOwogICAgIFJVTl9QSEFTRShwZXJmb3JtSW52YWxpZGF0aW9uUG9pbnRJbmplY3Rp
b24pOwogICAgIFJVTl9QSEFTRShwZXJmb3JtVHlwZUNoZWNrSG9pc3RpbmcpOwogICAgIApAQCAt
NjA4LDYgKzYwNiwxMSBAQCBDb21waWxhdGlvblJlc3VsdCBQbGFuOjpmaW5hbGl6ZVdpdGhvdXRO
CiAgICAgICAgICAgICB0cmFja2VkUmVmZXJlbmNlcy5hZGQocmVmZXJlbmNlLmdldCgpKTsKICAg
ICAgICAgZm9yIChXcml0ZUJhcnJpZXI8VW5rbm93bj4mIGNvbnN0YW50IDogY29kZUJsb2NrLT5j
b25zdGFudHMoKSkKICAgICAgICAgICAgIHRyYWNrZWRSZWZlcmVuY2VzLmFkZChjb25zdGFudC5n
ZXQoKSk7CisKKyAgICAgICAgZm9yIChhdXRvKiBpbmxpbmVDYWxsRnJhbWUgOiAqaW5saW5lQ2Fs
bEZyYW1lcykgeworICAgICAgICAgICAgQVNTRVJUKGlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVD
b2RlQmxvY2suZ2V0KCkpOworICAgICAgICAgICAgdHJhY2tlZFJlZmVyZW5jZXMuYWRkKGlubGlu
ZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkpOworICAgICAgICB9CiAgICAgICAg
IAogICAgICAgICAvLyBDaGVjayB0aGF0IGFueSBvdGhlciByZWZlcmVuY2VzIHRoYXQgd2UgaGF2
ZSBhbnl3aGVyZSBpbiB0aGUgSklUQ29kZSBhcmUgYWxzbwogICAgICAgICAvLyB0cmFja2VkIGVp
dGhlciBzdHJvbmdseSBvciB3ZWFrbHkuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmUuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNs
dWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVTZXQuaCIKKworbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgeworCitjbGFzcyBHcmFwaDsKKworY2xhc3MgUmVnaXN0ZXJl
ZFN0cnVjdHVyZSB7CitwdWJsaWM6CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSgpID0gZGVmYXVs
dDsKKworICAgIEFMV0FZU19JTkxJTkUgU3RydWN0dXJlKiBnZXQoKSBjb25zdCB7IHJldHVybiBt
X3N0cnVjdHVyZTsgfQorICAgIFN0cnVjdHVyZSogb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJu
IGdldCgpOyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVnaXN0ZXJlZFN0cnVjdHVy
ZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZ2V0KCkgPT0gb3RoZXIuZ2V0
KCk7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1
cmUmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIp
OworICAgIH0KKworICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuICEhZ2V0KCk7CisgICAgfQorCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFz
cyBHcmFwaDsKKworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CisgICAgICAgIDogbV9zdHJ1Y3R1cmUoc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KHN0cnVjdHVyZSk7CisgICAgfQorCisgICAgc3RhdGljIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgY3Jl
YXRlUHJpdmF0ZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIHJldHVybiBS
ZWdpc3RlcmVkU3RydWN0dXJlKHN0cnVjdHVyZSk7CisgICAgfQorCisgICAgU3RydWN0dXJlKiBt
X3N0cnVjdHVyZSB7IG51bGxwdHIgfTsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcK
KworI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdSZWdpc3RlcmVkU3RydWN0dXJlU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1JlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQuY3BwCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUmVnaXN0ZXJlZFN0cnVjdHVy
ZVNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiREZHUmVnaXN0ZXJlZFN0cnVjdHVyZVNldC5oIgorCisjaWYgRU5BQkxFKERGR19KSVQp
CisKKyNpbmNsdWRlICJERkdBYnN0cmFjdFZhbHVlLmgiCisjaW5jbHVkZSAiVHJhY2tlZFJlZmVy
ZW5jZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCit2b2lkIFJlZ2lz
dGVyZWRTdHJ1Y3R1cmVTZXQ6OmZpbHRlcihjb25zdCBERkc6OlN0cnVjdHVyZUFic3RyYWN0VmFs
dWUmIG90aGVyKQoreworICAgIGdlbmVyaWNGaWx0ZXIoCisgICAgICAgIFsmXSAoUmVnaXN0ZXJl
ZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIC0+IGJvb2wgeworICAgICAgICAgICAgcmV0dXJuIG90aGVy
LmNvbnRhaW5zKHN0cnVjdHVyZSk7IAorICAgICAgICB9KTsKK30KKwordm9pZCBSZWdpc3RlcmVk
U3RydWN0dXJlU2V0OjpmaWx0ZXIoU3BlY3VsYXRlZFR5cGUgdHlwZSkKK3sKKyAgICBnZW5lcmlj
RmlsdGVyKAorICAgICAgICBbJl0gKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSAtPiBi
b29sIHsKKyAgICAgICAgICAgIHJldHVybiB0eXBlICYgc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJl
KHN0cnVjdHVyZS5nZXQoKSk7CisgICAgICAgIH0pOworfQorCit2b2lkIFJlZ2lzdGVyZWRTdHJ1
Y3R1cmVTZXQ6OmZpbHRlckFycmF5TW9kZXMoQXJyYXlNb2RlcyBhcnJheU1vZGVzKQoreworICAg
IGdlbmVyaWNGaWx0ZXIoCisgICAgICAgIFsmXSAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1
cmUpIC0+IGJvb2wgeworICAgICAgICAgICAgcmV0dXJuIGFycmF5TW9kZXMgJiBhcnJheU1vZGVG
cm9tU3RydWN0dXJlKHN0cnVjdHVyZS5nZXQoKSk7CisgICAgICAgIH0pOworfQorCit2b2lkIFJl
Z2lzdGVyZWRTdHJ1Y3R1cmVTZXQ6OmZpbHRlcihjb25zdCBERkc6OkFic3RyYWN0VmFsdWUmIG90
aGVyKQoreworICAgIGZpbHRlcihvdGhlci5tX3N0cnVjdHVyZSk7CisgICAgZmlsdGVyKG90aGVy
Lm1fdHlwZSk7CisgICAgZmlsdGVyQXJyYXlNb2RlcyhvdGhlci5tX2FycmF5TW9kZXMpOworfQor
CitTcGVjdWxhdGVkVHlwZSBSZWdpc3RlcmVkU3RydWN0dXJlU2V0OjpzcGVjdWxhdGlvbkZyb21T
dHJ1Y3R1cmVzKCkgY29uc3QKK3sKKyAgICBTcGVjdWxhdGVkVHlwZSByZXN1bHQgPSBTcGVjTm9u
ZTsKKyAgICBmb3JFYWNoKAorICAgICAgICBbJl0gKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0
dXJlKSB7CisgICAgICAgICAgICBtZXJnZVNwZWN1bGF0aW9uKHJlc3VsdCwgc3BlY3VsYXRpb25G
cm9tU3RydWN0dXJlKHN0cnVjdHVyZS5nZXQoKSkpOworICAgICAgICB9KTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitBcnJheU1vZGVzIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQ6OmFycmF5TW9k
ZXNGcm9tU3RydWN0dXJlcygpIGNvbnN0Cit7CisgICAgQXJyYXlNb2RlcyByZXN1bHQgPSAwOwor
ICAgIGZvckVhY2goCisgICAgICAgIFsmXSAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUp
IHsKKyAgICAgICAgICAgIG1lcmdlQXJyYXlNb2RlcyhyZXN1bHQsIGFzQXJyYXlNb2RlcyhzdHJ1
Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSk7CisgICAgICAgIH0pOworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK3ZvaWQgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldDo6dmFsaWRhdGVSZWZlcmVuY2VzKGNv
bnN0IFRyYWNrZWRSZWZlcmVuY2VzJiB0cmFja2VkUmVmZXJlbmNlcykgY29uc3QKK3sKKyAgICAv
LyBUaGUgdHlwZSBzeXN0ZW0gc2hvdWxkIGhlbHAgdXMgaGVyZSwgYnV0IHByb3RlY3QgcGVvcGxl
IGZyb20gZ2V0dGluZyB0aGF0IHdyb25nIHVzaW5nIGJpdHdpc2VfY2FzdCBvciBzb21ldGhpbmcg
Y3JhenkuCisgICAgZm9yRWFjaCgKKyAgICAgICAgWyZdIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0
cnVjdHVyZSkgeworICAgICAgICAgICAgdHJhY2tlZFJlZmVyZW5jZXMuY2hlY2soc3RydWN0dXJl
LmdldCgpKTsKKyAgICAgICAgfSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKwor
I2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdSZWdpc3RlcmVkU3RydWN0dXJlU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdSZWdpc3RlcmVkU3RydWN0dXJlU2V0LmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZWdpc3RlcmVkU3RydWN0dXJlU2V0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShERkdfSklU
KQorCisjaW5jbHVkZSAiREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5oIgorI2luY2x1ZGUgIlN0cnVj
dHVyZVNldC5oIgorI2luY2x1ZGUgPHd0Zi9UaW55UHRyU2V0Lmg+CisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBUcmFja2VkUmVmZXJlbmNlczsKKworbmFtZXNwYWNlIERGRyB7CisKK3N0cnVj
dCBBYnN0cmFjdFZhbHVlOworY2xhc3MgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTsKKworY2xhc3Mg
UmVnaXN0ZXJlZFN0cnVjdHVyZVNldCA6IHB1YmxpYyBUaW55UHRyU2V0PFJlZ2lzdGVyZWRTdHJ1
Y3R1cmU+IHsKK3B1YmxpYzoKKworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQoKQorICAgIHsg
fQorICAgIAorICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQoUmVnaXN0ZXJlZFN0cnVjdHVyZSBz
dHJ1Y3R1cmUpCisgICAgICAgIDogVGlueVB0clNldChzdHJ1Y3R1cmUpCisgICAgeworICAgIH0K
KyAgICAKKyAgICBBTFdBWVNfSU5MSU5FIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQoY29uc3QgUmVn
aXN0ZXJlZFN0cnVjdHVyZVNldCYgb3RoZXIpCisgICAgICAgIDogVGlueVB0clNldChvdGhlcikK
KyAgICB7CisgICAgfQorICAgIAorICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgb25seVN0cnVjdHVy
ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gb25seUVudHJ5KCk7CisgICAgfQorCisg
ICAgU3RydWN0dXJlU2V0IHRvU3RydWN0dXJlU2V0KCkgY29uc3QKKyAgICB7CisgICAgICAgIFN0
cnVjdHVyZVNldCByZXN1bHQ7CisgICAgICAgIGZvckVhY2goWyZdIChSZWdpc3RlcmVkU3RydWN0
dXJlIHN0cnVjdHVyZSkgeyByZXN1bHQuYWRkKHN0cnVjdHVyZS5nZXQoKSk7IH0pOworICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHZvaWQgZmlsdGVyKGNvbnN0IERGRzo6U3Ry
dWN0dXJlQWJzdHJhY3RWYWx1ZSYpOworICAgIHZvaWQgZmlsdGVyKFNwZWN1bGF0ZWRUeXBlKTsK
KyAgICB2b2lkIGZpbHRlckFycmF5TW9kZXMoQXJyYXlNb2Rlcyk7CisgICAgdm9pZCBmaWx0ZXIo
Y29uc3QgREZHOjpBYnN0cmFjdFZhbHVlJik7CisgICAgCisgICAgU3BlY3VsYXRlZFR5cGUgc3Bl
Y3VsYXRpb25Gcm9tU3RydWN0dXJlcygpIGNvbnN0OworICAgIEFycmF5TW9kZXMgYXJyYXlNb2Rl
c0Zyb21TdHJ1Y3R1cmVzKCkgY29uc3Q7CisKKyAgICB2b2lkIHZhbGlkYXRlUmVmZXJlbmNlcyhj
b25zdCBUcmFja2VkUmVmZXJlbmNlcyYpIGNvbnN0OworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMjExMjI5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQyNSw3ICs0MjUsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5
cGUmIHN0CiAgICAgY2FzZSBBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKICAgICBjYXNlIFJlYWxs
b2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgICAgIHJldHVybiBzdGF0ZS5mb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKS5tX3N0cnVjdHVyZS5pc1N1YnNldE9mKAotICAgICAgICAgICAgU3RydWN0dXJl
U2V0KG5vZGUtPnRyYW5zaXRpb24oKS0+cHJldmlvdXMpKTsKKyAgICAgICAgICAgIFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmVTZXQobm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91cykpOwogICAgICAgICAK
ICAgICBjYXNlIEdldEJ5T2Zmc2V0OgogICAgIGNhc2UgR2V0R2V0dGVyU2V0dGVyQnlPZmZzZXQ6
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5NCw3
ICsyOTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlCiAgICAg
ICAgIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKCZtX2ppdCk7CiAgICAgICAgIEdQUlJl
ZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9IGxvY2FsR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAg
ICBHUFJSZWcgcmVtb3RlR2xvYmFsT2JqZWN0R1BSID0gcmVtb3RlR2xvYmFsT2JqZWN0Lmdwcigp
OwotICAgICAgICBtX2ppdC5tb3ZlKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdy
YXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBs
b2NhbEdsb2JhbE9iamVjdEdQUik7CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6
d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Io
bV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsK
ICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhhcmdQYXlsb2FkR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZXN1bHRQYXlsb2FkR1BSKTsKICAgICAg
ICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRQYXlsb2FkR1BSLCBT
dHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSKTsK
ICAgICAgICAgbV9qaXQuY29tcGFyZTMyKEpJVENvbXBpbGVyOjpFcXVhbCwgbG9jYWxHbG9iYWxP
YmplY3RHUFIsIHJlbW90ZUdsb2JhbE9iamVjdEdQUiwgcmVzdWx0UGF5bG9hZEdQUik7CkBAIC0z
NTgsNyArMzU4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaAog
ICAgCiAgICAgICAgIEdQUlJlZyBsb2NhbEdsb2JhbE9iamVjdEdQUiA9IGxvY2FsR2xvYmFsT2Jq
ZWN0LmdwcigpOwogICAgICAgICBHUFJSZWcgcmVtb3RlR2xvYmFsT2JqZWN0R1BSID0gcmVtb3Rl
R2xvYmFsT2JqZWN0LmdwcigpOwotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9q
aXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVj
dEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgbG9jYWxHbG9iYWxPYmplY3RH
UFIpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGFyZ1BheWxv
YWRHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlc3VsdEdQUik7CiAgICAgICAg
IG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBTdHJ1Y3R1cmU6
Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAg
YnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgbG9jYWxHbG9iYWxPYmplY3RHUFIsIHJlbW90
ZUdsb2JhbE9iamVjdEdQUiwgaW52ZXJ0ID8gbm90VGFrZW4gOiB0YWtlbik7CkBAIC0xMDgyLDcg
KzEwODIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAg
ICAgICAgICBtX2ppdC5lbWl0UmVzdG9yZUNhbGxlZVNhdmVzKCk7CiAgICAgfQogCi0gICAgbV9q
aXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihpbmZvKSwgR1BSSW5mbzo6cmVn
VDIpOworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihpbmZvKSwgR1BSSW5mbzo6cmVnVDIp
OwogICAgIEpJVENvbXBpbGVyOjpDYWxsIHNsb3dDYWxsID0gbV9qaXQubmVhckNhbGwoKTsKIAog
ICAgIGRvbmUubGluaygmbV9qaXQpOwpAQCAtMTI0MiwxMCArMTI0Miw5IEBAIEdQUlJlZyBTcGVj
dWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwKICAgICBzd2l0Y2ggKGluZm8ucmVnaXN0ZXJG
b3JtYXQoKSkgewogICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6IHsKICAgICAgICAgaWYgKGVkZ2Ut
Pmhhc0NvbnN0YW50KCkpIHsKLSAgICAgICAgICAgIEpTVmFsdWUganNWYWx1ZSA9IGVkZ2UtPmFz
SlNWYWx1ZSgpOwogICAgICAgICAgICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7CiAgICAgICAg
ICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVyQ29uc3Rh
bnQpOwotICAgICAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihqc1ZhbHVlLmFzQ2VsbCgpKSwgZ3ByKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3Rl
ZEltbVB0cihlZGdlLT5jb25zdGFudCgpKSwgZ3ByKTsKICAgICAgICAgICAgIGluZm8uZmlsbENl
bGwoKm1fc3RyZWFtLCBncHIpOwogICAgICAgICAgICAgcmV0dXJuIGdwcjsKICAgICAgICAgfQpA
QCAtMTcyNCw3ICsxNzIzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9y
T3RoZQogICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpFcXVhbCwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgCi0gICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5n
bG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSkpKTsKKyAgICAg
ICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBtX2pp
dC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMp
KSkpOwogCiAgICAgICAgIGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKCZtX2ppdCk7
CiAgICAgfQpAQCAtMTg0Myw3ICsxODQyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9i
amVjdE9yT3RoZXJCcgogICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSks
IAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdy
YXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYykpKSk7
CisgICAgICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgo
KSwgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNl
bWFudGljKSkpKTsKIAogICAgICAgICBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluaygm
bV9qaXQpOwogICAgIH0KQEAgLTM3NzgsNyArMzc3Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIE5ld0FycmF5OiB7CiAgICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICBpZiAoIWdsb2JhbE9iamVjdC0+aXNIYXZp
bmdBQmFkVGltZSgpICYmICFoYXNBbnlBcnJheVN0b3JhZ2Uobm9kZS0+aW5kZXhpbmdUeXBlKCkp
KSB7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXJy
YXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5n
VHlwZSgpKTsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9q
aXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJl
Rm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSkpOwog
ICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkgPT0gbm9kZS0+aW5k
ZXhpbmdUeXBlKCkpOwogICAgICAgICAgICAgQVNTRVJUKAogICAgICAgICAgICAgICAgIGhhc1Vu
ZGVjaWRlZChzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKQpAQCAtMzg1Myw3ICszODUyLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKICAgICAgICAgICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0
aGlzKTsKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oCi0gICAgICAgICAgICAgICAgb3BlcmF0
aW9uTmV3RW1wdHlBcnJheSwgcmVzdWx0LmdwcigpLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0
dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSkp
OworICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld0VtcHR5QXJyYXksIHJlc3VsdC5ncHIoKSwg
bV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0
dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSkp
KTsKICAgICAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgICAgICBjZWxs
UmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTM5MzAs
NyArMzkyOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICAKICAgICAg
ICAgY2FsbE9wZXJhdGlvbigKLSAgICAgICAgICAgIG9wZXJhdGlvbk5ld0FycmF5LCByZXN1bHQu
Z3ByKCksIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdB
bGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKSwKKyAgICAgICAgICAgIG9wZXJhdGlvbk5l
d0FycmF5LCByZXN1bHQuZ3ByKCksIG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xv
YmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24o
bm9kZS0+aW5kZXhpbmdUeXBlKCkpKSwKICAgICAgICAgICAgIHN0YXRpY19jYXN0PHZvaWQqPihi
dWZmZXIpLCBub2RlLT5udW1DaGlsZHJlbigpKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hl
Y2soKTsKIApAQCAtMzk3NiwxMCArMzk3NSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7
CiAgICAgICAgIEdQUlJlZyBzdHJ1Y3R1cmVHUFIgPSBzZWxlY3RTY3JhdGNoR1BSKHNpemVHUFIp
OwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBiaWdMZW5ndGggPSBtX2ppdC5icmFuY2gz
MihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBzaXplR1BSLCBUcnVzdGVkSW1tMzIoTUlO
X0FSUkFZX1NUT1JBR0VfQ09OU1RSVUNUSU9OX0xFTkdUSCkpOwotICAgICAgICBtX2ppdC5tb3Zl
KFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlw
ZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKSwgc3RydWN0dXJlR1BSKTsK
KyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkucmVnaXN0ZXJT
dHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmlu
Z0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpKSksIHN0cnVjdHVyZUdQUik7CiAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAgICAgICAgIGJp
Z0xlbmd0aC5saW5rKCZtX2ppdCk7Ci0gICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihn
bG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlv
bihBcnJheVdpdGhBcnJheVN0b3JhZ2UpKSwgc3RydWN0dXJlR1BSKTsKKyAgICAgICAgbV9qaXQu
bW92ZShUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFs
T2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJy
YXlXaXRoQXJyYXlTdG9yYWdlKSkpLCBzdHJ1Y3R1cmVHUFIpOwogICAgICAgICBkb25lLmxpbmso
Jm1faml0KTsKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheVdpdGhTaXpl
LCByZXN1bHRHUFIsIHN0cnVjdHVyZUdQUiwgc2l6ZUdQUiwgbnVsbHB0cik7CiAgICAgICAgIG1f
aml0LmV4Y2VwdGlvbkNoZWNrKCk7CkBAIC0zOTk5LDcgKzM5OTgsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BS
ID0gcmVzdWx0LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHN0b3JhZ2VHUFIgPSBzdG9yYWdl
LmdwcigpOwogCi0gICAgICAgICAgICBlbWl0QWxsb2NhdGVSYXdPYmplY3QocmVzdWx0R1BSLCBn
bG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlv
bihpbmRleGluZ1R5cGUpLCBzdG9yYWdlR1BSLCBudW1FbGVtZW50cywgbnVtRWxlbWVudHMpOwor
ICAgICAgICAgICAgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KHJlc3VsdEdQUiwgbV9qaXQuZ3JhcGgo
KS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhp
bmdUeXBlRHVyaW5nQWxsb2NhdGlvbihpbmRleGluZ1R5cGUpKSwgc3RvcmFnZUdQUiwgbnVtRWxl
bWVudHMsIG51bUVsZW1lbnRzKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG5vZGUt
PmluZGV4aW5nVHlwZSgpID09IEFycmF5V2l0aERvdWJsZSkgewogICAgICAgICAgICAgICAgIEpT
VmFsdWUqIGRhdGEgPSBtX2ppdC5jb2RlQmxvY2soKS0+Y29uc3RhbnRCdWZmZXIobm9kZS0+c3Rh
cnRDb25zdGFudCgpKTsKQEAgLTQwMjcsNyArNDAyNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAg
R1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwogICAgICAgICAKLSAgICAgICAgY2Fs
bE9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheUJ1ZmZlciwgcmVzdWx0LmdwcigpLCBnbG9iYWxP
YmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2Rl
LT5pbmRleGluZ1R5cGUoKSksIG5vZGUtPnN0YXJ0Q29uc3RhbnQoKSwgbm9kZS0+bnVtQ29uc3Rh
bnRzKCkpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5QnVmZmVyLCBy
ZXN1bHQuZ3ByKCksIG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0
LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5k
ZXhpbmdUeXBlKCkpKSwgbm9kZS0+c3RhcnRDb25zdGFudCgpLCBub2RlLT5udW1Db25zdGFudHMo
KSk7CiAgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIAogICAgICAgICBj
ZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CkBAIC00MDUxLDcgKzQwNTAsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24oCiAgICAgICAg
ICAgICAgICAgb3BlcmF0aW9uTmV3VHlwZWRBcnJheVdpdGhPbmVBcmd1bWVudEZvclR5cGUobm9k
ZS0+dHlwZWRBcnJheVR5cGUoKSksCi0gICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBnbG9iYWxP
YmplY3QtPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkobm9kZS0+dHlwZWRBcnJheVR5
cGUoKSksIGFyZ3VtZW50UmVncyk7CisgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCBtX2ppdC5n
cmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVy
ZUNvbmN1cnJlbnRseShub2RlLT50eXBlZEFycmF5VHlwZSgpKSksIGFyZ3VtZW50UmVncyk7CiAg
ICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CkBAIC00MTcxLDcgKzQxNzAsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd1BhdGg7CiAgICAgICAgIAotICAgICAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5vZGUtPnN0cnVjdHVyZSgpOworICAgICAgICBSZWdpc3Rl
cmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG5vZGUtPnN0cnVjdHVyZSgpOwogICAgICAgICBzaXpl
X3QgYWxsb2NhdGlvblNpemUgPSBKU0ZpbmFsT2JqZWN0OjphbGxvY2F0aW9uU2l6ZShzdHJ1Y3R1
cmUtPmlubGluZUNhcGFjaXR5KCkpOwogICAgICAgICBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRv
clB0ciA9IHN1YnNwYWNlRm9yPEpTRmluYWxPYmplY3Q+KCptX2ppdC52bSgpKS0+YWxsb2NhdG9y
Rm9yKGFsbG9jYXRpb25TaXplKTsKIApAQCAtNDQxNiw4ICs0NDE1LDggQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBQ
dXRTdHJ1Y3R1cmU6IHsKLSAgICAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBub2RlLT50
cmFuc2l0aW9uKCktPnByZXZpb3VzOwotICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9
IG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dDsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBv
bGRTdHJ1Y3R1cmUgPSBub2RlLT50cmFuc2l0aW9uKCktPnByZXZpb3VzOworICAgICAgICBSZWdp
c3RlcmVkU3RydWN0dXJlIG5ld1N0cnVjdHVyZSA9IG5vZGUtPnRyYW5zaXRpb24oKS0+bmV4dDsK
IAogICAgICAgICBtX2ppdC5qaXRDb2RlKCktPmNvbW1vbi5ub3RpZnlDb21waWxpbmdTdHJ1Y3R1
cmVUcmFuc2l0aW9uKG1faml0LmdyYXBoKCkubV9wbGFuLCBtX2ppdC5jb2RlQmxvY2soKSwgbm9k
ZSk7CiAKQEAgLTQ0MjcsNyArNDQyNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgQVNTRVJUX1VOVVNFRChvbGRTdHJ1Y3R1cmUsIG9sZFN0cnVj
dHVyZS0+aW5kZXhpbmdUeXBlKCkgPT0gbmV3U3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSk7CiAg
ICAgICAgIEFTU0VSVChvbGRTdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IG5ld1N0cnVj
dHVyZS0+dHlwZUluZm8oKS50eXBlKCkpOwogICAgICAgICBBU1NFUlQob2xkU3RydWN0dXJlLT50
eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygpID09IG5ld1N0cnVjdHVyZS0+dHlwZUluZm8oKS5p
bmxpbmVUeXBlRmxhZ3MoKSk7Ci0gICAgICAgIG1faml0LnN0b3JlUHRyKE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKG5ld1N0cnVjdHVyZSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOworICAgICAgICBtX2ppdC5zdG9y
ZVB0cihUcnVzdGVkSW1tUHRyKG5ld1N0cnVjdHVyZSksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2VHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSkpOwogICAgICAgICAKICAgICAg
ICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDY5MSw3ICs0NjkwLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBpZiAoIWhh
c0luc3RhbmNlVmFsdWVOb2RlLT5pc0NlbGxDb25zdGFudCgpIHx8IGRlZmF1bHRIYXNJbnN0YW5j
ZUZ1bmN0aW9uICE9IGhhc0luc3RhbmNlVmFsdWVOb2RlLT5hc0NlbGwoKSkgewogICAgICAgICAg
ICAgSlNWYWx1ZVJlZ3MgaGFzSW5zdGFuY2VWYWx1ZVJlZ3MgPSBoYXNJbnN0YW5jZVZhbHVlLmpz
VmFsdWVSZWdzKCk7CiAgICAgICAgICAgICBub3REZWZhdWx0SGFzSW5zdGFuY2VWYWx1ZS5hcHBl
bmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGhhc0luc3RhbmNlVmFsdWVSZWdzKSk7Ci0gICAgICAg
ICAgICBub3REZWZhdWx0SGFzSW5zdGFuY2VWYWx1ZS5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgaGFzSW5zdGFuY2VWYWx1ZVJlZ3MucGF5bG9hZEdQUigp
LCBUcnVzdGVkSW1tUHRyKGRlZmF1bHRIYXNJbnN0YW5jZUZ1bmN0aW9uKSkpOworICAgICAgICAg
ICAgbm90RGVmYXVsdEhhc0luc3RhbmNlVmFsdWUuYXBwZW5kKG1faml0LmJyYW5jaFB0cihNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGhhc0luc3RhbmNlVmFsdWVSZWdzLnBheWxvYWRHUFIoKSwg
VHJ1c3RlZEltbVB0cihub2RlLT5jZWxsT3BlcmFuZCgpKSkpOwogICAgICAgICB9CiAKICAgICAg
ICAgLy8gQ2hlY2sgdGhhdCBjb25zdHJ1Y3RvciAnSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5j
ZScuCkBAIC00NzUzLDcgKzQ3NTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgICAgICBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluaygmbV9q
aXQpOwogICAgICAgICAgICAgR1BSUmVnIGxvY2FsR2xvYmFsT2JqZWN0R1BSID0gbG9jYWxHbG9i
YWxPYmplY3QuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgcmVtb3RlR2xvYmFsT2JqZWN0R1BS
ID0gcmVtb3RlR2xvYmFsT2JqZWN0LmdwcigpOwotICAgICAgICAgICAgbV9qaXQubW92ZShUcnVz
dGVkSW1tUHRyKG1faml0Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwg
bG9jYWxHbG9iYWxPYmplY3RHUFIpOworICAgICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1t
UHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgICAg
IG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBK
U0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAg
bV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHQuZ3ByKCksIFN0cnVjdHVy
ZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpLCByZW1vdGVHbG9iYWxPYmplY3RHUFIpOyAKICAgICAg
ICAgICAgIG1faml0LmNvbXBhcmUzMihKSVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2Jq
ZWN0R1BSLCByZW1vdGVHbG9iYWxPYmplY3RHUFIsIHJlc3VsdC5ncHIoKSk7CkBAIC01NzEzLDEz
ICs1NzEyLDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBbGxvY2F0ZU5ld0EKICAg
ICAvLyBXZSBjYW4gdXNlIHJlc3VsdCBhcyBhIHNjcmF0Y2ggZm9yIHRoaXMuCiAgICAgZW1pdElu
aXRpYWxpemVCdXR0ZXJmbHkoc3RvcmFnZUdQUiwgc2l6ZUdQUiwgZW1wdHlWYWx1ZVJlZ3MsIHJl
c3VsdEdQUik7CiAgICAgICAgICAgICAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2Jh
bE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGlu
ZGV4aW5nVHlwZSk7CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5n
cmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJ
bmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4aW5nVHlwZSkpOwogICAgIGVtaXRBbGxv
Y2F0ZUpTT2JqZWN0PEpTQXJyYXk+KHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUp
LCBzdG9yYWdlR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiwgc2xvd0Nhc2VzKTsKICAgICAg
ICAgICAgIAogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHN0ZDo6bWFrZV91bmlxdWU8Q2FsbEFy
cmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yPigKICAgICAgICAg
c2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplLCByZXN1bHRHUFIsCiAg
ICAgICAgIHN0cnVjdHVyZSwKLSAgICAgICAgc2hvdWxkQ29udmVydExhcmdlU2l6ZVRvQXJyYXlT
dG9yYWdlID8gZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmlu
Z0FsbG9jYXRpb24oQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSA6IHN0cnVjdHVyZSwKKyAgICAgICAg
c2hvdWxkQ29udmVydExhcmdlU2l6ZVRvQXJyYXlTdG9yYWdlID8gbV9qaXQuZ3JhcGgoKS5yZWdp
c3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBl
RHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2UpKSA6IHN0cnVjdHVyZSwKICAg
ICAgICAgc2l6ZUdQUiwgc3RvcmFnZUdQUikpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDIxMTIy
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpu
b25TcGVjdWxhdGl2ZU5vblBlCiAKICAgICAgICAgR1BSUmVnIGxvY2FsR2xvYmFsT2JqZWN0R1BS
ID0gbG9jYWxHbG9iYWxPYmplY3QuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZW1vdGVHbG9iYWxP
YmplY3RHUFIgPSByZW1vdGVHbG9iYWxPYmplY3QuZ3ByKCk7Ci0gICAgICAgIG1faml0Lm1vdmUo
SklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Io
bV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsK
KyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFw
aCgpLCBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5vcmlnaW4u
c2VtYW50aWMpKSwgbG9jYWxHbG9iYWxPYmplY3RHUFIpOwogICAgICAgICBtX2ppdC5lbWl0TG9h
ZFN0cnVjdHVyZShhcmdHUFIsIHJlc3VsdEdQUiwgc2NyYXRjaC5ncHIoKSk7CiAgICAgICAgIG1f
aml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBTdHJ1Y3R1cmU6Omds
b2JhbE9iamVjdE9mZnNldCgpKSwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgbV9q
aXQuY29tcGFyZVB0cihKSVRDb21waWxlcjo6RXF1YWwsIGxvY2FsR2xvYmFsT2JqZWN0R1BSLCBy
ZW1vdGVHbG9iYWxPYmplY3RHUFIsIHJlc3VsdEdQUik7CkBAIC0zMDUsNyArMzA1LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaAogCiAgICAgICAgIEdQUlJlZyBs
b2NhbEdsb2JhbE9iamVjdEdQUiA9IGxvY2FsR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICBH
UFJSZWcgcmVtb3RlR2xvYmFsT2JqZWN0R1BSID0gcmVtb3RlR2xvYmFsT2JqZWN0LmdwcigpOwot
ICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmpl
Y3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0
R1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2pp
dC5ncmFwaCgpLCBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2RlLT5v
cmlnaW4uc2VtYW50aWMpKSwgbG9jYWxHbG9iYWxPYmplY3RHUFIpOwogICAgICAgICBtX2ppdC5l
bWl0TG9hZFN0cnVjdHVyZShhcmdHUFIsIHJlc3VsdEdQUiwgc2NyYXRjaC5ncHIoKSk7CiAgICAg
ICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBTdHJ1Y3R1
cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSKTsKICAgICAg
ICAgYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgbG9jYWxHbG9iYWxPYmplY3RHUFIsIHJl
bW90ZUdsb2JhbE9iamVjdEdQUiwgdGFrZW4pOwpAQCAtMTAwNiw3ICsxMDA2LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZQogICAgIG1faml0LmVtaXRTdG9yZUNh
bGxTaXRlSW5kZXgoY2FsbFNpdGUpOwogICAgIAogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxQ
dHIgdGFyZ2V0VG9DaGVjazsKLSAgICBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aCA9IG1faml0
LmJyYW5jaFB0cldpdGhQYXRjaChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGNhbGxlZUdQUiwg
dGFyZ2V0VG9DaGVjaywgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoMCkpOworICAgIEpJ
VENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoID0gbV9qaXQuYnJhbmNoUHRyV2l0aFBhdGNoKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgY2FsbGVlR1BSLCB0YXJnZXRUb0NoZWNrLCBUcnVzdGVkSW1t
UHRyKDApKTsKIAogICAgIGlmIChpc1RhaWwpIHsKICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0g
VGFpbENhbGwpIHsKQEAgLTEwMzUsNyArMTAzNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVt
aXRDYWxsKE5vZGUqIG5vZGUKICAgICAgICAgICAgIG1faml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2
ZXMoKTsgLy8gVGhpcyBuZWVkcyB0byBoYXBwZW4gYWZ0ZXIgd2UgbW92ZWQgY2FsbGVlR1BSIHRv
IHJlZ1QwCiAgICAgfQogCi0gICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihjYWxsTGlua0luZm8pLCBHUFJJbmZvOjpyZWdUMik7IC8vIExpbmsgaW5mbyBuZWVkcyB0
byBiZSBpbiByZWdUMgorICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8p
LCBHUFJJbmZvOjpyZWdUMik7IC8vIExpbmsgaW5mbyBuZWVkcyB0byBiZSBpbiByZWdUMgogICAg
IEpJVENvbXBpbGVyOjpDYWxsIHNsb3dDYWxsID0gbV9qaXQubmVhckNhbGwoKTsKIAogICAgIGRv
bmUubGluaygmbV9qaXQpOwpAQCAtMTg1Niw3ICsxODU2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZU9iamVjdE9yT3RoZQogICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAogICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCiAgICAgICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVj
dE9mZnNldCgpKSwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIobV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNl
bWFudGljKSkpKTsKKyAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2ppdC5ncmFwaCgpLCBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnROb2Rl
LT5vcmlnaW4uc2VtYW50aWMpKSkpOwogCiAgICAgICAgIGlzTm90TWFzcXVlcmFkZXNBc1VuZGVm
aW5lZC5saW5rKCZtX2ppdCk7CiAgICAgfQpAQCAtMjAwNyw3ICsyMDA3LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcgogICAgICAgICAgICAgbV9qaXQuYnJhbmNo
UHRyKAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgCiAgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1cmU6Omds
b2JhbE9iamVjdE9mZnNldCgpKSwgCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3IobV9jdXJyZW50Tm9kZS0+
b3JpZ2luLnNlbWFudGljKSkpKTsKKyAgICAgICAgICAgICAgICBUcnVzdGVkSW1tUHRyOjp3ZWFr
UG9pbnRlcihtX2ppdC5ncmFwaCgpLCBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihtX2N1
cnJlbnROb2RlLT5vcmlnaW4uc2VtYW50aWMpKSkpOwogCiAgICAgICAgIGlzTm90TWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZC5saW5rKCZtX2ppdCk7CiAgICAgfQpAQCAtMzc1Nyw3ICszNzU3LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgTmV3QXJy
YXk6IHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBo
KCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CiAgICAgICAgIGlmICgh
Z2xvYmFsT2JqZWN0LT5pc0hhdmluZ0FCYWRUaW1lKCkgJiYgIWhhc0FueUFycmF5U3RvcmFnZShu
b2RlLT5pbmRleGluZ1R5cGUoKSkpIHsKLSAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9j
YXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpOworICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVj
dHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9i
amVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUt
PmluZGV4aW5nVHlwZSgpKSk7CiAgICAgICAgICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCks
IG5vZGUsIHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkgPT0gbm9kZS0+aW5kZXhpbmdUeXBlKCkp
OwogICAgICAgICAgICAgQVNTRVJUKAogICAgICAgICAgICAgICAgIGhhc1VuZGVjaWRlZChzdHJ1
Y3R1cmUtPmluZGV4aW5nVHlwZSgpKQpAQCAtMzgzMCw3ICszODMwLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBpZiAoIW5vZGUtPm51bUNoaWxk
cmVuKCkpIHsKICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgICAgICBHUFJG
bHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7Ci0gICAgICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvbk5ld0VtcHR5QXJyYXksIHJlc3VsdC5ncHIoKSwgZ2xvYmFsT2JqZWN0LT5hcnJh
eVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdU
eXBlKCkpKTsKKyAgICAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3RW1wdHlBcnJh
eSwgcmVzdWx0LmdwcigpLCBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9i
amVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUt
PmluZGV4aW5nVHlwZSgpKSkpOwogICAgICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
ICAgICAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMzkxMiw3ICszOTEyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7
CiAgICAgICAgIAogICAgICAgICBjYWxsT3BlcmF0aW9uKAotICAgICAgICAgICAgb3BlcmF0aW9u
TmV3QXJyYXksIHJlc3VsdC5ncHIoKSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvcklu
ZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24obm9kZS0+aW5kZXhpbmdUeXBlKCkpLAorICAgICAg
ICAgICAgb3BlcmF0aW9uTmV3QXJyYXksIHJlc3VsdC5ncHIoKSwgbV9qaXQuZ3JhcGgoKS5yZWdp
c3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBl
RHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSkpLAogICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8dm9pZCo+KGJ1ZmZlciksIG5vZGUtPm51bUNoaWxkcmVuKCkpOwogICAgICAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOwogCkBAIC0zOTU2LDEwICszOTU2LDEwIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHN0cnVjdHVyZUdQUiA9IHNlbGVjdFNj
cmF0Y2hHUFIoc2l6ZUdQUik7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGJpZ0xlbmd0
aCA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHNpemVHUFIs
IFRydXN0ZWRJbW0zMihNSU5fQVJSQVlfU1RPUkFHRV9DT05TVFJVQ1RJT05fTEVOR1RIKSk7Ci0g
ICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0
dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSkp
LCBzdHJ1Y3R1cmVHUFIpOworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQu
Z3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9y
SW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSkpKSwgc3Ry
dWN0dXJlR1BSKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1
bXAoKTsKICAgICAgICAgYmlnTGVuZ3RoLmxpbmsoJm1faml0KTsKLSAgICAgICAgbV9qaXQubW92
ZShUcnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5
cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aEFycmF5U3RvcmFnZSkpLCBzdHJ1Y3R1cmVHUFIp
OworICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5yZWdpc3Rl
clN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVy
aW5nQWxsb2NhdGlvbihBcnJheVdpdGhBcnJheVN0b3JhZ2UpKSksIHN0cnVjdHVyZUdQUik7CiAg
ICAgICAgIGRvbmUubGluaygmbV9qaXQpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bk5ld0FycmF5V2l0aFNpemUsIHJlc3VsdEdQUiwgc3RydWN0dXJlR1BSLCBzaXplR1BSLCBudWxs
cHRyKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKQEAgLTM5NzksNyArMzk3OSw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAg
IEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgICAgICBHUFJSZWcgc3Rv
cmFnZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CiAKLSAgICAgICAgICAgIGVtaXRBbGxvY2F0ZVJhd09i
amVjdChyZXN1bHRHUFIsIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5
cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4aW5nVHlwZSksIHN0b3JhZ2VHUFIsIG51bUVsZW1lbnRz
LCBudW1FbGVtZW50cyk7CisgICAgICAgICAgICBlbWl0QWxsb2NhdGVSYXdPYmplY3QocmVzdWx0
R1BSLCBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlT
dHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4aW5nVHlwZSkpLCBz
dG9yYWdlR1BSLCBudW1FbGVtZW50cywgbnVtRWxlbWVudHMpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBERkdfQVNTRVJUKG1faml0LmdyYXBoKCksIG5vZGUsIGluZGV4aW5nVHlwZSAmIElz
QXJyYXkpOwogICAgICAgICAgICAgSlNWYWx1ZSogZGF0YSA9IG1faml0LmNvZGVCbG9jaygpLT5j
b25zdGFudEJ1ZmZlcihub2RlLT5zdGFydENvbnN0YW50KCkpOwpAQCAtNDAwNSw3ICs0MDA1LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBmbHVz
aFJlZ2lzdGVycygpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhpcyk7
CiAgICAgICAgIAotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5QnVmZmVy
LCByZXN1bHQuZ3ByKCksIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5
cGVEdXJpbmdBbGxvY2F0aW9uKG5vZGUtPmluZGV4aW5nVHlwZSgpKSwgbm9kZS0+c3RhcnRDb25z
dGFudCgpLCBub2RlLT5udW1Db25zdGFudHMoKSk7CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uTmV3QXJyYXlCdWZmZXIsIHJlc3VsdC5ncHIoKSwgbV9qaXQuZ3JhcGgoKS5yZWdpc3Rl
clN0cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVy
aW5nQWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSkpLCBub2RlLT5zdGFydENvbnN0YW50
KCksIG5vZGUtPm51bUNvbnN0YW50cygpKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2so
KTsKICAgICAgICAgCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKQEAg
LTQwMjksNyArNDAyOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFw
aCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwogICAgICAgICAgICAg
Y2FsbE9wZXJhdGlvbigKICAgICAgICAgICAgICAgICBvcGVyYXRpb25OZXdUeXBlZEFycmF5V2l0
aE9uZUFyZ3VtZW50Rm9yVHlwZShub2RlLT50eXBlZEFycmF5VHlwZSgpKSwKLSAgICAgICAgICAg
ICAgICByZXN1bHRHUFIsIGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJl
bnRseShub2RlLT50eXBlZEFycmF5VHlwZSgpKSwKKyAgICAgICAgICAgICAgICByZXN1bHRHUFIs
IG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5
U3RydWN0dXJlQ29uY3VycmVudGx5KG5vZGUtPnR5cGVkQXJyYXlUeXBlKCkpKSwKICAgICAgICAg
ICAgICAgICBhcmd1bWVudEdQUik7CiAgICAgICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygp
OwogICAgICAgICAgICAgCkBAIC00MTQzLDcgKzQxNDMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcExpc3Qgc2xvd1BhdGg7CiAKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBub2Rl
LT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBu
b2RlLT5zdHJ1Y3R1cmUoKTsKICAgICAgICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0gSlNGaW5h
bE9iamVjdDo6YWxsb2NhdGlvblNpemUoc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgpKTsKICAg
ICAgICAgTWFya2VkQWxsb2NhdG9yKiBhbGxvY2F0b3JQdHIgPSBzdWJzcGFjZUZvcjxKU0ZpbmFs
T2JqZWN0PigqbV9qaXQudm0oKSktPmFsbG9jYXRvckZvcihhbGxvY2F0aW9uU2l6ZSk7CiAKQEAg
LTQzNzYsOCArNDM3Niw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgUHV0U3RydWN0dXJlOiB7Ci0gICAgICAgIFN0
cnVjdHVyZSogb2xkU3RydWN0dXJlID0gbm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91czsKLSAg
ICAgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBub2RlLT50cmFuc2l0aW9uKCktPm5leHQ7
CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgb2xkU3RydWN0dXJlID0gbm9kZS0+dHJhbnNp
dGlvbigpLT5wcmV2aW91czsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBuZXdTdHJ1Y3R1
cmUgPSBub2RlLT50cmFuc2l0aW9uKCktPm5leHQ7CiAKICAgICAgICAgbV9qaXQuaml0Q29kZSgp
LT5jb21tb24ubm90aWZ5Q29tcGlsaW5nU3RydWN0dXJlVHJhbnNpdGlvbihtX2ppdC5ncmFwaCgp
Lm1fcGxhbiwgbV9qaXQuY29kZUJsb2NrKCksIG5vZGUpOwogCkBAIC00NjUyLDcgKzQ2NTIsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIC8vIHNp
bmNlIGl0IHJlbGllcyBvbiBPU1IgaW5mb3JtYXRpb24uIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTQ4MzIKICAgICAgICAgaWYgKCFoYXNJbnN0YW5jZVZhbHVlTm9k
ZS0+aXNDZWxsQ29uc3RhbnQoKSB8fCBkZWZhdWx0SGFzSW5zdGFuY2VGdW5jdGlvbiAhPSBoYXNJ
bnN0YW5jZVZhbHVlTm9kZS0+YXNDZWxsKCkpIHsKICAgICAgICAgICAgIEdQUlJlZyBoYXNJbnN0
YW5jZVZhbHVlR1BSID0gaGFzSW5zdGFuY2VWYWx1ZS5ncHIoKTsKLSAgICAgICAgICAgIG5vdERl
ZmF1bHQgPSBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBoYXNJbnN0
YW5jZVZhbHVlR1BSLCBUcnVzdGVkSW1tUHRyKGRlZmF1bHRIYXNJbnN0YW5jZUZ1bmN0aW9uKSk7
CisgICAgICAgICAgICBub3REZWZhdWx0ID0gbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgaGFzSW5zdGFuY2VWYWx1ZUdQUiwgVHJ1c3RlZEltbVB0cihub2RlLT5jZWxs
T3BlcmFuZCgpKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBDaGVjayB0aGF0IGJhc2UgJ0lt
cGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UnLgpAQCAtNDcxOSw3ICs0NzE5LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgaXNNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgIEdQUlJlZyBsb2NhbEds
b2JhbE9iamVjdEdQUiA9IGxvY2FsR2xvYmFsT2JqZWN0LmdwcigpOwogICAgICAgICAgICAgR1BS
UmVnIHJlbW90ZUdsb2JhbE9iamVjdEdQUiA9IHJlbW90ZUdsb2JhbE9iamVjdC5ncHIoKTsKLSAg
ICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKSksIGxvY2FsR2xvYmFsT2JqZWN0R1BSKTsKKyAgICAgICAg
ICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwg
bV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykpLCBsb2NhbEdsb2Jh
bE9iamVjdEdQUik7CiAgICAgICAgICAgICBtX2ppdC5lbWl0TG9hZFN0cnVjdHVyZSh2YWx1ZS5n
cHIoKSwgcmVzdWx0LmdwcigpLCBzY3JhdGNoLmdwcigpKTsKICAgICAgICAgICAgIG1faml0Lmxv
YWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0LmdwcigpLCBTdHJ1Y3R1cmU6Omdsb2Jh
bE9iamVjdE9mZnNldCgpKSwgcmVtb3RlR2xvYmFsT2JqZWN0R1BSKTsgCiAgICAgICAgICAgICBt
X2ppdC5jb21wYXJlUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgbG9jYWxHbG9iYWxPYmplY3RHUFIs
IHJlbW90ZUdsb2JhbE9iamVjdEdQUiwgcmVzdWx0LmdwcigpKTsKQEAgLTQ5MTIsOSArNDkxMiw5
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgbV9q
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KGJ1ZmZlckdQUiwgaW5kZXhHUFIs
IE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0KSwgYnVja2V0R1BSKTsKICAgICAgICAgbV9qaXQu
bW92ZShidWNrZXRHUFIsIHJlc3VsdEdQUik7CiAgICAgICAgIGF1dG8gbm90UHJlc2VudEluVGFi
bGUgPSBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAKLSAgICAgICAgICAg
IGJ1Y2tldEdQUiwgVHJ1c3RlZEltbVB0cihIYXNoTWFwSW1wbDxIYXNoTWFwQnVja2V0PEhhc2hN
YXBCdWNrZXREYXRhS2V5Pj46OmVtcHR5VmFsdWUoKSkpOworICAgICAgICAgICAgYnVja2V0R1BS
LCBUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDxzaXplX3Q+KEhhc2hNYXBJbXBsPEhhc2hNYXBC
dWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+Pjo6ZW1wdHlWYWx1ZSgpKSkpOwogICAgICAgICBs
b29wQXJvdW5kLmFwcGVuZChtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCAK
LSAgICAgICAgICAgIGJ1Y2tldEdQUiwgVHJ1c3RlZEltbVB0cihIYXNoTWFwSW1wbDxIYXNoTWFw
QnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46OmRlbGV0ZWRWYWx1ZSgpKSkpOworICAgICAg
ICAgICAgYnVja2V0R1BSLCBUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDxzaXplX3Q+KEhhc2hN
YXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+Pjo6ZGVsZXRlZFZhbHVl
KCkpKSkpOwogCiAgICAgICAgIG1faml0LmxvYWQ2NChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
dWNrZXRHUFIsIEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+OjpvZmZzZXRPZktl
eSgpKSwgYnVja2V0R1BSKTsKIApAQCAtNTk4Miw3ICs1OTgyLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUFsbG9jYXRlTmV3QQogICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW02
NChKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKSksIHNjcmF0Y2hHUFIpOwogICAgIGVtaXRJbml0
aWFsaXplQnV0dGVyZmx5KHN0b3JhZ2VHUFIsIHNpemVHUFIsIEpTVmFsdWVSZWdzKHNjcmF0Y2hH
UFIpLCBzY3JhdGNoMkdQUik7CiAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9i
amVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4
aW5nVHlwZSk7CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2ppdC5ncmFw
aCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRl
eGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKGluZGV4aW5nVHlwZSkpOwogICAgIAogICAgIGVtaXRB
bGxvY2F0ZUpTT2JqZWN0PEpTQXJyYXk+KHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1
cmUpLCBzdG9yYWdlR1BSLCBzY3JhdGNoR1BSLCBzY3JhdGNoMkdQUiwgc2xvd0Nhc2VzKTsKICAg
ICAKQEAgLTU5OTEsNyArNTk5MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBbGxv
Y2F0ZU5ld0EKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzdGQ6Om1ha2VfdW5pcXVlPENhbGxB
cnJheUFsbG9jYXRvcldpdGhWYXJpYWJsZVNpemVTbG93UGF0aEdlbmVyYXRvcj4oCiAgICAgICAg
IHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVzdWx0R1BSLAog
ICAgICAgICBzdHJ1Y3R1cmUsCi0gICAgICAgIHNob3VsZENvbnZlcnRMYXJnZVNpemVUb0FycmF5
U3RvcmFnZSA/IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJp
bmdBbGxvY2F0aW9uKEFycmF5V2l0aEFycmF5U3RvcmFnZSkgOiBzdHJ1Y3R1cmUsCisgICAgICAg
IHNob3VsZENvbnZlcnRMYXJnZVNpemVUb0FycmF5U3RvcmFnZSA/IG1faml0LmdyYXBoKCkucmVn
aXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlw
ZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSkgOiBzdHJ1Y3R1cmUsCiAg
ICAgICAgIHNpemVHUFIsIHN0b3JhZ2VHUFIpKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDIxMTIyOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIFNwZWN1bGF0aXZlSklUOjp+U3BlY3VsYXRpdmVK
SVQoKQogewogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVSYXdPYmplY3Qo
R1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEdQUlJlZyBzdG9yYWdlR1BS
LCB1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgdmVjdG9yTGVuZ3RoKQordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlUmF3T2JqZWN0KEdQUlJlZyByZXN1bHRHUFIsIFJlZ2lz
dGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCBHUFJSZWcgc3RvcmFnZUdQUiwgdW5zaWduZWQgbnVt
RWxlbWVudHMsIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCkKIHsKICAgICBJbmRleGluZ1R5cGUgaW5k
ZXhpbmdUeXBlID0gc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKTsKICAgICBib29sIGhhc0luZGV4
aW5nSGVhZGVyID0gaGFzSW5kZXhlZFByb3BlcnRpZXMoaW5kZXhpbmdUeXBlKTsKQEAgLTk4LDcg
Kzk4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlUmF3T2JqZQogICAgIEdQ
UlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOwogCiAgICAgQVNTRVJUKHZlY3Rvckxl
bmd0aCA+PSBudW1FbGVtZW50cyk7Ci0gICAgdmVjdG9yTGVuZ3RoID0gQnV0dGVyZmx5OjpvcHRp
bWFsQ29udGlndW91c1ZlY3Rvckxlbmd0aChzdHJ1Y3R1cmUsIHZlY3Rvckxlbmd0aCk7CisgICAg
dmVjdG9yTGVuZ3RoID0gQnV0dGVyZmx5OjpvcHRpbWFsQ29udGlndW91c1ZlY3Rvckxlbmd0aChz
dHJ1Y3R1cmUuZ2V0KCksIHZlY3Rvckxlbmd0aCk7CiAgICAgCiAgICAgSklUQ29tcGlsZXI6Okp1
bXBMaXN0IHNsb3dDYXNlczsKIApAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmVtaXRHZXRDYWxsZWUoQ29kZU8KICAgICAgICAgICAgICAgICBjYWxsZWVHUFIpOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV9qaXQubW92ZSgKLSAgICAgICAgICAgICAgICBU
cnVzdGVkSW1tUHRyKG9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmNhbGxlZVJlY292ZXJ5LmNvbnN0
YW50KCkuYXNDZWxsKCkpLAorICAgICAgICAgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1faml0LmdyYXBoKCksIG9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmNhbGxlZVJlY292ZXJ5
LmNvbnN0YW50KCkuYXNDZWxsKCkpLAogICAgICAgICAgICAgICAgIGNhbGxlZUdQUik7CiAgICAg
ICAgIH0KICAgICB9IGVsc2UKQEAgLTY0OCw3ICs2NDgsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjpzaWxlbnRGaWxsKGNvbnN0IFNpCiAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKHBs
YW4ubm9kZSgpLT5hc0Jvb2xlYW4oKSksIHBsYW4uZ3ByKCkpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIFNldENlbGxDb25zdGFudDoKLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRy
KHBsYW4ubm9kZSgpLT5hc0NlbGwoKSksIHBsYW4uZ3ByKCkpOworICAgICAgICBBU1NFUlQocGxh
bi5ub2RlKCktPmNvbnN0YW50KCktPnZhbHVlKCkuaXNDZWxsKCkpOworICAgICAgICBtX2ppdC5t
b3ZlKFRydXN0ZWRJbW1QdHIocGxhbi5ub2RlKCktPmNvbnN0YW50KCkpLCBwbGFuLmdwcigpKTsK
ICAgICAgICAgYnJlYWs7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBjYXNlIFNldFRydXN0ZWRK
U0NvbnN0YW50OgpAQCAtODc3LDcgKzg3OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNr
QXJyYXkoTm9kZSogbm8KICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKAogICAgICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3ModGVtcC5ncHIoKSwgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSksCi0gICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihleHBlY3RlZENsYXNzSW5mbykpKTsKKyAg
ICAgICAgICAgIFRydXN0ZWRJbW1QdHIoZXhwZWN0ZWRDbGFzc0luZm8pKSk7CiAgICAgCiAgICAg
bm9SZXN1bHQobV9jdXJyZW50Tm9kZSk7CiB9CkBAIC0yMDU1LDcgKzIwNTYsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPblN0CiAgICAgY29udDhCaXQubGluaygmbV9q
aXQpOwogCiAgICAgbV9qaXQubHNoaWZ0MzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihz
aXplb2Yodm9pZCopID09IDQgPyAyIDogMyksIHNjcmF0Y2hSZWcpOwotICAgIG1faml0LmFkZFB0
cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC52bSgpLT5zbWFsbFN0cmluZ3Mu
c2luZ2xlQ2hhcmFjdGVyU3RyaW5ncygpKSwgc2NyYXRjaFJlZyk7CisgICAgbV9qaXQuYWRkUHRy
KFRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0
cmluZ3MoKSksIHNjcmF0Y2hSZWcpOwogICAgIG1faml0LmxvYWRQdHIoc2NyYXRjaFJlZywgc2Ny
YXRjaFJlZyk7CiAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKQEAgLTIxNDYsNyArMjE0Nyw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVGcm9tQ2hhckNvZGUKIAogICAgIEpJVENv
bXBpbGVyOjpKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5i
cmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgVHJ1c3Rl
ZEltbTMyKDB4ZmYpKSk7Ci0gICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihtX2ppdC52bSgpLT5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5ncygpKSwg
c21hbGxTdHJpbmdzUmVnKTsKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQudm0o
KS0+c21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZ3MoKSksIHNtYWxsU3RyaW5nc1Jl
Zyk7CiAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHNtYWxsU3Ry
aW5nc1JlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpTY2FsZVB0ciwgMCksIHNjcmF0
Y2hSZWcpOwogCiAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0MzIoTWFjcm9B
c3NlbWJsZXI6Olplcm8sIHNjcmF0Y2hSZWcpKTsKQEAgLTI0NjgsNyArMjQ2OSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVSZXAoTm8KICAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpKdW1wIGlzVW5kZWZpbmVkID0gbV9qaXQuYnJhbmNoNjQoSklUQ29tcGlsZXI6OkVxdWFs
LCBvcDFHUFIsIFRydXN0ZWRJbW02NChWYWx1ZVVuZGVmaW5lZCkpOwogCiAgICAgICAgICAgICBz
dGF0aWMgY29uc3QgZG91YmxlIHplcm8gPSAwOwotICAgICAgICAgICAgbV9qaXQubG9hZERvdWJs
ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmemVybyksIHJlc3VsdEZQUik7CisgICAg
ICAgICAgICBtX2ppdC5sb2FkRG91YmxlKFRydXN0ZWRJbW1QdHIoJnplcm8pLCByZXN1bHRGUFIp
OwogCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc051bGwgPSBtX2ppdC5icmFuY2g2
NChKSVRDb21waWxlcjo6RXF1YWwsIG9wMUdQUiwgVHJ1c3RlZEltbTY0KFZhbHVlTnVsbCkpOwog
ICAgICAgICAgICAgZG9uZS5hcHBlbmQoaXNOdWxsKTsKQEAgLTI0NzgsMTMgKzI0NzksMTMgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVJlcChObwogCiAgICAgICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBpc0ZhbHNlID0gbV9qaXQuYnJhbmNoNjQoSklUQ29tcGlsZXI6OkVx
dWFsLCBvcDFHUFIsIFRydXN0ZWRJbW02NChWYWx1ZUZhbHNlKSk7CiAgICAgICAgICAgICBzdGF0
aWMgY29uc3QgZG91YmxlIG9uZSA9IDE7Ci0gICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZvbmUpLCByZXN1bHRGUFIpOworICAgICAgICAg
ICAgbV9qaXQubG9hZERvdWJsZShUcnVzdGVkSW1tUHRyKCZvbmUpLCByZXN1bHRGUFIpOwogICAg
ICAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuanVtcCgpKTsKICAgICAgICAgICAgIGRvbmUuYXBw
ZW5kKGlzRmFsc2UpOwogCiAgICAgICAgICAgICBpc1VuZGVmaW5lZC5saW5rKCZtX2ppdCk7CiAg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgZG91YmxlIE5hTiA9IFBOYU47Ci0gICAgICAgICAgICBt
X2ppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZOYU4pLCByZXN1
bHRGUFIpOworICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShUcnVzdGVkSW1tUHRyKCZOYU4p
LCByZXN1bHRGUFIpOwogICAgICAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuanVtcCgpKTsKIAog
ICAgICAgICAgICAgaXNOdW1iZXIubGluaygmbV9qaXQpOwpAQCAtMjUxNyw3ICsyNTE4LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVJlcChObwogICAgICAgICAgICAgSklU
Q29tcGlsZXI6Okp1bXAgaXNVbmRlZmluZWQgPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6
RXF1YWwsIG9wMVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlVuZGVmaW5lZFRhZykpOwog
CiAgICAgICAgICAgICBzdGF0aWMgY29uc3QgZG91YmxlIHplcm8gPSAwOwotICAgICAgICAgICAg
bV9qaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmemVybyksIHJl
c3VsdEZQUik7CisgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKFRydXN0ZWRJbW1QdHIoJnpl
cm8pLCByZXN1bHRGUFIpOwogCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc051bGwg
PSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6RXF1YWwsIG9wMVRhZ0dQUiwgVHJ1c3RlZElt
bTMyKEpTVmFsdWU6Ok51bGxUYWcpKTsKICAgICAgICAgICAgIGRvbmUuYXBwZW5kKGlzTnVsbCk7
CkBAIC0yNTI2LDEzICsyNTI3LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3Vi
bGVSZXAoTm8KIAogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNGYWxzZSA9IG1faml0
LmJyYW5jaFRlc3QzMihKSVRDb21waWxlcjo6WmVybywgb3AxUGF5bG9hZEdQUiwgVHJ1c3RlZElt
bTMyKDEpKTsKICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBkb3VibGUgb25lID0gMTsKLSAgICAg
ICAgICAgIG1faml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJm9u
ZSksIHJlc3VsdEZQUik7CisgICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKFRydXN0ZWRJbW1Q
dHIoJm9uZSksIHJlc3VsdEZQUik7CiAgICAgICAgICAgICBkb25lLmFwcGVuZChtX2ppdC5qdW1w
KCkpOwogICAgICAgICAgICAgZG9uZS5hcHBlbmQoaXNGYWxzZSk7CiAKICAgICAgICAgICAgIGlz
VW5kZWZpbmVkLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBkb3VibGUg
TmFOID0gUE5hTjsKLSAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIoJk5hTiksIHJlc3VsdEZQUik7CisgICAgICAgICAgICBtX2ppdC5sb2Fk
RG91YmxlKFRydXN0ZWRJbW1QdHIoJk5hTiksIHJlc3VsdEZQUik7CiAgICAgICAgICAgICBkb25l
LmFwcGVuZChtX2ppdC5qdW1wKCkpOwogCiAgICAgICAgICAgICBpc051bWJlci5saW5rKCZtX2pp
dCk7CkBAIC0yNjQ3LDEyICsyNjQ4LDEyIEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVDbGFtcERvdWJs
ZVRvQnl0ZShKSVQKICAgICBzdGF0aWMgY29uc3QgZG91YmxlIHplcm8gPSAwOwogICAgIHN0YXRp
YyBjb25zdCBkb3VibGUgYnl0ZU1heCA9IDI1NTsKICAgICBzdGF0aWMgY29uc3QgZG91YmxlIGhh
bGYgPSAwLjU7Ci0gICAgaml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIoJnplcm8pLCBzY3JhdGNoKTsKKyAgICBqaXQubG9hZERvdWJsZShKSVRDb21waWxlcjo6VHJ1
c3RlZEltbVB0cigmemVybyksIHNjcmF0Y2gpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHRv
b1NtYWxsID0gaml0LmJyYW5jaERvdWJsZShNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTGVzc1RoYW5P
ckVxdWFsT3JVbm9yZGVyZWQsIHNvdXJjZSwgc2NyYXRjaCk7Ci0gICAgaml0LmxvYWREb3VibGUo
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJmJ5dGVNYXgpLCBzY3JhdGNoKTsKKyAgICBq
aXQubG9hZERvdWJsZShKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cigmYnl0ZU1heCksIHNjcmF0
Y2gpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHRvb0JpZyA9IGppdC5icmFuY2hEb3VibGUo
TWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUdyZWF0ZXJUaGFuLCBzb3VyY2UsIHNjcmF0Y2gpOwogICAg
IAotICAgIGppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZoYWxm
KSwgc2NyYXRjaCk7CisgICAgaml0LmxvYWREb3VibGUoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1Q
dHIoJmhhbGYpLCBzY3JhdGNoKTsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkg
anVzdCB1c2UgYSBmbG9hdGluZyBwb2ludCByb3VuZCEKICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIwNTQKICAgICBqaXQuYWRkRG91YmxlKHNvdXJjZSwg
c2NyYXRjaCk7CkBAIC0zOTAwLDcgKzM5MDEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlTWFrZVJvcGUoTm9kCiAgICAgTWFya2VkQWxsb2NhdG9yKiBtYXJrZWRBbGxvY2F0b3IgPSBz
dWJzcGFjZUZvcjxKU1N0cmluZz4oKm1faml0LnZtKCkpLT5hbGxvY2F0b3JGb3Ioc2l6ZW9mKEpT
Um9wZVN0cmluZykpOwogICAgIFJFTEVBU0VfQVNTRVJUKG1hcmtlZEFsbG9jYXRvcik7CiAgICAg
bV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1hcmtlZEFsbG9jYXRvciksIGFsbG9jYXRvckdQUik7
Ci0gICAgZW1pdEFsbG9jYXRlSlNDZWxsKHJlc3VsdEdQUiwgbWFya2VkQWxsb2NhdG9yLCBhbGxv
Y2F0b3JHUFIsIFRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgp
KSwgc2NyYXRjaEdQUiwgc2xvd1BhdGgpOworICAgIGVtaXRBbGxvY2F0ZUpTQ2VsbChyZXN1bHRH
UFIsIG1hcmtlZEFsbG9jYXRvciwgYWxsb2NhdG9yR1BSLCBUcnVzdGVkSW1tUHRyKG1faml0Lmdy
YXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUobV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgp
KSksIHNjcmF0Y2hHUFIsIHNsb3dQYXRoKTsKICAgICAgICAgCiAgICAgbV9qaXQuc3RvcmVQdHIo
VHJ1c3RlZEltbVB0cigwKSwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU1N0cmlu
Zzo6b2Zmc2V0T2ZWYWx1ZSgpKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bU9w
R1BSczsgKytpKQpAQCAtNTA5Nyw3ICs1MDk4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUFyaXRoUm91bmRpbgogICAgICAgICAgICAgICAgIEZQUlJlZyByZXN1bHRGUFIgPSByZXN1
bHQuZnByKCk7CiAgICAgICAgICAgICAgICAgaWYgKHByb2R1Y2VzSW50ZWdlcihub2RlLT5hcml0
aFJvdW5kaW5nTW9kZSgpKSAmJiAhc2hvdWxkQ2hlY2tOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhS
b3VuZGluZ01vZGUoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IGRvdWJs
ZSBoYWxmQ29uc3RhbnQgPSAwLjU7Ci0gICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWREb3Vi
bGUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJmhhbGZDb25zdGFudCksIHJlc3VsdEZQ
Uik7CisgICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoVHJ1c3RlZEltbVB0cigm
aGFsZkNvbnN0YW50KSwgcmVzdWx0RlBSKTsKICAgICAgICAgICAgICAgICAgICAgbV9qaXQuYWRk
RG91YmxlKHZhbHVlRlBSLCByZXN1bHRGUFIpOwogICAgICAgICAgICAgICAgICAgICBtX2ppdC5m
bG9vckRvdWJsZShyZXN1bHRGUFIsIHJlc3VsdEZQUik7CiAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKQEAgLTUxMDksMTEgKzUxMTAsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFy
aXRoUm91bmRpbgogICAgICAgICAgICAgICAgICAgICBGUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlz
KTsKICAgICAgICAgICAgICAgICAgICAgRlBSUmVnIHNjcmF0Y2hGUFIgPSBzY3JhdGNoLmZwcigp
OwogICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgZG91YmxlIGhhbGZDb25zdGFudCA9
IDAuNTsKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cigmaGFsZkNvbnN0YW50KSwgc2NyYXRjaEZQUik7CisgICAgICAgICAg
ICAgICAgICAgIG1faml0LmxvYWREb3VibGUoVHJ1c3RlZEltbVB0cigmaGFsZkNvbnN0YW50KSwg
c2NyYXRjaEZQUik7CiAKICAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgc2hv
dWxkVXNlQ2VpbGVkID0gbV9qaXQuYnJhbmNoRG91YmxlKEpJVENvbXBpbGVyOjpEb3VibGVMZXNz
VGhhbk9yRXF1YWwsIHJlYWxQYXJ0RlBSLCBzY3JhdGNoRlBSKTsKICAgICAgICAgICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IGRvdWJsZSBvbmVDb25zdGFudCA9IC0xLjA7Ci0gICAgICAgICAgICAg
ICAgICAgIG1faml0LmxvYWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJm9u
ZUNvbnN0YW50KSwgc2NyYXRjaEZQUik7CisgICAgICAgICAgICAgICAgICAgIG1faml0LmxvYWRE
b3VibGUoVHJ1c3RlZEltbVB0cigmb25lQ29uc3RhbnQpLCBzY3JhdGNoRlBSKTsKICAgICAgICAg
ICAgICAgICAgICAgbV9qaXQuYWRkRG91YmxlKHNjcmF0Y2hGUFIsIHJlc3VsdEZQUik7CiAgICAg
ICAgICAgICAgICAgICAgIHNob3VsZFVzZUNlaWxlZC5saW5rKCZtX2ppdCk7CiAgICAgICAgICAg
ICAgICAgfQpAQCAtNjM1MywxMiArNjM1NCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQ2hlY2tTdHJpbmdJCiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CiAKLXRlbXBsYXRlIDx0eXBl
bmFtZSBDbGFzc1R5cGU+IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdGdW5jdGlvbkNv
bW1vbihHUFJSZWcgcmVzdWx0R1BSLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHNjcmF0
Y2gxR1BSLCBHUFJSZWcgc2NyYXRjaDJHUFIsIEdQUlJlZyBzY29wZUdQUiwgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXBMaXN0JiBzbG93UGF0aCwgc2l6ZV90IHNpemUsIEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSwgcHRyZGlmZl90IG9mZnNldE9mU2NvcGVDaGFpbiwgcHRyZGlmZl90IG9mZnNl
dE9mRXhlY3V0YWJsZSwgcHRyZGlmZl90IG9mZnNldE9mUmFyZURhdGEpCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2xhc3NUeXBlPiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3RnVuY3Rpb25D
b21tb24oR1BSUmVnIHJlc3VsdEdQUiwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIEdQ
UlJlZyBzY3JhdGNoMUdQUiwgR1BSUmVnIHNjcmF0Y2gyR1BSLCBHUFJSZWcgc2NvcGVHUFIsIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYgc2xvd1BhdGgsIHNpemVfdCBzaXplLCBGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUsIHB0cmRpZmZfdCBvZmZzZXRPZlNjb3BlQ2hhaW4sIHB0cmRp
ZmZfdCBvZmZzZXRPZkV4ZWN1dGFibGUsIHB0cmRpZmZfdCBvZmZzZXRPZlJhcmVEYXRhKQogewog
ICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0V2l0aEtub3duU2l6ZTxDbGFzc1R5cGU+KHJlc3VsdEdQ
UiwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKDApLCBzY3JhdGNoMUdQ
Uiwgc2NyYXRjaDJHUFIsIHNsb3dQYXRoLCBzaXplKTsKICAgICAKICAgICBtX2ppdC5zdG9yZVB0
cihzY29wZUdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBvZmZzZXRPZlNjb3Bl
Q2hhaW4pKTsKLSAgICBtX2ppdC5zdG9yZVB0cihUcnVzdGVkSW1tUHRyKGV4ZWN1dGFibGUpLCBK
SVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9mZnNldE9mRXhlY3V0YWJsZSkpOworICAg
IG1faml0LnN0b3JlUHRyKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCks
IGV4ZWN1dGFibGUpLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIG9mZnNldE9mRXhl
Y3V0YWJsZSkpOwogICAgIG1faml0LnN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoMCksIEpJVENvbXBp
bGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgb2Zmc2V0T2ZSYXJlRGF0YSkpOwogICAgIAogICAgIG1f
aml0Lm11dGF0b3JGZW5jZSgpOwpAQCAtNjM5MSwxMCArNjM5MiwxMCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlTmV3RnVuY3Rpb24oCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1
cmUgPSBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKAogICAgICAgICBub2RlVHlwZSA9
PSBOZXdHZW5lcmF0b3JGdW5jdGlvbiA/IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyktPmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkgOgogICAg
ICAgICBub2RlVHlwZSA9PSBOZXdBc3luY0Z1bmN0aW9uID8gbV9qaXQuZ3JhcGgoKS5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXN5bmNGdW5jdGlvblN0cnVjdHVyZSgp
IDoKLSAgICAgICAgbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKTsKKyAgICAgICAgbV9qaXQuZ3JhcGgoKS5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7
CiAgICAgCiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICBHUFJUZW1wb3Jhcnkg
c2NyYXRjaDEodGhpcyk7CkBAIC02NTEwLDggKzY1MTEsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlRm9yd2FyZFZhcmFyCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRl
QWN0aXZhdGlvbihOb2RlKiBub2RlKQogewogICAgIFN5bWJvbFRhYmxlKiB0YWJsZSA9IG5vZGUt
PmNhc3RPcGVyYW5kPFN5bWJvbFRhYmxlKj4oKTsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKAotICAgICAgICBub2RlLT5vcmlnaW4uc2Vt
YW50aWMpLT5hY3RpdmF0aW9uU3RydWN0dXJlKCk7CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBz
dHJ1Y3R1cmUgPSBtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKG1faml0LmdyYXBoKCku
Z2xvYmFsT2JqZWN0Rm9yKAorICAgICAgICBub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hY3RpdmF0
aW9uU3RydWN0dXJlKCkpOwogICAgICAgICAKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBzY29w
ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgR1BSUmVnIHNjb3BlR1BSID0gc2NvcGUuZ3By
KCk7CkBAIC02NTUyLDcgKzY1NTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3Jl
YXRlQWN0aXZhCiAgICAgLy8gYWN0aXZhdGlvbiBtdXN0IGJlIHlvdW5nLgogICAgIG1faml0LnN0
b3JlUHRyKHNjb3BlR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTU2NvcGU6
Om9mZnNldE9mTmV4dCgpKSk7CiAgICAgbV9qaXQuc3RvcmVQdHIoCi0gICAgICAgIFRydXN0ZWRJ
bW1QdHIodGFibGUpLAorICAgICAgICBUcnVzdGVkSW1tUHRyKG5vZGUtPmNlbGxPcGVyYW5kKCkp
LAogICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTTGV4aWNhbEVudmly
b25tZW50OjpvZmZzZXRPZlN5bWJvbFRhYmxlKCkpKTsKICAgICAgICAgCiAgICAgLy8gTXVzdCBp
bml0aWFsaXplIGFsbCBtZW1iZXJzIHRvIHVuZGVmaW5lZCBvciB0aGUgVERaIGVtcHR5IHZhbHVl
LgpAQCAtNjYxNSw4ICs2NjE2LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0
ZURpcmVjdAogICAgICAgICBtX2ppdC5zdWIzMihUcnVzdGVkSW1tMzIoMSksIGxlbmd0aEdQUik7
CiAgICAgfQogICAgICAgICAKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9Ci0gICAgICAgIG1f
aml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmRpcmVj
dEFyZ3VtZW50c1N0cnVjdHVyZSgpOworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJl
ID0KKyAgICAgICAgbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShtX2ppdC5ncmFwaCgp
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5kaXJlY3RBcmd1bWVudHNT
dHJ1Y3R1cmUoKSk7CiAgICAgICAgIAogICAgIC8vIFVzZSBhIGRpZmZlcmVudCBzdHJhdGVneSBm
b3IgYWxsb2NhdGluZyB0aGUgb2JqZWN0IGRlcGVuZGluZyBvbiB3aGV0aGVyIHdlIGtub3cgaXRz
CiAgICAgLy8gc2l6ZSBzdGF0aWNhbGx5LgpAQCAtNjY4MSw4ICs2NjgyLDggQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZURpcmVjdAogICAgICAgICAgICAgICAgIHNjcmF0Y2gx
R1BSKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1faml0Lm1vdmUoCi0gICAgICAg
ICAgICAgICAgVHJ1c3RlZEltbVB0cigKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3JpZ2lu
LnNlbWFudGljLmlubGluZUNhbGxGcmFtZS0+Y2FsbGVlUmVjb3ZlcnkuY29uc3RhbnQoKS5hc0Nl
bGwoKSksCisgICAgICAgICAgICAgICAgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIoCisgICAg
ICAgICAgICAgICAgICAgIG1faml0LmdyYXBoKCksIG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxp
bmVDYWxsRnJhbWUtPmNhbGxlZVJlY292ZXJ5LmNvbnN0YW50KCkuYXNDZWxsKCkpLAogICAgICAg
ICAgICAgICAgIHNjcmF0Y2gxR1BSKTsKICAgICAgICAgfQogICAgIH0gZWxzZQpAQCAtNjc5OCw3
ICs2Nzk5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVNjb3BlZAogICAg
IG1faml0LnNldHVwQXJndW1lbnQoCiAgICAgICAgIDEsIFsmXSAoR1BSUmVnIGRlc3RHUFIpIHsK
ICAgICAgICAgICAgIG1faml0Lm1vdmUoCi0gICAgICAgICAgICAgICAgVHJ1c3RlZEltbVB0ciht
X2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+c2NvcGVkQXJndW1l
bnRzU3RydWN0dXJlKCkpLAorICAgICAgICAgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1faml0LmdyYXBoKCksIG1faml0Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpLT5zY29wZWRBcmd1bWVudHNTdHJ1Y3R1cmUoKSksCiAgICAgICAgICAgICAgICAgZGVz
dEdQUik7CiAgICAgICAgIH0pOwogICAgIG1faml0LnNldHVwQXJndW1lbnQoMCwgWyZdIChHUFJS
ZWcgZGVzdEdQUikgeyBtX2ppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBkZXN0
R1BSKTsgfSk7CkBAIC02ODI1LDggKzY4MjYsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQ3JlYXRlQ2xvbmVkCiAgICAgbV9qaXQuc2V0dXBBcmd1bWVudCgKICAgICAgICAgMSwgWyZd
IChHUFJSZWcgZGVzdEdQUikgewogICAgICAgICAgICAgbV9qaXQubW92ZSgKLSAgICAgICAgICAg
ICAgICBUcnVzdGVkSW1tUHRyKAotICAgICAgICAgICAgICAgICAgICBtX2ppdC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+Y2xvbmVkQXJndW1lbnRzU3RydWN0dXJlKCkp
LAorICAgICAgICAgICAgICAgIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKAorICAgICAgICAg
ICAgICAgICAgICBtX2ppdC5ncmFwaCgpLCBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKS0+Y2xvbmVkQXJndW1lbnRzU3RydWN0dXJlKCkpLAogICAgICAgICAgICAg
ICAgIGRlc3RHUFIpOwogICAgICAgICB9KTsKICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50KDAsIFsm
XSAoR1BSUmVnIGRlc3RHUFIpIHsgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
ciwgZGVzdEdQUik7IH0pOwpAQCAtNjk0OSw3ICs2OTUwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVNwcmVhZChOb2RlKgogICAgICAgICBtX2ppdC5sc2hpZnQzMihUcnVzdGVkSW1t
MzIoMyksIHNjcmF0Y2gxR1BSKTsKICAgICAgICAgbV9qaXQuYWRkMzIoVHJ1c3RlZEltbTMyKEpT
Rml4ZWRBcnJheTo6b2Zmc2V0T2ZEYXRhKCkpLCBzY3JhdGNoMUdQUik7CiAKLSAgICAgICAgbV9q
aXQuZW1pdEFsbG9jYXRlVmFyaWFibGVTaXplZENlbGw8SlNGaXhlZEFycmF5PihyZXN1bHRHUFIs
IFRydXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5tX3ZtLmZpeGVkQXJyYXlTdHJ1Y3R1cmUuZ2V0
KCkpLCBzY3JhdGNoMUdQUiwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzbG93UGF0aCk7Cisg
ICAgICAgIG1faml0LmVtaXRBbGxvY2F0ZVZhcmlhYmxlU2l6ZWRDZWxsPEpTRml4ZWRBcnJheT4o
cmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUo
bV9qaXQuZ3JhcGgoKS5tX3ZtLmZpeGVkQXJyYXlTdHJ1Y3R1cmUuZ2V0KCkpKSwgc2NyYXRjaDFH
UFIsIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd1BhdGgpOwogICAgICAgICBtX2ppdC5z
dG9yZTMyKGxlbmd0aEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU0Zp
eGVkQXJyYXk6Om9mZnNldE9mU2l6ZSgpKSk7CiAKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhhcmd1bWVudCwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgp
KSwgc2NyYXRjaDFHUFIpOwpAQCAtNzI2NiwxNyArNzI2NywxNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlQXJyYXlTbGljZShOCiAgICAgICAgIC8vIHRvIGVuc3VyZSB0aGUgaW5jb21p
bmcgYXJyYXkgaXMgb25lIHRvIGJlIG9uZSBvZiB0aGUgb3JpZ2luYWwgYXJyYXkgc3RydWN0dXJl
cwogICAgICAgICAvLyB3aXRoIG9uZSBvZiB0aGUgZm9sbG93aW5nIGluZGV4aW5nIHNoYXBlczog
SW50MzIsIENvbnRpZ3VvdXMsIERvdWJsZS4gVGhlcmVmb3JlLAogICAgICAgICAvLyB3ZSdyZSBh
IGRvdWJsZSBhcnJheSBoZXJlLgotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoZ2xv
YmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24o
QXJyYXlXaXRoRG91YmxlKSksIHRlbXBWYWx1ZSk7CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3Rl
ZEltbVB0cihtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJy
YXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aERvdWJs
ZSkpKSwgdGVtcFZhbHVlKTsKICAgICAgICAgZW1pdE1vdmVFbXB0eVZhbHVlKGpzTmFOKCkpOwog
ICAgICAgICBkb25lLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogCiAgICAgICAgIGlzQ29udGlndW91
cy5saW5rKCZtX2ppdCk7Ci0gICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihnbG9iYWxP
YmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJh
eVdpdGhDb250aWd1b3VzKSksIHRlbXBWYWx1ZSk7CisgICAgICAgIG1faml0Lm1vdmUoVHJ1c3Rl
ZEltbVB0cihtX2ppdC5ncmFwaCgpLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJy
YXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aENvbnRp
Z3VvdXMpKSksIHRlbXBWYWx1ZSk7CiAgICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZShKU1ZhbHVl
KCkpOwogICAgICAgICBkb25lLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogCiAgICAgICAgIGlzSW50
MzIubGluaygmbV9qaXQpOwotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIoZ2xvYmFs
T2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJy
YXlXaXRoSW50MzIpKSwgdGVtcFZhbHVlKTsKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1t
UHRyKG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0
cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoSW50MzIpKSks
IHRlbXBWYWx1ZSk7CiAgICAgICAgIGVtaXRNb3ZlRW1wdHlWYWx1ZShKU1ZhbHVlKCkpOwogCiAg
ICAgICAgIGRvbmUubGluaygmbV9qaXQpOwpAQCAtNzQ1Niw3ICs3NDU3LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVR5cGVPZihOb2RlKgogICAgIG1faml0LmVtaXRUeXBlT2YoCiAg
ICAgICAgIHZhbHVlUmVncywgcmVzdWx0R1BSLAogICAgICAgICBbJl0gKFR5cGVvZlR5cGUgdHlw
ZSwgYm9vbCBmYWxsc1Rocm91Z2gpIHsKLSAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZElt
bVB0cihtX2ppdC52bSgpLT5zbWFsbFN0cmluZ3MudHlwZVN0cmluZyh0eXBlKSksIHJlc3VsdEdQ
Uik7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1f
aml0LmdyYXBoKCksIG1faml0LnZtKCktPnNtYWxsU3RyaW5ncy50eXBlU3RyaW5nKHR5cGUpKSwg
cmVzdWx0R1BSKTsKICAgICAgICAgICAgIGlmICghZmFsbHNUaHJvdWdoKQogICAgICAgICAgICAg
ICAgIGRvbmUuYXBwZW5kKG1faml0Lmp1bXAoKSk7CiAgICAgICAgIH0sCkBAIC03NTgwLDcgKzc1
ODEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2NhdGVQcm9wCiAgICAgR1BS
UmVnIHNjcmF0Y2hHUFIyID0gc2NyYXRjaDIuZ3ByKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIz
ID0gc2NyYXRjaDMuZ3ByKCk7CiAgICAgICAgIAotICAgIG1faml0Lm1vdmUoSklUQ29tcGlsZXI6
OlRydXN0ZWRJbW1QdHIoYWxsb2NhdG9yKSwgc2NyYXRjaEdQUjIpOworICAgIG1faml0Lm1vdmUo
VHJ1c3RlZEltbVB0cihhbGxvY2F0b3IpLCBzY3JhdGNoR1BSMik7CiAgICAgSklUQ29tcGlsZXI6
Okp1bXBMaXN0IHNsb3dQYXRoOwogICAgIG1faml0LmVtaXRBbGxvY2F0ZShzY3JhdGNoR1BSMSwg
YWxsb2NhdG9yLCBzY3JhdGNoR1BSMiwgc2NyYXRjaEdQUjMsIHNsb3dQYXRoKTsKICAgICBtX2pp
dC5hZGRQdHIoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihzaXplICsgc2l6ZW9mKEluZGV4aW5n
SGVhZGVyKSksIHNjcmF0Y2hHUFIxKTsKQEAgLTc2MjgsNyArNzYyOSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVSZWFsbG9jYXRlUHIKICAgICBHUFJSZWcgc2NyYXRjaEdQUjMgPSBz
Y3JhdGNoMy5ncHIoKTsKICAgICAKICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd1BhdGg7
Ci0gICAgbV9qaXQubW92ZShKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cihhbGxvY2F0b3IpLCBz
Y3JhdGNoR1BSMik7CisgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKGFsbG9jYXRvciksIHNj
cmF0Y2hHUFIyKTsKICAgICBtX2ppdC5lbWl0QWxsb2NhdGUoc2NyYXRjaEdQUjEsIGFsbG9jYXRv
ciwgc2NyYXRjaEdQUjIsIHNjcmF0Y2hHUFIzLCBzbG93UGF0aCk7CiAgICAgCiAgICAgbV9qaXQu
YWRkUHRyKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIobmV3U2l6ZSArIHNpemVvZihJbmRleGlu
Z0hlYWRlcikpLCBzY3JhdGNoR1BSMSk7CkBAIC03ODU3LDEwICs3ODU4LDEwIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1N0cmluZ09yQ2EKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKIAogICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkFk
ZHJlc3Mob3AxR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZXN1bHRHUFIpOwot
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc1N0cmluZyA9IG1faml0LmJyYW5jaFN0cnVjdHVy
ZSgKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNTdHJpbmcgPSBtX2ppdC5icmFuY2hXZWFr
U3RydWN0dXJlKAogICAgICAgICAgICAgSklUQ29tcGlsZXI6OkVxdWFsLAogICAgICAgICAgICAg
cmVzdWx0R1BSLAotICAgICAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5nU3RydWN0dXJlLmdldCgp
KTsKKyAgICAgICAgICAgIG1faml0LmdyYXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUobV9qaXQudm0o
KS0+c3RyaW5nU3RydWN0dXJlLmdldCgpKSk7CiAKICAgICAgICAgc3BlY3VsYXRlU3RyaW5nT2Jq
ZWN0Rm9yU3RydWN0dXJlKG5vZGUtPmNoaWxkMSgpLCByZXN1bHRHUFIpOwogICAgICAgICAKQEAg
LTc5NTYsOCArNzk1Nyw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFy
cmEKIHsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICBUeXBlZEFycmF5VHlw
ZSB0eXBlID0gbm9kZS0+dHlwZWRBcnJheVR5cGUoKTsKLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IGdsb2JhbE9iamVjdC0+dHlwZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlKTsK
LSAgICBSRUxFQVNFX0FTU0VSVChzdHJ1Y3R1cmUpOworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
c3RydWN0dXJlID0gbV9qaXQuZ3JhcGgoKS5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3Qt
PnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJyZW50bHkodHlwZSkpOworICAgIFJFTEVBU0VfQVNT
RVJUKHN0cnVjdHVyZS5nZXQoKSk7CiAgICAgCiAgICAgU3BlY3VsYXRlSW50MzJPcGVyYW5kIHNp
emUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEdQUlJlZyBzaXplR1BSID0gc2l6ZS5ncHIo
KTsKQEAgLTg0MDEsMTAgKzg0MDIsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRl
U3RyaW5nT3JTdAogICAgIEdQUlJlZyBzdHJ1Y3R1cmVJREdQUiA9IHN0cnVjdHVyZUlELmdwcigp
OwogCiAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGdwciwgSlNDZWxsOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSwgc3RydWN0dXJlSURHUFIpOyAKLSAgICBKSVRDb21waWxlcjo6
SnVtcCBpc1N0cmluZyA9IG1faml0LmJyYW5jaFN0cnVjdHVyZSgKKyAgICBKSVRDb21waWxlcjo6
SnVtcCBpc1N0cmluZyA9IG1faml0LmJyYW5jaFdlYWtTdHJ1Y3R1cmUoCiAgICAgICAgIEpJVENv
bXBpbGVyOjpFcXVhbCwKICAgICAgICAgc3RydWN0dXJlSURHUFIsIAotICAgICAgICBtX2ppdC52
bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOworICAgICAgICBtX2ppdC5ncmFwaCgpLnJlZ2lz
dGVyU3RydWN0dXJlKG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpOwogICAgIAog
ICAgIHNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZShlZGdlLCBzdHJ1Y3R1cmVJREdQ
Uik7CiAgICAgCkBAIC05MjY3LDggKzkyNjgsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlTGF6eUpTQ29uc3RhCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNYXRlcmlhbGl6
ZU5ld09iamVjdChOb2RlKiBub2RlKQogewotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbm9k
ZS0+c3RydWN0dXJlU2V0KClbMF07Ci0gICAgQVNTRVJUKG1faml0LmdyYXBoKCkudmFyQXJnQ2hp
bGQobm9kZSwgMCktPmR5bmFtaWNDYXN0Q29uc3RhbnQ8U3RydWN0dXJlKj4oKSA9PSBzdHJ1Y3R1
cmUpOworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbm9kZS0+c3RydWN0dXJl
U2V0KCkuYXQoMCk7CisgICAgQVNTRVJUKG1faml0LmdyYXBoKCkudmFyQXJnQ2hpbGQobm9kZSwg
MCktPmR5bmFtaWNDYXN0Q29uc3RhbnQ8U3RydWN0dXJlKj4oKSA9PSBzdHJ1Y3R1cmUuZ2V0KCkp
OwogCiAgICAgT2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YSYgZGF0YSA9IG5vZGUtPm9iamVjdE1h
dGVyaWFsaXphdGlvbkRhdGEoKTsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkK
QEAgLTc1LDcgKzc1LDYgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogcHJpdmF0ZToKICAgICB0
eXBlZGVmIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIgVHJ1c3RlZEltbTMyOwogICAgIHR5cGVk
ZWYgSklUQ29tcGlsZXI6OkltbTMyIEltbTMyOwotICAgIHR5cGVkZWYgSklUQ29tcGlsZXI6OlRy
dXN0ZWRJbW1QdHIgVHJ1c3RlZEltbVB0cjsKICAgICB0eXBlZGVmIEpJVENvbXBpbGVyOjpJbW1Q
dHIgSW1tUHRyOwogICAgIHR5cGVkZWYgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW02NCBUcnVzdGVk
SW1tNjQ7CiAgICAgdHlwZWRlZiBKSVRDb21waWxlcjo6SW1tNjQgSW1tNjQ7CkBAIC0xMTIsNiAr
MTExLDY0IEBAIHB1YmxpYzoKICAgICBTcGVjdWxhdGl2ZUpJVChKSVRDb21waWxlciYpOwogICAg
IH5TcGVjdWxhdGl2ZUpJVCgpOwogCisgICAgc3RydWN0IFRydXN0ZWRJbW1QdHIgeworICAgICAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbVB0cihU
KiB2YWx1ZSkKKyAgICAgICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPEhlYXBDZWxsLCBUPjo6dmFsdWUs
ICJUbyB1c2UgYSBHQyBwb2ludGVyLCB0aGUgZ3JhcGggbXVzdCBiZSBhd2FyZSBvZiBpdC4gVXNl
IFNwZWN1bGF0aXZlSklUOjpUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciBpbnN0ZWFkLiIpOwor
ICAgICAgICB9CisKKyAgICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbVB0cihSZWdpc3RlcmVkU3Ry
dWN0dXJlIHN0cnVjdHVyZSkKKyAgICAgICAgICAgIDogbV92YWx1ZShzdHJ1Y3R1cmUuZ2V0KCkp
CisgICAgICAgIHsgfQorICAgICAgICAKKyAgICAgICAgLy8gVGhpcyBpcyBvbmx5IGhlcmUgc28g
dGhhdCBUcnVzdGVkSW1tUHRyKDApIGRvZXMgbm90IGNvbmZ1c2UgdGhlIEMrKworICAgICAgICAv
LyBvdmVybG9hZCBoYW5kbGluZyBydWxlcy4KKyAgICAgICAgZXhwbGljaXQgVHJ1c3RlZEltbVB0
cihpbnQgdmFsdWUpCisgICAgICAgICAgICA6IG1fdmFsdWUodmFsdWUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIEFTU0VSVCghdmFsdWUpOworICAgICAgICB9CisKKyAgICAgICAgZXhwbGljaXQg
VHJ1c3RlZEltbVB0cihzdGQ6Om51bGxwdHJfdCkKKyAgICAgICAgICAgIDogbV92YWx1ZSgwKQor
ICAgICAgICB7IH0KKworICAgICAgICBleHBsaWNpdCBUcnVzdGVkSW1tUHRyKEZyb3plblZhbHVl
KiB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQodmFsdWUtPnZh
bHVlKCkuaXNDZWxsKCkpOworICAgICAgICAgICAgbV92YWx1ZSA9IE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKHZhbHVlLT5jZWxsKCkpOworICAgICAgICB9CisKKyAgICAgICAgZXhwbGlj
aXQgVHJ1c3RlZEltbVB0cihzaXplX3QgdmFsdWUpCisgICAgICAgICAgICA6IG1fdmFsdWUoYml0
d2lzZV9jYXN0PHZvaWQqPih2YWx1ZSkpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAg
IHN0YXRpYyBUcnVzdGVkSW1tUHRyIHdlYWtQb2ludGVyKEdyYXBoJiBncmFwaCwgSlNDZWxsKiBj
ZWxsKQorICAgICAgICB7ICAgICAKKyAgICAgICAgICAgIC8vIFRoZXJlIGFyZSB3ZWlyZCByZWxh
dGlvbnNoaXBzIGluIGhvdyBvcHRpbWl6ZWQgQ29kZUJsb2NrcworICAgICAgICAgICAgLy8gcG9p
bnQgdG8gb3RoZXIgQ29kZUJsb2Nrcy4gV2UgZG9uJ3Qgd2FudCB0byBoYXZlIHRoZW0gYmUKKyAg
ICAgICAgICAgIC8vIHBhcnQgb2YgdGhlIHdlYWsgcG9pbnRlciBzZXQuIEZvciBleGFtcGxlLCBh
biBvcHRpbWl6ZWQgQ29kZUJsb2NrCisgICAgICAgICAgICAvLyBoYXZpbmcgYSB3ZWFrIHBvaW50
ZXIgdG8gaXRzZWxmIHdpbGwgY2F1c2UgaXQgdG8gZ2V0IGNvbGxlY3RlZC4KKyAgICAgICAgICAg
IEFTU0VSVCghanNEeW5hbWljQ2FzdDxDb2RlQmxvY2sqPihjZWxsKSk7CisKKyAgICAgICAgICAg
IGdyYXBoLm1fcGxhbi53ZWFrUmVmZXJlbmNlcy5hZGRMYXppbHkoY2VsbCk7CisgICAgICAgICAg
ICByZXR1cm4gVHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8c2l6ZV90PihjZWxsKSk7CisgICAg
ICAgIH0KKworICAgICAgICBvcGVyYXRvciBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigp
IGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KKworICAgICAgICBpbnRwdHJfdCBhc0ludHB0cigp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlLmFzSW50cHRyKCk7CisgICAg
ICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyIG1fdmFsdWU7CisgICAgfTsKKwogICAgIGJvb2wgY29tcGlsZSgpOwogICAgIAogICAgIHZv
aWQgY3JlYXRlT1NSRW50cmllcygpOwpAQCAtOTgyLDE3ICsxMDM5LDE3IEBAIHB1YmxpYzoKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKG9iaiwgaW1wbCk7CiAgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9
Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3Qg
b3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VTdCBvcGVyYXRpb24s
IEdQUlJlZyByZXN1bHQsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKQogICAgIHsKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3Ry
dWN0dXJlKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwg
cmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJ
VE9wZXJhdGlvbl9FU3RaUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMpCisgICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9FU3RaUCBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHQsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFy
ZzMpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1
c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBhcmcyLCBhcmczKTsKICAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VTdFpQIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBhcmcyLCBHUFJSZWcgYXJn
MykKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VT
dFpQIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1
cmUsIHNpemVfdCBhcmcyLCBHUFJSZWcgYXJnMykKICAgICB7CiAgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0ZWRJ
bW0zMihhcmcyKSwgYXJnMyk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9w
ZXJhdGlvbiwgcmVzdWx0KTsKQEAgLTEwMDIsMTIgKzEwNTksMTIgQEAgcHVibGljOgogICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAg
ICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJhdGlvbl9F
U3RaQiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBHUFJS
ZWcgYXJnMiwgR1BSUmVnIGJ1dHRlcmZseSkKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKFBfSklUT3BlcmF0aW9uX0VTdFpCIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgUmVn
aXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYnV0dGVyZmx5
KQogICAgIHsKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0
ZWRJbW1QdHIoc3RydWN0dXJlKSwgYXJnMiwgYnV0dGVyZmx5KTsKICAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VTdFpCIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBhcmcyLCBHUFJSZWcg
YnV0dGVyZmx5KQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVy
YXRpb25fRVN0WkIgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBSZWdpc3RlcmVkU3RydWN0dXJl
IHN0cnVjdHVyZSwgc2l6ZV90IGFyZzIsIEdQUlJlZyBidXR0ZXJmbHkpCiAgICAgewogICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1
cmUpLCBUcnVzdGVkSW1tMzIoYXJnMiksIGJ1dHRlcmZseSk7CiAgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKQEAgLTEwMjIsMTIgKzEwNzksMTIg
QEAgcHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgYXJnMiwgVHJ1c3RlZEltbVB0cihidXR0ZXJmbHkpKTsKICAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VTdFBTIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHZvaWQqIHBvaW50ZXIsIHNpemVfdCBz
aXplKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9KSVRPcGVyYXRpb25f
RVN0UFMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVj
dHVyZSwgdm9pZCogcG9pbnRlciwgc2l6ZV90IHNpemUpCiAgICAgewogICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVz
dGVkSW1tUHRyKHBvaW50ZXIpLCBUcnVzdGVkSW1tUHRyKHNpemUpKTsKICAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VTdFNTIG9wZXJhdGlv
biwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBpbmRleCwgc2l6
ZV90IHNpemUpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJVE9wZXJh
dGlvbl9FU3RTUyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
c3RydWN0dXJlLCBzaXplX3QgaW5kZXgsIHNpemVfdCBzaXplKQogICAgIHsKICAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwg
VHJ1c3RlZEltbVB0cihpbmRleCksIFRydXN0ZWRJbW1QdHIoc2l6ZSkpOwogICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CkBAIC0xMDQ0LDcgKzEx
MDEsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oQ19KSVRPcGVyYXRpb25fRUMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBKU0NlbGwqIGNl
bGwpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1
c3RlZEltbVB0cihjZWxsKSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBjZWxsKSk7CiAg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAg
ICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9F
Q1ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCkBA
IC0xMDU5LDcgKzExMTYsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUpzY0Mgb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBHUFJSZWcgYXJnMSwgSlNDZWxsKiBjZWxsKQogICAgIHsKLSAgICAgICAgbV9qaXQuc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCkpOworICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0
cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgY2VsbCkpOwogICAgICAgICByZXR1cm4gYXBw
ZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRUljZiBvcGVyYXRpb24sIEdQ
UlJlZyByZXN1bHQsIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lKQpAQCAtMTA2Nyw0
NiArMTEyNCw0NiBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGlubGluZUNhbGxGcmFtZSkpOwogICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQotICAgIEpJVENv
bXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRVN0IG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgSklUQ29tcGlsZXI6OkNh
bGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FU3Qgb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOwog
ICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAg
ICAgfQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3Bl
cmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdEpzY1N5bXRhYkogb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHNjb3BlLCBTeW1ib2xUYWJsZSogdGFi
bGUsIFRydXN0ZWRJbW02NCBpbml0aWFsVmFsdWUpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FU3RKc2NTeW10YWJKIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIEdQUlJlZyBzY29wZSwgU3lt
Ym9sVGFibGUqIHRhYmxlLCBUcnVzdGVkSW1tNjQgaW5pdGlhbFZhbHVlKQogICAgIHsKLSAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0
dXJlKSwgc2NvcGUsIFRydXN0ZWRJbW1QdHIodGFibGUpLCBpbml0aWFsVmFsdWUpOworICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1
cmUpLCBzY29wZSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgdGFi
bGUpLCBpbml0aWFsVmFsdWUpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogI2Vsc2UKLSAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdEpzY1N5bXRhYkogb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHNjb3BlLCBTeW1ib2xUYWJs
ZSogdGFibGUsIFRydXN0ZWRJbW0zMiB0YWcsIFRydXN0ZWRJbW0zMiBwYXlsb2FkKQorICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRPcGVyYXRpb25fRVN0SnNjU3ltdGFi
SiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJl
LCBHUFJSZWcgc2NvcGUsIFN5bWJvbFRhYmxlKiB0YWJsZSwgVHJ1c3RlZEltbTMyIHRhZywgVHJ1
c3RlZEltbTMyIHBheWxvYWQpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBzY29wZSwgVHJ1c3RlZEltbVB0
cih0YWJsZSksIHBheWxvYWQsIHRhZyk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIHNjb3BlLCBUcnVzdGVkSW1tUHRy
Ojp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCB0YWJsZSksIHBheWxvYWQsIHRhZyk7CiAgICAg
ICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9
CiAjZW5kaWYKLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0
aW9uX0VTdFogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
dW5zaWduZWQga25vd25MZW5ndGgpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlv
bihDX0pJVE9wZXJhdGlvbl9FU3RaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgUmVnaXN0ZXJl
ZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGtub3duTGVuZ3RoKQogICAgIHsKICAgICAg
ICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0
dXJlKSwgVHJ1c3RlZEltbTMyKGtub3duTGVuZ3RoKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FU3RaWiBvcGVyYXRpb24sIEdQUlJl
ZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBrbm93bkxlbmd0aCwgdW5z
aWduZWQgbWluQ2FwYWNpdHkpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihD
X0pJVE9wZXJhdGlvbl9FU3RaWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFJlZ2lzdGVyZWRT
dHJ1Y3R1cmUgc3RydWN0dXJlLCB1bnNpZ25lZCBrbm93bkxlbmd0aCwgdW5zaWduZWQgbWluQ2Fw
YWNpdHkpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tMzIoa25vd25MZW5ndGgpLCBUcnVz
dGVkSW1tMzIobWluQ2FwYWNpdHkpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1
bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdFogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIGxlbmd0aCkKKyAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdFogb3BlcmF0aW9uLCBHUFJSZWcgcmVz
dWx0LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgR1BSUmVnIGxlbmd0aCkKICAgICB7
CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRy
KHN0cnVjdHVyZSksIGxlbmd0aCk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9w
ZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FU3RaWiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBHUFJSZWcgbGVuZ3RoLCB1bnNpZ25lZCBtaW5DYXBhY2l0eSkK
KyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VTdFpa
IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUs
IEdQUlJlZyBsZW5ndGgsIHVuc2lnbmVkIG1pbkNhcGFjaXR5KQogICAgIHsKICAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwg
bGVuZ3RoLCBUcnVzdGVkSW1tMzIobWluQ2FwYWNpdHkpKTsKICAgICAgICAgcmV0dXJuIGFwcGVu
ZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KLSAgICBKSVRDb21waWxl
cjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKc3NTdCBvcGVyYXRpb24sIEdQ
UlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKENfSklUT3BlcmF0aW9uX0VKc3NTdCBvcGVyYXRp
b24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVj
dHVyZSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CkBAIC0xMTQwLDEzICsxMTk3LDEzIEBAIHB1
YmxpYzoKIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oU19KSVRPcGVyYXRp
b25fRUdDIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgR1BSUmVnIGFyZzIpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihnbG9iYWxPYmplY3QpLCBhcmcyKTsKKyAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2lu
dGVyKG1faml0LmdyYXBoKCksIGdsb2JhbE9iamVjdCksIGFyZzIpOwogICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogCiAgICAgSklU
Q29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FR0Mgb3BlcmF0aW9u
LCBHUFJSZWcgcmVzdWx0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBHUFJSZWcgYXJn
MikKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVz
dGVkSW1tUHRyKGdsb2JhbE9iamVjdCksIGFyZzIpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgo
KSwgZ2xvYmFsT2JqZWN0KSwgYXJnMik7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKQEAgLTExNzAsNyArMTIyNyw3IEBAIHB1
YmxpYzoKIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9KSVRPcGVyYXRp
b25fRUMgb3BlcmF0aW9uLCBKU0NlbGwqIGFyZzEpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihhcmcxKSk7CisgICAgICAgIG1f
aml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRl
cihtX2ppdC5ncmFwaCgpLCBhcmcxKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJh
dGlvbik7CiAgICAgfQogCkBAIC0xMTk3LDEyICsxMjU0LDEyIEBAIHB1YmxpYzoKICAgICB9CiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihWX0pJVE9wZXJhdGlvbl9FQ0Mgb3Bl
cmF0aW9uLCBHUFJSZWcgYXJnMSwgSlNDZWxsKiBhcmcyKQogICAgIHsKLSAgICAgICAgbV9qaXQu
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoYXJnMikpOwor
ICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZElt
bVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgYXJnMikpOwogICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxs
T3BlcmF0aW9uKFZfSklUT3BlcmF0aW9uX0VDQyBvcGVyYXRpb24sIEpTQ2VsbCogYXJnMSwgR1BS
UmVnIGFyZzIpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoVHJ1c3RlZEltbVB0cihhcmcxKSwgYXJnMik7CisgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgp
LCBhcmcxKSwgYXJnMik7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsKG9wZXJhdGlvbik7CiAg
ICAgfQogCkBAIC0xMjczLDEzICsxMzMwLDEzIEBAIHB1YmxpYzoKIAogICAgIEpJVENvbXBpbGVy
OjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0Mgb3BlcmF0aW9uLCBHUFJS
ZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgSlNDZWxsKiBjZWxsKQogICAgIHsKLSAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoY2VsbCkp
OworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgY2VsbCkpOwogICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAgIAog
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpzY0NK
IG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEpTQ2VsbCogY2VsbCwgR1BS
UmVnIGFyZzIpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSwgYXJnMik7CisgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlciht
X2ppdC5ncmFwaCgpLCBjZWxsKSwgYXJnMik7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0
UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKQEAgLTE0NzQsNyArMTUzMSw3IEBA
IHB1YmxpYzoKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJ
VE9wZXJhdGlvbl9FQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEpTQ2VsbCogY2VsbCkKICAg
ICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
UHRyKGNlbGwpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRy
dXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGNlbGwpKTsKICAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KICAg
ICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VDWiBvcGVy
YXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKQEAgLTE1NDQs
NyArMTYwMSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQo
b3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0KIAotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxP
cGVyYXRpb24oUF9KSVRPcGVyYXRpb25fRVN0SiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBHUFJSZWcgYXJnMikKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBj
YWxsT3BlcmF0aW9uKFBfSklUT3BlcmF0aW9uX0VTdEogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
LCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgR1BSUmVnIGFyZzIpCiAgICAgewogICAg
ICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1
Y3R1cmUpLCBhcmcyKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHQpOwpAQCAtMTU1Miw3ICsxNjA5LDcgQEAgcHVibGljOgogCiAgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0pJVE9wZXJhdGlvbl9FR0ogb3BlcmF0aW9uLCBH
UFJSZWcgcmVzdWx0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBHUFJSZWcgYXJnMSkK
ICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVk
SW1tUHRyKGdsb2JhbE9iamVjdCksIGFyZzEpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwg
Z2xvYmFsT2JqZWN0KSwgYXJnMSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0
KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CiAKQEAgLTE5MDAsNyArMTk1Nyw3IEBAIHB1Ymxp
YzoKICAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihEX0pJVE9wZXJh
dGlvbl9HIG9wZXJhdGlvbiwgRlBSUmVnIHJlc3VsdCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzKFRydXN0ZWRJbW1QdHIo
Z2xvYmFsT2JqZWN0KSk7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzKFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGdsb2JhbE9iamVjdCkpOwogICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQogICAg
IEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oWl9KSVRPcGVyYXRpb25fRCBvcGVyYXRp
b24sIEdQUlJlZyByZXN1bHQsIEZQUlJlZyBhcmcxKQpAQCAtMjAwOSw3ICsyMDY2LDcgQEAgcHVi
bGljOgogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlv
bl9FQyBvcGVyYXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdCwgSlNDZWxsKiBjZWxsKQogICAgIHsK
LSAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIo
Y2VsbCkpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgoKSwgY2VsbCkpOwogICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdC5wYXlsb2FkR1BSKCksIHJl
c3VsdC50YWdHUFIoKSk7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oSl9KSVRPcGVyYXRpb25fRUNaIG9wZXJhdGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJS
ZWcgYXJnMSwgR1BSUmVnIGFyZzIpCkBAIC0yMDE5LDEyICsyMDc2LDEyIEBAIHB1YmxpYzoKICAg
ICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9F
SnNjQyBvcGVyYXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEpTQ2VsbCog
Y2VsbCkKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBUcnVzdGVkSW1tUHRyKGNlbGwpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBo
KCksIGNlbGwpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9u
LCByZXN1bHQucGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCkpOwogICAgIH0KICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKc2NDSiBvcGVyYXRp
b24sIEdQUlJlZyByZXN1bHQsIEdQUlJlZyBhcmcxLCBKU0NlbGwqIGNlbGwsIEpTVmFsdWVSZWdz
IGFyZzIpCiAgICAgewotICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgVHJ1c3RlZEltbVB0cihjZWxsKSwgRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMi5wYXls
b2FkR1BSKCksIGFyZzIudGFnR1BSKCkpOworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9qaXQuZ3JhcGgo
KSwgY2VsbCksIEVBQklfMzJCSVRfRFVNTVlfQVJHIGFyZzIucGF5bG9hZEdQUigpLCBhcmcyLnRh
Z0dQUigpKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklU
T3BlcmF0aW9uX0VHUmVvSiBvcGVyYXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyLCBKU1ZhbHVlUmVncyBhcmczKQpAQCAtMjEwOSw3ICsyMTY2LDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CiAgICAgfQogCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0pJ
VE9wZXJhdGlvbl9FU3RKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEpTVmFsdWVSZWdzIGFyZzIpCisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJh
dGlvbihQX0pJVE9wZXJhdGlvbl9FU3RKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgUmVnaXN0
ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUsIEpTVmFsdWVSZWdzIGFyZzIpCiAgICAgewogICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1
cmUpLCBhcmcyLnBheWxvYWRHUFIoKSwgYXJnMi50YWdHUFIoKSk7CiAgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKQEAgLTIxMTcsNyArMjE3NCw3
IEBAIHB1YmxpYzoKIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19KSVRP
cGVyYXRpb25fRUdKIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZVJlZ3MgYXJnMSkKICAgICB7Ci0gICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKGdsb2JhbE9iamVjdCksIGFyZzEu
cGF5bG9hZEdQUigpLCBhcmcxLnRhZ0dQUigpKTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCks
IGdsb2JhbE9iamVjdCksIGFyZzEucGF5bG9hZEdQUigpLCBhcmcxLnRhZ0dQUigpKTsKICAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOwogICAgIH0K
IApAQCAtMjY2Nyw3ICsyNzI0LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZVB1dEJ5VmFs
Rm9ySW50VHlwZWRBcnJheShHUFJSZWcgYmFzZSwgR1BSUmVnIHByb3BlcnR5LCBOb2RlKiwgVHlw
ZWRBcnJheVR5cGUpOwogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsT25GbG9hdFR5cGVkQXJyYXko
Tm9kZSosIFR5cGVkQXJyYXlUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckZsb2F0
VHlwZWRBcnJheShHUFJSZWcgYmFzZSwgR1BSUmVnIHByb3BlcnR5LCBOb2RlKiwgVHlwZWRBcnJh
eVR5cGUpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGU+IHZvaWQgY29tcGlsZU5l
d0Z1bmN0aW9uQ29tbW9uKEdQUlJlZywgU3RydWN0dXJlKiwgR1BSUmVnLCBHUFJSZWcsIEdQUlJl
ZywgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0Jiwgc2l6ZV90LCBGdW5jdGlvbkV4ZWN1dGFibGUq
LCBwdHJkaWZmX3QsIHB0cmRpZmZfdCwgcHRyZGlmZl90KTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgQ2xhc3NUeXBlPiB2b2lkIGNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcsIFJlZ2lz
dGVyZWRTdHJ1Y3R1cmUsIEdQUlJlZywgR1BSUmVnLCBHUFJSZWcsIE1hY3JvQXNzZW1ibGVyOjpK
dW1wTGlzdCYsIHNpemVfdCwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgcHRyZGlmZl90LCBwdHJkaWZm
X3QsIHB0cmRpZmZfdCk7CiAgICAgdm9pZCBjb21waWxlTmV3RnVuY3Rpb24oTm9kZSopOwogICAg
IHZvaWQgY29tcGlsZVNldEZ1bmN0aW9uTmFtZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlRm9y
d2FyZFZhcmFyZ3MoTm9kZSopOwpAQCAtMjc1MywxMyArMjgxMCwxMyBAQCBwdWJsaWM6CiAgICAg
fQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2xhc3NUeXBlPgotICAgIHZvaWQgZW1pdEFsbG9j
YXRlRGVzdHJ1Y3RpYmxlT2JqZWN0KEdQUlJlZyByZXN1bHRHUFIsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCAKKyAgICB2b2lkIGVtaXRBbGxvY2F0ZURlc3RydWN0aWJsZU9iamVjdChHUFJSZWcgcmVz
dWx0R1BSLCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgCiAgICAgICAgIEdQUlJlZyBz
Y3JhdGNoR1BSMSwgR1BSUmVnIHNjcmF0Y2hHUFIyLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qm
IHNsb3dQYXRoKQogICAgIHsKLSAgICAgICAgbV9qaXQuZW1pdEFsbG9jYXRlRGVzdHJ1Y3RpYmxl
T2JqZWN0PENsYXNzVHlwZT4ocmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIHNjcmF0Y2hHUFIxLCBzY3Jh
dGNoR1BSMiwgc2xvd1BhdGgpOworICAgICAgICBtX2ppdC5lbWl0QWxsb2NhdGVEZXN0cnVjdGli
bGVPYmplY3Q8Q2xhc3NUeXBlPihyZXN1bHRHUFIsIHN0cnVjdHVyZS5nZXQoKSwgc2NyYXRjaEdQ
UjEsIHNjcmF0Y2hHUFIyLCBzbG93UGF0aCk7CiAgICAgfQogCi0gICAgdm9pZCBlbWl0QWxsb2Nh
dGVSYXdPYmplY3QoR1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlKiwgR1BSUmVnIHN0b3JhZ2VH
UFIsIHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpOworICAgIHZv
aWQgZW1pdEFsbG9jYXRlUmF3T2JqZWN0KEdQUlJlZyByZXN1bHRHUFIsIFJlZ2lzdGVyZWRTdHJ1
Y3R1cmUsIEdQUlJlZyBzdG9yYWdlR1BSLCB1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQg
dmVjdG9yTGVuZ3RoKTsKICAgICAKICAgICB2b2lkIGVtaXRHZXRMZW5ndGgoSW5saW5lQ2FsbEZy
YW1lKiwgR1BSUmVnIGxlbmd0aEdQUiwgYm9vbCBpbmNsdWRlVGhpcyA9IGZhbHNlKTsKICAgICB2
b2lkIGVtaXRHZXRMZW5ndGgoQ29kZU9yaWdpbiwgR1BSUmVnIGxlbmd0aEdQUiwgYm9vbCBpbmNs
dWRlVGhpcyA9IGZhbHNlKTsKQEAgLTM3NzQsMTMgKzM4MzEsMTMgQEAgcHJpdmF0ZToKIHRlbXBs
YXRlPHR5cGVuYW1lIFN0cnVjdHVyZUxvY2F0aW9uVHlwZT4KIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OnNwZWN1bGF0ZVN0cmluZ09iamVjdEZvclN0cnVjdHVyZShFZGdlIGVkZ2UsIFN0cnVjdHVyZUxv
Y2F0aW9uVHlwZSBzdHJ1Y3R1cmVMb2NhdGlvbikKIHsKLSAgICBTdHJ1Y3R1cmUqIHN0cmluZ09i
amVjdFN0cnVjdHVyZSA9Ci0gICAgICAgIG1faml0Lmdsb2JhbE9iamVjdEZvcihtX2N1cnJlbnRO
b2RlLT5vcmlnaW4uc2VtYW50aWMpLT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKTsKKyAgICBSZWdp
c3RlcmVkU3RydWN0dXJlIHN0cmluZ09iamVjdFN0cnVjdHVyZSA9CisgICAgICAgIG1faml0Lmdy
YXBoKCkucmVnaXN0ZXJTdHJ1Y3R1cmUobV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG1fY3VycmVudE5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyktPnN0cmluZ09iamVjdFN0cnVjdHVyZSgpKTsKICAgICAKLSAg
ICBpZiAoIW1fc3RhdGUuZm9yTm9kZShlZGdlKS5tX3N0cnVjdHVyZS5pc1N1YnNldE9mKFN0cnVj
dHVyZVNldChzdHJpbmdPYmplY3RTdHJ1Y3R1cmUpKSkgeworICAgIGlmICghbV9zdGF0ZS5mb3JO
b2RlKGVkZ2UpLm1fc3RydWN0dXJlLmlzU3Vic2V0T2YoUmVnaXN0ZXJlZFN0cnVjdHVyZVNldChz
dHJpbmdPYmplY3RTdHJ1Y3R1cmUpKSkgewogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAg
ICAgICAgICAgTm90U3RyaW5nT2JqZWN0LCBKU1ZhbHVlUmVncygpLCAwLAotICAgICAgICAgICAg
bV9qaXQuYnJhbmNoU3RydWN0dXJlKAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoV2Vha1N0cnVj
dHVyZSgKICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsIHN0cnVjdHVyZUxv
Y2F0aW9uLCBzdHJpbmdPYmplY3RTdHJ1Y3R1cmUpKTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFz
ZS5jcHAJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0MCw3ICs1NDAs
NyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICBpZiAobV9ub2RlLT5vcCgpID09IFJlZ0V4cEV4
ZWMpIHsKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgICAg
IFN0cnVjdHVyZVNldCogc3RydWN0dXJlU2V0ID0gbV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoc3Ry
dWN0dXJlKTsKKyAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCogc3Ry
dWN0dXJlU2V0ID0gbV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKTsKIAogICAgICAg
ICAgICAgICAgICAgICAvLyBDcmVhdGUgYW4gYXJyYXkgbW9kZWxpbmcgdGhlIEpTIGFycmF5IHRo
YXQgd2Ugd2lsbCB0cnkgdG8gYWxsb2NhdGUuIFRoaXMgaXMKICAgICAgICAgICAgICAgICAgICAg
Ly8gYmFzaWNhbGx5IGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheSBidXQgb3ZlciBDKysgc3RyaW5n
cyBpbnN0ZWFkIG9mIEpTU3RyaW5ncy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmNwcAkocmV2aXNpb24gMjEx
MjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZh
bHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCB2b2lkIFN0cnVjdHVyZUFi
c3RyYWN0VmFsdWU6OmFzc2VydElzUmVnCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBzaXplKCk7IGktLTspCi0gICAgICAgIGdyYXBoLmFzc2VydElzUmVnaXN0
ZXJlZChhdChpKSk7CisgICAgICAgIGdyYXBoLmFzc2VydElzUmVnaXN0ZXJlZChhdChpKS5nZXQo
KSk7CiB9CiAjZW5kaWYgLy8gIUFTU0VSVF9ESVNBQkxFRAogCkBAIC02Miw3ICs2Miw3IEBAIHZv
aWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6Y2xvYmJlcigpCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgCi0gICAgU3RydWN0dXJlU2V0OjpPdXRPZkxpbmVMaXN0KiBsaXN0ID0gbV9zZXQu
bGlzdCgpOworICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQ6Ok91dE9mTGluZUxpc3QqIGxpc3Qg
PSBtX3NldC5saXN0KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbGlzdC0+bV9sZW5ndGg7IGkt
LTspIHsKICAgICAgICAgaWYgKCFsaXN0LT5saXN0KClbaV0tPmRmZ1Nob3VsZFdhdGNoKCkpIHsK
ICAgICAgICAgICAgIG1ha2VUb3AoKTsKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBTdHJ1Y3R1cmVB
YnN0cmFjdFZhbHVlOjpjbG9iYmVyKCkKICAgICB9CiB9CiAKLXZvaWQgU3RydWN0dXJlQWJzdHJh
Y3RWYWx1ZTo6b2JzZXJ2ZVRyYW5zaXRpb24oU3RydWN0dXJlKiBmcm9tLCBTdHJ1Y3R1cmUqIHRv
KQordm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpvYnNlcnZlVHJhbnNpdGlvbihSZWdpc3Rl
cmVkU3RydWN0dXJlIGZyb20sIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgdG8pCiB7CiAgICAgQVNTRVJU
KCFmcm9tLT5kZmdTaG91bGRXYXRjaCgpKTsKIApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIFN0cnVj
dHVyZUFic3RyYWN0VmFsdWU6Om9ic2VydmVUcmFuCiAgICAgaWYgKGlzVG9wKCkpCiAgICAgICAg
IHJldHVybjsKICAgICAKLSAgICBTdHJ1Y3R1cmVTZXQgbmV3U3RydWN0dXJlczsKKyAgICBSZWdp
c3RlcmVkU3RydWN0dXJlU2V0IG5ld1N0cnVjdHVyZXM7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
dmVjdG9yLnNpemUoKTsgaS0tOykgewogICAgICAgICBBU1NFUlQoIXZlY3RvcltpXS5wcmV2aW91
cy0+ZGZnU2hvdWxkV2F0Y2goKSk7CiAKQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIFN0cnVjdHVy
ZUFic3RyYWN0VmFsdWU6Om9ic2VydmVUcmFuCiAgICAgICAgIG1ha2VUb3AoKTsKIH0KIAotYm9v
bCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjphZGQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitib29s
IFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmFkZChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVy
ZSkKIHsKICAgICBpZiAoaXNUb3AoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTI0LDcg
KzEyNCw3IEBAIGJvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6YWRkKFN0cnVjdHUKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjptZXJnZShjb25z
dCBTdHJ1Y3R1cmVTZXQmIG90aGVyKQorYm9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjptZXJn
ZShjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0JiBvdGhlcikKIHsKICAgICBpZiAoaXNUb3Ao
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTc1LDcgKzE3NSw3IEBAIGJvb2wgU3RydWN0
dXJlQWJzdHJhY3RWYWx1ZTo6bWVyZ2VTbG93KGMKICAgICByZXR1cm4gY2hhbmdlZDsKIH0KIAot
Ym9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjptZXJnZU5vdFRvcChjb25zdCBTdHJ1Y3R1cmVT
ZXQmIG90aGVyKQorYm9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjptZXJnZU5vdFRvcChjb25z
dCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0JiBvdGhlcikKIHsKICAgICBpZiAoIW1fc2V0Lm1lcmdl
KG90aGVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTg2LDcgKzE4Niw3IEBAIGJvb2wg
U3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6bWVyZ2VOb3RUb3AKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotdm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpmaWx0ZXIoY29uc3QgU3RydWN0dXJlU2V0
JiBvdGhlcikKK3ZvaWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyKGNvbnN0IFJlZ2lz
dGVyZWRTdHJ1Y3R1cmVTZXQmIG90aGVyKQogewogICAgIGlmIChpc1RvcCgpKSB7CiAgICAgICAg
IG1fc2V0ID0gb3RoZXI7CkBAIC0yMjksNyArMjI5LDcgQEAgdm9pZCBTdHJ1Y3R1cmVBYnN0cmFj
dFZhbHVlOjpmaWx0ZXIoY29ucwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICAg
ICAgaWYgKCFpc0Nsb2JiZXJlZCgpKSB7Ci0gICAgICAgICAgICAvLyBTZWUganVzdGlmaWNhdGlv
biBpbiBmaWx0ZXIoY29uc3QgU3RydWN0dXJlU2V0JiksIGFib3ZlLiBBbiB1bmNsb2JiZXJlZCBz
ZXQgaXMKKyAgICAgICAgICAgIC8vIFNlZSBqdXN0aWZpY2F0aW9uIGluIGZpbHRlcihjb25zdCBS
ZWdpc3RlcmVkU3RydWN0dXJlU2V0JiksIGFib3ZlLiBBbiB1bmNsb2JiZXJlZCBzZXQgaXMKICAg
ICAgICAgICAgIC8vIGFsbW9zdCBhbHdheXMgYmV0dGVyLgogICAgICAgICAgICAgaWYgKG1fc2V0
LnNpemUoKSA+IG90aGVyLm1fc2V0LnNpemUoKSArIGNsb2JiZXJlZFN1cHJlbWFjeVRocmVzaG9s
ZCkKICAgICAgICAgICAgICAgICAqdGhpcyA9IG90aGVyOyAvLyBLZWVwIHRoZSBjbG9iYmVyZWQg
c2V0LgpAQCAtMjUzLDggKzI1Myw4IEBAIHZvaWQgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6Zmls
dGVyU2xvdygKICAgICBBU1NFUlQoIWlzVG9wKCkpOwogICAgIAogICAgIG1fc2V0LmdlbmVyaWNG
aWx0ZXIoCi0gICAgICAgIFsmXSAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpIHsKLSAgICAgICAgICAg
IHJldHVybiAhIShzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmUoc3RydWN0dXJlKSAmIHR5cGUpOwor
ICAgICAgICBbJl0gKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKSB7CisgICAgICAgICAg
ICByZXR1cm4gISEoc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKHN0cnVjdHVyZS5nZXQoKSkgJiB0
eXBlKTsKICAgICAgICAgfSk7CiB9CiAKQEAgLTI2MiwxMiArMjYyLDEyIEBAIHZvaWQgU3RydWN0
dXJlQWJzdHJhY3RWYWx1ZTo6ZmlsdGVyQ2xhc3MKIHsKICAgICBBU1NFUlQoIWlzVG9wKCkpOwog
ICAgIG1fc2V0LmdlbmVyaWNGaWx0ZXIoCi0gICAgICAgIFsmXSAoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpIHsKKyAgICAgICAgWyZdIChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkgewogICAg
ICAgICAgICAgcmV0dXJuIHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCktPmlzU3ViQ2xhc3NPZihjbGFz
c0luZm8pOwogICAgICAgICB9KTsKIH0KIAotYm9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpj
b250YWlucyhTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgY29uc3QKK2Jvb2wgU3RydWN0dXJlQWJzdHJh
Y3RWYWx1ZTo6Y29udGFpbnMoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIGNvbnN0CiB7
CiAgICAgaWYgKGlzSW5maW5pdGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yNzUsNyAr
Mjc1LDE1IEBAIGJvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6Y29udGFpbnMoU3QKICAgICBy
ZXR1cm4gbV9zZXQuY29udGFpbnMoc3RydWN0dXJlKTsKIH0KIAotYm9vbCBTdHJ1Y3R1cmVBYnN0
cmFjdFZhbHVlOjppc1N1YnNldE9mKGNvbnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0Citi
b29sIFN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmNvbnRhaW5zKFN0cnVjdHVyZSogc3RydWN0dXJl
KSBjb25zdAoreworICAgIGlmIChpc0luZmluaXRlKCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIAorICAgIHJldHVybiBtX3NldC50b1N0cnVjdHVyZVNldCgpLmNvbnRhaW5zKHN0cnVjdHVy
ZSk7Cit9CisKK2Jvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6aXNTdWJzZXRPZihjb25zdCBS
ZWdpc3RlcmVkU3RydWN0dXJlU2V0JiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAoaXNJbmZpbml0
ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMDQsNyArMzEyLDcgQEAgYm9vbCBTdHJ1
Y3R1cmVBYnN0cmFjdFZhbHVlOjppc1N1YnNldE9mKAogICAgIHJldHVybiBtX3NldC5pc1N1YnNl
dE9mKG90aGVyLm1fc2V0KTsKIH0KIAotYm9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjppc1N1
cGVyc2V0T2YoY29uc3QgU3RydWN0dXJlU2V0JiBvdGhlcikgY29uc3QKK2Jvb2wgU3RydWN0dXJl
QWJzdHJhY3RWYWx1ZTo6aXNTdXBlcnNldE9mKGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQm
IG90aGVyKSBjb25zdAogewogICAgIGlmIChpc0luZmluaXRlKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtMzEyLDcgKzMyMCw3IEBAIGJvb2wgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZTo6aXNT
dXBlcnNldE8KICAgICByZXR1cm4gbV9zZXQuaXNTdXBlcnNldE9mKG90aGVyKTsKIH0KIAotYm9v
bCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpvdmVybGFwcyhjb25zdCBTdHJ1Y3R1cmVTZXQmIG90
aGVyKSBjb25zdAorYm9vbCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpvdmVybGFwcyhjb25zdCBS
ZWdpc3RlcmVkU3RydWN0dXJlU2V0JiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAoaXNJbmZpbml0
ZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTMzNCw3ICszNDIsNyBAQCBib29sIFN0cnVj
dHVyZUFic3RyYWN0VmFsdWU6OmlzU3ViQ2xhc3NPCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIC8vIE5vdGUgdGFodCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBpZiB0aGUgc3RydWN0
dXJlIHNldCBpcyBlbXB0eS4KLSAgICBmb3IgKGNvbnN0IFN0cnVjdHVyZSogc3RydWN0dXJlIDog
bV9zZXQpIHsKKyAgICBmb3IgKGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlIDog
bV9zZXQpIHsKICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5pc1N1YkNsYXNz
T2YoY2xhc3NJbmZvKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0zNTks
NyArMzY3LDcgQEAgdm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpkdW1wSW5Db250ZQogICAg
IGlmIChpc1RvcCgpKQogICAgICAgICBvdXQucHJpbnQoIlRPUCIpOwogICAgIGVsc2UKLSAgICAg
ICAgb3V0LnByaW50KGluQ29udGV4dChtX3NldCwgY29udGV4dCkpOworICAgICAgICBvdXQucHJp
bnQoaW5Db250ZXh0KG1fc2V0LnRvU3RydWN0dXJlU2V0KCksIGNvbnRleHQpKTsKIH0KIAogdm9p
ZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZUFi
c3RyYWN0VmFsdWUuaAkocmV2aXNpb24gMjExMjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEw
ICsyNywxMSBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKKyNpbmNsdWRlICJERkdSZWdpc3Rl
cmVkU3RydWN0dXJlU2V0LmgiCiAjaW5jbHVkZSAiREZHVHJhbnNpdGlvbi5oIgorI2luY2x1ZGUg
IkR1bXBDb250ZXh0LmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiU3BlY3VsYXRl
ZFR5cGUuaCIKLSNpbmNsdWRlICJEdW1wQ29udGV4dC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVNl
dC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQyLDEyICs0MywxMiBAQCBuYW1lc3BhY2UgREZH
IHsKIGNsYXNzIFN0cnVjdHVyZUFic3RyYWN0VmFsdWUgewogcHVibGljOgogICAgIFN0cnVjdHVy
ZUFic3RyYWN0VmFsdWUoKSB7IH0KLSAgICBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlKFN0cnVjdHVy
ZSogc3RydWN0dXJlKQotICAgICAgICA6IG1fc2V0KFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpKQor
ICAgIFN0cnVjdHVyZUFic3RyYWN0VmFsdWUoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUp
CisgICAgICAgIDogbV9zZXQoc3RydWN0dXJlKQogICAgIHsKICAgICAgICAgc2V0Q2xvYmJlcmVk
KGZhbHNlKTsKICAgICB9Ci0gICAgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZShjb25zdCBTdHJ1Y3R1
cmVTZXQmIG90aGVyKQorICAgIFN0cnVjdHVyZUFic3RyYWN0VmFsdWUoY29uc3QgUmVnaXN0ZXJl
ZFN0cnVjdHVyZVNldCYgb3RoZXIpCiAgICAgICAgIDogbV9zZXQob3RoZXIpCiAgICAgewogICAg
ICAgICBzZXRDbG9iYmVyZWQoZmFsc2UpOwpAQCAtNTgsMTMgKzU5LDEzIEBAIHB1YmxpYzoKICAg
ICAgICAgc2V0Q2xvYmJlcmVkKG90aGVyLmlzQ2xvYmJlcmVkKCkpOwogICAgIH0KICAgICAKLSAg
ICBBTFdBWVNfSU5MSU5FIFN0cnVjdHVyZUFic3RyYWN0VmFsdWUmIG9wZXJhdG9yPShTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKKyAgICBBTFdBWVNfSU5MSU5FIFN0cnVjdHVyZUFic3RyYWN0VmFsdWUm
IG9wZXJhdG9yPShSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAg
IG1fc2V0ID0gU3RydWN0dXJlU2V0KHN0cnVjdHVyZSk7CisgICAgICAgIG1fc2V0ID0gUmVnaXN0
ZXJlZFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpOwogICAgICAgICBzZXRDbG9iYmVyZWQoZmFsc2Up
OwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQotICAgIEFMV0FZU19JTkxJTkUgU3RydWN0
dXJlQWJzdHJhY3RWYWx1ZSYgb3BlcmF0b3I9KGNvbnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpCisg
ICAgQUxXQVlTX0lOTElORSBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvcGVyYXRvcj0oY29uc3Qg
UmVnaXN0ZXJlZFN0cnVjdHVyZVNldCYgb3RoZXIpCiAgICAgewogICAgICAgICBtX3NldCA9IG90
aGVyOwogICAgICAgICBzZXRDbG9iYmVyZWQoZmFsc2UpOwpAQCAtOTgsNyArOTksNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBjbG9iYmVyKCk7CiAgICAgdm9pZCBvYnNlcnZlSW52YWxpZGF0aW9uUG9p
bnQoKSB7IHNldENsb2JiZXJlZChmYWxzZSk7IH0KICAgICAKLSAgICB2b2lkIG9ic2VydmVUcmFu
c2l0aW9uKFN0cnVjdHVyZSogZnJvbSwgU3RydWN0dXJlKiB0byk7CisgICAgdm9pZCBvYnNlcnZl
VHJhbnNpdGlvbihSZWdpc3RlcmVkU3RydWN0dXJlIGZyb20sIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUg
dG8pOwogICAgIHZvaWQgb2JzZXJ2ZVRyYW5zaXRpb25zKGNvbnN0IFRyYW5zaXRpb25WZWN0b3Im
KTsKICAgICAKICAgICBzdGF0aWMgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSB0b3AoKQpAQCAtMTMx
LDkgKzEzMiw5IEBAIHB1YmxpYzoKICAgICAvLyBBbiBpbmZpbml0ZSBzdHJ1Y3R1cmUgYWJzdHJh
Y3QgdmFsdWUgbWF5IGN1cnJlbnRseSBoYXZlIGFueSBzdHJ1Y3R1cmUuCiAgICAgYm9vbCBpc0lu
ZmluaXRlKCkgY29uc3QgeyByZXR1cm4gIWlzRmluaXRlKCk7IH0KICAgICAKLSAgICBib29sIGFk
ZChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSk7CisgICAgYm9vbCBhZGQoUmVnaXN0ZXJlZFN0cnVjdHVy
ZSk7CiAgICAgCi0gICAgYm9vbCBtZXJnZShjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKTsKKyAg
ICBib29sIG1lcmdlKGNvbnN0IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQmIG90aGVyKTsKICAgICAK
ICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgbWVyZ2UoY29uc3QgU3RydWN0dXJlQWJzdHJhY3RWYWx1
ZSYgb3RoZXIpCiAgICAgewpAQCAtMTUxLDcgKzE1Miw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIG1lcmdlU2xvdyhvdGhlcik7CiAgICAgfQogICAgIAotICAgIHZvaWQgZmlsdGVyKGNvbnN0
IFN0cnVjdHVyZVNldCYgb3RoZXIpOworICAgIHZvaWQgZmlsdGVyKGNvbnN0IFJlZ2lzdGVyZWRT
dHJ1Y3R1cmVTZXQmIG90aGVyKTsKICAgICB2b2lkIGZpbHRlcihjb25zdCBTdHJ1Y3R1cmVBYnN0
cmFjdFZhbHVlJiBvdGhlcik7CiAgICAgCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGZpbHRlcihT
cGVjdWxhdGVkVHlwZSB0eXBlKQpAQCAtMTc4LDExICsxNzksMTcgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gZXF1YWxzU2xvdyhvdGhlcik7CiAgICAgfQogICAgIAotICAgIGNvbnN0IFN0cnVj
dHVyZVNldCYgc2V0KCkgY29uc3QKKyAgICBjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0JiBz
ZXQoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKCFpc1RvcCgpKTsKICAgICAgICAgcmV0
dXJuIG1fc2V0OwogICAgIH0KKworICAgIFN0cnVjdHVyZVNldCB0b1N0cnVjdHVyZVNldCgpIGNv
bnN0CisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0Zpbml0ZSgpKTsKKyAgICAgICAg
cmV0dXJuIG1fc2V0LnRvU3RydWN0dXJlU2V0KCk7CisgICAgfQogICAgIAogICAgIHNpemVfdCBz
aXplKCkgY29uc3QKICAgICB7CkBAIC0xOTAsMjEgKzE5NywyMSBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBtX3NldC5zaXplKCk7CiAgICAgfQogICAgIAotICAgIFN0cnVjdHVyZSogYXQoc2l6
ZV90IGkpIGNvbnN0CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBhdChzaXplX3QgaSkgY29uc3QK
ICAgICB7CiAgICAgICAgIEFTU0VSVCghaXNUb3AoKSk7CiAgICAgICAgIHJldHVybiBtX3NldC5h
dChpKTsKICAgICB9CiAgICAgCi0gICAgU3RydWN0dXJlKiBvcGVyYXRvcltdKHNpemVfdCBpKSBj
b25zdCB7IHJldHVybiBhdChpKTsgfQorICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgb3BlcmF0b3Jb
XShzaXplX3QgaSkgY29uc3QgeyByZXR1cm4gYXQoaSk7IH0KIAogICAgIC8vIEluIG1vc3QgY2Fz
ZXMsIHdoYXQgeW91IHJlYWxseSB3YW50IHRvIGRvIGlzIHZlcmlmeSB3aGV0aGVyIHRoZSBzZXQg
aXMgdG9wIG9yIGNsb2JiZXJlZCwgYW5kCiAgICAgLy8gaWYgbm90LCBlbnVtZXJhdGUgdGhlIHNl
dCBvZiBzdHJ1Y3R1cmVzLiBVc2UgdGhpcyBvbmx5IGluIGNhc2VzIHdoZXJlIHRoZSBzaW5nbGV0
b24gY2FzZSBpcwogICAgIC8vIG1lYW5pbmdmdWxseSBzcGVjaWFsLCBsaWtlIGZvciB0cmFuc2l0
aW9ucy4KLSAgICBTdHJ1Y3R1cmUqIG9ubHlTdHJ1Y3R1cmUoKSBjb25zdAorICAgIFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmUgb25seVN0cnVjdHVyZSgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoaXNJ
bmZpbml0ZSgpKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgICAgICByZXR1
cm4gUmVnaXN0ZXJlZFN0cnVjdHVyZSgpOwogICAgICAgICByZXR1cm4gbV9zZXQub25seVN0cnVj
dHVyZSgpOwogICAgIH0KIApAQCAtMjI0LDE4ICsyMzEsMTkgQEAgcHVibGljOgogICAgIC8vIG9w
dGltaXphdGlvbnMgYXMgYSBjb25zZXF1ZW5jZSBvZiB0aGUgInRoaXMgaXMgc21hbGxlciIgcmV0
dXJuIHZhbHVlIC0gc28gZmFsc2UgZm9yCiAgICAgLy8gY29udGFpbnMoKSwgdHJ1ZSBmb3IgaXNT
dWJzZXRPZigpLCBmYWxzZSBmb3IgaXNTdXBlcnNldE9mKCksIGFuZCBmYWxzZSBmb3Igb3Zlcmxh
cHMoKS4KIAorICAgIGJvb2wgY29udGFpbnMoUmVnaXN0ZXJlZFN0cnVjdHVyZSkgY29uc3Q7CiAg
ICAgYm9vbCBjb250YWlucyhTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkgY29uc3Q7CiAgICAgCi0gICAg
Ym9vbCBpc1N1YnNldE9mKGNvbnN0IFN0cnVjdHVyZVNldCYgb3RoZXIpIGNvbnN0OworICAgIGJv
b2wgaXNTdWJzZXRPZihjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0JiBvdGhlcikgY29uc3Q7
CiAgICAgYm9vbCBpc1N1YnNldE9mKGNvbnN0IFN0cnVjdHVyZUFic3RyYWN0VmFsdWUmIG90aGVy
KSBjb25zdDsKICAgICAKLSAgICBib29sIGlzU3VwZXJzZXRPZihjb25zdCBTdHJ1Y3R1cmVTZXQm
IG90aGVyKSBjb25zdDsKKyAgICBib29sIGlzU3VwZXJzZXRPZihjb25zdCBSZWdpc3RlcmVkU3Ry
dWN0dXJlU2V0JiBvdGhlcikgY29uc3Q7CiAgICAgYm9vbCBpc1N1cGVyc2V0T2YoY29uc3QgU3Ry
dWN0dXJlQWJzdHJhY3RWYWx1ZSYgb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4g
b3RoZXIuaXNTdWJzZXRPZigqdGhpcyk7CiAgICAgfQogICAgIAotICAgIGJvb2wgb3ZlcmxhcHMo
Y29uc3QgU3RydWN0dXJlU2V0JiBvdGhlcikgY29uc3Q7CisgICAgYm9vbCBvdmVybGFwcyhjb25z
dCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0JiBvdGhlcikgY29uc3Q7CiAgICAgYm9vbCBvdmVybGFw
cyhjb25zdCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcikgY29uc3Q7CiAKICAgICBib29s
IGlzU3ViQ2xhc3NPZihjb25zdCBDbGFzc0luZm8qKSBjb25zdDsKQEAgLTI0Myw4ICsyNTEsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCB2YWxpZGF0ZVJlZmVyZW5jZXMoY29uc3QgVHJhY2tlZFJlZmVy
ZW5jZXMmKSBjb25zdDsKICAgICAKIHByaXZhdGU6Ci0gICAgc3RhdGljIGNvbnN0IHVpbnRwdHJf
dCBjbG9iYmVyZWRGbGFnID0gU3RydWN0dXJlU2V0OjpyZXNlcnZlZEZsYWc7Ci0gICAgc3RhdGlj
IGNvbnN0IHVpbnRwdHJfdCB0b3BWYWx1ZSA9IFN0cnVjdHVyZVNldDo6cmVzZXJ2ZWRWYWx1ZTsK
KyAgICBzdGF0aWMgY29uc3QgdWludHB0cl90IGNsb2JiZXJlZEZsYWcgPSBSZWdpc3RlcmVkU3Ry
dWN0dXJlU2V0OjpyZXNlcnZlZEZsYWc7CisgICAgc3RhdGljIGNvbnN0IHVpbnRwdHJfdCB0b3BW
YWx1ZSA9IFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQ6OnJlc2VydmVkVmFsdWU7CiAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIHBvbHltb3JwaGlzbUxpbWl0ID0gMTA7CiAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIGNsb2JiZXJlZFN1cHJlbWFjeVRocmVzaG9sZCA9IDI7CiAgICAgCkBAIC0yNjAs
NyArMjY4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9zZXQubV9wb2ludGVyID0gdG9wVmFsdWU7
CiAgICAgfQogICAgIAotICAgIGJvb2wgbWVyZ2VOb3RUb3AoY29uc3QgU3RydWN0dXJlU2V0JiBv
dGhlcik7CisgICAgYm9vbCBtZXJnZU5vdFRvcChjb25zdCBSZWdpc3RlcmVkU3RydWN0dXJlU2V0
JiBvdGhlcik7CiAgICAgCiAgICAgdm9pZCBzZXRDbG9iYmVyZWQoYm9vbCBjbG9iYmVyZWQpCiAg
ICAgewpAQCAtMjY4LDcgKzI3Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fc2V0LnNldFJlc2Vy
dmVkRmxhZyhjbG9iYmVyZWQpOwogICAgIH0KICAgICAKLSAgICBTdHJ1Y3R1cmVTZXQgbV9zZXQ7
CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBtX3NldDsKIH07CiAKIH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJl
UmVnaXN0cmF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMTEyMjkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBo
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwyMjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5oIgotCi0jaWYgRU5BQkxF
KERGR19KSVQpCi0KLSNpbmNsdWRlICJERkdCYXNpY0Jsb2NrSW5saW5lcy5oIgotI2luY2x1ZGUg
IkRGR0dyYXBoLmgiCi0jaW5jbHVkZSAiREZHUGhhc2UuaCIKLSNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCi0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLQotY2xhc3MgU3RydWN0dXJl
UmVnaXN0cmF0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewotcHVibGljOgotICAgIFN0cnVjdHVy
ZVJlZ2lzdHJhdGlvblBoYXNlKEdyYXBoJiBncmFwaCkKLSAgICAgICAgOiBQaGFzZShncmFwaCwg
InN0cnVjdHVyZSByZWdpc3RyYXRpb24iKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBy
dW4oKQotICAgIHsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgcGhhc2Ugc2hvdWxkbid0IGV4aXN0
LiBXZSBzaG91bGQgaGF2ZSByZWdpc3RlcmVkIGFsbCBzdHJ1Y3R1cmVzIGJ5IG5vdywgc2luY2UK
LSAgICAgICAgLy8gd2UgbWF5IGFscmVhZHkgaGF2ZSBkb25lIG9wdGltaXphdGlvbnMgdGhhdCBy
ZWx5IG9uIHN0cnVjdHVyZXMgaGF2aW5nIGJlZW4gcmVnaXN0ZXJlZC4KLSAgICAgICAgLy8gQ3Vy
cmVudGx5LCB3ZSBzdGlsbCBoYXZlIHBsYWNlcyB3aGVyZSB3ZSBkb24ndCByZWdpc3RlciBzdHJ1
Y3R1cmVzIHByaW9yIHRvIHRoaXMgcGhhc2UsCi0gICAgICAgIC8vIGJ1dCBzdHJ1Y3R1cmVzIGRv
bid0IGVuZCB1cCBiZWluZyB1c2VkIGZvciBvcHRpbWl6YXRpb24gcHJpb3IgdG8gdGhpcyBwaGFz
ZS4gVGhhdCdzIGEKLSAgICAgICAgLy8gcHJldHR5IGZyYWdpbGUgc2l0dWF0aW9uIGFuZCB3ZSBz
aG91bGQgZml4IGl0IGV2ZW50dWFsbHkuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc4ODkKLSAgICAgICAgCi0gICAgICAgIC8vIFdlIG5lZWQg
dG8gc2V0IHRoaXMgYmVmb3JlIHRoaXMgcGhhc2UgZmluaXNoZXMuIFRoaXMgcGhhc2UgZG9lc24n
dCBkbyBhbnl0aGluZwotICAgICAgICAvLyBjb25kaXRpb25lZCBvbiB0aGlzIGZpZWxkLCBleGNl
cHQgZm9yIGFzc2VydElzUmVnaXN0ZXJlZCgpIGJlbG93LiBXZSBpbnRlbmQgZm9yIHRoYXQKLSAg
ICAgICAgLy8gbWV0aG9kIHRvIGJlaGF2ZSBhcyBpZiB0aGUgcGhhc2Ugd2FzIGFscmVhZHkgZmlu
aXNoZWQuIFNvLCB3ZSBzZXQgdGhpcyB1cCBoZXJlLgotICAgICAgICBtX2dyYXBoLm1fc3RydWN0
dXJlUmVnaXN0cmF0aW9uU3RhdGUgPSBBbGxTdHJ1Y3R1cmVzQXJlUmVnaXN0ZXJlZDsKLSAgICAg
ICAgCi0gICAgICAgIC8vIFRoZXNlIGFyZSBwcmV0dHkgZHVtYiwgYnV0IG5lZWRlZCB0byBwbGFj
YXRlIHN1YnNlcXVlbnQgYXNzZXJ0aW9ucy4gV2UgZG9uJ3QgYWN0dWFsbHkKLSAgICAgICAgLy8g
aGF2ZSB0byB3YXRjaCB0aGVzZSBiZWNhdXNlIHRoZXJlIGlzIG5vIHdheSB0byB0cmFuc2l0aW9u
IGF3YXkgZnJvbSBpdCwgYnV0IHRoZXkgYXJlCi0gICAgICAgIC8vIHdhdGNoYWJsZSBhbmQgc28g
d2Ugd2lsbCBhc3NlcnQgaWYgdGhleSBhcmVuJ3Qgd2F0Y2hlZC4KLSAgICAgICAgcmVnaXN0ZXJT
dHJ1Y3R1cmUobV9ncmFwaC5tX3ZtLnN0cnVjdHVyZVN0cnVjdHVyZS5nZXQoKSk7Ci0gICAgICAg
IHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGgubV92bS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOwot
ICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLm1fdm0uc3ltYm9sU3RydWN0dXJlLmdl
dCgpKTsKLSAgICAgICAgCi0gICAgICAgIGZvciAoRnJvemVuVmFsdWUqIHZhbHVlIDogbV9ncmFw
aC5tX2Zyb3plblZhbHVlcykKLSAgICAgICAgICAgIGFzc2VydElzUmVnaXN0ZXJlZCh2YWx1ZS0+
c3RydWN0dXJlKCkpOwotICAgICAgICAKLSAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5k
ZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7Ci0gICAgICAgICAgICBC
YXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7Ci0gICAgICAgICAg
ICBpZiAoIWJsb2NrKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAKLSAgICAg
ICAgICAgIGZvciAoYXV0byogbm9kZSA6ICpibG9jaykgewotICAgICAgICAgICAgICAgIHN3aXRj
aCAobm9kZS0+b3AoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6Ci0g
ICAgICAgICAgICAgICAgICAgIGFzc2VydEFyZVJlZ2lzdGVyZWQobm9kZS0+c3RydWN0dXJlU2V0
KCkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICBjYXNlIE5ld09iamVjdDoKLSAgICAgICAgICAgICAgICBjYXNlIEFycmF5aWZ5
VG9TdHJ1Y3R1cmU6Ci0gICAgICAgICAgICAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6Ci0gICAg
ICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG5vZGUtPnN0cnVjdHVyZSgpKTsKLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgY2FzZSBQdXRTdHJ1Y3R1cmU6Ci0gICAgICAgICAgICAgICAgY2FzZSBBbGxvY2F0ZVByb3Bl
cnR5U3RvcmFnZToKLSAgICAgICAgICAgICAgICBjYXNlIFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3Jh
Z2U6Ci0gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG5vZGUtPnRyYW5zaXRp
b24oKS0+cHJldmlvdXMpOwotICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShu
b2RlLT50cmFuc2l0aW9uKCktPm5leHQpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLQot
ICAgICAgICAgICAgICAgIGNhc2UgR2V0R2V0dGVyU2V0dGVyQnlPZmZzZXQ6Ci0gICAgICAgICAg
ICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyktPmdldHRlclNldHRlclN0cnVjdHVyZSgpKTsKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICBjYXNlIE11bHRpR2V0QnlPZmZzZXQ6
Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgTXVsdGlHZXRCeU9mZnNldENhc2UmIGdl
dENhc2UgOiBub2RlLT5tdWx0aUdldEJ5T2Zmc2V0RGF0YSgpLmNhc2VzKQotICAgICAgICAgICAg
ICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmVzKGdldENhc2Uuc2V0KCkpOwotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
Y2FzZSBNdWx0aVB1dEJ5T2Zmc2V0OgotICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBub2RlLT5tdWx0aVB1dEJ5T2Zmc2V0RGF0YSgpLnZhcmlhbnRzLnNpemUoKTsgaS0tOykg
ewotICAgICAgICAgICAgICAgICAgICAgICAgUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQgPSBub2Rl
LT5tdWx0aVB1dEJ5T2Zmc2V0RGF0YSgpLnZhcmlhbnRzW2ldOwotICAgICAgICAgICAgICAgICAg
ICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmVzKHZhcmlhbnQub2xkU3RydWN0dXJlKCkpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhbnQua2luZCgpID09IFB1dEJ5SWRWYXJpYW50OjpU
cmFuc2l0aW9uKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJl
KHZhcmlhbnQubmV3U3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICBjYXNlIE5ld0FycmF5OgotICAgICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6Ci0g
ICAgICAgICAgICAgICAgY2FzZSBOZXdBcnJheVdpdGhTaXplOiB7Ci0gICAgICAgICAgICAgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0
cnVjdHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5n
QWxsb2NhdGlvbihub2RlLT5pbmRleGluZ1R5cGUoKSkpOwotICAgICAgICAgICAgICAgICAgICBy
ZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVGb3JJ
bmRleGluZ1R5cGUoQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSkpOwotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBjYXNl
IE5ld0FycmF5V2l0aFNwcmVhZDogewotICAgICAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNl
bWFudGljKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguaXNXYXRjaGluZ0hhdmlu
Z0FCYWRUaW1lV2F0Y2hwb2ludChub2RlKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8g
V2UndmUgY29tcGlsZWQgYXNzdW1pbmcgd2UncmUgbm90IGhhdmluZyBhIGJhZCB0aW1lLCBzbyB0
byBiZSBjb25zaXN0ZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyB3aXRoIEFJIHdlIG11
c3Qgc2F5IHdlIHByb2R1Y2UgYW4gb3JpZ2luYWwgYXJyYXkgYWxsb2NhdGlvbiBzdHJ1Y3R1cmUu
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3Qt
Pm9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGUoQXJyYXlXaXRoQ29udGlndW91
cykpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGlu
Z1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aENvbnRpZ3VvdXMpKTsKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgY2Fz
ZSBTcHJlYWQ6IHsKLSAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFw
aC5tX3ZtLmZpeGVkQXJyYXlTdHJ1Y3R1cmUuZ2V0KCkpOwotICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBjYXNlIENyZWF0ZVJl
c3Q6IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguaXNXYXRjaGluZ0hhdmluZ0FC
YWRUaW1lV2F0Y2hwb2ludChub2RlKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVy
ZShnbG9iYWxPYmplY3QtPnJlc3RQYXJhbWV0ZXJTdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6
Ci0gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnR5cGVkQXJyYXlTdHJ1Y3R1cmVDb25jdXJy
ZW50bHkobm9kZS0+dHlwZWRBcnJheVR5cGUoKSkpOwotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgY2FzZSBUb1N0cmluZzoK
LSAgICAgICAgICAgICAgICBjYXNlIENhbGxTdHJpbmdDb25zdHJ1Y3RvcjoKLSAgICAgICAgICAg
ICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKS0+c3RyaW5nT2JqZWN0U3RydWN0dXJlKCkpOwotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgY2Fz
ZSBDcmVhdGVBY3RpdmF0aW9uOgotICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVy
ZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hY3RpdmF0
aW9uU3RydWN0dXJlKCkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6Ci0g
ICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmRpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZSgpKTsK
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgIGNhc2UgQ3JlYXRlU2NvcGVkQXJndW1lbnRzOgotICAgICAgICAgICAgICAgICAg
ICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpLT5zY29wZWRBcmd1bWVudHNTdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgICAgY2FzZSBDcmVhdGVDbG9uZWRBcmd1bWVudHM6
Ci0gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmNsb25lZEFyZ3VtZW50c1N0cnVjdHVyZSgp
KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICBjYXNlIE5l
d1JlZ2V4cDoKLSAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+cmVnRXhwU3RydWN0dXJlKCkp
OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIE5ld0Z1
bmN0aW9uOgotICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgp
KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBOZXdH
ZW5lcmF0b3JGdW5jdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUo
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+Z2VuZXJhdG9y
RnVuY3Rpb25TdHJ1Y3R1cmUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIGNhc2UgTmV3QXN5bmNGdW5jdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgcmVn
aXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKS0+YXN5bmNGdW5jdGlvblN0cnVjdHVyZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0KLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAg
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICB2b2lkIHJlZ2lz
dGVyU3RydWN0dXJlcyhjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCkKLSAgICB7Ci0gICAgICAgIGZv
ciAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgOiBzZXQpCi0gICAgICAgICAgICByZWdpc3RlclN0cnVj
dHVyZShzdHJ1Y3R1cmUpOwotICAgIH0KLSAgICAKLSAgICB2b2lkIHJlZ2lzdGVyU3RydWN0dXJl
KFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgIHsKLSAgICAgICAgaWYgKHN0cnVjdHVyZSkKLSAg
ICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKTsKLSAgICB9Ci0K
LSAgICB2b2lkIGFzc2VydEFyZVJlZ2lzdGVyZWQoY29uc3QgU3RydWN0dXJlU2V0JiBzZXQpCi0g
ICAgewotICAgICAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogc2V0KQotICAgICAgICAg
ICAgYXNzZXJ0SXNSZWdpc3RlcmVkKHN0cnVjdHVyZSk7Ci0gICAgfQotCi0gICAgdm9pZCBhc3Nl
cnRJc1JlZ2lzdGVyZWQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgewotICAgICAgICBpZiAo
c3RydWN0dXJlKQotICAgICAgICAgICAgbV9ncmFwaC5hc3NlcnRJc1JlZ2lzdGVyZWQoc3RydWN0
dXJlKTsKLSAgICB9Ci19OwotCi1ib29sIHBlcmZvcm1TdHJ1Y3R1cmVSZWdpc3RyYXRpb24oR3Jh
cGgmIGdyYXBoKQotewotICAgIHJldHVybiBydW5QaGFzZTxTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZT4oZ3JhcGgpOwotfQotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCi0KLSNlbmRpZiAv
LyBFTkFCTEUoREZHX0pJVCkKLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuaAkocmV2aXNpb24gMjEx
MjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRp
b25QaGFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFC
TEUoREZHX0pJVCkKLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewotCi1jbGFzcyBH
cmFwaDsKLQotLy8gUmVnaXN0ZXJzIGFueSBzdHJ1Y3R1cmVzIHdlIGtub3cgYWJvdXQgYXMgd2Vh
ayByZWZlcmVuY2VzLCBhbmQgc2V0cyB3YXRjaHBvaW50cyBvbiBhbnkKLS8vIHN1Y2ggc3RydWN0
dXJlcyB0aGF0IHdlIGtub3cgb2YgdGhhdCBhcmUgY3VycmVudGx5IHdhdGNoYWJsZS4gSXQncyBz
b21ld2hhdAotLy8gY291bnRlcmludHVpdGl2ZSwgYnV0IHRoaXMgZW5kcyB1cCBiZWluZyB0aGUg
Y2xlYW5lc3QgYW5kIG1vc3QgZWZmZWN0aXZlIHdheSBvZiByZWR1Y2luZwotLy8gc3RydWN0dXJl
IGNoZWNrcyBvbiB0ZXJtaW5hbCBzdHJ1Y3R1cmVzOgotLy8KLS8vIC0gV2UgdXNlZCB0byBvbmx5
IHNldCB3YXRjaHBvaW50cyBvbiB3YXRjaGFibGUgc3RydWN0dXJlcyBpZiB3ZSBrbmV3IHRoYXQg
dGhpcyB3b3VsZAotLy8gICByZW1vdmUgYSBzdHJ1Y3R1cmUgY2hlY2suIEV4cGVyaW1lbnRzIHNo
b3cgdGhhdCBzd2l0Y2hpbmcgZnJvbSB0aGF0LCB0byBibGluZGx5Ci0vLyAgIHNldHRpbmcgd2F0
Y2hwb2ludHMgb24gYWxsIHdhdGNoYWJsZSBzdHJ1Y3R1cmVzLCB3YXMgbm90IGEgcmVncmVzc2lv
bi4KLS8vCi0vLyAtIEl0IG1ha2VzIGFic3RyYWN0IGludGVycHJldGF0aW9uIGEgd2hvbGUgbG90
IGVhc2llci4gV2UganVzdCBhc3N1bWUgdGhhdCB3YXRjaGFibGUKLS8vICAgc3RydWN0dXJlcyBh
cmUgdW5jbG9iYmVyYWJsZSB3aXRob3V0IGhhdmluZyB0byBkbyBhbnkgb3RoZXIgbG9naWMuCi0K
LWJvb2wgcGVyZm9ybVN0cnVjdHVyZVJlZ2lzdHJhdGlvbihHcmFwaCYpOwotCi19IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6REZHCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHJhbnNpdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUcmFuc2l0aW9uLmNwcAkocmV2aXNpb24gMjExMjI5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUcmFuc2l0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAKIHZvaWQgVHJhbnNpdGlvbjo6ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1w
Q29udGV4dCogY29udGV4dCkgY29uc3QKIHsKLSAgICBvdXQucHJpbnQocG9pbnRlckR1bXBJbkNv
bnRleHQocHJldmlvdXMsIGNvbnRleHQpLCAiIC0+ICIsIHBvaW50ZXJEdW1wSW5Db250ZXh0KG5l
eHQsIGNvbnRleHQpKTsKKyAgICBvdXQucHJpbnQocG9pbnRlckR1bXBJbkNvbnRleHQocHJldmlv
dXMuZ2V0KCksIGNvbnRleHQpLCAiIC0+ICIsIHBvaW50ZXJEdW1wSW5Db250ZXh0KG5leHQuZ2V0
KCksIGNvbnRleHQpKTsKIH0KIAogdm9pZCBUcmFuc2l0aW9uOjpkdW1wKFByaW50U3RyZWFtJiBv
dXQpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RyYW5zaXRpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RyYW5zaXRpb24u
aAkocmV2aXNpb24gMjExMjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUcmFu
c2l0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShE
RkdfSklUKQogCisjaW5jbHVkZSAiREZHUmVnaXN0ZXJlZFN0cnVjdHVyZS5oIgogI2luY2x1ZGUg
PHd0Zi9QcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtMzgsMTYg
KzM5LDEyIEBAIHN0cnVjdCBEdW1wQ29udGV4dDsKIG5hbWVzcGFjZSBERkcgewogCiBzdHJ1Y3Qg
VHJhbnNpdGlvbiB7Ci0gICAgU3RydWN0dXJlKiBwcmV2aW91czsKLSAgICBTdHJ1Y3R1cmUqIG5l
eHQ7CisgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBwcmV2aW91czsKKyAgICBSZWdpc3RlcmVkU3Ry
dWN0dXJlIG5leHQ7CiAgICAgCi0gICAgVHJhbnNpdGlvbigpCi0gICAgICAgIDogcHJldmlvdXMo
bnVsbHB0cikKLSAgICAgICAgLCBuZXh0KG51bGxwdHIpCi0gICAgewotICAgIH0KKyAgICBUcmFu
c2l0aW9uKCkgPSBkZWZhdWx0OwogICAgIAotICAgIFRyYW5zaXRpb24oU3RydWN0dXJlKiBwcmV2
aW91cywgU3RydWN0dXJlKiBuZXh0KQorICAgIFRyYW5zaXRpb24oUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBwcmV2aW91cywgUmVnaXN0ZXJlZFN0cnVjdHVyZSBuZXh0KQogICAgICAgICA6IHByZXZpb3Vz
KHByZXZpb3VzKQogICAgICAgICAsIG5leHQobmV4dCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5j
cHAJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHlw
ZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2NSwyMyArNDY1LDIz
IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKLSAgICB2b2lk
IG5vdGljZVN0cnVjdHVyZUNoZWNrKFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQorICAgIHZvaWQgbm90aWNlU3RydWN0dXJlQ2hlY2soVmFyaWFibGVB
Y2Nlc3NEYXRhKiB2YXJpYWJsZSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpCiAgICAg
ewotICAgICAgICBIYXNoTWFwPFZhcmlhYmxlQWNjZXNzRGF0YSosIENoZWNrRGF0YT46OkFkZFJl
c3VsdCByZXN1bHQgPSBtX21hcC5hZGQodmFyaWFibGUsIENoZWNrRGF0YShzdHJ1Y3R1cmUpKTsK
KyAgICAgICAgSGFzaE1hcDxWYXJpYWJsZUFjY2Vzc0RhdGEqLCBDaGVja0RhdGE+OjpBZGRSZXN1
bHQgcmVzdWx0ID0gbV9tYXAuYWRkKHZhcmlhYmxlLCBDaGVja0RhdGEoc3RydWN0dXJlLmdldCgp
KSk7CiAgICAgICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgaWYgKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUubV9zdHJ1Y3R1cmUgPT0gc3RydWN0
dXJlKQorICAgICAgICBpZiAocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5tX3N0cnVjdHVyZSA9PSBz
dHJ1Y3R1cmUuZ2V0KCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUubV9zdHJ1Y3R1cmUgPSAwOwogICAgIH0KICAgICAKLSAgICB2b2lkIG5vdGlj
ZVN0cnVjdHVyZUNoZWNrKFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUsIGNvbnN0IFN0cnVj
dHVyZVNldCYgc2V0KQorICAgIHZvaWQgbm90aWNlU3RydWN0dXJlQ2hlY2soVmFyaWFibGVBY2Nl
c3NEYXRhKiB2YXJpYWJsZSwgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBzZXQpCiAgICAgewogICAg
ICAgICBpZiAoc2V0LnNpemUoKSAhPSAxKSB7Ci0gICAgICAgICAgICBub3RpY2VTdHJ1Y3R1cmVD
aGVjayh2YXJpYWJsZSwgMCk7CisgICAgICAgICAgICBub3RpY2VTdHJ1Y3R1cmVDaGVjayh2YXJp
YWJsZSwgUmVnaXN0ZXJlZFN0cnVjdHVyZSgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQotICAgICAgICBub3RpY2VTdHJ1Y3R1cmVDaGVjayh2YXJpYWJsZSwgc2V0Lm9ubHlTdHJ1
Y3R1cmUoKSk7CisgICAgICAgIG5vdGljZVN0cnVjdHVyZUNoZWNrKHZhcmlhYmxlLCBzZXQuYXQo
MCkpOwogICAgIH0KIAogICAgIHZvaWQgbm90aWNlQ2hlY2tBcnJheShWYXJpYWJsZUFjY2Vzc0Rh
dGEqIHZhcmlhYmxlLCBBcnJheU1vZGUgYXJyYXlNb2RlKQpAQCAtNTAxLDIyICs1MDEsMjIgQEAg
cHJpdmF0ZToKICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5kaXNhYmxlQ2hlY2tBcnJh
eUhvaXN0aW5nKCk7CiAgICAgfQogCi0gICAgdm9pZCBub3RpY2VTdHJ1Y3R1cmVDaGVja0FjY291
bnRpbmdGb3JBcnJheU1vZGUoVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCisgICAgdm9pZCBub3RpY2VTdHJ1Y3R1cmVDaGVja0FjY291bnRpbmdGb3JB
cnJheU1vZGUoVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSwgUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBIYXNoTWFwPFZhcmlhYmxlQWNjZXNzRGF0YSos
IENoZWNrRGF0YT46Oml0ZXJhdG9yIHJlc3VsdCA9IG1fbWFwLmZpbmQodmFyaWFibGUpOwogICAg
ICAgICBpZiAocmVzdWx0ID09IG1fbWFwLmVuZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBpZiAoIXJlc3VsdC0+dmFsdWUubV9hcnJheU1vZGVIb2lzdGluZ09rYXkgfHwgIXJlc3Vs
dC0+dmFsdWUubV9hcnJheU1vZGVJc1ZhbGlkKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBpZiAocmVzdWx0LT52YWx1ZS5tX2FycmF5TW9kZS5zdHJ1Y3R1cmVXb3VsZFBhc3NBcnJheU1v
ZGVGaWx0ZXJpbmcoc3RydWN0dXJlKSkKKyAgICAgICAgaWYgKHJlc3VsdC0+dmFsdWUubV9hcnJh
eU1vZGUuc3RydWN0dXJlV291bGRQYXNzQXJyYXlNb2RlRmlsdGVyaW5nKHN0cnVjdHVyZS5nZXQo
KSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHJlc3VsdC0+dmFsdWUuZGlzYWJsZUNo
ZWNrQXJyYXlIb2lzdGluZygpOwogICAgIH0KIAotICAgIHZvaWQgbm90aWNlU3RydWN0dXJlQ2hl
Y2tBY2NvdW50aW5nRm9yQXJyYXlNb2RlKFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUsIGNv
bnN0IFN0cnVjdHVyZVNldCYgc2V0KQorICAgIHZvaWQgbm90aWNlU3RydWN0dXJlQ2hlY2tBY2Nv
dW50aW5nRm9yQXJyYXlNb2RlKFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUsIFJlZ2lzdGVy
ZWRTdHJ1Y3R1cmVTZXQgc2V0KQogICAgIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHNldC5zaXplKCk7IGkrKykKLSAgICAgICAgICAgIG5vdGljZVN0cnVjdHVyZUNoZWNrQWNj
b3VudGluZ0ZvckFycmF5TW9kZSh2YXJpYWJsZSwgc2V0W2ldKTsKKyAgICAgICAgICAgIG5vdGlj
ZVN0cnVjdHVyZUNoZWNrQWNjb3VudGluZ0ZvckFycmF5TW9kZSh2YXJpYWJsZSwgc2V0LmF0KGkp
KTsKICAgICB9CiAKICAgICBIYXNoTWFwPFZhcmlhYmxlQWNjZXNzRGF0YSosIENoZWNrRGF0YT4g
bV9tYXA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAko
cmV2aXNpb24gMjExMjI5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwOSw3ICsyMDksNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgICAgICAgICB8fCBub2RlLT5vcmlnaW4uZm9yRXhpdCAhPSBwcmV2aW91c05vZGUt
Pm9yaWdpbi5mb3JFeGl0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhbm9kZS0+aGFzU3RydWN0dXJlKCkgfHwg
ISFub2RlLT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAh
bm9kZS0+aGFzU3RydWN0dXJlKCkgfHwgISFub2RlLT5zdHJ1Y3R1cmUoKS5nZXQoKSk7CiAgICAg
ICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhbm9kZS0+aGFzQ2VsbE9wZXJhbmQoKSB8fCBu
b2RlLT5jZWxsT3BlcmFuZCgpLT52YWx1ZSgpLmlzQ2VsbCgpKTsKICAgICAgICAgICAgICAgICBW
QUxJREFURSgobm9kZSksICFub2RlLT5oYXNDZWxsT3BlcmFuZCgpIHx8ICEhbm9kZS0+Y2VsbE9w
ZXJhbmQoKS0+dmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgCkBAIC0yODUsNyArMjg1LDcgQEAg
cHVibGljOgogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6Ci0gICAgICAgICAg
ICAgICAgICAgIGZvciAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgOiBub2RlLT5zdHJ1Y3R1cmVTZXQo
KSkgeworICAgICAgICAgICAgICAgICAgICBmb3IgKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0
dXJlIDogbm9kZS0+c3RydWN0dXJlU2V0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFRoaXMgb25seSBzdXBwb3J0cyBzdHJ1Y3R1cmVzIHRoYXQgYXJlIEpTRmluYWxPYmplY3Qgb3Ig
SlNBcnJheS4KICAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChub2RlKSwKQEAgLTU2NSw3ICs1NjUsNyBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgICAgICAvLyBDUFMgZGlzYWxsb3dzIGludDMyIGFuZCBkb3VibGUgYXJyYXlz
LiBUaG9zZSByZXF1aXJlIHdlaXJkIHR5cGUgY2hlY2tzIGFuZAogICAgICAgICAgICAgICAgICAg
ICAvLyBjb252ZXJzaW9ucy4gVGhleSBhcmUgbm90IG5lZWRlZCBpbiB0aGUgREZHIHJpZ2h0IG5v
dy4gV2Ugc2hvdWxkIGFkZCBzdXBwb3J0CiAgICAgICAgICAgICAgICAgICAgIC8vIGZvciB0aGVz
ZSBpZiB0aGUgREZHIGV2ZXIgbmVlZHMgaXQuCi0gICAgICAgICAgICAgICAgICAgIGZvciAoU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgOiBub2RlLT5zdHJ1Y3R1cmVTZXQoKSkgeworICAgICAgICAgICAg
ICAgICAgICBmb3IgKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlIDogbm9kZS0+c3RydWN0
dXJlU2V0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgIWhh
c0ludDMyKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIFZBTElEQVRFKChub2RlKSwgIWhhc0RvdWJsZShzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgp
KSk7CiAgICAgICAgICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTk2LDcgKzE5Niw5IEBAIHB1YmxpYzoKICAgICAgICAgbV9wcm9jLmFkZEZhc3RDb25zdGFudCht
X3RhZ1R5cGVOdW1iZXItPmtleSgpKTsKICAgICAgICAgbV9wcm9jLmFkZEZhc3RDb25zdGFudCht
X3RhZ01hc2stPmtleSgpKTsKICAgICAgICAgCi0gICAgICAgIG1fb3V0LnN0b3JlUHRyKG1fb3V0
LmNvbnN0SW50UHRyKGNvZGVCbG9jaygpKSwgYWRkcmVzc0ZvcihDYWxsRnJhbWVTbG90Ojpjb2Rl
QmxvY2spKTsKKyAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0aGUgQ29kZUJsb2NrIHRvIGhhdmUg
YSB3ZWFrIHBvaW50ZXIgdG8gaXRzZWxmIGJlY2F1c2UKKyAgICAgICAgLy8gdGhhdCB3b3VsZCBj
YXVzZSBpdCB0byBhbHdheXMgZ2V0IGNvbGxlY3RlZC4KKyAgICAgICAgbV9vdXQuc3RvcmVQdHIo
bV9vdXQuY29uc3RJbnRQdHIoYml0d2lzZV9jYXN0PGludHB0cl90Pihjb2RlQmxvY2soKSkpLCBh
ZGRyZXNzRm9yKENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jaykpOwogCiAgICAgICAgIC8vIFN0YWNr
IE92ZXJmbG93IENoZWNrLgogICAgICAgICB1bnNpZ25lZCBleGl0RnJhbWVTaXplID0gbV9ncmFw
aC5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0KCkgKiBzaXplb2YoUmVnaXN0ZXIpOwpAQCAt
MTU2MCw3ICsxNTYyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9vdXQuYnJhbmNoKGlzT2JqZWN0
KHZhbHVlKSwgdXN1YWxseShjb250aW51YXRpb24pLCByYXJlbHkoc2xvd0Nhc2UpKTsKIAogICAg
ICAgICBtX291dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKLSAgICAgICAgVmFs
dWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoSW50NjQsIG1fb3V0
Lm9wZXJhdGlvbihvcGVyYXRpb25PYmplY3RDb25zdHJ1Y3RvciksIG1fY2FsbEZyYW1lLCBtX291
dC5jb25zdEludFB0cihnbG9iYWxPYmplY3QpLCB2YWx1ZSkpOworICAgICAgICBWYWx1ZUZyb21C
bG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0
aW9uKG9wZXJhdGlvbk9iamVjdENvbnN0cnVjdG9yKSwgbV9jYWxsRnJhbWUsIHdlYWtQb2ludGVy
KGdsb2JhbE9iamVjdCksIHZhbHVlKSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9u
KTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKQEAg
LTI2NjQsNyArMjY2Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjaGVja1N0cnVjdHVyZSgK
ICAgICAgICAgICAgICAgICBtX291dC5sb2FkMzIoY2VsbCwgbV9oZWFwcy5KU0NlbGxfc3RydWN0
dXJlSUQpLCBqc1ZhbHVlVmFsdWUoY2VsbCksCiAgICAgICAgICAgICAgICAgZXhpdEtpbmQsIG1f
bm9kZS0+c3RydWN0dXJlU2V0KCksCi0gICAgICAgICAgICAgICAgWyZdIChTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkgeworICAgICAgICAgICAgICAgIFsmXSAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1
Y3R1cmUpIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdlYWtTdHJ1Y3R1cmVJRChzdHJ1
Y3R1cmUpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjY4
NCw3ICsyNjg2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNoZWNrU3RydWN0dXJlKAogICAg
ICAgICAgICAgICAgIG1fb3V0LmxvYWQzMih2YWx1ZSwgbV9oZWFwcy5KU0NlbGxfc3RydWN0dXJl
SUQpLCBqc1ZhbHVlVmFsdWUodmFsdWUpLAogICAgICAgICAgICAgICAgIGV4aXRLaW5kLCBtX25v
ZGUtPnN0cnVjdHVyZVNldCgpLAotICAgICAgICAgICAgICAgIFsmXSAoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpIHsKKyAgICAgICAgICAgICAgICBbJl0gKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0
dXJlKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3ZWFrU3RydWN0dXJlSUQoc3RydWN0
dXJlKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGlu
dWF0aW9uKTsKQEAgLTI3OTgsOCArMjgwMCw4IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBt
X2Z0bFN0YXRlLmppdENvZGUtPmNvbW1vbi5ub3RpZnlDb21waWxpbmdTdHJ1Y3R1cmVUcmFuc2l0
aW9uKG1fZ3JhcGgubV9wbGFuLCBjb2RlQmxvY2soKSwgbV9ub2RlKTsKICAgICAgICAgCi0gICAg
ICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlID0gbV9ub2RlLT50cmFuc2l0aW9uKCktPnByZXZp
b3VzOwotICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IG1fbm9kZS0+dHJhbnNpdGlv
bigpLT5uZXh0OworICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIG9sZFN0cnVjdHVyZSA9IG1f
bm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91czsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBuZXdTdHJ1Y3R1cmUgPSBtX25vZGUtPnRyYW5zaXRpb24oKS0+bmV4dDsKICAgICAgICAgQVNT
RVJUX1VOVVNFRChvbGRTdHJ1Y3R1cmUsIG9sZFN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkgPT0g
bmV3U3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSk7CiAgICAgICAgIEFTU0VSVChvbGRTdHJ1Y3R1
cmUtPnR5cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdzKCkgPT0gbmV3U3RydWN0dXJlLT50eXBlSW5m
bygpLmlubGluZVR5cGVGbGFncygpKTsKICAgICAgICAgQVNTRVJUKG9sZFN0cnVjdHVyZS0+dHlw
ZUluZm8oKS50eXBlKCkgPT0gbmV3U3RydWN0dXJlLT50eXBlSW5mbygpLnR5cGUoKSk7CkBAIC0z
ODk5LDEwICszOTAxLDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAvLyB3aXRoIG9uZSBvZiB0
aGUgZm9sbG93aW5nIGluZGV4aW5nIHNoYXBlczogSW50MzIsIENvbnRpZ3VvdXMsIERvdWJsZS4K
ICAgICAgICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmUgPSBtX291dC5zZWxlY3QoCiAgICAgICAgICAg
ICAgICAgbV9vdXQuZXF1YWwoaW5kZXhpbmdUeXBlLCBtX291dC5jb25zdEludDMyKEFycmF5V2l0
aEludDMyKSksCi0gICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoZ2xvYmFsT2JqZWN0
LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRo
SW50MzIpKSwKKyAgICAgICAgICAgICAgICB3ZWFrU3RydWN0dXJlKG1fZ3JhcGgucmVnaXN0ZXJT
dHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmlu
Z0FsbG9jYXRpb24oQXJyYXlXaXRoSW50MzIpKSksCiAgICAgICAgICAgICAgICAgbV9vdXQuc2Vs
ZWN0KG1fb3V0LmVxdWFsKGluZGV4aW5nVHlwZSwgbV9vdXQuY29uc3RJbnQzMihBcnJheVdpdGhD
b250aWd1b3VzKSksCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKGdsb2Jh
bE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFy
cmF5V2l0aENvbnRpZ3VvdXMpKSwKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQ
dHIoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9j
YXRpb24oQXJyYXlXaXRoRG91YmxlKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgd2Vha1N0cnVj
dHVyZShtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1
cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aENvbnRpZ3VvdXMpKSks
CisgICAgICAgICAgICAgICAgICAgIHdlYWtTdHJ1Y3R1cmUobV9ncmFwaC5yZWdpc3RlclN0cnVj
dHVyZShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxs
b2NhdGlvbihBcnJheVdpdGhEb3VibGUpKSkpKTsKICAgICAgICAgICAgIGFycmF5UmVzdWx0ID0g
YWxsb2NhdGVKU0FycmF5KHJlc3VsdExlbmd0aCwgc3RydWN0dXJlLCBpbmRleGluZ1R5cGUsIGZh
bHNlLCBmYWxzZSk7CiAgICAgICAgIH0KIApAQCAtMzk5NCwxMyArMzk5NiwxMyBAQCBwcml2YXRl
OgogICAgIHsKICAgICAgICAgTFZhbHVlIHNjb3BlID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgp
KTsKICAgICAgICAgU3ltYm9sVGFibGUqIHRhYmxlID0gbV9ub2RlLT5jYXN0T3BlcmFuZDxTeW1i
b2xUYWJsZSo+KCk7Ci0gICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hY3RpdmF0aW9uU3RydWN0dXJl
KCk7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdp
c3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1h
bnRpYyktPmFjdGl2YXRpb25TdHJ1Y3R1cmUoKSk7CiAgICAgICAgIEpTVmFsdWUgaW5pdGlhbGl6
YXRpb25WYWx1ZSA9IG1fbm9kZS0+aW5pdGlhbGl6YXRpb25WYWx1ZUZvckFjdGl2YXRpb24oKTsK
ICAgICAgICAgQVNTRVJUKGluaXRpYWxpemF0aW9uVmFsdWUuaXNVbmRlZmluZWQoKSB8fCBpbml0
aWFsaXphdGlvblZhbHVlID09IGpzVERaVmFsdWUoKSk7CiAgICAgICAgIGlmICh0YWJsZS0+c2lu
Z2xldG9uU2NvcGUoKS0+aXNTdGlsbFZhbGlkKCkpIHsKICAgICAgICAgICAgIExWYWx1ZSBjYWxs
UmVzdWx0ID0gdm1DYWxsKAogICAgICAgICAgICAgICAgIEludDY0LAotICAgICAgICAgICAgICAg
IG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25DcmVhdGVBY3RpdmF0aW9uRGlyZWN0KSwgbV9jYWxs
RnJhbWUsIHdlYWtQb2ludGVyKHN0cnVjdHVyZSksCisgICAgICAgICAgICAgICAgbV9vdXQub3Bl
cmF0aW9uKG9wZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb25EaXJlY3QpLCBtX2NhbGxGcmFtZSwgd2Vh
a1N0cnVjdHVyZShzdHJ1Y3R1cmUpLAogICAgICAgICAgICAgICAgIHNjb3BlLCB3ZWFrUG9pbnRl
cih0YWJsZSksIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGluaXRpYWxpemF0aW9u
VmFsdWUpKSk7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKGNhbGxSZXN1bHQpOwogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtNDAzNSw3ICs0MDM3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFs9
XSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQ
YXRoOjpHZW5lcmF0b3I+IHsKICAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxH
ZW5lcmF0b3IoCiAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb25E
aXJlY3QsIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwKLSAgICAgICAgICAgICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIGxvY2F0aW9uc1sxXS5kaXJlY3RH
UFIoKSwKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0
cnVjdHVyZS5nZXQoKSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSwKICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHRhYmxlKSwKICAgICAgICAgICAgICAg
ICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGluaXRpYWxp
emF0aW9uVmFsdWUpKSk7CiAgICAgICAgICAgICB9LApAQCAtNDA2NSwxMCArNDA2NywxMCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3Ry
dWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSgKICAgICAgICAgICAgIGlzR2VuZXJh
dG9yRnVuY3Rpb24gPyBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1h
bnRpYyktPmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkgOgogICAgICAgICAgICAgaXNBc3lu
Y0Z1bmN0aW9uID8gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50
aWMpLT5hc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkgOgotICAgICAgICAgICAgbV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgp
OworICAgICAgICAgICAgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2Vt
YW50aWMpLT5mdW5jdGlvblN0cnVjdHVyZSgpKTsKICAgICAgICAgCiAgICAgICAgIExCYXNpY0Js
b2NrIHNsb3dQYXRoID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgY29u
dGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKQEAgLTQxMjgsOCArNDEzMCw4IEBAIHByaXZh
dGU6CiAgICAgICAgIC8vIHRoZW0gYmUgZXhwbGljaXQgYXJndW1lbnRzIHRvIHRoaXMgbm9kZS4K
ICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjIw
NwogICAgICAgICAKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPQotICAgICAgICAgICAg
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5kaXJlY3RB
cmd1bWVudHNTdHJ1Y3R1cmUoKTsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1
cmUgPQorICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmRpcmVjdEFyZ3VtZW50c1N0cnVj
dHVyZSgpKTsKICAgICAgICAgCiAgICAgICAgIHVuc2lnbmVkIG1pbkNhcGFjaXR5ID0gbV9ncmFw
aC5iYXNlbGluZUNvZGVCbG9ja0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPm51bVBhcmFt
ZXRlcnMoKSAtIDE7CiAgICAgICAgIApAQCAtNDE3MSw3ICs0MTczLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIFs9XSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQ
dHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKICAgICAgICAgICAgICAgICByZXR1cm4gY3Jl
YXRlTGF6eUNhbGxHZW5lcmF0b3IoCiAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbkNyZWF0
ZURpcmVjdEFyZ3VtZW50cywgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLAotICAgICAgICAgICAg
ICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgbG9jYXRpb25z
WzFdLmRpcmVjdEdQUigpLAorICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoc3RydWN0dXJlLmdldCgpKSwgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpLAogICAg
ICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihtaW5DYXBhY2l0eSkp
OwogICAgICAgICAgICAgfSwgbGVuZ3RoLnZhbHVlKTsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sg
c2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihjYWxsUmVzdWx0KTsKQEAgLTQyNTksNyArNDI2MSw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBMVmFsdWUgYXJyYXlMZW5ndGggPSBsb3dJbnQzMiht
X25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxvb3BTdGFydCA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOwotICAg
ICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPnJlc3RQYXJhbWV0
ZXJTdHJ1Y3R1cmUoKTsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJl
ID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3QtPnJlc3RQYXJhbWV0ZXJT
dHJ1Y3R1cmUoKSk7CiAgICAgICAgICAgICBBcnJheVZhbHVlcyBhcnJheVZhbHVlcyA9IGFsbG9j
YXRlVW5pbml0aWFsaXplZENvbnRpZ3VvdXNKU0FycmF5KGFycmF5TGVuZ3RoLCBzdHJ1Y3R1cmUp
OwogICAgICAgICAgICAgTFZhbHVlIGFycmF5ID0gYXJyYXlWYWx1ZXMuYXJyYXk7CiAgICAgICAg
ICAgICBMVmFsdWUgYnV0dGVyZmx5ID0gYXJyYXlWYWx1ZXMuYnV0dGVyZmx5OwpAQCAtNDMyNyw4
ICs0MzI5LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHNwZWN1bGF0ZShtX2dyYXBoLnZhckFy
Z0NoaWxkKG1fbm9kZSwgb3BlcmFuZEluZGV4KSk7CiAgICAgICAgIAogICAgICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5v
cmlnaW4uc2VtYW50aWMpOwotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9i
amVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKAotICAg
ICAgICAgICAgbV9ub2RlLT5pbmRleGluZ1R5cGUoKSk7CisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1
Y3R1cmUgc3RydWN0dXJlID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShnbG9iYWxPYmplY3Qt
PmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbigKKyAgICAgICAg
ICAgIG1fbm9kZS0+aW5kZXhpbmdUeXBlKCkpKTsKIAogICAgICAgICBpZiAoIWdsb2JhbE9iamVj
dC0+aXNIYXZpbmdBQmFkVGltZSgpICYmICFoYXNBbnlBcnJheVN0b3JhZ2UobV9ub2RlLT5pbmRl
eGluZ1R5cGUoKSkpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIG51bUVsZW1lbnRzID0gbV9ub2Rl
LT5udW1DaGlsZHJlbigpOwpAQCAtNDM3Myw3ICs0Mzc1LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
aWYgKCFtX25vZGUtPm51bUNoaWxkcmVuKCkpIHsKICAgICAgICAgICAgIHNldEpTVmFsdWUodm1D
YWxsKAogICAgICAgICAgICAgICAgIEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3
RW1wdHlBcnJheSksIG1fY2FsbEZyYW1lLAotICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50
UHRyKHN0cnVjdHVyZSkpKTsKKyAgICAgICAgICAgICAgICB3ZWFrU3RydWN0dXJlKHN0cnVjdHVy
ZSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTQzOTQs
NyArNDM5Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBMVmFsdWUgcmVzdWx0ID0g
dm1DYWxsKAogICAgICAgICAgICAgSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdB
cnJheSksIG1fY2FsbEZyYW1lLAotICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoc3RydWN0
dXJlKSwgbV9vdXQuY29uc3RJbnRQdHIoYnVmZmVyKSwKKyAgICAgICAgICAgIHdlYWtTdHJ1Y3R1
cmUoc3RydWN0dXJlKSwgbV9vdXQuY29uc3RJbnRQdHIoYnVmZmVyKSwKICAgICAgICAgICAgIG1f
b3V0LmNvbnN0SW50UHRyKG1fbm9kZS0+bnVtQ2hpbGRyZW4oKSkpOwogICAgICAgICAKICAgICAg
ICAgbV9vdXQuc3RvcmVQdHIobV9vdXQuaW50UHRyWmVybywgbV9vdXQuYWJzb2x1dGUoc2NyYXRj
aEJ1ZmZlci0+YWN0aXZlTGVuZ3RoUHRyKCkpKTsKQEAgLTQ0MzQsNyArNDQzNiw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2lu
LnNlbWFudGljKS0+b3JpZ2luYWxBcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZShBcnJheVdp
dGhDb250aWd1b3VzKTsKKyAgICAgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJl
ID0gbV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYyktPm9yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5
cGUoQXJyYXlXaXRoQ29udGlndW91cykpOwogICAgICAgICAgICAgQXJyYXlWYWx1ZXMgYXJyYXlW
YWx1ZXMgPSBhbGxvY2F0ZVVuaW5pdGlhbGl6ZWRDb250aWd1b3VzSlNBcnJheShsZW5ndGgsIHN0
cnVjdHVyZSk7CiAgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gYXJyYXlWYWx1ZXMuYXJyYXk7
CiAgICAgICAgICAgICBMVmFsdWUgc3RvcmFnZSA9IGFycmF5VmFsdWVzLmJ1dHRlcmZseTsKQEAg
LTQ2NTYsOCArNDY1OCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxlTmV3QXJyYXlCdWZm
ZXIoKQogICAgIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhp
bmdUeXBlRHVyaW5nQWxsb2NhdGlvbigKLSAgICAgICAgICAgIG1fbm9kZS0+aW5kZXhpbmdUeXBl
KCkpOworICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3JhcGgucmVn
aXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlw
ZUR1cmluZ0FsbG9jYXRpb24oCisgICAgICAgICAgICBtX25vZGUtPmluZGV4aW5nVHlwZSgpKSk7
CiAgICAgICAgIAogICAgICAgICBpZiAoIWdsb2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgp
ICYmICFoYXNBbnlBcnJheVN0b3JhZ2UobV9ub2RlLT5pbmRleGluZ1R5cGUoKSkpIHsKICAgICAg
ICAgICAgIHVuc2lnbmVkIG51bUVsZW1lbnRzID0gbV9ub2RlLT5udW1Db25zdGFudHMoKTsKQEAg
LTQ2ODYsNyArNDY4OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBzZXRKU1ZhbHVl
KHZtQ2FsbCgKICAgICAgICAgICAgIEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3
QXJyYXlCdWZmZXIpLCBtX2NhbGxGcmFtZSwKLSAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRy
KHN0cnVjdHVyZSksIG1fb3V0LmNvbnN0SW50UHRyKG1fbm9kZS0+c3RhcnRDb25zdGFudCgpKSwK
KyAgICAgICAgICAgIHdlYWtTdHJ1Y3R1cmUoc3RydWN0dXJlKSwgbV9vdXQuY29uc3RJbnRQdHIo
bV9ub2RlLT5zdGFydENvbnN0YW50KCkpLAogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIo
bV9ub2RlLT5udW1Db25zdGFudHMoKSkpKTsKICAgICB9CiAKQEAgLTQ2OTUsMjMgKzQ2OTcsMjIg
QEAgcHJpdmF0ZToKICAgICAgICAgTFZhbHVlIHB1YmxpY0xlbmd0aCA9IGxvd0ludDMyKG1fbm9k
ZS0+Y2hpbGQxKCkpOwogICAgICAgICAKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
LSAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0
dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbigKLSAgICAgICAgICAgIG1fbm9kZS0+
aW5kZXhpbmdUeXBlKCkpOworICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9
IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZv
ckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oCisgICAgICAgICAgICBtX25vZGUtPmluZGV4
aW5nVHlwZSgpKSk7CiAgICAgICAgIAogICAgICAgICBpZiAoIWdsb2JhbE9iamVjdC0+aXNIYXZp
bmdBQmFkVGltZSgpICYmICFoYXNBbnlBcnJheVN0b3JhZ2UobV9ub2RlLT5pbmRleGluZ1R5cGUo
KSkpIHsKICAgICAgICAgICAgIEluZGV4aW5nVHlwZSBpbmRleGluZ1R5cGUgPSBtX25vZGUtPmlu
ZGV4aW5nVHlwZSgpOwogICAgICAgICAgICAgc2V0SlNWYWx1ZSgKICAgICAgICAgICAgICAgICBh
bGxvY2F0ZUpTQXJyYXkoCi0gICAgICAgICAgICAgICAgICAgIHB1YmxpY0xlbmd0aCwgbV9vdXQu
Y29uc3RJbnRQdHIoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1
cmluZ0FsbG9jYXRpb24oaW5kZXhpbmdUeXBlKSksIG1fb3V0LmNvbnN0SW50MzIoaW5kZXhpbmdU
eXBlKSkuYXJyYXkpOworICAgICAgICAgICAgICAgICAgICBwdWJsaWNMZW5ndGgsIHdlYWtQb2lu
dGVyKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxv
Y2F0aW9uKGluZGV4aW5nVHlwZSkpLCBtX291dC5jb25zdEludDMyKGluZGV4aW5nVHlwZSkpLmFy
cmF5KTsKICAgICAgICAgICAgIG11dGF0b3JGZW5jZSgpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBMVmFsdWUgc3RydWN0dXJlVmFsdWUgPSBtX291
dC5zZWxlY3QoCiAgICAgICAgICAgICBtX291dC5hYm92ZU9yRXF1YWwocHVibGljTGVuZ3RoLCBt
X291dC5jb25zdEludDMyKE1JTl9BUlJBWV9TVE9SQUdFX0NPTlNUUlVDVElPTl9MRU5HVEgpKSwK
LSAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKAotICAgICAgICAgICAgICAgIGdsb2JhbE9i
amVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5
V2l0aEFycmF5U3RvcmFnZSkpLAotICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoc3RydWN0
dXJlKSk7CisgICAgICAgICAgICB3ZWFrU3RydWN0dXJlKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1
cmUoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9j
YXRpb24oQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSkpLAorICAgICAgICAgICAgd2Vha1N0cnVjdHVy
ZShzdHJ1Y3R1cmUpKTsKICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG1fb3V0Lm9w
ZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplKSwgbV9jYWxsRnJhbWUsIHN0cnVjdHVy
ZVZhbHVlLCBwdWJsaWNMZW5ndGgsIG1fb3V0LmludFB0clplcm8pKTsKICAgICB9CiAKQEAgLTQ3
MjIsNyArNDcyMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBzd2l0Y2ggKG1fbm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgICAgIGNhc2UgSW50MzJVc2U6IHsKLSAgICAg
ICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT50eXBlZEFycmF5U3Ry
dWN0dXJlQ29uY3VycmVudGx5KHR5cGUpOworICAgICAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+dHlw
ZWRBcnJheVN0cnVjdHVyZUNvbmN1cnJlbnRseSh0eXBlKSk7CiAKICAgICAgICAgICAgIExWYWx1
ZSBzaXplID0gbG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSk7CiAKQEAgLTQ3ODEsNyArNDc4Miw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgWz1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+
JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4gewogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3IoCiAgICAgICAgICAg
ICAgICAgICAgICAgICBvcGVyYXRpb25OZXdUeXBlZEFycmF5V2l0aFNpemVGb3JUeXBlKHR5cGUp
LCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksCi0gICAgICAgICAgICAgICAgICAgICAgICBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgbG9jYXRpb25zWzFdLmRpcmVjdEdQ
UigpLAorICAgICAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRy
KHN0cnVjdHVyZS5nZXQoKSksIGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgIGxvY2F0aW9uc1syXS5kaXJlY3RHUFIoKSk7CiAgICAgICAgICAgICAgICAg
fSwKICAgICAgICAgICAgICAgICBzaXplLCBzdG9yYWdlVmFsdWUpOwpAQCAtNDgxMyw3ICs0ODE0
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSgp
CiAgICAgewogICAgICAgICBMVmFsdWUgb2JqZWN0ID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgp
KTsKLSAgICAgICAgc2V0U3RvcmFnZShhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShvYmplY3QsIG1f
bm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91cykpOworICAgICAgICBzZXRTdG9yYWdlKGFsbG9j
YXRlUHJvcGVydHlTdG9yYWdlKG9iamVjdCwgbV9ub2RlLT50cmFuc2l0aW9uKCktPnByZXZpb3Vz
LmdldCgpKSk7CiAgICAgfQogCiAgICAgdm9pZCBjb21waWxlUmVhbGxvY2F0ZVByb3BlcnR5U3Rv
cmFnZSgpCkBAIC00ODI0LDcgKzQ4MjUsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAg
c2V0U3RvcmFnZSgKICAgICAgICAgICAgIHJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoCi0gICAg
ICAgICAgICAgICAgb2JqZWN0LCBvbGRTdG9yYWdlLCB0cmFuc2l0aW9uLT5wcmV2aW91cywgdHJh
bnNpdGlvbi0+bmV4dCkpOworICAgICAgICAgICAgICAgIG9iamVjdCwgb2xkU3RvcmFnZSwgdHJh
bnNpdGlvbi0+cHJldmlvdXMuZ2V0KCksIHRyYW5zaXRpb24tPm5leHQuZ2V0KCkpKTsKICAgICB9
CiAgICAgCiAgICAgdm9pZCBjb21waWxlTnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseSgpCkBA
IC01Mjg2LDExICs1Mjg3LDExIEBAIHByaXZhdGU6CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRp
bnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIAogICAgICAgICBWZWN0b3I8U3dp
dGNoQ2FzZSwgMj4gY2FzZXM7Ci0gICAgICAgIFN0cnVjdHVyZVNldCBiYXNlU2V0OworICAgICAg
ICBSZWdpc3RlcmVkU3RydWN0dXJlU2V0IGJhc2VTZXQ7CiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IGRhdGEuY2FzZXMuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICBNdWx0aUdldEJ5T2Zm
c2V0Q2FzZSBnZXRDYXNlID0gZGF0YS5jYXNlc1tpXTsKICAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaiA9IGdldENhc2Uuc2V0KCkuc2l6ZSgpOyBqLS07KSB7Ci0gICAgICAgICAgICAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBnZXRDYXNlLnNldCgpW2pdOworICAgICAgICAgICAgICAgIFJl
Z2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gZ2V0Q2FzZS5zZXQoKVtqXTsKICAgICAgICAg
ICAgICAgICBiYXNlU2V0LmFkZChzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgICAgIGNhc2VzLmFw
cGVuZChTd2l0Y2hDYXNlKHdlYWtTdHJ1Y3R1cmVJRChzdHJ1Y3R1cmUpLCBibG9ja3NbaV0sIFdl
aWdodCgxKSkpOwogICAgICAgICAgICAgfQpAQCAtNTM2OCwxMSArNTM2OSwxMSBAQCBwcml2YXRl
OgogICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwog
ICAgICAgICAKICAgICAgICAgVmVjdG9yPFN3aXRjaENhc2UsIDI+IGNhc2VzOwotICAgICAgICBT
dHJ1Y3R1cmVTZXQgYmFzZVNldDsKKyAgICAgICAgUmVnaXN0ZXJlZFN0cnVjdHVyZVNldCBiYXNl
U2V0OwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBkYXRhLnZhcmlhbnRzLnNpemUoKTsgaS0t
OykgewogICAgICAgICAgICAgUHV0QnlJZFZhcmlhbnQgdmFyaWFudCA9IGRhdGEudmFyaWFudHNb
aV07CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSB2YXJpYW50Lm9sZFN0cnVjdHVyZSgp
LnNpemUoKTsgai0tOykgewotICAgICAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
dmFyaWFudC5vbGRTdHJ1Y3R1cmUoKVtqXTsKKyAgICAgICAgICAgICAgICBSZWdpc3RlcmVkU3Ry
dWN0dXJlIHN0cnVjdHVyZSA9IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRT
dHJ1Y3R1cmUoKVtqXSk7CiAgICAgICAgICAgICAgICAgYmFzZVNldC5hZGQoc3RydWN0dXJlKTsK
ICAgICAgICAgICAgICAgICBjYXNlcy5hcHBlbmQoU3dpdGNoQ2FzZSh3ZWFrU3RydWN0dXJlSUQo
c3RydWN0dXJlKSwgYmxvY2tzW2ldLCBXZWlnaHQoMSkpKTsKICAgICAgICAgICAgIH0KQEAgLTU0
MTMsNyArNTQxNCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgQVNTRVJUKHZhcmlhbnQu
b2xkU3RydWN0dXJlRm9yVHJhbnNpdGlvbigpLT50eXBlSW5mbygpLmlubGluZVR5cGVGbGFncygp
ID09IHZhcmlhbnQubmV3U3RydWN0dXJlKCktPnR5cGVJbmZvKCkuaW5saW5lVHlwZUZsYWdzKCkp
OwogICAgICAgICAgICAgICAgIEFTU0VSVCh2YXJpYW50Lm9sZFN0cnVjdHVyZUZvclRyYW5zaXRp
b24oKS0+dHlwZUluZm8oKS50eXBlKCkgPT0gdmFyaWFudC5uZXdTdHJ1Y3R1cmUoKS0+dHlwZUlu
Zm8oKS50eXBlKCkpOwogICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlMzIoCi0gICAgICAgICAg
ICAgICAgICAgIHdlYWtTdHJ1Y3R1cmVJRCh2YXJpYW50Lm5ld1N0cnVjdHVyZSgpKSwgYmFzZSwg
bV9oZWFwcy5KU0NlbGxfc3RydWN0dXJlSUQpOworICAgICAgICAgICAgICAgICAgICB3ZWFrU3Ry
dWN0dXJlSUQobV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZSh2YXJpYW50Lm5ld1N0cnVjdHVyZSgp
KSksIGJhc2UsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwpAQCAtNzc0
NiwxMSArNzc0NywxMSBAQCBwcml2YXRlOgogICAgICAgICBMVmFsdWUgaW5kZXggPSBtX291dC5i
aXRBbmQobWFzaywgdW5tYXNrZWRJbmRleCk7CiAgICAgICAgIExWYWx1ZSBoYXNoTWFwQnVja2V0
ID0gbV9vdXQubG9hZDY0KG1fb3V0LmJhc2VJbmRleChtX2hlYXBzLnByb3BlcnRpZXMuYXRBbnlO
dW1iZXIoKSwgYnVmZmVyLCBtX291dC56ZXJvRXh0KGluZGV4LCBJbnQ2NCksIFNjYWxlRWlnaHQp
KTsKICAgICAgICAgVmFsdWVGcm9tQmxvY2sgYnVja2V0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGhh
c2hNYXBCdWNrZXQpOwotICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwoaGFzaE1hcEJ1
Y2tldCwgbV9vdXQuY29uc3RJbnRQdHIoSGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNoTWFw
QnVja2V0RGF0YUtleT4+OjplbXB0eVZhbHVlKCkpKSwKKyAgICAgICAgbV9vdXQuYnJhbmNoKG1f
b3V0LmVxdWFsKGhhc2hNYXBCdWNrZXQsIG1fb3V0LmNvbnN0SW50UHRyKGJpdHdpc2VfY2FzdDxp
bnRwdHJfdD4oSGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT4+
OjplbXB0eVZhbHVlKCkpKSksCiAgICAgICAgICAgICB1bnN1cmUobm90UHJlc2VudEluVGFibGUp
LCB1bnN1cmUobm90RW1wdHlWYWx1ZSkpOwogCiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vdEVt
cHR5VmFsdWUsIG5vdERlbGV0ZWRWYWx1ZSk7Ci0gICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5l
cXVhbChoYXNoTWFwQnVja2V0LCBtX291dC5jb25zdEludFB0cihIYXNoTWFwSW1wbDxIYXNoTWFw
QnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46OmRlbGV0ZWRWYWx1ZSgpKSksCisgICAgICAg
IG1fb3V0LmJyYW5jaChtX291dC5lcXVhbChoYXNoTWFwQnVja2V0LCBtX291dC5jb25zdEludFB0
cihiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1h
cEJ1Y2tldERhdGFLZXk+Pjo6ZGVsZXRlZFZhbHVlKCkpKSksCiAgICAgICAgICAgICB1bnN1cmUo
bG9vcEFyb3VuZCksIHVuc3VyZShub3REZWxldGVkVmFsdWUpKTsKIAogICAgICAgICBtX291dC5h
cHBlbmRUbyhub3REZWxldGVkVmFsdWUsIGxvb3BBcm91bmQpOwpAQCAtODIyMiw3ICs4MjIzLDgg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29tcGlsZU92ZXJyaWRlc0hhc0luc3RhbmNlKCkKICAg
ICB7Ci0gICAgICAgIEpTRnVuY3Rpb24qIGRlZmF1bHRIYXNJbnN0YW5jZUZ1bmN0aW9uID0ganND
YXN0PEpTRnVuY3Rpb24qPihtX25vZGUtPmNlbGxPcGVyYW5kKCktPnZhbHVlKCkpOworICAgICAg
ICBGcm96ZW5WYWx1ZSogZGVmYXVsdEhhc0luc3RhbmNlRnVuY3Rpb24gPSBtX25vZGUtPmNlbGxP
cGVyYW5kKCk7CisgICAgICAgIEFTU0VSVChkZWZhdWx0SGFzSW5zdGFuY2VGdW5jdGlvbi0+Y2Vs
bCgpLT5pbmhlcml0cyhKU0Z1bmN0aW9uOjppbmZvKCkpKTsKIAogICAgICAgICBMVmFsdWUgY29u
c3RydWN0b3IgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBMVmFsdWUgaGFz
SW5zdGFuY2UgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpOwpAQCAtODIzMyw3ICs4MjM1
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gVW5saWtlIGluIHRoZSBERkcsIHdlIGRvbid0IHdv
cnJ5IGFib3V0IGNsZWFuaW5nIHRoaXMgY29kZSB1cCBmb3IgdGhlIGNhc2Ugd2hlcmUgd2UgaGF2
ZSBwcm92ZW4gdGhlIGhhc0luc3RhbmNlVmFsdWUgaXMgYSBjb25zdGFudCBhcyBCMyBzaG91bGQg
Zml4IGl0IGZvciB1cy4KIAogICAgICAgICBWYWx1ZUZyb21CbG9jayBub3REZWZhdWx0SGFzSW5z
dGFuY2VSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuYm9vbGVhblRydWUpOwotICAgICAgICBt
X291dC5icmFuY2gobV9vdXQubm90RXF1YWwoaGFzSW5zdGFuY2UsIG1fb3V0LmNvbnN0SW50UHRy
KGRlZmF1bHRIYXNJbnN0YW5jZUZ1bmN0aW9uKSksIHVuc3VyZShjb250aW51YXRpb24pLCB1bnN1
cmUoZGVmYXVsdEhhc0luc3RhbmNlKSk7CisgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5ub3RF
cXVhbChoYXNJbnN0YW5jZSwgZnJvemVuUG9pbnRlcihkZWZhdWx0SGFzSW5zdGFuY2VGdW5jdGlv
bikpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKGRlZmF1bHRIYXNJbnN0YW5jZSkpOwog
CiAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oZGVmYXVsdEhh
c0luc3RhbmNlLCBjb250aW51YXRpb24pOwogICAgICAgICBWYWx1ZUZyb21CbG9jayBpbXBsZW1l
bnRzRGVmYXVsdEhhc0luc3RhbmNlUmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LnRlc3RJc1pl
cm8zMigKQEAgLTg1ODEsNyArODU4Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSBzdHJ1
Y3R1cmUgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBjaGVja1N0cnVjdHVy
ZSgKICAgICAgICAgICAgIHN0cnVjdHVyZSwgbm9WYWx1ZSgpLCBCYWRDYWNoZSwgbV9ub2RlLT5z
dHJ1Y3R1cmVTZXQoKSwKLSAgICAgICAgICAgIFt0aGlzXSAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
IHsKKyAgICAgICAgICAgIFt0aGlzXSAoUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUpIHsK
ICAgICAgICAgICAgICAgICByZXR1cm4gd2Vha1N0cnVjdHVyZShzdHJ1Y3R1cmUpOwogICAgICAg
ICAgICAgfSk7CiAgICAgfQpAQCAtODYwNiw3ICs4NjA4LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgY29uc3QgU3RydWN0dXJlU2V0JiBz
ZXQgPSBtX25vZGUtPnN0cnVjdHVyZVNldCgpOworICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJl
U2V0IHNldCA9IG1fbm9kZS0+c3RydWN0dXJlU2V0KCk7CiAKICAgICAgICAgVmVjdG9yPExCYXNp
Y0Jsb2NrLCAxPiBibG9ja3Moc2V0LnNpemUoKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IHNldC5zaXplKCk7IGktLTspCkBAIC04NjE2LDcgKzg2MTgsNyBAQCBwcml2YXRlOgogICAgICAg
ICAKICAgICAgICAgVmVjdG9yPFN3aXRjaENhc2UsIDE+IGNhc2VzKHNldC5zaXplKCkpOwogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBzZXQuc2l6ZSgpOyBpLS07KQotICAgICAgICAgICAgY2Fz
ZXNbaV0gPSBTd2l0Y2hDYXNlKHdlYWtTdHJ1Y3R1cmUoc2V0W2ldKSwgYmxvY2tzW2ldLCBXZWln
aHQoMSkpOworICAgICAgICAgICAgY2FzZXNbaV0gPSBTd2l0Y2hDYXNlKHdlYWtTdHJ1Y3R1cmUo
c2V0LmF0KGkpKSwgYmxvY2tzW2ldLCBXZWlnaHQoMSkpOwogICAgICAgICBtX291dC5zd2l0Y2hJ
bnN0cnVjdGlvbigKICAgICAgICAgICAgIGxvd0NlbGwobV9ncmFwaC52YXJBcmdDaGlsZChtX25v
ZGUsIDApKSwgY2FzZXMsIGR1bW15RGVmYXVsdCwgV2VpZ2h0KDApKTsKICAgICAgICAgCkBAIC04
NjI3LDcgKzg2MjksNyBAQCBwcml2YXRlOgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBzZXQu
c2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhibG9ja3NbaV0sIGkg
KyAxIDwgc2V0LnNpemUoKSA/IGJsb2Nrc1tpICsgMV0gOiBkdW1teURlZmF1bHQpOwogICAgICAg
ICAgICAgCi0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHNldFtpXTsKKyAgICAg
ICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlID0gc2V0LmF0KGkpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBMVmFsdWUgb2JqZWN0OwogICAgICAgICAgICAgTFZhbHVlIGJ1
dHRlcmZseTsKQEAgLTg3MDksNyArODcxMSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
ICAgICAgICBbPV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRy
PExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcGVyYXRpb25OZXdPYmplY3RXaXRoQnV0dGVyZmx5V2l0aEluZGV4aW5nSGVhZGVy
QW5kVmVjdG9yTGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlv
bnNbMF0uZGlyZWN0R1BSKCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnNbMF0uZGlyZWN0R1BS
KCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUuZ2V0KCkpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksIGxvY2F0
aW9uc1syXS5kaXJlY3RHUFIoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAg
ICAgICAgICAgICAgICAgICAgdmVjdG9yTGVuZ3RoLCBidXR0ZXJmbHlWYWx1ZSk7CkBAIC04NzE4
LDcgKzg3MjAsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgWz1dIChjb25z
dCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6Okdl
bmVyYXRvcj4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5
Q2FsbEdlbmVyYXRvcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9u
TmV3T2JqZWN0V2l0aEJ1dHRlcmZseSwgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3Ry
dWN0dXJlKSwgbG9jYXRpb25zWzFdLmRpcmVjdEdQUigpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZS5nZXQoKSks
IGxvY2F0aW9uc1sxXS5kaXJlY3RHUFIoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9LAog
ICAgICAgICAgICAgICAgICAgICAgICAgYnV0dGVyZmx5VmFsdWUpOwogICAgICAgICAgICAgICAg
IH0KQEAgLTg4OTEsNyArODg5Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSBzY29wZSA9
IGxvd0NlbGwobV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDEpKTsKICAgICAgICAgU3ltYm9s
VGFibGUqIHRhYmxlID0gbV9ub2RlLT5jYXN0T3BlcmFuZDxTeW1ib2xUYWJsZSo+KCk7CiAgICAg
ICAgIEFTU0VSVCh0YWJsZSA9PSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCktPmNhc3RD
b25zdGFudDxTeW1ib2xUYWJsZSo+KCkpOwotICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YWN0aXZh
dGlvblN0cnVjdHVyZSgpOworICAgICAgICBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSA9
IG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLT5hY3RpdmF0aW9uU3RydWN0dXJlKCkpOwogCiAgICAgICAgIExC
YXNpY0Jsb2NrIHNsb3dQYXRoID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxv
Y2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKQEAgLTg5MTgsNyArODkyMCw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBbPV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0
aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKAogICAgICAgICAgICAgICAgICAgICBv
cGVyYXRpb25DcmVhdGVBY3RpdmF0aW9uRGlyZWN0LCBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCks
Ci0gICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1
cmUpLCBsb2NhdGlvbnNbMV0uZGlyZWN0R1BSKCksCisgICAgICAgICAgICAgICAgICAgIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUuZ2V0KCkpLCBsb2NhdGlvbnNbMV0uZGly
ZWN0R1BSKCksCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cih0YWJsZSksCiAgICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0
KEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKSkpOwogICAgICAgICAgICAgfSwgc2NvcGUp
OwpAQCAtOTA0MywxMSArOTA0NSwxMiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21waWxlTmV3
UmVnZXhwKCkKICAgICB7Ci0gICAgICAgIFJlZ0V4cCogcmVnZXhwID0gbV9ub2RlLT5jYXN0T3Bl
cmFuZDxSZWdFeHAqPigpOworICAgICAgICBGcm96ZW5WYWx1ZSogcmVnZXhwID0gbV9ub2RlLT5j
ZWxsT3BlcmFuZCgpOworICAgICAgICBBU1NFUlQocmVnZXhwLT5jZWxsKCktPmluaGVyaXRzKFJl
Z0V4cDo6aW5mbygpKSk7CiAgICAgICAgIExWYWx1ZSByZXN1bHQgPSB2bUNhbGwoCiAgICAgICAg
ICAgICBwb2ludGVyVHlwZSgpLAogICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlv
bk5ld1JlZ2V4cCksIG1fY2FsbEZyYW1lLAotICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIo
cmVnZXhwKSk7CisgICAgICAgICAgICBmcm96ZW5Qb2ludGVyKHJlZ2V4cCkpOwogICAgICAgICAK
ICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgIH0KQEAgLTkxNDAsMTAgKzkxNDMsMTIg
QEAgcHJpdmF0ZToKICAgICAgICAgQ2FsbFNpdGVJbmRleCBjYWxsU2l0ZUluZGV4ID0gbV9mdGxT
dGF0ZS5qaXRDb2RlLT5jb21tb24uYWRkQ29kZU9yaWdpbihtX25vZGUtPm9yaWdpbi5zZW1hbnRp
Yyk7CiAgICAgICAgIAogICAgICAgICBtX291dC5zdG9yZVB0cihtX2NhbGxGcmFtZSwgcGFja2V0
LCBtX2hlYXBzLlNoYWRvd0NoaWNrZW5fUGFja2V0X2ZyYW1lKTsKLSAgICAgICAgbV9vdXQuc3Rv
cmVQdHIobV9vdXQuY29uc3RJbnRQdHIoU2hhZG93Q2hpY2tlbjo6UGFja2V0Ojp0YWlsTWFya2Vy
KCkpLCBwYWNrZXQsIG1faGVhcHMuU2hhZG93Q2hpY2tlbl9QYWNrZXRfY2FsbGVlKTsKKyAgICAg
ICAgbV9vdXQuc3RvcmVQdHIobV9vdXQuY29uc3RJbnRQdHIoYml0d2lzZV9jYXN0PGludHB0cl90
PihTaGFkb3dDaGlja2VuOjpQYWNrZXQ6OnRhaWxNYXJrZXIoKSkpLCBwYWNrZXQsIG1faGVhcHMu
U2hhZG93Q2hpY2tlbl9QYWNrZXRfY2FsbGVlKTsKICAgICAgICAgbV9vdXQuc3RvcmU2NCh0aGlz
VmFsdWUsIHBhY2tldCwgbV9oZWFwcy5TaGFkb3dDaGlja2VuX1BhY2tldF90aGlzVmFsdWUpOwog
ICAgICAgICBtX291dC5zdG9yZVB0cihzY29wZSwgcGFja2V0LCBtX2hlYXBzLlNoYWRvd0NoaWNr
ZW5fUGFja2V0X3Njb3BlKTsKLSAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQuY29uc3RJbnRQ
dHIoY29kZUJsb2NrKCkpLCBwYWNrZXQsIG1faGVhcHMuU2hhZG93Q2hpY2tlbl9QYWNrZXRfY29k
ZUJsb2NrKTsKKyAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0aGUgQ29kZUJsb2NrIHRvIGhhdmUg
YSB3ZWFrIHBvaW50ZXIgdG8gaXRzZWxmIGJlY2F1c2UKKyAgICAgICAgLy8gdGhhdCB3b3VsZCBj
YXVzZSBpdCB0byBhbHdheXMgZ2V0IGNvbGxlY3RlZC4KKyAgICAgICAgbV9vdXQuc3RvcmVQdHIo
bV9vdXQuY29uc3RJbnRQdHIoYml0d2lzZV9jYXN0PGludHB0cl90Pihjb2RlQmxvY2soKSkpLCBw
YWNrZXQsIG1faGVhcHMuU2hhZG93Q2hpY2tlbl9QYWNrZXRfY29kZUJsb2NrKTsKICAgICAgICAg
bV9vdXQuc3RvcmUzMihtX291dC5jb25zdEludDMyKGNhbGxTaXRlSW5kZXguYml0cygpKSwgcGFj
a2V0LCBtX2hlYXBzLlNoYWRvd0NoaWNrZW5fUGFja2V0X2NhbGxTaXRlSW5kZXgpOwogICAgIH0K
IApAQCAtOTIzNCw3ICs5MjM5LDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdG9yPgogICAgIHZvaWQgY2hlY2tTdHJ1Y3R1cmUoCiAgICAgICAgIExWYWx1ZSBzdHJ1Y3R1
cmVEaXNjcmltaW5hbnQsIGNvbnN0IEZvcm1hdHRlZFZhbHVlJiBmb3JtYXR0ZWRWYWx1ZSwgRXhp
dEtpbmQgZXhpdEtpbmQsCi0gICAgICAgIGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0LCBjb25zdCBG
dW5jdG9yJiB3ZWFrU3RydWN0dXJlRGlzY3JpbWluYW50KQorICAgICAgICBSZWdpc3RlcmVkU3Ry
dWN0dXJlU2V0IHNldCwgY29uc3QgRnVuY3RvciYgd2Vha1N0cnVjdHVyZURpc2NyaW1pbmFudCkK
ICAgICB7CiAgICAgICAgIGlmIChzZXQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICB0ZXJtaW5h
dGUoZXhpdEtpbmQpOwpAQCAtOTM2OSwxNiArOTM3NCwxOCBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgc3BlY3VsYXRlKEJhZFR5cGUsIGpzVmFsdWVWYWx1ZSh2YWx1ZSksIGVkZ2Uubm9kZSgpLCBp
c05vdFN5bWJvbCh2YWx1ZSwgcHJvdmVuVHlwZShlZGdlKSkpOwogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIGNhc2UgSW5mZXJyZWRUeXBlOjpPYmplY3RXaXRoU3RydWN0dXJlOgorICAg
ICAgICBjYXNlIEluZmVycmVkVHlwZTo6T2JqZWN0V2l0aFN0cnVjdHVyZTogeworICAgICAgICAg
ICAgUmVnaXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0
dXJlKHR5cGUuc3RydWN0dXJlKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRlKEJhZFR5cGUsIGpz
VmFsdWVWYWx1ZSh2YWx1ZSksIGVkZ2Uubm9kZSgpLCBpc05vdENlbGwodmFsdWUsIHByb3ZlblR5
cGUoZWRnZSkpKTsKLSAgICAgICAgICAgIGlmICghYWJzdHJhY3RWYWx1ZShlZGdlKS5tX3N0cnVj
dHVyZS5pc1N1YnNldE9mKFN0cnVjdHVyZVNldCh0eXBlLnN0cnVjdHVyZSgpKSkpIHsKKyAgICAg
ICAgICAgIGlmICghYWJzdHJhY3RWYWx1ZShlZGdlKS5tX3N0cnVjdHVyZS5pc1N1YnNldE9mKFJl
Z2lzdGVyZWRTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSkpIHsKICAgICAgICAgICAgICAgICBzcGVj
dWxhdGUoCiAgICAgICAgICAgICAgICAgICAgIEJhZFR5cGUsIGpzVmFsdWVWYWx1ZSh2YWx1ZSks
IGVkZ2Uubm9kZSgpLAogICAgICAgICAgICAgICAgICAgICBtX291dC5ub3RFcXVhbCgKICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fb3V0LmxvYWQzMih2YWx1ZSwgbV9oZWFwcy5KU0NlbGxfc3Ry
dWN0dXJlSUQpLAotICAgICAgICAgICAgICAgICAgICAgICAgd2Vha1N0cnVjdHVyZUlEKHR5cGUu
c3RydWN0dXJlKCkpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB3ZWFrU3RydWN0dXJlSUQo
c3RydWN0dXJlKSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CiAKICAgICAgICAgY2FzZSBJbmZlcnJlZFR5cGU6Ok9iamVjdFdpdGhTdHJ1Y3R1cmVPck90
aGVyOiB7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBjZWxsQ2FzZSA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CkBAIC05Mzg5LDEyICs5Mzk2LDEzIEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgIExCYXNp
Y0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oY2VsbENhc2UsIG5vdENlbGxDYXNlKTsK
IAotICAgICAgICAgICAgaWYgKCFhYnN0cmFjdFZhbHVlKGVkZ2UpLm1fc3RydWN0dXJlLmlzU3Vi
c2V0T2YoU3RydWN0dXJlU2V0KHR5cGUuc3RydWN0dXJlKCkpKSkgeworICAgICAgICAgICAgUmVn
aXN0ZXJlZFN0cnVjdHVyZSBzdHJ1Y3R1cmUgPSBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHR5
cGUuc3RydWN0dXJlKCkpOworICAgICAgICAgICAgaWYgKCFhYnN0cmFjdFZhbHVlKGVkZ2UpLm1f
c3RydWN0dXJlLmlzU3Vic2V0T2YoUmVnaXN0ZXJlZFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpKSkg
ewogICAgICAgICAgICAgICAgIHNwZWN1bGF0ZSgKICAgICAgICAgICAgICAgICAgICAgQmFkVHlw
ZSwganNWYWx1ZVZhbHVlKHZhbHVlKSwgZWRnZS5ub2RlKCksCiAgICAgICAgICAgICAgICAgICAg
IG1fb3V0Lm5vdEVxdWFsKAogICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyKHZh
bHVlLCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1cmVJRCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICB3ZWFrU3RydWN0dXJlSUQodHlwZS5zdHJ1Y3R1cmUoKSkpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHdlYWtTdHJ1Y3R1cmVJRChzdHJ1Y3R1cmUpKSk7CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKQEAgLTEwNDkzLDkgKzEwNTAxLDkg
QEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBMVmFsdWUg
YWxsb2NhdGVPYmplY3QoTFZhbHVlIGFsbG9jYXRvciwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIExW
YWx1ZSBidXR0ZXJmbHksIExCYXNpY0Jsb2NrIHNsb3dQYXRoKQorICAgIExWYWx1ZSBhbGxvY2F0
ZU9iamVjdChMVmFsdWUgYWxsb2NhdG9yLCBSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSwg
TFZhbHVlIGJ1dHRlcmZseSwgTEJhc2ljQmxvY2sgc2xvd1BhdGgpCiAgICAgewotICAgICAgICBy
ZXR1cm4gYWxsb2NhdGVPYmplY3QoYWxsb2NhdG9yLCBtX291dC5jb25zdEludFB0cihzdHJ1Y3R1
cmUpLCBidXR0ZXJmbHksIHNsb3dQYXRoKTsKKyAgICAgICAgcmV0dXJuIGFsbG9jYXRlT2JqZWN0
KGFsbG9jYXRvciwgd2Vha1N0cnVjdHVyZShzdHJ1Y3R1cmUpLCBidXR0ZXJmbHksIHNsb3dQYXRo
KTsKICAgICB9CiAKICAgICBMVmFsdWUgYWxsb2NhdGVPYmplY3QoTFZhbHVlIGFsbG9jYXRvciwg
TFZhbHVlIHN0cnVjdHVyZSwgTFZhbHVlIGJ1dHRlcmZseSwgTEJhc2ljQmxvY2sgc2xvd1BhdGgp
CkBAIC0xMDU4OSw3ICsxMDU5Nyw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2xhc3NUeXBlPgogICAgIExWYWx1ZSBhbGxvY2F0ZVZhcmlhYmxlU2l6ZWRPYmplY3Qo
Ci0gICAgICAgIExWYWx1ZSBzaXplLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTFZhbHVlIGJ1dHRl
cmZseSwgTEJhc2ljQmxvY2sgc2xvd1BhdGgpCisgICAgICAgIExWYWx1ZSBzaXplLCBSZWdpc3Rl
cmVkU3RydWN0dXJlIHN0cnVjdHVyZSwgTFZhbHVlIGJ1dHRlcmZseSwgTEJhc2ljQmxvY2sgc2xv
d1BhdGgpCiAgICAgewogICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6
ZSgKICAgICAgICAgICAgICpzdWJzcGFjZUZvcjxDbGFzc1R5cGU+KHZtKCkpLCBzaXplLCBzbG93
UGF0aCk7CkBAIC0xMDYwNSw5ICsxMDYxMyw5IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBh
bGxvY2F0ZUNlbGwoYWxsb2NhdG9yLCBzdHJ1Y3R1cmUsIHNsb3dQYXRoKTsKICAgICB9CiAgICAg
Ci0gICAgTFZhbHVlIGFsbG9jYXRlT2JqZWN0KFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIExW
YWx1ZSBhbGxvY2F0ZU9iamVjdChSZWdpc3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkKICAgICB7
Ci0gICAgICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IEpTRmluYWxPYmplY3Q6OmFsbG9jYXRp
b25TaXplKHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSk7CisgICAgICAgIHNpemVfdCBhbGxv
Y2F0aW9uU2l6ZSA9IEpTRmluYWxPYmplY3Q6OmFsbG9jYXRpb25TaXplKHN0cnVjdHVyZS5nZXQo
KS0+aW5saW5lQ2FwYWNpdHkoKSk7CiAgICAgICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9y
ID0gc3Vic3BhY2VGb3I8SlNGaW5hbE9iamVjdD4odm0oKSktPmFsbG9jYXRvckZvcihhbGxvY2F0
aW9uU2l6ZSk7CiAgICAgICAgIAogICAgICAgICAvLyBGSVhNRTogSWYgdGhlIGFsbG9jYXRvciBp
cyBudWxsLCB3ZSBjb3VsZCBzaW1wbHkgZW1pdCBhIG5vcm1hbCBDIGNhbGwgdG8gdGhlIGFsbG9j
YXRvcgpAQCAtMTA2MzAsNyArMTA2MzgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgWz1dIChj
b25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6
OkdlbmVyYXRvcj4gewogICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVy
YXRvcigKICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3T2JqZWN0LCBsb2NhdGlvbnNb
MF0uZGlyZWN0R1BSKCksCi0gICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihzdHJ1Y3R1cmUpKTsKKyAgICAgICAgICAgICAgICAgICAgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tUHRyKHN0cnVjdHVyZS5nZXQoKSkpOwogICAgICAgICAgICAgfSk7CiAgICAgICAg
IFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Ioc2xvd1Jlc3VsdFZhbHVl
KTsKICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwpAQCAtMTA3MzMsOCArMTA3NDEs
NyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8obGFyZ2VDYXNl
LCBmYWlsQ2FzZSk7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGxhcmdlU3RydWN0dXJlID0gbV9v
dXQuYW5jaG9yKAotICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoCi0gICAgICAgICAgICAg
ICAgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9j
YXRpb24oQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSkpOworICAgICAgICAgICAgd2Vha1N0cnVjdHVy
ZShtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVG
b3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aEFycmF5U3RvcmFnZSkpKSk7
CiAgICAgICAgIG1fb3V0Lmp1bXAoc2xvd0Nhc2UpOwogICAgICAgICAKICAgICAgICAgbV9vdXQu
YXBwZW5kVG8oZmFpbENhc2UsIHNsb3dDYXNlKTsKQEAgLTEwNzYzLDEyICsxMDc3MCwxMiBAQCBw
cml2YXRlOgogICAgICAgICAgICAgbV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIGZhc3RCdXR0ZXJm
bHksIHNsb3dCdXR0ZXJmbHkpKTsKICAgICB9CiAgICAgCi0gICAgQXJyYXlWYWx1ZXMgYWxsb2Nh
dGVVbmluaXRpYWxpemVkQ29udGlndW91c0pTQXJyYXkoTFZhbHVlIHB1YmxpY0xlbmd0aCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgQXJyYXlWYWx1ZXMgYWxsb2NhdGVVbmluaXRpYWxpemVk
Q29udGlndW91c0pTQXJyYXkoTFZhbHVlIHB1YmxpY0xlbmd0aCwgUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBib29sIHNob3VsZEluaXRpYWxpemVFbGVtZW50
cyA9IGZhbHNlOwogICAgICAgICBib29sIHNob3VsZExhcmdlQXJyYXlTaXplQ3JlYXRlQXJyYXlT
dG9yYWdlID0gZmFsc2U7CiAgICAgICAgIHJldHVybiBhbGxvY2F0ZUpTQXJyYXkoCi0gICAgICAg
ICAgICBwdWJsaWNMZW5ndGgsIG1fb3V0LmNvbnN0SW50UHRyKHN0cnVjdHVyZSksIG1fb3V0LmNv
bnN0SW50MzIoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSksIHNob3VsZEluaXRpYWxpemVFbGVt
ZW50cywKKyAgICAgICAgICAgIHB1YmxpY0xlbmd0aCwgd2Vha1N0cnVjdHVyZShzdHJ1Y3R1cmUp
LCBtX291dC5jb25zdEludDMyKHN0cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpLCBzaG91bGRJbml0
aWFsaXplRWxlbWVudHMsCiAgICAgICAgICAgICBzaG91bGRMYXJnZUFycmF5U2l6ZUNyZWF0ZUFy
cmF5U3RvcmFnZSk7CiAgICAgfQogICAgIApAQCAtMTA5MTAsNyArMTA5MTcsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG1hc3F1ZXJhZGVzQ2FzZSk7CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaXNUcnV0aHlPYmplY3QgPSBtX291dC5ub3RF
cXVhbCgKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIobV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwKKyAgICAgICAgICAgICAgICAg
ICAgd2Vha1BvaW50ZXIobV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2Vt
YW50aWMpKSwKICAgICAgICAgICAgICAgICAgICAgbV9vdXQubG9hZFB0cihsb2FkU3RydWN0dXJl
KHZhbHVlKSwgbV9oZWFwcy5TdHJ1Y3R1cmVfZ2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChtX291dC5hbmNob3IoaXNUcnV0aHlPYmplY3Qp
KTsKQEAgLTExMDA5LDcgKzExMDE2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIAogICAgICAg
ICAgICAgcmVzdWx0cy5hcHBlbmQobV9vdXQuYW5jaG9yKAogICAgICAgICAgICAgICAgIG1fb3V0
LmVxdWFsKAotICAgICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykpLAorICAgICAgICAgICAgICAg
ICAgICB3ZWFrUG9pbnRlcihtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLAogICAgICAgICAgICAgICAgICAgICBtX291dC5sb2FkUHRyKHN0cnVjdHVyZSwg
bV9oZWFwcy5TdHJ1Y3R1cmVfZ2xvYmFsT2JqZWN0KSkpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1
bXAoY29udGludWF0aW9uKTsKICAgICAgICAgfQpAQCAtMTE5MzEsMTIgKzExOTM4LDEyIEBAIHBy
aXZhdGU6CiAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtb2RlID09IE1hbnVh
bE9wZXJhbmRTcGVjdWxhdGlvbiB8fCBERkc6OmlzQ2VsbChlZGdlLnVzZUtpbmQoKSkpOwogICAg
ICAgICAKICAgICAgICAgaWYgKGVkZ2UtPm9wKCkgPT0gSlNDb25zdGFudCkgewotICAgICAgICAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IGVkZ2UtPmFzSlNWYWx1ZSgpOwotICAgICAgICAgICAgaWYgKCF2
YWx1ZS5pc0NlbGwoKSkgeworICAgICAgICAgICAgRnJvemVuVmFsdWUqIHZhbHVlID0gZWRnZS0+
Y29uc3RhbnQoKTsKKyAgICAgICAgICAgIGlmICghdmFsdWUtPnZhbHVlKCkuaXNDZWxsKCkpIHsK
ICAgICAgICAgICAgICAgICB0ZXJtaW5hdGUoVW5jb3VudGFibGUpOwogICAgICAgICAgICAgICAg
IHJldHVybiBtX291dC5pbnRQdHJaZXJvOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0
dXJuIG1fb3V0LmNvbnN0SW50UHRyKHZhbHVlLmFzQ2VsbCgpKTsKKyAgICAgICAgICAgIHJldHVy
biBmcm96ZW5Qb2ludGVyKHZhbHVlKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgTG93
ZXJlZE5vZGVWYWx1ZSB2YWx1ZSA9IG1fanNWYWx1ZVZhbHVlcy5nZXQoZWRnZS5ub2RlKCkpOwpA
QCAtMTI5MDEsMTAgKzEyOTA4LDEwIEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBzcGVjdWxh
dGVTdHJpbmdPYmplY3RGb3JTdHJ1Y3R1cmVJRChFZGdlIGVkZ2UsIExWYWx1ZSBzdHJ1Y3R1cmVJ
RCkKICAgICB7Ci0gICAgICAgIFN0cnVjdHVyZSogc3RyaW5nT2JqZWN0U3RydWN0dXJlID0KLSAg
ICAgICAgICAgIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
KS0+c3RyaW5nT2JqZWN0U3RydWN0dXJlKCk7Ci0gICAgICAgIAotICAgICAgICBpZiAoYWJzdHJh
Y3RTdHJ1Y3R1cmUoZWRnZSkuaXNTdWJzZXRPZihTdHJ1Y3R1cmVTZXQoc3RyaW5nT2JqZWN0U3Ry
dWN0dXJlKSkpCisgICAgICAgIFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RyaW5nT2JqZWN0U3RydWN0
dXJlID0KKyAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9i
YWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5zdHJpbmdPYmplY3RTdHJ1Y3R1
cmUoKSk7CisKKyAgICAgICAgaWYgKGFic3RyYWN0U3RydWN0dXJlKGVkZ2UpLmlzU3Vic2V0T2Yo
UmVnaXN0ZXJlZFN0cnVjdHVyZVNldChzdHJpbmdPYmplY3RTdHJ1Y3R1cmUpKSkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgCiAgICAgICAgIHNwZWN1bGF0ZSgKQEAgLTEzNjg5LDE5ICsx
MzY5NiwzMCBAQCBwcml2YXRlOgogCiAgICAgTFZhbHVlIHdlYWtQb2ludGVyKEpTQ2VsbCogcG9p
bnRlcikKICAgICB7CisgICAgICAgIC8vIFRoZXJlIGFyZSB3ZWlyZCByZWxhdGlvbnNoaXBzIGlu
IGhvdyBvcHRpbWl6ZWQgQ29kZUJsb2NrcworICAgICAgICAvLyBwb2ludCB0byBvdGhlciBDb2Rl
QmxvY2tzLiBXZSBkb24ndCB3YW50IHRvIGhhdmUgdGhlbSBiZQorICAgICAgICAvLyBwYXJ0IG9m
IHRoZSB3ZWFrIHBvaW50ZXIgc2V0LiBGb3IgZXhhbXBsZSwgYW4gb3B0aW1pemVkIENvZGVCbG9j
aworICAgICAgICAvLyBoYXZpbmcgYSB3ZWFrIHBvaW50ZXIgdG8gaXRzZWxmIHdpbGwgY2F1c2Ug
aXQgdG8gZ2V0IGNvbGxlY3RlZC4KKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWpzRHluYW1pY0Nh
c3Q8Q29kZUJsb2NrKj4ocG9pbnRlcikpOworCiAgICAgICAgIGFkZFdlYWtSZWZlcmVuY2UocG9p
bnRlcik7Ci0gICAgICAgIHJldHVybiBtX291dC5jb25zdEludFB0cihwb2ludGVyKTsKKyAgICAg
ICAgcmV0dXJuIG1fb3V0LndlYWtQb2ludGVyKG1fZ3JhcGgsIHBvaW50ZXIpOworICAgIH0KKwor
ICAgIExWYWx1ZSBmcm96ZW5Qb2ludGVyKEZyb3plblZhbHVlKiB2YWx1ZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX291dC53ZWFrUG9pbnRlcih2YWx1ZSk7CiAgICAgfQogCi0gICAgTFZhbHVl
IHdlYWtTdHJ1Y3R1cmVJRChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICBMVmFsdWUgd2Vha1N0
cnVjdHVyZUlEKFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJlKQogICAgIHsKLSAgICAgICAg
YWRkV2Vha1JlZmVyZW5jZShzdHJ1Y3R1cmUpOwogICAgICAgICByZXR1cm4gbV9vdXQuY29uc3RJ
bnQzMihzdHJ1Y3R1cmUtPmlkKCkpOwogICAgIH0KICAgICAKLSAgICBMVmFsdWUgd2Vha1N0cnVj
dHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICBMVmFsdWUgd2Vha1N0cnVjdHVyZShSZWdp
c3RlcmVkU3RydWN0dXJlIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIHJldHVybiB3ZWFrUG9p
bnRlcihzdHJ1Y3R1cmUpOworICAgICAgICBBU1NFUlQoISFzdHJ1Y3R1cmUuZ2V0KCkpOworICAg
ICAgICByZXR1cm4gbV9vdXQud2Vha1BvaW50ZXIobV9ncmFwaCwgc3RydWN0dXJlLmdldCgpKTsK
ICAgICB9CiAgICAgCiAgICAgVHlwZWRQb2ludGVyIGFkZHJlc3NGb3IoTFZhbHVlIGJhc2UsIGlu
dCBvcGVyYW5kLCBwdHJkaWZmX3Qgb2Zmc2V0ID0gMCkKQEAgLTEzODA5LDcgKzEzODI3LDkgQEAg
cHJpdmF0ZToKICAgICAgICAgbV9vdXQuY2FsbCgKICAgICAgICAgICAgIFZvaWQsCiAgICAgICAg
ICAgICBtX291dC5jb25zdEludFB0cihmdGxVbnJlYWNoYWJsZSksCi0gICAgICAgICAgICBtX291
dC5jb25zdEludFB0cihjb2RlQmxvY2soKSksIG1fb3V0LmNvbnN0SW50MzIoYmxvY2tJbmRleCks
CisgICAgICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRoZSBDb2RlQmxvY2sgdG8gaGF2ZSBhIHdl
YWsgcG9pbnRlciB0byBpdHNlbGYgYmVjYXVzZQorICAgICAgICAgICAgLy8gdGhhdCB3b3VsZCBj
YXVzZSBpdCB0byBhbHdheXMgZ2V0IGNvbGxlY3RlZC4KKyAgICAgICAgICAgIG1fb3V0LmNvbnN0
SW50UHRyKGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oY29kZUJsb2NrKCkpKSwgbV9vdXQuY29uc3RJ
bnQzMihibG9ja0luZGV4KSwKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIobm9kZUluZGV4
KSk7CiAjZW5kaWYKICAgICAgICAgbV9vdXQudW5yZWFjaGFibGUoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAkocmV2aXNpb24gMjExMjI5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQs
NyBAQAogI2luY2x1ZGUgIkZUTFZhbHVlRnJvbUJsb2NrLmgiCiAjaW5jbHVkZSAiRlRMV2VpZ2h0
LmgiCiAjaW5jbHVkZSAiRlRMV2VpZ2h0ZWRUYXJnZXQuaCIKKyNpbmNsdWRlICJIZWFwQ2VsbC5o
IgogI2luY2x1ZGUgPHd0Zi9PcmRlck1ha2VyLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50
U3RyZWFtLmg+CiAKQEAgLTEwNCw5ICsxMDUsMjkgQEAgcHVibGljOgogCiAgICAgTFZhbHVlIGNv
bnN0Qm9vbChib29sIHZhbHVlKTsKICAgICBMVmFsdWUgY29uc3RJbnQzMihpbnQzMl90IHZhbHVl
KTsKKworICAgIExWYWx1ZSB3ZWFrUG9pbnRlcihERkc6OkdyYXBoJiBncmFwaCwgSlNDZWxsKiBj
ZWxsKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGdyYXBoLm1fcGxhbi53ZWFrUmVmZXJlbmNlcy5j
b250YWlucyhjZWxsKSk7CisKKyAgICAgICAgaWYgKHNpemVvZih2b2lkKikgPT0gOCkKKyAgICAg
ICAgICAgIHJldHVybiBjb25zdEludDY0KGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4oY2VsbCkpOwor
ICAgICAgICByZXR1cm4gY29uc3RJbnQzMihiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KGNlbGwpKTsK
KyAgICB9CisKKyAgICBMVmFsdWUgd2Vha1BvaW50ZXIoREZHOjpGcm96ZW5WYWx1ZSogdmFsdWUp
CisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCh2YWx1ZS0+dmFsdWUoKS5pc0NlbGwoKSk7
CisKKyAgICAgICAgaWYgKHNpemVvZih2b2lkKikgPT0gOCkKKyAgICAgICAgICAgIHJldHVybiBj
b25zdEludDY0KGJpdHdpc2VfY2FzdDxpbnRwdHJfdD4odmFsdWUtPmNlbGwoKSkpOworICAgICAg
ICByZXR1cm4gY29uc3RJbnQzMihiaXR3aXNlX2Nhc3Q8aW50cHRyX3Q+KHZhbHVlLT5jZWxsKCkp
KTsKKyAgICB9CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIExWYWx1ZSBjb25zdElu
dFB0cihUKiB2YWx1ZSkKICAgICB7CisgICAgICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFz
ZV9vZjxIZWFwQ2VsbCwgVD46OnZhbHVlLCAiVG8gdXNlIGEgR0MgcG9pbnRlciwgdGhlIGdyYXBo
IG11c3QgYmUgYXdhcmUgb2YgaXQuIFVzZSBnY1BvaW50ZXIgaW5zdGVhZCBhbmQgbWFrZSBzdXJl
IHRoZSBncmFwaCBpcyBhd2FyZSBvZiB0aGlzIHJlZmVyZW5jZS4iKTsKICAgICAgICAgaWYgKHNp
emVvZih2b2lkKikgPT0gOCkKICAgICAgICAgICAgIHJldHVybiBjb25zdEludDY0KGJpdHdpc2Vf
Y2FzdDxpbnRwdHJfdD4odmFsdWUpKTsKICAgICAgICAgcmV0dXJuIGNvbnN0SW50MzIoYml0d2lz
ZV9jYXN0PGludHB0cl90Pih2YWx1ZSkpOwpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMTIyOSkKKysrIFNv
dXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTct
MDEtMjYgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgSGFyZGVu
IGhvdyB0aGUgY29tcGlsZXIgcmVmZXJlbmNlcyBHQyBvYmplY3RzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjcyNzcKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzMwMTc5NTA2PgorCisgICAgICAgIFJldmlld2VkIGJ5IEZpbGlwIFBpemxvLgorCisg
ICAgICAgIEkgbWFkZSBUaW55UHRyU2V0IHVzZSBiaXR3aXNlX2Nhc3QgaW5zdGVhZCBvZiBzdGF0
aWNfY2FzdAorICAgICAgICBmb3IgaXRzIHNpbmdsZUVudHJ5KCkgZnVuY3Rpb24gc28gdGhhdCBp
dCBjYW4gd29yayBvbiBwb2ludGVyLWxpa2UKKyAgICAgICAgdHlwZXMganVzdCBhcyBpdCBjYW4g
b24gYWN0dWFsIHBvaW50ZXIgdHlwZXMuCisgICAgICAgIAorICAgICAgICBBbiBleGFtcGxlIG9m
IHdoZXJlIHRoaXMgbWF0dGVycyBpcyB3aGVuIHlvdSBoYXZlIFRpbnlQdHJTZXQ8VD4KKyAgICAg
ICAgd2hlcmUgVCBpcyBkZWZpbmVkIHRvIGJlIGEgc3RydWN0IHdoaWNoIHdyYXBzIGEgcG9pbnRl
ciwgZS5nOgorICAgICAgICAKKyAgICAgICAgc3RydWN0IFQgeworICAgICAgICAgICAgdm9pZCog
bV9wb2ludGVyOworICAgICAgICB9CisKKyAgICAgICAgKiB3dGYvVGlueVB0clNldC5oOgorICAg
ICAgICAoV1RGOjpUaW55UHRyU2V0OjpzaW5nbGVFbnRyeSk6CisKIDIwMTctMDEtMjUgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgSW50cm9kdWNlIGFu
IGl0ZW0tcHJvdmlkZXItYmFzZWQgcGFzdGVib2FyZCB3cmFwcGVyCkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9UaW55UHRyU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvVGlueVB0clNl
dC5oCShyZXZpc2lvbiAyMTEyMjkpCisrKyBTb3VyY2UvV1RGL3d0Zi9UaW55UHRyU2V0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CiBjbGFzcyBUaW55UHRyU2V0IHsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVv
ZihUKSA9PSBzaXplb2Yodm9pZCopLCAiSXQncyBpbiB0aGUgdGl0bGUgb2YgdGhlIGNsYXNzLiIp
OwogcHVibGljOgogICAgIFRpbnlQdHJTZXQoKQogICAgICAgICA6IG1fcG9pbnRlcigwKQpAQCAt
NDc1LDcgKzQ3Niw3IEBAIHByaXZhdGU6CiAgICAgVCBzaW5nbGVFbnRyeSgpIGNvbnN0CiAgICAg
ewogICAgICAgICBBU1NFUlQoaXNUaGluKCkpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
VD4ocG9pbnRlcigpKTsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxUPihwb2ludGVyKCkp
OwogICAgIH0KICAgICAKICAgICBPdXRPZkxpbmVMaXN0KiBsaXN0KCkgY29uc3QK
</data>

          </attachment>
      

    </bug>

</bugzilla>