<?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>164904</bug_id>
          
          <creation_ts>2016-11-17 19:37:41 -0800</creation_ts>
          <short_desc>We should support CreateThis in the FTL</short_desc>
          <delta_ts>2018-07-23 09:15:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          <dependson>165208</dependson>
    
    <dependson>186237</dependson>
          <blocked>187891</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</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>realdawei</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>1252573</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-11-17 19:37:41 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253783</commentid>
    <comment_count>1</comment_count>
      <attachid>295471</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-11-27 15:06:57 -0800</bug_when>
    <thetext>Created attachment 295471
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253794</commentid>
    <comment_count>2</comment_count>
      <attachid>295471</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-11-27 16:38:37 -0800</bug_when>
    <thetext>Comment on attachment 295471
patch

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

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:9506
&gt; +        LValue callee = lowCell(m_node-&gt;child1());

You should do LBasicBlock lastNext = m_out.insertNewBlocksBefore(isFunctionBlock) here.  That way, if lowCell produces blocks, they will be nicely ordered.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:9507
&gt; +        m_out.branch(isFunction(callee, provenType(m_node-&gt;child1())), unsure(isFunctionBlock), unsure(slowPath));

Could this be usually(isFunctionBlock), rarely(slowPath)?  Our register allocator will do a better job on the slow path call this way.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:9508
&gt; +        LBasicBlock lastNext = m_out.appendTo(isFunctionBlock, hasRareData);

Then you don&apos;t need to save lastNext here.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:9511
&gt; +        m_out.branch(m_out.isZero64(rareData), unsure(slowPath), unsure(hasRareData));

Ditto.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:9528
&gt; +    }

You need m_out.mutatorFence() here because you just allocated an object.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:9961
&gt; +        LValue id = m_out.load32(structure, m_heaps.Structure_structureID);
&gt; +        LValue blob = m_out.load32(structure, m_heaps.Structure_initializationBlob);

You should have code to attempt to constant-fold these loads.  Maybe you can even add a helper in FTL::Output called m_out.constLoad32, which will check if its input LValue is a constant, and if so, it will just run the load and return the constant.  If you do this, you don&apos;t need to use templates and you don&apos;t need to duplicate the code for storeStructure.

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:9998
&gt; +    template &lt;typename StructureType&gt;
&gt;      LValue allocateObject(
&gt; -        LValue allocator, Structure* structure, LValue butterfly, LBasicBlock slowPath)
&gt; +        LValue allocator, StructureType structure, LValue butterfly, LBasicBlock slowPath)

This is strange: we&apos;re handling the possible constness of the allocator by using LValue and then querying if it&apos;s a constant, but instead of doing that for structure, you used templates.

I think that using LValue structure is better.  Places that want to do smart things in case it&apos;s a constant can extract that constant from the LValue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253921</commentid>
    <comment_count>3</comment_count>
      <attachid>295471</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-11-28 12:22:06 -0800</bug_when>
    <thetext>Comment on attachment 295471
patch

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

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:9506
&gt;&gt; +        LValue callee = lowCell(m_node-&gt;child1());
&gt; 
&gt; You should do LBasicBlock lastNext = m_out.insertNewBlocksBefore(isFunctionBlock) here.  That way, if lowCell produces blocks, they will be nicely ordered.

We don&apos;t really seem to do this elsewhere, do you think it&apos;s worth changing?

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:9507
&gt;&gt; +        m_out.branch(isFunction(callee, provenType(m_node-&gt;child1())), unsure(isFunctionBlock), unsure(slowPath));
&gt; 
&gt; Could this be usually(isFunctionBlock), rarely(slowPath)?  Our register allocator will do a better job on the slow path call this way.

I&apos;ll do this.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:9511
&gt;&gt; +        m_out.branch(m_out.isZero64(rareData), unsure(slowPath), unsure(hasRareData));
&gt; 
&gt; Ditto.

I&apos;ll change this too.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:9528
&gt;&gt; +    }
&gt; 
&gt; You need m_out.mutatorFence() here because you just allocated an object.

Will add.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:9998
&gt;&gt; +        LValue allocator, StructureType structure, LValue butterfly, LBasicBlock slowPath)
&gt; 
&gt; This is strange: we&apos;re handling the possible constness of the allocator by using LValue and then querying if it&apos;s a constant, but instead of doing that for structure, you used templates.
&gt; 
&gt; I think that using LValue structure is better.  Places that want to do smart things in case it&apos;s a constant can extract that constant from the LValue.

Ok I&apos;ll make it an LValue everwhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253948</commentid>
    <comment_count>4</comment_count>
      <attachid>295518</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-11-28 12:53:56 -0800</bug_when>
    <thetext>Created attachment 295518
patch

Addressed Fil&apos;s feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1254208</commentid>
    <comment_count>5</comment_count>
      <attachid>295518</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-11-28 22:01:23 -0800</bug_when>
    <thetext>Comment on attachment 295518
patch

Attachment 295518 did not pass ios-sim-ews (ios-simulator-wk2):
Output: http://webkit-queues.webkit.org/results/2586718

New failing tests:
intersection-observer/intersection-observer-entry-interface.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1254209</commentid>
    <comment_count>6</comment_count>
      <attachid>295582</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-11-28 22:01:27 -0800</bug_when>
    <thetext>Created attachment 295582
Archive of layout-test-results from ews124 for ios-simulator-wk2

The attached test failures were seen while running run-webkit-tests on the ios-sim-ews.
Bot: ews124  Port: ios-simulator-wk2  Platform: Mac OS X 10.11.6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1254375</commentid>
    <comment_count>7</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-11-29 11:50:09 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 295518 [details]
&gt; patch
&gt; 
&gt; Attachment 295518 [details] did not pass ios-sim-ews (ios-simulator-wk2):
&gt; Output: http://webkit-queues.webkit.org/results/2586718
&gt; 
&gt; New failing tests:
&gt; intersection-observer/intersection-observer-entry-interface.html

I seriously doubt this is actually from this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1254504</commentid>
    <comment_count>8</comment_count>
      <attachid>295518</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-11-29 15:11:36 -0800</bug_when>
    <thetext>Comment on attachment 295518
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1254641</commentid>
    <comment_count>9</comment_count>
      <attachid>295518</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-29 19:09:30 -0800</bug_when>
    <thetext>Comment on attachment 295518
patch

Clearing flags on attachment: 295518

Committed r209112: &lt;http://trac.webkit.org/changeset/209112&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1254642</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-29 19:09:34 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1254701</commentid>
    <comment_count>11</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-29 22:29:09 -0800</bug_when>
    <thetext>Hm, it seems that this patch causes regression in Octane/Raytrace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1254719</commentid>
    <comment_count>12</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-11-30 00:30:48 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Hm, it seems that this patch causes regression in Octane/Raytrace.

This is weird. I&apos;m investigating now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1254729</commentid>
    <comment_count>13</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-11-30 02:57:06 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; Hm, it seems that this patch causes regression in Octane/Raytrace.
&gt; 
&gt; This is weird. I&apos;m investigating now.

I&apos;m still not sure why it&apos;s slower. It&apos;s not because we&apos;re hitting the slow path more. So it must be because something else.

My current hypothesis is that it might be related to emitting a MultiGetByOffset instead of a GetById somewhere, which causes us to recompile. The reason I think this is that if I disable access inlining, the patch with FTL CreateThis runs faster. But if accessInlining is enabled, it&apos;s slower.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1254782</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-11-30 09:11:47 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; (In reply to comment #11)
&gt; &gt; &gt; Hm, it seems that this patch causes regression in Octane/Raytrace.
&gt; &gt; 
&gt; &gt; This is weird. I&apos;m investigating now.
&gt; 
&gt; I&apos;m still not sure why it&apos;s slower. It&apos;s not because we&apos;re hitting the slow
&gt; path more. So it must be because something else.
&gt; 
&gt; My current hypothesis is that it might be related to emitting a
&gt; MultiGetByOffset instead of a GetById somewhere, which causes us to
&gt; recompile. The reason I think this is that if I disable access inlining, the
&gt; patch with FTL CreateThis runs faster. But if accessInlining is enabled,
&gt; it&apos;s slower.

JetStream also regressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1254789</commentid>
    <comment_count>15</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-11-30 09:24:31 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; (In reply to comment #11)
&gt; &gt; &gt; Hm, it seems that this patch causes regression in Octane/Raytrace.
&gt; &gt; 
&gt; &gt; This is weird. I&apos;m investigating now.
&gt; 
&gt; I&apos;m still not sure why it&apos;s slower. It&apos;s not because we&apos;re hitting the slow
&gt; path more. So it must be because something else.
&gt; 
&gt; My current hypothesis is that it might be related to emitting a
&gt; MultiGetByOffset instead of a GetById somewhere, which causes us to
&gt; recompile. The reason I think this is that if I disable access inlining, the
&gt; patch with FTL CreateThis runs faster. But if accessInlining is enabled,
&gt; it&apos;s slower.

You probably broke object allocation sinking.

That&apos;s only effective in Raytrace if all arguments forwarding is consistently blown away.

It would be good to get this fixed rapidly so we don&apos;t lose test coverage on object allocation sinking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1254874</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-30 11:50:56 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 165208</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255014</commentid>
    <comment_count>17</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-11-30 15:17:56 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #13)
&gt; &gt; (In reply to comment #12)
&gt; &gt; &gt; (In reply to comment #11)
&gt; &gt; &gt; &gt; Hm, it seems that this patch causes regression in Octane/Raytrace.
&gt; &gt; &gt; 
&gt; &gt; &gt; This is weird. I&apos;m investigating now.
&gt; &gt; 
&gt; &gt; I&apos;m still not sure why it&apos;s slower. It&apos;s not because we&apos;re hitting the slow
&gt; &gt; path more. So it must be because something else.
&gt; &gt; 
&gt; &gt; My current hypothesis is that it might be related to emitting a
&gt; &gt; MultiGetByOffset instead of a GetById somewhere, which causes us to
&gt; &gt; recompile. The reason I think this is that if I disable access inlining, the
&gt; &gt; patch with FTL CreateThis runs faster. But if accessInlining is enabled,
&gt; &gt; it&apos;s slower.
&gt; 
&gt; You probably broke object allocation sinking.
&gt; 
&gt; That&apos;s only effective in Raytrace if all arguments forwarding is
&gt; consistently blown away.
&gt; 
&gt; It would be good to get this fixed rapidly so we don&apos;t lose test coverage on
&gt; object allocation sinking.
Yeah it appears to be because of this. But interestingly, it appears to be because we end up not inlining the constructor function as much. If I explicitly prevent the constructor from being FTL compiled, the regression is gone. This is extremely weird. I&apos;m still trying to figure out why the FTL compilation is preventing inlining.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255128</commentid>
    <comment_count>18</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-11-30 19:35:49 -0800</bug_when>
    <thetext>I&apos;m still quite confused as to why this is happening. One symptom (or maybe the cause) I&apos;ve noticed is happening is that we&apos;re not constant folding some GetByIds that we were constant folding before. This obviously prevents allocation sinking. But it also prevents inlining of a particular function call. So I think my next step is to figure out why we&apos;re not constant folding this anymore.

Also another interesting tidbit:
If I prevent the compilation of a particular constructor in the FTL (i.e, the top-level compilation), the perf regression goes away. So it&apos;s somewhat confusing that compiling the top-level function is somehow preventing optimizations when it gets inlined later on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255281</commentid>
    <comment_count>19</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-12-01 10:21:47 -0800</bug_when>
    <thetext>&gt; Also another interesting tidbit:
&gt; If I prevent the compilation of a particular constructor in the FTL (i.e,
&gt; the top-level compilation), the perf regression goes away. So it&apos;s somewhat
&gt; confusing that compiling the top-level function is somehow preventing
&gt; optimizations when it gets inlined later on.

Maybe the non-inlined version of the function produces a value profile that enables constant folding, whereas, for some reason, the inlined version does not propagate type information that&apos;s as precise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255319</commentid>
    <comment_count>20</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-12-01 11:16:33 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; &gt; Also another interesting tidbit:
&gt; &gt; If I prevent the compilation of a particular constructor in the FTL (i.e,
&gt; &gt; the top-level compilation), the perf regression goes away. So it&apos;s somewhat
&gt; &gt; confusing that compiling the top-level function is somehow preventing
&gt; &gt; optimizations when it gets inlined later on.
&gt; 
&gt; Maybe the non-inlined version of the function produces a value profile that
&gt; enables constant folding, whereas, for some reason, the inlined version does
&gt; not propagate type information that&apos;s as precise.

Right!

This could be one of those bugs caused by someone having things return Top in the prediction propagation phase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256205</commentid>
    <comment_count>21</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-12-04 13:38:32 -0800</bug_when>
    <thetext>Ok, so I&apos;m pretty sure that the bug is timing related. It&apos;s definitely timing related when running without the concurrent JIT, but it&apos;s probably timing related when running with the concurrent JIT, too, but that&apos;s hard to verify 100%.

Without the concurrent JIT, this is what happens:

In the benchmark, there is a function defined as:
```
var Class = {
  create: function(s) {
    function r() {
      this.initialize.apply(this, arguments);
    };
    return r;
  }
};
```

and then this is used like this:

```
var c1 = Class.create();
c1.prototype = {
  ... some properties
  initialize: function(...) { ... }
  ... more properties
}

var c2 = Class.create();
c2.prototype = {
  ... some properties
  initialize: function(...) { ... }
  ... more properties
}

... a few more Class.create() 

```

The issue is occurring with the &quot;initialize&quot; GetById inside the function &quot;r&quot;. What happens is this:

We tier up that function to the FTL before all the various Class.create() prototypes are seen by the inline cache. This isn&apos;t problematic if the get_by_id is compiled as GetById by the DFG, which it is. But it becomes a problem in the FTL, because we compile the get_by_id as MultiGetByOffset. Because the inline caching hasn&apos;t yet seen all the various prototype structures, the MultiGetByOffset will eventually exit when it starts to see new incoming structures. This exit then pollutes the GetByIdStatus when the function &quot;r&quot; gets inlined later on, causing us to not constant fold it because GetByIdStatus claims to take the slow path any time it sees an exit site with BadCache. Therefore, when &quot;r&quot; gets inlined, we end up with a GetById, instead of a constant value. This is one part of the slow down. The GetById prevents many occurrences of allocation sinking and inlining. Secondly, the DFG compile also slows us down because it continually exits after it gets compiled because it sees structures it hadn&apos;t anticipated. These together cause the total slow down.

I&apos;m trying to figure out the best way to prevent this behavior when we try to inline &quot;r&quot; because when we inline &quot;r&quot; we know exactly which structure will be produced by the incoming value to the get_by_id because the base always is a NewObject node. Because of this, I think it&apos;s safe to ignore the BadCache exit site because we&apos;ve proven what the incoming Structure is. That said, I&apos;m not sure if this will entirely eliminate the slow down, because the FTL compilation of the standalone &quot;r&quot; is slower than the DFG version because of the exits from MultiGetByOffset. Note that if I manually force this one MultiGetByOffset to become a GetById, the entire perf regression goes away and things might even be a little faster.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256222</commentid>
    <comment_count>22</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-12-04 15:30:57 -0800</bug_when>
    <thetext>Is this the &apos;this.initialize&apos; GetById?

If so, I think there are two bugs here.

1) We should constant fold this no matter what.

This one could be constant folded by AI if we taught AI how to constant-fold prototype loads.  This wouldn&apos;t be terribly hard:

- Structure needs to be able to tell you if there is a chance of any additional properties on top of the ones that the PropertyTable reports.
- If the base object has a known structure that excludes the property in question and the structure indicates that the property table exhaustively lists all properties, then we can proceed through the prototype chain.

See the code in GetByIdStatus that gets called from AI and ConstantFoldingPhase; it should have a FIXME to implement this.

2) The polyvariant GetById profiler should have chosen to trust the DFG&apos;s context-sensitive profile over the FTL&apos;s context-insensitive exit site.

The FTL was previously using the DFG&apos;s context-sensitive profiling of the GetById to observe that the GetById only ever needs one case.

This breaks if the FTL exits.

I think we just need to ensure that a context-insensitive exit site from the FTL does not affect decisions we make based on context-sensitive profiling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256415</commentid>
    <comment_count>23</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-12-05 11:51:27 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; Is this the &apos;this.initialize&apos; GetById?
&gt; 
&gt; If so, I think there are two bugs here.
&gt; 
&gt; 1) We should constant fold this no matter what.
&gt; 
&gt; This one could be constant folded by AI if we taught AI how to constant-fold
&gt; prototype loads.  This wouldn&apos;t be terribly hard:
&gt; 
&gt; - Structure needs to be able to tell you if there is a chance of any
&gt; additional properties on top of the ones that the PropertyTable reports.
&gt; - If the base object has a known structure that excludes the property in
&gt; question and the structure indicates that the property table exhaustively
&gt; lists all properties, then we can proceed through the prototype chain.
&gt; 
&gt; See the code in GetByIdStatus that gets called from AI and
&gt; ConstantFoldingPhase; it should have a FIXME to implement this.
&gt; 
&gt; 2) The polyvariant GetById profiler should have chosen to trust the DFG&apos;s
&gt; context-sensitive profile over the FTL&apos;s context-insensitive exit site.
&gt; 
&gt; The FTL was previously using the DFG&apos;s context-sensitive profiling of the
&gt; GetById to observe that the GetById only ever needs one case.
&gt; 
&gt; This breaks if the FTL exits.
&gt; 
&gt; I think we just need to ensure that a context-insensitive exit site from the
&gt; FTL does not affect decisions we make based on context-sensitive profiling.

I&apos;ve filed bugs for these:

(1): https://bugs.webkit.org/show_bug.cgi?id=164904
(2): https://bugs.webkit.org/show_bug.cgi?id=165396</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1256416</commentid>
    <comment_count>24</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-12-05 11:52:57 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; (In reply to comment #22)
&gt; &gt; Is this the &apos;this.initialize&apos; GetById?
&gt; &gt; 
&gt; &gt; If so, I think there are two bugs here.
&gt; &gt; 
&gt; &gt; 1) We should constant fold this no matter what.
&gt; &gt; 
&gt; &gt; This one could be constant folded by AI if we taught AI how to constant-fold
&gt; &gt; prototype loads.  This wouldn&apos;t be terribly hard:
&gt; &gt; 
&gt; &gt; - Structure needs to be able to tell you if there is a chance of any
&gt; &gt; additional properties on top of the ones that the PropertyTable reports.
&gt; &gt; - If the base object has a known structure that excludes the property in
&gt; &gt; question and the structure indicates that the property table exhaustively
&gt; &gt; lists all properties, then we can proceed through the prototype chain.
&gt; &gt; 
&gt; &gt; See the code in GetByIdStatus that gets called from AI and
&gt; &gt; ConstantFoldingPhase; it should have a FIXME to implement this.
&gt; &gt; 
&gt; &gt; 2) The polyvariant GetById profiler should have chosen to trust the DFG&apos;s
&gt; &gt; context-sensitive profile over the FTL&apos;s context-insensitive exit site.
&gt; &gt; 
&gt; &gt; The FTL was previously using the DFG&apos;s context-sensitive profiling of the
&gt; &gt; GetById to observe that the GetById only ever needs one case.
&gt; &gt; 
&gt; &gt; This breaks if the FTL exits.
&gt; &gt; 
&gt; &gt; I think we just need to ensure that a context-insensitive exit site from the
&gt; &gt; FTL does not affect decisions we make based on context-sensitive profiling.
&gt; 
&gt; I&apos;ve filed bugs for these:
&gt; 
&gt; (1): https://bugs.webkit.org/show_bug.cgi?id=164904
&gt; (2): https://bugs.webkit.org/show_bug.cgi?id=165396
Oops, (1) should be: https://bugs.webkit.org/show_bug.cgi?id=165395</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402647</commentid>
    <comment_count>25</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-28 10:01:37 -0800</bug_when>
    <thetext>I&apos;ve a bit investigated it.
I crafted GetById AI rule to load value from prototype or upper, introduced CreateThis -&gt; NewObject conversion rule in AI, and updated this patch.
Yeah, now, GetById is gone. But I still saw performance regression.
I think that early MultiGetByOffset causes FTL OSR exit, and it involves materializations, and running this FTL code with OSR exit causes severe performance regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1425247</commentid>
    <comment_count>26</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-05-18 12:36:00 -0700</bug_when>
    <thetext>We should fix this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1425253</commentid>
    <comment_count>27</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-05-18 12:54:29 -0700</bug_when>
    <thetext>Thinking about this more, I think we need this approach:

1) Implement the GetById proto folding.  We should do that anyway, independent of this patch.

2) Figure out if we can make the exit profiling smarter.  The way that the GetById gets turned into a monomorphic access is via the polyvariant profiler, if I remember right.  That profiler is apparently getting overridden by the MultiGetByOffset&apos;s exit site. But, if we&apos;re in polyvariant mode then we&apos;re asking about the previous outcomes of that DFG or FTL code block being inlined at our inline stack. Maybe all we need to do is modify FrequentExitSite&apos;s ExitingJITType to differentiate between uninlined contexts and inlined contexts when using exit sites as an override for the outcome of a polyvariant profiling decision.

3) Figure out how to not use MultiGetByOffset here.  It seems that the IC probably grows between when we tier up from baseline to DFG and when we tier up from DFG to FTL.  Maybe we can use that as a hint that MultiGetByOffset is now a good idea: if more crap was added to it in the time between finishing the DFG compile and when started the FTL compile then we probably don&apos;t want to inline it.  Note that the DFG&apos;s version of the IC might have fewer cases than the baseline version.  So the heuristic shouldn&apos;t be number of cases, it should be: if the DFG&apos;s IC for this get_by_id saw any case that can&apos;t be handled by the cases of the baseline&apos;s IC, then don&apos;t do MultiGetByOffset.  If that doesn&apos;t work at preventing emission of the MultiGetByOffset, then we can explore trying to understand the timing of repatchings of the MultiGetByOffset - it sorta knows whether it saw all of the structures it would see in a short period of time or if it saw them in a slow trickle.  Or maybe we can figure out how to make the IC track this.  With that information, we could probably pick with high confidence if MultiGetByOffset would be profitable.

4) We have an awesome optimization for richards that tries to prevent tiny functions from being FTL compiled because we are going to inline them anyway.  I wonder why that doesn&apos;t work here!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427889</commentid>
    <comment_count>28</comment_count>
      <attachid>341446</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-05-27 22:15:36 -0700</bug_when>
    <thetext>Created attachment 341446
attempting a fix

I found out what&apos;s going on and it&apos;s more subtle than I expected.

First of all, there&apos;s no easy way of getting the FTL to emit anything other than a MultiGetByOffset inside initialize without also breaking MultiGetByOffset for other benchmarks in JetStream.  There&apos;s a MultiGetByOffset in richards that looks indistinguishable in all ways, and that one wants to be a MultiGetByOffset.

The reason why OSR exiting from FTL creates a bad situation is disturbing.  A DFG or FTL compile with a GetById means that the baseline get_by_id stops seeing new structures.  Baseline ICs are the ones used for GetByIdStatus etc, so this means that optimized compiles hide future polymorphism from the ICs used as profiling input to other compilations of that same code block, for example in case of inlining.  If the FTL emits a GetById or if the FTL compile doesn&apos;t happen, raytrace runs quickly because the IC for this GetById never gets crazy in baseline.  But if FTL emits a MultiGetByOffset and then exits, then baseline sees the full polymorphism and ends up claiming that it takes slow path.

The biggest bug here is that DFG and FTL ICs hide information from profiling in this way. The polyvariant profiler does save us sometimes, but not when the code block gets inlined in a place where it&apos;s never been inlined before.

This may be fixable with improved polyvariant profiling. The biggest hole in the polyvariant profile is that if the DFG ends up inlining the access then we don&apos;t get a polyvariant profile at all. This patch tries to fix that issue, but I&apos;m not sure if it&apos;s the right approach.  It has the benefit that FTL compiles of DFG compiles that got good profiling will also get the same good profiling.

One observation that I made is that this problem mostly goes away if we allow PolymorphicAccess to cache up to 13 variants.  If we do this, then the DFG bytecode parser&apos;s filtering of GetByIdVariants filters this down to one case.  It&apos;s importnat that this filtering happens in the bytecode parser since that&apos;s what unlocks the subsequent inlining.

I think that means that the right approach not only adds GetByIdStatus prototype folding but invokes it in the DFG bytecode parser.

In a weird way, getting the FTL to emit a MultiGetByOffset is what fixes the baseline profile.  But we do need to fix that problem as well.  If we&apos;re sucking profiling data from a baseline code block then we should also look at whether it has a replacement, and if that replacement has an IC as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427890</commentid>
    <comment_count>29</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-05-27 22:17:25 -0700</bug_when>
    <thetext>(In reply to Filip Pizlo from comment #27)
&gt; Thinking about this more, I think we need this approach:
&gt; 
&gt; 1) Implement the GetById proto folding.  We should do that anyway,
&gt; independent of this patch.

The key here is to implement proto folding that also runs in the bytecode parser!

raytrace depends on us chain-folding a bunch of things to fold this GetById down to a constant so that the call instruction that uses it can get inlined.  So, whatever folding we do to benefit this GetById needs to run both in the AI and at bytecode parse time.

&gt; 
&gt; 2) Figure out if we can make the exit profiling smarter.  The way that the
&gt; GetById gets turned into a monomorphic access is via the polyvariant
&gt; profiler, if I remember right.  That profiler is apparently getting
&gt; overridden by the MultiGetByOffset&apos;s exit site. But, if we&apos;re in polyvariant
&gt; mode then we&apos;re asking about the previous outcomes of that DFG or FTL code
&gt; block being inlined at our inline stack. Maybe all we need to do is modify
&gt; FrequentExitSite&apos;s ExitingJITType to differentiate between uninlined
&gt; contexts and inlined contexts when using exit sites as an override for the
&gt; outcome of a polyvariant profiling decision.
&gt; 
&gt; 3) Figure out how to not use MultiGetByOffset here.  It seems that the IC
&gt; probably grows between when we tier up from baseline to DFG and when we tier
&gt; up from DFG to FTL.  Maybe we can use that as a hint that MultiGetByOffset
&gt; is now a good idea: if more crap was added to it in the time between
&gt; finishing the DFG compile and when started the FTL compile then we probably
&gt; don&apos;t want to inline it.  Note that the DFG&apos;s version of the IC might have
&gt; fewer cases than the baseline version.  So the heuristic shouldn&apos;t be number
&gt; of cases, it should be: if the DFG&apos;s IC for this get_by_id saw any case that
&gt; can&apos;t be handled by the cases of the baseline&apos;s IC, then don&apos;t do
&gt; MultiGetByOffset.  If that doesn&apos;t work at preventing emission of the
&gt; MultiGetByOffset, then we can explore trying to understand the timing of
&gt; repatchings of the MultiGetByOffset - it sorta knows whether it saw all of
&gt; the structures it would see in a short period of time or if it saw them in a
&gt; slow trickle.  Or maybe we can figure out how to make the IC track this. 
&gt; With that information, we could probably pick with high confidence if
&gt; MultiGetByOffset would be profitable.

This doesn&apos;t work here.  At the time the FTL runs, the baseline and DFG IC both report four cases.

&gt; 
&gt; 4) We have an awesome optimization for richards that tries to prevent tiny
&gt; functions from being FTL compiled because we are going to inline them
&gt; anyway.  I wonder why that doesn&apos;t work here!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427982</commentid>
    <comment_count>30</comment_count>
      <attachid>341462</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-05-28 18:02:48 -0700</bug_when>
    <thetext>Created attachment 341462
more

I&apos;ve confirmed that if the DFG never figures out how to inline that dreaded IC, but the FTL always figures it out, then we will be within 4% of trunk perf.  This means that all I need to do is figure out how to make this work using polyvariant profiling.

This means strengthening polyvariant profiling as follows:

- Need to record the GetByIdStatus that bytecode parser or constant folder used to fold a GetById.  This allows us to see polyvariant profiles of things that got folded.  This recored GetByIdStatus needs to be filtered by the backend, in case we proved some of the cases away.  This lets future compiles start out with the proof in hand.

- Polyvariant profiling needs to search all available stacks, not just the ones attached to the machine code block.

- Need to ignore uninlined FTL OSR exits when making decisions using polyvariant profiles.

I think that the way that I&apos;m improving the polyvariant profiler will implicitly fix the problem where DFG or FTL code blocks&apos; ICs can hide future polymorphism from the IC profiling.  Now, if we are compiling foo and we have are looking at something in bar with the inline stack foo-&gt;bar, then we will look for profiling associated with optimized foo-&gt;bar, optimized bar, and baseline bar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428295</commentid>
    <comment_count>31</comment_count>
      <attachid>341542</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-05-29 17:18:17 -0700</bug_when>
    <thetext>Created attachment 341542
more

Still more work to do</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428312</commentid>
    <comment_count>32</comment_count>
      <attachid>341545</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-05-29 17:56:57 -0700</bug_when>
    <thetext>Created attachment 341545
CallLinkStatus is starting to look sensible</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428610</commentid>
    <comment_count>33</comment_count>
      <attachid>341604</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-05-30 14:48:49 -0700</bug_when>
    <thetext>Created attachment 341604
DFG/FTL filtering of statuses seems to be written</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428634</commentid>
    <comment_count>34</comment_count>
      <attachid>341611</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-05-30 15:39:42 -0700</bug_when>
    <thetext>Created attachment 341611
GetByIdStatus is starting to look good</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428648</commentid>
    <comment_count>35</comment_count>
      <attachid>341614</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-05-30 16:20:13 -0700</bug_when>
    <thetext>Created attachment 341614
maybe it&apos;s done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428786</commentid>
    <comment_count>36</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-05-31 02:28:14 -0700</bug_when>
    <thetext>Attachment 341614 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/ExitFlag.h:54:  Missing spaces around |  [whitespace/operators] [3]
ERROR: Source/JavaScriptCore/bytecode/BytecodeDumper.h:42:  The parameter name &quot;statusMap&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/BytecodeDumper.h:43:  The parameter name &quot;statusMap&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/RecordedStatuses.h:49:  The parameter name &quot;slotVisitor&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGNodeType.h:479:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 5 in 59 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>1429010</commentid>
    <comment_count>37</comment_count>
      <attachid>341693</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-05-31 14:54:31 -0700</bug_when>
    <thetext>Created attachment 341693
slowly getting it to compile</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429044</commentid>
    <comment_count>38</comment_count>
      <attachid>341703</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-05-31 16:41:06 -0700</bug_when>
    <thetext>Created attachment 341703
more

Still not compiling :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429132</commentid>
    <comment_count>39</comment_count>
      <attachid>341728</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-05-31 20:53:05 -0700</bug_when>
    <thetext>Created attachment 341728
wow it compiles!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429320</commentid>
    <comment_count>40</comment_count>
      <attachid>341779</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-06-01 12:35:53 -0700</bug_when>
    <thetext>Created attachment 341779
recursive polyvariant profiling appears to work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429428</commentid>
    <comment_count>41</comment_count>
      <attachid>341807</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-06-01 16:57:41 -0700</bug_when>
    <thetext>Created attachment 341807
more

It fails a lot of tests and still cannot run raytrace, but it does polyvariant type inference better than what we had before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429454</commentid>
    <comment_count>42</comment_count>
      <attachid>341811</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-06-01 17:53:06 -0700</bug_when>
    <thetext>Created attachment 341811
so close

Raytrace appears to benefit nicely from this polyvariant profiler.  It seems to infer all of the calls.  To make raytrace neutral, I just need to make object allocation sinking ignore the new Filter nodes.  I&apos;ll do that later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429475</commentid>
    <comment_count>43</comment_count>
      <attachid>341817</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-06-01 19:34:26 -0700</bug_when>
    <thetext>Created attachment 341817
it makes raytrace neutral!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429502</commentid>
    <comment_count>44</comment_count>
      <attachid>341825</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-06-01 21:26:35 -0700</bug_when>
    <thetext>Created attachment 341825
passing so many tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429574</commentid>
    <comment_count>45</comment_count>
      <attachid>341848</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-06-02 11:35:22 -0700</bug_when>
    <thetext>Created attachment 341848
it works!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429577</commentid>
    <comment_count>46</comment_count>
      <attachid>341849</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-06-02 12:45:13 -0700</bug_when>
    <thetext>Created attachment 341849
rebased patch

It turns out that I had to implement all of the same things for InById.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429578</commentid>
    <comment_count>47</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-06-02 12:47:08 -0700</bug_when>
    <thetext>Attachment 341849 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/PutByIdStatus.h:77:  The parameter name &quot;contextStack&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/ExitFlag.h:54:  Missing spaces around |  [whitespace/operators] [3]
ERROR: Source/JavaScriptCore/bytecode/BytecodeDumper.h:42:  The parameter name &quot;statusMap&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/BytecodeDumper.h:43:  The parameter name &quot;statusMap&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGNodeType.h:479:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/bytecode/RecordedStatuses.h:51:  The parameter name &quot;slotVisitor&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/InByIdStatus.h:64:  The parameter name &quot;contextStack&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 7 in 80 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>1429581</commentid>
    <comment_count>48</comment_count>
      <attachid>341850</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-06-02 13:13:14 -0700</bug_when>
    <thetext>Created attachment 341850
fix build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429582</commentid>
    <comment_count>49</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-06-02 13:16:32 -0700</bug_when>
    <thetext>Attachment 341850 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/PutByIdStatus.h:77:  The parameter name &quot;contextStack&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/ExitFlag.h:54:  Missing spaces around |  [whitespace/operators] [3]
ERROR: Source/JavaScriptCore/bytecode/BytecodeDumper.h:42:  The parameter name &quot;statusMap&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/BytecodeDumper.h:43:  The parameter name &quot;statusMap&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGNodeType.h:479:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/bytecode/RecordedStatuses.h:51:  The parameter name &quot;slotVisitor&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/InByIdStatus.h:64:  The parameter name &quot;contextStack&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 7 in 80 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>1429583</commentid>
    <comment_count>50</comment_count>
      <attachid>341851</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-06-02 13:30:27 -0700</bug_when>
    <thetext>Created attachment 341851
fix build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429584</commentid>
    <comment_count>51</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-06-02 13:32:57 -0700</bug_when>
    <thetext>Attachment 341851 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/PutByIdStatus.h:77:  The parameter name &quot;contextStack&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/ExitFlag.h:54:  Missing spaces around |  [whitespace/operators] [3]
ERROR: Source/JavaScriptCore/bytecode/BytecodeDumper.h:42:  The parameter name &quot;statusMap&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/BytecodeDumper.h:43:  The parameter name &quot;statusMap&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGNodeType.h:479:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/bytecode/RecordedStatuses.h:51:  The parameter name &quot;slotVisitor&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/InByIdStatus.h:64:  The parameter name &quot;contextStack&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 7 in 80 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>1429587</commentid>
    <comment_count>52</comment_count>
      <attachid>341849</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-06-02 13:54:45 -0700</bug_when>
    <thetext>Comment on attachment 341849
rebased patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:21
&gt; +          that the helper was compiled by the DFG, the baseline get_by_id would not see those cases.

Yeah, this should be fixed!!!

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1446
&gt; +        if (JITCode::isOptimizingJIT(jitType())) {
&gt; +            DFG::CommonData* dfgCommon = m_jitCode-&gt;dfgCommon();
&gt; +            for (auto&amp; pair : dfgCommon-&gt;recordedStatuses.calls)
&gt; +                result.add(pair.first, ICStatus()).iterator-&gt;value.callStatus = pair.second.get();
&gt; +            for (auto&amp; pair : dfgCommon-&gt;recordedStatuses.gets)
&gt; +                result.add(pair.first, ICStatus()).iterator-&gt;value.getStatus = pair.second.get();
&gt; +            for (auto&amp; pair : dfgCommon-&gt;recordedStatuses.puts)
&gt; +                result.add(pair.first, ICStatus()).iterator-&gt;value.putStatus = pair.second.get();
&gt; +            for (auto&amp; pair : dfgCommon-&gt;recordedStatuses.ins)
&gt; +                result.add(pair.first, ICStatus()).iterator-&gt;value.inStatus = pair.second.get();
&gt; +        }

Yay

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6678
&gt; +    if (Options::usePolyvariantDevirtualization()) {
&gt; +        CodeBlock* optimizedBlock = m_profiledBlock-&gt;replacement();
&gt; +        m_optimizedContext.optimizedCodeBlock = optimizedBlock;
&gt; +        if (optimizedBlock) {
&gt; +            ConcurrentJSLocker locker(optimizedBlock-&gt;m_lock);
&gt; +            optimizedBlock-&gt;getICStatusMap(locker, m_optimizedContext.map);
&gt;          }
&gt;      }
&gt; +    byteCodeParser-&gt;m_icContextStack.append(&amp;m_optimizedContext);

Nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429634</commentid>
    <comment_count>53</comment_count>
      <attachid>341851</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-06-02 20:04:32 -0700</bug_when>
    <thetext>Comment on attachment 341851
fix build

Attachment 341851 did not pass win-ews (win):
Output: http://webkit-queues.webkit.org/results/7952595

New failing tests:
http/tests/security/canvas-remote-read-remote-video-blocked-no-crossorigin.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429635</commentid>
    <comment_count>54</comment_count>
      <attachid>341861</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-06-02 20:04:43 -0700</bug_when>
    <thetext>Created attachment 341861
Archive of layout-test-results from ews205 for win-future

The attached test failures were seen while running run-webkit-tests on the win-ews.
Bot: ews205  Port: win-future  Platform: CYGWIN_NT-6.1-2.9.0-0.318-5-3-x86_64-64bit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429928</commentid>
    <comment_count>55</comment_count>
      <attachid>341924</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-06-04 15:36:05 -0700</bug_when>
    <thetext>Created attachment 341924
working to fix ARES-6 regression</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430703</commentid>
    <comment_count>56</comment_count>
      <attachid>342117</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-06-06 21:37:01 -0700</bug_when>
    <thetext>Created attachment 342117
fixed a bunch of perf bugs

- CallLinkInfo forgets to record when it goes virtual.  It&apos;s crazy that this ever worked.

- PutByIdVariant in Transition mode doesn&apos;t know how to merge with itself.  This creates weird pathologies now that we rely on variant merging more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430906</commentid>
    <comment_count>57</comment_count>
      <attachid>342182</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-06-07 10:05:39 -0700</bug_when>
    <thetext>Created attachment 342182
neutral on JetStream, ARES-6, and Speedometer2

Still gotta test Speedometer2.  The last version was a definitely Speedometer2 regression in the neighborhood of 1.5%, but that was before I fixed issues in PutByIdVariant and CallLinkInfo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430922</commentid>
    <comment_count>58</comment_count>
      <attachid>342182</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-06-07 10:42:44 -0700</bug_when>
    <thetext>Comment on attachment 342182
neutral on JetStream, ARES-6, and Speedometer2

It&apos;s neutral on Speedometer2 now!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430927</commentid>
    <comment_count>59</comment_count>
      <attachid>342188</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-06-07 10:47:59 -0700</bug_when>
    <thetext>Created attachment 342188
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430933</commentid>
    <comment_count>60</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-06-07 10:51:07 -0700</bug_when>
    <thetext>Attachment 342188 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/ExitFlag.h:54:  Missing spaces around |  [whitespace/operators] [3]
ERROR: Source/JavaScriptCore/bytecode/PutByIdStatus.h:98:  The parameter name &quot;contextStack&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGNodeType.h:481:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/bytecode/BytecodeDumper.h:42:  The parameter name &quot;statusMap&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/BytecodeDumper.h:43:  The parameter name &quot;statusMap&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/RecordedStatuses.h:51:  The parameter name &quot;slotVisitor&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/InByIdStatus.h:84:  The parameter name &quot;contextStack&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 7 in 91 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>1430987</commentid>
    <comment_count>61</comment_count>
      <attachid>342188</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-06-07 12:30:34 -0700</bug_when>
    <thetext>Comment on attachment 342188
the patch

Attachment 342188 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.webkit.org/results/8061581

New failing tests:
accessibility/smart-invert-reference.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430988</commentid>
    <comment_count>62</comment_count>
      <attachid>342200</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-06-07 12:30:36 -0700</bug_when>
    <thetext>Created attachment 342200
Archive of layout-test-results from ews106 for mac-sierra-wk2

The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews.
Bot: ews106  Port: mac-sierra-wk2  Platform: Mac OS X 10.12.6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1430991</commentid>
    <comment_count>63</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-06-07 12:41:52 -0700</bug_when>
    <thetext>(In reply to Build Bot from comment #61)
&gt; Comment on attachment 342188 [details]
&gt; the patch
&gt; 
&gt; Attachment 342188 [details] did not pass mac-wk2-ews (mac-wk2):
&gt; Output: http://webkit-queues.webkit.org/results/8061581
&gt; 
&gt; New failing tests:
&gt; accessibility/smart-invert-reference.html

Seems super unlikely that this is my patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1431119</commentid>
    <comment_count>64</comment_count>
      <attachid>342188</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-06-07 20:16:40 -0700</bug_when>
    <thetext>Comment on attachment 342188
the patch

r=me with windows fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435915</commentid>
    <comment_count>65</comment_count>
      <attachid>343463</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-06-23 19:47:40 -0700</bug_when>
    <thetext>Created attachment 343463
rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435916</commentid>
    <comment_count>66</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-06-23 19:50:11 -0700</bug_when>
    <thetext>Attachment 343463 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/ExitFlag.h:54:  Missing spaces around |  [whitespace/operators] [3]
ERROR: Source/JavaScriptCore/bytecode/PutByIdStatus.h:98:  The parameter name &quot;contextStack&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGNodeType.h:481:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/bytecode/BytecodeDumper.h:42:  The parameter name &quot;statusMap&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/BytecodeDumper.h:43:  The parameter name &quot;statusMap&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/RecordedStatuses.h:51:  The parameter name &quot;slotVisitor&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/bytecode/InByIdStatus.h:84:  The parameter name &quot;contextStack&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 7 in 90 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>1444105</commentid>
    <comment_count>67</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-07-21 19:48:42 -0700</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/234086/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444106</commentid>
    <comment_count>68</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-07-21 19:50:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/42472172&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444137</commentid>
    <comment_count>69</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-07-22 09:26:29 -0700</bug_when>
    <thetext>It seems that https://arewefastyet.com/#machine=29&amp;view=single&amp;suite=six-speed&amp;subtest=destructuring-es6 is regressed. Due to breaking object allocation sinking? (for iterator object)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444140</commentid>
    <comment_count>70</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-07-22 09:30:26 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #69)
&gt; It seems that
&gt; https://arewefastyet.com/#machine=29&amp;view=single&amp;suite=six-
&gt; speed&amp;subtest=destructuring-es6 is regressed. Due to breaking object
&gt; allocation sinking? (for iterator object)?

It&apos;s possible!  Ideally, adding coverage to the FTL should be neutral, but it usually isn&apos;t since it knocks us off our local maximum of tuning.  This patch is 20x larger than just the patch adding CreateThis to FTL to make it neutral on our own tuning benchmarks.  It achieved neutrality by essentially retuning the whole engine.

One option is to roll out the patch and have the patch grow some more to add more retuning.

But I think that it&apos;s better if we do more tuning in follow-on patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444142</commentid>
    <comment_count>71</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-07-22 09:35:35 -0700</bug_when>
    <thetext>(In reply to Filip Pizlo from comment #70)
&gt; (In reply to Yusuke Suzuki from comment #69)
&gt; &gt; It seems that
&gt; &gt; https://arewefastyet.com/#machine=29&amp;view=single&amp;suite=six-
&gt; &gt; speed&amp;subtest=destructuring-es6 is regressed. Due to breaking object
&gt; &gt; allocation sinking? (for iterator object)?
&gt; 
&gt; It&apos;s possible!  Ideally, adding coverage to the FTL should be neutral, but
&gt; it usually isn&apos;t since it knocks us off our local maximum of tuning.  This
&gt; patch is 20x larger than just the patch adding CreateThis to FTL to make it
&gt; neutral on our own tuning benchmarks.  It achieved neutrality by essentially
&gt; retuning the whole engine.
&gt; 
&gt; One option is to roll out the patch and have the patch grow some more to add
&gt; more retuning.
&gt; 
&gt; But I think that it&apos;s better if we do more tuning in follow-on patches.

I&apos;ve a bit investigated. And I&apos;ve found that in DFGByteCodeParser, looking up &quot;return&quot; property at bc#212 is changed from,

CheckStructure() + JSConstant(undefined) =&gt; GetById(id{return}).

I think this causes materialization in FTL. Not sure why this happens yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444150</commentid>
    <comment_count>72</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-07-22 10:55:32 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #71)
&gt; (In reply to Filip Pizlo from comment #70)
&gt; &gt; (In reply to Yusuke Suzuki from comment #69)
&gt; &gt; &gt; It seems that
&gt; &gt; &gt; https://arewefastyet.com/#machine=29&amp;view=single&amp;suite=six-
&gt; &gt; &gt; speed&amp;subtest=destructuring-es6 is regressed. Due to breaking object
&gt; &gt; &gt; allocation sinking? (for iterator object)?
&gt; &gt; 
&gt; &gt; It&apos;s possible!  Ideally, adding coverage to the FTL should be neutral, but
&gt; &gt; it usually isn&apos;t since it knocks us off our local maximum of tuning.  This
&gt; &gt; patch is 20x larger than just the patch adding CreateThis to FTL to make it
&gt; &gt; neutral on our own tuning benchmarks.  It achieved neutrality by essentially
&gt; &gt; retuning the whole engine.
&gt; &gt; 
&gt; &gt; One option is to roll out the patch and have the patch grow some more to add
&gt; &gt; more retuning.
&gt; &gt; 
&gt; &gt; But I think that it&apos;s better if we do more tuning in follow-on patches.
&gt; 
&gt; I&apos;ve a bit investigated. And I&apos;ve found that in DFGByteCodeParser, looking
&gt; up &quot;return&quot; property at bc#212 is changed from,
&gt; 
&gt; CheckStructure() + JSConstant(undefined) =&gt; GetById(id{return}).
&gt; 
&gt; I think this causes materialization in FTL. Not sure why this happens yet.

I think it reveals a bit interesting existing bug.
When we have Absent state OPC, and multiple Absent state OPCs are merged in GetByVariant merging phase, it seems that it becomes invalid since `!mergedConditionSet.hasOneSlotBaseCondition()` becomes true.
I think this condition seems incorrect... I&apos;ll upload a patch in a separate bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444156</commentid>
    <comment_count>73</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-07-22 11:13:17 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #72)
&gt; (In reply to Yusuke Suzuki from comment #71)
&gt; &gt; (In reply to Filip Pizlo from comment #70)
&gt; &gt; &gt; (In reply to Yusuke Suzuki from comment #69)
&gt; &gt; &gt; &gt; It seems that
&gt; &gt; &gt; &gt; https://arewefastyet.com/#machine=29&amp;view=single&amp;suite=six-
&gt; &gt; &gt; &gt; speed&amp;subtest=destructuring-es6 is regressed. Due to breaking object
&gt; &gt; &gt; &gt; allocation sinking? (for iterator object)?
&gt; &gt; &gt; 
&gt; &gt; &gt; It&apos;s possible!  Ideally, adding coverage to the FTL should be neutral, but
&gt; &gt; &gt; it usually isn&apos;t since it knocks us off our local maximum of tuning.  This
&gt; &gt; &gt; patch is 20x larger than just the patch adding CreateThis to FTL to make it
&gt; &gt; &gt; neutral on our own tuning benchmarks.  It achieved neutrality by essentially
&gt; &gt; &gt; retuning the whole engine.
&gt; &gt; &gt; 
&gt; &gt; &gt; One option is to roll out the patch and have the patch grow some more to add
&gt; &gt; &gt; more retuning.
&gt; &gt; &gt; 
&gt; &gt; &gt; But I think that it&apos;s better if we do more tuning in follow-on patches.
&gt; &gt; 
&gt; &gt; I&apos;ve a bit investigated. And I&apos;ve found that in DFGByteCodeParser, looking
&gt; &gt; up &quot;return&quot; property at bc#212 is changed from,
&gt; &gt; 
&gt; &gt; CheckStructure() + JSConstant(undefined) =&gt; GetById(id{return}).
&gt; &gt; 
&gt; &gt; I think this causes materialization in FTL. Not sure why this happens yet.
&gt; 
&gt; I think it reveals a bit interesting existing bug.
&gt; When we have Absent state OPC, and multiple Absent state OPCs are merged in
&gt; GetByVariant merging phase, it seems that it becomes invalid since
&gt; `!mergedConditionSet.hasOneSlotBaseCondition()` becomes true.
&gt; I think this condition seems incorrect... I&apos;ll upload a patch in a separate
&gt; bug.

https://bugs.webkit.org/show_bug.cgi?id=187891 WIP, but the pre-reviews are welcome!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444271</commentid>
    <comment_count>74</comment_count>
    <who name="Dawei Fenton (:realdawei)">realdawei</who>
    <bug_when>2018-07-23 08:50:48 -0700</bug_when>
    <thetext>(In reply to Filip Pizlo from comment #67)
&gt; Landed in https://trac.webkit.org/changeset/234086/webkit

Windows is failing to build after this revision

Sample Log:
https://build.webkit.org/builders/Apple%20Win%20Debug%20%28Build%29/builds/10497/steps/compile-webkit/logs/stdio

C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/GetByIdStatus.cpp(323): error C3861: &apos;computeForStubInfoWithoutExitSiteFeedback&apos;: identifier not found (compiling source file C:\cygwin\home\buildbot\slave\win-debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-sources\UnifiedSource29.cpp) [C:\cygwin\home\buildbot\slave\win-debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
  UnifiedSource33.cpp
C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/CallLinkStatus.cpp(344): error C2027: use of undefined type &apos;JSC::CallLinkInfo&apos; (compiling source file C:\cygwin\home\buildbot\slave\win-debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-sources\UnifiedSource26.cpp) [C:\cygwin\home\buildbot\slave\win-debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
  c:\cygwin\home\buildbot\slave\win-debug\build\source\javascriptcore\bytecode\CallLinkStatus.h(42): note: see declaration of &apos;JSC::CallLinkInfo&apos; (compiling source file C:\cygwin\home\buildbot\slave\win-debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-sources\UnifiedSource26.cpp)
C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/CallLinkStatus.cpp(344): error C2227: left of &apos;-&gt;codeOrigin&apos; must point to class/struct/union/generic type (compiling source file C:\cygwin\home\buildbot\slave\win-debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-sources\UnifiedSource26.cpp) [C:\cygwin\home\buildbot\slave\win-debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/CallLinkStatus.cpp(350): error C2661: &apos;JSC::CallLinkStatus::computeFor&apos;: no overloaded function takes 5 arguments (compiling source file C:\cygwin\home\buildbot\slave\win-debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-sources\UnifiedSource26.cpp) [C:\cygwin\home\buildbot\slave\win-debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
  UnifiedSource34.cpp
C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/InByIdStatus.cpp(95): error C3861: &apos;computeForStubInfoWithoutExitSiteFeedback&apos;: identifier not found (compiling source file C:\cygwin\home\buildbot\slave\win-debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-sources\UnifiedSource30.cpp) [C:\cygwin\home\buildbot\slave\win-debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
  UnifiedSource35.cpp
C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/CodeBlock.cpp(1420): error C2027: use of undefined type &apos;JSC::DFG::CommonData&apos; (compiling source file C:\cygwin\home\buildbot\slave\win-debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-sources\UnifiedSource27.cpp) [C:\cygwin\home\buildbot\slave\win-debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
  C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\jit\JITCode.h(39): note: see declaration of &apos;JSC::DFG::CommonData&apos; (compiling source file C:\cygwin\home\buildbot\slave\win-debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-sources\UnifiedSource27.cpp)
C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/CodeBlock.cpp(1420): error C2227: left of &apos;-&gt;recordedStatuses&apos; must point to class/struct/union/generic type (compiling source file C:\cygwin\home\buildbot\slave\win-debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-sources\UnifiedSource27.cpp) [C:\cygwin\home\buildbot\slave\win-debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/CodeBlock.cpp(1420): error C2228: left of &apos;.finalize&apos; must have class/struct/union (compiling source file C:\cygwin\home\buildbot\slave\win-debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-sources\UnifiedSource27.cpp) [C:\cygwin\home\buildbot\slave\win-debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
  UnifiedSource36.cpp
  UnifiedSource37.cpp
  UnifiedSource38.cpp
  UnifiedSource39.cpp
C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/PutByIdStatus.cpp(250): error C3861: &apos;hasExitSite&apos;: identifier not found (compiling source file C:\cygwin\home\buildbot\slave\win-debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-sources\UnifiedSource33.cpp) [C:\cygwin\home\buildbot\slave\win-debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/PutByIdStatus.cpp(272): error C3861: &apos;computeForStubInfo&apos;: identifier not found (compiling source file C:\cygwin\home\buildbot\slave\win-debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-sources\UnifiedSource33.cpp) [C:\cygwin\home\buildbot\slave\win-debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
  UnifiedSource40.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444272</commentid>
    <comment_count>75</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-07-23 08:51:35 -0700</bug_when>
    <thetext>(In reply to David Fenton (:realdawei) from comment #74)
&gt; (In reply to Filip Pizlo from comment #67)
&gt; &gt; Landed in https://trac.webkit.org/changeset/234086/webkit
&gt; 
&gt; Windows is failing to build after this revision
&gt; 
&gt; Sample Log:
&gt; https://build.webkit.org/builders/Apple%20Win%20Debug%20%28Build%29/builds/
&gt; 10497/steps/compile-webkit/logs/stdio
&gt; 
&gt; C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/
&gt; GetByIdStatus.cpp(323): error C3861:
&gt; &apos;computeForStubInfoWithoutExitSiteFeedback&apos;: identifier not found (compiling
&gt; source file
&gt; C:\cygwin\home\buildbot\slave\win-
&gt; debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-
&gt; sources\UnifiedSource29.cpp)
&gt; [C:\cygwin\home\buildbot\slave\win-
&gt; debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
&gt;   UnifiedSource33.cpp
&gt; C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/
&gt; CallLinkStatus.cpp(344): error C2027: use of undefined type
&gt; &apos;JSC::CallLinkInfo&apos; (compiling source file
&gt; C:\cygwin\home\buildbot\slave\win-
&gt; debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-
&gt; sources\UnifiedSource26.cpp)
&gt; [C:\cygwin\home\buildbot\slave\win-
&gt; debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
&gt;  
&gt; c:\cygwin\home\buildbot\slave\win-
&gt; debug\build\source\javascriptcore\bytecode\CallLinkStatus.h(42): note: see
&gt; declaration of &apos;JSC::CallLinkInfo&apos; (compiling source file
&gt; C:\cygwin\home\buildbot\slave\win-
&gt; debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-
&gt; sources\UnifiedSource26.cpp)
&gt; C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/
&gt; CallLinkStatus.cpp(344): error C2227: left of &apos;-&gt;codeOrigin&apos; must point to
&gt; class/struct/union/generic type (compiling source file
&gt; C:\cygwin\home\buildbot\slave\win-
&gt; debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-
&gt; sources\UnifiedSource26.cpp)
&gt; [C:\cygwin\home\buildbot\slave\win-
&gt; debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
&gt; C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/
&gt; CallLinkStatus.cpp(350): error C2661: &apos;JSC::CallLinkStatus::computeFor&apos;: no
&gt; overloaded function takes 5 arguments (compiling source file
&gt; C:\cygwin\home\buildbot\slave\win-
&gt; debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-
&gt; sources\UnifiedSource26.cpp)
&gt; [C:\cygwin\home\buildbot\slave\win-
&gt; debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
&gt;   UnifiedSource34.cpp
&gt; C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/
&gt; InByIdStatus.cpp(95): error C3861:
&gt; &apos;computeForStubInfoWithoutExitSiteFeedback&apos;: identifier not found (compiling
&gt; source file
&gt; C:\cygwin\home\buildbot\slave\win-
&gt; debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-
&gt; sources\UnifiedSource30.cpp)
&gt; [C:\cygwin\home\buildbot\slave\win-
&gt; debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
&gt;   UnifiedSource35.cpp
&gt; C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/
&gt; CodeBlock.cpp(1420): error C2027: use of undefined type
&gt; &apos;JSC::DFG::CommonData&apos; (compiling source file
&gt; C:\cygwin\home\buildbot\slave\win-
&gt; debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-
&gt; sources\UnifiedSource27.cpp)
&gt; [C:\cygwin\home\buildbot\slave\win-
&gt; debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
&gt;  
&gt; C:\cygwin\home\buildbot\slave\win-
&gt; debug\build\Source\JavaScriptCore\jit\JITCode.h(39): note: see declaration
&gt; of &apos;JSC::DFG::CommonData&apos; (compiling source file
&gt; C:\cygwin\home\buildbot\slave\win-
&gt; debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-
&gt; sources\UnifiedSource27.cpp)
&gt; C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/
&gt; CodeBlock.cpp(1420): error C2227: left of &apos;-&gt;recordedStatuses&apos; must point to
&gt; class/struct/union/generic type (compiling source file
&gt; C:\cygwin\home\buildbot\slave\win-
&gt; debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-
&gt; sources\UnifiedSource27.cpp)
&gt; [C:\cygwin\home\buildbot\slave\win-
&gt; debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
&gt; C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/
&gt; CodeBlock.cpp(1420): error C2228: left of &apos;.finalize&apos; must have
&gt; class/struct/union (compiling source file
&gt; C:\cygwin\home\buildbot\slave\win-
&gt; debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-
&gt; sources\UnifiedSource27.cpp)
&gt; [C:\cygwin\home\buildbot\slave\win-
&gt; debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
&gt;   UnifiedSource36.cpp
&gt;   UnifiedSource37.cpp
&gt;   UnifiedSource38.cpp
&gt;   UnifiedSource39.cpp
&gt; C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/
&gt; PutByIdStatus.cpp(250): error C3861: &apos;hasExitSite&apos;: identifier not found
&gt; (compiling source file
&gt; C:\cygwin\home\buildbot\slave\win-
&gt; debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-
&gt; sources\UnifiedSource33.cpp)
&gt; [C:\cygwin\home\buildbot\slave\win-
&gt; debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
&gt; C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/
&gt; PutByIdStatus.cpp(272): error C3861: &apos;computeForStubInfo&apos;: identifier not
&gt; found (compiling source file
&gt; C:\cygwin\home\buildbot\slave\win-
&gt; debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-
&gt; sources\UnifiedSource33.cpp)
&gt; [C:\cygwin\home\buildbot\slave\win-
&gt; debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
&gt;   UnifiedSource40.cpp

Looking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444276</commentid>
    <comment_count>76</comment_count>
    <who name="Dawei Fenton (:realdawei)">realdawei</who>
    <bug_when>2018-07-23 09:05:35 -0700</bug_when>
    <thetext>(In reply to Filip Pizlo from comment #75)
&gt; (In reply to David Fenton (:realdawei) from comment #74)
&gt; &gt; (In reply to Filip Pizlo from comment #67)
&gt; &gt; &gt; Landed in https://trac.webkit.org/changeset/234086/webkit
&gt; &gt; 
&gt; &gt; Windows is failing to build after this revision
&gt; &gt; 
&gt; &gt; Sample Log:
&gt; &gt; https://build.webkit.org/builders/Apple%20Win%20Debug%20%28Build%29/builds/
&gt; &gt; 10497/steps/compile-webkit/logs/stdio
&gt; &gt; 
&gt; &gt; C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/
&gt; &gt; GetByIdStatus.cpp(323): error C3861:
&gt; &gt; &apos;computeForStubInfoWithoutExitSiteFeedback&apos;: identifier not found (compiling
&gt; &gt; source file
&gt; &gt; C:\cygwin\home\buildbot\slave\win-
&gt; &gt; debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-
&gt; &gt; sources\UnifiedSource29.cpp)
&gt; &gt; [C:\cygwin\home\buildbot\slave\win-
&gt; &gt; debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
&gt; &gt;   UnifiedSource33.cpp
&gt; &gt; C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/
&gt; &gt; CallLinkStatus.cpp(344): error C2027: use of undefined type
&gt; &gt; &apos;JSC::CallLinkInfo&apos; (compiling source file
&gt; &gt; C:\cygwin\home\buildbot\slave\win-
&gt; &gt; debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-
&gt; &gt; sources\UnifiedSource26.cpp)
&gt; &gt; [C:\cygwin\home\buildbot\slave\win-
&gt; &gt; debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
&gt; &gt;  
&gt; &gt; c:\cygwin\home\buildbot\slave\win-
&gt; &gt; debug\build\source\javascriptcore\bytecode\CallLinkStatus.h(42): note: see
&gt; &gt; declaration of &apos;JSC::CallLinkInfo&apos; (compiling source file
&gt; &gt; C:\cygwin\home\buildbot\slave\win-
&gt; &gt; debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-
&gt; &gt; sources\UnifiedSource26.cpp)
&gt; &gt; C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/
&gt; &gt; CallLinkStatus.cpp(344): error C2227: left of &apos;-&gt;codeOrigin&apos; must point to
&gt; &gt; class/struct/union/generic type (compiling source file
&gt; &gt; C:\cygwin\home\buildbot\slave\win-
&gt; &gt; debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-
&gt; &gt; sources\UnifiedSource26.cpp)
&gt; &gt; [C:\cygwin\home\buildbot\slave\win-
&gt; &gt; debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
&gt; &gt; C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/
&gt; &gt; CallLinkStatus.cpp(350): error C2661: &apos;JSC::CallLinkStatus::computeFor&apos;: no
&gt; &gt; overloaded function takes 5 arguments (compiling source file
&gt; &gt; C:\cygwin\home\buildbot\slave\win-
&gt; &gt; debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-
&gt; &gt; sources\UnifiedSource26.cpp)
&gt; &gt; [C:\cygwin\home\buildbot\slave\win-
&gt; &gt; debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
&gt; &gt;   UnifiedSource34.cpp
&gt; &gt; C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/
&gt; &gt; InByIdStatus.cpp(95): error C3861:
&gt; &gt; &apos;computeForStubInfoWithoutExitSiteFeedback&apos;: identifier not found (compiling
&gt; &gt; source file
&gt; &gt; C:\cygwin\home\buildbot\slave\win-
&gt; &gt; debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-
&gt; &gt; sources\UnifiedSource30.cpp)
&gt; &gt; [C:\cygwin\home\buildbot\slave\win-
&gt; &gt; debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
&gt; &gt;   UnifiedSource35.cpp
&gt; &gt; C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/
&gt; &gt; CodeBlock.cpp(1420): error C2027: use of undefined type
&gt; &gt; &apos;JSC::DFG::CommonData&apos; (compiling source file
&gt; &gt; C:\cygwin\home\buildbot\slave\win-
&gt; &gt; debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-
&gt; &gt; sources\UnifiedSource27.cpp)
&gt; &gt; [C:\cygwin\home\buildbot\slave\win-
&gt; &gt; debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
&gt; &gt;  
&gt; &gt; C:\cygwin\home\buildbot\slave\win-
&gt; &gt; debug\build\Source\JavaScriptCore\jit\JITCode.h(39): note: see declaration
&gt; &gt; of &apos;JSC::DFG::CommonData&apos; (compiling source file
&gt; &gt; C:\cygwin\home\buildbot\slave\win-
&gt; &gt; debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-
&gt; &gt; sources\UnifiedSource27.cpp)
&gt; &gt; C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/
&gt; &gt; CodeBlock.cpp(1420): error C2227: left of &apos;-&gt;recordedStatuses&apos; must point to
&gt; &gt; class/struct/union/generic type (compiling source file
&gt; &gt; C:\cygwin\home\buildbot\slave\win-
&gt; &gt; debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-
&gt; &gt; sources\UnifiedSource27.cpp)
&gt; &gt; [C:\cygwin\home\buildbot\slave\win-
&gt; &gt; debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
&gt; &gt; C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/
&gt; &gt; CodeBlock.cpp(1420): error C2228: left of &apos;.finalize&apos; must have
&gt; &gt; class/struct/union (compiling source file
&gt; &gt; C:\cygwin\home\buildbot\slave\win-
&gt; &gt; debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-
&gt; &gt; sources\UnifiedSource27.cpp)
&gt; &gt; [C:\cygwin\home\buildbot\slave\win-
&gt; &gt; debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
&gt; &gt;   UnifiedSource36.cpp
&gt; &gt;   UnifiedSource37.cpp
&gt; &gt;   UnifiedSource38.cpp
&gt; &gt;   UnifiedSource39.cpp
&gt; &gt; C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/
&gt; &gt; PutByIdStatus.cpp(250): error C3861: &apos;hasExitSite&apos;: identifier not found
&gt; &gt; (compiling source file
&gt; &gt; C:\cygwin\home\buildbot\slave\win-
&gt; &gt; debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-
&gt; &gt; sources\UnifiedSource33.cpp)
&gt; &gt; [C:\cygwin\home\buildbot\slave\win-
&gt; &gt; debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
&gt; &gt; C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/
&gt; &gt; PutByIdStatus.cpp(272): error C3861: &apos;computeForStubInfo&apos;: identifier not
&gt; &gt; found (compiling source file
&gt; &gt; C:\cygwin\home\buildbot\slave\win-
&gt; &gt; debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-
&gt; &gt; sources\UnifiedSource33.cpp)
&gt; &gt; [C:\cygwin\home\buildbot\slave\win-
&gt; &gt; debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
&gt; &gt;   UnifiedSource40.cpp
&gt; 
&gt; Looking.

thanks, it also broke LLINT CLoop
https://build.webkit.org/builders/Apple%20High%20Sierra%20LLINT%20CLoop%20%28BuildAndTest%29/builds/7507/steps/compile-webkit/logs/stdio

./bytecode/CallLinkStatus.cpp:81:18: error: unused parameter &apos;exitSiteData&apos; [-Werror,-Wunused-parameter]
./bytecode/CallLinkStatus.cpp:344:84: error: member access into incomplete type &apos;JSC::CallLinkInfo&apos;
./bytecode/CallLinkStatus.cpp:348:26: error: no matching function for call to &apos;computeFor&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444280</commentid>
    <comment_count>77</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2018-07-23 09:13:59 -0700</bug_when>
    <thetext>(In reply to David Fenton (:realdawei) from comment #76)
&gt; (In reply to Filip Pizlo from comment #75)
&gt; &gt; (In reply to David Fenton (:realdawei) from comment #74)
&gt; &gt; &gt; (In reply to Filip Pizlo from comment #67)
&gt; &gt; &gt; &gt; Landed in https://trac.webkit.org/changeset/234086/webkit
&gt; &gt; &gt; 
&gt; &gt; &gt; Windows is failing to build after this revision
&gt; &gt; &gt; 
&gt; &gt; &gt; Sample Log:
&gt; &gt; &gt; https://build.webkit.org/builders/Apple%20Win%20Debug%20%28Build%29/builds/
&gt; &gt; &gt; 10497/steps/compile-webkit/logs/stdio
&gt; &gt; &gt; 
&gt; &gt; &gt; C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/
&gt; &gt; &gt; GetByIdStatus.cpp(323): error C3861:
&gt; &gt; &gt; &apos;computeForStubInfoWithoutExitSiteFeedback&apos;: identifier not found (compiling
&gt; &gt; &gt; source file
&gt; &gt; &gt; C:\cygwin\home\buildbot\slave\win-
&gt; &gt; &gt; debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-
&gt; &gt; &gt; sources\UnifiedSource29.cpp)
&gt; &gt; &gt; [C:\cygwin\home\buildbot\slave\win-
&gt; &gt; &gt; debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
&gt; &gt; &gt;   UnifiedSource33.cpp
&gt; &gt; &gt; C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/
&gt; &gt; &gt; CallLinkStatus.cpp(344): error C2027: use of undefined type
&gt; &gt; &gt; &apos;JSC::CallLinkInfo&apos; (compiling source file
&gt; &gt; &gt; C:\cygwin\home\buildbot\slave\win-
&gt; &gt; &gt; debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-
&gt; &gt; &gt; sources\UnifiedSource26.cpp)
&gt; &gt; &gt; [C:\cygwin\home\buildbot\slave\win-
&gt; &gt; &gt; debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
&gt; &gt; &gt;  
&gt; &gt; &gt; c:\cygwin\home\buildbot\slave\win-
&gt; &gt; &gt; debug\build\source\javascriptcore\bytecode\CallLinkStatus.h(42): note: see
&gt; &gt; &gt; declaration of &apos;JSC::CallLinkInfo&apos; (compiling source file
&gt; &gt; &gt; C:\cygwin\home\buildbot\slave\win-
&gt; &gt; &gt; debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-
&gt; &gt; &gt; sources\UnifiedSource26.cpp)
&gt; &gt; &gt; C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/
&gt; &gt; &gt; CallLinkStatus.cpp(344): error C2227: left of &apos;-&gt;codeOrigin&apos; must point to
&gt; &gt; &gt; class/struct/union/generic type (compiling source file
&gt; &gt; &gt; C:\cygwin\home\buildbot\slave\win-
&gt; &gt; &gt; debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-
&gt; &gt; &gt; sources\UnifiedSource26.cpp)
&gt; &gt; &gt; [C:\cygwin\home\buildbot\slave\win-
&gt; &gt; &gt; debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
&gt; &gt; &gt; C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/
&gt; &gt; &gt; CallLinkStatus.cpp(350): error C2661: &apos;JSC::CallLinkStatus::computeFor&apos;: no
&gt; &gt; &gt; overloaded function takes 5 arguments (compiling source file
&gt; &gt; &gt; C:\cygwin\home\buildbot\slave\win-
&gt; &gt; &gt; debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-
&gt; &gt; &gt; sources\UnifiedSource26.cpp)
&gt; &gt; &gt; [C:\cygwin\home\buildbot\slave\win-
&gt; &gt; &gt; debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
&gt; &gt; &gt;   UnifiedSource34.cpp
&gt; &gt; &gt; C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/
&gt; &gt; &gt; InByIdStatus.cpp(95): error C3861:
&gt; &gt; &gt; &apos;computeForStubInfoWithoutExitSiteFeedback&apos;: identifier not found (compiling
&gt; &gt; &gt; source file
&gt; &gt; &gt; C:\cygwin\home\buildbot\slave\win-
&gt; &gt; &gt; debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-
&gt; &gt; &gt; sources\UnifiedSource30.cpp)
&gt; &gt; &gt; [C:\cygwin\home\buildbot\slave\win-
&gt; &gt; &gt; debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
&gt; &gt; &gt;   UnifiedSource35.cpp
&gt; &gt; &gt; C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/
&gt; &gt; &gt; CodeBlock.cpp(1420): error C2027: use of undefined type
&gt; &gt; &gt; &apos;JSC::DFG::CommonData&apos; (compiling source file
&gt; &gt; &gt; C:\cygwin\home\buildbot\slave\win-
&gt; &gt; &gt; debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-
&gt; &gt; &gt; sources\UnifiedSource27.cpp)
&gt; &gt; &gt; [C:\cygwin\home\buildbot\slave\win-
&gt; &gt; &gt; debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
&gt; &gt; &gt;  
&gt; &gt; &gt; C:\cygwin\home\buildbot\slave\win-
&gt; &gt; &gt; debug\build\Source\JavaScriptCore\jit\JITCode.h(39): note: see declaration
&gt; &gt; &gt; of &apos;JSC::DFG::CommonData&apos; (compiling source file
&gt; &gt; &gt; C:\cygwin\home\buildbot\slave\win-
&gt; &gt; &gt; debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-
&gt; &gt; &gt; sources\UnifiedSource27.cpp)
&gt; &gt; &gt; C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/
&gt; &gt; &gt; CodeBlock.cpp(1420): error C2227: left of &apos;-&gt;recordedStatuses&apos; must point to
&gt; &gt; &gt; class/struct/union/generic type (compiling source file
&gt; &gt; &gt; C:\cygwin\home\buildbot\slave\win-
&gt; &gt; &gt; debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-
&gt; &gt; &gt; sources\UnifiedSource27.cpp)
&gt; &gt; &gt; [C:\cygwin\home\buildbot\slave\win-
&gt; &gt; &gt; debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
&gt; &gt; &gt; C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/
&gt; &gt; &gt; CodeBlock.cpp(1420): error C2228: left of &apos;.finalize&apos; must have
&gt; &gt; &gt; class/struct/union (compiling source file
&gt; &gt; &gt; C:\cygwin\home\buildbot\slave\win-
&gt; &gt; &gt; debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-
&gt; &gt; &gt; sources\UnifiedSource27.cpp)
&gt; &gt; &gt; [C:\cygwin\home\buildbot\slave\win-
&gt; &gt; &gt; debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
&gt; &gt; &gt;   UnifiedSource36.cpp
&gt; &gt; &gt;   UnifiedSource37.cpp
&gt; &gt; &gt;   UnifiedSource38.cpp
&gt; &gt; &gt;   UnifiedSource39.cpp
&gt; &gt; &gt; C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/
&gt; &gt; &gt; PutByIdStatus.cpp(250): error C3861: &apos;hasExitSite&apos;: identifier not found
&gt; &gt; &gt; (compiling source file
&gt; &gt; &gt; C:\cygwin\home\buildbot\slave\win-
&gt; &gt; &gt; debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-
&gt; &gt; &gt; sources\UnifiedSource33.cpp)
&gt; &gt; &gt; [C:\cygwin\home\buildbot\slave\win-
&gt; &gt; &gt; debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
&gt; &gt; &gt; C:\cygwin\home\buildbot\slave\win-debug\build\Source\JavaScriptCore\bytecode/
&gt; &gt; &gt; PutByIdStatus.cpp(272): error C3861: &apos;computeForStubInfo&apos;: identifier not
&gt; &gt; &gt; found (compiling source file
&gt; &gt; &gt; C:\cygwin\home\buildbot\slave\win-
&gt; &gt; &gt; debug\build\WebKitBuild\Debug\DerivedSources\JavaScriptCore\unified-
&gt; &gt; &gt; sources\UnifiedSource33.cpp)
&gt; &gt; &gt; [C:\cygwin\home\buildbot\slave\win-
&gt; &gt; &gt; debug\build\WebKitBuild\Debug\Source\JavaScriptCore\JavaScriptCore.vcxproj]
&gt; &gt; &gt;   UnifiedSource40.cpp
&gt; &gt; 
&gt; &gt; Looking.
&gt; 
&gt; thanks, it also broke LLINT CLoop
&gt; https://build.webkit.org/builders/
&gt; Apple%20High%20Sierra%20LLINT%20CLoop%20%28BuildAndTest%29/builds/7507/steps/
&gt; compile-webkit/logs/stdio
&gt; 
&gt; ./bytecode/CallLinkStatus.cpp:81:18: error: unused parameter &apos;exitSiteData&apos;
&gt; [-Werror,-Wunused-parameter]
&gt; ./bytecode/CallLinkStatus.cpp:344:84: error: member access into incomplete
&gt; type &apos;JSC::CallLinkInfo&apos;
&gt; ./bytecode/CallLinkStatus.cpp:348:26: error: no matching function for call
&gt; to &apos;computeFor&apos;

No-JIT build fix landed in r234097.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444283</commentid>
    <comment_count>78</comment_count>
    <who name="Dawei Fenton (:realdawei)">realdawei</who>
    <bug_when>2018-07-23 09:15:38 -0700</bug_when>
    <thetext>*** Bug 187908 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295471</attachid>
            <date>2016-11-27 15:06:57 -0800</date>
            <delta_ts>2016-11-28 12:53:56 -0800</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>8642</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA4OTkyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBA
CisyMDE2LTExLTI3ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFdlIHNob3VsZCBzdXBwb3J0IENyZWF0ZVRoaXMgaW4gdGhlIEZUTAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0OTA0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3Bw
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDcmVhdGVUaGlzKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3RvcmVTdHJ1Y3R1cmUpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjphbGxvY2F0ZUNlbGwpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppbml0aWFsaXplSW5saW5lU3RvcmFn
ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmFsbG9jYXRlT2JqZWN0
KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorCiAyMDE2LTExLTI2ICBZdXN1a2Ug
U3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtXVEZdIEltcG9ydCBz
dGQ6Om9wdGlvbmFsIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBhcyBXVEY6Ok9wdGlvbmFsCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuaAkocmV2aXNpb24gMjA4OTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYg
KzY3LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3JvKEpTRnVu
Y3Rpb25fZXhlY3V0YWJsZSwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZFeGVjdXRhYmxlKCkpIFwKICAg
ICBtYWNybyhKU0Z1bmN0aW9uX3Njb3BlLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlNjb3BlQ2hhaW4o
KSkgXAogICAgIG1hY3JvKEpTRnVuY3Rpb25fcmFyZURhdGEsIEpTRnVuY3Rpb246Om9mZnNldE9m
UmFyZURhdGEoKSkgXAorICAgIG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFfYWxsb2NhdG9yLCBGdW5j
dGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RB
bGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZBbGxvY2F0b3IoKSkgXAorICAgIG1hY3JvKEZ1bmN0
aW9uUmFyZURhdGFfc3RydWN0dXJlLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFs
bG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZTdHJ1
Y3R1cmUoKSkgXAogICAgIG1hY3JvKEpTT2JqZWN0X2J1dHRlcmZseSwgSlNPYmplY3Q6OmJ1dHRl
cmZseU9mZnNldCgpKSBcCiAgICAgbWFjcm8oSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yX2NhY2hl
ZElubGluZUNhcGFjaXR5LCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNhY2hlZElubGluZUNh
cGFjaXR5T2Zmc2V0KCkpIFwKICAgICBtYWNybyhKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3JfY2Fj
aGVkUHJvcGVydHlOYW1lc1ZlY3RvciwgSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOjpjYWNoZWRQ
cm9wZXJ0eU5hbWVzVmVjdG9yT2Zmc2V0KCkpIFwKQEAgLTEwNyw2ICsxMDksOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8oU3RydWN0dXJlX2dsb2JhbE9iamVj
dCwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVy
ZV9wcm90b3R5cGUsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkpIFwKICAgICBtYWNybyhT
dHJ1Y3R1cmVfc3RydWN0dXJlSUQsIFN0cnVjdHVyZTo6c3RydWN0dXJlSURPZmZzZXQoKSkgXAor
ICAgIG1hY3JvKFN0cnVjdHVyZV9pbmxpbmVDYXBhY2l0eSwgU3RydWN0dXJlOjppbmxpbmVDYXBh
Y2l0eU9mZnNldCgpKSBcCisgICAgbWFjcm8oU3RydWN0dXJlX2luaXRpYWxpemF0aW9uQmxvYiwg
U3RydWN0dXJlOjppbmRleGluZ1R5cGVJbmNsdWRpbmdIaXN0b3J5T2Zmc2V0KCkpIFwKICAgICBt
YWNybyhKU01hcF9oYXNoTWFwSW1wbCwgSlNNYXA6Om9mZnNldE9mSGFzaE1hcEltcGwoKSkgXAog
ICAgIG1hY3JvKEpTU2V0X2hhc2hNYXBJbXBsLCBKU1NldDo6b2Zmc2V0T2ZIYXNoTWFwSW1wbCgp
KSBcCiAgICAgbWFjcm8oSGFzaE1hcEltcGxfY2FwYWNpdHksIEhhc2hNYXBJbXBsPEhhc2hNYXBC
dWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+Pjo6b2Zmc2V0T2ZDYXBhY2l0eSgpKSBcCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCShyZXZp
c2lvbiAyMDg5OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGll
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3OSw2ICsyNzksNyBAQCBpbmxpbmUgQ2FwYWJpbGl0
eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBDaGVja0RPTToKICAgICBjYXNlIENh
bGxET006CiAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOgorICAgIGNhc2UgQ3JlYXRlVGhpczoKICAg
ICAgICAgLy8gVGhlc2UgYXJlIE9LLgogICAgICAgICBicmVhazsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjA4OTkx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDczLDYgKzEwNzMsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENh
bGxET01HZXR0ZXI6CiAgICAgICAgICAgICBjb21waWxlQ2FsbERPTUdldHRlcigpOwogICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3JlYXRlVGhpczoKKyAgICAgICAgICAgIGNvbXBp
bGVDcmVhdGVUaGlzKCk7CisgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFBoYW50
b21Mb2NhbDoKICAgICAgICAgY2FzZSBMb29wSGludDoKQEAgLTk0OTIsNiArOTQ5NSwzNyBAQCBw
cml2YXRlOgogICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzID0gRWZmZWN0czo6Zm9yQ2FsbCgp
OwogICAgICAgICBzZXRKU1ZhbHVlKHBhdGNocG9pbnQpOwogICAgIH0KKworICAgIHZvaWQgY29t
cGlsZUNyZWF0ZVRoaXMoKQorICAgIHsKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNGdW5jdGlvbkJs
b2NrID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgaGFzUmFyZURhdGEg
PSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CisKKyAgICAgICAgTFZhbHVlIGNhbGxlZSA9IGxvd0NlbGwobV9ub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgIG1fb3V0LmJyYW5jaChpc0Z1bmN0aW9uKGNhbGxlZSwgcHJvdmVuVHlw
ZShtX25vZGUtPmNoaWxkMSgpKSksIHVuc3VyZShpc0Z1bmN0aW9uQmxvY2spLCB1bnN1cmUoc2xv
d1BhdGgpKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhp
c0Z1bmN0aW9uQmxvY2ssIGhhc1JhcmVEYXRhKTsKKyAgICAgICAgTFZhbHVlIHJhcmVEYXRhID0g
bV9vdXQubG9hZFB0cihjYWxsZWUsIG1faGVhcHMuSlNGdW5jdGlvbl9yYXJlRGF0YSk7CisKKyAg
ICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmlzWmVybzY0KHJhcmVEYXRhKSwgdW5zdXJlKHNsb3dQ
YXRoKSwgdW5zdXJlKGhhc1JhcmVEYXRhKSk7CisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGhhc1Jh
cmVEYXRhLCBzbG93UGF0aCk7CisKKyAgICAgICAgTFZhbHVlIGFsbG9jYXRvciA9IG1fb3V0Lmxv
YWRQdHIocmFyZURhdGEsIG1faGVhcHMuRnVuY3Rpb25SYXJlRGF0YV9hbGxvY2F0b3IpOworICAg
ICAgICBMVmFsdWUgc3RydWN0dXJlID0gbV9vdXQubG9hZFB0cihyYXJlRGF0YSwgbV9oZWFwcy5G
dW5jdGlvblJhcmVEYXRhX3N0cnVjdHVyZSk7CisgICAgICAgIExWYWx1ZSBidXR0ZXJmbHkgPSBt
X291dC5jb25zdEludFB0cigwKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9
IG1fb3V0LmFuY2hvcihhbGxvY2F0ZU9iamVjdChhbGxvY2F0b3IsIHN0cnVjdHVyZSwgYnV0dGVy
Zmx5LCBzbG93UGF0aCkpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIFZh
bHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKAorICAgICAgICAg
ICAgSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25DcmVhdGVUaGlzKSwgbV9jYWxsRnJh
bWUsIGNhbGxlZSwgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPmlubGluZUNhcGFjaXR5KCkpKSk7
CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBl
bmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1f
b3V0LnBoaShJbnQ2NCwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCk7CisgICAgICAgIHNldEpTVmFs
dWUocmVzdWx0KTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBjb21wYXJlRXFPYmplY3RPck90aGVy
VG9PYmplY3QoRWRnZSBsZWZ0Q2hpbGQsIEVkZ2UgcmlnaHRDaGlsZCkKICAgICB7CkBAIC05OTIx
LDI1ICs5OTU1LDUxIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBvYmplY3QsIG1faGVhcHMuSlND
ZWxsX3VzZWZ1bEJ5dGVzKTsKICAgICB9CiAKLSAgICBMVmFsdWUgYWxsb2NhdGVDZWxsKExWYWx1
ZSBhbGxvY2F0b3IsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBMQmFzaWNCbG9jayBzbG93UGF0aCkK
KyAgICB2b2lkIHN0b3JlU3RydWN0dXJlKExWYWx1ZSBvYmplY3QsIExWYWx1ZSBzdHJ1Y3R1cmUp
CisgICAgeworICAgICAgICBMVmFsdWUgaWQgPSBtX291dC5sb2FkMzIoc3RydWN0dXJlLCBtX2hl
YXBzLlN0cnVjdHVyZV9zdHJ1Y3R1cmVJRCk7CisgICAgICAgIExWYWx1ZSBibG9iID0gbV9vdXQu
bG9hZDMyKHN0cnVjdHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVfaW5pdGlhbGl6YXRpb25CbG9iKTsK
KyAgICAgICAgbV9vdXQuc3RvcmUzMihpZCwgb2JqZWN0LCBtX2hlYXBzLkpTQ2VsbF9zdHJ1Y3R1
cmVJRCk7CisgICAgICAgIG1fb3V0LnN0b3JlMzIoYmxvYiwgb2JqZWN0LCBtX2hlYXBzLkpTQ2Vs
bF91c2VmdWxCeXRlcyk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFN0cnVjdHVy
ZVR5cGU+CisgICAgTFZhbHVlIGFsbG9jYXRlQ2VsbChMVmFsdWUgYWxsb2NhdG9yLCBTdHJ1Y3R1
cmVUeXBlIHN0cnVjdHVyZSwgTEJhc2ljQmxvY2sgc2xvd1BhdGgpCiAgICAgewogICAgICAgICBM
VmFsdWUgcmVzdWx0ID0gYWxsb2NhdGVIZWFwQ2VsbChhbGxvY2F0b3IsIHNsb3dQYXRoKTsKICAg
ICAgICAgc3RvcmVTdHJ1Y3R1cmUocmVzdWx0LCBzdHJ1Y3R1cmUpOwogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KIAorICAgIHZvaWQgaW5pdGlhbGl6ZUlubGluZVN0b3JhZ2UoTFZhbHVl
IG9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBzcGxhdFdvcmRz
KAorICAgICAgICAgICAgb2JqZWN0LAorICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMihKU0Zp
bmFsT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSAvIDgpLAorICAgICAgICAgICAgbV9v
dXQuY29uc3RJbnQzMihKU0ZpbmFsT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSAvIDgg
KyBzdHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkpLAorICAgICAgICAgICAgbV9vdXQuaW50NjRa
ZXJvLAorICAgICAgICAgICAgbV9oZWFwcy5wcm9wZXJ0aWVzLmF0QW55TnVtYmVyKCkpOworICAg
IH0KKworICAgIHZvaWQgaW5pdGlhbGl6ZUlubGluZVN0b3JhZ2UoTFZhbHVlIG9iamVjdCwgTFZh
bHVlIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIExWYWx1ZSBzdGFydCA9IG1fb3V0LmNvbnN0
SW50MzIoSlNGaW5hbE9iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgLyA4KTsKKyAgICAg
ICAgTFZhbHVlIGVuZCA9IG1fb3V0LmFkZChzdGFydCwgbV9vdXQubG9hZDhaZXJvRXh0MzIoc3Ry
dWN0dXJlLCBtX2hlYXBzLlN0cnVjdHVyZV9pbmxpbmVDYXBhY2l0eSkpOworICAgICAgICBzcGxh
dFdvcmRzKAorICAgICAgICAgICAgb2JqZWN0LAorICAgICAgICAgICAgc3RhcnQsCisgICAgICAg
ICAgICBlbmQsCisgICAgICAgICAgICBtX291dC5pbnQ2NFplcm8sCisgICAgICAgICAgICBtX2hl
YXBzLnByb3BlcnRpZXMuYXRBbnlOdW1iZXIoKSk7CisgICAgfQorCisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFN0cnVjdHVyZVR5cGU+CiAgICAgTFZhbHVlIGFsbG9jYXRlT2JqZWN0KAotICAgICAg
ICBMVmFsdWUgYWxsb2NhdG9yLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTFZhbHVlIGJ1dHRlcmZs
eSwgTEJhc2ljQmxvY2sgc2xvd1BhdGgpCisgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IsIFN0cnVj
dHVyZVR5cGUgc3RydWN0dXJlLCBMVmFsdWUgYnV0dGVyZmx5LCBMQmFzaWNCbG9jayBzbG93UGF0
aCkKICAgICB7CiAgICAgICAgIExWYWx1ZSByZXN1bHQgPSBhbGxvY2F0ZUNlbGwoYWxsb2NhdG9y
LCBzdHJ1Y3R1cmUsIHNsb3dQYXRoKTsKLSAgICAgICAgaWYgKHVzZUdDRmVuY2VzKCkpIHsKLSAg
ICAgICAgICAgIHNwbGF0V29yZHMoCi0gICAgICAgICAgICAgICAgcmVzdWx0LAotICAgICAgICAg
ICAgICAgIG1fb3V0LmNvbnN0SW50MzIoSlNGaW5hbE9iamVjdDo6b2Zmc2V0T2ZJbmxpbmVTdG9y
YWdlKCkgLyA4KSwKLSAgICAgICAgICAgICAgICBtX291dC5jb25zdEludDMyKEpTRmluYWxPYmpl
Y3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpIC8gOCArIHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNp
dHkoKSksCi0gICAgICAgICAgICAgICAgbV9vdXQuaW50NjRaZXJvLAotICAgICAgICAgICAgICAg
IG1faGVhcHMucHJvcGVydGllcy5hdEFueU51bWJlcigpKTsKLSAgICAgICAgfQorICAgICAgICBp
ZiAodXNlR0NGZW5jZXMoKSkKKyAgICAgICAgICAgIGluaXRpYWxpemVJbmxpbmVTdG9yYWdlKHJl
c3VsdCwgc3RydWN0dXJlKTsKICAgICAgICAgbV9vdXQuc3RvcmVQdHIoYnV0dGVyZmx5LCByZXN1
bHQsIG1faGVhcHMuSlNPYmplY3RfYnV0dGVyZmx5KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAko
cmV2aXNpb24gMjA4OTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwNSw2ICs0MDUsMTEgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZSwgbV9ibG9iKSArIFN0cnVjdHVyZUlE
QmxvYjo6c3RydWN0dXJlSURPZmZzZXQoKTsKICAgICB9CiAKKyAgICBzdGF0aWMgcHRyZGlmZl90
IGlubGluZUNhcGFjaXR5T2Zmc2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoU3RydWN0dXJlLCBtX2lubGluZUNhcGFjaXR5KTsKKyAgICB9CisKICAgICBzdGF0aWMg
cHRyZGlmZl90IHByb3RvdHlwZU9mZnNldCgpCiAgICAgewogICAgICAgICByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKFN0cnVjdHVyZSwgbV9wcm90b3R5cGUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295518</attachid>
            <date>2016-11-28 12:53:56 -0800</date>
            <delta_ts>2018-05-27 22:15:36 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>11645</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA5MDEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBA
CisyMDE2LTExLTI4ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFdlIHNob3VsZCBzdXBwb3J0IENyZWF0ZVRoaXMgaW4gdGhlIEZUTAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0OTA0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3Bw
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVNYWtlUm9wZSk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVNYXRlcmlhbGl6ZU5l
d09iamVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVD
cmVhdGVUaGlzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6c3RvcmVT
dHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjphbGxvY2F0
ZUNlbGwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjphbGxvY2F0ZU9i
amVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmFsbG9jYXRlVmFy
aWFibGVTaXplZE9iamVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6
OmFsbG9jYXRlVmFyaWFibGVTaXplZENlbGwpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJl
Lmg6CisKIDIwMTYtMTEtMjggIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAg
ICAgIEZpeCBleGNlcHRpb24gc2NvcGUgdmVyaWZpY2F0aW9uIGZhaWx1cmVzIGluIExMSW50U2xv
d1BhdGhzLmNwcC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCShyZXZpc2lvbiAyMDg5OTEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAkod29ya2luZyBj
b3B5KQpAQCAtNjcsNiArNjcsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAg
ICAgbWFjcm8oSlNGdW5jdGlvbl9leGVjdXRhYmxlLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZkV4ZWN1
dGFibGUoKSkgXAogICAgIG1hY3JvKEpTRnVuY3Rpb25fc2NvcGUsIEpTRnVuY3Rpb246Om9mZnNl
dE9mU2NvcGVDaGFpbigpKSBcCiAgICAgbWFjcm8oSlNGdW5jdGlvbl9yYXJlRGF0YSwgSlNGdW5j
dGlvbjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSBcCisgICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9h
bGxvY2F0b3IsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2Zp
bGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZkFsbG9jYXRvcigpKSBcCisg
ICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9zdHJ1Y3R1cmUsIEZ1bmN0aW9uUmFyZURhdGE6Om9m
ZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxl
OjpvZmZzZXRPZlN0cnVjdHVyZSgpKSBcCiAgICAgbWFjcm8oSlNPYmplY3RfYnV0dGVyZmx5LCBK
U09iamVjdDo6YnV0dGVyZmx5T2Zmc2V0KCkpIFwKICAgICBtYWNybyhKU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3JfY2FjaGVkSW5saW5lQ2FwYWNpdHksIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6
Y2FjaGVkSW5saW5lQ2FwYWNpdHlPZmZzZXQoKSkgXAogICAgIG1hY3JvKEpTUHJvcGVydHlOYW1l
RW51bWVyYXRvcl9jYWNoZWRQcm9wZXJ0eU5hbWVzVmVjdG9yLCBKU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3I6OmNhY2hlZFByb3BlcnR5TmFtZXNWZWN0b3JPZmZzZXQoKSkgXApAQCAtMTA3LDYgKzEw
OSw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNybyhTdHJ1Y3R1
cmVfZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSBcCiAgICAg
bWFjcm8oU3RydWN0dXJlX3Byb3RvdHlwZSwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSkg
XAogICAgIG1hY3JvKFN0cnVjdHVyZV9zdHJ1Y3R1cmVJRCwgU3RydWN0dXJlOjpzdHJ1Y3R1cmVJ
RE9mZnNldCgpKSBcCisgICAgbWFjcm8oU3RydWN0dXJlX2lubGluZUNhcGFjaXR5LCBTdHJ1Y3R1
cmU6OmlubGluZUNhcGFjaXR5T2Zmc2V0KCkpIFwKKyAgICBtYWNybyhTdHJ1Y3R1cmVfaW5pdGlh
bGl6YXRpb25CbG9iLCBTdHJ1Y3R1cmU6OmluZGV4aW5nVHlwZUluY2x1ZGluZ0hpc3RvcnlPZmZz
ZXQoKSkgXAogICAgIG1hY3JvKEpTTWFwX2hhc2hNYXBJbXBsLCBKU01hcDo6b2Zmc2V0T2ZIYXNo
TWFwSW1wbCgpKSBcCiAgICAgbWFjcm8oSlNTZXRfaGFzaE1hcEltcGwsIEpTU2V0OjpvZmZzZXRP
Zkhhc2hNYXBJbXBsKCkpIFwKICAgICBtYWNybyhIYXNoTWFwSW1wbF9jYXBhY2l0eSwgSGFzaE1h
cEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT4+OjpvZmZzZXRPZkNhcGFj
aXR5KCkpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAJKHJldmlzaW9uIDIwODk5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc5LDYgKzI3OSw3IEBAIGlu
bGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIENoZWNrRE9N
OgogICAgIGNhc2UgQ2FsbERPTToKICAgICBjYXNlIENhbGxET01HZXR0ZXI6CisgICAgY2FzZSBD
cmVhdGVUaGlzOgogICAgICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAgIGJyZWFrOwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShy
ZXZpc2lvbiAyMDg5OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNzMsNiArMTA3Myw5IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgQ2FsbERPTUdldHRlcjoKICAgICAgICAgICAgIGNvbXBpbGVDYWxsRE9NR2V0
dGVyKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDcmVhdGVUaGlzOgorICAg
ICAgICAgICAgY29tcGlsZUNyZWF0ZVRoaXMoKTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAg
ICAgIGNhc2UgUGhhbnRvbUxvY2FsOgogICAgICAgICBjYXNlIExvb3BIaW50OgpAQCAtNDg1NSw3
ICs0ODU4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUs
IGFsbG9jYXRvcik7CiAgICAgICAgIAogICAgICAgICBMVmFsdWUgcmVzdWx0ID0gYWxsb2NhdGVD
ZWxsKAotICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoYWxsb2NhdG9yKSwgdm0oKS5zdHJp
bmdTdHJ1Y3R1cmUuZ2V0KCksIHNsb3dQYXRoKTsKKyAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50
UHRyKGFsbG9jYXRvciksIG1fb3V0LmNvbnN0SW50UHRyKHZtKCkuc3RyaW5nU3RydWN0dXJlLmdl
dCgpKSwgc2xvd1BhdGgpOwogICAgICAgICAKICAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQu
aW50UHRyWmVybywgcmVzdWx0LCBtX2hlYXBzLkpTU3RyaW5nX3ZhbHVlKTsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUtpZHM7ICsraSkKQEAgLTgxNDUsNyArODE0OCw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmUzMih2ZWN0b3JMZW5ndGgsIGZh
c3RCdXR0ZXJmbHlWYWx1ZSwgbV9oZWFwcy5CdXR0ZXJmbHlfdmVjdG9yTGVuZ3RoKTsKICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICBMVmFsdWUgZmFzdE9iamVjdFZhbHVlID0gYWxs
b2NhdGVPYmplY3QoCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKGNlbGxB
bGxvY2F0b3IpLCBzdHJ1Y3R1cmUsIGZhc3RCdXR0ZXJmbHlWYWx1ZSwgc2xvd1BhdGgpOworICAg
ICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihjZWxsQWxsb2NhdG9yKSwgbV9vdXQu
Y29uc3RJbnRQdHIoc3RydWN0dXJlKSwgZmFzdEJ1dHRlcmZseVZhbHVlLCBzbG93UGF0aCk7CiAK
ICAgICAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0T2JqZWN0ID0gbV9vdXQuYW5jaG9y
KGZhc3RPYmplY3RWYWx1ZSk7CiAgICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdEJ1
dHRlcmZseSA9IG1fb3V0LmFuY2hvcihmYXN0QnV0dGVyZmx5VmFsdWUpOwpAQCAtOTQ5Miw2ICs5
NDk1LDQwIEBAIHByaXZhdGU6CiAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMgPSBFZmZlY3Rz
Ojpmb3JDYWxsKCk7CiAgICAgICAgIHNldEpTVmFsdWUocGF0Y2hwb2ludCk7CiAgICAgfQorCisg
ICAgdm9pZCBjb21waWxlQ3JlYXRlVGhpcygpCisgICAgeworICAgICAgICBMVmFsdWUgY2FsbGVl
ID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKKworICAgICAgICBMQmFzaWNCbG9jayBpc0Z1
bmN0aW9uQmxvY2sgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBoYXNS
YXJlRGF0YSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRo
ID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0g
bV9vdXQubmV3QmxvY2soKTsKKworICAgICAgICBtX291dC5icmFuY2goaXNGdW5jdGlvbihjYWxs
ZWUsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1c3VhbGx5KGlzRnVuY3Rpb25CbG9j
ayksIHJhcmVseShzbG93UGF0aCkpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0g
bV9vdXQuYXBwZW5kVG8oaXNGdW5jdGlvbkJsb2NrLCBoYXNSYXJlRGF0YSk7CisgICAgICAgIExW
YWx1ZSByYXJlRGF0YSA9IG1fb3V0LmxvYWRQdHIoY2FsbGVlLCBtX2hlYXBzLkpTRnVuY3Rpb25f
cmFyZURhdGEpOworICAgICAgICBtX291dC5icmFuY2gobV9vdXQuaXNaZXJvNjQocmFyZURhdGEp
LCByYXJlbHkoc2xvd1BhdGgpLCB1c3VhbGx5KGhhc1JhcmVEYXRhKSk7CisKKyAgICAgICAgbV9v
dXQuYXBwZW5kVG8oaGFzUmFyZURhdGEsIHNsb3dQYXRoKTsKKyAgICAgICAgTFZhbHVlIGFsbG9j
YXRvciA9IG1fb3V0LmxvYWRQdHIocmFyZURhdGEsIG1faGVhcHMuRnVuY3Rpb25SYXJlRGF0YV9h
bGxvY2F0b3IpOworICAgICAgICBMVmFsdWUgc3RydWN0dXJlID0gbV9vdXQubG9hZFB0cihyYXJl
RGF0YSwgbV9oZWFwcy5GdW5jdGlvblJhcmVEYXRhX3N0cnVjdHVyZSk7CisgICAgICAgIExWYWx1
ZSBidXR0ZXJmbHkgPSBtX291dC5jb25zdEludFB0cigwKTsKKyAgICAgICAgVmFsdWVGcm9tQmxv
Y2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihhbGxvY2F0ZU9iamVjdChhbGxvY2F0b3IsIHN0
cnVjdHVyZSwgYnV0dGVyZmx5LCBzbG93UGF0aCkpOworICAgICAgICBtX291dC5qdW1wKGNvbnRp
bnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgsIGNvbnRpbnVhdGlv
bik7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1D
YWxsKAorICAgICAgICAgICAgSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25DcmVhdGVU
aGlzKSwgbV9jYWxsRnJhbWUsIGNhbGxlZSwgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPmlubGlu
ZUNhcGFjaXR5KCkpKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAg
ICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgTFZh
bHVlIHJlc3VsdCA9IG1fb3V0LnBoaShJbnQ2NCwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCk7CisK
KyAgICAgICAgbXV0YXRvckZlbmNlKCk7CisgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKKyAg
ICB9CiAgICAgCiAgICAgdm9pZCBjb21wYXJlRXFPYmplY3RPck90aGVyVG9PYmplY3QoRWRnZSBs
ZWZ0Q2hpbGQsIEVkZ2UgcmlnaHRDaGlsZCkKICAgICB7CkBAIC05OTEyLDE2ICs5OTQ5LDI0IEBA
IHByaXZhdGU6CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQp
OwogICAgICAgICByZXR1cm4gcGF0Y2hwb2ludDsKICAgICB9Ci0gICAgCi0gICAgdm9pZCBzdG9y
ZVN0cnVjdHVyZShMVmFsdWUgb2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKworICAgIHZv
aWQgc3RvcmVTdHJ1Y3R1cmUoTFZhbHVlIG9iamVjdCwgTFZhbHVlIHN0cnVjdHVyZSkKICAgICB7
Ci0gICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuY29uc3RJbnQzMihzdHJ1Y3R1cmUtPmlkKCkp
LCBvYmplY3QsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVyZUlEKTsKLSAgICAgICAgbV9vdXQuc3Rv
cmUzMigKLSAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50MzIoc3RydWN0dXJlLT5vYmplY3RJbml0
aWFsaXphdGlvbkJsb2IoKSksCi0gICAgICAgICAgICBvYmplY3QsIG1faGVhcHMuSlNDZWxsX3Vz
ZWZ1bEJ5dGVzKTsKKyAgICAgICAgTFZhbHVlIGlkOworICAgICAgICBMVmFsdWUgYmxvYjsKKyAg
ICAgICAgaWYgKHN0cnVjdHVyZS0+aGFzSW50UHRyKCkpIHsKKyAgICAgICAgICAgIFN0cnVjdHVy
ZSogYWN0dWFsU3RydWN0dXJlID0gYml0d2lzZV9jYXN0PFN0cnVjdHVyZSo+KHN0cnVjdHVyZS0+
YXNJbnRQdHIoKSk7CisgICAgICAgICAgICBpZCA9IG1fb3V0LmNvbnN0SW50MzIoYWN0dWFsU3Ry
dWN0dXJlLT5pZCgpKTsKKyAgICAgICAgICAgIGJsb2IgPSBtX291dC5jb25zdEludDMyKGFjdHVh
bFN0cnVjdHVyZS0+b2JqZWN0SW5pdGlhbGl6YXRpb25CbG9iKCkpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgaWQgPSBtX291dC5sb2FkMzIoc3RydWN0dXJlLCBtX2hlYXBzLlN0cnVj
dHVyZV9zdHJ1Y3R1cmVJRCk7CisgICAgICAgICAgICBibG9iID0gbV9vdXQubG9hZDMyKHN0cnVj
dHVyZSwgbV9oZWFwcy5TdHJ1Y3R1cmVfaW5pdGlhbGl6YXRpb25CbG9iKTsKKyAgICAgICAgfQor
ICAgICAgICBtX291dC5zdG9yZTMyKGlkLCBvYmplY3QsIG1faGVhcHMuSlNDZWxsX3N0cnVjdHVy
ZUlEKTsKKyAgICAgICAgbV9vdXQuc3RvcmUzMihibG9iLCBvYmplY3QsIG1faGVhcHMuSlNDZWxs
X3VzZWZ1bEJ5dGVzKTsKICAgICB9CiAKLSAgICBMVmFsdWUgYWxsb2NhdGVDZWxsKExWYWx1ZSBh
bGxvY2F0b3IsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBMQmFzaWNCbG9jayBzbG93UGF0aCkKKyAg
ICBMVmFsdWUgYWxsb2NhdGVDZWxsKExWYWx1ZSBhbGxvY2F0b3IsIExWYWx1ZSBzdHJ1Y3R1cmUs
IExCYXNpY0Jsb2NrIHNsb3dQYXRoKQogICAgIHsKICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IGFs
bG9jYXRlSGVhcENlbGwoYWxsb2NhdG9yLCBzbG93UGF0aCk7CiAgICAgICAgIHN0b3JlU3RydWN0
dXJlKHJlc3VsdCwgc3RydWN0dXJlKTsKQEAgLTk5MjksMTQgKzk5NzQsMjIgQEAgcHJpdmF0ZToK
ICAgICB9CiAKICAgICBMVmFsdWUgYWxsb2NhdGVPYmplY3QoCi0gICAgICAgIExWYWx1ZSBhbGxv
Y2F0b3IsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBMVmFsdWUgYnV0dGVyZmx5LCBMQmFzaWNCbG9j
ayBzbG93UGF0aCkKKyAgICAgICAgTFZhbHVlIGFsbG9jYXRvciwgTFZhbHVlIHN0cnVjdHVyZSwg
TFZhbHVlIGJ1dHRlcmZseSwgTEJhc2ljQmxvY2sgc2xvd1BhdGgpCiAgICAgewogICAgICAgICBM
VmFsdWUgcmVzdWx0ID0gYWxsb2NhdGVDZWxsKGFsbG9jYXRvciwgc3RydWN0dXJlLCBzbG93UGF0
aCk7CiAgICAgICAgIGlmICh1c2VHQ0ZlbmNlcygpKSB7CisgICAgICAgICAgICBMVmFsdWUgc3Rh
cnQgPSBtX291dC5jb25zdEludDMyKEpTRmluYWxPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFn
ZSgpIC8gOCk7CisgICAgICAgICAgICBMVmFsdWUgZW5kOworICAgICAgICAgICAgaWYgKHN0cnVj
dHVyZS0+aGFzSW50UHRyKCkpIHsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIGFjdHVhbFN0
cnVjdHVyZSA9IGJpdHdpc2VfY2FzdDxTdHJ1Y3R1cmUqPihzdHJ1Y3R1cmUtPmFzSW50UHRyKCkp
OworICAgICAgICAgICAgICAgIGVuZCA9IG1fb3V0LmNvbnN0SW50MzIoSlNGaW5hbE9iamVjdDo6
b2Zmc2V0T2ZJbmxpbmVTdG9yYWdlKCkgLyA4ICsgYWN0dWFsU3RydWN0dXJlLT5pbmxpbmVDYXBh
Y2l0eSgpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGVuZCA9IG1fb3V0
LmFkZChzdGFydCwgbV9vdXQubG9hZDhaZXJvRXh0MzIoc3RydWN0dXJlLCBtX2hlYXBzLlN0cnVj
dHVyZV9pbmxpbmVDYXBhY2l0eSkpOworCiAgICAgICAgICAgICBzcGxhdFdvcmRzKAogICAgICAg
ICAgICAgICAgIHJlc3VsdCwKLSAgICAgICAgICAgICAgICBtX291dC5jb25zdEludDMyKEpTRmlu
YWxPYmplY3Q6Om9mZnNldE9mSW5saW5lU3RvcmFnZSgpIC8gOCksCi0gICAgICAgICAgICAgICAg
bV9vdXQuY29uc3RJbnQzMihKU0ZpbmFsT2JqZWN0OjpvZmZzZXRPZklubGluZVN0b3JhZ2UoKSAv
IDggKyBzdHJ1Y3R1cmUtPmlubGluZUNhcGFjaXR5KCkpLAorICAgICAgICAgICAgICAgIHN0YXJ0
LAorICAgICAgICAgICAgICAgIGVuZCwKICAgICAgICAgICAgICAgICBtX291dC5pbnQ2NFplcm8s
CiAgICAgICAgICAgICAgICAgbV9oZWFwcy5wcm9wZXJ0aWVzLmF0QW55TnVtYmVyKCkpOwogICAg
ICAgICB9CkBAIC05OTQ5LDcgKzEwMDAyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgc2l6ZV90IHNp
emUsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBMVmFsdWUgYnV0dGVyZmx5LCBMQmFzaWNCbG9jayBz
bG93UGF0aCkKICAgICB7CiAgICAgICAgIE1hcmtlZEFsbG9jYXRvciogYWxsb2NhdG9yID0gdm0o
KS5oZWFwLmFsbG9jYXRvckZvck9iamVjdE9mVHlwZTxDbGFzc1R5cGU+KHNpemUpOwotICAgICAg
ICByZXR1cm4gYWxsb2NhdGVPYmplY3QobV9vdXQuY29uc3RJbnRQdHIoYWxsb2NhdG9yKSwgc3Ry
dWN0dXJlLCBidXR0ZXJmbHksIHNsb3dQYXRoKTsKKyAgICAgICAgcmV0dXJuIGFsbG9jYXRlT2Jq
ZWN0KG1fb3V0LmNvbnN0SW50UHRyKGFsbG9jYXRvciksIG1fb3V0LmNvbnN0SW50UHRyKHN0cnVj
dHVyZSksIGJ1dHRlcmZseSwgc2xvd1BhdGgpOwogICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDbGFzc1R5cGU+CkBAIC0xMDAxMyw3ICsxMDA2Niw3IEBAIHByaXZhdGU6CiAgICAg
ewogICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yU2l6ZSgKICAgICAgICAg
ICAgIHZtKCkuaGVhcC5zdWJzcGFjZUZvck9iamVjdE9mVHlwZTxDbGFzc1R5cGU+KCksIHNpemUs
IHNsb3dQYXRoKTsKLSAgICAgICAgcmV0dXJuIGFsbG9jYXRlT2JqZWN0KGFsbG9jYXRvciwgc3Ry
dWN0dXJlLCBidXR0ZXJmbHksIHNsb3dQYXRoKTsKKyAgICAgICAgcmV0dXJuIGFsbG9jYXRlT2Jq
ZWN0KGFsbG9jYXRvciwgbV9vdXQuY29uc3RJbnRQdHIoc3RydWN0dXJlKSwgYnV0dGVyZmx5LCBz
bG93UGF0aCk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2xhc3NUeXBlPgpAQCAt
MTAwMjIsNyArMTAwNzUsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgTFZhbHVlIGFsbG9j
YXRvciA9IGFsbG9jYXRvckZvclNpemUoCiAgICAgICAgICAgICB2bSgpLmhlYXAuc3Vic3BhY2VG
b3JPYmplY3RPZlR5cGU8Q2xhc3NUeXBlPigpLCBzaXplLCBzbG93UGF0aCk7Ci0gICAgICAgIHJl
dHVybiBhbGxvY2F0ZUNlbGwoYWxsb2NhdG9yLCBzdHJ1Y3R1cmUsIHNsb3dQYXRoKTsKKyAgICAg
ICAgcmV0dXJuIGFsbG9jYXRlQ2VsbChhbGxvY2F0b3IsIG1fb3V0LmNvbnN0SW50UHRyKHN0cnVj
dHVyZSksIHNsb3dQYXRoKTsKICAgICB9CiAgICAgCiAgICAgTFZhbHVlIGFsbG9jYXRlT2JqZWN0
KFN0cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtMTAwNDAsNyArMTAwOTMsNyBAQCBwcml2YXRlOgog
ICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0Lmluc2VydE5ld0Jsb2Nrc0JlZm9y
ZShzbG93UGF0aCk7CiAgICAgICAgIAogICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0
ID0gbV9vdXQuYW5jaG9yKGFsbG9jYXRlT2JqZWN0KAotICAgICAgICAgICAgbV9vdXQuY29uc3RJ
bnRQdHIoYWxsb2NhdG9yKSwgc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJvLCBzbG93UGF0aCkp
OworICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoYWxsb2NhdG9yKSwgbV9vdXQuY29uc3RJ
bnRQdHIoc3RydWN0dXJlKSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpKTsKICAgICAgICAg
CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMjA4OTkxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQwNSw2ICs0MDUsMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKFN0cnVjdHVyZSwgbV9ibG9iKSArIFN0cnVjdHVyZUlEQmxvYjo6c3RydWN0dXJlSURP
ZmZzZXQoKTsKICAgICB9CiAKKyAgICBzdGF0aWMgcHRyZGlmZl90IGlubGluZUNhcGFjaXR5T2Zm
c2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoU3RydWN0dXJlLCBt
X2lubGluZUNhcGFjaXR5KTsKKyAgICB9CisKICAgICBzdGF0aWMgcHRyZGlmZl90IHByb3RvdHlw
ZU9mZnNldCgpCiAgICAgewogICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVy
ZSwgbV9wcm90b3R5cGUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>295582</attachid>
            <date>2016-11-28 22:01:27 -0800</date>
            <delta_ts>2018-05-27 22:15:36 -0700</delta_ts>
            <desc>Archive of layout-test-results from ews124 for ios-simulator-wk2</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>0</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64"></data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341446</attachid>
            <date>2018-05-27 22:15:36 -0700</date>
            <delta_ts>2018-05-28 18:02:48 -0700</delta_ts>
            <desc>attempting a fix</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>29582</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3Rh
dHVzLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxMaW5rU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI3LDYgKzMyNywxNSBA
QCB2b2lkIENhbGxMaW5rU3RhdHVzOjptYWtlQ2xvc3VyZUNhbGwoKQogICAgIG1fdmFyaWFudHMg
PSBkZXNwZWNpZmllZFZhcmlhbnRMaXN0KG1fdmFyaWFudHMpOwogfQogCitib29sIENhbGxMaW5r
U3RhdHVzOjpmaW5hbGl6ZSgpCit7CisgICAgZm9yIChDYWxsVmFyaWFudCYgdmFyaWFudCA6IG1f
dmFyaWFudHMpIHsKKyAgICAgICAgaWYgKCF2YXJpYW50LmZpbmFsaXplKCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIENhbGxM
aW5rU3RhdHVzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgaWYgKCFpc1Nl
dCgpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0
dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExp
bmtTdGF0dXMuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMCw2ICsxMTAsOCBA
QCBwdWJsaWM6CiAgICAgCiAgICAgdW5zaWduZWQgbWF4TnVtQXJndW1lbnRzKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXhOdW1Bcmd1bWVudHM7IH0KICAgICAKKyAgICBib29sIGZpbmFsaXplKCk7Cisg
ICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuY3Bw
CShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bFZhcmlhbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDYgKzMxLDEzIEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCitib29sIENhbGxWYXJpYW50OjpmaW5hbGl6ZSgpCit7CisgICAgaWYgKG1f
Y2FsbGVlICYmICFIZWFwOjppc01hcmtlZChtX2NhbGxlZSkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBDYWxsVmFyaWFudDo6ZHVtcChQcmludFN0
cmVhbSYgb3V0KSBjb25zdAogewogICAgIGlmICghKnRoaXMpIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCShyZXZpc2lvbiAyMzIyMjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xMzYsNiArMTM2LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAgICAgCisgICAgYm9vbCBmaW5hbGl6ZSgpOworICAgIAogICAgIHZvaWQgZHVt
cChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKICAgICAKICAgICBib29sIGlzSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2Niw2ICsxMTY2
LDkgQEAgdm9pZCBDb2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKGNvbgogI2lmIEVOQUJM
RShERkdfSklUKQogICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0VHlwZSgpKSkg
ewogICAgICAgICBERkc6OkNvbW1vbkRhdGEqIGRmZ0NvbW1vbiA9IG1faml0Q29kZS0+ZGZnQ29t
bW9uKCk7CisgICAgICAgIAorICAgICAgICBkZmdDb21tb24tPnJlY29yZGVkU3RhdHVzZXMubWFy
a0lmQ2hlYXAodmlzaXRvcik7CisgICAgICAgIAogICAgICAgICBmb3IgKGF1dG8mIHdlYWtSZWZl
cmVuY2UgOiBkZmdDb21tb24tPndlYWtTdHJ1Y3R1cmVSZWZlcmVuY2VzKQogICAgICAgICAgICAg
d2Vha1JlZmVyZW5jZS0+bWFya0lmQ2hlYXAodmlzaXRvcik7CiAKQEAgLTEzOTcsNiArMTQwMCwx
MSBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoCiAgICAgICAgIGZp
bmFsaXplQmFzZWxpbmVKSVRJbmxpbmVDYWNoZXMoKTsKICNlbmRpZgogCisgICAgaWYgKEpJVENv
ZGU6OmlzT3B0aW1pemluZ0pJVChqaXRUeXBlKCkpKSB7CisgICAgICAgIERGRzo6Q29tbW9uRGF0
YSogZGZnQ29tbW9uID0gbV9qaXRDb2RlLT5kZmdDb21tb24oKTsKKyAgICAgICAgZGZnQ29tbW9u
LT5yZWNvcmRlZFN0YXR1c2VzLmZpbmFsaXplKCk7CisgICAgfQorCiAgICAgVk06OlNwYWNlQW5k
RmluYWxpemVyU2V0OjpmaW5hbGl6ZXJTZXRGb3IoKnN1YnNwYWNlKCkpLnJlbW92ZSh0aGlzKTsK
IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlk
U3RhdHVzLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsOSArMTE2LDEz
IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgbG9j
a2VyLCBwcm9maWxlZEJsb2NrLCBtYXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkpLCB1
aWQsCiAgICAgICAgIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKHByb2ZpbGVk
QmxvY2ssIGJ5dGVjb2RlSW5kZXgpKTsKICAgICAKKyAgICBpZiAoYnl0ZWNvZGVJbmRleCA9PSAy
MCkKKyAgICAgICAgZGF0YUxvZygiUmVzdWx0OiAiLCByZXN1bHQsICJcbiIpOworICAgIAogICAg
IGlmICghcmVzdWx0LnRha2VzU2xvd1BhdGgoKQorICAgICAgICAmJiBieXRlY29kZUluZGV4ICE9
IDIwCiAgICAgICAgICYmIGhhc0V4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgp
KQotICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhyZXN1bHQubWFrZXNDYWxscygpID8gTWFr
ZXNDYWxscyA6IFRha2VzU2xvd1BhdGgsIHRydWUpOworICAgICAgICByZXR1cm4gcmVzdWx0LnNs
b3dWZXJzaW9uKCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShtYXApOwogI2VuZGlmCkBAIC0x
MzcsNyArMTQxLDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yUwog
ICAgICAgICBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YShwcm9maWxlZEJsb2Nr
LCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpKTsKIAogICAgIGlmICghcmVzdWx0LnRha2VzU2xv
d1BhdGgoKSAmJiBHZXRCeUlkU3RhdHVzOjpoYXNFeGl0U2l0ZShwcm9maWxlZEJsb2NrLCBjb2Rl
T3JpZ2luLmJ5dGVjb2RlSW5kZXgpKQotICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhyZXN1
bHQubWFrZXNDYWxscygpID8gR2V0QnlJZFN0YXR1czo6TWFrZXNDYWxscyA6IEdldEJ5SWRTdGF0
dXM6OlRha2VzU2xvd1BhdGgsIHRydWUpOworICAgICAgICByZXR1cm4gcmVzdWx0LnNsb3dWZXJz
aW9uKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkK
QEAgLTE3MCw4ICsxNzQsMTEgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRl
Rm9yUwogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGlmIChzdHViSW5mby0+dG9va1Nsb3dQ
YXRoKQorICAgIGlmIChzdHViSW5mby0+dG9va1Nsb3dQYXRoKSB7CisgICAgICAgIGlmIChzdHVi
SW5mby0+Y29kZU9yaWdpbi5ieXRlY29kZUluZGV4ID09IDIwKQorICAgICAgICAgICAgZGF0YUxv
ZygiU3R1YiBpbmZvIHRvb2sgc2xvdyBwYXRoLlxuIik7CiAgICAgICAgIHJldHVybiBHZXRCeUlk
U3RhdHVzKHNsb3dQYXRoU3RhdGUpOworICAgIH0KICAgICAKICAgICAvLyBGaW5hbGx5IGZpZ3Vy
ZSBvdXQgaWYgd2UgY2FuIGRlcml2ZSBhbiBhY2Nlc3Mgc3RyYXRlZ3kuCiAgICAgR2V0QnlJZFN0
YXR1cyByZXN1bHQ7CkBAIC0zMzIsMTIgKzMzOSwxNSBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRT
dGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgICAgICByZXN1bHQgPSBjb21wdXRlRm9yU3R1Yklu
Zm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygKICAgICAgICAgICAgICAgICBsb2NrZXIsIGRmZ0Js
b2NrLCBkZmdNYXAuZ2V0KGNvZGVPcmlnaW4pLCB1aWQsIGV4aXRTaXRlRGF0YSk7CiAgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIGlmIChmYWxzZSAmJiBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5k
ZXggPT0gMjApCisgICAgICAgICAgICBkYXRhTG9nKCJJbiAiLCBwb2ludGVyRHVtcChwcm9maWxl
ZEJsb2NrKSwgIiAiLCBjb2RlT3JpZ2luLCAiOiBERkcgc2F3OiAiLCByZXN1bHQsICJcbiIpOwog
CiAgICAgICAgIGlmIChyZXN1bHQudGFrZXNTbG93UGF0aCgpKQogICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICAKLSAgICAgICAgaWYgKGhhc0V4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGNv
ZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkpCi0gICAgICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1
cyhUYWtlc1Nsb3dQYXRoLCB0cnVlKTsKKyAgICAgICAgaWYgKGNvZGVPcmlnaW4uYnl0ZWNvZGVJ
bmRleCAhPSAyMCAmJiBoYXNFeGl0U2l0ZShwcm9maWxlZEJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVj
b2RlSW5kZXgpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5zbG93VmVyc2lvbigpOwogICAg
ICAgICAKICAgICAgICAgaWYgKHJlc3VsdC5pc1NldCgpKQogICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKQEAgLTM0Niw3ICszNTYsMTAgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpj
b21wdXRlRm9yKAogICAgIFVOVVNFRF9QQVJBTShkZmdCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFN
KGRmZ01hcCk7CiAjZW5kaWYKLQorICAgIAorICAgIGlmIChkZmdCbG9jayAmJiBjb2RlT3JpZ2lu
LmJ5dGVjb2RlSW5kZXggPT0gMjApCisgICAgICAgIGRhdGFMb2coIkluICIsIHBvaW50ZXJEdW1w
KHByb2ZpbGVkQmxvY2spLCAiICIsIGNvZGVPcmlnaW4sICI6IEdvaW5nIHdpdGggd2hhdCBiYXNl
bGluZSBzYXcuXG4iKTsKKyAgICAgICAgCiAgICAgcmV0dXJuIGNvbXB1dGVGb3IocHJvZmlsZWRC
bG9jaywgYmFzZWxpbmVNYXAsIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgdWlkKTsKIH0KIApA
QCAtNDE0LDYgKzQyNywxMSBAQCBib29sIEdldEJ5SWRTdGF0dXM6Om1ha2VzQ2FsbHMoKSBjb25z
dAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpz
bG93VmVyc2lvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMobWFrZXNDYWxs
cygpID8gTWFrZXNDYWxscyA6IFRha2VzU2xvd1BhdGgsIHdhc1NlZW5JbkpJVCgpKTsKK30KKwog
dm9pZCBHZXRCeUlkU3RhdHVzOjpmaWx0ZXIoY29uc3QgU3RydWN0dXJlU2V0JiBzZXQpCiB7CiAg
ICAgaWYgKG1fc3RhdGUgIT0gU2ltcGxlKQpAQCAtNDIzLDYgKzQ0MSwyNSBAQCB2b2lkIEdldEJ5
SWRTdGF0dXM6OmZpbHRlcihjb25zdCBTdHJ1Y3R1CiAgICAgICAgIG1fc3RhdGUgPSBOb0luZm9y
bWF0aW9uOwogfQogCit2b2lkIEdldEJ5SWRTdGF0dXM6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQoreworICAgIGZvciAoR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3Zhcmlh
bnRzKQorICAgICAgICB2YXJpYXQubWFya0lmQ2hlYXAodmlzaXRvcik7Cit9CisKK2Jvb2wgR2V0
QnlJZFN0YXR1czo6ZmluYWxpemUoKQoreworICAgIGZvciAoR2V0QnlJZFZhcmlhbnQmIHZhcmlh
bnQgOiBtX3ZhcmlhbnRzKSB7CisgICAgICAgIGlmICghdmFyaWFudC5maW5hbGl6ZSgpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAobV9tb2R1bGVOYW1lc3BhY2VP
YmplY3QgJiYgIUhlYXA6OmlzTWFya2VkKG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0KSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX21vZHVsZUVudmlyb25tZW50ICYmICFIZWFwOjpp
c01hcmtlZChtX21vZHVsZUVudmlyb25tZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiB0cnVlOworfQorCiB2b2lkIEdldEJ5SWRTdGF0dXM6OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3QKIHsKICAgICBvdXQucHJpbnQoIigiKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAkocmV2aXNpb24gMjMyMjI3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA2LDYgKzEwNiw4IEBAIHB1YmxpYzoKICAgICBib29sIHRha2VzU2xvd1Bh
dGgoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFRha2VzU2xvd1BhdGggfHwgbV9zdGF0ZSA9
PSBNYWtlc0NhbGxzIHx8IG1fc3RhdGUgPT0gQ3VzdG9tIHx8IG1fc3RhdGUgPT0gTW9kdWxlTmFt
ZXNwYWNlOyB9CiAgICAgYm9vbCBtYWtlc0NhbGxzKCkgY29uc3Q7CiAgICAgCisgICAgR2V0QnlJ
ZFN0YXR1cyBzbG93VmVyc2lvbigpIGNvbnN0OworICAgIAogICAgIGJvb2wgd2FzU2VlbkluSklU
KCkgY29uc3QgeyByZXR1cm4gbV93YXNTZWVuSW5KSVQ7IH0KICAgICAKICAgICAvLyBBdHRlbXB0
cyB0byByZWR1Y2UgdGhlIHNldCBvZiB2YXJpYW50cyB0byBmaXQgdGhlIGdpdmVuIHN0cnVjdHVy
ZSBzZXQuIFRoaXMgbWF5IGJlIGFwcHJveGltYXRlLgpAQCAtMTE1LDYgKzExNyw5IEBAIHB1Ymxp
YzoKICAgICBKU01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fbW9kdWxlRW52aXJvbm1lbnQ7IH0KICAgICBTY29wZU9mZnNldCBzY29wZU9mZnNl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVPZmZzZXQ7IH0KICAgICAKKyAgICB2b2lkIG1hcmtJ
ZkNoZWFwKFNsb3RWaXNpdG9yJik7CisgICAgYm9vbCBmaW5hbGl6ZSgpOyAvLyBSZXR1cm4gdHJ1
ZSBpZiB0aGlzIGdldHMgdG8gbGl2ZS4KKyAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0m
KSBjb25zdDsKICAgICAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEzNSw2ICsxMzUsMjQgQEAgYm9vbCBHZXRCeUlkVmFyaWFudDo6YXR0ZW1wdFRv
TWVyZ2UoY29ucwogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIEdldEJ5SWRWYXJpYW50Ojpt
YXJrSWZDaGVhcChTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBtX3N0cnVjdHVyZVNldC5t
YXJrSWZDaGVhcCh2aXNpdG9yKTsKK30KKworYm9vbCBHZXRCeUlkVmFyaWFudDo6ZmluYWxpemUo
KQoreworICAgIGlmICghbV9zdHJ1Y3R1cmVTZXQuaXNTdGlsbEFsaXZlKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAoIW1fY29uZGl0aW9uU2V0LmFyZVN0aWxsTGl2ZSgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fY2FsbExpbmtTdGF0dXMgJiYgIW1fY2FsbExp
bmtTdGF0dXMtPmZpbmFsaXplKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9p
bnRyaW5zaWNGdW5jdGlvbiAmJiAhSGVhcDo6aXNNYXJrZWQobV9pbnRyaW5zaWNGdW5jdGlvbikp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBHZXRC
eUlkVmFyaWFudDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIGR1bXBJbkNv
bnRleHQob3V0LCAwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRC
eUlkVmFyaWFudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9HZXRCeUlkVmFyaWFudC5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNiAr
NzMsOSBAQCBwdWJsaWM6CiAKICAgICBib29sIGF0dGVtcHRUb01lcmdlKGNvbnN0IEdldEJ5SWRW
YXJpYW50JiBvdGhlcik7CiAgICAgCisgICAgdm9pZCBtYXJrSWZDaGVhcChTbG90VmlzaXRvciYp
OworICAgIGJvb2wgZmluYWxpemUoKTsKKyAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0m
KSBjb25zdDsKICAgICB2b2lkIGR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mLCBEdW1wQ29udGV4
dCopIGNvbnN0OwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1
dEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
OTgsNiArMzk4LDIxIEBAIGJvb2wgUHV0QnlJZFN0YXR1czo6bWFrZXNDYWxscygpIGNvbnN0CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIFB1dEJ5SWRTdGF0dXM6Om1hcmtJZkNoZWFwKFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGZvciAoUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQg
OiBtX3ZhcmlhbnRzKQorICAgICAgICB2YXJpYW50Lm1hcmtJZkNoZWFwKHZpc2l0b3IpOworfQor
Citib29sIFB1dEJ5SWRTdGF0dXM6OmZpbmFsaXplKCkKK3sKKyAgICBmb3IgKFB1dEJ5SWRWYXJp
YW50JiB2YXJpYW50IDogbV92YXJpYW50cykgeworICAgICAgICBpZiAoIXZhcmlhbnQuZmluYWxp
emUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7
Cit9CisKIHZvaWQgUHV0QnlJZFN0YXR1czo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAog
ewogICAgIHN3aXRjaCAobV9zdGF0ZSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBA
IC05MSw2ICs5MSw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBQdXRCeUlkVmFyaWFudCYgYXQoc2l6
ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBtX3ZhcmlhbnRzW2luZGV4XTsgfQogICAgIGNvbnN0
IFB1dEJ5SWRWYXJpYW50JiBvcGVyYXRvcltdKHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4g
YXQoaW5kZXgpOyB9CiAgICAgCisgICAgdm9pZCBtYXJrSWZDaGVhcChTbG90VmlzaXRvciYpOwor
ICAgIGJvb2wgZmluYWxpemUoKTsKKyAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBj
b25zdDsKICAgICAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHV0QnlJZFZhcmlhbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjA2LDYgKzIwNiwyNiBAQCBib29sIFB1dEJ5SWRWYXJpYW50OjphdHRlbXB0VG9N
ZXJnZVRyYW5zCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgUHV0QnlJZFZhcmlhbnQ6Om1h
cmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIG1fb2xkU3RydWN0dXJlLm1h
cmtJZkNoZWFwKHZpc2l0b3IpOworICAgIGlmIChtX25ld1N0cnVjdHVyZSkKKyAgICAgICAgbV9u
ZXdTdHJ1Y3R1cmUtPm1hcmtJZkNoZWFwKHZpc2l0b3IpOworfQorCitib29sIFB1dEJ5SWRWYXJp
YW50OjpmaW5hbGl6ZSgpCit7CisgICAgaWYgKCFtX29sZFN0cnVjdHVyZS5pc1N0aWxsQWxpdmUo
dmlzaXRvcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9uZXdTdHJ1Y3R1cmUg
JiYgIUhlYXA6OmlzTWFya2VkKG1fbmV3U3RydWN0dXJlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmICghbV9jb25kaXRpb25TZXQuYXJlU3RpbGxMaXZlKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAobV9jYWxsTGlua1N0YXR1cyAmJiAhbV9jYWxsTGlua1N0YXR1cy0+
ZmluYWxpemUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQor
CiB2b2lkIFB1dEJ5SWRWYXJpYW50OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAg
ICAgZHVtcEluQ29udGV4dChvdXQsIDApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTEyOSw2ICsxMjksOSBAQCBwdWJsaWM6CiAKICAgICBib29sIGF0dGVtcHRUb01lcmdl
KGNvbnN0IFB1dEJ5SWRWYXJpYW50JiBvdGhlcik7CiAgICAgCisgICAgdm9pZCBtYXJrSWZDaGVh
cChTbG90VmlzaXRvciYpOworICAgIGJvb2wgZmluYWxpemUoKTsKKyAgICAKICAgICB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICB2b2lkIGR1bXBJbkNvbnRleHQoUHJpbnRTdHJl
YW0mLCBEdW1wQ29udGV4dCopIGNvbnN0OwogCkBAIC0xMzcsNyArMTQwLDcgQEAgcHJpdmF0ZToK
ICAgICAKICAgICBLaW5kIG1fa2luZDsKICAgICBTdHJ1Y3R1cmVTZXQgbV9vbGRTdHJ1Y3R1cmU7
Ci0gICAgU3RydWN0dXJlKiBtX25ld1N0cnVjdHVyZTsKKyAgICBTdHJ1Y3R1cmUqIG1fbmV3U3Ry
dWN0dXJlIHsgbnVsbHB0ciB9OwogICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IG1fY29u
ZGl0aW9uU2V0OwogICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0OwogICAgIEluZmVycmVkVHlw
ZTo6RGVzY3JpcHRvciBtX3JlcXVpcmVkVHlwZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuaAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgi
CisjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0
IFJlY29yZGVkU3RhdHVzZXMgeworICAgIHZvaWQgYWRkR2V0QnlJZFN0YXR1cyhjb25zdCBDb2Rl
T3JpZ2luJiBjb2RlT3JpZ2luLCBjb25zdCBHZXRCeUlkU3RhdHVzJiBzdGF0dXMpCisgICAgewor
ICAgICAgICBnZXRzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihjb2RlT3JpZ2luLCBzdGF0dXMpKTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBhZGRQdXRCeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4m
IGNvZGVPcmlnaW4sIGNvbnN0IFB1dEJ5SWRTdGF0dXMmIHN0YXR1cykKKyAgICB7CisgICAgICAg
IHB1dHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIHN0YXR1cykpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiBzbG90VmlzaXRvcikKKyAg
ICB7CisgICAgICAgIGZvciAoYXV0byYgcGFpciA6IGdldHMpCisgICAgICAgICAgICBwYWlyLnNl
Y29uZC5tYXJrSWZDaGVhcChzbG90VmlzaXRvcik7CisgICAgICAgIGZvciAoYXV0byYgcGFpciA6
IHB1dHMpCisgICAgICAgICAgICBwYWlyLnNlY29uZC5tYXJrSWZDaGVhcChzbG90VmlzaXRvcik7
CisgICAgfQorICAgIAorICAgIHZvaWQgZmluYWxpemUoKQorICAgIHsKKyAgICAgICAgZ2V0cy5y
ZW1vdmVBbGxNYXRjaGluZygKKyAgICAgICAgICAgIFsmXSAoYXV0byYgcGFpcikgLT4gYm9vbCB7
CisgICAgICAgICAgICAgICAgcmV0dXJuICFwYWlyLnNlY29uZC5maW5hbGl6ZSgpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIGdldHMuc2hyaW5rVG9GaXQoKTsKKyAgICAgICAgcHV0cy5yZW1v
dmVBbGxNYXRjaGluZygKKyAgICAgICAgICAgIFsmXSAoYXV0byYgcGFpcikgLT4gYm9vbCB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuICFwYWlyLnNlY29uZC5maW5hbGl6ZSgpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIHB1dHMuc2hyaW5rVG9GaXQoKTsKKyAgICB9CisgICAgCisgICAgVmVj
dG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBHZXRCeUlkU3RhdHVzPj4gZ2V0czsKKyAgICBWZWN0
b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIFB1dEJ5SWRTdGF0dXM+PiBwdXRzOworfTsKKworfSAv
LyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dHJ1Y3R1cmVTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTZXQuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
MSw2ICszMSwyMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAordm9pZCBTdHJ1Y3R1cmVTZXQ6Om1h
cmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9yKSBjb25zdAoreworICAgIGZvciAoU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgOiAqdGhpcykKKyAgICAgICAgc3RydWN0dXJlLT5tYXJrSWZDaGVhcCh2
aXNpdG9yKTsKK30KKworYm9vbCBTdHJ1Y3R1cmVTZXQ6OmlzU3RpbGxBbGl2ZSgpIGNvbnN0Cit7
CisgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6ICp0aGlzKSB7CisgICAgICAgIGlmICgh
SGVhcDo6aXNNYXJrZWQoc3RydWN0dXJlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgU3RydWN0dXJlU2V0OjpkdW1wSW5Db250
ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAogewogICAg
IENvbW1hUHJpbnRlciBjb21tYTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3RydWN0dXJlU2V0LmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTU4LDYgKzU4LDkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG9ubHlFbnRyeSgp
OwogICAgIH0KKworICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKSBjb25zdDsKKyAg
ICBib29sIGlzU3RpbGxBbGl2ZSgpIGNvbnN0OwogICAgIAogICAgIHZvaWQgZHVtcEluQ29udGV4
dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0KikgY29uc3Q7CiAgICAgdm9pZCBkdW1wKFByaW50
U3RyZWFtJikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwMDks
NyArNDAwOSwxMiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgIAog
ICAgIGlmIChnZXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgPiAxKSB7CiAgICAgICAgIGlmIChn
ZXRCeUlkU3RhdHVzLm1ha2VzQ2FsbHMoKSB8fCAhaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkK
LSAgICAgICAgICAgIHx8ICFPcHRpb25zOjp1c2VQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nKCkp
IHsKKyAgICAgICAgICAgIHx8ICFPcHRpb25zOjp1c2VQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5n
KCkKKyAgICAgICAgICAgIHx8IGdldEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSA+IE9wdGlvbnM6
Om1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZSgpKSB7CisgICAgICAgICAgICBp
ZiAoZmFsc2UgJiYgZ2V0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpID4gT3B0aW9uczo6bWF4UG9s
eW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplKCkpIHsKKyAgICAgICAgICAgICAgICBkYXRh
TG9nKCJBdCAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKKyAgICAgICAgICAgICAgICBk
YXRhTG9nKCJHaXZpbmcgdXAgb246ICIsIGdldEJ5SWRTdGF0dXMsICJcbiIpOworICAgICAgICAg
ICAgfQogICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihkZXN0aW5hdGlvbk9wZXJhbmQp
LAogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoZ2V0QnlJZCwgT3BJbmZvKGlkZW50aWZpZXJO
dW1iZXIpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UpKTsKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTQxNTAsNyArNDE1NSwxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlk
KAogICAgIAogICAgIGlmIChwdXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgPiAxKSB7CiAgICAg
ICAgIGlmICghaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkgfHwgcHV0QnlJZFN0YXR1cy5tYWtl
c0NhbGxzKCkKLSAgICAgICAgICAgIHx8ICFPcHRpb25zOjp1c2VQb2x5bW9ycGhpY0FjY2Vzc0lu
bGluaW5nKCkpIHsKKyAgICAgICAgICAgIHx8ICFPcHRpb25zOjp1c2VQb2x5bW9ycGhpY0FjY2Vz
c0lubGluaW5nKCkKKyAgICAgICAgICAgIHx8IHB1dEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSA+
IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZSgpKSB7CisgICAg
ICAgICAgICBpZiAoZmFsc2UgJiYgcHV0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpID4gT3B0aW9u
czo6bWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplKCkpCisgICAgICAgICAgICAg
ICAgZGF0YUxvZygiR2l2aW5nIHVwIG9uOiAiLCBwdXRCeUlkU3RhdHVzLCAiXG4iKTsKICAgICAg
ICAgICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlk
U3RhdHVzLCBpc0RpcmVjdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5oCShyZXZpc2lvbiAyMzIy
MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTI1LDYgKzEyNSw3IEBAIHB1YmxpYzoKICAgICBCYWc8Q29kZUJsb2NrSmV0
dGlzb25pbmdXYXRjaHBvaW50PiB3YXRjaHBvaW50czsKICAgICBCYWc8QWRhcHRpdmVTdHJ1Y3R1
cmVXYXRjaHBvaW50PiBhZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnRzOwogICAgIEJhZzxBZGFw
dGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQ+IGFkYXB0aXZlSW5mZXJyZWRQcm9w
ZXJ0eVZhbHVlV2F0Y2hwb2ludHM7CisgICAgUmVjb3JkZWRTdGF0dXNlcyByZWNvcmRlZFN0YXR1
c2VzOwogICAgIFZlY3RvcjxKdW1wUmVwbGFjZW1lbnQ+IGp1bXBSZXBsYWNlbWVudHM7CiAgICAg
CiAgICAgU2NyYXRjaEJ1ZmZlciogY2F0Y2hPU1JFbnRyeUJ1ZmZlcjsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAyMzIyMjcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTg4LDYgKzE4OCw4IEBAIHZvaWQgSklUQ29tcGlsZXI6OmNvbXBpbGVFeGNl
cHRpb25IYW5kbGUKIAogdm9pZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQnVm
ZmVyKQogeworICAgIG1faml0Q29kZS0+Y29tbW9uLnJlY29yZGVkU3RhdHVzZXMgPSBXVEZNb3Zl
KG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMpOworICAgIAogICAgIC8vIExpbmsgdGhl
IGNvZGUsIHBvcHVsYXRlIGRhdGEgaW4gQ29kZUJsb2NrIGRhdGEgc3RydWN0dXJlcy4KICAgICBt
X2ppdENvZGUtPmNvbW1vbi5mcmFtZVJlZ2lzdGVyQ291bnQgPSBtX2dyYXBoLmZyYW1lUmVnaXN0
ZXJDb3VudCgpOwogICAgIG1faml0Q29kZS0+Y29tbW9uLnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZv
ckV4aXQgPSBtX2dyYXBoLnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZvckV4aXQoKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMz
LDYgKzYzMyw4IEBAIHZvaWQgUGxhbjo6Y2hlY2tMaXZlbmVzc0FuZFZpc2l0Q2hpbGRyZW4KICAg
ICBjbGVhbk11c3RIYW5kbGVWYWx1ZXNJZk5lY2Vzc2FyeSgpOwogICAgIGZvciAodW5zaWduZWQg
aSA9IG11c3RIYW5kbGVWYWx1ZXMuc2l6ZSgpOyBpLS07KQogICAgICAgICB2aXNpdG9yLmFwcGVu
ZFVuYmFycmllcmVkKG11c3RIYW5kbGVWYWx1ZXNbaV0pOworICAgIAorICAgIHJlY29yZGVkU3Rh
dHVzZXMubWFya0lmQ2hlYXAodmlzaXRvcik7CiAKICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmll
cmVkKGNvZGVCbG9jayk7CiAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxvY2st
PmFsdGVybmF0aXZlKCkpOwpAQCAtNjQ5LDYgKzY1MSwxMSBAQCB2b2lkIFBsYW46OmNoZWNrTGl2
ZW5lc3NBbmRWaXNpdENoaWxkcmVuCiAgICAgdHJhbnNpdGlvbnMudmlzaXRDaGlsZHJlbih2aXNp
dG9yKTsKIH0KIAordm9pZCBQbGFuOjpmaW5hbGl6ZUluR0MoKQoreworICAgIHJlY29yZGVkU3Rh
dHVzZXMuZmluYWxpemUoKTsKK30KKwogYm9vbCBQbGFuOjppc0tub3duVG9CZUxpdmVEdXJpbmdH
QygpCiB7CiAgICAgaWYgKHN0YWdlID09IENhbmNlbGxlZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUGxhbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUGxhbi5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1BsYW4uaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBAQCBzdHJ1Y3Qg
UGxhbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlCiAgICAgdm9pZCBpdGVyYXRlQ29kZUJs
b2Nrc0ZvckdDKGNvbnN0IEZ1bmMmKTsKICAgICB2b2lkIGNoZWNrTGl2ZW5lc3NBbmRWaXNpdENo
aWxkcmVuKFNsb3RWaXNpdG9yJik7CiAgICAgYm9vbCBpc0tub3duVG9CZUxpdmVEdXJpbmdHQygp
OworICAgIHZvaWQgZmluYWxpemVJbkdDKCk7CiAgICAgdm9pZCBjYW5jZWwoKTsKIAogICAgIGJv
b2wgY2FuVGllclVwQW5kT1NSRW50ZXIoKSBjb25zdCB7IHJldHVybiAhdGllclVwQW5kT1NSRW50
ZXJCeXRlY29kZXMuaXNFbXB0eSgpOyB9CkBAIC0xMDQsNiArMTA1LDcgQEAgc3RydWN0IFBsYW4g
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZQogICAgIERlc2lyZWRJZGVudGlmaWVycyBpZGVu
dGlmaWVyczsKICAgICBEZXNpcmVkV2Vha1JlZmVyZW5jZXMgd2Vha1JlZmVyZW5jZXM7CiAgICAg
RGVzaXJlZFRyYW5zaXRpb25zIHRyYW5zaXRpb25zOworICAgIFJlY29yZWRTdGF0dXNlcyByZWNv
cmRlZFN0YXR1c2VzOwogICAgIAogICAgIGJvb2wgd2lsbFRyeVRvVGllclVwIHsgZmFsc2UgfTsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAJKHJldmlz
aW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOTMsOCArMzkzLDEwIEBAIHZvaWQgV29ya2xpc3Q6OnJlbW92
ZURlYWRQbGFucyhWTSYgdm0pCiAgICAgICAgICAgICBQbGFuKiBwbGFuID0gaXRlci0+dmFsdWUu
Z2V0KCk7CiAgICAgICAgICAgICBpZiAocGxhbi0+dm0gIT0gJnZtKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKHBsYW4tPmlzS25vd25Ub0JlTGl2ZUR1cmluZ0dD
KCkpCisgICAgICAgICAgICBpZiAocGxhbi0+aXNLbm93blRvQmVMaXZlRHVyaW5nR0MoKSkgewor
ICAgICAgICAgICAgICAgIHBsYW4tPmZpbmFsaXplSW5HQygpOwogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgfQogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocGxhbi0+
c3RhZ2UgIT0gUGxhbjo6Q2FuY2VsbGVkKTsgLy8gU2hvdWxkIG5vdCBiZSBjYW5jZWxsZWQsIHll
dC4KICAgICAgICAgICAgIEFTU0VSVCghZGVhZFBsYW5LZXlzLmNvbnRhaW5zKHBsYW4tPmtleSgp
KSk7CiAgICAgICAgICAgICBkZWFkUGxhbktleXMuYWRkKHBsYW4tPmtleSgpKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsOCBA
QCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8oRGlyZWN0QXJndW1l
bnRzX21pbkNhcGFjaXR5LCBEaXJlY3RBcmd1bWVudHM6Om9mZnNldE9mTWluQ2FwYWNpdHkoKSkg
XAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19tYXBwZWRBcmd1bWVudHMsIERpcmVjdEFyZ3Vt
ZW50czo6b2Zmc2V0T2ZNYXBwZWRBcmd1bWVudHMoKSkgXAogICAgIG1hY3JvKERpcmVjdEFyZ3Vt
ZW50c19tb2RpZmllZEFyZ3VtZW50c0Rlc2NyaXB0b3IsIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0
T2ZNb2RpZmllZEFyZ3VtZW50c0Rlc2NyaXB0b3IoKSkgXAorICAgIG1hY3JvKEZ1bmN0aW9uUmFy
ZURhdGFfYWxsb2NhdG9yLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRp
b25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZBbGxvY2F0b3Io
KSkgXAorICAgIG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFfc3RydWN0dXJlLCBGdW5jdGlvblJhcmVE
YXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSkgXAogICAgIG1hY3JvKEdldHRlclNldHRlcl9n
ZXR0ZXIsIEdldHRlclNldHRlcjo6b2Zmc2V0T2ZHZXR0ZXIoKSkgXAogICAgIG1hY3JvKEdldHRl
clNldHRlcl9zZXR0ZXIsIEdldHRlclNldHRlcjo6b2Zmc2V0T2ZTZXR0ZXIoKSkgXAogICAgIG1h
Y3JvKEpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9m
TGVuZ3RoKCkpIFwKQEAgLTExMiwxMCArMTE0LDEwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgRlRMIHsKICAgICBtYWNybyhTdHJpbmdJbXBsX2xlbmd0aCwgU3RyaW5nSW1wbDo6bGVuZ3Ro
TWVtb3J5T2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfY2xhc3NJbmZvLCBTdHJ1Y3R1
cmU6OmNsYXNzSW5mb09mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlX2dsb2JhbE9iamVj
dCwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSkgXAorICAgIG1hY3JvKFN0cnVjdHVy
ZV9pbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5LCBTdHJ1Y3R1cmU6OmluZGV4aW5nTW9kZUlu
Y2x1ZGluZ0hpc3RvcnlPZmZzZXQoKSkgXAorICAgIG1hY3JvKFN0cnVjdHVyZV9pbmxpbmVDYXBh
Y2l0eSwgU3RydWN0dXJlOjppbmxpbmVDYXBhY2l0eU9mZnNldCgpKSBcCiAgICAgbWFjcm8oU3Ry
dWN0dXJlX3Byb3RvdHlwZSwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSkgXAogICAgIG1h
Y3JvKFN0cnVjdHVyZV9zdHJ1Y3R1cmVJRCwgU3RydWN0dXJlOjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSBcCi0gICAgbWFjcm8oU3RydWN0dXJlX2lubGluZUNhcGFjaXR5LCBTdHJ1Y3R1cmU6OmlubGlu
ZUNhcGFjaXR5T2Zmc2V0KCkpIFwKLSAgICBtYWNybyhTdHJ1Y3R1cmVfaW5kZXhpbmdNb2RlSW5j
bHVkaW5nSGlzdG9yeSwgU3RydWN0dXJlOjppbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5T2Zm
c2V0KCkpIFwKICAgICBtYWNybyhIYXNoTWFwSW1wbF9jYXBhY2l0eSwgSGFzaE1hcEltcGw8SGFz
aE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT4+OjpvZmZzZXRPZkNhcGFjaXR5KCkpIFwK
ICAgICBtYWNybyhIYXNoTWFwSW1wbF9idWZmZXIsICBIYXNoTWFwSW1wbDxIYXNoTWFwQnVja2V0
PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46Om9mZnNldE9mQnVmZmVyKCkpIFwKICAgICBtYWNybyhI
YXNoTWFwSW1wbF9oZWFkLCAgSGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0
RGF0YUtleT4+OjpvZmZzZXRPZkhlYWQoKSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNTEsNiArMzUxLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUq
IAogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CiAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgog
ICAgIGNhc2UgTWF0Y2hTdHJ1Y3R1cmU6CisgICAgY2FzZSBDcmVhdGVUaGlzOgogICAgICAgICAv
LyBUaGVzZSBhcmUgT0suCiAgICAgICAgIGJyZWFrOwogCkBAIC0zNjIsNyArMzYzLDYgQEAgaW5s
aW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgICAgICBicmVhazsKIAog
ICAgIGNhc2UgSWRlbnRpdHlXaXRoUHJvZmlsZToKLSAgICBjYXNlIENyZWF0ZVRoaXM6CiAgICAg
Y2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6
CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04NDcsNiArODQ3LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBOZXdBcnJheVdpdGhT
cHJlYWQ6CiAgICAgICAgICAgICBjb21waWxlTmV3QXJyYXlXaXRoU3ByZWFkKCk7CiAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDcmVhdGVUaGlzOgorICAgICAgICAgICAgY29tcGls
ZUNyZWF0ZVRoaXMoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNwcmVhZDoK
ICAgICAgICAgICAgIGNvbXBpbGVTcHJlYWQoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTY2
Miw2ICs1NjY1LDQwIEBAIHByaXZhdGU6CiAKICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwog
ICAgIH0KKyAgICAKKyAgICB2b2lkIGNvbXBpbGVDcmVhdGVUaGlzKCkKKyAgICB7CisgICAgICAg
IExWYWx1ZSBjYWxsZWUgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworCisgICAgICAgIExC
YXNpY0Jsb2NrIGlzRnVuY3Rpb25CbG9jayA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExC
YXNpY0Jsb2NrIGhhc1JhcmVEYXRhID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2lj
QmxvY2sgc2xvd1BhdGggPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBj
b250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgIG1fb3V0LmJyYW5jaChp
c0Z1bmN0aW9uKGNhbGxlZSwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgpKSksIHVzdWFsbHko
aXNGdW5jdGlvbkJsb2NrKSwgcmFyZWx5KHNsb3dQYXRoKSk7CisKKyAgICAgICAgTEJhc2ljQmxv
Y2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpc0Z1bmN0aW9uQmxvY2ssIGhhc1JhcmVEYXRh
KTsKKyAgICAgICAgTFZhbHVlIHJhcmVEYXRhID0gbV9vdXQubG9hZFB0cihjYWxsZWUsIG1faGVh
cHMuSlNGdW5jdGlvbl9yYXJlRGF0YSk7CisgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5pc1pl
cm82NChyYXJlRGF0YSksIHJhcmVseShzbG93UGF0aCksIHVzdWFsbHkoaGFzUmFyZURhdGEpKTsK
KworICAgICAgICBtX291dC5hcHBlbmRUbyhoYXNSYXJlRGF0YSwgc2xvd1BhdGgpOworICAgICAg
ICBMVmFsdWUgYWxsb2NhdG9yID0gbV9vdXQubG9hZFB0cihyYXJlRGF0YSwgbV9oZWFwcy5GdW5j
dGlvblJhcmVEYXRhX2FsbG9jYXRvcik7CisgICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmUgPSBtX291
dC5sb2FkUHRyKHJhcmVEYXRhLCBtX2hlYXBzLkZ1bmN0aW9uUmFyZURhdGFfc3RydWN0dXJlKTsK
KyAgICAgICAgTFZhbHVlIGJ1dHRlcmZseSA9IG1fb3V0LmNvbnN0SW50UHRyKDApOworICAgICAg
ICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGFsbG9jYXRlT2JqZWN0
KGFsbG9jYXRvciwgc3RydWN0dXJlLCBidXR0ZXJmbHksIHNsb3dQYXRoKSk7CisgICAgICAgIG1f
b3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93UGF0
aCwgY29udGludWF0aW9uKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1f
b3V0LmFuY2hvcih2bUNhbGwoCisgICAgICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvbkNyZWF0ZVRoaXMpLCBtX2NhbGxGcmFtZSwgY2FsbGVlLCBtX291dC5jb25zdEludDMy
KG1fbm9kZS0+aW5saW5lQ2FwYWNpdHkoKSkpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQp
OworICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQucGhpKEludDY0LCBmYXN0UmVzdWx0LCBz
bG93UmVzdWx0KTsKKworICAgICAgICBtdXRhdG9yRmVuY2UoKTsKKyAgICAgICAgc2V0SlNWYWx1
ZShyZXN1bHQpOworICAgIH0KIAogICAgIHZvaWQgY29tcGlsZVNwcmVhZCgpCiAgICAgewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMjMyMjI3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzUsNiArMjc1LDcgQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlT
dHJlYW1pbgogICAgIHYodW5zaWduZWQsIG1heEFjY2Vzc1ZhcmlhbnRMaXN0U2l6ZSwgOCwgTm9y
bWFsLCBudWxscHRyKSBcCiAgICAgdihib29sLCB1c2VQb2x5dmFyaWFudERldmlydHVhbGl6YXRp
b24sIHRydWUsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwgdXNlUG9seW1vcnBoaWNB
Y2Nlc3NJbmxpbmluZywgdHJ1ZSwgTm9ybWFsLCBudWxscHRyKSBcCisgICAgdih1bnNpZ25lZCwg
bWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplLCAzLCBOb3JtYWwsIG51bGxwdHIp
IFwKICAgICB2KGJvb2wsIHVzZVBvbHltb3JwaGljQ2FsbElubGluaW5nLCB0cnVlLCBOb3JtYWws
IG51bGxwdHIpIFwKICAgICB2KGJvb2wsIHVzZVBvbHltb3JwaGljQ2FsbElubGluaW5nRm9yTm9u
U3R1YlN0YXR1cywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYodW5zaWduZWQsIG1h
eFBvbHltb3JwaGljQ2FsbFZhcmlhbnRMaXN0U2l6ZSwgMTUsIE5vcm1hbCwgbnVsbHB0cikgXAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341462</attachid>
            <date>2018-05-28 18:02:48 -0700</date>
            <delta_ts>2018-05-29 17:18:17 -0700</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>40722</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgJKHJldmlz
aW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8u
aAkod29ya2luZyBjb3B5KQpAQCAtMjY2LDEyICsyNjYsNiBAQCBpbmxpbmUgdW5zaWduZWQgZ2V0
QnlWYWxJbmZvQnl0ZWNvZGVJbmRlCiAgICAgcmV0dXJuIGluZm8tPmJ5dGVjb2RlSW5kZXg7CiB9
CiAKLXR5cGVkZWYgSGFzaE1hcDxDb2RlT3JpZ2luLCBCeVZhbEluZm8qLCBDb2RlT3JpZ2luQXBw
cm94aW1hdGVIYXNoPiBCeVZhbEluZm9NYXA7Ci0KLSNlbHNlIC8vIEVOQUJMRShKSVQpCi0KLXR5
cGVkZWYgSGFzaE1hcDxpbnQsIHZvaWQqPiBCeVZhbEluZm9NYXA7Ci0KICNlbmRpZiAvLyBFTkFC
TEUoSklUKQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAkod29ya2luZyBjb3B5KQpA
QCAtMzUyLDEyICszNTIsNiBAQCBpbmxpbmUgQ29kZU9yaWdpbiBnZXRDYWxsTGlua0luZm9Db2Rl
T3JpCiAgICAgcmV0dXJuIGNhbGxMaW5rSW5mby5jb2RlT3JpZ2luKCk7CiB9CiAKLXR5cGVkZWYg
SGFzaE1hcDxDb2RlT3JpZ2luLCBDYWxsTGlua0luZm8qLCBDb2RlT3JpZ2luQXBwcm94aW1hdGVI
YXNoPiBDYWxsTGlua0luZm9NYXA7Ci0KLSNlbHNlIC8vIEVOQUJMRShKSVQpCi0KLXR5cGVkZWYg
SGFzaE1hcDxpbnQsIHZvaWQqPiBDYWxsTGlua0luZm9NYXA7Ci0KICNlbmRpZiAvLyBFTkFCTEUo
SklUKQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzI3LDYgKzMyNywxNSBAQCB2b2lkIENhbGxMaW5rU3RhdHVzOjptYWtlQ2xv
c3VyZUNhbGwoKQogICAgIG1fdmFyaWFudHMgPSBkZXNwZWNpZmllZFZhcmlhbnRMaXN0KG1fdmFy
aWFudHMpOwogfQogCitib29sIENhbGxMaW5rU3RhdHVzOjpmaW5hbGl6ZSgpCit7CisgICAgZm9y
IChDYWxsVmFyaWFudCYgdmFyaWFudCA6IG1fdmFyaWFudHMpIHsKKyAgICAgICAgaWYgKCF2YXJp
YW50LmZpbmFsaXplKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJl
dHVybiB0cnVlOworfQorCiB2b2lkIENhbGxMaW5rU3RhdHVzOjpkdW1wKFByaW50U3RyZWFtJiBv
dXQpIGNvbnN0CiB7CiAgICAgaWYgKCFpc1NldCgpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAkocmV2aXNpb24gMjMyMjI3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTExMCw2ICsxMTAsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdW5zaWduZWQg
bWF4TnVtQXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9tYXhOdW1Bcmd1bWVudHM7IH0KICAg
ICAKKyAgICBib29sIGZpbmFsaXplKCk7CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxWYXJpYW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTMxLDYgKzMxLDEzIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitib29sIENhbGxWYXJpYW50
OjpmaW5hbGl6ZSgpCit7CisgICAgaWYgKG1fY2FsbGVlICYmICFIZWFwOjppc01hcmtlZChtX2Nh
bGxlZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9p
ZCBDYWxsVmFyaWFudDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIGlmICgh
KnRoaXMpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFy
aWFudC5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbFZhcmlhbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzYsNiArMTM2LDggQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCisgICAgYm9vbCBmaW5h
bGl6ZSgpOworICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKICAg
ICAKICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyMzIy
MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTE2Niw2ICsxMTY2LDkgQEAgdm9pZCBDb2RlQmxvY2s6OnByb3BhZ2F0
ZVRyYW5zaXRpb25zKGNvbgogI2lmIEVOQUJMRShERkdfSklUKQogICAgIGlmIChKSVRDb2RlOjpp
c09wdGltaXppbmdKSVQoaml0VHlwZSgpKSkgewogICAgICAgICBERkc6OkNvbW1vbkRhdGEqIGRm
Z0NvbW1vbiA9IG1faml0Q29kZS0+ZGZnQ29tbW9uKCk7CisgICAgICAgIAorICAgICAgICBkZmdD
b21tb24tPnJlY29yZGVkU3RhdHVzZXMubWFya0lmQ2hlYXAodmlzaXRvcik7CisgICAgICAgIAog
ICAgICAgICBmb3IgKGF1dG8mIHdlYWtSZWZlcmVuY2UgOiBkZmdDb21tb24tPndlYWtTdHJ1Y3R1
cmVSZWZlcmVuY2VzKQogICAgICAgICAgICAgd2Vha1JlZmVyZW5jZS0+bWFya0lmQ2hlYXAodmlz
aXRvcik7CiAKQEAgLTEzOTcsNiArMTQwMCwxMSBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVV
bmNvbmRpdGlvbmFsbHkoCiAgICAgICAgIGZpbmFsaXplQmFzZWxpbmVKSVRJbmxpbmVDYWNoZXMo
KTsKICNlbmRpZgogCisgICAgaWYgKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChqaXRUeXBlKCkp
KSB7CisgICAgICAgIERGRzo6Q29tbW9uRGF0YSogZGZnQ29tbW9uID0gbV9qaXRDb2RlLT5kZmdD
b21tb24oKTsKKyAgICAgICAgZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLmZpbmFsaXplKCk7
CisgICAgfQorCiAgICAgVk06OlNwYWNlQW5kRmluYWxpemVyU2V0OjpmaW5hbGl6ZXJTZXRGb3Io
KnN1YnNwYWNlKCkpLnJlbW92ZSh0aGlzKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2
ICs0NSw3IEBACiAjaW5jbHVkZSAiRXhwcmVzc2lvblJhbmdlSW5mby5oIgogI2luY2x1ZGUgIkZ1
bmN0aW9uRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIkhhbmRsZXJJbmZvLmgiCisjaW5jbHVkZSAi
SUNTdGF0dXNNYXAuaCIKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIkpJVENv
ZGUuaCIKICNpbmNsdWRlICJKSVRDb2RlTWFwLmgiCkBAIC05Niw4ICs5Nyw2IEBAIGVudW0gY2xh
c3MgQWNjZXNzVHlwZSA6IGludDhfdDsKIAogc3RydWN0IEFyaXRoUHJvZmlsZTsKIAotdHlwZWRl
ZiBIYXNoTWFwPENvZGVPcmlnaW4sIFN0cnVjdHVyZVN0dWJJbmZvKiwgQ29kZU9yaWdpbkFwcHJv
eGltYXRlSGFzaD4gU3R1YkluZm9NYXA7Ci0KIGVudW0gUmVvcHRpbWl6YXRpb25Nb2RlIHsgRG9u
dENvdW50UmVvcHRpbWl6YXRpb24sIENvdW50UmVvcHRpbWl6YXRpb24gfTsKIAogY2xhc3MgQ29k
ZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CkBAIC0xOTYsOCArMTk1LDggQEAgcHVibGljOgogCiAg
ICAgdm9pZCBkdW1wQnl0ZWNvZGUoKTsKICAgICB2b2lkIGR1bXBCeXRlY29kZShQcmludFN0cmVh
bSYpOwotICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3Ry
dWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgU3R1YkluZm9NYXAm
ID0gU3R1YkluZm9NYXAoKSwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiA9IENhbGxMaW5rSW5mb01h
cCgpKTsKLSAgICB2b2lkIGR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCB1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCwgY29uc3QgU3R1YkluZm9NYXAmID0gU3R1YkluZm9NYXAoKSwgY29uc3Qg
Q2FsbExpbmtJbmZvTWFwJiA9IENhbGxMaW5rSW5mb01hcCgpKTsKKyAgICB2b2lkIGR1bXBCeXRl
Y29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IElu
c3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJiA9IElDU3RhdHVzTWFwKCkpOworICAg
IHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0LCBjb25zdCBJQ1N0YXR1c01hcCYgPSBJQ1N0YXR1c01hcCgpKTsKIAogICAgIHZvaWQgZHVt
cEV4Y2VwdGlvbkhhbmRsZXJzKFByaW50U3RyZWFtJik7CiAgICAgdm9pZCBwcmludFN0cnVjdHVy
ZXMoUHJpbnRTdHJlYW0mLCBjb25zdCBJbnN0cnVjdGlvbiopOwpAQCAtMjM3LDE0ICsyMzYsOCBA
QCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBieXRlY29kZU9mZnNldEZy
b21DYWxsU2l0ZUluZGV4KENhbGxTaXRlSW5kZXgpOwogCi0gICAgdm9pZCBnZXRTdHViSW5mb01h
cChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBTdHViSW5mb01hcCYgcmVzdWx0KTsKLSAgICB2
b2lkIGdldFN0dWJJbmZvTWFwKFN0dWJJbmZvTWFwJiByZXN1bHQpOwotICAgIAotICAgIHZvaWQg
Z2V0Q2FsbExpbmtJbmZvTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENhbGxMaW5rSW5m
b01hcCYgcmVzdWx0KTsKLSAgICB2b2lkIGdldENhbGxMaW5rSW5mb01hcChDYWxsTGlua0luZm9N
YXAmIHJlc3VsdCk7Ci0KLSAgICB2b2lkIGdldEJ5VmFsSW5mb01hcChjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImLCBCeVZhbEluZm9NYXAmIHJlc3VsdCk7Ci0gICAgdm9pZCBnZXRCeVZhbEluZm9N
YXAoQnlWYWxJbmZvTWFwJiByZXN1bHQpOworICAgIHZvaWQgZ2V0SUNTdGF0dXNNYXAoY29uc3Qg
Q29uY3VycmVudEpTTG9ja2VyJiwgSUNTdGF0dXNNYXAmIHJlc3VsdCk7CisgICAgdm9pZCBnZXRJ
Q1N0YXR1c01hcChJQ1N0YXR1c01hcCYgcmVzdWx0KTsKICAgICAKICNpZiBFTkFCTEUoSklUKQog
ICAgIEpJVEFkZElDKiBhZGRKSVRBZGRJQyhBcml0aFByb2ZpbGUqLCBJbnN0cnVjdGlvbiopOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmNwcAko
cmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVP
cmlnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMi0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDYsNyArNDYsNyBAQCB1bnNpZ25lZCBDb2Rl
T3JpZ2luOjppbmxpbmVEZXB0aCgpIGNvbnN0CiAgICAgcmV0dXJuIGlubGluZURlcHRoRm9yQ2Fs
bEZyYW1lKGlubGluZUNhbGxGcmFtZSk7CiB9CiAKLWJvb2wgQ29kZU9yaWdpbjo6aXNBcHByb3hp
bWF0ZWx5RXF1YWxUbyhjb25zdCBDb2RlT3JpZ2luJiBvdGhlcikgY29uc3QKK2Jvb2wgQ29kZU9y
aWdpbjo6aXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhjb25zdCBDb2RlT3JpZ2luJiBvdGhlciwgQ29k
ZUJsb2NrKiB0ZXJtaW5hbCkgY29uc3QKIHsKICAgICBDb2RlT3JpZ2luIGEgPSAqdGhpczsKICAg
ICBDb2RlT3JpZ2luIGIgPSBvdGhlcjsKQEAgLTY4LDEwICs2OCwxMyBAQCBib29sIENvZGVPcmln
aW46OmlzQXBwcm94aW1hdGVseUVxdWFsVG8oCiAgICAgICAgIGlmIChhLmJ5dGVjb2RlSW5kZXgg
IT0gYi5ieXRlY29kZUluZGV4KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAK
LSAgICAgICAgaWYgKCghIWEuaW5saW5lQ2FsbEZyYW1lKSAhPSAoISFiLmlubGluZUNhbGxGcmFt
ZSkpCisgICAgICAgIGJvb2wgYUhhc0lubGluZUNhbGxGcmFtZSA9ICEhYS5pbmxpbmVDYWxsRnJh
bWUKKyAgICAgICAgICAgICYmIGEuaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay5n
ZXQoKSAhPSB0ZXJtaW5hbDsKKyAgICAgICAgYm9vbCBiSGFzSW5saW5lQ2FsbEZyYW1lID0gISFi
LmlubGluZUNhbGxGcmFtZTsKKyAgICAgICAgaWYgKGFIYXNJbmxpbmVDYWxsRnJhbWUgIT0gYkhh
c0lubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0g
ICAgICAgIGlmICghYS5pbmxpbmVDYWxsRnJhbWUpCisgICAgICAgIGlmICghYUhhc0lubGluZUNh
bGxGcmFtZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAKICAgICAgICAgaWYg
KGEuaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay5nZXQoKSAhPSBiLmlubGluZUNh
bGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkpCkBAIC04Miw3ICs4NSw3IEBAIGJvb2wg
Q29kZU9yaWdpbjo6aXNBcHByb3hpbWF0ZWx5RXF1YWxUbygKICAgICB9CiB9CiAKLXVuc2lnbmVk
IENvZGVPcmlnaW46OmFwcHJveGltYXRlSGFzaCgpIGNvbnN0Cit1bnNpZ25lZCBDb2RlT3JpZ2lu
OjphcHByb3hpbWF0ZUhhc2goQ29kZUJsb2NrKiB0ZXJtaW5hbCkgY29uc3QKIHsKICAgICBpZiAo
IWlzU2V0KCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtOTcsNiArMTAwLDkgQEAgdW5zaWduZWQg
Q29kZU9yaWdpbjo6YXBwcm94aW1hdGVIYXNoKCkgYwogICAgICAgICBpZiAoIWNvZGVPcmlnaW4u
aW5saW5lQ2FsbEZyYW1lKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgCisg
ICAgICAgIGlmIChjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2su
Z2V0KCkgPT0gdGVybWluYWwpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAK
ICAgICAgICAgcmVzdWx0ICs9IFdURjo6UHRySGFzaDxKU0NlbGwqPjo6aGFzaChjb2RlT3JpZ2lu
LmlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkpOwogICAgICAgICAKICAg
ICAgICAgY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5kaXJlY3RDYWxs
ZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmgJ
KHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
T3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDExLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDExLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05NCw5ICs5NCw5IEBAIHN0cnVjdCBDb2RlT3Jp
Z2luIHsKICAgICAKICAgICAvLyBUaGlzIGNoZWNrcyBpZiB0aGUgdHdvIGNvZGUgb3JpZ2lucyBj
b3JyZXNwb25kIHRvIHRoZSBzYW1lIHN0YWNrIHRyYWNlIHNuaXBwZXRzLAogICAgIC8vIGJ1dCBp
Z25vcmUgd2hldGhlciB0aGUgSW5saW5lQ2FsbEZyYW1lJ3MgYXJlIGlkZW50aWNhbC4KLSAgICBi
b29sIGlzQXBwcm94aW1hdGVseUVxdWFsVG8oY29uc3QgQ29kZU9yaWdpbiYgb3RoZXIpIGNvbnN0
OworICAgIGJvb2wgaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhjb25zdCBDb2RlT3JpZ2luJiBvdGhl
ciwgQ29kZUJsb2NrKiB0ZXJtaW5hbCA9IG51bGxwdHIpIGNvbnN0OwogICAgIAotICAgIHVuc2ln
bmVkIGFwcHJveGltYXRlSGFzaCgpIGNvbnN0OworICAgIHVuc2lnbmVkIGFwcHJveGltYXRlSGFz
aChDb2RlQmxvY2sqIHRlcm1pbmFsID0gbnVsbHB0cikgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgRnVuY3Rpb24+CiAgICAgdm9pZCB3YWxrVXBJbmxpbmVTdGFjayhjb25zdCBGdW5j
dGlvbiYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRC
eUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsOSArMTE2
LDEzIEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAg
bG9ja2VyLCBwcm9maWxlZEJsb2NrLCBtYXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkp
LCB1aWQsCiAgICAgICAgIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKHByb2Zp
bGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpKTsKICAgICAKKyAgICBpZiAoYnl0ZWNvZGVJbmRleCA9
PSAyMCkKKyAgICAgICAgZGF0YUxvZygiUmVzdWx0OiAiLCByZXN1bHQsICJcbiIpOworICAgIAog
ICAgIGlmICghcmVzdWx0LnRha2VzU2xvd1BhdGgoKQorICAgICAgICAmJiBieXRlY29kZUluZGV4
ICE9IDIwCiAgICAgICAgICYmIGhhc0V4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5k
ZXgpKQotICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhyZXN1bHQubWFrZXNDYWxscygpID8g
TWFrZXNDYWxscyA6IFRha2VzU2xvd1BhdGgsIHRydWUpOworICAgICAgICByZXR1cm4gcmVzdWx0
LnNsb3dWZXJzaW9uKCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShtYXApOwogI2VuZGlmCkBA
IC0xMzcsNyArMTQxLDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9y
UwogICAgICAgICBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YShwcm9maWxlZEJs
b2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpKTsKIAogICAgIGlmICghcmVzdWx0LnRha2Vz
U2xvd1BhdGgoKSAmJiBHZXRCeUlkU3RhdHVzOjpoYXNFeGl0U2l0ZShwcm9maWxlZEJsb2NrLCBj
b2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpKQotICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhy
ZXN1bHQubWFrZXNDYWxscygpID8gR2V0QnlJZFN0YXR1czo6TWFrZXNDYWxscyA6IEdldEJ5SWRT
dGF0dXM6OlRha2VzU2xvd1BhdGgsIHRydWUpOworICAgICAgICByZXR1cm4gcmVzdWx0LnNsb3dW
ZXJzaW9uKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJ
VCkKQEAgLTE3MCw4ICsxNzQsMTEgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21w
dXRlRm9yUwogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGlmIChzdHViSW5mby0+dG9va1Ns
b3dQYXRoKQorICAgIGlmIChzdHViSW5mby0+dG9va1Nsb3dQYXRoKSB7CisgICAgICAgIGlmIChz
dHViSW5mby0+Y29kZU9yaWdpbi5ieXRlY29kZUluZGV4ID09IDIwKQorICAgICAgICAgICAgZGF0
YUxvZygiU3R1YiBpbmZvIHRvb2sgc2xvdyBwYXRoLlxuIik7CiAgICAgICAgIHJldHVybiBHZXRC
eUlkU3RhdHVzKHNsb3dQYXRoU3RhdGUpOworICAgIH0KICAgICAKICAgICAvLyBGaW5hbGx5IGZp
Z3VyZSBvdXQgaWYgd2UgY2FuIGRlcml2ZSBhbiBhY2Nlc3Mgc3RyYXRlZ3kuCiAgICAgR2V0QnlJ
ZFN0YXR1cyByZXN1bHQ7CkBAIC0zMzIsMTIgKzMzOSwxNSBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5
SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgICAgICByZXN1bHQgPSBjb21wdXRlRm9yU3R1
YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygKICAgICAgICAgICAgICAgICBsb2NrZXIsIGRm
Z0Jsb2NrLCBkZmdNYXAuZ2V0KGNvZGVPcmlnaW4pLCB1aWQsIGV4aXRTaXRlRGF0YSk7CiAgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChmYWxzZSAmJiBjb2RlT3JpZ2luLmJ5dGVjb2Rl
SW5kZXggPT0gMjApCisgICAgICAgICAgICBkYXRhTG9nKCJJbiAiLCBwb2ludGVyRHVtcChwcm9m
aWxlZEJsb2NrKSwgIiAiLCBjb2RlT3JpZ2luLCAiOiBERkcgc2F3OiAiLCByZXN1bHQsICJcbiIp
OwogCiAgICAgICAgIGlmIChyZXN1bHQudGFrZXNTbG93UGF0aCgpKQogICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICAKLSAgICAgICAgaWYgKGhhc0V4aXRTaXRlKHByb2ZpbGVkQmxvY2ss
IGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkpCi0gICAgICAgICAgICByZXR1cm4gR2V0QnlJZFN0
YXR1cyhUYWtlc1Nsb3dQYXRoLCB0cnVlKTsKKyAgICAgICAgaWYgKGNvZGVPcmlnaW4uYnl0ZWNv
ZGVJbmRleCAhPSAyMCAmJiBoYXNFeGl0U2l0ZShwcm9maWxlZEJsb2NrLCBjb2RlT3JpZ2luLmJ5
dGVjb2RlSW5kZXgpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5zbG93VmVyc2lvbigpOwog
ICAgICAgICAKICAgICAgICAgaWYgKHJlc3VsdC5pc1NldCgpKQogICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKQEAgLTM0Niw3ICszNTYsMTAgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVz
Ojpjb21wdXRlRm9yKAogICAgIFVOVVNFRF9QQVJBTShkZmdCbG9jayk7CiAgICAgVU5VU0VEX1BB
UkFNKGRmZ01hcCk7CiAjZW5kaWYKLQorICAgIAorICAgIGlmIChkZmdCbG9jayAmJiBjb2RlT3Jp
Z2luLmJ5dGVjb2RlSW5kZXggPT0gMjApCisgICAgICAgIGRhdGFMb2coIkluICIsIHBvaW50ZXJE
dW1wKHByb2ZpbGVkQmxvY2spLCAiICIsIGNvZGVPcmlnaW4sICI6IEdvaW5nIHdpdGggd2hhdCBi
YXNlbGluZSBzYXcuXG4iKTsKKyAgICAgICAgCiAgICAgcmV0dXJuIGNvbXB1dGVGb3IocHJvZmls
ZWRCbG9jaywgYmFzZWxpbmVNYXAsIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgdWlkKTsKIH0K
IApAQCAtNDE0LDYgKzQyNywxMSBAQCBib29sIEdldEJ5SWRTdGF0dXM6Om1ha2VzQ2FsbHMoKSBj
b25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVz
OjpzbG93VmVyc2lvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMobWFrZXND
YWxscygpID8gTWFrZXNDYWxscyA6IFRha2VzU2xvd1BhdGgsIHdhc1NlZW5JbkpJVCgpKTsKK30K
Kwogdm9pZCBHZXRCeUlkU3RhdHVzOjpmaWx0ZXIoY29uc3QgU3RydWN0dXJlU2V0JiBzZXQpCiB7
CiAgICAgaWYgKG1fc3RhdGUgIT0gU2ltcGxlKQpAQCAtNDIzLDYgKzQ0MSwyNSBAQCB2b2lkIEdl
dEJ5SWRTdGF0dXM6OmZpbHRlcihjb25zdCBTdHJ1Y3R1CiAgICAgICAgIG1fc3RhdGUgPSBOb0lu
Zm9ybWF0aW9uOwogfQogCit2b2lkIEdldEJ5SWRTdGF0dXM6Om1hcmtJZkNoZWFwKFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQoreworICAgIGZvciAoR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3Zh
cmlhbnRzKQorICAgICAgICB2YXJpYXQubWFya0lmQ2hlYXAodmlzaXRvcik7Cit9CisKK2Jvb2wg
R2V0QnlJZFN0YXR1czo6ZmluYWxpemUoKQoreworICAgIGZvciAoR2V0QnlJZFZhcmlhbnQmIHZh
cmlhbnQgOiBtX3ZhcmlhbnRzKSB7CisgICAgICAgIGlmICghdmFyaWFudC5maW5hbGl6ZSgpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAobV9tb2R1bGVOYW1lc3Bh
Y2VPYmplY3QgJiYgIUhlYXA6OmlzTWFya2VkKG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0KSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX21vZHVsZUVudmlyb25tZW50ICYmICFIZWFw
Ojppc01hcmtlZChtX21vZHVsZUVudmlyb25tZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIEdldEJ5SWRTdGF0dXM6OmR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3QKIHsKICAgICBvdXQucHJpbnQoIigiKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAkocmV2aXNpb24gMjMyMjI3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMTA2LDYgKzEwNiw4IEBAIHB1YmxpYzoKICAgICBib29sIHRha2VzU2xv
d1BhdGgoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFRha2VzU2xvd1BhdGggfHwgbV9zdGF0
ZSA9PSBNYWtlc0NhbGxzIHx8IG1fc3RhdGUgPT0gQ3VzdG9tIHx8IG1fc3RhdGUgPT0gTW9kdWxl
TmFtZXNwYWNlOyB9CiAgICAgYm9vbCBtYWtlc0NhbGxzKCkgY29uc3Q7CiAgICAgCisgICAgR2V0
QnlJZFN0YXR1cyBzbG93VmVyc2lvbigpIGNvbnN0OworICAgIAogICAgIGJvb2wgd2FzU2Vlbklu
SklUKCkgY29uc3QgeyByZXR1cm4gbV93YXNTZWVuSW5KSVQ7IH0KICAgICAKICAgICAvLyBBdHRl
bXB0cyB0byByZWR1Y2UgdGhlIHNldCBvZiB2YXJpYW50cyB0byBmaXQgdGhlIGdpdmVuIHN0cnVj
dHVyZSBzZXQuIFRoaXMgbWF5IGJlIGFwcHJveGltYXRlLgpAQCAtMTE1LDYgKzExNyw5IEBAIHB1
YmxpYzoKICAgICBKU01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fbW9kdWxlRW52aXJvbm1lbnQ7IH0KICAgICBTY29wZU9mZnNldCBzY29wZU9m
ZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVPZmZzZXQ7IH0KICAgICAKKyAgICB2b2lkIG1h
cmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7CisgICAgYm9vbCBmaW5hbGl6ZSgpOyAvLyBSZXR1cm4g
dHJ1ZSBpZiB0aGlzIGdldHMgdG8gbGl2ZS4KKyAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mKSBjb25zdDsKICAgICAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzNSw2ICsxMzUsMjQgQEAgYm9vbCBHZXRCeUlkVmFyaWFudDo6YXR0ZW1w
dFRvTWVyZ2UoY29ucwogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIEdldEJ5SWRWYXJpYW50
OjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBtX3N0cnVjdHVyZVNl
dC5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKK30KKworYm9vbCBHZXRCeUlkVmFyaWFudDo6ZmluYWxp
emUoKQoreworICAgIGlmICghbV9zdHJ1Y3R1cmVTZXQuaXNTdGlsbEFsaXZlKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fY29uZGl0aW9uU2V0LmFyZVN0aWxsTGl2ZSgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fY2FsbExpbmtTdGF0dXMgJiYgIW1fY2Fs
bExpbmtTdGF0dXMtPmZpbmFsaXplKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
bV9pbnRyaW5zaWNGdW5jdGlvbiAmJiAhSGVhcDo6aXNNYXJrZWQobV9pbnRyaW5zaWNGdW5jdGlv
bikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBH
ZXRCeUlkVmFyaWFudDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIGR1bXBJ
bkNvbnRleHQob3V0LCAwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9H
ZXRCeUlkVmFyaWFudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9HZXRCeUlkVmFyaWFudC5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzMs
NiArNzMsOSBAQCBwdWJsaWM6CiAKICAgICBib29sIGF0dGVtcHRUb01lcmdlKGNvbnN0IEdldEJ5
SWRWYXJpYW50JiBvdGhlcik7CiAgICAgCisgICAgdm9pZCBtYXJrSWZDaGVhcChTbG90VmlzaXRv
ciYpOworICAgIGJvb2wgZmluYWxpemUoKTsKKyAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mKSBjb25zdDsKICAgICB2b2lkIGR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mLCBEdW1wQ29u
dGV4dCopIGNvbnN0OwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0lDU3RhdHVzTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0lDU3RhdHVzTWFwLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0lDU3RhdHVzTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhbWdhIG9u
Y2UKKworI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQ2FsbExpbmtJbmZvOworY2xhc3MgR2V0QnlJZFN0
YXR1czsKK2NsYXNzIFB1dEJ5SWRTdGF0dXM7CitjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsKK3N0
cnVjdCBCeVZhbEluZm87CisKK3N0cnVjdCBJQ1N0YXR1cyB7CisgICAgU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvIHsgbnVsbHB0ciB9OworICAgIEdldEJ5SWRTdGF0dXMqIGdldFN0YXR1cyB7
IG51bGxwdHIgfTsKKyAgICBQdXRCeUlkU3RhdHVzKiBwdXRTdGF0dXMgeyBudWxscHRyIH07Cisg
ICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8geyBudWxscHRyIH07CisgICAgQnlWYWxJbmZv
KiBieVZhbEluZm8geyBudWxscHRyIH07Cit9OworCit0eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdp
biwgSUNTdGF0dXMsIENvZGVPcmlnaW5BcHByb3hpbWF0ZUhhc2g+IElDU3RhdHVzTWFwOworCit9
IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1B1dEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zOTgsNiArMzk4LDIxIEBAIGJvb2wgUHV0QnlJZFN0YXR1czo6bWFrZXNDYWxscygpIGNvbnN0
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIFB1dEJ5SWRTdGF0dXM6Om1hcmtJZkNoZWFw
KFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGZvciAoUHV0QnlJZFZhcmlhbnQmIHZhcmlh
bnQgOiBtX3ZhcmlhbnRzKQorICAgICAgICB2YXJpYW50Lm1hcmtJZkNoZWFwKHZpc2l0b3IpOwor
fQorCitib29sIFB1dEJ5SWRTdGF0dXM6OmZpbmFsaXplKCkKK3sKKyAgICBmb3IgKFB1dEJ5SWRW
YXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykgeworICAgICAgICBpZiAoIXZhcmlhbnQuZmlu
YWxpemUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKIHZvaWQgUHV0QnlJZFN0YXR1czo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dAogewogICAgIHN3aXRjaCAobV9zdGF0ZSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkp
CkBAIC05MSw2ICs5MSw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBQdXRCeUlkVmFyaWFudCYgYXQo
c2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBtX3ZhcmlhbnRzW2luZGV4XTsgfQogICAgIGNv
bnN0IFB1dEJ5SWRWYXJpYW50JiBvcGVyYXRvcltdKHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1
cm4gYXQoaW5kZXgpOyB9CiAgICAgCisgICAgdm9pZCBtYXJrSWZDaGVhcChTbG90VmlzaXRvciYp
OworICAgIGJvb2wgZmluYWxpemUoKTsKKyAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0m
KSBjb25zdDsKICAgICAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjA2LDYgKzIwNiwyNiBAQCBib29sIFB1dEJ5SWRWYXJpYW50OjphdHRlbXB0
VG9NZXJnZVRyYW5zCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgUHV0QnlJZFZhcmlhbnQ6
Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIG1fb2xkU3RydWN0dXJl
Lm1hcmtJZkNoZWFwKHZpc2l0b3IpOworICAgIGlmIChtX25ld1N0cnVjdHVyZSkKKyAgICAgICAg
bV9uZXdTdHJ1Y3R1cmUtPm1hcmtJZkNoZWFwKHZpc2l0b3IpOworfQorCitib29sIFB1dEJ5SWRW
YXJpYW50OjpmaW5hbGl6ZSgpCit7CisgICAgaWYgKCFtX29sZFN0cnVjdHVyZS5pc1N0aWxsQWxp
dmUodmlzaXRvcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9uZXdTdHJ1Y3R1
cmUgJiYgIUhlYXA6OmlzTWFya2VkKG1fbmV3U3RydWN0dXJlKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmICghbV9jb25kaXRpb25TZXQuYXJlU3RpbGxMaXZlKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAobV9jYWxsTGlua1N0YXR1cyAmJiAhbV9jYWxsTGlua1N0YXR1
cy0+ZmluYWxpemUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOwor
fQorCiB2b2lkIFB1dEJ5SWRWYXJpYW50OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7
CiAgICAgZHVtcEluQ29udGV4dChvdXQsIDApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTEyOSw2ICsxMjksOSBAQCBwdWJsaWM6CiAKICAgICBib29sIGF0dGVtcHRUb01l
cmdlKGNvbnN0IFB1dEJ5SWRWYXJpYW50JiBvdGhlcik7CiAgICAgCisgICAgdm9pZCBtYXJrSWZD
aGVhcChTbG90VmlzaXRvciYpOworICAgIGJvb2wgZmluYWxpemUoKTsKKyAgICAKICAgICB2b2lk
IGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICB2b2lkIGR1bXBJbkNvbnRleHQoUHJpbnRT
dHJlYW0mLCBEdW1wQ29udGV4dCopIGNvbnN0OwogCkBAIC0xMzcsNyArMTQwLDcgQEAgcHJpdmF0
ZToKICAgICAKICAgICBLaW5kIG1fa2luZDsKICAgICBTdHJ1Y3R1cmVTZXQgbV9vbGRTdHJ1Y3R1
cmU7Ci0gICAgU3RydWN0dXJlKiBtX25ld1N0cnVjdHVyZTsKKyAgICBTdHJ1Y3R1cmUqIG1fbmV3
U3RydWN0dXJlIHsgbnVsbHB0ciB9OwogICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IG1f
Y29uZGl0aW9uU2V0OwogICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0OwogICAgIEluZmVycmVk
VHlwZTo6RGVzY3JpcHRvciBtX3JlcXVpcmVkVHlwZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuaAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJHZXRCeUlkU3RhdHVz
LmgiCisjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3Ry
dWN0IFJlY29yZGVkU3RhdHVzZXMgeworICAgIHZvaWQgYWRkR2V0QnlJZFN0YXR1cyhjb25zdCBD
b2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBjb25zdCBHZXRCeUlkU3RhdHVzJiBzdGF0dXMpCisgICAg
eworICAgICAgICBnZXRzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihjb2RlT3JpZ2luLCBzdGF0dXMp
KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBhZGRQdXRCeUlkU3RhdHVzKGNvbnN0IENvZGVPcmln
aW4mIGNvZGVPcmlnaW4sIGNvbnN0IFB1dEJ5SWRTdGF0dXMmIHN0YXR1cykKKyAgICB7CisgICAg
ICAgIHB1dHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIHN0YXR1cykpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiBzbG90VmlzaXRvcikK
KyAgICB7CisgICAgICAgIGZvciAoYXV0byYgcGFpciA6IGdldHMpCisgICAgICAgICAgICBwYWly
LnNlY29uZC5tYXJrSWZDaGVhcChzbG90VmlzaXRvcik7CisgICAgICAgIGZvciAoYXV0byYgcGFp
ciA6IHB1dHMpCisgICAgICAgICAgICBwYWlyLnNlY29uZC5tYXJrSWZDaGVhcChzbG90VmlzaXRv
cik7CisgICAgfQorICAgIAorICAgIHZvaWQgZmluYWxpemUoKQorICAgIHsKKyAgICAgICAgZ2V0
cy5yZW1vdmVBbGxNYXRjaGluZygKKyAgICAgICAgICAgIFsmXSAoYXV0byYgcGFpcikgLT4gYm9v
bCB7CisgICAgICAgICAgICAgICAgcmV0dXJuICFwYWlyLnNlY29uZC5maW5hbGl6ZSgpOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIGdldHMuc2hyaW5rVG9GaXQoKTsKKyAgICAgICAgcHV0cy5y
ZW1vdmVBbGxNYXRjaGluZygKKyAgICAgICAgICAgIFsmXSAoYXV0byYgcGFpcikgLT4gYm9vbCB7
CisgICAgICAgICAgICAgICAgcmV0dXJuICFwYWlyLnNlY29uZC5maW5hbGl6ZSgpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIHB1dHMuc2hyaW5rVG9GaXQoKTsKKyAgICB9CisgICAgCisgICAg
VmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBHZXRCeUlkU3RhdHVzPj4gZ2V0czsKKyAgICBW
ZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIFB1dEJ5SWRTdGF0dXM+PiBwdXRzOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTZXQuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zMSw2ICszMSwyMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAordm9pZCBTdHJ1Y3R1cmVTZXQ6
Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9yKSBjb25zdAoreworICAgIGZvciAoU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgOiAqdGhpcykKKyAgICAgICAgc3RydWN0dXJlLT5tYXJrSWZDaGVh
cCh2aXNpdG9yKTsKK30KKworYm9vbCBTdHJ1Y3R1cmVTZXQ6OmlzU3RpbGxBbGl2ZSgpIGNvbnN0
Cit7CisgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6ICp0aGlzKSB7CisgICAgICAgIGlm
ICghSGVhcDo6aXNNYXJrZWQoc3RydWN0dXJlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgU3RydWN0dXJlU2V0OjpkdW1wSW5D
b250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAogewog
ICAgIENvbW1hUHJpbnRlciBjb21tYTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU2V0LmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMtMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTU4LDYgKzU4LDkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG9ubHlFbnRy
eSgpOwogICAgIH0KKworICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKSBjb25zdDsK
KyAgICBib29sIGlzU3RpbGxBbGl2ZSgpIGNvbnN0OwogICAgIAogICAgIHZvaWQgZHVtcEluQ29u
dGV4dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0KikgY29uc3Q7CiAgICAgdm9pZCBkdW1wKFBy
aW50U3RyZWFtJikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VGVybWluYXRlZENvZGVPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVGVybWluYXRlZENvZGVPcmlnaW4uaAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVGVybWluYXRlZENvZGVPcmlnaW4uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0
IFRlcm1pbmF0ZWRDb2RlT3JpZ2luIHsKKyAgICBUZXJtaW5hdGVkQ29kZU9yaWdpbigpIHsgfQor
ICAgIAorICAgIFRlcm1pbmF0ZWRDb2RlT3JpZ2luKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmln
aW4sIENvZGVCbG9jayogdGVybWluYWwpCisgICAgICAgIDogY29kZU9yaWdpbihjb2RlT3JpZ2lu
KQorICAgICAgICAsIHRlcm1pbmFsKHRlcm1pbmFsKQorICAgIHsKKyAgICB9CisgICAgCisgICAg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luOworICAgIENvZGVCbG9jayogdGVybWluYWwgeyBudWxscHRy
IH07Cit9OworCitzdHJ1Y3QgVGVybWluYXRlZENvZGVPcmlnaW5IYXNoVHJhbnNsYXRvciB7Cisg
ICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVGVybWluYXRlZENvZGVPcmlnaW4mIHZhbHVl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlLmNvZGVPcmlnaW4uYXBwcm94aW1hdGVIYXNo
KHZhbHVlLnRlcm1pbmFsKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29u
c3QgQ29kZU9yaWdpbiYgYSwgY29uc3QgVGVybWluYXRlZENvZGVPcmlpZ24mIGIpCisgICAgewor
ICAgICAgICByZXR1cm4gYi5jb2RlT3JpZ2luLmFwcHJveGltYXRlbHlFcXVhbChhLCBiLnRlcm1p
bmFsKTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIz
MjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MDA5LDcgKzQwMDksMTIgQEAgdm9pZCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlR2V0QnlJZCgKICAgICAKICAgICBpZiAoZ2V0QnlJZFN0YXR1cy5udW1WYXJpYW50
cygpID4gMSkgewogICAgICAgICBpZiAoZ2V0QnlJZFN0YXR1cy5tYWtlc0NhbGxzKCkgfHwgIWlz
RlRMKG1fZ3JhcGgubV9wbGFuLm1vZGUpCi0gICAgICAgICAgICB8fCAhT3B0aW9uczo6dXNlUG9s
eW1vcnBoaWNBY2Nlc3NJbmxpbmluZygpKSB7CisgICAgICAgICAgICB8fCAhT3B0aW9uczo6dXNl
UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZygpCisgICAgICAgICAgICB8fCBnZXRCeUlkU3RhdHVz
Lm51bVZhcmlhbnRzKCkgPiBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlz
dFNpemUoKSkgeworICAgICAgICAgICAgaWYgKGZhbHNlICYmIGdldEJ5SWRTdGF0dXMubnVtVmFy
aWFudHMoKSA+IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZSgp
KSB7CisgICAgICAgICAgICAgICAgZGF0YUxvZygiQXQgIiwgY3VycmVudENvZGVPcmlnaW4oKSwg
IlxuIik7CisgICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2aW5nIHVwIG9uOiAiLCBnZXRCeUlk
U3RhdHVzLCAiXG4iKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVn
aXN0ZXIoZGVzdGluYXRpb25PcGVyYW5kKSwKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKGdl
dEJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBiYXNl
KSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC00MTUwLDcgKzQxNTUsMTAgQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICAKICAgICBpZiAocHV0QnlJZFN0YXR1cy5u
dW1WYXJpYW50cygpID4gMSkgewogICAgICAgICBpZiAoIWlzRlRMKG1fZ3JhcGgubV9wbGFuLm1v
ZGUpIHx8IHB1dEJ5SWRTdGF0dXMubWFrZXNDYWxscygpCi0gICAgICAgICAgICB8fCAhT3B0aW9u
czo6dXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZygpKSB7CisgICAgICAgICAgICB8fCAhT3B0
aW9uczo6dXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZygpCisgICAgICAgICAgICB8fCBwdXRC
eUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgPiBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0FjY2Vzc0lu
bGluaW5nTGlzdFNpemUoKSkgeworICAgICAgICAgICAgaWYgKGZhbHNlICYmIHB1dEJ5SWRTdGF0
dXMubnVtVmFyaWFudHMoKSA+IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdM
aXN0U2l6ZSgpKQorICAgICAgICAgICAgICAgIGRhdGFMb2coIkdpdmluZyB1cCBvbjogIiwgcHV0
QnlJZFN0YXR1cywgIlxuIik7CiAgICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlm
aWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bW1vbkRhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bW1vbkRhdGEuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb21tb25EYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNSw2ICsxMjUsNyBAQCBwdWJs
aWM6CiAgICAgQmFnPENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludD4gd2F0Y2hwb2ludHM7
CiAgICAgQmFnPEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludD4gYWRhcHRpdmVTdHJ1Y3R1cmVX
YXRjaHBvaW50czsKICAgICBCYWc8QWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBv
aW50PiBhZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRzOworICAgIFJlY29y
ZGVkU3RhdHVzZXMgcmVjb3JkZWRTdGF0dXNlczsKICAgICBWZWN0b3I8SnVtcFJlcGxhY2VtZW50
PiBqdW1wUmVwbGFjZW1lbnRzOwogICAgIAogICAgIFNjcmF0Y2hCdWZmZXIqIGNhdGNoT1NSRW50
cnlCdWZmZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBp
bGVyLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OCw2ICsxODgsOCBAQCB2b2lk
IEpJVENvbXBpbGVyOjpjb21waWxlRXhjZXB0aW9uSGFuZGxlCiAKIHZvaWQgSklUQ29tcGlsZXI6
OmxpbmsoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKIHsKKyAgICBtX2ppdENvZGUtPmNvbW1vbi5y
ZWNvcmRlZFN0YXR1c2VzID0gV1RGTW92ZShtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2Vz
KTsKKyAgICAKICAgICAvLyBMaW5rIHRoZSBjb2RlLCBwb3B1bGF0ZSBkYXRhIGluIENvZGVCbG9j
ayBkYXRhIHN0cnVjdHVyZXMuCiAgICAgbV9qaXRDb2RlLT5jb21tb24uZnJhbWVSZWdpc3RlckNv
dW50ID0gbV9ncmFwaC5mcmFtZVJlZ2lzdGVyQ291bnQoKTsKICAgICBtX2ppdENvZGUtPmNvbW1v
bi5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0ID0gbV9ncmFwaC5yZXF1aXJlZFJlZ2lzdGVy
Q291bnRGb3JFeGl0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJ
KHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTYzMyw2ICs2MzMsOCBAQCB2b2lkIFBsYW46OmNoZWNrTGl2
ZW5lc3NBbmRWaXNpdENoaWxkcmVuCiAgICAgY2xlYW5NdXN0SGFuZGxlVmFsdWVzSWZOZWNlc3Nh
cnkoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtdXN0SGFuZGxlVmFsdWVzLnNpemUoKTsgaS0t
OykKICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChtdXN0SGFuZGxlVmFsdWVzW2ld
KTsKKyAgICAKKyAgICByZWNvcmRlZFN0YXR1c2VzLm1hcmtJZkNoZWFwKHZpc2l0b3IpOwogCiAg
ICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxvY2spOwogICAgIHZpc2l0b3IuYXBw
ZW5kVW5iYXJyaWVyZWQoY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKTsKQEAgLTY0OSw2ICs2NTEs
MTEgQEAgdm9pZCBQbGFuOjpjaGVja0xpdmVuZXNzQW5kVmlzaXRDaGlsZHJlbgogICAgIHRyYW5z
aXRpb25zLnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiB9CiAKK3ZvaWQgUGxhbjo6ZmluYWxpemVJ
bkdDKCkKK3sKKyAgICByZWNvcmRlZFN0YXR1c2VzLmZpbmFsaXplKCk7Cit9CisKIGJvb2wgUGxh
bjo6aXNLbm93blRvQmVMaXZlRHVyaW5nR0MoKQogewogICAgIGlmIChzdGFnZSA9PSBDYW5jZWxs
ZWQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaAkocmV2aXNpb24gMjMyMjI3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgJKHdvcmtpbmcgY29weSkK
QEAgLTcyLDYgKzcyLDcgQEAgc3RydWN0IFBsYW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZQogICAgIHZvaWQgaXRlcmF0ZUNvZGVCbG9ja3NGb3JHQyhjb25zdCBGdW5jJik7CiAgICAgdm9p
ZCBjaGVja0xpdmVuZXNzQW5kVmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOwogICAgIGJvb2wg
aXNLbm93blRvQmVMaXZlRHVyaW5nR0MoKTsKKyAgICB2b2lkIGZpbmFsaXplSW5HQygpOwogICAg
IHZvaWQgY2FuY2VsKCk7CiAKICAgICBib29sIGNhblRpZXJVcEFuZE9TUkVudGVyKCkgY29uc3Qg
eyByZXR1cm4gIXRpZXJVcEFuZE9TUkVudGVyQnl0ZWNvZGVzLmlzRW1wdHkoKTsgfQpAQCAtMTA0
LDYgKzEwNSw3IEBAIHN0cnVjdCBQbGFuIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGUKICAg
ICBEZXNpcmVkSWRlbnRpZmllcnMgaWRlbnRpZmllcnM7CiAgICAgRGVzaXJlZFdlYWtSZWZlcmVu
Y2VzIHdlYWtSZWZlcmVuY2VzOwogICAgIERlc2lyZWRUcmFuc2l0aW9ucyB0cmFuc2l0aW9uczsK
KyAgICBSZWNvcmVkU3RhdHVzZXMgcmVjb3JkZWRTdGF0dXNlczsKICAgICAKICAgICBib29sIHdp
bGxUcnlUb1RpZXJVcCB7IGZhbHNlIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHV29ya2xpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHV29ya2xpc3QuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzkzLDggKzM5Mywx
MCBAQCB2b2lkIFdvcmtsaXN0OjpyZW1vdmVEZWFkUGxhbnMoVk0mIHZtKQogICAgICAgICAgICAg
UGxhbiogcGxhbiA9IGl0ZXItPnZhbHVlLmdldCgpOwogICAgICAgICAgICAgaWYgKHBsYW4tPnZt
ICE9ICZ2bSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChwbGFu
LT5pc0tub3duVG9CZUxpdmVEdXJpbmdHQygpKQorICAgICAgICAgICAgaWYgKHBsYW4tPmlzS25v
d25Ub0JlTGl2ZUR1cmluZ0dDKCkpIHsKKyAgICAgICAgICAgICAgICBwbGFuLT5maW5hbGl6ZUlu
R0MoKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKHBsYW4tPnN0YWdlICE9IFBsYW46OkNhbmNlbGxlZCk7IC8vIFNo
b3VsZCBub3QgYmUgY2FuY2VsbGVkLCB5ZXQuCiAgICAgICAgICAgICBBU1NFUlQoIWRlYWRQbGFu
S2V5cy5jb250YWlucyhwbGFuLT5rZXkoKSkpOwogICAgICAgICAgICAgZGVhZFBsYW5LZXlzLmFk
ZChwbGFuLT5rZXkoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTU2LDYgKzU2LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwg
ewogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19taW5DYXBhY2l0eSwgRGlyZWN0QXJndW1lbnRz
OjpvZmZzZXRPZk1pbkNhcGFjaXR5KCkpIFwKICAgICBtYWNybyhEaXJlY3RBcmd1bWVudHNfbWFw
cGVkQXJndW1lbnRzLCBEaXJlY3RBcmd1bWVudHM6Om9mZnNldE9mTWFwcGVkQXJndW1lbnRzKCkp
IFwKICAgICBtYWNybyhEaXJlY3RBcmd1bWVudHNfbW9kaWZpZWRBcmd1bWVudHNEZXNjcmlwdG9y
LCBEaXJlY3RBcmd1bWVudHM6Om9mZnNldE9mTW9kaWZpZWRBcmd1bWVudHNEZXNjcmlwdG9yKCkp
IFwKKyAgICBtYWNybyhGdW5jdGlvblJhcmVEYXRhX2FsbG9jYXRvciwgRnVuY3Rpb25SYXJlRGF0
YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblBy
b2ZpbGU6Om9mZnNldE9mQWxsb2NhdG9yKCkpIFwKKyAgICBtYWNybyhGdW5jdGlvblJhcmVEYXRh
X3N0cnVjdHVyZSwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mU3RydWN0dXJlKCkpIFwK
ICAgICBtYWNybyhHZXR0ZXJTZXR0ZXJfZ2V0dGVyLCBHZXR0ZXJTZXR0ZXI6Om9mZnNldE9mR2V0
dGVyKCkpIFwKICAgICBtYWNybyhHZXR0ZXJTZXR0ZXJfc2V0dGVyLCBHZXR0ZXJTZXR0ZXI6Om9m
ZnNldE9mU2V0dGVyKCkpIFwKICAgICBtYWNybyhKU0FycmF5QnVmZmVyVmlld19sZW5ndGgsIEpT
QXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSBcCkBAIC0xMTIsMTAgKzExNCwxMCBA
QCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8oU3RyaW5nSW1wbF9s
ZW5ndGgsIFN0cmluZ0ltcGw6Omxlbmd0aE1lbW9yeU9mZnNldCgpKSBcCiAgICAgbWFjcm8oU3Ry
dWN0dXJlX2NsYXNzSW5mbywgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSkgXAogICAgIG1h
Y3JvKFN0cnVjdHVyZV9nbG9iYWxPYmplY3QsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0
KCkpIFwKKyAgICBtYWNybyhTdHJ1Y3R1cmVfaW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeSwg
U3RydWN0dXJlOjppbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5T2Zmc2V0KCkpIFwKKyAgICBt
YWNybyhTdHJ1Y3R1cmVfaW5saW5lQ2FwYWNpdHksIFN0cnVjdHVyZTo6aW5saW5lQ2FwYWNpdHlP
ZmZzZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVyZV9wcm90b3R5cGUsIFN0cnVjdHVyZTo6cHJv
dG90eXBlT2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfc3RydWN0dXJlSUQsIFN0cnVj
dHVyZTo6c3RydWN0dXJlSURPZmZzZXQoKSkgXAotICAgIG1hY3JvKFN0cnVjdHVyZV9pbmxpbmVD
YXBhY2l0eSwgU3RydWN0dXJlOjppbmxpbmVDYXBhY2l0eU9mZnNldCgpKSBcCi0gICAgbWFjcm8o
U3RydWN0dXJlX2luZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnksIFN0cnVjdHVyZTo6aW5kZXhp
bmdNb2RlSW5jbHVkaW5nSGlzdG9yeU9mZnNldCgpKSBcCiAgICAgbWFjcm8oSGFzaE1hcEltcGxf
Y2FwYWNpdHksIEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+
Pjo6b2Zmc2V0T2ZDYXBhY2l0eSgpKSBcCiAgICAgbWFjcm8oSGFzaE1hcEltcGxfYnVmZmVyLCAg
SGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT4+OjpvZmZzZXRP
ZkJ1ZmZlcigpKSBcCiAgICAgbWFjcm8oSGFzaE1hcEltcGxfaGVhZCwgIEhhc2hNYXBJbXBsPEhh
c2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+Pjo6b2Zmc2V0T2ZIZWFkKCkpIFwKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHJl
dmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUxLDYgKzM1MSw3IEBAIGlubGluZSBDYXBhYmls
aXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAg
IGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKICAgICBjYXNlIE1hdGNoU3RydWN0dXJlOgorICAgIGNh
c2UgQ3JlYXRlVGhpczoKICAgICAgICAgLy8gVGhlc2UgYXJlIE9LLgogICAgICAgICBicmVhazsK
IApAQCAtMzYyLDcgKzM2Myw2IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShO
b2RlKiAKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIElkZW50aXR5V2l0aFByb2ZpbGU6Ci0g
ICAgY2FzZSBDcmVhdGVUaGlzOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2Fz
ZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJ
KHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQ3LDYgKzg0Nyw5IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgTmV3QXJyYXlXaXRoU3ByZWFkOgogICAgICAgICAgICAgY29tcGlsZU5ld0Fy
cmF5V2l0aFNwcmVhZCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3JlYXRl
VGhpczoKKyAgICAgICAgICAgIGNvbXBpbGVDcmVhdGVUaGlzKCk7CisgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBTcHJlYWQ6CiAgICAgICAgICAgICBjb21waWxlU3ByZWFkKCk7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTU2NjIsNiArNTY2NSw0MCBAQCBwcml2YXRlOgogCiAgICAg
ICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICB9CisgICAgCisgICAgdm9pZCBjb21waWxlQ3Jl
YXRlVGhpcygpCisgICAgeworICAgICAgICBMVmFsdWUgY2FsbGVlID0gbG93Q2VsbChtX25vZGUt
PmNoaWxkMSgpKTsKKworICAgICAgICBMQmFzaWNCbG9jayBpc0Z1bmN0aW9uQmxvY2sgPSBtX291
dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBoYXNSYXJlRGF0YSA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRoID0gbV9vdXQubmV3QmxvY2so
KTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsK
KworICAgICAgICBtX291dC5icmFuY2goaXNGdW5jdGlvbihjYWxsZWUsIHByb3ZlblR5cGUobV9u
b2RlLT5jaGlsZDEoKSkpLCB1c3VhbGx5KGlzRnVuY3Rpb25CbG9jayksIHJhcmVseShzbG93UGF0
aCkpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaXNG
dW5jdGlvbkJsb2NrLCBoYXNSYXJlRGF0YSk7CisgICAgICAgIExWYWx1ZSByYXJlRGF0YSA9IG1f
b3V0LmxvYWRQdHIoY2FsbGVlLCBtX2hlYXBzLkpTRnVuY3Rpb25fcmFyZURhdGEpOworICAgICAg
ICBtX291dC5icmFuY2gobV9vdXQuaXNaZXJvNjQocmFyZURhdGEpLCByYXJlbHkoc2xvd1BhdGgp
LCB1c3VhbGx5KGhhc1JhcmVEYXRhKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaGFzUmFy
ZURhdGEsIHNsb3dQYXRoKTsKKyAgICAgICAgTFZhbHVlIGFsbG9jYXRvciA9IG1fb3V0LmxvYWRQ
dHIocmFyZURhdGEsIG1faGVhcHMuRnVuY3Rpb25SYXJlRGF0YV9hbGxvY2F0b3IpOworICAgICAg
ICBMVmFsdWUgc3RydWN0dXJlID0gbV9vdXQubG9hZFB0cihyYXJlRGF0YSwgbV9oZWFwcy5GdW5j
dGlvblJhcmVEYXRhX3N0cnVjdHVyZSk7CisgICAgICAgIExWYWx1ZSBidXR0ZXJmbHkgPSBtX291
dC5jb25zdEludFB0cigwKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1f
b3V0LmFuY2hvcihhbGxvY2F0ZU9iamVjdChhbGxvY2F0b3IsIHN0cnVjdHVyZSwgYnV0dGVyZmx5
LCBzbG93UGF0aCkpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAg
ICAgbV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIFZhbHVl
RnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKAorICAgICAgICAgICAg
SW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25DcmVhdGVUaGlzKSwgbV9jYWxsRnJhbWUs
IGNhbGxlZSwgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPmlubGluZUNhcGFjaXR5KCkpKSk7Cisg
ICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRU
byhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0
LnBoaShJbnQ2NCwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCk7CisKKyAgICAgICAgbXV0YXRvckZl
bmNlKCk7CisgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKKyAgICB9CiAKICAgICB2b2lkIGNv
bXBpbGVTcHJlYWQoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjc1LDYgKzI3NSw3IEBAIGNvbnN0ZXhw
ciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW4KICAgICB2KHVuc2lnbmVkLCBtYXhBY2Nl
c3NWYXJpYW50TGlzdFNpemUsIDgsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwgdXNl
UG9seXZhcmlhbnREZXZpcnR1YWxpemF0aW9uLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAg
ICB2KGJvb2wsIHVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcsIHRydWUsIE5vcm1hbCwgbnVs
bHB0cikgXAorICAgIHYodW5zaWduZWQsIG1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0
U2l6ZSwgMywgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihib29sLCB1c2VQb2x5bW9ycGhpY0Nh
bGxJbmxpbmluZywgdHJ1ZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihib29sLCB1c2VQb2x5
bW9ycGhpY0NhbGxJbmxpbmluZ0Zvck5vblN0dWJTdGF0dXMsIGZhbHNlLCBOb3JtYWwsIG51bGxw
dHIpIFwKICAgICB2KHVuc2lnbmVkLCBtYXhQb2x5bW9ycGhpY0NhbGxWYXJpYW50TGlzdFNpemUs
IDE1LCBOb3JtYWwsIG51bGxwdHIpIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341542</attachid>
            <date>2018-05-29 17:18:17 -0700</date>
            <delta_ts>2018-05-29 17:56:57 -0700</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>82897</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgJKHJldmlz
aW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8u
aAkod29ya2luZyBjb3B5KQpAQCAtMjY2LDEyICsyNjYsNiBAQCBpbmxpbmUgdW5zaWduZWQgZ2V0
QnlWYWxJbmZvQnl0ZWNvZGVJbmRlCiAgICAgcmV0dXJuIGluZm8tPmJ5dGVjb2RlSW5kZXg7CiB9
CiAKLXR5cGVkZWYgSGFzaE1hcDxDb2RlT3JpZ2luLCBCeVZhbEluZm8qLCBDb2RlT3JpZ2luQXBw
cm94aW1hdGVIYXNoPiBCeVZhbEluZm9NYXA7Ci0KLSNlbHNlIC8vIEVOQUJMRShKSVQpCi0KLXR5
cGVkZWYgSGFzaE1hcDxpbnQsIHZvaWQqPiBCeVZhbEluZm9NYXA7Ci0KICNlbmRpZiAvLyBFTkFC
TEUoSklUKQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkocmV2aXNpb24gMjMyMjI3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVz
dWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNDI3LDcgKzQyNyw3IEBAIHN0YXRpYyB2b2lkIGR1bXBDaGFpbihQcmlu
dFN0cmVhbSYgb3V0LCAKIH0KIAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVjb2Rl
RHVtcGVyPEJsb2NrPjo6cHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwg
aW50IGxvY2F0aW9uLCBjb25zdCBTdHViSW5mb01hcCYgbWFwKQordm9pZCBCeXRlY29kZUR1bXBl
cjxCbG9jaz46OnByaW50R2V0QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBs
b2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBjb25zdCBhdXRv
KiBpbnN0cnVjdGlvbiA9IGluc3RydWN0aW9uc0JlZ2luKCkgKyBsb2NhdGlvbjsKIApAQCAtNDQ3
LDcgKzQ0Nyw3IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludEdldEJ5SWQKICAg
ICB9CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YlB0
ciA9IG1hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpKSB7CisgICAgaWYgKFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViUHRyID0gc3RhdHVzTWFwLmdldChDb2RlT3JpZ2luKGxvY2F0aW9uKSkuc3R1
YkluZm8pIHsKICAgICAgICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gKnN0dWJQdHI7
CiAgICAgICAgIGlmIChzdHViSW5mby5yZXNldEJ5R0MpCiAgICAgICAgICAgICBvdXQucHJpbnQo
IiAoUmVzZXQgQnkgR0MpIik7CkBAIC00ODgsMTIgKzQ4OCwxMiBAQCB2b2lkIEJ5dGVjb2RlRHVt
cGVyPEJsb2NrPjo6cHJpbnRHZXRCeUlkCiAgICAgICAgIG91dC5wcmludGYoIikiKTsKICAgICB9
CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShtYXApOworICAgIFVOVVNFRF9QQVJBTShzdGF0dXNN
YXApOwogI2VuZGlmCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgotdm9pZCBCeXRlY29kZUR1
bXBlcjxCbG9jaz46OnByaW50UHV0QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGlu
dCBsb2NhdGlvbiwgY29uc3QgU3R1YkluZm9NYXAmIG1hcCkKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8
QmxvY2s+OjpwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9j
YXRpb24sIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgY29uc3QgYXV0byog
aW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNCZWdpbigpICsgbG9jYXRpb247CiAKQEAgLTUyMSw3
ICs1MjEsNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRQdXRCeUlkCiAgICAg
fQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJQdHIg
PSBtYXAuZ2V0KENvZGVPcmlnaW4obG9jYXRpb24pKSkgeworICAgIGlmIChTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YlB0ciA9IHN0YXR1c01hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpLnN0dWJJ
bmZvKSB7CiAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9ICpzdHViUHRyOwog
ICAgICAgICBpZiAoc3R1YkluZm8ucmVzZXRCeUdDKQogICAgICAgICAgICAgb3V0LnByaW50KCIg
KFJlc2V0IEJ5IEdDKSIpOwpAQCAtNTQ3LDEyICs1NDcsMTIgQEAgdm9pZCBCeXRlY29kZUR1bXBl
cjxCbG9jaz46OnByaW50UHV0QnlJZAogICAgICAgICBvdXQucHJpbnRmKCIpIik7CiAgICAgfQog
I2Vsc2UKLSAgICBVTlVTRURfUEFSQU0obWFwKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdHVzTWFw
KTsKICNlbmRpZgogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1w
ZXI8QmxvY2s+OjpwcmludEluQnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBs
b2NhdGlvbiwgY29uc3QgU3R1YkluZm9NYXAmIG1hcCkKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8Qmxv
Y2s+OjpwcmludEluQnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlv
biwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBjb25zdCBhdXRvKiBpbnN0
cnVjdGlvbiA9IGluc3RydWN0aW9uc0JlZ2luKCkgKyBsb2NhdGlvbjsKIApAQCAtNTYxLDcgKzU2
MSw3IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludEluQnlJZEMKICAgICBVTlVT
RURfUEFSQU0oaWRlbnQpOyAvLyB0ZWxsIHRoZSBjb21waWxlciB0byBzaHV0IHVwIGluIGNlcnRh
aW4gcGxhdGZvcm0gY29uZmlndXJhdGlvbnMuCiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmIChT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YlB0ciA9IG1hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikp
KSB7CisgICAgaWYgKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViUHRyID0gc3RhdHVzTWFwLmdldChD
b2RlT3JpZ2luKGxvY2F0aW9uKSkuc3R1YkluZm8pIHsKICAgICAgICAgU3RydWN0dXJlU3R1Yklu
Zm8mIHN0dWJJbmZvID0gKnN0dWJQdHI7CiAgICAgICAgIGlmIChzdHViSW5mby5yZXNldEJ5R0Mp
CiAgICAgICAgICAgICBvdXQucHJpbnQoIiAoUmVzZXQgQnkgR0MpIik7CkBAIC02MDAsMjYgKzYw
MCwyNiBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRJbkJ5SWRDCiAgICAgfQog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0ob3V0KTsKLSAgICBVTlVTRURfUEFSQU0obWFwKTsKKyAg
ICBVTlVTRURfUEFSQU0oc3RhdHVzTWFwKTsKICNlbmRpZgogfQogCiAjaWYgRU5BQkxFKEpJVCkK
IHRlbXBsYXRlPHR5cGVuYW1lIEJsb2NrPgotdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1
bXBDYWxsTGlua1N0YXR1cyhQcmludFN0cmVhbSYsIHVuc2lnbmVkLCBjb25zdCBDYWxsTGlua0lu
Zm9NYXAmKQordm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBDYWxsTGlua1N0YXR1cyhQ
cmludFN0cmVhbSYsIHVuc2lnbmVkLCBjb25zdCBJQ1N0YXR1c01hcCYpCiB7CiB9CiAKIHRlbXBs
YXRlPD4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8Q29kZUJsb2NrPjo6ZHVtcENhbGxMaW5rU3RhdHVz
KFByaW50U3RyZWFtJiBvdXQsIHVuc2lnbmVkIGxvY2F0aW9uLCBjb25zdCBDYWxsTGlua0luZm9N
YXAmIG1hcCkKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8Q29kZUJsb2NrPjo6ZHVtcENhbGxMaW5rU3Rh
dHVzKFByaW50U3RyZWFtJiBvdXQsIHVuc2lnbmVkIGxvY2F0aW9uLCBjb25zdCBJQ1N0YXR1c01h
cCYgc3RhdHVzTWFwKQogewogICAgIGlmIChibG9jaygpLT5qaXRUeXBlKCkgIT0gSklUQ29kZTo6
RlRMSklUKQotICAgICAgICBvdXQucHJpbnQoIiBzdGF0dXMoIiwgQ2FsbExpbmtTdGF0dXM6OmNv
bXB1dGVGb3IoYmxvY2soKSwgbG9jYXRpb24sIG1hcCksICIpIik7CisgICAgICAgIG91dC5wcmlu
dCgiIHN0YXR1cygiLCBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcihibG9jaygpLCBsb2NhdGlv
biwgc3RhdHVzTWFwKSwgIikiKTsKIH0KICNlbmRpZgogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4K
LXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludENhbGxPcChQcmludFN0cmVhbSYgb3V0
LCBpbnQgbG9jYXRpb24sIGNvbnN0IHR5cGVuYW1lIEJsb2NrOjpJbnN0cnVjdGlvbiomIGl0LCBj
b25zdCBjaGFyKiBvcCwgQ2FjaGVEdW1wTW9kZSBjYWNoZUR1bXBNb2RlLCBib29sJiBoYXNQcmlu
dGVkUHJvZmlsaW5nLCBjb25zdCBDYWxsTGlua0luZm9NYXAmIG1hcCkKK3ZvaWQgQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpwcmludENhbGxPcChQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24s
IGNvbnN0IHR5cGVuYW1lIEJsb2NrOjpJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCwg
Q2FjaGVEdW1wTW9kZSBjYWNoZUR1bXBNb2RlLCBib29sJiBoYXNQcmludGVkUHJvZmlsaW5nLCBj
b25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQogewogICAgIGludCBkc3QgPSAoKytpdCktPnUu
b3BlcmFuZDsKICAgICBpbnQgZnVuYyA9ICgrK2l0KS0+dS5vcGVyYW5kOwpAQCAtNjM4LDcgKzYz
OCw3IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludENhbGxPcCgKICAgICAgICAg
ICAgICAgICBvdXQucHJpbnRmKCIgbGxpbnQoJXApIiwgb2JqZWN0KTsKICAgICAgICAgfQogI2lm
IEVOQUJMRShKSVQpCi0gICAgICAgIGlmIChDYWxsTGlua0luZm8qIGluZm8gPSBtYXAuZ2V0KENv
ZGVPcmlnaW4obG9jYXRpb24pKSkgeworICAgICAgICBpZiAoQ2FsbExpbmtJbmZvKiBpbmZvID0g
c3RhdHVzTWFwLmdldChDb2RlT3JpZ2luKGxvY2F0aW9uKSkuY2FsbExpbmtJbmZvKSB7CiAgICAg
ICAgICAgICBpZiAoaW5mby0+aGF2ZUxhc3RTZWVuQ2FsbGVlKCkpIHsKICAgICAgICAgICAgICAg
ICBKU09iamVjdCogb2JqZWN0ID0gaW5mby0+bGFzdFNlZW5DYWxsZWUoKTsKICAgICAgICAgICAg
ICAgICBpZiAoYXV0byogZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPigqdm0o
KSwgb2JqZWN0KSkKQEAgLTY0OCw5ICs2NDgsOSBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2Nr
Pjo6cHJpbnRDYWxsT3AoCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBkdW1w
Q2FsbExpbmtTdGF0dXMob3V0LCBsb2NhdGlvbiwgbWFwKTsKKyAgICAgICAgZHVtcENhbGxMaW5r
U3RhdHVzKG91dCwgbG9jYXRpb24sIHN0YXR1c01hcCk7CiAjZWxzZQotICAgICAgICBVTlVTRURf
UEFSQU0obWFwKTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHN0YXR1c01hcCk7CiAjZW5kaWYKICAg
ICB9CiAgICAgKytpdDsKQEAgLTY3OCw3ICs2NzgsNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJs
b2NrPjo6cHJpbnRMb2NhdGlvCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgotdm9pZCBCeXRl
Y29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCB0
eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6
SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgU3R1YkluZm9NYXAmIHN0dWJJbmZvcywgY29uc3QgQ2Fs
bExpbmtJbmZvTWFwJiBjYWxsTGlua0luZm9zKQordm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46
OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5z
dHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwg
Y29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBpbnQgbG9jYXRpb24gPSBpdCAt
IGJlZ2luOwogICAgIGJvb2wgaGFzUHJpbnRlZFByb2ZpbGluZyA9IGZhbHNlOwpAQCAtMTA3MSw3
ICsxMDcxLDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZQogICAg
ICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgIHByaW50TG9jYXRpb25B
bmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImluX2J5X2lkIik7CiAgICAgICAgIG91dC5wcmludGYo
IiVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5k
YXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZpZXIoaWQwKSkuZGF0YSgpKTsKLSAgICAgICAgcHJp
bnRJbkJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdHViSW5mb3MpOworICAgICAgICBw
cmludEluQnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0YXR1c01hcCk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIG9wX2luX2J5X3ZhbDogewpAQCAtMTA5NSw3ICsxMDk1
LDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZQogICAgICAgICBw
cmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJnZXRfYnlfaWRfZGlyZWN0Iik7
CiAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZpZXIoaWQwKSku
ZGF0YSgpKTsKICAgICAgICAgaXQgKz0gMjsgLy8gSW5jcmVtZW50IHVwIHRvIHRoZSB2YWx1ZSBw
cm9maWxlci4KLSAgICAgICAgcHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMob3V0LCBsb2NhdGlvbiwg
c3R1YkluZm9zKTsKKyAgICAgICAgcHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMob3V0LCBsb2NhdGlv
biwgc3RhdHVzTWFwKTsKICAgICAgICAgZHVtcFZhbHVlUHJvZmlsaW5nKG91dCwgaXQsIGhhc1By
aW50ZWRQcm9maWxpbmcpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xMTA0LDcgKzExMDQs
NyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJ5dGVjb2RlCiAgICAgY2FzZSBv
cF9nZXRfYnlfaWRfdW5zZXQ6CiAgICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOiB7CiAgICAg
ICAgIHByaW50R2V0QnlJZE9wKG91dCwgbG9jYXRpb24sIGl0KTsKLSAgICAgICAgcHJpbnRHZXRC
eUlkQ2FjaGVTdGF0dXMob3V0LCBsb2NhdGlvbiwgc3R1YkluZm9zKTsKKyAgICAgICAgcHJpbnRH
ZXRCeUlkQ2FjaGVTdGF0dXMob3V0LCBsb2NhdGlvbiwgc3RhdHVzTWFwKTsKICAgICAgICAgZHVt
cFZhbHVlUHJvZmlsaW5nKG91dCwgaXQsIGhhc1ByaW50ZWRQcm9maWxpbmcpOwogICAgICAgICBi
cmVhazsKICAgICB9CkBAIC0xMTMwLDcgKzExMzAsNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJs
b2NrPjo6ZHVtcEJ5dGVjb2RlCiAgICAgfQogICAgIGNhc2Ugb3BfcHV0X2J5X2lkOiB7CiAgICAg
ICAgIHByaW50UHV0QnlJZE9wKG91dCwgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkIik7Ci0gICAg
ICAgIHByaW50UHV0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0dWJJbmZvcyk7Cisg
ICAgICAgIHByaW50UHV0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0YXR1c01hcCk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIG9wX3B1dF9ieV9pZF93aXRoX3RoaXM6
IHsKQEAgLTE0NzYsMTUgKzE0NzYsMTUgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1
bXBCeXRlY29kZQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBvcF9jYWxsOiB7Ci0g
ICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAiY2FsbCIsIER1bXBDYWNoZXMs
IGhhc1ByaW50ZWRQcm9maWxpbmcsIGNhbGxMaW5rSW5mb3MpOworICAgICAgICBwcmludENhbGxP
cChvdXQsIGxvY2F0aW9uLCBpdCwgImNhbGwiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmls
aW5nLCBzdGF0dXNNYXApOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBvcF90YWls
X2NhbGw6IHsKLSAgICAgICAgcHJpbnRDYWxsT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJ0YWlsX2Nh
bGwiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmlsaW5nLCBjYWxsTGlua0luZm9zKTsKKyAg
ICAgICAgcHJpbnRDYWxsT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJ0YWlsX2NhbGwiLCBEdW1wQ2Fj
aGVzLCBoYXNQcmludGVkUHJvZmlsaW5nLCBzdGF0dXNNYXApOwogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgY2FzZSBvcF9jYWxsX2V2YWw6IHsKLSAgICAgICAgcHJpbnRDYWxsT3Aob3V0LCBs
b2NhdGlvbiwgaXQsICJjYWxsX2V2YWwiLCBEb250RHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2Zp
bGluZywgY2FsbExpbmtJbmZvcyk7CisgICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24s
IGl0LCAiY2FsbF9ldmFsIiwgRG9udER1bXBDYWNoZXMsIGhhc1ByaW50ZWRQcm9maWxpbmcsIHN0
YXR1c01hcCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMTUyMyw3ICsxNTIzLDcgQEAg
dm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZQogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgY2FzZSBvcF9jb25zdHJ1Y3Q6IHsKLSAgICAgICAgcHJpbnRDYWxsT3Aob3V0
LCBsb2NhdGlvbiwgaXQsICJjb25zdHJ1Y3QiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmls
aW5nLCBjYWxsTGlua0luZm9zKTsKKyAgICAgICAgcHJpbnRDYWxsT3Aob3V0LCBsb2NhdGlvbiwg
aXQsICJjb25zdHJ1Y3QiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmlsaW5nLCBzdGF0dXNN
YXApOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBvcF9zdHJjYXQ6IHsKQEAgLTE3
NzgsMTAgKzE3NzgsMTAgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29k
ZQogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+
OjpkdW1wQnl0ZWNvZGUoQmxvY2sqIGJsb2NrLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCB0eXBl
bmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5z
dHJ1Y3Rpb24qJiBpdCwgY29uc3QgU3R1YkluZm9NYXAmIHN0dWJJbmZvcywgY29uc3QgQ2FsbExp
bmtJbmZvTWFwJiBjYWxsTGlua0luZm9zKQordm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1
bXBCeXRlY29kZShCbG9jayogYmxvY2ssIFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IHR5cGVuYW1l
IEJsb2NrOjpJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IHR5cGVuYW1lIEJsb2NrOjpJbnN0cnVj
dGlvbiomIGl0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQogewogICAgIEJ5dGVjb2Rl
RHVtcGVyIGR1bXBlcihibG9jaywgYmVnaW4pOwotICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0
LCBiZWdpbiwgaXQsIHN0dWJJbmZvcywgY2FsbExpbmtJbmZvcyk7CisgICAgZHVtcGVyLmR1bXBC
eXRlY29kZShvdXQsIGJlZ2luLCBpdCwgc3RhdHVzTWFwKTsKIH0KIAogdGVtcGxhdGU8Y2xhc3Mg
QmxvY2s+CkBAIC0xODkwLDcgKzE4OTAsNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6
ZHVtcFN0cmluZ1N3CiB9CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgotdm9pZCBCeXRlY29kZUR1
bXBlcjxCbG9jaz46OmR1bXBCbG9jayhCbG9jayogYmxvY2ssIGNvbnN0IHR5cGVuYW1lIEJsb2Nr
OjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBQcmludFN0cmVhbSYgb3V0LCBj
b25zdCBTdHViSW5mb01hcCYgc3R1YkluZm9zLCBjb25zdCBDYWxsTGlua0luZm9NYXAmIGNhbGxM
aW5rSW5mb3MpCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJsb2NrKEJsb2NrKiBi
bG9jaywgY29uc3QgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBpbnN0cnVj
dGlvbnMsIFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7
CiAgICAgc2l6ZV90IGluc3RydWN0aW9uQ291bnQgPSAwOwogCkBAIC0xOTEwLDcgKzE5MTAsNyBA
QCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJsb2NrKEJsCiAgICAgY29uc3QgYXV0
byogZW5kID0gaW5zdHJ1Y3Rpb25zLmVuZCgpOwogICAgIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPiBk
dW1wZXIoYmxvY2ssIGJlZ2luKTsKICAgICBmb3IgKGNvbnN0IGF1dG8qIGl0ID0gYmVnaW47IGl0
ICE9IGVuZDsgKytpdCkKLSAgICAgICAgZHVtcGVyLmR1bXBCeXRlY29kZShvdXQsIGJlZ2luLCBp
dCwgc3R1YkluZm9zLCBjYWxsTGlua0luZm9zKTsKKyAgICAgICAgZHVtcGVyLmR1bXBCeXRlY29k
ZShvdXQsIGJlZ2luLCBpdCwgc3RhdHVzTWFwKTsKIAogICAgIGR1bXBlci5kdW1wSWRlbnRpZmll
cnMob3V0KTsKICAgICBkdW1wZXIuZHVtcENvbnN0YW50cyhvdXQpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmgJKHJldmlzaW9uIDIz
MjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
NyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yNiw2ICsyNyw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkNhbGxMaW5rSW5mby5oIgorI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCiAjaW5jbHVkZSAiU3Ry
dWN0dXJlU3R1YkluZm8uaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zNyw4ICszOSw4IEBAIGNs
YXNzIEJ5dGVjb2RlRHVtcGVyIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIHR5cGVuYW1lIEJsb2Nr
OjpJbnN0cnVjdGlvbiBJbnN0cnVjdGlvbjsKIAotICAgIHN0YXRpYyB2b2lkIGR1bXBCeXRlY29k
ZShCbG9jayosIFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29u
c3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgU3R1YkluZm9NYXAmID0gU3R1YkluZm9NYXAoKSwg
Y29uc3QgQ2FsbExpbmtJbmZvTWFwJiA9IENhbGxMaW5rSW5mb01hcCgpKTsKLSAgICBzdGF0aWMg
dm9pZCBkdW1wQmxvY2soQmxvY2sqLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0
cnVjdGlvbnMmLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBTdHViSW5mb01hcCYgPSBTdHViSW5m
b01hcCgpLCBjb25zdCBDYWxsTGlua0luZm9NYXAmID0gQ2FsbExpbmtJbmZvTWFwKCkpOworICAg
IHN0YXRpYyB2b2lkIGR1bXBCeXRlY29kZShCbG9jayosIFByaW50U3RyZWFtJiBvdXQsIGNvbnN0
IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgSUNTdGF0
dXNNYXAmIHN0YXR1c01hcCA9IElDU3RhdHVzTWFwKCkpOworICAgIHN0YXRpYyB2b2lkIGR1bXBC
bG9jayhCbG9jayosIGNvbnN0IHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYs
IFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXAgPSBJQ1N0YXR1
c01hcCgpKTsKIAogcHJpdmF0ZToKICAgICBCeXRlY29kZUR1bXBlcihCbG9jayogYmxvY2ssIGNv
bnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbikKQEAgLTY5LDE0ICs3MSwxNCBAQCBw
cml2YXRlOgogICAgIHZvaWQgcHJpbnRDb25kaXRpb25hbEp1bXAoUHJpbnRTdHJlYW0mIG91dCwg
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBpbnQgbG9jYXRpb24s
IGNvbnN0IGNoYXIqIG9wKTsKICAgICB2b2lkIHByaW50Q29tcGFyZUp1bXAoUHJpbnRTdHJlYW0m
IG91dCwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBpbnQgbG9j
YXRpb24sIGNvbnN0IGNoYXIqIG9wKTsKICAgICB2b2lkIHByaW50R2V0QnlJZE9wKFByaW50U3Ry
ZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCk7Ci0gICAgdm9p
ZCBwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24s
IGNvbnN0IFN0dWJJbmZvTWFwJik7Ci0gICAgdm9pZCBwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhQ
cmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IFN0dWJJbmZvTWFwJik7Ci0gICAg
dm9pZCBwcmludEluQnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlv
biwgY29uc3QgU3R1YkluZm9NYXAmKTsKKyAgICB2b2lkIHByaW50R2V0QnlJZENhY2hlU3RhdHVz
KFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmKTsKKyAg
ICB2b2lkIHByaW50UHV0QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2Nh
dGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmKTsKKyAgICB2b2lkIHByaW50SW5CeUlkQ2FjaGVTdGF0
dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJQ1N0YXR1c01hcCYpOwog
ICAgIGVudW0gQ2FjaGVEdW1wTW9kZSB7IER1bXBDYWNoZXMsIERvbnREdW1wQ2FjaGVzIH07Ci0g
ICAgdm9pZCBwcmludENhbGxPcChQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0
IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IGNoYXIqIG9wLCBDYWNoZUR1bXBNb2RlLCBib29sJiBo
YXNQcmludGVkUHJvZmlsaW5nLCBjb25zdCBDYWxsTGlua0luZm9NYXAmKTsKKyAgICB2b2lkIHBy
aW50Q2FsbE9wKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rp
b24qJiBpdCwgY29uc3QgY2hhciogb3AsIENhY2hlRHVtcE1vZGUsIGJvb2wmIGhhc1ByaW50ZWRQ
cm9maWxpbmcsIGNvbnN0IElDU3RhdHVzTWFwJik7CiAgICAgdm9pZCBwcmludFB1dEJ5SWRPcChQ
cmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNv
bnN0IGNoYXIqIG9wKTsKICAgICB2b2lkIHByaW50TG9jYXRpb25PcEFuZFJlZ2lzdGVyT3BlcmFu
ZChQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQs
IGNvbnN0IGNoYXIqIG9wLCBpbnQgb3BlcmFuZCk7Ci0gICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJp
bnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlv
biomIGl0LCBjb25zdCBTdHViSW5mb01hcCYsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYpOworICAg
IHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiBi
ZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgSUNTdGF0dXNNYXAmKTsKIAogICAg
IHZvaWQgZHVtcFZhbHVlUHJvZmlsaW5nKFByaW50U3RyZWFtJiwgY29uc3QgSW5zdHJ1Y3Rpb24q
JiwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZyk7CiAgICAgdm9pZCBkdW1wQXJyYXlQcm9maWxp
bmcoUHJpbnRTdHJlYW0mLCBjb25zdCBJbnN0cnVjdGlvbiomLCBib29sJiBoYXNQcmludGVkUHJv
ZmlsaW5nKTsKQEAgLTg1LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkKiBhY3R1YWxQb2lu
dGVyRm9yKFNwZWNpYWw6OlBvaW50ZXIpIGNvbnN0OwogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICB2
b2lkIGR1bXBDYWxsTGlua1N0YXR1cyhQcmludFN0cmVhbSYsIHVuc2lnbmVkIGxvY2F0aW9uLCBj
b25zdCBDYWxsTGlua0luZm9NYXAmKTsKKyAgICB2b2lkIGR1bXBDYWxsTGlua1N0YXR1cyhQcmlu
dFN0cmVhbSYsIHVuc2lnbmVkIGxvY2F0aW9uLCBjb25zdCBJQ1N0YXR1c01hcCYpOwogI2VuZGlm
CiAKICAgICBCbG9jayogbV9ibG9jazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9DYWxsTGlua0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMzUy
LDEyICszNTIsNiBAQCBpbmxpbmUgQ29kZU9yaWdpbiBnZXRDYWxsTGlua0luZm9Db2RlT3JpCiAg
ICAgcmV0dXJuIGNhbGxMaW5rSW5mby5jb2RlT3JpZ2luKCk7CiB9CiAKLXR5cGVkZWYgSGFzaE1h
cDxDb2RlT3JpZ2luLCBDYWxsTGlua0luZm8qLCBDb2RlT3JpZ2luQXBwcm94aW1hdGVIYXNoPiBD
YWxsTGlua0luZm9NYXA7Ci0KLSNlbHNlIC8vIEVOQUJMRShKSVQpCi0KLXR5cGVkZWYgSGFzaE1h
cDxpbnQsIHZvaWQqPiBDYWxsTGlua0luZm9NYXA7Ci0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsTGlua1N0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjk3LDggKzI5NywxNiBAQCB2b2lkIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlREZHU3Rh
dHVzZXMoCiAKIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAogICAg
IENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLAotICAgIGNv
bnN0IENhbGxMaW5rSW5mb01hcCYgYmFzZWxpbmVNYXAsIGNvbnN0IENhbGxMaW5rU3RhdHVzOjpD
b250ZXh0TWFwJiBkZmdNYXApCisgICAgY29uc3QgSUNTdGF0dXNNYXAmIGJhc2VsaW5lTWFwLCBj
b25zdCBJQ1N0YXR1c0NvbnRleHRTdGFjayYgb3B0aW1pemVkU3RhY2spCiB7CisgICAgLy8gRklY
TUU6IFRoaXMgbmVlZHMgdG8gZ2V0IHRoZSBleGl0IHNpdGUgZGF0YS4gVGhhdCBkYXRhIHNob3Vs
ZCBpbmNsdWRlIHdoZXRoZXIgdGhlIGV4aXQgd2FzCisgICAgLy8gaW5saW5lZCBvciBub3QuCisg
ICAgZm9yIChjb25zdCBJQ1N0YXR1c0NvbnRleHQmIGNvbnRleHQgOiBvcHRpbWl6ZWRTdGFjaykg
eworICAgICAgICBJQ1N0YXR1cyBzdGF0dXMgPSBjb250ZXh0LmdldChjb2RlT3JpZ2luKTsKKyAg
ICAgICAgaWYgKHN0YXR1cy5jYWxsTGlua0luZm8pIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBE
byB0aGluZ3MgaGVyZS4KKyAgICAgICAgfQorICAgIH0KICAgICBhdXRvIGl0ZXIgPSBkZmdNYXAu
ZmluZChjb2RlT3JpZ2luKTsKICAgICBpZiAoaXRlciAhPSBkZmdNYXAuZW5kKCkpCiAgICAgICAg
IHJldHVybiBpdGVyLT52YWx1ZTsKQEAgLTMyNyw2ICszMzUsMTUgQEAgdm9pZCBDYWxsTGlua1N0
YXR1czo6bWFrZUNsb3N1cmVDYWxsKCkKICAgICBtX3ZhcmlhbnRzID0gZGVzcGVjaWZpZWRWYXJp
YW50TGlzdChtX3ZhcmlhbnRzKTsKIH0KIAorYm9vbCBDYWxsTGlua1N0YXR1czo6ZmluYWxpemUo
KQoreworICAgIGZvciAoQ2FsbFZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKSB7CisgICAg
ICAgIGlmICghdmFyaWFudC5maW5hbGl6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBDYWxsTGlua1N0YXR1czo6ZHVtcChQ
cmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIGlmICghaXNTZXQoKSkgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHJldmlz
aW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0
YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ2FsbFZh
cmlhbnQuaCIKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAiQ29uY3VycmVudEpT
TG9jay5oIgorI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5o
IgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTYwLDggKzYxLDcgQEAgcHVibGljOgogICAgIHsKICAg
ICB9CiAgICAgCi0gICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoCi0gICAgICAg
IENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIGNvbnN0IENhbGxMaW5rSW5mb01h
cCYpOworICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXgsIGNvbnN0IElDU3RhdHVzTWFwJik7CiAKICAgICBzdHJ1Y3Qg
RXhpdFNpdGVEYXRhIHsKICAgICAgICAgYm9vbCB0YWtlc1Nsb3dQYXRoIHsgZmFsc2UgfTsKQEAg
LTc3LDE2ICs3Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgQ29uY3VycmVudEpTTG9ja2Vy
JiwgQ29kZUJsb2NrKiwgQ2FsbExpbmtJbmZvJiwgRXhpdFNpdGVEYXRhKTsKICNlbmRpZgogICAg
IAotICAgIHR5cGVkZWYgSGFzaE1hcDxDb2RlT3JpZ2luLCBDYWxsTGlua1N0YXR1cywgQ29kZU9y
aWdpbkFwcHJveGltYXRlSGFzaD4gQ29udGV4dE1hcDsKLSAgICAKLSAgICAvLyBDb21wdXRlcyBh
bGwgb2YgdGhlIHN0YXR1c2VzIG9mIHRoZSBERkcgY29kZSBibG9jay4gRG9lc24ndCBpbmNsdWRl
IHN0YXR1c2VzIHRoYXQgaGFkCi0gICAgLy8gbm8gaW5mb3JtYXRpb24uIEN1cnJlbnRseSB3ZSB1
c2UgdGhpcyB3aGVuIGNvbXBpbGluZyBGVEwgY29kZSwgdG8gZW5hYmxlIHBvbHl2YXJpYW50Ci0g
ICAgLy8gaW5saW5pbmcuCi0gICAgc3RhdGljIHZvaWQgY29tcHV0ZURGR1N0YXR1c2VzKENvZGVC
bG9jayogZGZnQ29kZUJsb2NrLCBDb250ZXh0TWFwJik7Ci0gICAgCi0gICAgLy8gSGVscGVyIHRo
YXQgZmlyc3QgY29uc3VsdHMgdGhlIENvbnRleHRNYXAgYW5kIHRoZW4gZG9lcyBjb21wdXRlRm9y
KCkuCiAgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoCi0gICAgICAgIENvZGVC
bG9jayosIENvZGVPcmlnaW4sIGNvbnN0IENhbGxMaW5rSW5mb01hcCYsIGNvbnN0IENvbnRleHRN
YXAmKTsKKyAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgY29uc3QgSUNTdGF0dXNNYXAm
LCBjb25zdCBJQ1N0YXR1c0NvbnRleHRTdGFjayYpOwogICAgIAogICAgIHZvaWQgc2V0UHJvdmVu
Q29uc3RhbnRDYWxsZWUoQ2FsbFZhcmlhbnQpOwogICAgIApAQCAtMTEwLDYgKzEwMiw4IEBAIHB1
YmxpYzoKICAgICAKICAgICB1bnNpZ25lZCBtYXhOdW1Bcmd1bWVudHMoKSBjb25zdCB7IHJldHVy
biBtX21heE51bUFyZ3VtZW50czsgfQogICAgIAorICAgIGJvb2wgZmluYWxpemUoKTsKKyAgICAK
ICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKIHByaXZhdGU6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5jcHAJKHJl
dmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFy
aWFudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNiArMzEsMTMgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKK2Jvb2wgQ2FsbFZhcmlhbnQ6OmZpbmFsaXplKCkKK3sKKyAgICBpZiAobV9jYWxs
ZWUgJiYgIUhlYXA6OmlzTWFya2VkKG1fY2FsbGVlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIENhbGxWYXJpYW50OjpkdW1wKFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0CiB7CiAgICAgaWYgKCEqdGhpcykgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTEzNiw2ICsxMzYsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KICAgICAKKyAgICBib29sIGZpbmFsaXplKCk7CisgICAgCiAgICAgdm9pZCBkdW1wKFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0OwogICAgIAogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVk
VmFsdWUoKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsMjQgKzIzOCwyMCBA
QCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKCkKIAogdm9pZCBDb2RlQmxvY2s6OmR1bXBC
eXRlY29kZShQcmludFN0cmVhbSYgb3V0KQogewotICAgIFN0dWJJbmZvTWFwIHN0dWJJbmZvczsK
LSAgICBDYWxsTGlua0luZm9NYXAgY2FsbExpbmtJbmZvczsKLSAgICBnZXRTdHViSW5mb01hcChz
dHViSW5mb3MpOwotICAgIGdldENhbGxMaW5rSW5mb01hcChjYWxsTGlua0luZm9zKTsKLSAgICBC
eXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wQmxvY2sodGhpcywgaW5zdHJ1Y3Rpb25zKCks
IG91dCwgc3R1YkluZm9zLCBjYWxsTGlua0luZm9zKTsKKyAgICBJQ1N0YXR1c01hcCBzdGF0dXNN
YXA7CisgICAgZ2V0SUNTdGF0dXNNYXAoc3RhdHVzTWFwKTsKKyAgICBCeXRlY29kZUR1bXBlcjxD
b2RlQmxvY2s+OjpkdW1wQmxvY2sodGhpcywgaW5zdHJ1Y3Rpb25zKCksIG91dCwgc3RhdHVzTWFw
KTsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBj
b25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IFN0
dWJJbmZvTWFwJiBzdHViSW5mb3MsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYgY2FsbExpbmtJbmZv
cykKK3ZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3Qg
SW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBJQ1N0YXR1
c01hcCYgc3RhdHVzTWFwKQogewotICAgIEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBC
eXRlY29kZSh0aGlzLCBvdXQsIGJlZ2luLCBpdCwgc3R1YkluZm9zLCBjYWxsTGlua0luZm9zKTsK
KyAgICBCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wQnl0ZWNvZGUodGhpcywgb3V0LCBi
ZWdpbiwgaXQsIHN0YXR1c01hcCk7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUo
Ci0gICAgUHJpbnRTdHJlYW0mIG91dCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsCi0gICAgY29u
c3QgU3R1YkluZm9NYXAmIHN0dWJJbmZvcywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBjYWxsTGlu
a0luZm9zKQordm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCB1
bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsK
ICAgICBjb25zdCBJbnN0cnVjdGlvbiogaXQgPSAmaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZz
ZXRdOwotICAgIGR1bXBCeXRlY29kZShvdXQsIGluc3RydWN0aW9ucygpLmJlZ2luKCksIGl0LCBz
dHViSW5mb3MsIGNhbGxMaW5rSW5mb3MpOworICAgIGR1bXBCeXRlY29kZShvdXQsIGluc3RydWN0
aW9ucygpLmJlZ2luKCksIGl0LCBzdGF0dXNNYXApOwogfQogCiAjZGVmaW5lIEZPUl9FQUNIX01F
TUJFUl9WRUNUT1IobWFjcm8pIFwKQEAgLTExNjYsNiArMTE2Miw5IEBAIHZvaWQgQ29kZUJsb2Nr
Ojpwcm9wYWdhdGVUcmFuc2l0aW9ucyhjb24KICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBpZiAo
SklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpIHsKICAgICAgICAgREZHOjpDb21t
b25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENvZGUtPmRmZ0NvbW1vbigpOworICAgICAgICAKKyAg
ICAgICAgZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLm1hcmtJZkNoZWFwKHZpc2l0b3IpOwor
ICAgICAgICAKICAgICAgICAgZm9yIChhdXRvJiB3ZWFrUmVmZXJlbmNlIDogZGZnQ29tbW9uLT53
ZWFrU3RydWN0dXJlUmVmZXJlbmNlcykKICAgICAgICAgICAgIHdlYWtSZWZlcmVuY2UtPm1hcmtJ
ZkNoZWFwKHZpc2l0b3IpOwogCkBAIC0xMzk3LDU3ICsxMzk2LDQzIEBAIHZvaWQgQ29kZUJsb2Nr
OjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICAgICAgICAgZmluYWxpemVCYXNlbGluZUpJVElu
bGluZUNhY2hlcygpOwogI2VuZGlmCiAKLSAgICBWTTo6U3BhY2VBbmRGaW5hbGl6ZXJTZXQ6OmZp
bmFsaXplclNldEZvcigqc3Vic3BhY2UoKSkucmVtb3ZlKHRoaXMpOwotfQotCi12b2lkIENvZGVC
bG9jazo6Z2V0U3R1YkluZm9NYXAoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgU3R1YkluZm9N
YXAmIHJlc3VsdCkKLXsKLSNpZiBFTkFCTEUoSklUKQotICAgIGlmIChKSVRDb2RlOjppc0pJVChq
aXRUeXBlKCkpKQotICAgICAgICB0b0hhc2hNYXAobV9zdHViSW5mb3MsIGdldFN0cnVjdHVyZVN0
dWJJbmZvQ29kZU9yaWdpbiwgcmVzdWx0KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHJlc3Vs
dCk7Ci0jZW5kaWYKLX0KLQotdm9pZCBDb2RlQmxvY2s6OmdldFN0dWJJbmZvTWFwKFN0dWJJbmZv
TWFwJiByZXN1bHQpCi17Ci0gICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwot
ICAgIGdldFN0dWJJbmZvTWFwKGxvY2tlciwgcmVzdWx0KTsKLX0KLQotdm9pZCBDb2RlQmxvY2s6
OmdldENhbGxMaW5rSW5mb01hcChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDYWxsTGlua0lu
Zm9NYXAmIHJlc3VsdCkKLXsKLSNpZiBFTkFCTEUoSklUKQotICAgIGlmIChKSVRDb2RlOjppc0pJ
VChqaXRUeXBlKCkpKQotICAgICAgICB0b0hhc2hNYXAobV9jYWxsTGlua0luZm9zLCBnZXRDYWxs
TGlua0luZm9Db2RlT3JpZ2luLCByZXN1bHQpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocmVz
dWx0KTsKLSNlbmRpZgotfQorICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0VHlw
ZSgpKSkgeworICAgICAgICBERkc6OkNvbW1vbkRhdGEqIGRmZ0NvbW1vbiA9IG1faml0Q29kZS0+
ZGZnQ29tbW9uKCk7CisgICAgICAgIGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5maW5hbGl6
ZSgpOworICAgIH0KIAotdm9pZCBDb2RlQmxvY2s6OmdldENhbGxMaW5rSW5mb01hcChDYWxsTGlu
a0luZm9NYXAmIHJlc3VsdCkKLXsKLSAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9j
ayk7Ci0gICAgZ2V0Q2FsbExpbmtJbmZvTWFwKGxvY2tlciwgcmVzdWx0KTsKKyAgICBWTTo6U3Bh
Y2VBbmRGaW5hbGl6ZXJTZXQ6OmZpbmFsaXplclNldEZvcigqc3Vic3BhY2UoKSkucmVtb3ZlKHRo
aXMpOwogfQogCi12b2lkIENvZGVCbG9jazo6Z2V0QnlWYWxJbmZvTWFwKGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYsIEJ5VmFsSW5mb01hcCYgcmVzdWx0KQordm9pZCBDb2RlQmxvY2s6OmdldElD
U3RhdHVzTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIElDU3RhdHVzTWFwJiByZXN1bHQp
CiB7CiAjaWYgRU5BQkxFKEpJVCkKICAgICBpZiAoSklUQ29kZTo6aXNKSVQoaml0VHlwZSgpKSkg
ewotICAgICAgICBmb3IgKGF1dG8qIGJ5VmFsSW5mbyA6IG1fYnlWYWxJbmZvcykKLSAgICAgICAg
ICAgIHJlc3VsdC5hZGQoQ29kZU9yaWdpbihieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXgpLCBieVZh
bEluZm8pOworICAgICAgICBmb3IgKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA6IG1fc3R1
YkluZm9zKQorICAgICAgICAgICAgcmVzdWx0LmFkZChzdHViSW5mby0+Y29kZU9yaWdpbiwgSUNT
dGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLnN0dWJJbmZvID0gc3R1YkluZm87CisgICAgICAgIGZv
ciAoQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gOiBtX2NhbGxMaW5rSW5mb3MpCisgICAgICAg
ICAgICByZXN1bHQuYWRkKGNhbGxMaW5rSW5mby0+Y29kZU9yaWdpbigpLCBJQ1N0YXR1cygpKS5p
dGVyYXRvci0+dmFsdWUuY2FsbExpbmtJbmZvID0gY2FsbExpbmtJbmZvOworICAgICAgICBmb3Ig
KEJ5VmFsSW5mbyogYnlWYWxJbmZvIDogbV9iYWxWYWxJbmZvcykKKyAgICAgICAgICAgIHJlc3Vs
dC5hZGQoQ29kZU9yaWdpbihieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXgpLCBJQ1N0YXR1cygpKS5p
dGVyYXRvci0+dmFsdWUuYnlWYWxJbmZvID0gYnlWYWxJbmZvOworICAgICAgICBpZiAoSklUQ29k
ZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpIHsKKyAgICAgICAgICAgIERGRzo6Q29tbW9u
RGF0YSogZGZnQ29tbW9uID0gbV9qaXRDb2RlLT5kZmdDb21tb24oKTsKKyAgICAgICAgICAgIGZv
ciAoYXV0byYgcGFpciA6IGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5jYWxscykKKyAgICAg
ICAgICAgICAgICByZXN1bHQuYWRkKHBhaXIuZmlyc3QsIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52
YWx1ZS5jYWxsU3RhdHVzID0gcGFpci5zZWNvbmQuZ2V0KCk7CisgICAgICAgICAgICBmb3IgKGF1
dG8mIHBhaXIgOiBkZmdDb21tb24tPnJlY29yZGVkU3RhdHVzZXMuZ2V0cykKKyAgICAgICAgICAg
ICAgICByZXN1bHQuYWRkKHBhaXIuZmlyc3QsIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52YWx1ZS5n
ZXRTdGF0dXMgPSBwYWlyLnNlY29uZC5nZXQoKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcGFp
ciA6IGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5wdXRzKQorICAgICAgICAgICAgICAgIHJl
c3VsdC5hZGQocGFpci5maXJzdCwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLnB1dFN0YXR1
cyA9IHBhaXIuc2Vjb25kLmdldCgpOworICAgICAgICB9CiAgICAgfQogI2Vsc2UKICAgICBVTlVT
RURfUEFSQU0ocmVzdWx0KTsKICNlbmRpZgogfQogCi12b2lkIENvZGVCbG9jazo6Z2V0QnlWYWxJ
bmZvTWFwKEJ5VmFsSW5mb01hcCYgcmVzdWx0KQordm9pZCBDb2RlQmxvY2s6OmdldElDU3RhdHVz
TWFwKElDU3RhdHVzTWFwJiByZXN1bHQpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihtX2xvY2spOwotICAgIGdldEJ5VmFsSW5mb01hcChsb2NrZXIsIHJlc3VsdCk7CisgICAgZ2V0
SUNTdGF0dXNNYXAobG9ja2VyLCByZXN1bHQpOwogfQogCiAjaWYgRU5BQkxFKEpJVCkKQEAgLTE1
MTQsNyArMTQ5OSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpyZXNldEpJVERhdGEoKQogICAgIAogICAg
IC8vIFdlIGNhbiBjbGVhciB0aGVzZSBiZWNhdXNlIG5vIG90aGVyIHRocmVhZCB3aWxsIGhhdmUg
cmVmZXJlbmNlcyB0byBhbnkgc3R1YiBpbmZvcywgY2FsbAogICAgIC8vIGxpbmsgaW5mb3MsIG9y
IGJ5IHZhbCBpbmZvcyBpZiB3ZSBkb24ndCBoYXZlIEpJVCBjb2RlLiBBdHRlbXB0cyB0byBxdWVy
eSB0aGVzZSBkYXRhCi0gICAgLy8gc3RydWN0dXJlcyB1c2luZyB0aGUgY29uY3VycmVudCBBUEkg
KGdldFN0dWJJbmZvTWFwIGFuZCBmcmllbmRzKSB3aWxsIHJldHVybiBub3RoaW5nIGlmIHdlCisg
ICAgLy8gc3RydWN0dXJlcyB1c2luZyB0aGUgY29uY3VycmVudCBBUEkgKGdldElDU3RhdHVzTWFw
IGFuZCBmcmllbmRzKSB3aWxsIHJldHVybiBub3RoaW5nIGlmIHdlCiAgICAgLy8gZG9uJ3QgaGF2
ZSBKSVQgY29kZS4KICAgICBtX3N0dWJJbmZvcy5jbGVhcigpOwogICAgIG1fY2FsbExpbmtJbmZv
cy5jbGVhcigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAi
RXhwcmVzc2lvblJhbmdlSW5mby5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uRXhlY3V0YWJsZS5oIgog
I2luY2x1ZGUgIkhhbmRsZXJJbmZvLmgiCisjaW5jbHVkZSAiSUNTdGF0dXNNYXAuaCIKICNpbmNs
dWRlICJJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKICNpbmNsdWRlICJKSVRD
b2RlTWFwLmgiCkBAIC05Niw4ICs5Nyw2IEBAIGVudW0gY2xhc3MgQWNjZXNzVHlwZSA6IGludDhf
dDsKIAogc3RydWN0IEFyaXRoUHJvZmlsZTsKIAotdHlwZWRlZiBIYXNoTWFwPENvZGVPcmlnaW4s
IFN0cnVjdHVyZVN0dWJJbmZvKiwgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFzaD4gU3R1YkluZm9N
YXA7Ci0KIGVudW0gUmVvcHRpbWl6YXRpb25Nb2RlIHsgRG9udENvdW50UmVvcHRpbWl6YXRpb24s
IENvdW50UmVvcHRpbWl6YXRpb24gfTsKIAogY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2Vs
bCB7CkBAIC0xOTYsOCArMTk1LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBkdW1wQnl0ZWNvZGUo
KTsKICAgICB2b2lkIGR1bXBCeXRlY29kZShQcmludFN0cmVhbSYpOwotICAgIHZvaWQgZHVtcEJ5
dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3Qg
SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgU3R1YkluZm9NYXAmID0gU3R1YkluZm9NYXAoKSwgY29u
c3QgQ2FsbExpbmtJbmZvTWFwJiA9IENhbGxMaW5rSW5mb01hcCgpKTsKLSAgICB2b2lkIGR1bXBC
eXRlY29kZShQcmludFN0cmVhbSYgb3V0LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3Qg
U3R1YkluZm9NYXAmID0gU3R1YkluZm9NYXAoKSwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiA9IENh
bGxMaW5rSW5mb01hcCgpKTsKKyAgICB2b2lkIGR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0
LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0
IElDU3RhdHVzTWFwJiA9IElDU3RhdHVzTWFwKCkpOworICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFBy
aW50U3RyZWFtJiBvdXQsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBJQ1N0YXR1c01h
cCYgPSBJQ1N0YXR1c01hcCgpKTsKIAogICAgIHZvaWQgZHVtcEV4Y2VwdGlvbkhhbmRsZXJzKFBy
aW50U3RyZWFtJik7CiAgICAgdm9pZCBwcmludFN0cnVjdHVyZXMoUHJpbnRTdHJlYW0mLCBjb25z
dCBJbnN0cnVjdGlvbiopOwpAQCAtMjM3LDE0ICsyMzYsOCBAQCBwdWJsaWM6CiAKICAgICBzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkPiBieXRlY29kZU9mZnNldEZyb21DYWxsU2l0ZUluZGV4KENhbGxT
aXRlSW5kZXgpOwogCi0gICAgdm9pZCBnZXRTdHViSW5mb01hcChjb25zdCBDb25jdXJyZW50SlNM
b2NrZXImLCBTdHViSW5mb01hcCYgcmVzdWx0KTsKLSAgICB2b2lkIGdldFN0dWJJbmZvTWFwKFN0
dWJJbmZvTWFwJiByZXN1bHQpOwotICAgIAotICAgIHZvaWQgZ2V0Q2FsbExpbmtJbmZvTWFwKGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENhbGxMaW5rSW5mb01hcCYgcmVzdWx0KTsKLSAgICB2
b2lkIGdldENhbGxMaW5rSW5mb01hcChDYWxsTGlua0luZm9NYXAmIHJlc3VsdCk7Ci0KLSAgICB2
b2lkIGdldEJ5VmFsSW5mb01hcChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBCeVZhbEluZm9N
YXAmIHJlc3VsdCk7Ci0gICAgdm9pZCBnZXRCeVZhbEluZm9NYXAoQnlWYWxJbmZvTWFwJiByZXN1
bHQpOworICAgIHZvaWQgZ2V0SUNTdGF0dXNNYXAoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwg
SUNTdGF0dXNNYXAmIHJlc3VsdCk7CisgICAgdm9pZCBnZXRJQ1N0YXR1c01hcChJQ1N0YXR1c01h
cCYgcmVzdWx0KTsKICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgIEpJVEFkZElDKiBhZGRKSVRB
ZGRJQyhBcml0aFByb2ZpbGUqLCBJbnN0cnVjdGlvbiopOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNDYsNyArNDYsNyBAQCB1bnNpZ25lZCBDb2RlT3JpZ2luOjppbmxpbmVEZXB0aCgp
IGNvbnN0CiAgICAgcmV0dXJuIGlubGluZURlcHRoRm9yQ2FsbEZyYW1lKGlubGluZUNhbGxGcmFt
ZSk7CiB9CiAKLWJvb2wgQ29kZU9yaWdpbjo6aXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhjb25zdCBD
b2RlT3JpZ2luJiBvdGhlcikgY29uc3QKK2Jvb2wgQ29kZU9yaWdpbjo6aXNBcHByb3hpbWF0ZWx5
RXF1YWxUbyhjb25zdCBDb2RlT3JpZ2luJiBvdGhlciwgQ29kZUJsb2NrKiB0ZXJtaW5hbCkgY29u
c3QKIHsKICAgICBDb2RlT3JpZ2luIGEgPSAqdGhpczsKICAgICBDb2RlT3JpZ2luIGIgPSBvdGhl
cjsKQEAgLTY4LDEwICs2OCwxMyBAQCBib29sIENvZGVPcmlnaW46OmlzQXBwcm94aW1hdGVseUVx
dWFsVG8oCiAgICAgICAgIGlmIChhLmJ5dGVjb2RlSW5kZXggIT0gYi5ieXRlY29kZUluZGV4KQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKLSAgICAgICAgaWYgKCghIWEuaW5s
aW5lQ2FsbEZyYW1lKSAhPSAoISFiLmlubGluZUNhbGxGcmFtZSkpCisgICAgICAgIGJvb2wgYUhh
c0lubGluZUNhbGxGcmFtZSA9ICEhYS5pbmxpbmVDYWxsRnJhbWUKKyAgICAgICAgICAgICYmIGEu
aW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay5nZXQoKSAhPSB0ZXJtaW5hbDsKKyAg
ICAgICAgYm9vbCBiSGFzSW5saW5lQ2FsbEZyYW1lID0gISFiLmlubGluZUNhbGxGcmFtZTsKKyAg
ICAgICAgaWYgKGFIYXNJbmxpbmVDYWxsRnJhbWUgIT0gYkhhc0lubGluZUNhbGxGcmFtZSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIGlmICghYS5pbmxpbmVD
YWxsRnJhbWUpCisgICAgICAgIGlmICghYUhhc0lubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICAKICAgICAgICAgaWYgKGEuaW5saW5lQ2FsbEZyYW1lLT5i
YXNlbGluZUNvZGVCbG9jay5nZXQoKSAhPSBiLmlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2Rl
QmxvY2suZ2V0KCkpCkBAIC04Miw3ICs4NSw3IEBAIGJvb2wgQ29kZU9yaWdpbjo6aXNBcHByb3hp
bWF0ZWx5RXF1YWxUbygKICAgICB9CiB9CiAKLXVuc2lnbmVkIENvZGVPcmlnaW46OmFwcHJveGlt
YXRlSGFzaCgpIGNvbnN0Cit1bnNpZ25lZCBDb2RlT3JpZ2luOjphcHByb3hpbWF0ZUhhc2goQ29k
ZUJsb2NrKiB0ZXJtaW5hbCkgY29uc3QKIHsKICAgICBpZiAoIWlzU2V0KCkpCiAgICAgICAgIHJl
dHVybiAwOwpAQCAtOTcsNiArMTAwLDkgQEAgdW5zaWduZWQgQ29kZU9yaWdpbjo6YXBwcm94aW1h
dGVIYXNoKCkgYwogICAgICAgICBpZiAoIWNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQogICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgCisgICAgICAgIGlmIChjb2RlT3JpZ2lu
LmlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkgPT0gdGVybWluYWwpCisg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAKICAgICAgICAgcmVzdWx0ICs9IFdU
Rjo6UHRySGFzaDxKU0NlbGwqPjo6aGFzaChjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+YmFz
ZWxpbmVDb2RlQmxvY2suZ2V0KCkpOwogICAgICAgICAKICAgICAgICAgY29kZU9yaWdpbiA9IGNv
ZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5kaXJlY3RDYWxsZXI7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmgJKHJldmlzaW9uIDIzMjIyNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC05NCw5ICs5NCw5IEBAIHN0cnVjdCBDb2RlT3JpZ2luIHsKICAgICAKICAgICAvLyBU
aGlzIGNoZWNrcyBpZiB0aGUgdHdvIGNvZGUgb3JpZ2lucyBjb3JyZXNwb25kIHRvIHRoZSBzYW1l
IHN0YWNrIHRyYWNlIHNuaXBwZXRzLAogICAgIC8vIGJ1dCBpZ25vcmUgd2hldGhlciB0aGUgSW5s
aW5lQ2FsbEZyYW1lJ3MgYXJlIGlkZW50aWNhbC4KLSAgICBib29sIGlzQXBwcm94aW1hdGVseUVx
dWFsVG8oY29uc3QgQ29kZU9yaWdpbiYgb3RoZXIpIGNvbnN0OworICAgIGJvb2wgaXNBcHByb3hp
bWF0ZWx5RXF1YWxUbyhjb25zdCBDb2RlT3JpZ2luJiBvdGhlciwgQ29kZUJsb2NrKiB0ZXJtaW5h
bCA9IG51bGxwdHIpIGNvbnN0OwogICAgIAotICAgIHVuc2lnbmVkIGFwcHJveGltYXRlSGFzaCgp
IGNvbnN0OworICAgIHVuc2lnbmVkIGFwcHJveGltYXRlSGFzaChDb2RlQmxvY2sqIHRlcm1pbmFs
ID0gbnVsbHB0cikgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rpb24+CiAg
ICAgdm9pZCB3YWxrVXBJbmxpbmVTdGFjayhjb25zdCBGdW5jdGlvbiYpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCShyZXZp
c2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFBy
b2ZpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw4ICs0MywxMCBAQCBFeGl0UHJvZmlsZTo6
fkV4aXRQcm9maWxlKCkgeyB9CiAKIGJvb2wgRXhpdFByb2ZpbGU6OmFkZChDb2RlQmxvY2sqIG93
bmVyLCBjb25zdCBGcmVxdWVudEV4aXRTaXRlJiBzaXRlKQogeworICAgIFJFTEVBU0VfQVNTRVJU
KHNpdGUuaml0VHlwZSgpICE9IEV4aXRGcm9tQW55dGhpbmcpOworICAgIFJFTEVBU0VfQVNTRVJU
KHNpdGUuaW5saW5lS2luZCgpICE9IEV4aXRGcm9tQW55SW5saW5lS2luZCk7CisKICAgICBDb25j
dXJyZW50SlNMb2NrZXIgbG9ja2VyKG93bmVyLT51bmxpbmtlZENvZGVCbG9jaygpLT5tX2xvY2sp
OwotICAgIEFTU0VSVChzaXRlLmppdFR5cGUoKSAhPSBFeGl0RnJvbUFueXRoaW5nKTsKIAogICAg
IENPREVCTE9DS19MT0dfRVZFTlQob3duZXIsICJmcmVxdWVudEV4aXQiLCAoc2l0ZSkpOwogICAg
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9m
aWxlLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9ERkdFeGl0UHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMS0yMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBA
QAogCiAjaW5jbHVkZSAiQ29uY3VycmVudEpTTG9jay5oIgogI2luY2x1ZGUgIkV4aXRLaW5kLmgi
CisjaW5jbHVkZSAiRXhpdGluZ0lubGluZUtpbmQuaCIKICNpbmNsdWRlICJFeGl0aW5nSklUVHlw
ZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpA
QCAtNDEsNiArNDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9ieXRlY29kZU9mZnNldCgwKSAv
LyAwID0gZW1wdHkgdmFsdWUKICAgICAgICAgLCBtX2tpbmQoRXhpdEtpbmRVbnNldCkKICAgICAg
ICAgLCBtX2ppdFR5cGUoRXhpdEZyb21Bbnl0aGluZykKKyAgICAgICAgLCBtX2lubGluZUtpbmQo
RXhpdEZyb21BbnlJbmxpbmVLaW5kKQogICAgIHsKICAgICB9CiAgICAgCkBAIC00OCwxMyArNTAs
MTUgQEAgcHVibGljOgogICAgICAgICA6IG1fYnl0ZWNvZGVPZmZzZXQoMSkgLy8gMSA9IGRlbGV0
ZWQgdmFsdWUKICAgICAgICAgLCBtX2tpbmQoRXhpdEtpbmRVbnNldCkKICAgICAgICAgLCBtX2pp
dFR5cGUoRXhpdEZyb21Bbnl0aGluZykKKyAgICAgICAgLCBtX2lubGluZUtpbmQoRXhpdEZyb21B
bnlJbmxpbmVLaW5kKQogICAgIHsKICAgICB9CiAgICAgCi0gICAgZXhwbGljaXQgRnJlcXVlbnRF
eGl0U2l0ZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRXhpdEtpbmQga2luZCwgRXhpdGluZ0pJ
VFR5cGUgaml0VHlwZSA9IEV4aXRGcm9tQW55dGhpbmcpCisgICAgZXhwbGljaXQgRnJlcXVlbnRF
eGl0U2l0ZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRXhpdEtpbmQga2luZCwgRXhpdGluZ0pJ
VFR5cGUgaml0VHlwZSA9IEV4aXRGcm9tQW55dGhpbmcsIEV4aXRpbmdJbmxpbmVLaW5kIGlubGlu
ZUtpbmQgPSBFeGl0RnJvbUFueUlubGluZUtpbmQpCiAgICAgICAgIDogbV9ieXRlY29kZU9mZnNl
dChieXRlY29kZU9mZnNldCkKICAgICAgICAgLCBtX2tpbmQoa2luZCkKICAgICAgICAgLCBtX2pp
dFR5cGUoaml0VHlwZSkKKyAgICAgICAgLCBtX2lubGluZUtpbmQoaW5saW5lS2luZCkKICAgICB7
CiAgICAgICAgIGlmIChtX2tpbmQgPT0gQXJndW1lbnRzRXNjYXBlZCkgewogICAgICAgICAgICAg
Ly8gQ291bnQgdGhpcyBvbmUgZ2xvYmFsbHkuIEl0IGRvZXNuJ3QgbWF0dGVyIHdoZXJlIGluIHRo
ZSBjb2RlIGJsb2NrIHRoZSBhcmd1bWVudHMgZXhjYXBlZDsKQEAgLTY1LDEwICs2OSwxMSBAQCBw
dWJsaWM6CiAgICAgCiAgICAgLy8gVXNlIHRoaXMgY29uc3RydWN0b3IgaWYgeW91IHdpc2ggZm9y
IHRoZSBleGl0IHNpdGUgdG8gYmUgY291bnRlZCBnbG9iYWxseSB3aXRoaW4gaXRzCiAgICAgLy8g
Y29kZSBibG9jay4KLSAgICBleHBsaWNpdCBGcmVxdWVudEV4aXRTaXRlKEV4aXRLaW5kIGtpbmQs
IEV4aXRpbmdKSVRUeXBlIGppdFR5cGUgPSBFeGl0RnJvbUFueXRoaW5nKQorICAgIGV4cGxpY2l0
IEZyZXF1ZW50RXhpdFNpdGUoRXhpdEtpbmQga2luZCwgRXhpdGluZ0pJVFR5cGUgaml0VHlwZSA9
IEV4aXRGcm9tQW55dGhpbmcsIEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQgPSBFeGl0RnJv
bUFueUlubGluZUtpbmQpCiAgICAgICAgIDogbV9ieXRlY29kZU9mZnNldCgwKQogICAgICAgICAs
IG1fa2luZChraW5kKQogICAgICAgICAsIG1faml0VHlwZShqaXRUeXBlKQorICAgICAgICAsIG1f
aW5saW5lS2luZChpbmxpbmVLaW5kKQogICAgIHsKICAgICB9CiAgICAgCkBAIC04MSw3ICs4Niw4
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX2J5dGVjb2RlT2Zmc2V0ID09IG90
aGVyLm1fYnl0ZWNvZGVPZmZzZXQKICAgICAgICAgICAgICYmIG1fa2luZCA9PSBvdGhlci5tX2tp
bmQKLSAgICAgICAgICAgICYmIG1faml0VHlwZSA9PSBvdGhlci5tX2ppdFR5cGU7CisgICAgICAg
ICAgICAmJiBtX2ppdFR5cGUgPT0gb3RoZXIubV9qaXRUeXBlCisgICAgICAgICAgICAmJiBtX2lu
bGluZUtpbmQgPT0gb3RoZXIubV9pbmxpbmVLaW5kOwogICAgIH0KICAgICAKICAgICBib29sIHN1
YnN1bWVzKGNvbnN0IEZyZXF1ZW50RXhpdFNpdGUmIG90aGVyKSBjb25zdApAQCAtOTAsMTkgKzk2
LDI0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKG1f
a2luZCAhPSBvdGhlci5tX2tpbmQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IGlmIChtX2ppdFR5cGUgPT0gRXhpdEZyb21Bbnl0aGluZykKLSAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICByZXR1cm4gbV9qaXRUeXBlID09IG90aGVyLm1faml0VHlwZTsKKyAgICAg
ICAgaWYgKG1faml0VHlwZSAhPSBFeGl0RnJvbUFueXRoaW5nCisgICAgICAgICAgICAmJiBtX2pp
dFR5cGUgIT0gb3RoZXIubV9qaXRUeXBlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICBpZiAobV9pbmxpbmVLaW5kICE9IEV4aXRGcm9tQW55SW5saW5lS2luZAorICAgICAgICAg
ICAgJiYgbV9pbmxpbmVLaW5kICE9IG90aGVyLm1faW5saW5lS2luZCkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAogICAgIHVuc2ln
bmVkIGhhc2goKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6aW50SGFzaChtX2J5
dGVjb2RlT2Zmc2V0KSArIG1fa2luZCArIHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190eXBl
X3Q8RXhpdGluZ0pJVFR5cGU+PihtX2ppdFR5cGUpICogNzsKKyAgICAgICAgcmV0dXJuIFdURjo6
aW50SGFzaChtX2J5dGVjb2RlT2Zmc2V0KSArIG1fa2luZCArIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihtX2ppdFR5cGUpICogNyArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2lubGluZUtpbmQpICog
MTE7CiAgICAgfQogICAgIAogICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KCkgY29uc3QgeyBy
ZXR1cm4gbV9ieXRlY29kZU9mZnNldDsgfQogICAgIEV4aXRLaW5kIGtpbmQoKSBjb25zdCB7IHJl
dHVybiBtX2tpbmQ7IH0KICAgICBFeGl0aW5nSklUVHlwZSBqaXRUeXBlKCkgY29uc3QgeyByZXR1
cm4gbV9qaXRUeXBlOyB9CisgICAgRXhpdGluZ0lubGluZUtpbmQgaW5saW5lS2luZCgpIGNvbnN0
IHsgcmV0dXJuIG1faW5saW5lS2luZDsgfQogICAgIAogICAgIEZyZXF1ZW50RXhpdFNpdGUgd2l0
aEpJVFR5cGUoRXhpdGluZ0pJVFR5cGUgaml0VHlwZSkgY29uc3QKICAgICB7CkBAIC0xMTEsNiAr
MTIyLDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBG
cmVxdWVudEV4aXRTaXRlIHdpdGhJbmxpbmVLaW5kKEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtp
bmQpIGNvbnN0CisgICAgeworICAgICAgICBGcmVxdWVudEV4aXRTaXRlIHJlc3VsdCA9ICp0aGlz
OworICAgICAgICByZXN1bHQubV9pbmxpbmVLaW5kID0gaW5saW5lS2luZDsKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkg
Y29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2tpbmQgPT0gRXhpdEtpbmRVbnNldCAmJiBt
X2J5dGVjb2RlT2Zmc2V0OwpAQCAtMTIyLDYgKzE0MCw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWdu
ZWQgbV9ieXRlY29kZU9mZnNldDsKICAgICBFeGl0S2luZCBtX2tpbmQ7CiAgICAgRXhpdGluZ0pJ
VFR5cGUgbV9qaXRUeXBlOworICAgIEV4aXRpbmdJbmxpbmVLaW5kIG1faW5saW5lS2luZDsKIH07
CiAKIHN0cnVjdCBGcmVxdWVudEV4aXRTaXRlSGFzaCB7CkBAIC0xOTIsMTAgKzIxMSwxMCBAQCBw
dWJsaWM6CiAgICAgYm9vbCBoYXNFeGl0U2l0ZShjb25zdCBGcmVxdWVudEV4aXRTaXRlJiBzaXRl
KSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKHNpdGUuaml0VHlwZSgpID09IEV4aXRGcm9tQW55
dGhpbmcpIHsKLSAgICAgICAgICAgIHJldHVybiBoYXNFeGl0U2l0ZShzaXRlLndpdGhKSVRUeXBl
KEV4aXRGcm9tREZHKSkKLSAgICAgICAgICAgICAgICB8fCBoYXNFeGl0U2l0ZShzaXRlLndpdGhK
SVRUeXBlKEV4aXRGcm9tRlRMKSk7CisgICAgICAgICAgICByZXR1cm4gaGFzRXhpdFNpdGVXaXRo
U3BlY2lmaWNKSVRUeXBlKHNpdGUud2l0aEpJVFR5cGUoRXhpdEZyb21ERkcpKQorICAgICAgICAg
ICAgICAgIHx8IGhhc0V4aXRTaXRlV2l0aFNwZWNpZmljSklUVHlwZShzaXRlLndpdGhKSVRUeXBl
KEV4aXRGcm9tRlRMKSk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1fZnJlcXVlbnRFeGl0
U2l0ZXMuZmluZChzaXRlKSAhPSBtX2ZyZXF1ZW50RXhpdFNpdGVzLmVuZCgpOworICAgICAgICBy
ZXR1cm4gaGFzRXhpdFNpdGVXaXRoU3BlY2lmaWNKSVRUeXBlKHNpdGUpOwogICAgIH0KICAgICAK
ICAgICBib29sIGhhc0V4aXRTaXRlKEV4aXRLaW5kIGtpbmQpIGNvbnN0CkBAIC0yMDgsNiArMjI3
LDIwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGhhc0V4aXRTaXRlKEZyZXF1ZW50RXhpdFNp
dGUoYnl0ZWNvZGVJbmRleCwga2luZCkpOwogICAgIH0KIHByaXZhdGU6CisgICAgYm9vbCBoYXNF
eGl0U2l0ZVdpdGhTcGVjaWZpY0pJVFR5cGUoY29uc3QgRnJlcXVlbnRFeGl0U2l0ZSYgc2l0ZSkg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmIChzaXRlLmlubGluZUtpbmQoKSA9PSBFeGl0RnJvbUFu
eUlubGluZUtpbmQpIHsKKyAgICAgICAgICAgIHJldHVybiBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZp
Y0lubGluZUtpbmQoc2l0ZS53aXRoSW5saW5lS2luZChFeGl0RnJvbU5vdElubGluZWQpKQorICAg
ICAgICAgICAgICAgIHx8IGhhc0V4aXRTaXRlV2l0aFNwZWNpZmljSW5saW5lS2luZChzaXRlLndp
dGhJbmxpbmVLaW5kKEV4aXRGcm9tSW5saW5lZCkpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0lubGluZUtpbmQoc2l0ZSk7CisgICAgfQorICAgIAor
ICAgIGJvb2wgaGFzRXhpdFNpdGVXaXRoU3BlY2lmaWNJbmxpbmVLaW5kKGNvbnN0IEZyZXF1ZW50
RXhpdFNpdGUmIHNpdGUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9mcmVxdWVudEV4
aXRTaXRlcy5maW5kKHNpdGUpICE9IG1fZnJlcXVlbnRFeGl0U2l0ZXMuZW5kKCk7CisgICAgfQor
ICAgIAogICAgIEhhc2hTZXQ8RnJlcXVlbnRFeGl0U2l0ZT4gbV9mcmVxdWVudEV4aXRTaXRlczsK
IH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0aW5nSW5saW5l
S2luZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4
aXRpbmdJbmxpbmVLaW5kLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkV4aXRpbmdJbmxpbmVLaW5kLmgiCisKKyNp
bmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdURiB7CisKK3VzaW5nIG5h
bWVzcGFjZSBKU0M7CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBFeGl0
aW5nSW5saW5lS2luZCB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgRXhp
dEZyb21BbnlJbmxpbmVLaW5kOgorICAgICAgICBvdXQucHJpbnQoIkZyb21BbnlJbmxpbmVLaW5k
Iik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEV4aXRGcm9tTm90SW5saW5lZDoKKyAgICAg
ICAgb3V0LnByaW50KCJGcm9tTm90SW5saW5lZCIpOworICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBFeGl0RnJvbUlubGluZWQ6CisgICAgICAgIG91dC5wcmludCgiRnJvbUlubGluZWQiKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0V4aXRpbmdJbmxpbmVLaW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0V4aXRpbmdJbmxpbmVLaW5kLmgJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRpbmdJbmxpbmVLaW5kLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIEpTQyB7CisKK2VudW0gRXhp
dGluZ0lubGluZUtpbmQgOiB1aW50OF90IHsKKyAgICBFeGl0RnJvbUFueUlubGluZUtpbmQsCisg
ICAgRXhpdEZyb21Ob3RJbmxpbmVkLAorICAgIEV4aXRGcm9tSW5saW5lZCwKK307CisKK30gLy8g
bmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUHJpbnRTdHJlYW07Cit2
b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OkV4aXRpbmdJbmxpbmVLaW5kKTsK
KworfSAvLyBuYW1lc3BhY2UgV1RGCisKKworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExNiw5ICsxMTYsMTMgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpj
b21wdXRlRm9yKAogICAgICAgICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssIG1hcC5nZXQoQ29kZU9y
aWdpbihieXRlY29kZUluZGV4KSksIHVpZCwKICAgICAgICAgQ2FsbExpbmtTdGF0dXM6OmNvbXB1
dGVFeGl0U2l0ZURhdGEocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCkpOwogICAgIAorICAg
IGlmIChieXRlY29kZUluZGV4ID09IDIwKQorICAgICAgICBkYXRhTG9nKCJSZXN1bHQ6ICIsIHJl
c3VsdCwgIlxuIik7CisgICAgCiAgICAgaWYgKCFyZXN1bHQudGFrZXNTbG93UGF0aCgpCisgICAg
ICAgICYmIGJ5dGVjb2RlSW5kZXggIT0gMjAKICAgICAgICAgJiYgaGFzRXhpdFNpdGUocHJvZmls
ZWRCbG9jaywgYnl0ZWNvZGVJbmRleCkpCi0gICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKHJl
c3VsdC5tYWtlc0NhbGxzKCkgPyBNYWtlc0NhbGxzIDogVGFrZXNTbG93UGF0aCwgdHJ1ZSk7Cisg
ICAgICAgIHJldHVybiByZXN1bHQuc2xvd1ZlcnNpb24oKTsKICNlbHNlCiAgICAgVU5VU0VEX1BB
UkFNKG1hcCk7CiAjZW5kaWYKQEAgLTEzNyw3ICsxNDEsNyBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5
SWRTdGF0dXM6OmNvbXB1dGVGb3JTCiAgICAgICAgIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhp
dFNpdGVEYXRhKHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkpOwogCiAg
ICAgaWYgKCFyZXN1bHQudGFrZXNTbG93UGF0aCgpICYmIEdldEJ5SWRTdGF0dXM6Omhhc0V4aXRT
aXRlKHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkpCi0gICAgICAgIHJl
dHVybiBHZXRCeUlkU3RhdHVzKHJlc3VsdC5tYWtlc0NhbGxzKCkgPyBHZXRCeUlkU3RhdHVzOjpN
YWtlc0NhbGxzIDogR2V0QnlJZFN0YXR1czo6VGFrZXNTbG93UGF0aCwgdHJ1ZSk7CisgICAgICAg
IHJldHVybiByZXN1bHQuc2xvd1ZlcnNpb24oKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogI2Vu
ZGlmIC8vIEVOQUJMRShERkdfSklUKQpAQCAtMTcwLDggKzE3NCwxMSBAQCBHZXRCeUlkU3RhdHVz
IEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTCiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAg
aWYgKHN0dWJJbmZvLT50b29rU2xvd1BhdGgpCisgICAgaWYgKHN0dWJJbmZvLT50b29rU2xvd1Bh
dGgpIHsKKyAgICAgICAgaWYgKHN0dWJJbmZvLT5jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXggPT0g
MjApCisgICAgICAgICAgICBkYXRhTG9nKCJTdHViIGluZm8gdG9vayBzbG93IHBhdGguXG4iKTsK
ICAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoc2xvd1BhdGhTdGF0ZSk7CisgICAgfQogICAg
IAogICAgIC8vIEZpbmFsbHkgZmlndXJlIG91dCBpZiB3ZSBjYW4gZGVyaXZlIGFuIGFjY2VzcyBz
dHJhdGVneS4KICAgICBHZXRCeUlkU3RhdHVzIHJlc3VsdDsKQEAgLTMzMiwxMiArMzM5LDE1IEBA
IEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgIHJl
c3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAogICAgICAg
ICAgICAgICAgIGxvY2tlciwgZGZnQmxvY2ssIGRmZ01hcC5nZXQoY29kZU9yaWdpbiksIHVpZCwg
ZXhpdFNpdGVEYXRhKTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGZhbHNlICYm
IGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCA9PSAyMCkKKyAgICAgICAgICAgIGRhdGFMb2coIklu
ICIsIHBvaW50ZXJEdW1wKHByb2ZpbGVkQmxvY2spLCAiICIsIGNvZGVPcmlnaW4sICI6IERGRyBz
YXc6ICIsIHJlc3VsdCwgIlxuIik7CiAKICAgICAgICAgaWYgKHJlc3VsdC50YWtlc1Nsb3dQYXRo
KCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIAotICAgICAgICBpZiAoaGFzRXhp
dFNpdGUocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KSkKLSAgICAgICAg
ICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIHRydWUpOworICAgICAgICBp
ZiAoY29kZU9yaWdpbi5ieXRlY29kZUluZGV4ICE9IDIwICYmIGhhc0V4aXRTaXRlKHByb2ZpbGVk
QmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkpCisgICAgICAgICAgICByZXR1cm4gcmVz
dWx0LnNsb3dWZXJzaW9uKCk7CiAgICAgICAgIAogICAgICAgICBpZiAocmVzdWx0LmlzU2V0KCkp
CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzQ2LDcgKzM1NiwxMCBAQCBHZXRCeUlk
U3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgVU5VU0VEX1BBUkFNKGRmZ0Js
b2NrKTsKICAgICBVTlVTRURfUEFSQU0oZGZnTWFwKTsKICNlbmRpZgotCisgICAgCisgICAgaWYg
KGRmZ0Jsb2NrICYmIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCA9PSAyMCkKKyAgICAgICAgZGF0
YUxvZygiSW4gIiwgcG9pbnRlckR1bXAocHJvZmlsZWRCbG9jayksICIgIiwgY29kZU9yaWdpbiwg
IjogR29pbmcgd2l0aCB3aGF0IGJhc2VsaW5lIHNhdy5cbiIpOworICAgICAgICAKICAgICByZXR1
cm4gY29tcHV0ZUZvcihwcm9maWxlZEJsb2NrLCBiYXNlbGluZU1hcCwgY29kZU9yaWdpbi5ieXRl
Y29kZUluZGV4LCB1aWQpOwogfQogCkBAIC00MTQsNiArNDI3LDExIEBAIGJvb2wgR2V0QnlJZFN0
YXR1czo6bWFrZXNDYWxscygpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitHZXRCeUlk
U3RhdHVzIEdldEJ5SWRTdGF0dXM6OnNsb3dWZXJzaW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
R2V0QnlJZFN0YXR1cyhtYWtlc0NhbGxzKCkgPyBNYWtlc0NhbGxzIDogVGFrZXNTbG93UGF0aCwg
d2FzU2VlbkluSklUKCkpOworfQorCiB2b2lkIEdldEJ5SWRTdGF0dXM6OmZpbHRlcihjb25zdCBT
dHJ1Y3R1cmVTZXQmIHNldCkKIHsKICAgICBpZiAobV9zdGF0ZSAhPSBTaW1wbGUpCkBAIC00MjMs
NiArNDQxLDI1IEBAIHZvaWQgR2V0QnlJZFN0YXR1czo6ZmlsdGVyKGNvbnN0IFN0cnVjdHUKICAg
ICAgICAgbV9zdGF0ZSA9IE5vSW5mb3JtYXRpb247CiB9CiAKK3ZvaWQgR2V0QnlJZFN0YXR1czo6
bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgZm9yIChHZXRCeUlkVmFy
aWFudCYgdmFyaWFudCA6IG1fdmFyaWFudHMpCisgICAgICAgIHZhcmlhdC5tYXJrSWZDaGVhcCh2
aXNpdG9yKTsKK30KKworYm9vbCBHZXRCeUlkU3RhdHVzOjpmaW5hbGl6ZSgpCit7CisgICAgZm9y
IChHZXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IG1fdmFyaWFudHMpIHsKKyAgICAgICAgaWYgKCF2
YXJpYW50LmZpbmFsaXplKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IGlmIChtX21vZHVsZU5hbWVzcGFjZU9iamVjdCAmJiAhSGVhcDo6aXNNYXJrZWQobV9tb2R1bGVO
YW1lc3BhY2VPYmplY3QpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fbW9kdWxl
RW52aXJvbm1lbnQgJiYgIUhlYXA6OmlzTWFya2VkKG1fbW9kdWxlRW52aXJvbm1lbnQpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgR2V0QnlJZFN0
YXR1czo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIG91dC5wcmludCgiKCIp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1
cy5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiQ29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKICNpbmNsdWRl
ICJHZXRCeUlkVmFyaWFudC5oIgorI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCiAjaW5jbHVkZSAi
U2NvcGVPZmZzZXQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00MCw4ICs0MSw2IEBAIGNsYXNz
IEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OwogY2xhc3MgTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2Fz
ZTsKIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOwogCi10eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdp
biwgU3RydWN0dXJlU3R1YkluZm8qLCBDb2RlT3JpZ2luQXBwcm94aW1hdGVIYXNoPiBTdHViSW5m
b01hcDsKLQogY2xhc3MgR2V0QnlJZFN0YXR1cyB7CiBwdWJsaWM6CiAgICAgZW51bSBTdGF0ZSB7
CkBAIC04MSwxMCArODAsMTAgQEAgcHVibGljOgogICAgICAgICBtX3ZhcmlhbnRzLmFwcGVuZCh2
YXJpYW50KTsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZv
cihDb2RlQmxvY2sqLCBTdHViSW5mb01hcCYsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFVuaXF1
ZWRTdHJpbmdJbXBsKiB1aWQpOworICAgIHN0YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVGb3Io
Q29kZUJsb2NrKiwgSUNTdGF0dXNNYXAmLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBVbmlxdWVk
U3RyaW5nSW1wbCogdWlkKTsKICAgICBzdGF0aWMgR2V0QnlJZFN0YXR1cyBjb21wdXRlRm9yKGNv
bnN0IFN0cnVjdHVyZVNldCYsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogICAgIAotICAgIHN0
YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBD
b2RlQmxvY2sqIGRmZ0Jsb2NrLCBTdHViSW5mb01hcCYgYmFzZWxpbmVNYXAsIFN0dWJJbmZvTWFw
JiBkZmdNYXAsIENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOworICAgIHN0YXRp
YyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBDb2Rl
QmxvY2sqIGRmZ0Jsb2NrLCBJQ1N0YXR1c01hcCYgYmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4
dFN0YWNrJiBkZmdDb250ZXh0U3RhY2ssIENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQpOwogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgc3RhdGljIEdldEJ5SWRTdGF0dXMgY29t
cHV0ZUZvclN0dWJJbmZvKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayogYmFz
ZWxpbmVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkKTsKQEAgLTEwNiw2ICsxMDUsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCB0YWtlc1Ns
b3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBUYWtlc1Nsb3dQYXRoIHx8IG1fc3Rh
dGUgPT0gTWFrZXNDYWxscyB8fCBtX3N0YXRlID09IEN1c3RvbSB8fCBtX3N0YXRlID09IE1vZHVs
ZU5hbWVzcGFjZTsgfQogICAgIGJvb2wgbWFrZXNDYWxscygpIGNvbnN0OwogICAgIAorICAgIEdl
dEJ5SWRTdGF0dXMgc2xvd1ZlcnNpb24oKSBjb25zdDsKKyAgICAKICAgICBib29sIHdhc1NlZW5J
bkpJVCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzU2VlbkluSklUOyB9CiAgICAgCiAgICAgLy8gQXR0
ZW1wdHMgdG8gcmVkdWNlIHRoZSBzZXQgb2YgdmFyaWFudHMgdG8gZml0IHRoZSBnaXZlbiBzdHJ1
Y3R1cmUgc2V0LiBUaGlzIG1heSBiZSBhcHByb3hpbWF0ZS4KQEAgLTExNSw2ICsxMTYsOSBAQCBw
dWJsaWM6CiAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogbW9kdWxlRW52aXJvbm1lbnQoKSBjb25z
dCB7IHJldHVybiBtX21vZHVsZUVudmlyb25tZW50OyB9CiAgICAgU2NvcGVPZmZzZXQgc2NvcGVP
ZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlT2Zmc2V0OyB9CiAgICAgCisgICAgdm9pZCBt
YXJrSWZDaGVhcChTbG90VmlzaXRvciYpOworICAgIGJvb2wgZmluYWxpemUoKTsgLy8gUmV0dXJu
IHRydWUgaWYgdGhpcyBnZXRzIHRvIGxpdmUuCisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3Ry
ZWFtJikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzUsNiArMTM1LDI0IEBAIGJvb2wgR2V0QnlJZFZhcmlhbnQ6OmF0dGVt
cHRUb01lcmdlKGNvbnMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBHZXRCeUlkVmFyaWFu
dDo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgbV9zdHJ1Y3R1cmVT
ZXQubWFya0lmQ2hlYXAodmlzaXRvcik7Cit9CisKK2Jvb2wgR2V0QnlJZFZhcmlhbnQ6OmZpbmFs
aXplKCkKK3sKKyAgICBpZiAoIW1fc3RydWN0dXJlU2V0LmlzU3RpbGxBbGl2ZSgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX2NvbmRpdGlvblNldC5hcmVTdGlsbExpdmUoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2NhbGxMaW5rU3RhdHVzICYmICFtX2Nh
bGxMaW5rU3RhdHVzLT5maW5hbGl6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KG1faW50cmluc2ljRnVuY3Rpb24gJiYgIUhlYXA6OmlzTWFya2VkKG1faW50cmluc2ljRnVuY3Rp
b24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQg
R2V0QnlJZFZhcmlhbnQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBkdW1w
SW5Db250ZXh0KG91dCwgMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlJZFZhcmlhbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvR2V0QnlJZFZhcmlhbnQuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTcz
LDYgKzczLDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBhdHRlbXB0VG9NZXJnZShjb25zdCBHZXRC
eUlkVmFyaWFudCYgb3RoZXIpOwogICAgIAorICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0
b3ImKTsKKyAgICBib29sIGZpbmFsaXplKCk7CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3Ry
ZWFtJikgY29uc3Q7CiAgICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENv
bnRleHQqKSBjb25zdDsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9JQ1N0YXR1c01hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0lDU3RhdHVzTWFwLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCisKKyNpbmNsdWRlICJU
ZXJtaW5hdGVkQ29kZU9yaWdpbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworSUNTdGF0dXMgSUNT
dGF0dXNDb250ZXh0OjpnZXQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQoreworICAgIHJldHVybiBt
YXAuZ2V0PFRlcm1pbmF0ZWRDb2RlT3JpZ2luSGFzaFRyYW5zbGF0b3I+KAorICAgICAgICBUZXJt
aW5hdGVkQ29kZU9yaWdpbihjb2RlT3JpZ2luLCBiYXNlbGluZUNvZGVCbG9jaykpOworfQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0lDU3RhdHVzTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0lDU3RhdHVzTWFwLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0lDU3RhdHVzTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhbWdhIG9u
Y2UKKworI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQ2FsbExpbmtJbmZvOworY2xhc3MgQ2FsbExpbmtT
dGF0dXM7CitjbGFzcyBDb2RlQmxvY2s7CitjbGFzcyBHZXRCeUlkU3RhdHVzOworY2xhc3MgUHV0
QnlJZFN0YXR1czsKK2NsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOworc3RydWN0IEJ5VmFsSW5mbzsK
Kworc3RydWN0IElDU3RhdHVzIHsKKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8geyBu
dWxscHRyIH07CisgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8geyBudWxscHRyIH07Cisg
ICAgQnlWYWxJbmZvKiBieVZhbEluZm8geyBudWxscHRyIH07CisgICAgQ2FsbExpbmtTdGF0dXMq
IGNhbGxTdGF0dXMgeyBudWxscHRyIH07CisgICAgR2V0QnlJZFN0YXR1cyogZ2V0U3RhdHVzIHsg
bnVsbHB0ciB9OworICAgIFB1dEJ5SWRTdGF0dXMqIHB1dFN0YXR1cyB7IG51bGxwdHIgfTsKK307
CisKK3R5cGVkZWYgSGFzaE1hcDxDb2RlT3JpZ2luLCBJQ1N0YXR1cywgQ29kZU9yaWdpbkFwcHJv
eGltYXRlSGFzaD4gSUNTdGF0dXNNYXA7CisKK3N0cnVjdCBJQ1N0YXR1c0NvbnRleHQgeworICAg
IElDU3RhdHVzIGdldChDb2RlT3JpZ2luKTsKKyAgICAKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5l
Q29kZUJsb2NrOworICAgIElDU3RhdHVzTWFwIG1hcDsKK307CisKK3R5cGVkZWYgVmVjdG9yPElD
U3RhdHVzQ29udGV4dCosIDg+IElDU3RhdHVzQ29udGV4dFN0YWNrOworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0
dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRC
eUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTgsNiArMzk4
LDIxIEBAIGJvb2wgUHV0QnlJZFN0YXR1czo6bWFrZXNDYWxscygpIGNvbnN0CiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCit2b2lkIFB1dEJ5SWRTdGF0dXM6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQoreworICAgIGZvciAoUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3Zhcmlh
bnRzKQorICAgICAgICB2YXJpYW50Lm1hcmtJZkNoZWFwKHZpc2l0b3IpOworfQorCitib29sIFB1
dEJ5SWRTdGF0dXM6OmZpbmFsaXplKCkKK3sKKyAgICBmb3IgKFB1dEJ5SWRWYXJpYW50JiB2YXJp
YW50IDogbV92YXJpYW50cykgeworICAgICAgICBpZiAoIXZhcmlhbnQuZmluYWxpemUoKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZv
aWQgUHV0QnlJZFN0YXR1czo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIHN3
aXRjaCAobV9zdGF0ZSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1
dEJ5SWRTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHV0QnlJZFN0YXR1cy5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsy
Niw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCisjaW5j
bHVkZSAiSUNTdGF0dXNNYXAuaCIKICNpbmNsdWRlICJQdXRCeUlkVmFyaWFudC5oIgogCiBuYW1l
c3BhY2UgSlNDIHsKQEAgLTY5LDEwICs3MCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIG1fdmFyaWFu
dHMuYXBwZW5kKHZhcmlhbnQpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgUHV0QnlJZFN0YXR1
cyBjb21wdXRlRm9yKENvZGVCbG9jayosIFN0dWJJbmZvTWFwJiwgdW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7CisgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMg
Y29tcHV0ZUZvcihDb2RlQmxvY2sqLCBJQ1N0YXR1c01hcCYsIHVuc2lnbmVkIGJ5dGVjb2RlSW5k
ZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNv
bXB1dGVGb3IoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJ1Y3R1cmVTZXQmLCBVbmlxdWVkU3Ry
aW5nSW1wbCogdWlkLCBib29sIGlzRGlyZWN0KTsKICAgICAKLSAgICBzdGF0aWMgUHV0QnlJZFN0
YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgQ29kZUJsb2NrKiBkZmdC
bG9jaywgU3R1YkluZm9NYXAmIGJhc2VsaW5lTWFwLCBTdHViSW5mb01hcCYgZGZnTWFwLCBDb2Rl
T3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKKyAgICBzdGF0aWMgUHV0QnlJZFN0YXR1
cyBjb21wdXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgQ29kZUJsb2NrKiBkZmdCbG9j
aywgSUNTdGF0dXNNYXAmIGJhc2VsaW5lTWFwLCBJQ1N0YXR1c01hcCYgZGZnTWFwLCBDb2RlT3Jp
Z2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKIAogI2lmIEVOQUJMRShKSVQpCiAgICAgc3Rh
dGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvclN0dWJJbmZvKGNvbnN0IENvbmN1cnJlbnRKU0xv
Y2tlciYsIENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qLCBDb2Rl
T3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKQEAgLTkxLDYgKzkyLDkgQEAgcHVibGlj
OgogICAgIGNvbnN0IFB1dEJ5SWRWYXJpYW50JiBhdChzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0
dXJuIG1fdmFyaWFudHNbaW5kZXhdOyB9CiAgICAgY29uc3QgUHV0QnlJZFZhcmlhbnQmIG9wZXJh
dG9yW10oc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBhdChpbmRleCk7IH0KICAgICAKKyAg
ICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7CisgICAgYm9vbCBmaW5hbGl6ZSgpOwor
ICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIAogcHJpdmF0ZToK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJp
YW50LmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1B1dEJ5SWRWYXJpYW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMDYsNiArMjA2LDI2
IEBAIGJvb2wgUHV0QnlJZFZhcmlhbnQ6OmF0dGVtcHRUb01lcmdlVHJhbnMKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAordm9pZCBQdXRCeUlkVmFyaWFudDo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCit7CisgICAgbV9vbGRTdHJ1Y3R1cmUubWFya0lmQ2hlYXAodmlzaXRvcik7Cisg
ICAgaWYgKG1fbmV3U3RydWN0dXJlKQorICAgICAgICBtX25ld1N0cnVjdHVyZS0+bWFya0lmQ2hl
YXAodmlzaXRvcik7Cit9CisKK2Jvb2wgUHV0QnlJZFZhcmlhbnQ6OmZpbmFsaXplKCkKK3sKKyAg
ICBpZiAoIW1fb2xkU3RydWN0dXJlLmlzU3RpbGxBbGl2ZSh2aXNpdG9yKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmIChtX25ld1N0cnVjdHVyZSAmJiAhSGVhcDo6aXNNYXJrZWQobV9u
ZXdTdHJ1Y3R1cmUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX2NvbmRpdGlv
blNldC5hcmVTdGlsbExpdmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2Nh
bGxMaW5rU3RhdHVzICYmICFtX2NhbGxMaW5rU3RhdHVzLT5maW5hbGl6ZSgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgUHV0QnlJZFZhcmlhbnQ6
OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBkdW1wSW5Db250ZXh0KG91dCwg
MCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZh
cmlhbnQuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1B1dEJ5SWRWYXJpYW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTI5LDYgKzEyOSw5IEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgYXR0ZW1wdFRvTWVyZ2UoY29uc3QgUHV0QnlJZFZhcmlhbnQm
IG90aGVyKTsKICAgICAKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7CisgICAg
Ym9vbCBmaW5hbGl6ZSgpOworICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0
OwogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0KikgY29u
c3Q7CiAKQEAgLTEzNyw3ICsxNDAsNyBAQCBwcml2YXRlOgogICAgIAogICAgIEtpbmQgbV9raW5k
OwogICAgIFN0cnVjdHVyZVNldCBtX29sZFN0cnVjdHVyZTsKLSAgICBTdHJ1Y3R1cmUqIG1fbmV3
U3RydWN0dXJlOworICAgIFN0cnVjdHVyZSogbV9uZXdTdHJ1Y3R1cmUgeyBudWxscHRyIH07CiAg
ICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgbV9jb25kaXRpb25TZXQ7CiAgICAgUHJvcGVy
dHlPZmZzZXQgbV9vZmZzZXQ7CiAgICAgSW5mZXJyZWRUeXBlOjpEZXNjcmlwdG9yIG1fcmVxdWly
ZWRUeXBlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3Rh
dHVzZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVj
b3JkZWRTdGF0dXNlcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgorI2luY2x1ZGUgIkdldEJ5SWRT
dGF0dXMuaCIKKyNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitzdHJ1Y3QgUmVjb3JkZWRTdGF0dXNlcyB7CisgICAgUmVjb3JkZWRTdGF0dXNlcygpIHsgfQor
ICAgIAorICAgIFJlY29yZGVkU3RhdHVzZXMmIG9wZXJhdG9yPShjb25zdCBSZWNvcmRlZFN0YXR1
c2VzJiBvdGhlcikKKyAgICB7CisgICAgICAgIGZvciAoYXV0byYgcGFpciA6IG90aGVyLmNhbGxz
KQorICAgICAgICAgICAgY2FsbHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHBhaXIuZmlyc3QsIHN0
ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtTdGF0dXM+KHBhaXIuc2Vjb25kKSkpOworICAgICAgICBm
b3IgKGF1dG8mIHBhaXIgOiBvdGhlci5nZXRzKQorICAgICAgICAgICAgZ2V0cy5hcHBlbmQoc3Rk
OjptYWtlX3BhaXIocGFpci5maXJzdCwgc3RkOjptYWtlX3VuaXF1ZTxHZXRCeUlkU3RhdHVzPihw
YWlyLnNlY29uZCkpKTsKKyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogb3RoZXIucHV0cykKKyAg
ICAgICAgICAgIHB1dHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHBhaXIuZmlyc3QsIHN0ZDo6bWFr
ZV91bmlxdWU8UHV0QnlJZFN0YXR1cz4ocGFpci5zZWNvbmQpKSk7CisgICAgfQorICAgIAorICAg
IFJlY29yZGVkU3RhdHVzZXMmIG9wZXJhdG9yPShSZWNvcmRlZFN0YXR1c2VzJiYgb3RoZXIpCisg
ICAgeworICAgICAgICBjYWxscyA9IFdURk1vdmUob3RoZXIuY2FsbHMpOworICAgICAgICBnZXRz
ID0gV1RGTW92ZShvdGhlci5nZXRzKTsKKyAgICAgICAgcHV0cyA9IFdURk1vdmUob3RoZXIucHV0
cyk7CisgICAgfQorICAgIAorICAgIFJlY29yZGVkU3RhdHVzZXMoY29uc3QgUmVjb3JkZWRTdGF0
dXNlcyYgb3RoZXIpCisgICAgeworICAgICAgICAqdGhpcyA9IG90aGVyOworICAgIH0KKyAgICAK
KyAgICBSZWNvcmRlZFN0YXR1c2VzKFJlY29yZWRlZFN0YXR1c2VzJiYgb3RoZXIpCisgICAgewor
ICAgICAgICAqdGhpcyA9IFdURk1vdmUob3RoZXIpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGFk
ZENhbGxMaW5rU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0IENhbGxM
aW5rU3RhdHVzJiBzdGF0dXMpCisgICAgeworICAgICAgICBjYWxscy5hcHBlbmQoc3RkOjptYWtl
X3BhaXIoY29kZU9yaWdpbiwgc3RkOjptYWtlX3VuaXF1ZTxDYWxsTGlua1N0YXR1cz4oc3RhdHVz
KSkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGFkZEdldEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9y
aWdpbiYgY29kZU9yaWdpbiwgY29uc3QgR2V0QnlJZFN0YXR1cyYgc3RhdHVzKQorICAgIHsKKyAg
ICAgICAgZ2V0cy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY29kZU9yaWdpbiwgc3RkOjptYWtlX3Vu
aXF1ZTxHZXRCeUlkU3RhdHVzPihzdGF0dXMpKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgYWRk
UHV0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBjb25zdCBQdXRCeUlk
U3RhdHVzJiBzdGF0dXMpCisgICAgeworICAgICAgICBwdXRzLmFwcGVuZChzdGQ6Om1ha2VfcGFp
cihjb2RlT3JpZ2luLCBzdGQ6Om1ha2VfdW5pcXVlPFB1dEJ5SWRTdGF0dXM+KHN0YXR1cykpKTsK
KyAgICB9CisgICAgCisgICAgdm9pZCBtYXJrSWZDaGVhcChTbG90VmlzaXRvciYgc2xvdFZpc2l0
b3IpCisgICAgeworICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBnZXRzKQorICAgICAgICAgICAg
cGFpci5zZWNvbmQtPm1hcmtJZkNoZWFwKHNsb3RWaXNpdG9yKTsKKyAgICAgICAgZm9yIChhdXRv
JiBwYWlyIDogcHV0cykKKyAgICAgICAgICAgIHBhaXIuc2Vjb25kLT5tYXJrSWZDaGVhcChzbG90
VmlzaXRvcik7CisgICAgfQorICAgIAorICAgIHZvaWQgZmluYWxpemUoKQorICAgIHsKKyAgICAg
ICAgYXV0byBmaW5hbGl6ZSA9IFtdIChhdXRvJiB2ZWN0b3IpIHsKKyAgICAgICAgICAgIHZlY3Rv
ci5yZW1vdmVBbGxNYXRjaGluZygKKyAgICAgICAgICAgICAgICBbJl0gKGF1dG8mIHBhaXIpIC0+
IGJvb2wgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXBhaXIuc2Vjb25kLT5maW5hbGl6
ZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgdmVjdG9yLnNocmlua1RvRml0
KCk7CisgICAgICAgIH07CisgICAgICAgIGZpbmFsaXplKGNhbGxzKTsKKyAgICAgICAgZmluYWxp
emUoZ2V0cyk7CisgICAgICAgIGZpbmFsaXplKHB1dHMpOworICAgIH0KKyAgICAKKyAgICB2b2lk
IHNocmlua1RvRml0KCkKKyAgICB7CisgICAgICAgIGNhbGxzLnNocmlua1RvRml0KCk7CisgICAg
ICAgIGdldHMuc2hyaW5rVG9GaXQoKTsKKyAgICAgICAgcHV0cy5zaHJpbmtUb0ZpdCgpOworICAg
IH0KKyAgICAKKyAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0
cjxDYWxsTGlua1N0YXR1cz4+PiBjYWxsczsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmln
aW4sIHN0ZDo6dW5pcXVlX3B0cjxHZXRCeUlkU3RhdHVzPj4+IGdldHM7CisgICAgVmVjdG9yPHN0
ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8UHV0QnlJZFN0YXR1cz4+PiBwdXRz
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zMSw2ICszMSwyMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAordm9pZCBTdHJ1
Y3R1cmVTZXQ6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9yKSBjb25zdAoreworICAg
IGZvciAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgOiAqdGhpcykKKyAgICAgICAgc3RydWN0dXJlLT5t
YXJrSWZDaGVhcCh2aXNpdG9yKTsKK30KKworYm9vbCBTdHJ1Y3R1cmVTZXQ6OmlzU3RpbGxBbGl2
ZSgpIGNvbnN0Cit7CisgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6ICp0aGlzKSB7Cisg
ICAgICAgIGlmICghSGVhcDo6aXNNYXJrZWQoc3RydWN0dXJlKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgU3RydWN0dXJlU2V0
OjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBj
b25zdAogewogICAgIENvbW1hUHJpbnRlciBjb21tYTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMtMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTU4LDYgKzU4LDkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJu
IG9ubHlFbnRyeSgpOwogICAgIH0KKworICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3Im
KSBjb25zdDsKKyAgICBib29sIGlzU3RpbGxBbGl2ZSgpIGNvbnN0OwogICAgIAogICAgIHZvaWQg
ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0KikgY29uc3Q7CiAgICAgdm9p
ZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVGVybWluYXRlZENvZGVPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVGVybWluYXRlZENvZGVPcmlnaW4uaAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVGVybWluYXRlZENvZGVPcmlnaW4u
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgSlNDIHsK
Kworc3RydWN0IFRlcm1pbmF0ZWRDb2RlT3JpZ2luIHsKKyAgICBUZXJtaW5hdGVkQ29kZU9yaWdp
bigpIHsgfQorICAgIAorICAgIFRlcm1pbmF0ZWRDb2RlT3JpZ2luKGNvbnN0IENvZGVPcmlnaW4m
IGNvZGVPcmlnaW4sIENvZGVCbG9jayogdGVybWluYWwpCisgICAgICAgIDogY29kZU9yaWdpbihj
b2RlT3JpZ2luKQorICAgICAgICAsIHRlcm1pbmFsKHRlcm1pbmFsKQorICAgIHsKKyAgICB9Cisg
ICAgCisgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luOworICAgIENvZGVCbG9jayogdGVybWluYWwg
eyBudWxscHRyIH07Cit9OworCitzdHJ1Y3QgVGVybWluYXRlZENvZGVPcmlnaW5IYXNoVHJhbnNs
YXRvciB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVGVybWluYXRlZENvZGVPcmln
aW4mIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlLmNvZGVPcmlnaW4uYXBwcm94
aW1hdGVIYXNoKHZhbHVlLnRlcm1pbmFsKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIGJvb2wg
ZXF1YWwoY29uc3QgQ29kZU9yaWdpbiYgYSwgY29uc3QgVGVybWluYXRlZENvZGVPcmlpZ24mIGIp
CisgICAgeworICAgICAgICByZXR1cm4gYi5jb2RlT3JpZ2luLmFwcHJveGltYXRlbHlFcXVhbChh
LCBiLnRlcm1pbmFsKTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJl
dmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgyLDkgKzEwODIsOCBAQCBwcml2YXRlOgog
ICAgICAgICAvLyBjb2RlIGJsb2NrIGhhZCBnYXRoZXJlZC4KICAgICAgICAgTGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGVQYXJzZXIgbV9sYXp5T3BlcmFuZHM7CiAgICAgICAgIAotICAgICAgICBDYWxs
TGlua0luZm9NYXAgbV9jYWxsTGlua0luZm9zOwotICAgICAgICBTdHViSW5mb01hcCBtX3N0dWJJ
bmZvczsKLSAgICAgICAgQnlWYWxJbmZvTWFwIG1fYnlWYWxJbmZvczsKKyAgICAgICAgSUNTdGF0
dXNNYXAgbV9iYXNlbGluZU1hcDsKKyAgICAgICAgSUNTdGF0dXNDb250ZXh0IG1fb3B0aW1pemVk
Q29udGV4dDsKICAgICAgICAgCiAgICAgICAgIC8vIFBvaW50ZXJzIHRvIHRoZSBhcmd1bWVudCBw
b3NpdGlvbiB0cmFja2VycyBmb3IgdGhpcyBzbGljZSBvZiBjb2RlLgogICAgICAgICBWZWN0b3I8
QXJndW1lbnRQb3NpdGlvbio+IG1fYXJndW1lbnRQb3NpdGlvbnM7CkBAIC0xMTAyLDEwICsxMTAx
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZTo6S2luZCwKICAgICAg
ICAgICAgIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrKTsKICAgICAgICAgCi0gICAgICAg
IH5JbmxpbmVTdGFja0VudHJ5KCkKLSAgICAgICAgewotICAgICAgICAgICAgbV9ieXRlQ29kZVBh
cnNlci0+bV9pbmxpbmVTdGFja1RvcCA9IG1fY2FsbGVyOwotICAgICAgICB9CisgICAgICAgIH5J
bmxpbmVTdGFja0VudHJ5KCk7CiAgICAgICAgIAogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVt
YXBPcGVyYW5kKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSBjb25zdAogICAgICAgICB7CkBAIC0x
MTIwLDYgKzExMTYsOCBAQCBwcml2YXRlOgogICAgIAogICAgIElubGluZVN0YWNrRW50cnkqIG1f
aW5saW5lU3RhY2tUb3A7CiAgICAgCisgICAgSUNTdGF0dXNDb250ZXh0U3RhY2sgbV9pY0NvbnRl
eHRTdGFjazsKKyAgICAKICAgICBzdHJ1Y3QgRGVsYXllZFNldExvY2FsIHsKICAgICAgICAgQ29k
ZU9yaWdpbiBtX29yaWdpbjsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG1fb3BlcmFuZDsKQEAg
LTExNDYsMTAgKzExNDQsNiBAQCBwcml2YXRlOgogICAgIAogICAgIFZlY3RvcjxEZWxheWVkU2V0
TG9jYWwsIDI+IG1fc2V0TG9jYWxRdWV1ZTsKIAotICAgIENvZGVCbG9jayogbV9kZmdDb2RlQmxv
Y2s7Ci0gICAgQ2FsbExpbmtTdGF0dXM6OkNvbnRleHRNYXAgbV9jYWxsQ29udGV4dE1hcDsKLSAg
ICBTdHViSW5mb01hcCBtX2RmZ1N0dWJJbmZvczsKLSAgICAKICAgICBJbnN0cnVjdGlvbiogbV9j
dXJyZW50SW5zdHJ1Y3Rpb247CiAgICAgYm9vbCBtX2hhc0RlYnVnZ2VyRW5hYmxlZDsKIH07CkBA
IC00MDA3LDkgKzQwMDEsMTggQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKKyAgICAvLyBGSVhNRTogSWYgd2UgdXNlIHRo
ZSBHZXRCeUlkU3RhdHVzIGZvciBhbnl0aGluZyB0aGVuIHdlIHNob3VsZCByZWNvcmQgaXQgYW5k
IGluc2VydCBhIG5vZGUKKyAgICAvLyBhZnRlciBldmVyeXRoaW5nIGVsc2UgKGxpa2UgdGhlIEdl
dEJ5T2Zmc2V0IG9yIHdoYXRldmVyKSB0aGF0IHdpbGwgZmlsdGVyIHRoZSByZWNvcmRlZAorICAg
IC8vIEdldEJ5SWRTdGF0dXMuIFRoYXQgbWVhbnMgdGhhdCB0aGUgY29uc3RhbnQgZm9sZGVyIGFs
c28gbmVlZHMgdG8gZG8gdGhlIHNhbWUhCisgICAgCiAgICAgaWYgKGdldEJ5SWRTdGF0dXMubnVt
VmFyaWFudHMoKSA+IDEpIHsKICAgICAgICAgaWYgKGdldEJ5SWRTdGF0dXMubWFrZXNDYWxscygp
IHx8ICFpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKQotICAgICAgICAgICAgfHwgIU9wdGlvbnM6
OnVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcoKSkgeworICAgICAgICAgICAgfHwgIU9wdGlv
bnM6OnVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcoKQorICAgICAgICAgICAgfHwgZ2V0QnlJ
ZFN0YXR1cy5udW1WYXJpYW50cygpID4gT3B0aW9uczo6bWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxp
bmluZ0xpc3RTaXplKCkpIHsKKyAgICAgICAgICAgIGlmIChmYWxzZSAmJiBnZXRCeUlkU3RhdHVz
Lm51bVZhcmlhbnRzKCkgPiBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlz
dFNpemUoKSkgeworICAgICAgICAgICAgICAgIGRhdGFMb2coIkF0ICIsIGN1cnJlbnRDb2RlT3Jp
Z2luKCksICJcbiIpOworICAgICAgICAgICAgICAgIGRhdGFMb2coIkdpdmluZyB1cCBvbjogIiwg
Z2V0QnlJZFN0YXR1cywgIlxuIik7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBzZXQoVmly
dHVhbFJlZ2lzdGVyKGRlc3RpbmF0aW9uT3BlcmFuZCksCiAgICAgICAgICAgICAgICAgYWRkVG9H
cmFwaChnZXRCeUlkLCBPcEluZm8oaWRlbnRpZmllck51bWJlciksIE9wSW5mbyhwcmVkaWN0aW9u
KSwgYmFzZSkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDE1MCw3ICs0MTUzLDEwIEBAIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgCiAgICAgaWYgKHB1dEJ5SWRT
dGF0dXMubnVtVmFyaWFudHMoKSA+IDEpIHsKICAgICAgICAgaWYgKCFpc0ZUTChtX2dyYXBoLm1f
cGxhbi5tb2RlKSB8fCBwdXRCeUlkU3RhdHVzLm1ha2VzQ2FsbHMoKQotICAgICAgICAgICAgfHwg
IU9wdGlvbnM6OnVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcoKSkgeworICAgICAgICAgICAg
fHwgIU9wdGlvbnM6OnVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcoKQorICAgICAgICAgICAg
fHwgcHV0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpID4gT3B0aW9uczo6bWF4UG9seW1vcnBoaWNB
Y2Nlc3NJbmxpbmluZ0xpc3RTaXplKCkpIHsKKyAgICAgICAgICAgIGlmIChmYWxzZSAmJiBwdXRC
eUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgPiBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0FjY2Vzc0lu
bGluaW5nTGlzdFNpemUoKSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJHaXZpbmcgdXAgb246
ICIsIHB1dEJ5SWRTdGF0dXMsICJcbiIpOwogICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwg
aWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0KTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNjYwMywxMiArNjYwOSwxNyBAQCBCeXRlQ29k
ZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lCiAgICAgICAgIC8vIFdlIGRvIHRoaXMg
d2hpbGUgaG9sZGluZyB0aGUgbG9jayBiZWNhdXNlIHdlIHdhbnQgdG8gZW5jb3VyYWdlIFN0cnVj
dHVyZVN0dWJJbmZvJ3MKICAgICAgICAgLy8gdG8gYmUgcG90ZW50aWFsbHkgYWRkZWQgdG8gb3Bl
cmF0aW9ucyBhbmQgYmVjYXVzZSB0aGUgcHJvZmlsZWQgYmxvY2sgY291bGQgYmUgaW4gdGhlCiAg
ICAgICAgIC8vIG1pZGRsZSBvZiBMTEludC0+SklUIHRpZXItdXAgaW4gd2hpY2ggY2FzZSB3ZSB3
b3VsZCBiZSBhZGRpbmcgdGhlIGluZm8ncyByaWdodCBub3cuCi0gICAgICAgIGlmIChtX3Byb2Zp
bGVkQmxvY2stPmhhc0Jhc2VsaW5lSklUUHJvZmlsaW5nKCkpIHsKLSAgICAgICAgICAgIG1fcHJv
ZmlsZWRCbG9jay0+Z2V0U3R1YkluZm9NYXAobG9ja2VyLCBtX3N0dWJJbmZvcyk7Ci0gICAgICAg
ICAgICBtX3Byb2ZpbGVkQmxvY2stPmdldENhbGxMaW5rSW5mb01hcChsb2NrZXIsIG1fY2FsbExp
bmtJbmZvcyk7Ci0gICAgICAgICAgICBtX3Byb2ZpbGVkQmxvY2stPmdldEJ5VmFsSW5mb01hcChs
b2NrZXIsIG1fYnlWYWxJbmZvcyk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKG1fcHJvZmlsZWRC
bG9jay0+aGFzQmFzZWxpbmVKSVRQcm9maWxpbmcoKSkKKyAgICAgICAgICAgIG1fcHJvZmlsZWRC
bG9jay0+Z2V0SUNTdGF0dXNNYXAobG9ja2VyLCBtX2Jhc2VsaW5lTWFwKTsKKyAgICB9CisgICAg
CisgICAgbV9vcHRpbWl6ZWRDb250ZXh0LmJhc2VsaW5lQ29kZUJsb2NrID0gbV9wcm9maWxlZEJs
b2NrOworICAgIENvZGVCbG9jayogb3B0aW1pemVkQmxvY2sgPSBtX3Byb2ZpbGVkQmxvY2stPnJl
cGxhY2VtZW50KCk7CisgICAgaWYgKG9wdGltaXplZEJsb2NrKSB7CisgICAgICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIob3B0aW1pemVkQmxvY2stPm1fbG9jayk7CisgICAgICAgIG9wdGlt
aXplZEJsb2NrLT5nZXRJQ1N0YXR1c01hcChsb2NrZXIsIG1fb3B0aW1pemVkQ29udGV4dC5tYXAp
OwogICAgIH0KKyAgICBtX2ljQ29udGV4dFN0YWNrLmFwcGVuZCgmbV9vcHRpbWl6ZWRDb250ZXh0
KTsKICAgICAKICAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNXaXRoRml4dXAgPSBz
dGQ6Om1heDxpbnQ+KGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBjb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSk7CiAKQEAgLTY2NzMsNiArNjY4NCwxMyBAQCBCeXRlQ29kZVBhcnNlcjo6SW5s
aW5lU3RhY2tFbnRyeTo6SW5saW5lCiAgICAgYnl0ZUNvZGVQYXJzZXItPm1faW5saW5lU3RhY2tU
b3AgPSB0aGlzOwogfQogCitCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6fklubGlu
ZVN0YWNrRW50cnkoKQoreworICAgIG1fYnl0ZUNvZGVQYXJzZXItPm1faW5saW5lU3RhY2tUb3Ag
PSBtX2NhbGxlcjsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2J5dGVDb2RlUGFyc2VyLT5tX2ljQ29u
dGV4dFN0YWNrLmxhc3QoKSA9PSAmbV9vcHRpbWl6ZWRDb250ZXh0KTsKKyAgICBtX2J5dGVDb2Rl
UGFyc2VyLT5tX2ljQ29udGV4dFN0YWNrLnJlbW92ZUxhc3QoKTsKK30KKwogdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQogewogICAgIGNsZWFyQ2FjaGVzKCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuaAkocmV2aXNpb24gMjMyMjI3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEyNSw2ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgQmFnPENvZGVCbG9ja0pldHRp
c29uaW5nV2F0Y2hwb2ludD4gd2F0Y2hwb2ludHM7CiAgICAgQmFnPEFkYXB0aXZlU3RydWN0dXJl
V2F0Y2hwb2ludD4gYWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50czsKICAgICBCYWc8QWRhcHRp
dmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50PiBhZGFwdGl2ZUluZmVycmVkUHJvcGVy
dHlWYWx1ZVdhdGNocG9pbnRzOworICAgIFJlY29yZGVkU3RhdHVzZXMgcmVjb3JkZWRTdGF0dXNl
czsKICAgICBWZWN0b3I8SnVtcFJlcGxhY2VtZW50PiBqdW1wUmVwbGFjZW1lbnRzOwogICAgIAog
ICAgIFNjcmF0Y2hCdWZmZXIqIGNhdGNoT1NSRW50cnlCdWZmZXI7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMjMyMjI3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE4OCw2ICsxODgsOCBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRXhjZXB0
aW9uSGFuZGxlCiAKIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0J1ZmZl
cikKIHsKKyAgICBtX2ppdENvZGUtPmNvbW1vbi5yZWNvcmRlZFN0YXR1c2VzID0gV1RGTW92ZSht
X2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKTsKKyAgICAKICAgICAvLyBMaW5rIHRoZSBj
b2RlLCBwb3B1bGF0ZSBkYXRhIGluIENvZGVCbG9jayBkYXRhIHN0cnVjdHVyZXMuCiAgICAgbV9q
aXRDb2RlLT5jb21tb24uZnJhbWVSZWdpc3RlckNvdW50ID0gbV9ncmFwaC5mcmFtZVJlZ2lzdGVy
Q291bnQoKTsKICAgICBtX2ppdENvZGUtPmNvbW1vbi5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JF
eGl0ID0gbV9ncmFwaC5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0KCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRCYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRCYXNlLmNwcAkocmV2aXNpb24gMjMy
MjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0QmFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
My0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNDIsMTEgKzQyLDE3IEBAIHZvaWQgT1NSRXhpdEJhc2U6OmNvbnNp
ZGVyQWRkaW5nQXNGcmVxdWUKICAgICAgICAgYmFzZWxpbmVDb2RlQmxvY2tGb3JPcmlnaW5BbmRC
YXNlbGluZUNvZGVCbG9jaygKICAgICAgICAgICAgIG1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxl
LCBwcm9maWxlZENvZGVCbG9jayk7CiAgICAgaWYgKHNvdXJjZVByb2ZpbGVkQ29kZUJsb2NrKSB7
CisgICAgICAgIEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQ7CisgICAgICAgIGlmIChtX2Nv
ZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZS5pbmxpbmVDYWxsRnJhbWUpCisgICAgICAgICAgICBpbmxp
bmVLaW5kID0gRXhpdEZyb21JbmxpbmVkOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbmxp
bmVLaW5kID0gRXhpdEZyb21Ob3RJbmxpbmVkOworICAgICAgICAKICAgICAgICAgRnJlcXVlbnRF
eGl0U2l0ZSBzaXRlOwogICAgICAgICBpZiAobV93YXNIb2lzdGVkKQotICAgICAgICAgICAgc2l0
ZSA9IEZyZXF1ZW50RXhpdFNpdGUoSG9pc3RpbmdGYWlsZWQsIGppdFR5cGUpOworICAgICAgICAg
ICAgc2l0ZSA9IEZyZXF1ZW50RXhpdFNpdGUoSG9pc3RpbmdGYWlsZWQsIGppdFR5cGUsIGlubGlu
ZUtpbmQpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzaXRlID0gRnJlcXVlbnRFeGl0U2l0
ZShtX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZS5ieXRlY29kZUluZGV4LCBtX2tpbmQsIGppdFR5
cGUpOworICAgICAgICAgICAgc2l0ZSA9IEZyZXF1ZW50RXhpdFNpdGUobV9jb2RlT3JpZ2luRm9y
RXhpdFByb2ZpbGUuYnl0ZWNvZGVJbmRleCwgbV9raW5kLCBqaXRUeXBlLCBpbmxpbmVLaW5kKTsK
ICAgICAgICAgRXhpdFByb2ZpbGU6OmFkZChzb3VyY2VQcm9maWxlZENvZGVCbG9jaywgc2l0ZSk7
CiAgICAgfQogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCShyZXZp
c2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02MzMsNiArNjMzLDggQEAgdm9pZCBQbGFuOjpjaGVja0xpdmVuZXNz
QW5kVmlzaXRDaGlsZHJlbgogICAgIGNsZWFuTXVzdEhhbmRsZVZhbHVlc0lmTmVjZXNzYXJ5KCk7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbXVzdEhhbmRsZVZhbHVlcy5zaXplKCk7IGktLTspCiAg
ICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQobXVzdEhhbmRsZVZhbHVlc1tpXSk7Cisg
ICAgCisgICAgcmVjb3JkZWRTdGF0dXNlcy5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKIAogICAgIHZp
c2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQoY29kZUJsb2NrKTsKICAgICB2aXNpdG9yLmFwcGVuZFVu
YmFycmllcmVkKGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSk7CkBAIC02NDksNiArNjUxLDExIEBA
IHZvaWQgUGxhbjo6Y2hlY2tMaXZlbmVzc0FuZFZpc2l0Q2hpbGRyZW4KICAgICB0cmFuc2l0aW9u
cy52aXNpdENoaWxkcmVuKHZpc2l0b3IpOwogfQogCit2b2lkIFBsYW46OmZpbmFsaXplSW5HQygp
Cit7CisgICAgcmVjb3JkZWRTdGF0dXNlcy5maW5hbGl6ZSgpOworfQorCiBib29sIFBsYW46Omlz
S25vd25Ub0JlTGl2ZUR1cmluZ0dDKCkKIHsKICAgICBpZiAoc3RhZ2UgPT0gQ2FuY2VsbGVkKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgJKHJldmlzaW9uIDIzMjIyNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5oCSh3b3JraW5nIGNvcHkpCkBAIC03
Miw2ICs3Miw3IEBAIHN0cnVjdCBQbGFuIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGUKICAg
ICB2b2lkIGl0ZXJhdGVDb2RlQmxvY2tzRm9yR0MoY29uc3QgRnVuYyYpOwogICAgIHZvaWQgY2hl
Y2tMaXZlbmVzc0FuZFZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKICAgICBib29sIGlzS25v
d25Ub0JlTGl2ZUR1cmluZ0dDKCk7CisgICAgdm9pZCBmaW5hbGl6ZUluR0MoKTsKICAgICB2b2lk
IGNhbmNlbCgpOwogCiAgICAgYm9vbCBjYW5UaWVyVXBBbmRPU1JFbnRlcigpIGNvbnN0IHsgcmV0
dXJuICF0aWVyVXBBbmRPU1JFbnRlckJ5dGVjb2Rlcy5pc0VtcHR5KCk7IH0KQEAgLTEwNCw2ICsx
MDUsNyBAQCBzdHJ1Y3QgUGxhbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlCiAgICAgRGVz
aXJlZElkZW50aWZpZXJzIGlkZW50aWZpZXJzOwogICAgIERlc2lyZWRXZWFrUmVmZXJlbmNlcyB3
ZWFrUmVmZXJlbmNlczsKICAgICBEZXNpcmVkVHJhbnNpdGlvbnMgdHJhbnNpdGlvbnM7CisgICAg
UmVjb3JlZFN0YXR1c2VzIHJlY29yZGVkU3RhdHVzZXM7CiAgICAgCiAgICAgYm9vbCB3aWxsVHJ5
VG9UaWVyVXAgeyBmYWxzZSB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1dvcmtsaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1dvcmtsaXN0LmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdXb3JrbGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5Myw4ICszOTMsMTAgQEAg
dm9pZCBXb3JrbGlzdDo6cmVtb3ZlRGVhZFBsYW5zKFZNJiB2bSkKICAgICAgICAgICAgIFBsYW4q
IHBsYW4gPSBpdGVyLT52YWx1ZS5nZXQoKTsKICAgICAgICAgICAgIGlmIChwbGFuLT52bSAhPSAm
dm0pCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAocGxhbi0+aXNL
bm93blRvQmVMaXZlRHVyaW5nR0MoKSkKKyAgICAgICAgICAgIGlmIChwbGFuLT5pc0tub3duVG9C
ZUxpdmVEdXJpbmdHQygpKSB7CisgICAgICAgICAgICAgICAgcGxhbi0+ZmluYWxpemVJbkdDKCk7
CiAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChwbGFuLT5zdGFnZSAhPSBQbGFuOjpDYW5jZWxsZWQpOyAvLyBTaG91bGQg
bm90IGJlIGNhbmNlbGxlZCwgeWV0LgogICAgICAgICAgICAgQVNTRVJUKCFkZWFkUGxhbktleXMu
Y29udGFpbnMocGxhbi0+a2V5KCkpKTsKICAgICAgICAgICAgIGRlYWRQbGFuS2V5cy5hZGQocGxh
bi0+a2V5KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Niw2ICs1Niw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKICAg
ICBtYWNybyhEaXJlY3RBcmd1bWVudHNfbWluQ2FwYWNpdHksIERpcmVjdEFyZ3VtZW50czo6b2Zm
c2V0T2ZNaW5DYXBhY2l0eSgpKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX21hcHBlZEFy
Z3VtZW50cywgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZk1hcHBlZEFyZ3VtZW50cygpKSBcCiAg
ICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX21vZGlmaWVkQXJndW1lbnRzRGVzY3JpcHRvciwgRGly
ZWN0QXJndW1lbnRzOjpvZmZzZXRPZk1vZGlmaWVkQXJndW1lbnRzRGVzY3JpcHRvcigpKSBcCisg
ICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9hbGxvY2F0b3IsIEZ1bmN0aW9uUmFyZURhdGE6Om9m
ZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxl
OjpvZmZzZXRPZkFsbG9jYXRvcigpKSBcCisgICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9zdHJ1
Y3R1cmUsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUo
KSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSBcCiAgICAg
bWFjcm8oR2V0dGVyU2V0dGVyX2dldHRlciwgR2V0dGVyU2V0dGVyOjpvZmZzZXRPZkdldHRlcigp
KSBcCiAgICAgbWFjcm8oR2V0dGVyU2V0dGVyX3NldHRlciwgR2V0dGVyU2V0dGVyOjpvZmZzZXRP
ZlNldHRlcigpKSBcCiAgICAgbWFjcm8oSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoLCBKU0FycmF5
QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkgXApAQCAtMTEyLDEwICsxMTQsMTAgQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3JvKFN0cmluZ0ltcGxfbGVuZ3Ro
LCBTdHJpbmdJbXBsOjpsZW5ndGhNZW1vcnlPZmZzZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVy
ZV9jbGFzc0luZm8sIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpIFwKICAgICBtYWNybyhT
dHJ1Y3R1cmVfZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSBc
CisgICAgbWFjcm8oU3RydWN0dXJlX2luZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnksIFN0cnVj
dHVyZTo6aW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeU9mZnNldCgpKSBcCisgICAgbWFjcm8o
U3RydWN0dXJlX2lubGluZUNhcGFjaXR5LCBTdHJ1Y3R1cmU6OmlubGluZUNhcGFjaXR5T2Zmc2V0
KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfcHJvdG90eXBlLCBTdHJ1Y3R1cmU6OnByb3RvdHlw
ZU9mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlX3N0cnVjdHVyZUlELCBTdHJ1Y3R1cmU6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpIFwKLSAgICBtYWNybyhTdHJ1Y3R1cmVfaW5saW5lQ2FwYWNp
dHksIFN0cnVjdHVyZTo6aW5saW5lQ2FwYWNpdHlPZmZzZXQoKSkgXAotICAgIG1hY3JvKFN0cnVj
dHVyZV9pbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5LCBTdHJ1Y3R1cmU6OmluZGV4aW5nTW9k
ZUluY2x1ZGluZ0hpc3RvcnlPZmZzZXQoKSkgXAogICAgIG1hY3JvKEhhc2hNYXBJbXBsX2NhcGFj
aXR5LCBIYXNoTWFwSW1wbDxIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46Om9m
ZnNldE9mQ2FwYWNpdHkoKSkgXAogICAgIG1hY3JvKEhhc2hNYXBJbXBsX2J1ZmZlciwgIEhhc2hN
YXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+Pjo6b2Zmc2V0T2ZCdWZm
ZXIoKSkgXAogICAgIG1hY3JvKEhhc2hNYXBJbXBsX2hlYWQsICBIYXNoTWFwSW1wbDxIYXNoTWFw
QnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46Om9mZnNldE9mSGVhZCgpKSBcCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lv
biAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM1MSw2ICszNTEsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxl
dmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICBjYXNl
IFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgY2FzZSBNYXRjaFN0cnVjdHVyZToKKyAgICBjYXNlIENy
ZWF0ZVRoaXM6CiAgICAgICAgIC8vIFRoZXNlIGFyZSBPSy4KICAgICAgICAgYnJlYWs7CiAKQEAg
LTM2Miw3ICszNjMsNiBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSog
CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBJZGVudGl0eVdpdGhQcm9maWxlOgotICAgIGNh
c2UgQ3JlYXRlVGhpczoKICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgogICAgIGNhc2UgQ2hl
Y2tUaWVyVXBBbmRPU1JFbnRlcjoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZp
c2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0Nyw2ICs4NDcsOSBAQCBwcml2YXRlOgogICAgICAg
ICBjYXNlIE5ld0FycmF5V2l0aFNwcmVhZDoKICAgICAgICAgICAgIGNvbXBpbGVOZXdBcnJheVdp
dGhTcHJlYWQoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENyZWF0ZVRoaXM6
CisgICAgICAgICAgICBjb21waWxlQ3JlYXRlVGhpcygpOworICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgU3ByZWFkOgogICAgICAgICAgICAgY29tcGlsZVNwcmVhZCgpOwogICAgICAg
ICAgICAgYnJlYWs7CkBAIC01NjYyLDYgKzU2NjUsNDAgQEAgcHJpdmF0ZToKIAogICAgICAgICBz
ZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgfQorICAgIAorICAgIHZvaWQgY29tcGlsZUNyZWF0ZVRo
aXMoKQorICAgIHsKKyAgICAgICAgTFZhbHVlIGNhbGxlZSA9IGxvd0NlbGwobV9ub2RlLT5jaGls
ZDEoKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNGdW5jdGlvbkJsb2NrID0gbV9vdXQubmV3
QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgaGFzUmFyZURhdGEgPSBtX291dC5uZXdCbG9j
aygpOworICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7Cisg
ICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAg
ICAgICAgbV9vdXQuYnJhbmNoKGlzRnVuY3Rpb24oY2FsbGVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+
Y2hpbGQxKCkpKSwgdXN1YWxseShpc0Z1bmN0aW9uQmxvY2spLCByYXJlbHkoc2xvd1BhdGgpKTsK
KworICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzRnVuY3Rp
b25CbG9jaywgaGFzUmFyZURhdGEpOworICAgICAgICBMVmFsdWUgcmFyZURhdGEgPSBtX291dC5s
b2FkUHRyKGNhbGxlZSwgbV9oZWFwcy5KU0Z1bmN0aW9uX3JhcmVEYXRhKTsKKyAgICAgICAgbV9v
dXQuYnJhbmNoKG1fb3V0LmlzWmVybzY0KHJhcmVEYXRhKSwgcmFyZWx5KHNsb3dQYXRoKSwgdXN1
YWxseShoYXNSYXJlRGF0YSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGhhc1JhcmVEYXRh
LCBzbG93UGF0aCk7CisgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBtX291dC5sb2FkUHRyKHJh
cmVEYXRhLCBtX2hlYXBzLkZ1bmN0aW9uUmFyZURhdGFfYWxsb2NhdG9yKTsKKyAgICAgICAgTFZh
bHVlIHN0cnVjdHVyZSA9IG1fb3V0LmxvYWRQdHIocmFyZURhdGEsIG1faGVhcHMuRnVuY3Rpb25S
YXJlRGF0YV9zdHJ1Y3R1cmUpOworICAgICAgICBMVmFsdWUgYnV0dGVyZmx5ID0gbV9vdXQuY29u
c3RJbnRQdHIoMCk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5h
bmNob3IoYWxsb2NhdGVPYmplY3QoYWxsb2NhdG9yLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSwgc2xv
d1BhdGgpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1f
b3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24pOworICAgICAgICBWYWx1ZUZyb21C
bG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbCgKKyAgICAgICAgICAgIEludDY0
LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uQ3JlYXRlVGhpcyksIG1fY2FsbEZyYW1lLCBjYWxs
ZWUsIG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT5pbmxpbmVDYXBhY2l0eSgpKSkpOworICAgICAg
ICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29u
dGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5waGko
SW50NjQsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpOworCisgICAgICAgIG11dGF0b3JGZW5jZSgp
OworICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CisgICAgfQogCiAgICAgdm9pZCBjb21waWxl
U3ByZWFkKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
cy5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3NSw2ICsyNzUsNyBAQCBjb25zdGV4cHIgYm9v
bCBlbmFibGVXZWJBc3NlbWJseVN0cmVhbWluCiAgICAgdih1bnNpZ25lZCwgbWF4QWNjZXNzVmFy
aWFudExpc3RTaXplLCA4LCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KGJvb2wsIHVzZVBvbHl2
YXJpYW50RGV2aXJ0dWFsaXphdGlvbiwgdHJ1ZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihi
b29sLCB1c2VQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIp
IFwKKyAgICB2KHVuc2lnbmVkLCBtYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemUs
IDMsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwgdXNlUG9seW1vcnBoaWNDYWxsSW5s
aW5pbmcsIHRydWUsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwgdXNlUG9seW1vcnBo
aWNDYWxsSW5saW5pbmdGb3JOb25TdHViU3RhdHVzLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBc
CiAgICAgdih1bnNpZ25lZCwgbWF4UG9seW1vcnBoaWNDYWxsVmFyaWFudExpc3RTaXplLCAxNSwg
Tm9ybWFsLCBudWxscHRyKSBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341545</attachid>
            <date>2018-05-29 17:56:57 -0700</date>
            <delta_ts>2018-05-30 14:48:49 -0700</delta_ts>
            <desc>CallLinkStatus is starting to look sensible</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>94145</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgJKHJldmlz
aW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8u
aAkod29ya2luZyBjb3B5KQpAQCAtMjY2LDEyICsyNjYsNiBAQCBpbmxpbmUgdW5zaWduZWQgZ2V0
QnlWYWxJbmZvQnl0ZWNvZGVJbmRlCiAgICAgcmV0dXJuIGluZm8tPmJ5dGVjb2RlSW5kZXg7CiB9
CiAKLXR5cGVkZWYgSGFzaE1hcDxDb2RlT3JpZ2luLCBCeVZhbEluZm8qLCBDb2RlT3JpZ2luQXBw
cm94aW1hdGVIYXNoPiBCeVZhbEluZm9NYXA7Ci0KLSNlbHNlIC8vIEVOQUJMRShKSVQpCi0KLXR5
cGVkZWYgSGFzaE1hcDxpbnQsIHZvaWQqPiBCeVZhbEluZm9NYXA7Ci0KICNlbmRpZiAvLyBFTkFC
TEUoSklUKQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkocmV2aXNpb24gMjMyMjI3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVz
dWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNDI3LDcgKzQyNyw3IEBAIHN0YXRpYyB2b2lkIGR1bXBDaGFpbihQcmlu
dFN0cmVhbSYgb3V0LCAKIH0KIAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVjb2Rl
RHVtcGVyPEJsb2NrPjo6cHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwg
aW50IGxvY2F0aW9uLCBjb25zdCBTdHViSW5mb01hcCYgbWFwKQordm9pZCBCeXRlY29kZUR1bXBl
cjxCbG9jaz46OnByaW50R2V0QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBs
b2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBjb25zdCBhdXRv
KiBpbnN0cnVjdGlvbiA9IGluc3RydWN0aW9uc0JlZ2luKCkgKyBsb2NhdGlvbjsKIApAQCAtNDQ3
LDcgKzQ0Nyw3IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludEdldEJ5SWQKICAg
ICB9CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YlB0
ciA9IG1hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpKSB7CisgICAgaWYgKFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViUHRyID0gc3RhdHVzTWFwLmdldChDb2RlT3JpZ2luKGxvY2F0aW9uKSkuc3R1
YkluZm8pIHsKICAgICAgICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gKnN0dWJQdHI7
CiAgICAgICAgIGlmIChzdHViSW5mby5yZXNldEJ5R0MpCiAgICAgICAgICAgICBvdXQucHJpbnQo
IiAoUmVzZXQgQnkgR0MpIik7CkBAIC00ODgsMTIgKzQ4OCwxMiBAQCB2b2lkIEJ5dGVjb2RlRHVt
cGVyPEJsb2NrPjo6cHJpbnRHZXRCeUlkCiAgICAgICAgIG91dC5wcmludGYoIikiKTsKICAgICB9
CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShtYXApOworICAgIFVOVVNFRF9QQVJBTShzdGF0dXNN
YXApOwogI2VuZGlmCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgotdm9pZCBCeXRlY29kZUR1
bXBlcjxCbG9jaz46OnByaW50UHV0QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGlu
dCBsb2NhdGlvbiwgY29uc3QgU3R1YkluZm9NYXAmIG1hcCkKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8
QmxvY2s+OjpwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9j
YXRpb24sIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgY29uc3QgYXV0byog
aW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNCZWdpbigpICsgbG9jYXRpb247CiAKQEAgLTUyMSw3
ICs1MjEsNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRQdXRCeUlkCiAgICAg
fQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJQdHIg
PSBtYXAuZ2V0KENvZGVPcmlnaW4obG9jYXRpb24pKSkgeworICAgIGlmIChTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YlB0ciA9IHN0YXR1c01hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpLnN0dWJJ
bmZvKSB7CiAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9ICpzdHViUHRyOwog
ICAgICAgICBpZiAoc3R1YkluZm8ucmVzZXRCeUdDKQogICAgICAgICAgICAgb3V0LnByaW50KCIg
KFJlc2V0IEJ5IEdDKSIpOwpAQCAtNTQ3LDEyICs1NDcsMTIgQEAgdm9pZCBCeXRlY29kZUR1bXBl
cjxCbG9jaz46OnByaW50UHV0QnlJZAogICAgICAgICBvdXQucHJpbnRmKCIpIik7CiAgICAgfQog
I2Vsc2UKLSAgICBVTlVTRURfUEFSQU0obWFwKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdHVzTWFw
KTsKICNlbmRpZgogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1w
ZXI8QmxvY2s+OjpwcmludEluQnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBs
b2NhdGlvbiwgY29uc3QgU3R1YkluZm9NYXAmIG1hcCkKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8Qmxv
Y2s+OjpwcmludEluQnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlv
biwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBjb25zdCBhdXRvKiBpbnN0
cnVjdGlvbiA9IGluc3RydWN0aW9uc0JlZ2luKCkgKyBsb2NhdGlvbjsKIApAQCAtNTYxLDcgKzU2
MSw3IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludEluQnlJZEMKICAgICBVTlVT
RURfUEFSQU0oaWRlbnQpOyAvLyB0ZWxsIHRoZSBjb21waWxlciB0byBzaHV0IHVwIGluIGNlcnRh
aW4gcGxhdGZvcm0gY29uZmlndXJhdGlvbnMuCiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmIChT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YlB0ciA9IG1hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikp
KSB7CisgICAgaWYgKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViUHRyID0gc3RhdHVzTWFwLmdldChD
b2RlT3JpZ2luKGxvY2F0aW9uKSkuc3R1YkluZm8pIHsKICAgICAgICAgU3RydWN0dXJlU3R1Yklu
Zm8mIHN0dWJJbmZvID0gKnN0dWJQdHI7CiAgICAgICAgIGlmIChzdHViSW5mby5yZXNldEJ5R0Mp
CiAgICAgICAgICAgICBvdXQucHJpbnQoIiAoUmVzZXQgQnkgR0MpIik7CkBAIC02MDAsMjYgKzYw
MCwyNiBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRJbkJ5SWRDCiAgICAgfQog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0ob3V0KTsKLSAgICBVTlVTRURfUEFSQU0obWFwKTsKKyAg
ICBVTlVTRURfUEFSQU0oc3RhdHVzTWFwKTsKICNlbmRpZgogfQogCiAjaWYgRU5BQkxFKEpJVCkK
IHRlbXBsYXRlPHR5cGVuYW1lIEJsb2NrPgotdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1
bXBDYWxsTGlua1N0YXR1cyhQcmludFN0cmVhbSYsIHVuc2lnbmVkLCBjb25zdCBDYWxsTGlua0lu
Zm9NYXAmKQordm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBDYWxsTGlua1N0YXR1cyhQ
cmludFN0cmVhbSYsIHVuc2lnbmVkLCBjb25zdCBJQ1N0YXR1c01hcCYpCiB7CiB9CiAKIHRlbXBs
YXRlPD4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8Q29kZUJsb2NrPjo6ZHVtcENhbGxMaW5rU3RhdHVz
KFByaW50U3RyZWFtJiBvdXQsIHVuc2lnbmVkIGxvY2F0aW9uLCBjb25zdCBDYWxsTGlua0luZm9N
YXAmIG1hcCkKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8Q29kZUJsb2NrPjo6ZHVtcENhbGxMaW5rU3Rh
dHVzKFByaW50U3RyZWFtJiBvdXQsIHVuc2lnbmVkIGxvY2F0aW9uLCBjb25zdCBJQ1N0YXR1c01h
cCYgc3RhdHVzTWFwKQogewogICAgIGlmIChibG9jaygpLT5qaXRUeXBlKCkgIT0gSklUQ29kZTo6
RlRMSklUKQotICAgICAgICBvdXQucHJpbnQoIiBzdGF0dXMoIiwgQ2FsbExpbmtTdGF0dXM6OmNv
bXB1dGVGb3IoYmxvY2soKSwgbG9jYXRpb24sIG1hcCksICIpIik7CisgICAgICAgIG91dC5wcmlu
dCgiIHN0YXR1cygiLCBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcihibG9jaygpLCBsb2NhdGlv
biwgc3RhdHVzTWFwKSwgIikiKTsKIH0KICNlbmRpZgogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4K
LXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludENhbGxPcChQcmludFN0cmVhbSYgb3V0
LCBpbnQgbG9jYXRpb24sIGNvbnN0IHR5cGVuYW1lIEJsb2NrOjpJbnN0cnVjdGlvbiomIGl0LCBj
b25zdCBjaGFyKiBvcCwgQ2FjaGVEdW1wTW9kZSBjYWNoZUR1bXBNb2RlLCBib29sJiBoYXNQcmlu
dGVkUHJvZmlsaW5nLCBjb25zdCBDYWxsTGlua0luZm9NYXAmIG1hcCkKK3ZvaWQgQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpwcmludENhbGxPcChQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24s
IGNvbnN0IHR5cGVuYW1lIEJsb2NrOjpJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCwg
Q2FjaGVEdW1wTW9kZSBjYWNoZUR1bXBNb2RlLCBib29sJiBoYXNQcmludGVkUHJvZmlsaW5nLCBj
b25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQogewogICAgIGludCBkc3QgPSAoKytpdCktPnUu
b3BlcmFuZDsKICAgICBpbnQgZnVuYyA9ICgrK2l0KS0+dS5vcGVyYW5kOwpAQCAtNjM4LDcgKzYz
OCw3IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludENhbGxPcCgKICAgICAgICAg
ICAgICAgICBvdXQucHJpbnRmKCIgbGxpbnQoJXApIiwgb2JqZWN0KTsKICAgICAgICAgfQogI2lm
IEVOQUJMRShKSVQpCi0gICAgICAgIGlmIChDYWxsTGlua0luZm8qIGluZm8gPSBtYXAuZ2V0KENv
ZGVPcmlnaW4obG9jYXRpb24pKSkgeworICAgICAgICBpZiAoQ2FsbExpbmtJbmZvKiBpbmZvID0g
c3RhdHVzTWFwLmdldChDb2RlT3JpZ2luKGxvY2F0aW9uKSkuY2FsbExpbmtJbmZvKSB7CiAgICAg
ICAgICAgICBpZiAoaW5mby0+aGF2ZUxhc3RTZWVuQ2FsbGVlKCkpIHsKICAgICAgICAgICAgICAg
ICBKU09iamVjdCogb2JqZWN0ID0gaW5mby0+bGFzdFNlZW5DYWxsZWUoKTsKICAgICAgICAgICAg
ICAgICBpZiAoYXV0byogZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPigqdm0o
KSwgb2JqZWN0KSkKQEAgLTY0OCw5ICs2NDgsOSBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2Nr
Pjo6cHJpbnRDYWxsT3AoCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBkdW1w
Q2FsbExpbmtTdGF0dXMob3V0LCBsb2NhdGlvbiwgbWFwKTsKKyAgICAgICAgZHVtcENhbGxMaW5r
U3RhdHVzKG91dCwgbG9jYXRpb24sIHN0YXR1c01hcCk7CiAjZWxzZQotICAgICAgICBVTlVTRURf
UEFSQU0obWFwKTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHN0YXR1c01hcCk7CiAjZW5kaWYKICAg
ICB9CiAgICAgKytpdDsKQEAgLTY3OCw3ICs2NzgsNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJs
b2NrPjo6cHJpbnRMb2NhdGlvCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgotdm9pZCBCeXRl
Y29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCB0
eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6
SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgU3R1YkluZm9NYXAmIHN0dWJJbmZvcywgY29uc3QgQ2Fs
bExpbmtJbmZvTWFwJiBjYWxsTGlua0luZm9zKQordm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46
OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5z
dHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwg
Y29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBpbnQgbG9jYXRpb24gPSBpdCAt
IGJlZ2luOwogICAgIGJvb2wgaGFzUHJpbnRlZFByb2ZpbGluZyA9IGZhbHNlOwpAQCAtMTA3MSw3
ICsxMDcxLDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZQogICAg
ICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgIHByaW50TG9jYXRpb25B
bmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImluX2J5X2lkIik7CiAgICAgICAgIG91dC5wcmludGYo
IiVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5k
YXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZpZXIoaWQwKSkuZGF0YSgpKTsKLSAgICAgICAgcHJp
bnRJbkJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdHViSW5mb3MpOworICAgICAgICBw
cmludEluQnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0YXR1c01hcCk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIG9wX2luX2J5X3ZhbDogewpAQCAtMTA5NSw3ICsxMDk1
LDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZQogICAgICAgICBw
cmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJnZXRfYnlfaWRfZGlyZWN0Iik7
CiAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZpZXIoaWQwKSku
ZGF0YSgpKTsKICAgICAgICAgaXQgKz0gMjsgLy8gSW5jcmVtZW50IHVwIHRvIHRoZSB2YWx1ZSBw
cm9maWxlci4KLSAgICAgICAgcHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMob3V0LCBsb2NhdGlvbiwg
c3R1YkluZm9zKTsKKyAgICAgICAgcHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMob3V0LCBsb2NhdGlv
biwgc3RhdHVzTWFwKTsKICAgICAgICAgZHVtcFZhbHVlUHJvZmlsaW5nKG91dCwgaXQsIGhhc1By
aW50ZWRQcm9maWxpbmcpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xMTA0LDcgKzExMDQs
NyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJ5dGVjb2RlCiAgICAgY2FzZSBv
cF9nZXRfYnlfaWRfdW5zZXQ6CiAgICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOiB7CiAgICAg
ICAgIHByaW50R2V0QnlJZE9wKG91dCwgbG9jYXRpb24sIGl0KTsKLSAgICAgICAgcHJpbnRHZXRC
eUlkQ2FjaGVTdGF0dXMob3V0LCBsb2NhdGlvbiwgc3R1YkluZm9zKTsKKyAgICAgICAgcHJpbnRH
ZXRCeUlkQ2FjaGVTdGF0dXMob3V0LCBsb2NhdGlvbiwgc3RhdHVzTWFwKTsKICAgICAgICAgZHVt
cFZhbHVlUHJvZmlsaW5nKG91dCwgaXQsIGhhc1ByaW50ZWRQcm9maWxpbmcpOwogICAgICAgICBi
cmVhazsKICAgICB9CkBAIC0xMTMwLDcgKzExMzAsNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJs
b2NrPjo6ZHVtcEJ5dGVjb2RlCiAgICAgfQogICAgIGNhc2Ugb3BfcHV0X2J5X2lkOiB7CiAgICAg
ICAgIHByaW50UHV0QnlJZE9wKG91dCwgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkIik7Ci0gICAg
ICAgIHByaW50UHV0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0dWJJbmZvcyk7Cisg
ICAgICAgIHByaW50UHV0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0YXR1c01hcCk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIG9wX3B1dF9ieV9pZF93aXRoX3RoaXM6
IHsKQEAgLTE0NzYsMTUgKzE0NzYsMTUgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1
bXBCeXRlY29kZQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBvcF9jYWxsOiB7Ci0g
ICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAiY2FsbCIsIER1bXBDYWNoZXMs
IGhhc1ByaW50ZWRQcm9maWxpbmcsIGNhbGxMaW5rSW5mb3MpOworICAgICAgICBwcmludENhbGxP
cChvdXQsIGxvY2F0aW9uLCBpdCwgImNhbGwiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmls
aW5nLCBzdGF0dXNNYXApOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBvcF90YWls
X2NhbGw6IHsKLSAgICAgICAgcHJpbnRDYWxsT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJ0YWlsX2Nh
bGwiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmlsaW5nLCBjYWxsTGlua0luZm9zKTsKKyAg
ICAgICAgcHJpbnRDYWxsT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJ0YWlsX2NhbGwiLCBEdW1wQ2Fj
aGVzLCBoYXNQcmludGVkUHJvZmlsaW5nLCBzdGF0dXNNYXApOwogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgY2FzZSBvcF9jYWxsX2V2YWw6IHsKLSAgICAgICAgcHJpbnRDYWxsT3Aob3V0LCBs
b2NhdGlvbiwgaXQsICJjYWxsX2V2YWwiLCBEb250RHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2Zp
bGluZywgY2FsbExpbmtJbmZvcyk7CisgICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24s
IGl0LCAiY2FsbF9ldmFsIiwgRG9udER1bXBDYWNoZXMsIGhhc1ByaW50ZWRQcm9maWxpbmcsIHN0
YXR1c01hcCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMTUyMyw3ICsxNTIzLDcgQEAg
dm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZQogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgY2FzZSBvcF9jb25zdHJ1Y3Q6IHsKLSAgICAgICAgcHJpbnRDYWxsT3Aob3V0
LCBsb2NhdGlvbiwgaXQsICJjb25zdHJ1Y3QiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmls
aW5nLCBjYWxsTGlua0luZm9zKTsKKyAgICAgICAgcHJpbnRDYWxsT3Aob3V0LCBsb2NhdGlvbiwg
aXQsICJjb25zdHJ1Y3QiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmlsaW5nLCBzdGF0dXNN
YXApOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBvcF9zdHJjYXQ6IHsKQEAgLTE3
NzgsMTAgKzE3NzgsMTAgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29k
ZQogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+
OjpkdW1wQnl0ZWNvZGUoQmxvY2sqIGJsb2NrLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCB0eXBl
bmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5z
dHJ1Y3Rpb24qJiBpdCwgY29uc3QgU3R1YkluZm9NYXAmIHN0dWJJbmZvcywgY29uc3QgQ2FsbExp
bmtJbmZvTWFwJiBjYWxsTGlua0luZm9zKQordm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1
bXBCeXRlY29kZShCbG9jayogYmxvY2ssIFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IHR5cGVuYW1l
IEJsb2NrOjpJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IHR5cGVuYW1lIEJsb2NrOjpJbnN0cnVj
dGlvbiomIGl0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQogewogICAgIEJ5dGVjb2Rl
RHVtcGVyIGR1bXBlcihibG9jaywgYmVnaW4pOwotICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0
LCBiZWdpbiwgaXQsIHN0dWJJbmZvcywgY2FsbExpbmtJbmZvcyk7CisgICAgZHVtcGVyLmR1bXBC
eXRlY29kZShvdXQsIGJlZ2luLCBpdCwgc3RhdHVzTWFwKTsKIH0KIAogdGVtcGxhdGU8Y2xhc3Mg
QmxvY2s+CkBAIC0xODkwLDcgKzE4OTAsNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6
ZHVtcFN0cmluZ1N3CiB9CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgotdm9pZCBCeXRlY29kZUR1
bXBlcjxCbG9jaz46OmR1bXBCbG9jayhCbG9jayogYmxvY2ssIGNvbnN0IHR5cGVuYW1lIEJsb2Nr
OjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBQcmludFN0cmVhbSYgb3V0LCBj
b25zdCBTdHViSW5mb01hcCYgc3R1YkluZm9zLCBjb25zdCBDYWxsTGlua0luZm9NYXAmIGNhbGxM
aW5rSW5mb3MpCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJsb2NrKEJsb2NrKiBi
bG9jaywgY29uc3QgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBpbnN0cnVj
dGlvbnMsIFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7
CiAgICAgc2l6ZV90IGluc3RydWN0aW9uQ291bnQgPSAwOwogCkBAIC0xOTEwLDcgKzE5MTAsNyBA
QCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJsb2NrKEJsCiAgICAgY29uc3QgYXV0
byogZW5kID0gaW5zdHJ1Y3Rpb25zLmVuZCgpOwogICAgIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPiBk
dW1wZXIoYmxvY2ssIGJlZ2luKTsKICAgICBmb3IgKGNvbnN0IGF1dG8qIGl0ID0gYmVnaW47IGl0
ICE9IGVuZDsgKytpdCkKLSAgICAgICAgZHVtcGVyLmR1bXBCeXRlY29kZShvdXQsIGJlZ2luLCBp
dCwgc3R1YkluZm9zLCBjYWxsTGlua0luZm9zKTsKKyAgICAgICAgZHVtcGVyLmR1bXBCeXRlY29k
ZShvdXQsIGJlZ2luLCBpdCwgc3RhdHVzTWFwKTsKIAogICAgIGR1bXBlci5kdW1wSWRlbnRpZmll
cnMob3V0KTsKICAgICBkdW1wZXIuZHVtcENvbnN0YW50cyhvdXQpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmgJKHJldmlzaW9uIDIz
MjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
NyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yNiw2ICsyNyw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkNhbGxMaW5rSW5mby5oIgorI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCiAjaW5jbHVkZSAiU3Ry
dWN0dXJlU3R1YkluZm8uaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zNyw4ICszOSw4IEBAIGNs
YXNzIEJ5dGVjb2RlRHVtcGVyIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIHR5cGVuYW1lIEJsb2Nr
OjpJbnN0cnVjdGlvbiBJbnN0cnVjdGlvbjsKIAotICAgIHN0YXRpYyB2b2lkIGR1bXBCeXRlY29k
ZShCbG9jayosIFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29u
c3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgU3R1YkluZm9NYXAmID0gU3R1YkluZm9NYXAoKSwg
Y29uc3QgQ2FsbExpbmtJbmZvTWFwJiA9IENhbGxMaW5rSW5mb01hcCgpKTsKLSAgICBzdGF0aWMg
dm9pZCBkdW1wQmxvY2soQmxvY2sqLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0
cnVjdGlvbnMmLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBTdHViSW5mb01hcCYgPSBTdHViSW5m
b01hcCgpLCBjb25zdCBDYWxsTGlua0luZm9NYXAmID0gQ2FsbExpbmtJbmZvTWFwKCkpOworICAg
IHN0YXRpYyB2b2lkIGR1bXBCeXRlY29kZShCbG9jayosIFByaW50U3RyZWFtJiBvdXQsIGNvbnN0
IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgSUNTdGF0
dXNNYXAmIHN0YXR1c01hcCA9IElDU3RhdHVzTWFwKCkpOworICAgIHN0YXRpYyB2b2lkIGR1bXBC
bG9jayhCbG9jayosIGNvbnN0IHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYs
IFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXAgPSBJQ1N0YXR1
c01hcCgpKTsKIAogcHJpdmF0ZToKICAgICBCeXRlY29kZUR1bXBlcihCbG9jayogYmxvY2ssIGNv
bnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbikKQEAgLTY5LDE0ICs3MSwxNCBAQCBw
cml2YXRlOgogICAgIHZvaWQgcHJpbnRDb25kaXRpb25hbEp1bXAoUHJpbnRTdHJlYW0mIG91dCwg
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBpbnQgbG9jYXRpb24s
IGNvbnN0IGNoYXIqIG9wKTsKICAgICB2b2lkIHByaW50Q29tcGFyZUp1bXAoUHJpbnRTdHJlYW0m
IG91dCwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBpbnQgbG9j
YXRpb24sIGNvbnN0IGNoYXIqIG9wKTsKICAgICB2b2lkIHByaW50R2V0QnlJZE9wKFByaW50U3Ry
ZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCk7Ci0gICAgdm9p
ZCBwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24s
IGNvbnN0IFN0dWJJbmZvTWFwJik7Ci0gICAgdm9pZCBwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhQ
cmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IFN0dWJJbmZvTWFwJik7Ci0gICAg
dm9pZCBwcmludEluQnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlv
biwgY29uc3QgU3R1YkluZm9NYXAmKTsKKyAgICB2b2lkIHByaW50R2V0QnlJZENhY2hlU3RhdHVz
KFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmKTsKKyAg
ICB2b2lkIHByaW50UHV0QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2Nh
dGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmKTsKKyAgICB2b2lkIHByaW50SW5CeUlkQ2FjaGVTdGF0
dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJQ1N0YXR1c01hcCYpOwog
ICAgIGVudW0gQ2FjaGVEdW1wTW9kZSB7IER1bXBDYWNoZXMsIERvbnREdW1wQ2FjaGVzIH07Ci0g
ICAgdm9pZCBwcmludENhbGxPcChQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0
IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IGNoYXIqIG9wLCBDYWNoZUR1bXBNb2RlLCBib29sJiBo
YXNQcmludGVkUHJvZmlsaW5nLCBjb25zdCBDYWxsTGlua0luZm9NYXAmKTsKKyAgICB2b2lkIHBy
aW50Q2FsbE9wKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rp
b24qJiBpdCwgY29uc3QgY2hhciogb3AsIENhY2hlRHVtcE1vZGUsIGJvb2wmIGhhc1ByaW50ZWRQ
cm9maWxpbmcsIGNvbnN0IElDU3RhdHVzTWFwJik7CiAgICAgdm9pZCBwcmludFB1dEJ5SWRPcChQ
cmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNv
bnN0IGNoYXIqIG9wKTsKICAgICB2b2lkIHByaW50TG9jYXRpb25PcEFuZFJlZ2lzdGVyT3BlcmFu
ZChQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQs
IGNvbnN0IGNoYXIqIG9wLCBpbnQgb3BlcmFuZCk7Ci0gICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJp
bnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlv
biomIGl0LCBjb25zdCBTdHViSW5mb01hcCYsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYpOworICAg
IHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiBi
ZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgSUNTdGF0dXNNYXAmKTsKIAogICAg
IHZvaWQgZHVtcFZhbHVlUHJvZmlsaW5nKFByaW50U3RyZWFtJiwgY29uc3QgSW5zdHJ1Y3Rpb24q
JiwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZyk7CiAgICAgdm9pZCBkdW1wQXJyYXlQcm9maWxp
bmcoUHJpbnRTdHJlYW0mLCBjb25zdCBJbnN0cnVjdGlvbiomLCBib29sJiBoYXNQcmludGVkUHJv
ZmlsaW5nKTsKQEAgLTg1LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkKiBhY3R1YWxQb2lu
dGVyRm9yKFNwZWNpYWw6OlBvaW50ZXIpIGNvbnN0OwogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICB2
b2lkIGR1bXBDYWxsTGlua1N0YXR1cyhQcmludFN0cmVhbSYsIHVuc2lnbmVkIGxvY2F0aW9uLCBj
b25zdCBDYWxsTGlua0luZm9NYXAmKTsKKyAgICB2b2lkIGR1bXBDYWxsTGlua1N0YXR1cyhQcmlu
dFN0cmVhbSYsIHVuc2lnbmVkIGxvY2F0aW9uLCBjb25zdCBJQ1N0YXR1c01hcCYpOwogI2VuZGlm
CiAKICAgICBCbG9jayogbV9ibG9jazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9DYWxsTGlua0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMzUy
LDEyICszNTIsNiBAQCBpbmxpbmUgQ29kZU9yaWdpbiBnZXRDYWxsTGlua0luZm9Db2RlT3JpCiAg
ICAgcmV0dXJuIGNhbGxMaW5rSW5mby5jb2RlT3JpZ2luKCk7CiB9CiAKLXR5cGVkZWYgSGFzaE1h
cDxDb2RlT3JpZ2luLCBDYWxsTGlua0luZm8qLCBDb2RlT3JpZ2luQXBwcm94aW1hdGVIYXNoPiBD
YWxsTGlua0luZm9NYXA7Ci0KLSNlbHNlIC8vIEVOQUJMRShKSVQpCi0KLXR5cGVkZWYgSGFzaE1h
cDxpbnQsIHZvaWQqPiBDYWxsTGlua0luZm9NYXA7Ci0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsTGlua1N0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzcsNyArNzcsOCBAQCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0
ZUZyCiB9CiAKIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAotICAg
IENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgY29uc3Qg
Q2FsbExpbmtJbmZvTWFwJiBtYXApCisgICAgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNp
Z25lZCBieXRlY29kZUluZGV4LCBjb25zdCBJQ1N0YXR1c01hcCYgbWFwLAorICAgIEV4aXRTaXRl
RGF0YSBleGl0U2l0ZURhdGEpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihwcm9m
aWxlZEJsb2NrLT5tX2xvY2spOwogICAgIApAQCAtODUsOSArODYsNyBAQCBDYWxsTGlua1N0YXR1
cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvCiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5k
ZXgpOwogICAgIFVOVVNFRF9QQVJBTShtYXApOwogI2lmIEVOQUJMRShERkdfSklUKQotICAgIEV4
aXRTaXRlRGF0YSBleGl0U2l0ZURhdGEgPSBjb21wdXRlRXhpdFNpdGVEYXRhKHByb2ZpbGVkQmxv
Y2ssIGJ5dGVjb2RlSW5kZXgpOwotICAgIAotICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZv
ID0gbWFwLmdldChDb2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgpKTsKKyAgICBDYWxsTGlua0luZm8q
IGNhbGxMaW5rSW5mbyA9IG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4KSkuY2FsbExp
bmtJbmZvOwogICAgIGlmICghY2FsbExpbmtJbmZvKSB7CiAgICAgICAgIGlmIChleGl0U2l0ZURh
dGEudGFrZXNTbG93UGF0aCkKICAgICAgICAgICAgIHJldHVybiB0YWtlc1Nsb3dQYXRoKCk7CkBA
IC0xMDcsMTEgKzEwNiwyMSBAQCBDYWxsTGlua1N0YXR1czo6RXhpdFNpdGVEYXRhIENhbGxMaW5r
U3RhCiAgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHByb2ZpbGVkQmxvY2stPnVu
bGlua2VkQ29kZUJsb2NrKCk7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxv
Y2stPm1fbG9jayk7CiAKLSAgICBleGl0U2l0ZURhdGEudGFrZXNTbG93UGF0aCA9Ci0gICAgICAg
IGNvZGVCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0
ZWNvZGVJbmRleCwgQmFkVHlwZSkpCi0gICAgICAgIHx8IGNvZGVCbG9jay0+aGFzRXhpdFNpdGUo
bG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkRXhlY3V0YWJs
ZSkpOwotICAgIGV4aXRTaXRlRGF0YS5iYWRGdW5jdGlvbiA9Ci0gICAgICAgIGNvZGVCbG9jay0+
aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwg
QmFkQ2VsbCkpOworICAgIGF1dG8gdGFrZXNTbG93UGF0aCA9IFsmXSAoRXhpdGluZ0lubGluZUtp
bmQgaW5saW5lS2luZCkgLT4gRXhpdEZsYWcgeworICAgICAgICByZXR1cm4gRXhpdEZsYWcoCisg
ICAgICAgICAgICBjb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4
aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZFR5cGUsIEV4aXRGcm9tQW55dGhpbmcsIGlubGluZUtp
bmQpKQorICAgICAgICAgICAgfHwgY29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6
RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRFeGVjdXRhYmxlLCBFeGl0RnJvbUFu
eXRoaW5nLCBpbmxpbmVLaW5kKSksCisgICAgICAgICAgICBpbmxpbmVLaW5kKTsKKyAgICB9Owor
ICAgIAorICAgIGF1dG8gYmFkRnVuY3Rpb24gPSBbJl0gKEV4aXRpbmdJbmxpbmVLaW5kIGlubGlu
ZUtpbmQpIC0+IGJvb2wgeworICAgICAgICByZXR1cm4gY29kZUJsb2NrLT5oYXNFeGl0U2l0ZShs
b2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRDZWxsLCBFeGl0
RnJvbUFueXRoaW5nLCBpbmxpbmVLaW5kKSk7CisgICAgfTsKKyAgICAKKyAgICBleGl0U2l0ZURh
dGEudGFrZXNTbG93UGF0aCB8PSB0YWtlc1Nsb3dQYXRoKEV4aXRGcm9tTm90SW5saW5lZCk7Cisg
ICAgZXhpdFNpdGVEYXRhLnRha2VzU2xvd1BhdGggfD0gdGFrZXNTbG93UGF0aChFeGl0RnJvbUlu
bGluZWQpOworICAgIGV4aXRTaXRlRGF0YS5iYWRGdW5jdGlvbiB8PSBiYWRGdW5jdGlvbihFeGl0
RnJvbU5vdElubGluZWQpOworICAgIGV4aXRTaXRlRGF0YS5iYWRGdW5jdGlvbiB8PSBiYWRGdW5j
dGlvbihFeGl0RnJvbUlubGluZWQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRC
bG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwpAQCAtMjI3LDgxICsyMzYs
NTEgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcgogCiBDYWxsTGlu
a1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKICAgICBjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImIGxvY2tlciwgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBDYWxsTGlua0luZm8m
IGNhbGxMaW5rSW5mbywKLSAgICBFeGl0U2l0ZURhdGEgZXhpdFNpdGVEYXRhKQorICAgIEV4aXRT
aXRlRGF0YSBleGl0U2l0ZURhdGEsIEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQpCiB7CiAg
ICAgQ2FsbExpbmtTdGF0dXMgcmVzdWx0ID0gY29tcHV0ZUZvcihsb2NrZXIsIHByb2ZpbGVkQmxv
Y2ssIGNhbGxMaW5rSW5mbyk7Ci0gICAgaWYgKGV4aXRTaXRlRGF0YS5iYWRGdW5jdGlvbikgewot
ICAgICAgICBpZiAocmVzdWx0LmlzQmFzZWRPblN0dWIoKSkgeworICAgIHJlc3VsdC5hY2NvdW50
Rm9yRXhpdHMoZXhpdFNpdGVkYXRhLCBpbmxpbmVLaW5kKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorI2VuZGlmCisKK3ZvaWQgQ2FsbExpbmtTdGF0dXM6OmFjY291bnRGb3JFeGl0cyhFeGl0U2l0
ZURhdGEgZXhpdFNpdGVEYXRhLCBFeGl0aW5nSW5saW5lS2luZCBpbmxpbmVLaW5kKQoreworICAg
IGlmIChleGl0U2l0ZURhdGEuYmFkRnVuY3Rpb24uaXNTZXQoaW5saW5lS2luZCkpIHsKKyAgICAg
ICAgaWYgKGlzQmFzZWRPblN0dWIoKSkgewogICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIHBv
bHltb3JwaGljIHN0dWIsIHRoZW4gaGF2aW5nIGFuIGV4aXQgc2l0ZSBpcyBub3QgcXVpdGUgc28g
dXNlZnVsLiBJbgogICAgICAgICAgICAgLy8gbW9zdCBjYXNlcywgdGhlIGluZm9ybWF0aW9uIGlu
IHRoZSBzdHViIGhhcyBoaWdoZXIgZmlkZWxpdHkuCi0gICAgICAgICAgICByZXN1bHQubWFrZUNs
b3N1cmVDYWxsKCk7CisgICAgICAgICAgICBtYWtlQ2xvc3VyZUNhbGwoKTsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIC8vIFdlIG1pZ2h0IG5vdCBoYXZlIGEgcG9seW1vcnBoaWMgc3R1
YiBmb3IgYW55IG51bWJlciBvZiByZWFzb25zLiBXaGVuIHRoaXMgaGFwcGVucywgd2UKICAgICAg
ICAgICAgIC8vIGFyZSBpbiBsZXNzIGNlcnRhaW4gdGVycml0b3J5LCBzbyBleGl0IHNpdGVzIG1l
YW4gYSBsb3QuCi0gICAgICAgICAgICByZXN1bHQubV9jb3VsZFRha2VTbG93UGF0aCA9IHRydWU7
CisgICAgICAgICAgICBtX2NvdWxkVGFrZVNsb3dQYXRoID0gdHJ1ZTsKICAgICAgICAgfQogICAg
IH0KLSAgICBpZiAoZXhpdFNpdGVEYXRhLnRha2VzU2xvd1BhdGgpCi0gICAgICAgIHJlc3VsdC5t
X2NvdWxkVGFrZVNsb3dQYXRoID0gdHJ1ZTsKICAgICAKLSAgICByZXR1cm4gcmVzdWx0OworICAg
IGlmIChleGl0U2l0ZURhdGEudGFrZXNTbG93UGF0aC5pc1NldChpbmxpbmVLaW5kKSkKKyAgICAg
ICAgbV9jb3VsZFRha2VTbG93UGF0aCA9IHRydWU7CiB9Ci0jZW5kaWYKIAotdm9pZCBDYWxsTGlu
a1N0YXR1czo6Y29tcHV0ZURGR1N0YXR1c2VzKAotICAgIENvZGVCbG9jayogZGZnQ29kZUJsb2Nr
LCBDYWxsTGlua1N0YXR1czo6Q29udGV4dE1hcCYgbWFwKQorQ2FsbExpbmtTdGF0dXMgQ2FsbExp
bmtTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4sCisgICAgY29uc3QgSUNTdGF0dXNNYXAmIGJhc2VsaW5lTWFwLCBj
b25zdCBJQ1N0YXR1c0NvbnRleHRTdGFjayYgb3B0aW1pemVkU3RhY2spCiB7Ci0jaWYgRU5BQkxF
KERGR19KSVQpCi0gICAgUkVMRUFTRV9BU1NFUlQoZGZnQ29kZUJsb2NrLT5qaXRUeXBlKCkgPT0g
SklUQ29kZTo6REZHSklUKTsKLSAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gZGZn
Q29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpOwotICAgIGZvciAoYXV0byBpdGVyID0gZGZnQ29kZUJs
b2NrLT5jYWxsTGlua0luZm9zQmVnaW4oKTsgISFpdGVyOyArK2l0ZXIpIHsKLSAgICAgICAgQ2Fs
bExpbmtJbmZvJiBpbmZvID0gKippdGVyOwotICAgICAgICBpZiAoaW5mby5pc0RpcmVjdCgpKSB7
Ci0gICAgICAgICAgICAvLyBJZiB0aGUgREZHIHdhcyBhYmxlIHRvIGdldCBhIGRpcmVjdCBjYWxs
IHRoZW4gcHJvYmFibHkgc28gd2lsbCB3ZS4gSG93ZXZlciwgdGhlcmUgaXMKLSAgICAgICAgICAg
IC8vIGEgcmVtb3RlIGNoYW5jZSB0aGF0IGl0J3MgYmFkIG5ld3MgdG8gbG9zZSBpbmZvcm1hdGlv
biBhYm91dCB3aGF0IHRoZSBERkcgZGlkLiBXZSdkCi0gICAgICAgICAgICAvLyBpZGVhbGx5IGxp
a2UgdG8ganVzdCBrbm93IHRoYXQgdGhlIERGRyBoYWQgZW1pdHRlZCBhIERpcmVjdENhbGwuCi0g
ICAgICAgICAgICBjb250aW51ZTsKKyAgICBFeGl0U2l0ZURhdGEgZXhpdFNpdGVEYXRhID0gY29t
cHV0ZUV4aXRTaXRlRGF0YShwcm9maWxlZEJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgp
OworICAgIGZvciAoY29uc3QgSUNTdGF0dXNDb250ZXh0JiBjb250ZXh0IDogb3B0aW1pemVkU3Rh
Y2spIHsKKyAgICAgICAgSUNTdGF0dXMgc3RhdHVzID0gY29udGV4dC5nZXQoY29kZU9yaWdpbik7
CisgICAgICAgIGlmIChzdGF0dXMuY2FsbExpbmtJbmZvKSB7CisgICAgICAgICAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKGNvbnRleHQub3B0aW1pemVkQ29kZUJsb2NrLT5tX2xvY2spOwor
ICAgICAgICAgICAgQ2FsbExpbmtTdGF0dXMgc3RhdHVzID0gY29tcHV0ZUZvcigKKyAgICAgICAg
ICAgICAgICBsb2NrZXIsIGNvbnRleHQub3B0aW1pemVkQ29kZUJsb2NrLCAqc3RhdHVzLmNhbGxM
aW5rSW5mbywgZXhpdFNpdGVEYXRhLAorICAgICAgICAgICAgICAgIGNvbnRleHQuaW5saW5lS2lu
ZChjb2RlT3JpZ2luKSk7CisgICAgICAgICAgICBpZiAoc3RhdHVzKQorICAgICAgICAgICAgICAg
IHJldHVybiBzdGF0dXM7CiAgICAgICAgIH0KLSAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
ID0gaW5mby5jb2RlT3JpZ2luKCk7Ci0gICAgICAgIAotICAgICAgICAvLyBDaGVjayBpZiB3ZSBo
YWQgYWxyZWFkeSBwcmV2aW91c2x5IG1hZGUgYSB0ZXJyaWJsZSBtaXN0YWtlIGluIHRoZSBGVEwg
Zm9yIHRoaXMKLSAgICAgICAgLy8gY29kZSBvcmlnaW4uIE5vdGUgdGhhdCB0aGlzIGlzIGFwcHJv
eGltYXRlIGJlY2F1c2Ugd2UgY291bGQgaGF2ZSBhIG1vbm92YXJpYW50Ci0gICAgICAgIC8vIGlu
bGluZSBpbiB0aGUgRlRMIHRoYXQgZW5kZWQgdXAgZmFpbGluZy4gV2Ugc2hvdWxkIGZpeCB0aGF0
IGF0IHNvbWUgcG9pbnQgYnkKLSAgICAgICAgLy8gaGF2aW5nIGRhdGEgc3RydWN0dXJlcyB0byB0
cmFjayB0aGUgY29udGV4dCBvZiBmcmVxdWVudCBleGl0cy4gVGhpcyBpcyBjdXJyZW50bHkKLSAg
ICAgICAgLy8gY2hhbGxlbmdpbmcgYmVjYXVzZSBpdCB3b3VsZCByZXF1aXJlIGNyZWF0aW5nIGEg
Q29kZU9yaWdpbi1iYXNlZCBkYXRhYmFzZSBpbgotICAgICAgICAvLyBiYXNlbGluZSBDb2RlQmxv
Y2tzLCBidXQgdGhvc2UgQ29kZUJsb2NrcyBkb24ndCByZWFsbHkgaGF2ZSBhIHBsYWNlIHRvIHB1
dCB0aGUKLSAgICAgICAgLy8gSW5saW5lQ2FsbEZyYW1lcy4KLSAgICAgICAgQ29kZUJsb2NrKiBj
dXJyZW50QmFzZWxpbmUgPQotICAgICAgICAgICAgYmFzZWxpbmVDb2RlQmxvY2tGb3JPcmlnaW5B
bmRCYXNlbGluZUNvZGVCbG9jayhjb2RlT3JpZ2luLCBiYXNlbGluZUNvZGVCbG9jayk7Ci0gICAg
ICAgIEV4aXRTaXRlRGF0YSBleGl0U2l0ZURhdGEgPSBjb21wdXRlRXhpdFNpdGVEYXRhKGN1cnJl
bnRCYXNlbGluZSwgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsKICAgICAgICAgCi0gICAgICAg
IHsKLSAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoZGZnQ29kZUJsb2NrLT5t
X2xvY2spOwotICAgICAgICAgICAgbWFwLmFkZChpbmZvLmNvZGVPcmlnaW4oKSwgY29tcHV0ZUZv
cihsb2NrZXIsIGRmZ0NvZGVCbG9jaywgaW5mbywgZXhpdFNpdGVEYXRhKSk7Ci0gICAgICAgIH0K
KyAgICAgICAgaWYgKHN0YXR1cy5jYWxsTGlua1N0YXR1cykKKyAgICAgICAgICAgIHJldHVybiAq
c3RhdHVzLmNhbGxMaW5rU3RhdHVzOwogICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGRm
Z0NvZGVCbG9jayk7Ci0jZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCi0gICAgCi0gICAgaWYgKENh
bGxMaW5rU3RhdHVzSW50ZXJuYWw6OnZlcmJvc2UpIHsKLSAgICAgICAgZGF0YUxvZygiQ29udGV4
dCBtYXA6XG4iKTsKLSAgICAgICAgQ29udGV4dE1hcDo6aXRlcmF0b3IgaXRlciA9IG1hcC5iZWdp
bigpOwotICAgICAgICBDb250ZXh0TWFwOjppdGVyYXRvciBlbmQgPSBtYXAuZW5kKCk7Ci0gICAg
ICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7Ci0gICAgICAgICAgICBkYXRhTG9nKCIg
ICAgIiwgaXRlci0+a2V5LCAiOlxuIik7Ci0gICAgICAgICAgICBkYXRhTG9nKCIgICAgICAgICIs
IGl0ZXItPnZhbHVlLCAiXG4iKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotQ2FsbExpbmtTdGF0
dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgQ29kZUJsb2NrKiBwcm9maWxlZEJs
b2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sCi0gICAgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBi
YXNlbGluZU1hcCwgY29uc3QgQ2FsbExpbmtTdGF0dXM6OkNvbnRleHRNYXAmIGRmZ01hcCkKLXsK
LSAgICBhdXRvIGl0ZXIgPSBkZmdNYXAuZmluZChjb2RlT3JpZ2luKTsKLSAgICBpZiAoaXRlciAh
PSBkZmdNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiBpdGVyLT52YWx1ZTsKICAgICAKICAgICBy
ZXR1cm4gY29tcHV0ZUZvcihwcm9maWxlZEJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgs
IGJhc2VsaW5lTWFwKTsKIH0KQEAgLTMyNyw2ICszMDYsMTUgQEAgdm9pZCBDYWxsTGlua1N0YXR1
czo6bWFrZUNsb3N1cmVDYWxsKCkKICAgICBtX3ZhcmlhbnRzID0gZGVzcGVjaWZpZWRWYXJpYW50
TGlzdChtX3ZhcmlhbnRzKTsKIH0KIAorYm9vbCBDYWxsTGlua1N0YXR1czo6ZmluYWxpemUoKQor
eworICAgIGZvciAoQ2FsbFZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKSB7CisgICAgICAg
IGlmICghdmFyaWFudC5maW5hbGl6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBDYWxsTGlua1N0YXR1czo6ZHVtcChQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIGlmICghaXNTZXQoKSkgewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHJldmlzaW9u
IDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVkZSAiQ2FsbFZhcmlh
bnQuaCIKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAiQ29uY3VycmVudEpTTG9j
ay5oIgorI2luY2x1ZGUgIkV4aXRGbGFnLmgiCisjaW5jbHVkZSAiSUNTdGF0dXNNYXAuaCIKICNp
bmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNjAsMzkgKzYyLDMy
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1
cyBjb21wdXRlRm9yKAotICAgICAgICBDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4
LCBjb25zdCBDYWxsTGlua0luZm9NYXAmKTsKLQogICAgIHN0cnVjdCBFeGl0U2l0ZURhdGEgewot
ICAgICAgICBib29sIHRha2VzU2xvd1BhdGggeyBmYWxzZSB9OwotICAgICAgICBib29sIGJhZEZ1
bmN0aW9uIHsgZmFsc2UgfTsKKyAgICAgICAgRXhpdEZsYWcgdGFrZXNTbG93UGF0aDsKKyAgICAg
ICAgRXhpdEZsYWcgYmFkRnVuY3Rpb247CiAgICAgfTsKICAgICBzdGF0aWMgRXhpdFNpdGVEYXRh
IGNvbXB1dGVFeGl0U2l0ZURhdGEoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7
CiAgICAgCisgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwg
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgY29uc3QgSUNTdGF0dXNNYXAmLCBFeGl0U2l0ZURhdGEp
OworCiAjaWYgRU5BQkxFKEpJVCkKICAgICAvLyBDb21wdXRlcyB0aGUgc3RhdHVzIGFzc3VtaW5n
IHRoYXQgd2UgbmV2ZXIgdG9vayBzbG93IHBhdGggYW5kIG5ldmVyIHByZXZpb3VzbHkKICAgICAv
LyBleGl0ZWQuCiAgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoY29uc3QgQ29u
Y3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKiwgQ2FsbExpbmtJbmZvJik7CisgICAgCisgICAg
Ly8gQ29tcHV0ZXMgdGhlIHN0YXR1cyBhY2NvdW50aW5nIGZvciBleGl0cy4KICAgICBzdGF0aWMg
Q2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcigKLSAgICAgICAgY29uc3QgQ29uY3VycmVudEpTTG9j
a2VyJiwgQ29kZUJsb2NrKiwgQ2FsbExpbmtJbmZvJiwgRXhpdFNpdGVEYXRhKTsKKyAgICAgICAg
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKiwgQ2FsbExpbmtJbmZvJiwgRXhp
dFNpdGVEYXRhLCBFeGl0aW5nSW5saW5lS2luZCA9IEV4aXRGcm9tQW55SW5saW5lS2luZCk7CiAj
ZW5kaWYKICAgICAKLSAgICB0eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdpbiwgQ2FsbExpbmtTdGF0
dXMsIENvZGVPcmlnaW5BcHByb3hpbWF0ZUhhc2g+IENvbnRleHRNYXA7Ci0gICAgCi0gICAgLy8g
Q29tcHV0ZXMgYWxsIG9mIHRoZSBzdGF0dXNlcyBvZiB0aGUgREZHIGNvZGUgYmxvY2suIERvZXNu
J3QgaW5jbHVkZSBzdGF0dXNlcyB0aGF0IGhhZAotICAgIC8vIG5vIGluZm9ybWF0aW9uLiBDdXJy
ZW50bHkgd2UgdXNlIHRoaXMgd2hlbiBjb21waWxpbmcgRlRMIGNvZGUsIHRvIGVuYWJsZSBwb2x5
dmFyaWFudAotICAgIC8vIGlubGluaW5nLgotICAgIHN0YXRpYyB2b2lkIGNvbXB1dGVERkdTdGF0
dXNlcyhDb2RlQmxvY2sqIGRmZ0NvZGVCbG9jaywgQ29udGV4dE1hcCYpOwotICAgIAotICAgIC8v
IEhlbHBlciB0aGF0IGZpcnN0IGNvbnN1bHRzIHRoZSBDb250ZXh0TWFwIGFuZCB0aGVuIGRvZXMg
Y29tcHV0ZUZvcigpLgogICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKAotICAg
ICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBjb25zdCBDYWxsTGlua0luZm9NYXAmLCBjb25z
dCBDb250ZXh0TWFwJik7CisgICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIGNvbnN0IElD
U3RhdHVzTWFwJiwgY29uc3QgSUNTdGF0dXNDb250ZXh0U3RhY2smKTsKICAgICAKICAgICB2b2lk
IHNldFByb3ZlbkNvbnN0YW50Q2FsbGVlKENhbGxWYXJpYW50KTsKICAgICAKICAgICBib29sIGlz
U2V0KCkgY29uc3QgeyByZXR1cm4gIW1fdmFyaWFudHMuaXNFbXB0eSgpIHx8IG1fY291bGRUYWtl
U2xvd1BhdGg7IH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFp
c1NldCgpOyB9CisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIGlz
U2V0KCk7IH0KICAgICAKICAgICBib29sIGNvdWxkVGFrZVNsb3dQYXRoKCkgY29uc3QgeyByZXR1
cm4gbV9jb3VsZFRha2VTbG93UGF0aDsgfQogICAgIApAQCAtMTEwLDYgKzEwNSw4IEBAIHB1Ymxp
YzoKICAgICAKICAgICB1bnNpZ25lZCBtYXhOdW1Bcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBt
X21heE51bUFyZ3VtZW50czsgfQogICAgIAorICAgIGJvb2wgZmluYWxpemUoKTsKKyAgICAKICAg
ICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKIHByaXZhdGU6CkBAIC0xMjEs
NiArMTE4LDggQEAgcHJpdmF0ZToKICAgICAgICAgY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwg
Q2FsbExpbmtJbmZvJik7CiAjZW5kaWYKICAgICAKKyAgICB2b2lkIGFjY291bnRGb3JFeGl0cyhF
eGl0U2l0ZURhdGEsIEV4aXRpbmdJbmxpbmVLaW5kKTsKKyAgICAKICAgICBDYWxsVmFyaWFudExp
c3QgbV92YXJpYW50czsKICAgICBib29sIG1fY291bGRUYWtlU2xvd1BhdGggeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9pc1Byb3ZlZCB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzEsNiArMzEsMTMgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2Jvb2wgQ2FsbFZh
cmlhbnQ6OmZpbmFsaXplKCkKK3sKKyAgICBpZiAobV9jYWxsZWUgJiYgIUhlYXA6OmlzTWFya2Vk
KG1fY2FsbGVlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQor
CiB2b2lkIENhbGxWYXJpYW50OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAg
aWYgKCEqdGhpcykgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxW
YXJpYW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxWYXJpYW50LmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsVmFyaWFudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzNiw2ICsxMzYsOCBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICAKKyAgICBib29s
IGZpbmFsaXplKCk7CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0
OwogICAgIAogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9u
IDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsMjQgKzIzOCwyMCBAQCB2b2lkIENvZGVCbG9jazo6ZHVt
cEJ5dGVjb2RlKCkKIAogdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYg
b3V0KQogewotICAgIFN0dWJJbmZvTWFwIHN0dWJJbmZvczsKLSAgICBDYWxsTGlua0luZm9NYXAg
Y2FsbExpbmtJbmZvczsKLSAgICBnZXRTdHViSW5mb01hcChzdHViSW5mb3MpOwotICAgIGdldENh
bGxMaW5rSW5mb01hcChjYWxsTGlua0luZm9zKTsKLSAgICBCeXRlY29kZUR1bXBlcjxDb2RlQmxv
Y2s+OjpkdW1wQmxvY2sodGhpcywgaW5zdHJ1Y3Rpb25zKCksIG91dCwgc3R1YkluZm9zLCBjYWxs
TGlua0luZm9zKTsKKyAgICBJQ1N0YXR1c01hcCBzdGF0dXNNYXA7CisgICAgZ2V0SUNTdGF0dXNN
YXAoc3RhdHVzTWFwKTsKKyAgICBCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wQmxvY2so
dGhpcywgaW5zdHJ1Y3Rpb25zKCksIG91dCwgc3RhdHVzTWFwKTsKIH0KIAotdm9pZCBDb2RlQmxv
Y2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiogYmVn
aW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiBzdHViSW5mb3Ms
IGNvbnN0IENhbGxMaW5rSW5mb01hcCYgY2FsbExpbmtJbmZvcykKK3ZvaWQgQ29kZUJsb2NrOjpk
dW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBj
b25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQogewot
ICAgIEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBCeXRlY29kZSh0aGlzLCBvdXQsIGJl
Z2luLCBpdCwgc3R1YkluZm9zLCBjYWxsTGlua0luZm9zKTsKKyAgICBCeXRlY29kZUR1bXBlcjxD
b2RlQmxvY2s+OjpkdW1wQnl0ZWNvZGUodGhpcywgb3V0LCBiZWdpbiwgaXQsIHN0YXR1c01hcCk7
CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCi0gICAgUHJpbnRTdHJlYW0mIG91
dCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsCi0gICAgY29uc3QgU3R1YkluZm9NYXAmIHN0dWJJ
bmZvcywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBjYWxsTGlua0luZm9zKQordm9pZCBDb2RlQmxv
Y2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBjb25zdCBJbnN0cnVjdGlv
biogaXQgPSAmaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdOwotICAgIGR1bXBCeXRlY29k
ZShvdXQsIGluc3RydWN0aW9ucygpLmJlZ2luKCksIGl0LCBzdHViSW5mb3MsIGNhbGxMaW5rSW5m
b3MpOworICAgIGR1bXBCeXRlY29kZShvdXQsIGluc3RydWN0aW9ucygpLmJlZ2luKCksIGl0LCBz
dGF0dXNNYXApOwogfQogCiAjZGVmaW5lIEZPUl9FQUNIX01FTUJFUl9WRUNUT1IobWFjcm8pIFwK
QEAgLTExNjYsNiArMTE2Miw5IEBAIHZvaWQgQ29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9u
cyhjb24KICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5n
SklUKGppdFR5cGUoKSkpIHsKICAgICAgICAgREZHOjpDb21tb25EYXRhKiBkZmdDb21tb24gPSBt
X2ppdENvZGUtPmRmZ0NvbW1vbigpOworICAgICAgICAKKyAgICAgICAgZGZnQ29tbW9uLT5yZWNv
cmRlZFN0YXR1c2VzLm1hcmtJZkNoZWFwKHZpc2l0b3IpOworICAgICAgICAKICAgICAgICAgZm9y
IChhdXRvJiB3ZWFrUmVmZXJlbmNlIDogZGZnQ29tbW9uLT53ZWFrU3RydWN0dXJlUmVmZXJlbmNl
cykKICAgICAgICAgICAgIHdlYWtSZWZlcmVuY2UtPm1hcmtJZkNoZWFwKHZpc2l0b3IpOwogCkBA
IC0xMzk3LDU3ICsxMzk2LDQzIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9u
YWxseSgKICAgICAgICAgZmluYWxpemVCYXNlbGluZUpJVElubGluZUNhY2hlcygpOwogI2VuZGlm
CiAKLSAgICBWTTo6U3BhY2VBbmRGaW5hbGl6ZXJTZXQ6OmZpbmFsaXplclNldEZvcigqc3Vic3Bh
Y2UoKSkucmVtb3ZlKHRoaXMpOwotfQotCi12b2lkIENvZGVCbG9jazo6Z2V0U3R1YkluZm9NYXAo
Y29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgU3R1YkluZm9NYXAmIHJlc3VsdCkKLXsKLSNpZiBF
TkFCTEUoSklUKQotICAgIGlmIChKSVRDb2RlOjppc0pJVChqaXRUeXBlKCkpKQotICAgICAgICB0
b0hhc2hNYXAobV9zdHViSW5mb3MsIGdldFN0cnVjdHVyZVN0dWJJbmZvQ29kZU9yaWdpbiwgcmVz
dWx0KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHJlc3VsdCk7Ci0jZW5kaWYKLX0KLQotdm9p
ZCBDb2RlQmxvY2s6OmdldFN0dWJJbmZvTWFwKFN0dWJJbmZvTWFwJiByZXN1bHQpCi17Ci0gICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIGdldFN0dWJJbmZvTWFwKGxv
Y2tlciwgcmVzdWx0KTsKLX0KLQotdm9pZCBDb2RlQmxvY2s6OmdldENhbGxMaW5rSW5mb01hcChj
b25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDYWxsTGlua0luZm9NYXAmIHJlc3VsdCkKLXsKLSNp
ZiBFTkFCTEUoSklUKQotICAgIGlmIChKSVRDb2RlOjppc0pJVChqaXRUeXBlKCkpKQotICAgICAg
ICB0b0hhc2hNYXAobV9jYWxsTGlua0luZm9zLCBnZXRDYWxsTGlua0luZm9Db2RlT3JpZ2luLCBy
ZXN1bHQpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKLSNlbmRpZgotfQorICAg
IGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0VHlwZSgpKSkgeworICAgICAgICBERkc6
OkNvbW1vbkRhdGEqIGRmZ0NvbW1vbiA9IG1faml0Q29kZS0+ZGZnQ29tbW9uKCk7CisgICAgICAg
IGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5maW5hbGl6ZSgpOworICAgIH0KIAotdm9pZCBD
b2RlQmxvY2s6OmdldENhbGxMaW5rSW5mb01hcChDYWxsTGlua0luZm9NYXAmIHJlc3VsdCkKLXsK
LSAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgZ2V0Q2FsbExpbmtJ
bmZvTWFwKGxvY2tlciwgcmVzdWx0KTsKKyAgICBWTTo6U3BhY2VBbmRGaW5hbGl6ZXJTZXQ6OmZp
bmFsaXplclNldEZvcigqc3Vic3BhY2UoKSkucmVtb3ZlKHRoaXMpOwogfQogCi12b2lkIENvZGVC
bG9jazo6Z2V0QnlWYWxJbmZvTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5VmFsSW5m
b01hcCYgcmVzdWx0KQordm9pZCBDb2RlQmxvY2s6OmdldElDU3RhdHVzTWFwKGNvbnN0IENvbmN1
cnJlbnRKU0xvY2tlciYsIElDU3RhdHVzTWFwJiByZXN1bHQpCiB7CiAjaWYgRU5BQkxFKEpJVCkK
ICAgICBpZiAoSklUQ29kZTo6aXNKSVQoaml0VHlwZSgpKSkgewotICAgICAgICBmb3IgKGF1dG8q
IGJ5VmFsSW5mbyA6IG1fYnlWYWxJbmZvcykKLSAgICAgICAgICAgIHJlc3VsdC5hZGQoQ29kZU9y
aWdpbihieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXgpLCBieVZhbEluZm8pOworICAgICAgICBmb3Ig
KFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA6IG1fc3R1YkluZm9zKQorICAgICAgICAgICAg
cmVzdWx0LmFkZChzdHViSW5mby0+Y29kZU9yaWdpbiwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZh
bHVlLnN0dWJJbmZvID0gc3R1YkluZm87CisgICAgICAgIGZvciAoQ2FsbExpbmtJbmZvKiBjYWxs
TGlua0luZm8gOiBtX2NhbGxMaW5rSW5mb3MpCisgICAgICAgICAgICByZXN1bHQuYWRkKGNhbGxM
aW5rSW5mby0+Y29kZU9yaWdpbigpLCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUuY2FsbExp
bmtJbmZvID0gY2FsbExpbmtJbmZvOworICAgICAgICBmb3IgKEJ5VmFsSW5mbyogYnlWYWxJbmZv
IDogbV9iYWxWYWxJbmZvcykKKyAgICAgICAgICAgIHJlc3VsdC5hZGQoQ29kZU9yaWdpbihieVZh
bEluZm8tPmJ5dGVjb2RlSW5kZXgpLCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUuYnlWYWxJ
bmZvID0gYnlWYWxJbmZvOworICAgICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGpp
dFR5cGUoKSkpIHsKKyAgICAgICAgICAgIERGRzo6Q29tbW9uRGF0YSogZGZnQ29tbW9uID0gbV9q
aXRDb2RlLT5kZmdDb21tb24oKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcGFpciA6IGRmZ0Nv
bW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5jYWxscykKKyAgICAgICAgICAgICAgICByZXN1bHQuYWRk
KHBhaXIuZmlyc3QsIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52YWx1ZS5jYWxsU3RhdHVzID0gcGFp
ci5zZWNvbmQuZ2V0KCk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBkZmdDb21tb24t
PnJlY29yZGVkU3RhdHVzZXMuZ2V0cykKKyAgICAgICAgICAgICAgICByZXN1bHQuYWRkKHBhaXIu
Zmlyc3QsIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52YWx1ZS5nZXRTdGF0dXMgPSBwYWlyLnNlY29u
ZC5nZXQoKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcGFpciA6IGRmZ0NvbW1vbi0+cmVjb3Jk
ZWRTdGF0dXNlcy5wdXRzKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQocGFpci5maXJzdCwg
SUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLnB1dFN0YXR1cyA9IHBhaXIuc2Vjb25kLmdldCgp
OworICAgICAgICB9CiAgICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKICNl
bmRpZgogfQogCi12b2lkIENvZGVCbG9jazo6Z2V0QnlWYWxJbmZvTWFwKEJ5VmFsSW5mb01hcCYg
cmVzdWx0KQordm9pZCBDb2RlQmxvY2s6OmdldElDU3RhdHVzTWFwKElDU3RhdHVzTWFwJiByZXN1
bHQpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIGdldEJ5
VmFsSW5mb01hcChsb2NrZXIsIHJlc3VsdCk7CisgICAgZ2V0SUNTdGF0dXNNYXAobG9ja2VyLCBy
ZXN1bHQpOwogfQogCiAjaWYgRU5BQkxFKEpJVCkKQEAgLTE1MTQsNyArMTQ5OSw3IEBAIHZvaWQg
Q29kZUJsb2NrOjpyZXNldEpJVERhdGEoKQogICAgIAogICAgIC8vIFdlIGNhbiBjbGVhciB0aGVz
ZSBiZWNhdXNlIG5vIG90aGVyIHRocmVhZCB3aWxsIGhhdmUgcmVmZXJlbmNlcyB0byBhbnkgc3R1
YiBpbmZvcywgY2FsbAogICAgIC8vIGxpbmsgaW5mb3MsIG9yIGJ5IHZhbCBpbmZvcyBpZiB3ZSBk
b24ndCBoYXZlIEpJVCBjb2RlLiBBdHRlbXB0cyB0byBxdWVyeSB0aGVzZSBkYXRhCi0gICAgLy8g
c3RydWN0dXJlcyB1c2luZyB0aGUgY29uY3VycmVudCBBUEkgKGdldFN0dWJJbmZvTWFwIGFuZCBm
cmllbmRzKSB3aWxsIHJldHVybiBub3RoaW5nIGlmIHdlCisgICAgLy8gc3RydWN0dXJlcyB1c2lu
ZyB0aGUgY29uY3VycmVudCBBUEkgKGdldElDU3RhdHVzTWFwIGFuZCBmcmllbmRzKSB3aWxsIHJl
dHVybiBub3RoaW5nIGlmIHdlCiAgICAgLy8gZG9uJ3QgaGF2ZSBKSVQgY29kZS4KICAgICBtX3N0
dWJJbmZvcy5jbGVhcigpOwogICAgIG1fY2FsbExpbmtJbmZvcy5jbGVhcigpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjMyMjI3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiRXhwcmVzc2lvblJhbmdlSW5mby5o
IgogI2luY2x1ZGUgIkZ1bmN0aW9uRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIkhhbmRsZXJJbmZv
LmgiCisjaW5jbHVkZSAiSUNTdGF0dXNNYXAuaCIKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgog
I2luY2x1ZGUgIkpJVENvZGUuaCIKICNpbmNsdWRlICJKSVRDb2RlTWFwLmgiCkBAIC05Niw4ICs5
Nyw2IEBAIGVudW0gY2xhc3MgQWNjZXNzVHlwZSA6IGludDhfdDsKIAogc3RydWN0IEFyaXRoUHJv
ZmlsZTsKIAotdHlwZWRlZiBIYXNoTWFwPENvZGVPcmlnaW4sIFN0cnVjdHVyZVN0dWJJbmZvKiwg
Q29kZU9yaWdpbkFwcHJveGltYXRlSGFzaD4gU3R1YkluZm9NYXA7Ci0KIGVudW0gUmVvcHRpbWl6
YXRpb25Nb2RlIHsgRG9udENvdW50UmVvcHRpbWl6YXRpb24sIENvdW50UmVvcHRpbWl6YXRpb24g
fTsKIAogY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CkBAIC0xOTYsOCArMTk1LDgg
QEAgcHVibGljOgogCiAgICAgdm9pZCBkdW1wQnl0ZWNvZGUoKTsKICAgICB2b2lkIGR1bXBCeXRl
Y29kZShQcmludFN0cmVhbSYpOwotICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBv
dXQsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29u
c3QgU3R1YkluZm9NYXAmID0gU3R1YkluZm9NYXAoKSwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiA9
IENhbGxMaW5rSW5mb01hcCgpKTsKLSAgICB2b2lkIGR1bXBCeXRlY29kZShQcmludFN0cmVhbSYg
b3V0LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgU3R1YkluZm9NYXAmID0gU3R1Yklu
Zm9NYXAoKSwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiA9IENhbGxMaW5rSW5mb01hcCgpKTsKKyAg
ICB2b2lkIGR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiog
YmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJiA9IElDU3Rh
dHVzTWFwKCkpOworICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBJQ1N0YXR1c01hcCYgPSBJQ1N0YXR1c01hcCgpKTsK
IAogICAgIHZvaWQgZHVtcEV4Y2VwdGlvbkhhbmRsZXJzKFByaW50U3RyZWFtJik7CiAgICAgdm9p
ZCBwcmludFN0cnVjdHVyZXMoUHJpbnRTdHJlYW0mLCBjb25zdCBJbnN0cnVjdGlvbiopOwpAQCAt
MjM3LDE0ICsyMzYsOCBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBi
eXRlY29kZU9mZnNldEZyb21DYWxsU2l0ZUluZGV4KENhbGxTaXRlSW5kZXgpOwogCi0gICAgdm9p
ZCBnZXRTdHViSW5mb01hcChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBTdHViSW5mb01hcCYg
cmVzdWx0KTsKLSAgICB2b2lkIGdldFN0dWJJbmZvTWFwKFN0dWJJbmZvTWFwJiByZXN1bHQpOwot
ICAgIAotICAgIHZvaWQgZ2V0Q2FsbExpbmtJbmZvTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tl
ciYsIENhbGxMaW5rSW5mb01hcCYgcmVzdWx0KTsKLSAgICB2b2lkIGdldENhbGxMaW5rSW5mb01h
cChDYWxsTGlua0luZm9NYXAmIHJlc3VsdCk7Ci0KLSAgICB2b2lkIGdldEJ5VmFsSW5mb01hcChj
b25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBCeVZhbEluZm9NYXAmIHJlc3VsdCk7Ci0gICAgdm9p
ZCBnZXRCeVZhbEluZm9NYXAoQnlWYWxJbmZvTWFwJiByZXN1bHQpOworICAgIHZvaWQgZ2V0SUNT
dGF0dXNNYXAoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgSUNTdGF0dXNNYXAmIHJlc3VsdCk7
CisgICAgdm9pZCBnZXRJQ1N0YXR1c01hcChJQ1N0YXR1c01hcCYgcmVzdWx0KTsKICAgICAKICNp
ZiBFTkFCTEUoSklUKQogICAgIEpJVEFkZElDKiBhZGRKSVRBZGRJQyhBcml0aFByb2ZpbGUqLCBJ
bnN0cnVjdGlvbiopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVP
cmlnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlT3JpZ2luLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDYsNyArNDYsNyBA
QCB1bnNpZ25lZCBDb2RlT3JpZ2luOjppbmxpbmVEZXB0aCgpIGNvbnN0CiAgICAgcmV0dXJuIGlu
bGluZURlcHRoRm9yQ2FsbEZyYW1lKGlubGluZUNhbGxGcmFtZSk7CiB9CiAKLWJvb2wgQ29kZU9y
aWdpbjo6aXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhjb25zdCBDb2RlT3JpZ2luJiBvdGhlcikgY29u
c3QKK2Jvb2wgQ29kZU9yaWdpbjo6aXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhjb25zdCBDb2RlT3Jp
Z2luJiBvdGhlciwgQ29kZUJsb2NrKiB0ZXJtaW5hbCkgY29uc3QKIHsKICAgICBDb2RlT3JpZ2lu
IGEgPSAqdGhpczsKICAgICBDb2RlT3JpZ2luIGIgPSBvdGhlcjsKQEAgLTY4LDEwICs2OCwxMyBA
QCBib29sIENvZGVPcmlnaW46OmlzQXBwcm94aW1hdGVseUVxdWFsVG8oCiAgICAgICAgIGlmIChh
LmJ5dGVjb2RlSW5kZXggIT0gYi5ieXRlY29kZUluZGV4KQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAKLSAgICAgICAgaWYgKCghIWEuaW5saW5lQ2FsbEZyYW1lKSAhPSAoISFi
LmlubGluZUNhbGxGcmFtZSkpCisgICAgICAgIGJvb2wgYUhhc0lubGluZUNhbGxGcmFtZSA9ICEh
YS5pbmxpbmVDYWxsRnJhbWUKKyAgICAgICAgICAgICYmIGEuaW5saW5lQ2FsbEZyYW1lLT5iYXNl
bGluZUNvZGVCbG9jay5nZXQoKSAhPSB0ZXJtaW5hbDsKKyAgICAgICAgYm9vbCBiSGFzSW5saW5l
Q2FsbEZyYW1lID0gISFiLmlubGluZUNhbGxGcmFtZTsKKyAgICAgICAgaWYgKGFIYXNJbmxpbmVD
YWxsRnJhbWUgIT0gYkhhc0lubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgCi0gICAgICAgIGlmICghYS5pbmxpbmVDYWxsRnJhbWUpCisgICAgICAgIGlm
ICghYUhhc0lubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICAKICAgICAgICAgaWYgKGEuaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay5nZXQo
KSAhPSBiLmlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkpCkBAIC04Miw3
ICs4NSw3IEBAIGJvb2wgQ29kZU9yaWdpbjo6aXNBcHByb3hpbWF0ZWx5RXF1YWxUbygKICAgICB9
CiB9CiAKLXVuc2lnbmVkIENvZGVPcmlnaW46OmFwcHJveGltYXRlSGFzaCgpIGNvbnN0Cit1bnNp
Z25lZCBDb2RlT3JpZ2luOjphcHByb3hpbWF0ZUhhc2goQ29kZUJsb2NrKiB0ZXJtaW5hbCkgY29u
c3QKIHsKICAgICBpZiAoIWlzU2V0KCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtOTcsNiArMTAw
LDkgQEAgdW5zaWduZWQgQ29kZU9yaWdpbjo6YXBwcm94aW1hdGVIYXNoKCkgYwogICAgICAgICBp
ZiAoIWNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQogICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAgICAgCisgICAgICAgIGlmIChjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+YmFz
ZWxpbmVDb2RlQmxvY2suZ2V0KCkgPT0gdGVybWluYWwpCisgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgICAgICAKICAgICAgICAgcmVzdWx0ICs9IFdURjo6UHRySGFzaDxKU0NlbGwqPjo6
aGFzaChjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkp
OwogICAgICAgICAKICAgICAgICAgY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZy
YW1lLT5kaXJlY3RDYWxsZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZU9yaWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlT3JpZ2luLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlT3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05NCw5ICs5NCw5IEBA
IHN0cnVjdCBDb2RlT3JpZ2luIHsKICAgICAKICAgICAvLyBUaGlzIGNoZWNrcyBpZiB0aGUgdHdv
IGNvZGUgb3JpZ2lucyBjb3JyZXNwb25kIHRvIHRoZSBzYW1lIHN0YWNrIHRyYWNlIHNuaXBwZXRz
LAogICAgIC8vIGJ1dCBpZ25vcmUgd2hldGhlciB0aGUgSW5saW5lQ2FsbEZyYW1lJ3MgYXJlIGlk
ZW50aWNhbC4KLSAgICBib29sIGlzQXBwcm94aW1hdGVseUVxdWFsVG8oY29uc3QgQ29kZU9yaWdp
biYgb3RoZXIpIGNvbnN0OworICAgIGJvb2wgaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhjb25zdCBD
b2RlT3JpZ2luJiBvdGhlciwgQ29kZUJsb2NrKiB0ZXJtaW5hbCA9IG51bGxwdHIpIGNvbnN0Owog
ICAgIAotICAgIHVuc2lnbmVkIGFwcHJveGltYXRlSGFzaCgpIGNvbnN0OworICAgIHVuc2lnbmVk
IGFwcHJveGltYXRlSGFzaChDb2RlQmxvY2sqIHRlcm1pbmFsID0gbnVsbHB0cikgY29uc3Q7CiAK
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rpb24+CiAgICAgdm9pZCB3YWxrVXBJbmxpbmVT
dGFjayhjb25zdCBGdW5jdGlvbiYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0RGR0V4aXRQcm9maWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Myw4ICs0MywxMCBAQCBFeGl0UHJvZmlsZTo6fkV4aXRQcm9maWxlKCkgeyB9CiAK
IGJvb2wgRXhpdFByb2ZpbGU6OmFkZChDb2RlQmxvY2sqIG93bmVyLCBjb25zdCBGcmVxdWVudEV4
aXRTaXRlJiBzaXRlKQogeworICAgIFJFTEVBU0VfQVNTRVJUKHNpdGUuaml0VHlwZSgpICE9IEV4
aXRGcm9tQW55dGhpbmcpOworICAgIFJFTEVBU0VfQVNTRVJUKHNpdGUuaW5saW5lS2luZCgpICE9
IEV4aXRGcm9tQW55SW5saW5lS2luZCk7CisKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2Vy
KG93bmVyLT51bmxpbmtlZENvZGVCbG9jaygpLT5tX2xvY2spOwotICAgIEFTU0VSVChzaXRlLmpp
dFR5cGUoKSAhPSBFeGl0RnJvbUFueXRoaW5nKTsKIAogICAgIENPREVCTE9DS19MT0dfRVZFTlQo
b3duZXIsICJmcmVxdWVudEV4aXQiLCAoc2l0ZSkpOwogICAgIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgJKHJldmlzaW9uIDIzMjIy
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ29uY3Vy
cmVudEpTTG9jay5oIgogI2luY2x1ZGUgIkV4aXRLaW5kLmgiCisjaW5jbHVkZSAiRXhpdGluZ0lu
bGluZUtpbmQuaCIKICNpbmNsdWRlICJFeGl0aW5nSklUVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNDEsNiArNDIsNyBAQCBwdWJs
aWM6CiAgICAgICAgIDogbV9ieXRlY29kZU9mZnNldCgwKSAvLyAwID0gZW1wdHkgdmFsdWUKICAg
ICAgICAgLCBtX2tpbmQoRXhpdEtpbmRVbnNldCkKICAgICAgICAgLCBtX2ppdFR5cGUoRXhpdEZy
b21Bbnl0aGluZykKKyAgICAgICAgLCBtX2lubGluZUtpbmQoRXhpdEZyb21BbnlJbmxpbmVLaW5k
KQogICAgIHsKICAgICB9CiAgICAgCkBAIC00OCwxMyArNTAsMTUgQEAgcHVibGljOgogICAgICAg
ICA6IG1fYnl0ZWNvZGVPZmZzZXQoMSkgLy8gMSA9IGRlbGV0ZWQgdmFsdWUKICAgICAgICAgLCBt
X2tpbmQoRXhpdEtpbmRVbnNldCkKICAgICAgICAgLCBtX2ppdFR5cGUoRXhpdEZyb21Bbnl0aGlu
ZykKKyAgICAgICAgLCBtX2lubGluZUtpbmQoRXhpdEZyb21BbnlJbmxpbmVLaW5kKQogICAgIHsK
ICAgICB9CiAgICAgCi0gICAgZXhwbGljaXQgRnJlcXVlbnRFeGl0U2l0ZSh1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCwgRXhpdEtpbmQga2luZCwgRXhpdGluZ0pJVFR5cGUgaml0VHlwZSA9IEV4aXRG
cm9tQW55dGhpbmcpCisgICAgZXhwbGljaXQgRnJlcXVlbnRFeGl0U2l0ZSh1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCwgRXhpdEtpbmQga2luZCwgRXhpdGluZ0pJVFR5cGUgaml0VHlwZSA9IEV4aXRG
cm9tQW55dGhpbmcsIEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQgPSBFeGl0RnJvbUFueUlu
bGluZUtpbmQpCiAgICAgICAgIDogbV9ieXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkKICAg
ICAgICAgLCBtX2tpbmQoa2luZCkKICAgICAgICAgLCBtX2ppdFR5cGUoaml0VHlwZSkKKyAgICAg
ICAgLCBtX2lubGluZUtpbmQoaW5saW5lS2luZCkKICAgICB7CiAgICAgICAgIGlmIChtX2tpbmQg
PT0gQXJndW1lbnRzRXNjYXBlZCkgewogICAgICAgICAgICAgLy8gQ291bnQgdGhpcyBvbmUgZ2xv
YmFsbHkuIEl0IGRvZXNuJ3QgbWF0dGVyIHdoZXJlIGluIHRoZSBjb2RlIGJsb2NrIHRoZSBhcmd1
bWVudHMgZXhjYXBlZDsKQEAgLTY1LDEwICs2OSwxMSBAQCBwdWJsaWM6CiAgICAgCiAgICAgLy8g
VXNlIHRoaXMgY29uc3RydWN0b3IgaWYgeW91IHdpc2ggZm9yIHRoZSBleGl0IHNpdGUgdG8gYmUg
Y291bnRlZCBnbG9iYWxseSB3aXRoaW4gaXRzCiAgICAgLy8gY29kZSBibG9jay4KLSAgICBleHBs
aWNpdCBGcmVxdWVudEV4aXRTaXRlKEV4aXRLaW5kIGtpbmQsIEV4aXRpbmdKSVRUeXBlIGppdFR5
cGUgPSBFeGl0RnJvbUFueXRoaW5nKQorICAgIGV4cGxpY2l0IEZyZXF1ZW50RXhpdFNpdGUoRXhp
dEtpbmQga2luZCwgRXhpdGluZ0pJVFR5cGUgaml0VHlwZSA9IEV4aXRGcm9tQW55dGhpbmcsIEV4
aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQgPSBFeGl0RnJvbUFueUlubGluZUtpbmQpCiAgICAg
ICAgIDogbV9ieXRlY29kZU9mZnNldCgwKQogICAgICAgICAsIG1fa2luZChraW5kKQogICAgICAg
ICAsIG1faml0VHlwZShqaXRUeXBlKQorICAgICAgICAsIG1faW5saW5lS2luZChpbmxpbmVLaW5k
KQogICAgIHsKICAgICB9CiAgICAgCkBAIC04MSw3ICs4Niw4IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIHJldHVybiBtX2J5dGVjb2RlT2Zmc2V0ID09IG90aGVyLm1fYnl0ZWNvZGVPZmZzZXQK
ICAgICAgICAgICAgICYmIG1fa2luZCA9PSBvdGhlci5tX2tpbmQKLSAgICAgICAgICAgICYmIG1f
aml0VHlwZSA9PSBvdGhlci5tX2ppdFR5cGU7CisgICAgICAgICAgICAmJiBtX2ppdFR5cGUgPT0g
b3RoZXIubV9qaXRUeXBlCisgICAgICAgICAgICAmJiBtX2lubGluZUtpbmQgPT0gb3RoZXIubV9p
bmxpbmVLaW5kOwogICAgIH0KICAgICAKICAgICBib29sIHN1YnN1bWVzKGNvbnN0IEZyZXF1ZW50
RXhpdFNpdGUmIG90aGVyKSBjb25zdApAQCAtOTAsMTkgKzk2LDI0IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKG1fa2luZCAhPSBvdGhlci5tX2tpbmQp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChtX2ppdFR5cGUgPT0gRXhp
dEZyb21Bbnl0aGluZykKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICByZXR1cm4g
bV9qaXRUeXBlID09IG90aGVyLm1faml0VHlwZTsKKyAgICAgICAgaWYgKG1faml0VHlwZSAhPSBF
eGl0RnJvbUFueXRoaW5nCisgICAgICAgICAgICAmJiBtX2ppdFR5cGUgIT0gb3RoZXIubV9qaXRU
eXBlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAobV9pbmxpbmVLaW5k
ICE9IEV4aXRGcm9tQW55SW5saW5lS2luZAorICAgICAgICAgICAgJiYgbV9pbmxpbmVLaW5kICE9
IG90aGVyLm1faW5saW5lS2luZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogICAgIAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAg
IHsKLSAgICAgICAgcmV0dXJuIFdURjo6aW50SGFzaChtX2J5dGVjb2RlT2Zmc2V0KSArIG1fa2lu
ZCArIHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RXhpdGluZ0pJVFR5cGU+Piht
X2ppdFR5cGUpICogNzsKKyAgICAgICAgcmV0dXJuIFdURjo6aW50SGFzaChtX2J5dGVjb2RlT2Zm
c2V0KSArIG1fa2luZCArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2ppdFR5cGUpICogNyArIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihtX2lubGluZUtpbmQpICogMTE7CiAgICAgfQogICAgIAogICAg
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9ieXRlY29kZU9mZnNl
dDsgfQogICAgIEV4aXRLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KICAgICBF
eGl0aW5nSklUVHlwZSBqaXRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9qaXRUeXBlOyB9CisgICAg
RXhpdGluZ0lubGluZUtpbmQgaW5saW5lS2luZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lS2lu
ZDsgfQogICAgIAogICAgIEZyZXF1ZW50RXhpdFNpdGUgd2l0aEpJVFR5cGUoRXhpdGluZ0pJVFR5
cGUgaml0VHlwZSkgY29uc3QKICAgICB7CkBAIC0xMTEsNiArMTIyLDEzIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBGcmVxdWVudEV4aXRTaXRlIHdpdGhJ
bmxpbmVLaW5kKEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQpIGNvbnN0CisgICAgeworICAg
ICAgICBGcmVxdWVudEV4aXRTaXRlIHJlc3VsdCA9ICp0aGlzOworICAgICAgICByZXN1bHQubV9p
bmxpbmVLaW5kID0gaW5saW5lS2luZDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisK
ICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKICAgICB7CiAgICAgICAg
IHJldHVybiBtX2tpbmQgPT0gRXhpdEtpbmRVbnNldCAmJiBtX2J5dGVjb2RlT2Zmc2V0OwpAQCAt
MTIyLDYgKzE0MCw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9ieXRlY29kZU9mZnNldDsK
ICAgICBFeGl0S2luZCBtX2tpbmQ7CiAgICAgRXhpdGluZ0pJVFR5cGUgbV9qaXRUeXBlOworICAg
IEV4aXRpbmdJbmxpbmVLaW5kIG1faW5saW5lS2luZDsKIH07CiAKIHN0cnVjdCBGcmVxdWVudEV4
aXRTaXRlSGFzaCB7CkBAIC0xOTIsMTAgKzIxMSwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNF
eGl0U2l0ZShjb25zdCBGcmVxdWVudEV4aXRTaXRlJiBzaXRlKSBjb25zdAogICAgIHsKICAgICAg
ICAgaWYgKHNpdGUuaml0VHlwZSgpID09IEV4aXRGcm9tQW55dGhpbmcpIHsKLSAgICAgICAgICAg
IHJldHVybiBoYXNFeGl0U2l0ZShzaXRlLndpdGhKSVRUeXBlKEV4aXRGcm9tREZHKSkKLSAgICAg
ICAgICAgICAgICB8fCBoYXNFeGl0U2l0ZShzaXRlLndpdGhKSVRUeXBlKEV4aXRGcm9tRlRMKSk7
CisgICAgICAgICAgICByZXR1cm4gaGFzRXhpdFNpdGVXaXRoU3BlY2lmaWNKSVRUeXBlKHNpdGUu
d2l0aEpJVFR5cGUoRXhpdEZyb21ERkcpKQorICAgICAgICAgICAgICAgIHx8IGhhc0V4aXRTaXRl
V2l0aFNwZWNpZmljSklUVHlwZShzaXRlLndpdGhKSVRUeXBlKEV4aXRGcm9tRlRMKSk7CiAgICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIG1fZnJlcXVlbnRFeGl0U2l0ZXMuZmluZChzaXRlKSAhPSBt
X2ZyZXF1ZW50RXhpdFNpdGVzLmVuZCgpOworICAgICAgICByZXR1cm4gaGFzRXhpdFNpdGVXaXRo
U3BlY2lmaWNKSVRUeXBlKHNpdGUpOwogICAgIH0KICAgICAKICAgICBib29sIGhhc0V4aXRTaXRl
KEV4aXRLaW5kIGtpbmQpIGNvbnN0CkBAIC0yMDgsNiArMjI3LDIwIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGhhc0V4aXRTaXRlKEZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwga2lu
ZCkpOwogICAgIH0KIHByaXZhdGU6CisgICAgYm9vbCBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0pJ
VFR5cGUoY29uc3QgRnJlcXVlbnRFeGl0U2l0ZSYgc2l0ZSkgY29uc3QKKyAgICB7CisgICAgICAg
IGlmIChzaXRlLmlubGluZUtpbmQoKSA9PSBFeGl0RnJvbUFueUlubGluZUtpbmQpIHsKKyAgICAg
ICAgICAgIHJldHVybiBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0lubGluZUtpbmQoc2l0ZS53aXRo
SW5saW5lS2luZChFeGl0RnJvbU5vdElubGluZWQpKQorICAgICAgICAgICAgICAgIHx8IGhhc0V4
aXRTaXRlV2l0aFNwZWNpZmljSW5saW5lS2luZChzaXRlLndpdGhJbmxpbmVLaW5kKEV4aXRGcm9t
SW5saW5lZCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBoYXNFeGl0U2l0ZVdpdGhTcGVj
aWZpY0lubGluZUtpbmQoc2l0ZSk7CisgICAgfQorICAgIAorICAgIGJvb2wgaGFzRXhpdFNpdGVX
aXRoU3BlY2lmaWNJbmxpbmVLaW5kKGNvbnN0IEZyZXF1ZW50RXhpdFNpdGUmIHNpdGUpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gbV9mcmVxdWVudEV4aXRTaXRlcy5maW5kKHNpdGUpICE9
IG1fZnJlcXVlbnRFeGl0U2l0ZXMuZW5kKCk7CisgICAgfQorICAgIAogICAgIEhhc2hTZXQ8RnJl
cXVlbnRFeGl0U2l0ZT4gbV9mcmVxdWVudEV4aXRTaXRlczsKIH07CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0RmxhZy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0RmxhZy5oCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0RmxhZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI3ByYW1nYSBvbmNlCisKKyNpbmNsdWRlICJFeGl0aW5nSW5saW5lS2luZC5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgRXhpdEZsYWcgeworcHVibGljOgorICAgIEV4aXRGbGFnKCkg
eyB9CisgICAgCisgICAgRXhpdEZsYWcoYm9vbCB2YWx1ZSwgRXhpdGluZ0lubGluZUtpbmQgaW5s
aW5lS2luZCkKKyAgICB7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIAorICAgICAgICBzd2l0Y2ggKGlubGluZUtpbmQpIHsKKyAgICAgICAgY2FzZSBF
eGl0RnJvbUFueUlubGluZUtpbmQ6CisgICAgICAgICAgICBtX2JpdHMgPSB0cnVlTm90SW5saW5l
ZCB8IHRydWVJbmxpbmVkOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRXhpdEZy
b21Ob3RJbmxpbmVkOgorICAgICAgICAgICAgbV9iaXRzID0gdHJ1ZU5vdElubGluZWQ7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFeGl0RnJvbUlubGluZWQ6CisgICAgICAgICAg
ICBtX2JpdHMgPSB0cnVlSW5saW5lZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgfQorICAgIAorICAgIEV4aXRGbGFnIG9wZXJhdG9yfChjb25zdCBFeGl0RmxhZyYgb3RoZXIp
IGNvbnN0CisgICAgeworICAgICAgICBFeGl0RmxhZyByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5t
X2JpdHMgPSBtX2JpdHMgfCBvdGhlci5tX2JpdHM7CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorICAgIAorICAgIEV4aXRGbGFnJiBvcGVyYXRvcnw9KGNvbnN0IEV4aXRGbGFnJiBvdGhl
cikKKyAgICB7CisgICAgICAgICp0aGlzID0gKnRoaXMgfCBvdGhlcjsKKyAgICB9CisgICAgCisg
ICAgRXhpdEZsYWcgb3BlcmF0b3ImKGNvbnN0IEV4aXRGbGFnJiBvdGhlcikgY29uc3QKKyAgICB7
CisgICAgICAgIEV4aXRGbGFnIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1fYml0cyA9IG1fYml0
cyAmIG90aGVyLm1fYml0czsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisg
ICAgRXhpdEZsYWcmIG9wZXJhdG9yJj0oY29uc3QgRXhpdEZsYWcmIG90aGVyKQorICAgIHsKKyAg
ICAgICAgKnRoaXMgPSAqdGhpcyAmIG90aGVyOworICAgIH0KKyAgICAKKyAgICBleHBsaWNpdCBv
cGVyYXRvciBib29sKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhIW1fYml0czsKKyAg
ICB9CisgICAgCisgICAgYm9vbCBpc1NldChFeGl0aW5nSW5saW5lS2luZCBpbmxpbmVLaW5kKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICp0aGlzICYgRXhpdEZsYWcodHJ1ZSwgaW5saW5l
S2luZCk7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4
X3QgdHJ1ZU5vdElubGluZWQgPSAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCB0cnVl
SW5saW5lZCA9IDI7CisgICAgCisgICAgdWludDhfdCBtX2JpdHMgeyAwIH07Cit9OworCit9IC8v
IG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4
aXRpbmdJbmxpbmVLaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0aW5nSW5saW5lS2luZC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRXhpdGluZ0lubGluZUtp
bmQuaCIKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgV1RGIHsK
KwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFt
JiBvdXQsIEV4aXRpbmdJbmxpbmVLaW5kIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7Cisg
ICAgY2FzZSBFeGl0RnJvbUFueUlubGluZUtpbmQ6CisgICAgICAgIG91dC5wcmludCgiRnJvbUFu
eUlubGluZUtpbmQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRXhpdEZyb21Ob3RJbmxp
bmVkOgorICAgICAgICBvdXQucHJpbnQoIkZyb21Ob3RJbmxpbmVkIik7CisgICAgICAgIHJldHVy
bjsKKyAgICBjYXNlIEV4aXRGcm9tSW5saW5lZDoKKyAgICAgICAgb3V0LnByaW50KCJGcm9tSW5s
aW5lZCIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuaAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgSlNDIHsK
KworZW51bSBFeGl0aW5nSW5saW5lS2luZCA6IHVpbnQ4X3QgeworICAgIEV4aXRGcm9tQW55SW5s
aW5lS2luZCwKKyAgICBFeGl0RnJvbU5vdElubGluZWQsCisgICAgRXhpdEZyb21JbmxpbmVkLAor
fTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBQcmlu
dFN0cmVhbTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6RXhpdGluZ0lu
bGluZUtpbmQpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDIz
MjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDkgKzExNiwxMyBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5
SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgIGxvY2tlciwgcHJvZmlsZWRCbG9jaywgbWFw
LmdldChDb2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgpKSwgdWlkLAogICAgICAgICBDYWxsTGlua1N0
YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YShwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4KSk7
CiAgICAgCisgICAgaWYgKGJ5dGVjb2RlSW5kZXggPT0gMjApCisgICAgICAgIGRhdGFMb2coIlJl
c3VsdDogIiwgcmVzdWx0LCAiXG4iKTsKKyAgICAKICAgICBpZiAoIXJlc3VsdC50YWtlc1Nsb3dQ
YXRoKCkKKyAgICAgICAgJiYgYnl0ZWNvZGVJbmRleCAhPSAyMAogICAgICAgICAmJiBoYXNFeGl0
U2l0ZShwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4KSkKLSAgICAgICAgcmV0dXJuIEdldEJ5
SWRTdGF0dXMocmVzdWx0Lm1ha2VzQ2FsbHMoKSA/IE1ha2VzQ2FsbHMgOiBUYWtlc1Nsb3dQYXRo
LCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5zbG93VmVyc2lvbigpOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0obWFwKTsKICNlbmRpZgpAQCAtMTM3LDcgKzE0MSw3IEBAIEdldEJ5SWRT
dGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclMKICAgICAgICAgQ2FsbExpbmtTdGF0dXM6
OmNvbXB1dGVFeGl0U2l0ZURhdGEocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUlu
ZGV4KSk7CiAKICAgICBpZiAoIXJlc3VsdC50YWtlc1Nsb3dQYXRoKCkgJiYgR2V0QnlJZFN0YXR1
czo6aGFzRXhpdFNpdGUocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KSkK
LSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMocmVzdWx0Lm1ha2VzQ2FsbHMoKSA/IEdldEJ5
SWRTdGF0dXM6Ok1ha2VzQ2FsbHMgOiBHZXRCeUlkU3RhdHVzOjpUYWtlc1Nsb3dQYXRoLCB0cnVl
KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5zbG93VmVyc2lvbigpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkBAIC0xNzAsOCArMTc0LDExIEBAIEdl
dEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclMKICAgICAgICAgfQogICAgIH0K
ICAgICAKLSAgICBpZiAoc3R1YkluZm8tPnRvb2tTbG93UGF0aCkKKyAgICBpZiAoc3R1YkluZm8t
PnRvb2tTbG93UGF0aCkgeworICAgICAgICBpZiAoc3R1YkluZm8tPmNvZGVPcmlnaW4uYnl0ZWNv
ZGVJbmRleCA9PSAyMCkKKyAgICAgICAgICAgIGRhdGFMb2coIlN0dWIgaW5mbyB0b29rIHNsb3cg
cGF0aC5cbiIpOwogICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhzbG93UGF0aFN0YXRlKTsK
KyAgICB9CiAgICAgCiAgICAgLy8gRmluYWxseSBmaWd1cmUgb3V0IGlmIHdlIGNhbiBkZXJpdmUg
YW4gYWNjZXNzIHN0cmF0ZWd5LgogICAgIEdldEJ5SWRTdGF0dXMgcmVzdWx0OwpAQCAtMzMyLDEy
ICszMzksMTUgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAg
ICAgICAgICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJh
Y2soCiAgICAgICAgICAgICAgICAgbG9ja2VyLCBkZmdCbG9jaywgZGZnTWFwLmdldChjb2RlT3Jp
Z2luKSwgdWlkLCBleGl0U2l0ZURhdGEpOwogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBp
ZiAoZmFsc2UgJiYgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4ID09IDIwKQorICAgICAgICAgICAg
ZGF0YUxvZygiSW4gIiwgcG9pbnRlckR1bXAocHJvZmlsZWRCbG9jayksICIgIiwgY29kZU9yaWdp
biwgIjogREZHIHNhdzogIiwgcmVzdWx0LCAiXG4iKTsKIAogICAgICAgICBpZiAocmVzdWx0LnRh
a2VzU2xvd1BhdGgoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgCi0gICAgICAg
IGlmIChoYXNFeGl0U2l0ZShwcm9maWxlZEJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgp
KQotICAgICAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgdHJ1ZSk7
CisgICAgICAgIGlmIChjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXggIT0gMjAgJiYgaGFzRXhpdFNp
dGUocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KSkKKyAgICAgICAgICAg
IHJldHVybiByZXN1bHQuc2xvd1ZlcnNpb24oKTsKICAgICAgICAgCiAgICAgICAgIGlmIChyZXN1
bHQuaXNTZXQoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0zNDYsNyArMzU2LDEw
IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICBVTlVTRURf
UEFSQU0oZGZnQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShkZmdNYXApOwogI2VuZGlmCi0KKyAg
ICAKKyAgICBpZiAoZGZnQmxvY2sgJiYgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4ID09IDIwKQor
ICAgICAgICBkYXRhTG9nKCJJbiAiLCBwb2ludGVyRHVtcChwcm9maWxlZEJsb2NrKSwgIiAiLCBj
b2RlT3JpZ2luLCAiOiBHb2luZyB3aXRoIHdoYXQgYmFzZWxpbmUgc2F3LlxuIik7CisgICAgICAg
IAogICAgIHJldHVybiBjb21wdXRlRm9yKHByb2ZpbGVkQmxvY2ssIGJhc2VsaW5lTWFwLCBjb2Rl
T3JpZ2luLmJ5dGVjb2RlSW5kZXgsIHVpZCk7CiB9CiAKQEAgLTQxNCw2ICs0MjcsMTEgQEAgYm9v
bCBHZXRCeUlkU3RhdHVzOjptYWtlc0NhbGxzKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKK0dldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6c2xvd1ZlcnNpb24oKSBjb25zdAorewor
ICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKG1ha2VzQ2FsbHMoKSA/IE1ha2VzQ2FsbHMgOiBUYWtl
c1Nsb3dQYXRoLCB3YXNTZWVuSW5KSVQoKSk7Cit9CisKIHZvaWQgR2V0QnlJZFN0YXR1czo6Zmls
dGVyKGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0KQogewogICAgIGlmIChtX3N0YXRlICE9IFNpbXBs
ZSkKQEAgLTQyMyw2ICs0NDEsMjUgQEAgdm9pZCBHZXRCeUlkU3RhdHVzOjpmaWx0ZXIoY29uc3Qg
U3RydWN0dQogICAgICAgICBtX3N0YXRlID0gTm9JbmZvcm1hdGlvbjsKIH0KIAordm9pZCBHZXRC
eUlkU3RhdHVzOjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBmb3Ig
KEdldEJ5SWRWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykKKyAgICAgICAgdmFyaWF0Lm1h
cmtJZkNoZWFwKHZpc2l0b3IpOworfQorCitib29sIEdldEJ5SWRTdGF0dXM6OmZpbmFsaXplKCkK
K3sKKyAgICBmb3IgKEdldEJ5SWRWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykgeworICAg
ICAgICBpZiAoIXZhcmlhbnQuZmluYWxpemUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgaWYgKG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0ICYmICFIZWFwOjppc01hcmtl
ZChtX21vZHVsZU5hbWVzcGFjZU9iamVjdCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAobV9tb2R1bGVFbnZpcm9ubWVudCAmJiAhSGVhcDo6aXNNYXJrZWQobV9tb2R1bGVFbnZpcm9u
bWVudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9p
ZCBHZXRCeUlkU3RhdHVzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgb3V0
LnByaW50KCIoIik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJ
ZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9H
ZXRCeUlkU3RhdHVzLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcg
QEAKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAiQ29uY3VycmVudEpTTG9jay5o
IgogI2luY2x1ZGUgIkdldEJ5SWRWYXJpYW50LmgiCisjaW5jbHVkZSAiSUNTdGF0dXNNYXAuaCIK
ICNpbmNsdWRlICJTY29wZU9mZnNldC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQwLDggKzQx
LDYgQEAgY2xhc3MgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q7CiBjbGFzcyBNb2R1bGVOYW1lc3Bh
Y2VBY2Nlc3NDYXNlOwogY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CiAKLXR5cGVkZWYgSGFzaE1h
cDxDb2RlT3JpZ2luLCBTdHJ1Y3R1cmVTdHViSW5mbyosIENvZGVPcmlnaW5BcHByb3hpbWF0ZUhh
c2g+IFN0dWJJbmZvTWFwOwotCiBjbGFzcyBHZXRCeUlkU3RhdHVzIHsKIHB1YmxpYzoKICAgICBl
bnVtIFN0YXRlIHsKQEAgLTgxLDEwICs4MCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIG1fdmFyaWFu
dHMuYXBwZW5kKHZhcmlhbnQpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgR2V0QnlJZFN0YXR1
cyBjb21wdXRlRm9yKENvZGVCbG9jayosIFN0dWJJbmZvTWFwJiwgdW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7CisgICAgc3RhdGljIEdldEJ5SWRTdGF0dXMg
Y29tcHV0ZUZvcihDb2RlQmxvY2sqLCBJQ1N0YXR1c01hcCYsIHVuc2lnbmVkIGJ5dGVjb2RlSW5k
ZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogICAgIHN0YXRpYyBHZXRCeUlkU3RhdHVzIGNv
bXB1dGVGb3IoY29uc3QgU3RydWN0dXJlU2V0JiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7CiAg
ICAgCi0gICAgc3RhdGljIEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqIGJhc2Vs
aW5lQmxvY2ssIENvZGVCbG9jayogZGZnQmxvY2ssIFN0dWJJbmZvTWFwJiBiYXNlbGluZU1hcCwg
U3R1YkluZm9NYXAmIGRmZ01hcCwgQ29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7
CisgICAgc3RhdGljIEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqIGJhc2VsaW5l
QmxvY2ssIENvZGVCbG9jayogZGZnQmxvY2ssIElDU3RhdHVzTWFwJiBiYXNlbGluZU1hcCwgSUNT
dGF0dXNDb250ZXh0U3RhY2smIGRmZ0NvbnRleHRTdGFjaywgQ29kZU9yaWdpbiwgVW5pcXVlZFN0
cmluZ0ltcGwqIHVpZCk7CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBzdGF0aWMgR2V0QnlJ
ZFN0YXR1cyBjb21wdXRlRm9yU3R1YkluZm8oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29k
ZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyosIENvZGVPcmlnaW4sIFVu
aXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwpAQCAtMTA2LDYgKzEwNSw4IEBAIHB1YmxpYzoKICAgICBi
b29sIHRha2VzU2xvd1BhdGgoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFRha2VzU2xvd1Bh
dGggfHwgbV9zdGF0ZSA9PSBNYWtlc0NhbGxzIHx8IG1fc3RhdGUgPT0gQ3VzdG9tIHx8IG1fc3Rh
dGUgPT0gTW9kdWxlTmFtZXNwYWNlOyB9CiAgICAgYm9vbCBtYWtlc0NhbGxzKCkgY29uc3Q7CiAg
ICAgCisgICAgR2V0QnlJZFN0YXR1cyBzbG93VmVyc2lvbigpIGNvbnN0OworICAgIAogICAgIGJv
b2wgd2FzU2VlbkluSklUKCkgY29uc3QgeyByZXR1cm4gbV93YXNTZWVuSW5KSVQ7IH0KICAgICAK
ICAgICAvLyBBdHRlbXB0cyB0byByZWR1Y2UgdGhlIHNldCBvZiB2YXJpYW50cyB0byBmaXQgdGhl
IGdpdmVuIHN0cnVjdHVyZSBzZXQuIFRoaXMgbWF5IGJlIGFwcHJveGltYXRlLgpAQCAtMTE1LDYg
KzExNiw5IEBAIHB1YmxpYzoKICAgICBKU01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9u
bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlRW52aXJvbm1lbnQ7IH0KICAgICBTY29wZU9m
ZnNldCBzY29wZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVPZmZzZXQ7IH0KICAgICAK
KyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7CisgICAgYm9vbCBmaW5hbGl6ZSgp
OyAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGlzIGdldHMgdG8gbGl2ZS4KKyAgICAKICAgICB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5jcHAJKHJldmlzaW9u
IDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNSw2ICsxMzUsMjQgQEAgYm9vbCBHZXRCeUlkVmFy
aWFudDo6YXR0ZW1wdFRvTWVyZ2UoY29ucwogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIEdl
dEJ5SWRWYXJpYW50OjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBt
X3N0cnVjdHVyZVNldC5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKK30KKworYm9vbCBHZXRCeUlkVmFy
aWFudDo6ZmluYWxpemUoKQoreworICAgIGlmICghbV9zdHJ1Y3R1cmVTZXQuaXNTdGlsbEFsaXZl
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fY29uZGl0aW9uU2V0LmFyZVN0
aWxsTGl2ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fY2FsbExpbmtTdGF0
dXMgJiYgIW1fY2FsbExpbmtTdGF0dXMtPmZpbmFsaXplKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBpZiAobV9pbnRyaW5zaWNGdW5jdGlvbiAmJiAhSGVhcDo6aXNNYXJrZWQobV9pbnRy
aW5zaWNGdW5jdGlvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwogdm9pZCBHZXRCeUlkVmFyaWFudDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAog
ewogICAgIGR1bXBJbkNvbnRleHQob3V0LCAwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNzMsNiArNzMsOSBAQCBwdWJsaWM6CiAKICAgICBib29sIGF0dGVtcHRUb01lcmdl
KGNvbnN0IEdldEJ5SWRWYXJpYW50JiBvdGhlcik7CiAgICAgCisgICAgdm9pZCBtYXJrSWZDaGVh
cChTbG90VmlzaXRvciYpOworICAgIGJvb2wgZmluYWxpemUoKTsKKyAgICAKICAgICB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICB2b2lkIGR1bXBJbkNvbnRleHQoUHJpbnRTdHJl
YW0mLCBEdW1wQ29udGV4dCopIGNvbnN0OwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNNYXAuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSUNTdGF0dXNNYXAuaCIKKwor
I2luY2x1ZGUgIlRlcm1pbmF0ZWRDb2RlT3JpZ2luLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitJ
Q1N0YXR1cyBJQ1N0YXR1c0NvbnRleHQ6OmdldChDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCit7Cisg
ICAgcmV0dXJuIG1hcC5nZXQ8VGVybWluYXRlZENvZGVPcmlnaW5IYXNoVHJhbnNsYXRvcj4oCisg
ICAgICAgIFRlcm1pbmF0ZWRDb2RlT3JpZ2luKGNvZGVPcmlnaW4sIGJhc2VsaW5lQ29kZUJsb2Nr
KSk7Cit9CisKK2Jvb2wgSUNTdGF0dXNDb250ZXh0Ojppc0lubGluZWQoQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luKQoreworICAgIHJldHVybiBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSAmJiBjb2Rl
T3JpZ2luLmlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkgIT0gYmFzZWxp
bmVDb2RlQmxvY2s7Cit9CisKK0V4aXRpbmdJbmxpbmVLaW5kIElDU3RhdHVzQ29udGV4dDo6aW5s
aW5lS2luZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCit7CisgICAgcmV0dXJuIGlzSW5saW5lZChj
b2RlT3JpZ2luKSA/IEV4aXRGcm9tSW5saW5lZCA6IEV4aXRGcm9tTm90SW5saW5lZDsKK30KKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9JQ1N0YXR1c01hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JQ1N0YXR1c01hcC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYW1nYSBv
bmNlCisKKyNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
KworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIENhbGxMaW5rSW5mbzsKK2NsYXNzIENhbGxMaW5r
U3RhdHVzOworY2xhc3MgQ29kZUJsb2NrOworY2xhc3MgR2V0QnlJZFN0YXR1czsKK2NsYXNzIFB1
dEJ5SWRTdGF0dXM7CitjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsKK3N0cnVjdCBCeVZhbEluZm87
CisKK3N0cnVjdCBJQ1N0YXR1cyB7CisgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvIHsg
bnVsbHB0ciB9OworICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvIHsgbnVsbHB0ciB9Owor
ICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvIHsgbnVsbHB0ciB9OworICAgIENhbGxMaW5rU3RhdHVz
KiBjYWxsU3RhdHVzIHsgbnVsbHB0ciB9OworICAgIEdldEJ5SWRTdGF0dXMqIGdldFN0YXR1cyB7
IG51bGxwdHIgfTsKKyAgICBQdXRCeUlkU3RhdHVzKiBwdXRTdGF0dXMgeyBudWxscHRyIH07Cit9
OworCit0eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdpbiwgSUNTdGF0dXMsIENvZGVPcmlnaW5BcHBy
b3hpbWF0ZUhhc2g+IElDU3RhdHVzTWFwOworCitzdHJ1Y3QgSUNTdGF0dXNDb250ZXh0IHsKKyAg
ICBJQ1N0YXR1cyBnZXQoQ29kZU9yaWdpbik7CisgICAgYm9vbCBpc0lubGluZWQoQ29kZU9yaWdp
bikgY29uc3Q7CisgICAgRXhpdGluZ0lubGluZUtpbmQgaW5saW5lS2luZChDb2RlT3JpZ2luKSBj
b25zdDsKKyAgICAKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrOworICAgIENvZGVC
bG9jayogb3B0aW1pemVkQ29kZUJsb2NrOworICAgIElDU3RhdHVzTWFwIG1hcDsKK307CisKK3R5
cGVkZWYgVmVjdG9yPElDU3RhdHVzQ29udGV4dCosIDg+IElDU3RhdHVzQ29udGV4dFN0YWNrOwor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1B1dEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zOTgsNiArMzk4LDIxIEBAIGJvb2wgUHV0QnlJZFN0YXR1czo6bWFrZXNDYWxscygpIGNv
bnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIFB1dEJ5SWRTdGF0dXM6Om1hcmtJZkNo
ZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGZvciAoUHV0QnlJZFZhcmlhbnQmIHZh
cmlhbnQgOiBtX3ZhcmlhbnRzKQorICAgICAgICB2YXJpYW50Lm1hcmtJZkNoZWFwKHZpc2l0b3Ip
OworfQorCitib29sIFB1dEJ5SWRTdGF0dXM6OmZpbmFsaXplKCkKK3sKKyAgICBmb3IgKFB1dEJ5
SWRWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykgeworICAgICAgICBpZiAoIXZhcmlhbnQu
ZmluYWxpemUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJu
IHRydWU7Cit9CisKIHZvaWQgUHV0QnlJZFN0YXR1czo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBj
b25zdAogewogICAgIHN3aXRjaCAobV9zdGF0ZSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNhbGxMaW5r
U3RhdHVzLmgiCisjaW5jbHVkZSAiSUNTdGF0dXNNYXAuaCIKICNpbmNsdWRlICJQdXRCeUlkVmFy
aWFudC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTY5LDEwICs3MCwxMCBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fdmFyaWFudHMuYXBwZW5kKHZhcmlhbnQpOwogICAgIH0KICAgICAKLSAgICBzdGF0
aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIFN0dWJJbmZvTWFwJiwgdW5z
aWduZWQgYnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7CisgICAgc3RhdGlj
IFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCBJQ1N0YXR1c01hcCYsIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogICAgIHN0YXRpYyBQ
dXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJ1Y3R1cmVT
ZXQmLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBib29sIGlzRGlyZWN0KTsKICAgICAKLSAgICBz
dGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywg
Q29kZUJsb2NrKiBkZmdCbG9jaywgU3R1YkluZm9NYXAmIGJhc2VsaW5lTWFwLCBTdHViSW5mb01h
cCYgZGZnTWFwLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKKyAgICBzdGF0
aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgQ29k
ZUJsb2NrKiBkZmdCbG9jaywgSUNTdGF0dXNNYXAmIGJhc2VsaW5lTWFwLCBJQ1N0YXR1c01hcCYg
ZGZnTWFwLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKIAogI2lmIEVOQUJM
RShKSVQpCiAgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvclN0dWJJbmZvKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgU3RydWN0dXJl
U3R1YkluZm8qLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKQEAgLTkxLDYg
KzkyLDkgQEAgcHVibGljOgogICAgIGNvbnN0IFB1dEJ5SWRWYXJpYW50JiBhdChzaXplX3QgaW5k
ZXgpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFudHNbaW5kZXhdOyB9CiAgICAgY29uc3QgUHV0QnlJ
ZFZhcmlhbnQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBhdChpbmRl
eCk7IH0KICAgICAKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7CisgICAgYm9v
bCBmaW5hbGl6ZSgpOworICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0Owog
ICAgIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRC
eUlkVmFyaWFudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1B1dEJ5SWRWYXJpYW50LmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yMDYsNiArMjA2LDI2IEBAIGJvb2wgUHV0QnlJZFZhcmlhbnQ6OmF0dGVtcHRUb01lcmdlVHJh
bnMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBQdXRCeUlkVmFyaWFudDo6bWFya0lmQ2hl
YXAoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgbV9vbGRTdHJ1Y3R1cmUubWFya0lmQ2hl
YXAodmlzaXRvcik7CisgICAgaWYgKG1fbmV3U3RydWN0dXJlKQorICAgICAgICBtX25ld1N0cnVj
dHVyZS0+bWFya0lmQ2hlYXAodmlzaXRvcik7Cit9CisKK2Jvb2wgUHV0QnlJZFZhcmlhbnQ6OmZp
bmFsaXplKCkKK3sKKyAgICBpZiAoIW1fb2xkU3RydWN0dXJlLmlzU3RpbGxBbGl2ZSh2aXNpdG9y
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX25ld1N0cnVjdHVyZSAmJiAhSGVh
cDo6aXNNYXJrZWQobV9uZXdTdHJ1Y3R1cmUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCFtX2NvbmRpdGlvblNldC5hcmVTdGlsbExpdmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmIChtX2NhbGxMaW5rU3RhdHVzICYmICFtX2NhbGxMaW5rU3RhdHVzLT5maW5hbGl6
ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQg
UHV0QnlJZFZhcmlhbnQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBkdW1w
SW5Db250ZXh0KG91dCwgMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHV0QnlJZFZhcmlhbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHV0QnlJZFZhcmlhbnQuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MTI5LDYgKzEyOSw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgYXR0ZW1wdFRvTWVyZ2UoY29uc3Qg
UHV0QnlJZFZhcmlhbnQmIG90aGVyKTsKICAgICAKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RW
aXNpdG9yJik7CisgICAgYm9vbCBmaW5hbGl6ZSgpOworICAgIAogICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYpIGNvbnN0OwogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1
bXBDb250ZXh0KikgY29uc3Q7CiAKQEAgLTEzNyw3ICsxNDAsNyBAQCBwcml2YXRlOgogICAgIAog
ICAgIEtpbmQgbV9raW5kOwogICAgIFN0cnVjdHVyZVNldCBtX29sZFN0cnVjdHVyZTsKLSAgICBT
dHJ1Y3R1cmUqIG1fbmV3U3RydWN0dXJlOworICAgIFN0cnVjdHVyZSogbV9uZXdTdHJ1Y3R1cmUg
eyBudWxscHRyIH07CiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgbV9jb25kaXRpb25T
ZXQ7CiAgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAgICAgSW5mZXJyZWRUeXBlOjpEZXNj
cmlwdG9yIG1fcmVxdWlyZWRUeXBlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1JlY29yZGVkU3RhdHVzZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgorI2lu
Y2x1ZGUgIkdldEJ5SWRTdGF0dXMuaCIKKyNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgUmVjb3JkZWRTdGF0dXNlcyB7CisgICAgUmVjb3JkZWRT
dGF0dXNlcygpIHsgfQorICAgIAorICAgIFJlY29yZGVkU3RhdHVzZXMmIG9wZXJhdG9yPShjb25z
dCBSZWNvcmRlZFN0YXR1c2VzJiBvdGhlcikKKyAgICB7CisgICAgICAgIGZvciAoYXV0byYgcGFp
ciA6IG90aGVyLmNhbGxzKQorICAgICAgICAgICAgY2FsbHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWly
KHBhaXIuZmlyc3QsIHN0ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtTdGF0dXM+KHBhaXIuc2Vjb25k
KSkpOworICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBvdGhlci5nZXRzKQorICAgICAgICAgICAg
Z2V0cy5hcHBlbmQoc3RkOjptYWtlX3BhaXIocGFpci5maXJzdCwgc3RkOjptYWtlX3VuaXF1ZTxH
ZXRCeUlkU3RhdHVzPihwYWlyLnNlY29uZCkpKTsKKyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDog
b3RoZXIucHV0cykKKyAgICAgICAgICAgIHB1dHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHBhaXIu
Zmlyc3QsIHN0ZDo6bWFrZV91bmlxdWU8UHV0QnlJZFN0YXR1cz4ocGFpci5zZWNvbmQpKSk7Cisg
ICAgfQorICAgIAorICAgIFJlY29yZGVkU3RhdHVzZXMmIG9wZXJhdG9yPShSZWNvcmRlZFN0YXR1
c2VzJiYgb3RoZXIpCisgICAgeworICAgICAgICBjYWxscyA9IFdURk1vdmUob3RoZXIuY2FsbHMp
OworICAgICAgICBnZXRzID0gV1RGTW92ZShvdGhlci5nZXRzKTsKKyAgICAgICAgcHV0cyA9IFdU
Rk1vdmUob3RoZXIucHV0cyk7CisgICAgfQorICAgIAorICAgIFJlY29yZGVkU3RhdHVzZXMoY29u
c3QgUmVjb3JkZWRTdGF0dXNlcyYgb3RoZXIpCisgICAgeworICAgICAgICAqdGhpcyA9IG90aGVy
OworICAgIH0KKyAgICAKKyAgICBSZWNvcmRlZFN0YXR1c2VzKFJlY29yZWRlZFN0YXR1c2VzJiYg
b3RoZXIpCisgICAgeworICAgICAgICAqdGhpcyA9IFdURk1vdmUob3RoZXIpOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGFkZENhbGxMaW5rU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmln
aW4sIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBzdGF0dXMpCisgICAgeworICAgICAgICBjYWxscy5h
cHBlbmQoc3RkOjptYWtlX3BhaXIoY29kZU9yaWdpbiwgc3RkOjptYWtlX3VuaXF1ZTxDYWxsTGlu
a1N0YXR1cz4oc3RhdHVzKSkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGFkZEdldEJ5SWRTdGF0
dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgY29uc3QgR2V0QnlJZFN0YXR1cyYgc3Rh
dHVzKQorICAgIHsKKyAgICAgICAgZ2V0cy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY29kZU9yaWdp
biwgc3RkOjptYWtlX3VuaXF1ZTxHZXRCeUlkU3RhdHVzPihzdGF0dXMpKSk7CisgICAgfQorICAg
IAorICAgIHZvaWQgYWRkUHV0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2lu
LCBjb25zdCBQdXRCeUlkU3RhdHVzJiBzdGF0dXMpCisgICAgeworICAgICAgICBwdXRzLmFwcGVu
ZChzdGQ6Om1ha2VfcGFpcihjb2RlT3JpZ2luLCBzdGQ6Om1ha2VfdW5pcXVlPFB1dEJ5SWRTdGF0
dXM+KHN0YXR1cykpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBtYXJrSWZDaGVhcChTbG90Vmlz
aXRvciYgc2xvdFZpc2l0b3IpCisgICAgeworICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBnZXRz
KQorICAgICAgICAgICAgcGFpci5zZWNvbmQtPm1hcmtJZkNoZWFwKHNsb3RWaXNpdG9yKTsKKyAg
ICAgICAgZm9yIChhdXRvJiBwYWlyIDogcHV0cykKKyAgICAgICAgICAgIHBhaXIuc2Vjb25kLT5t
YXJrSWZDaGVhcChzbG90VmlzaXRvcik7CisgICAgfQorICAgIAorICAgIHZvaWQgZmluYWxpemUo
KQorICAgIHsKKyAgICAgICAgYXV0byBmaW5hbGl6ZSA9IFtdIChhdXRvJiB2ZWN0b3IpIHsKKyAg
ICAgICAgICAgIHZlY3Rvci5yZW1vdmVBbGxNYXRjaGluZygKKyAgICAgICAgICAgICAgICBbJl0g
KGF1dG8mIHBhaXIpIC0+IGJvb2wgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXBhaXIu
c2Vjb25kLT5maW5hbGl6ZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgdmVj
dG9yLnNocmlua1RvRml0KCk7CisgICAgICAgIH07CisgICAgICAgIGZpbmFsaXplKGNhbGxzKTsK
KyAgICAgICAgZmluYWxpemUoZ2V0cyk7CisgICAgICAgIGZpbmFsaXplKHB1dHMpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIHNocmlua1RvRml0KCkKKyAgICB7CisgICAgICAgIGNhbGxzLnNocmlu
a1RvRml0KCk7CisgICAgICAgIGdldHMuc2hyaW5rVG9GaXQoKTsKKyAgICAgICAgcHV0cy5zaHJp
bmtUb0ZpdCgpOworICAgIH0KKyAgICAKKyAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4s
IHN0ZDo6dW5pcXVlX3B0cjxDYWxsTGlua1N0YXR1cz4+PiBjYWxsczsKKyAgICBWZWN0b3I8c3Rk
OjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxHZXRCeUlkU3RhdHVzPj4+IGdldHM7
CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8UHV0QnlJ
ZFN0YXR1cz4+PiBwdXRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuY3BwCShyZXZpc2lv
biAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw2ICszMSwyMSBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAordm9pZCBTdHJ1Y3R1cmVTZXQ6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9y
KSBjb25zdAoreworICAgIGZvciAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgOiAqdGhpcykKKyAgICAg
ICAgc3RydWN0dXJlLT5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKK30KKworYm9vbCBTdHJ1Y3R1cmVT
ZXQ6OmlzU3RpbGxBbGl2ZSgpIGNvbnN0Cit7CisgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA6ICp0aGlzKSB7CisgICAgICAgIGlmICghSGVhcDo6aXNNYXJrZWQoc3RydWN0dXJlKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZv
aWQgU3RydWN0dXJlU2V0OjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250
ZXh0KiBjb250ZXh0KSBjb25zdAogewogICAgIENvbW1hUHJpbnRlciBjb21tYTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmgJKHJldmlzaW9u
IDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEsIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU4LDYgKzU4LDkgQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgcmV0dXJuIG9ubHlFbnRyeSgpOwogICAgIH0KKworICAgIHZvaWQgbWFya0lmQ2hl
YXAoU2xvdFZpc2l0b3ImKSBjb25zdDsKKyAgICBib29sIGlzU3RpbGxBbGl2ZSgpIGNvbnN0Owog
ICAgIAogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0Kikg
Y29uc3Q7CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVGVybWluYXRlZENvZGVPcmlnaW4uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVGVybWluYXRlZENvZGVPcmlnaW4u
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVGVybWlu
YXRlZENvZGVPcmlnaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCitu
YW1lc3BhY2UgSlNDIHsKKworc3RydWN0IFRlcm1pbmF0ZWRDb2RlT3JpZ2luIHsKKyAgICBUZXJt
aW5hdGVkQ29kZU9yaWdpbigpIHsgfQorICAgIAorICAgIFRlcm1pbmF0ZWRDb2RlT3JpZ2luKGNv
bnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIENvZGVCbG9jayogdGVybWluYWwpCisgICAgICAg
IDogY29kZU9yaWdpbihjb2RlT3JpZ2luKQorICAgICAgICAsIHRlcm1pbmFsKHRlcm1pbmFsKQor
ICAgIHsKKyAgICB9CisgICAgCisgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luOworICAgIENvZGVC
bG9jayogdGVybWluYWwgeyBudWxscHRyIH07Cit9OworCitzdHJ1Y3QgVGVybWluYXRlZENvZGVP
cmlnaW5IYXNoVHJhbnNsYXRvciB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVGVy
bWluYXRlZENvZGVPcmlnaW4mIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlLmNv
ZGVPcmlnaW4uYXBwcm94aW1hdGVIYXNoKHZhbHVlLnRlcm1pbmFsKTsKKyAgICB9CisgICAgCisg
ICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgQ29kZU9yaWdpbiYgYSwgY29uc3QgVGVybWluYXRl
ZENvZGVPcmlpZ24mIGIpCisgICAgeworICAgICAgICByZXR1cm4gYi5jb2RlT3JpZ2luLmFwcHJv
eGltYXRlbHlFcXVhbChhLCBiLnRlcm1pbmFsKTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgyLDkgKzEwODIs
OCBAQCBwcml2YXRlOgogICAgICAgICAvLyBjb2RlIGJsb2NrIGhhZCBnYXRoZXJlZC4KICAgICAg
ICAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXIgbV9sYXp5T3BlcmFuZHM7CiAgICAgICAg
IAotICAgICAgICBDYWxsTGlua0luZm9NYXAgbV9jYWxsTGlua0luZm9zOwotICAgICAgICBTdHVi
SW5mb01hcCBtX3N0dWJJbmZvczsKLSAgICAgICAgQnlWYWxJbmZvTWFwIG1fYnlWYWxJbmZvczsK
KyAgICAgICAgSUNTdGF0dXNNYXAgbV9iYXNlbGluZU1hcDsKKyAgICAgICAgSUNTdGF0dXNDb250
ZXh0IG1fb3B0aW1pemVkQ29udGV4dDsKICAgICAgICAgCiAgICAgICAgIC8vIFBvaW50ZXJzIHRv
IHRoZSBhcmd1bWVudCBwb3NpdGlvbiB0cmFja2VycyBmb3IgdGhpcyBzbGljZSBvZiBjb2RlLgog
ICAgICAgICBWZWN0b3I8QXJndW1lbnRQb3NpdGlvbio+IG1fYXJndW1lbnRQb3NpdGlvbnM7CkBA
IC0xMTAyLDEwICsxMTAxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIElubGluZUNhbGxGcmFt
ZTo6S2luZCwKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrKTsKICAg
ICAgICAgCi0gICAgICAgIH5JbmxpbmVTdGFja0VudHJ5KCkKLSAgICAgICAgewotICAgICAgICAg
ICAgbV9ieXRlQ29kZVBhcnNlci0+bV9pbmxpbmVTdGFja1RvcCA9IG1fY2FsbGVyOwotICAgICAg
ICB9CisgICAgICAgIH5JbmxpbmVTdGFja0VudHJ5KCk7CiAgICAgICAgIAogICAgICAgICBWaXJ0
dWFsUmVnaXN0ZXIgcmVtYXBPcGVyYW5kKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSBjb25zdAog
ICAgICAgICB7CkBAIC0xMTIwLDYgKzExMTYsOCBAQCBwcml2YXRlOgogICAgIAogICAgIElubGlu
ZVN0YWNrRW50cnkqIG1faW5saW5lU3RhY2tUb3A7CiAgICAgCisgICAgSUNTdGF0dXNDb250ZXh0
U3RhY2sgbV9pY0NvbnRleHRTdGFjazsKKyAgICAKICAgICBzdHJ1Y3QgRGVsYXllZFNldExvY2Fs
IHsKICAgICAgICAgQ29kZU9yaWdpbiBtX29yaWdpbjsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IG1fb3BlcmFuZDsKQEAgLTExNDYsMTAgKzExNDQsNiBAQCBwcml2YXRlOgogICAgIAogICAgIFZl
Y3RvcjxEZWxheWVkU2V0TG9jYWwsIDI+IG1fc2V0TG9jYWxRdWV1ZTsKIAotICAgIENvZGVCbG9j
ayogbV9kZmdDb2RlQmxvY2s7Ci0gICAgQ2FsbExpbmtTdGF0dXM6OkNvbnRleHRNYXAgbV9jYWxs
Q29udGV4dE1hcDsKLSAgICBTdHViSW5mb01hcCBtX2RmZ1N0dWJJbmZvczsKLSAgICAKICAgICBJ
bnN0cnVjdGlvbiogbV9jdXJyZW50SW5zdHJ1Y3Rpb247CiAgICAgYm9vbCBtX2hhc0RlYnVnZ2Vy
RW5hYmxlZDsKIH07CkBAIC00MDA3LDkgKzQwMDEsMTggQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlR2V0QnlJZCgKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKKyAgICAvLyBGSVhN
RTogSWYgd2UgdXNlIHRoZSBHZXRCeUlkU3RhdHVzIGZvciBhbnl0aGluZyB0aGVuIHdlIHNob3Vs
ZCByZWNvcmQgaXQgYW5kIGluc2VydCBhIG5vZGUKKyAgICAvLyBhZnRlciBldmVyeXRoaW5nIGVs
c2UgKGxpa2UgdGhlIEdldEJ5T2Zmc2V0IG9yIHdoYXRldmVyKSB0aGF0IHdpbGwgZmlsdGVyIHRo
ZSByZWNvcmRlZAorICAgIC8vIEdldEJ5SWRTdGF0dXMuIFRoYXQgbWVhbnMgdGhhdCB0aGUgY29u
c3RhbnQgZm9sZGVyIGFsc28gbmVlZHMgdG8gZG8gdGhlIHNhbWUhCisgICAgCiAgICAgaWYgKGdl
dEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSA+IDEpIHsKICAgICAgICAgaWYgKGdldEJ5SWRTdGF0
dXMubWFrZXNDYWxscygpIHx8ICFpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKQotICAgICAgICAg
ICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcoKSkgeworICAgICAg
ICAgICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcoKQorICAgICAg
ICAgICAgfHwgZ2V0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpID4gT3B0aW9uczo6bWF4UG9seW1v
cnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplKCkpIHsKKyAgICAgICAgICAgIGlmIChmYWxzZSAm
JiBnZXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgPiBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0Fj
Y2Vzc0lubGluaW5nTGlzdFNpemUoKSkgeworICAgICAgICAgICAgICAgIGRhdGFMb2coIkF0ICIs
IGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOworICAgICAgICAgICAgICAgIGRhdGFMb2coIkdp
dmluZyB1cCBvbjogIiwgZ2V0QnlJZFN0YXR1cywgIlxuIik7CisgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRlc3RpbmF0aW9uT3BlcmFuZCksCiAgICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChnZXRCeUlkLCBPcEluZm8oaWRlbnRpZmllck51bWJlciksIE9w
SW5mbyhwcmVkaWN0aW9uKSwgYmFzZSkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDE1MCw3
ICs0MTUzLDEwIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgCiAg
ICAgaWYgKHB1dEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSA+IDEpIHsKICAgICAgICAgaWYgKCFp
c0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSB8fCBwdXRCeUlkU3RhdHVzLm1ha2VzQ2FsbHMoKQot
ICAgICAgICAgICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcoKSkg
eworICAgICAgICAgICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmco
KQorICAgICAgICAgICAgfHwgcHV0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpID4gT3B0aW9uczo6
bWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplKCkpIHsKKyAgICAgICAgICAgIGlm
IChmYWxzZSAmJiBwdXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgPiBPcHRpb25zOjptYXhQb2x5
bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemUoKSkKKyAgICAgICAgICAgICAgICBkYXRhTG9n
KCJHaXZpbmcgdXAgb246ICIsIHB1dEJ5SWRTdGF0dXMsICJcbiIpOwogICAgICAgICAgICAgZW1p
dFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlz
RGlyZWN0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNjYwMywxMiArNjYw
OSwxOCBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lCiAgICAgICAg
IC8vIFdlIGRvIHRoaXMgd2hpbGUgaG9sZGluZyB0aGUgbG9jayBiZWNhdXNlIHdlIHdhbnQgdG8g
ZW5jb3VyYWdlIFN0cnVjdHVyZVN0dWJJbmZvJ3MKICAgICAgICAgLy8gdG8gYmUgcG90ZW50aWFs
bHkgYWRkZWQgdG8gb3BlcmF0aW9ucyBhbmQgYmVjYXVzZSB0aGUgcHJvZmlsZWQgYmxvY2sgY291
bGQgYmUgaW4gdGhlCiAgICAgICAgIC8vIG1pZGRsZSBvZiBMTEludC0+SklUIHRpZXItdXAgaW4g
d2hpY2ggY2FzZSB3ZSB3b3VsZCBiZSBhZGRpbmcgdGhlIGluZm8ncyByaWdodCBub3cuCi0gICAg
ICAgIGlmIChtX3Byb2ZpbGVkQmxvY2stPmhhc0Jhc2VsaW5lSklUUHJvZmlsaW5nKCkpIHsKLSAg
ICAgICAgICAgIG1fcHJvZmlsZWRCbG9jay0+Z2V0U3R1YkluZm9NYXAobG9ja2VyLCBtX3N0dWJJ
bmZvcyk7Ci0gICAgICAgICAgICBtX3Byb2ZpbGVkQmxvY2stPmdldENhbGxMaW5rSW5mb01hcChs
b2NrZXIsIG1fY2FsbExpbmtJbmZvcyk7Ci0gICAgICAgICAgICBtX3Byb2ZpbGVkQmxvY2stPmdl
dEJ5VmFsSW5mb01hcChsb2NrZXIsIG1fYnlWYWxJbmZvcyk7Ci0gICAgICAgIH0KKyAgICAgICAg
aWYgKG1fcHJvZmlsZWRCbG9jay0+aGFzQmFzZWxpbmVKSVRQcm9maWxpbmcoKSkKKyAgICAgICAg
ICAgIG1fcHJvZmlsZWRCbG9jay0+Z2V0SUNTdGF0dXNNYXAobG9ja2VyLCBtX2Jhc2VsaW5lTWFw
KTsKKyAgICB9CisgICAgCisgICAgbV9vcHRpbWl6ZWRDb250ZXh0LmJhc2VsaW5lQ29kZUJsb2Nr
ID0gbV9wcm9maWxlZEJsb2NrOworICAgIENvZGVCbG9jayogb3B0aW1pemVkQmxvY2sgPSBtX3By
b2ZpbGVkQmxvY2stPnJlcGxhY2VtZW50KCk7CisgICAgbV9vcHRpbWl6ZWRDb250ZXh0Lm9wdGlt
aXplZENvZGVCbG9jayA9IG9wdGltaXplZEJsb2NrOworICAgIGlmIChvcHRpbWl6ZWRCbG9jaykg
eworICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG9wdGltaXplZEJsb2NrLT5tX2xv
Y2spOworICAgICAgICBvcHRpbWl6ZWRCbG9jay0+Z2V0SUNTdGF0dXNNYXAobG9ja2VyLCBtX29w
dGltaXplZENvbnRleHQubWFwKTsKICAgICB9CisgICAgbV9pY0NvbnRleHRTdGFjay5hcHBlbmQo
Jm1fb3B0aW1pemVkQ29udGV4dCk7CiAgICAgCiAgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzV2l0aEZpeHVwID0gc3RkOjptYXg8aW50Pihhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOwogCkBAIC02NjczLDYgKzY2ODUsMTMgQEAg
Qnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZQogICAgIGJ5dGVDb2RlUGFy
c2VyLT5tX2lubGluZVN0YWNrVG9wID0gdGhpczsKIH0KIAorQnl0ZUNvZGVQYXJzZXI6OklubGlu
ZVN0YWNrRW50cnk6On5JbmxpbmVTdGFja0VudHJ5KCkKK3sKKyAgICBtX2J5dGVDb2RlUGFyc2Vy
LT5tX2lubGluZVN0YWNrVG9wID0gbV9jYWxsZXI7CisgICAgUkVMRUFTRV9BU1NFUlQobV9ieXRl
Q29kZVBhcnNlci0+bV9pY0NvbnRleHRTdGFjay5sYXN0KCkgPT0gJm1fb3B0aW1pemVkQ29udGV4
dCk7CisgICAgbV9ieXRlQ29kZVBhcnNlci0+bV9pY0NvbnRleHRTdGFjay5yZW1vdmVMYXN0KCk7
Cit9CisKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2NrKCkKIHsKICAgICBjbGVh
ckNhY2hlcygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRh
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRh
LmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29t
bW9uRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNiArMTI1LDcgQEAgcHVibGljOgogICAg
IEJhZzxDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQ+IHdhdGNocG9pbnRzOwogICAgIEJh
ZzxBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ+IGFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2lu
dHM7CiAgICAgQmFnPEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludD4gYWRh
cHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50czsKKyAgICBSZWNvcmRlZFN0YXR1
c2VzIHJlY29yZGVkU3RhdHVzZXM7CiAgICAgVmVjdG9yPEp1bXBSZXBsYWNlbWVudD4ganVtcFJl
cGxhY2VtZW50czsKICAgICAKICAgICBTY3JhdGNoQnVmZmVyKiBjYXRjaE9TUkVudHJ5QnVmZmVy
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJ
KHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29t
cGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODgsNiArMTg4LDggQEAgdm9pZCBKSVRDb21w
aWxlcjo6Y29tcGlsZUV4Y2VwdGlvbkhhbmRsZQogCiB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExp
bmtCdWZmZXImIGxpbmtCdWZmZXIpCiB7CisgICAgbV9qaXRDb2RlLT5jb21tb24ucmVjb3JkZWRT
dGF0dXNlcyA9IFdURk1vdmUobV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcyk7CisgICAg
CiAgICAgLy8gTGluayB0aGUgY29kZSwgcG9wdWxhdGUgZGF0YSBpbiBDb2RlQmxvY2sgZGF0YSBz
dHJ1Y3R1cmVzLgogICAgIG1faml0Q29kZS0+Y29tbW9uLmZyYW1lUmVnaXN0ZXJDb3VudCA9IG1f
Z3JhcGguZnJhbWVSZWdpc3RlckNvdW50KCk7CiAgICAgbV9qaXRDb2RlLT5jb21tb24ucmVxdWly
ZWRSZWdpc3RlckNvdW50Rm9yRXhpdCA9IG1fZ3JhcGgucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9y
RXhpdCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0QmFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0QmFz
ZS5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDExICs0MiwxNyBAQCB2b2lk
IE9TUkV4aXRCYXNlOjpjb25zaWRlckFkZGluZ0FzRnJlcXVlCiAgICAgICAgIGJhc2VsaW5lQ29k
ZUJsb2NrRm9yT3JpZ2luQW5kQmFzZWxpbmVDb2RlQmxvY2soCiAgICAgICAgICAgICBtX2NvZGVP
cmlnaW5Gb3JFeGl0UHJvZmlsZSwgcHJvZmlsZWRDb2RlQmxvY2spOwogICAgIGlmIChzb3VyY2VQ
cm9maWxlZENvZGVCbG9jaykgeworICAgICAgICBFeGl0aW5nSW5saW5lS2luZCBpbmxpbmVLaW5k
OworICAgICAgICBpZiAobV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGUuaW5saW5lQ2FsbEZyYW1l
KQorICAgICAgICAgICAgaW5saW5lS2luZCA9IEV4aXRGcm9tSW5saW5lZDsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgaW5saW5lS2luZCA9IEV4aXRGcm9tTm90SW5saW5lZDsKKyAgICAgICAg
CiAgICAgICAgIEZyZXF1ZW50RXhpdFNpdGUgc2l0ZTsKICAgICAgICAgaWYgKG1fd2FzSG9pc3Rl
ZCkKLSAgICAgICAgICAgIHNpdGUgPSBGcmVxdWVudEV4aXRTaXRlKEhvaXN0aW5nRmFpbGVkLCBq
aXRUeXBlKTsKKyAgICAgICAgICAgIHNpdGUgPSBGcmVxdWVudEV4aXRTaXRlKEhvaXN0aW5nRmFp
bGVkLCBqaXRUeXBlLCBpbmxpbmVLaW5kKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc2l0
ZSA9IEZyZXF1ZW50RXhpdFNpdGUobV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGUuYnl0ZWNvZGVJ
bmRleCwgbV9raW5kLCBqaXRUeXBlKTsKKyAgICAgICAgICAgIHNpdGUgPSBGcmVxdWVudEV4aXRT
aXRlKG1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlLmJ5dGVjb2RlSW5kZXgsIG1fa2luZCwgaml0
VHlwZSwgaW5saW5lS2luZCk7CiAgICAgICAgIEV4aXRQcm9maWxlOjphZGQoc291cmNlUHJvZmls
ZWRDb2RlQmxvY2ssIHNpdGUpOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUGxhbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQbGFuLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQbGFuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMzLDYgKzYzMyw4IEBAIHZvaWQg
UGxhbjo6Y2hlY2tMaXZlbmVzc0FuZFZpc2l0Q2hpbGRyZW4KICAgICBjbGVhbk11c3RIYW5kbGVW
YWx1ZXNJZk5lY2Vzc2FyeSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IG11c3RIYW5kbGVWYWx1
ZXMuc2l6ZSgpOyBpLS07KQogICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG11c3RI
YW5kbGVWYWx1ZXNbaV0pOworICAgIAorICAgIHJlY29yZGVkU3RhdHVzZXMubWFya0lmQ2hlYXAo
dmlzaXRvcik7CiAKICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKGNvZGVCbG9jayk7CiAg
ICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxvY2stPmFsdGVybmF0aXZlKCkpOwpA
QCAtNjQ5LDYgKzY1MSwxMSBAQCB2b2lkIFBsYW46OmNoZWNrTGl2ZW5lc3NBbmRWaXNpdENoaWxk
cmVuCiAgICAgdHJhbnNpdGlvbnMudmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKIH0KIAordm9pZCBQ
bGFuOjpmaW5hbGl6ZUluR0MoKQoreworICAgIHJlY29yZGVkU3RhdHVzZXMuZmluYWxpemUoKTsK
K30KKwogYm9vbCBQbGFuOjppc0tub3duVG9CZUxpdmVEdXJpbmdHQygpCiB7CiAgICAgaWYgKHN0
YWdlID09IENhbmNlbGxlZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxh
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5oCShy
ZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaAko
d29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBAQCBzdHJ1Y3QgUGxhbiA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlCiAgICAgdm9pZCBpdGVyYXRlQ29kZUJsb2Nrc0ZvckdDKGNvbnN0IEZ1
bmMmKTsKICAgICB2b2lkIGNoZWNrTGl2ZW5lc3NBbmRWaXNpdENoaWxkcmVuKFNsb3RWaXNpdG9y
Jik7CiAgICAgYm9vbCBpc0tub3duVG9CZUxpdmVEdXJpbmdHQygpOworICAgIHZvaWQgZmluYWxp
emVJbkdDKCk7CiAgICAgdm9pZCBjYW5jZWwoKTsKIAogICAgIGJvb2wgY2FuVGllclVwQW5kT1NS
RW50ZXIoKSBjb25zdCB7IHJldHVybiAhdGllclVwQW5kT1NSRW50ZXJCeXRlY29kZXMuaXNFbXB0
eSgpOyB9CkBAIC0xMDQsNiArMTA1LDcgQEAgc3RydWN0IFBsYW4gOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZQogICAgIERlc2lyZWRJZGVudGlmaWVycyBpZGVudGlmaWVyczsKICAgICBEZXNp
cmVkV2Vha1JlZmVyZW5jZXMgd2Vha1JlZmVyZW5jZXM7CiAgICAgRGVzaXJlZFRyYW5zaXRpb25z
IHRyYW5zaXRpb25zOworICAgIFJlY29yZWRTdGF0dXNlcyByZWNvcmRlZFN0YXR1c2VzOwogICAg
IAogICAgIGJvb2wgd2lsbFRyeVRvVGllclVwIHsgZmFsc2UgfTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zOTMsOCArMzkzLDEwIEBAIHZvaWQgV29ya2xpc3Q6OnJlbW92ZURlYWRQbGFucyhWTSYgdm0p
CiAgICAgICAgICAgICBQbGFuKiBwbGFuID0gaXRlci0+dmFsdWUuZ2V0KCk7CiAgICAgICAgICAg
ICBpZiAocGxhbi0+dm0gIT0gJnZtKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgaWYgKHBsYW4tPmlzS25vd25Ub0JlTGl2ZUR1cmluZ0dDKCkpCisgICAgICAgICAgICBp
ZiAocGxhbi0+aXNLbm93blRvQmVMaXZlRHVyaW5nR0MoKSkgeworICAgICAgICAgICAgICAgIHBs
YW4tPmZpbmFsaXplSW5HQygpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgfQogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocGxhbi0+c3RhZ2UgIT0gUGxhbjo6Q2Fu
Y2VsbGVkKTsgLy8gU2hvdWxkIG5vdCBiZSBjYW5jZWxsZWQsIHlldC4KICAgICAgICAgICAgIEFT
U0VSVCghZGVhZFBsYW5LZXlzLmNvbnRhaW5zKHBsYW4tPmtleSgpKSk7CiAgICAgICAgICAgICBk
ZWFkUGxhbktleXMuYWRkKHBsYW4tPmtleSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCShyZXZpc2lvbiAy
MzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsOCBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX21pbkNhcGFjaXR5LCBE
aXJlY3RBcmd1bWVudHM6Om9mZnNldE9mTWluQ2FwYWNpdHkoKSkgXAogICAgIG1hY3JvKERpcmVj
dEFyZ3VtZW50c19tYXBwZWRBcmd1bWVudHMsIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZNYXBw
ZWRBcmd1bWVudHMoKSkgXAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19tb2RpZmllZEFyZ3Vt
ZW50c0Rlc2NyaXB0b3IsIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZNb2RpZmllZEFyZ3VtZW50
c0Rlc2NyaXB0b3IoKSkgXAorICAgIG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFfYWxsb2NhdG9yLCBG
dW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmpl
Y3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZBbGxvY2F0b3IoKSkgXAorICAgIG1hY3JvKEZ1
bmN0aW9uUmFyZURhdGFfc3RydWN0dXJlLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVj
dEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZT
dHJ1Y3R1cmUoKSkgXAogICAgIG1hY3JvKEdldHRlclNldHRlcl9nZXR0ZXIsIEdldHRlclNldHRl
cjo6b2Zmc2V0T2ZHZXR0ZXIoKSkgXAogICAgIG1hY3JvKEdldHRlclNldHRlcl9zZXR0ZXIsIEdl
dHRlclNldHRlcjo6b2Zmc2V0T2ZTZXR0ZXIoKSkgXAogICAgIG1hY3JvKEpTQXJyYXlCdWZmZXJW
aWV3X2xlbmd0aCwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpIFwKQEAgLTEx
MiwxMCArMTE0LDEwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNy
byhTdHJpbmdJbXBsX2xlbmd0aCwgU3RyaW5nSW1wbDo6bGVuZ3RoTWVtb3J5T2Zmc2V0KCkpIFwK
ICAgICBtYWNybyhTdHJ1Y3R1cmVfY2xhc3NJbmZvLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNl
dCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlX2dsb2JhbE9iamVjdCwgU3RydWN0dXJlOjpnbG9i
YWxPYmplY3RPZmZzZXQoKSkgXAorICAgIG1hY3JvKFN0cnVjdHVyZV9pbmRleGluZ01vZGVJbmNs
dWRpbmdIaXN0b3J5LCBTdHJ1Y3R1cmU6OmluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnlPZmZz
ZXQoKSkgXAorICAgIG1hY3JvKFN0cnVjdHVyZV9pbmxpbmVDYXBhY2l0eSwgU3RydWN0dXJlOjpp
bmxpbmVDYXBhY2l0eU9mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlX3Byb3RvdHlwZSwg
U3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVyZV9zdHJ1
Y3R1cmVJRCwgU3RydWN0dXJlOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSBcCi0gICAgbWFjcm8oU3Ry
dWN0dXJlX2lubGluZUNhcGFjaXR5LCBTdHJ1Y3R1cmU6OmlubGluZUNhcGFjaXR5T2Zmc2V0KCkp
IFwKLSAgICBtYWNybyhTdHJ1Y3R1cmVfaW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeSwgU3Ry
dWN0dXJlOjppbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5T2Zmc2V0KCkpIFwKICAgICBtYWNy
byhIYXNoTWFwSW1wbF9jYXBhY2l0eSwgSGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNoTWFw
QnVja2V0RGF0YUtleT4+OjpvZmZzZXRPZkNhcGFjaXR5KCkpIFwKICAgICBtYWNybyhIYXNoTWFw
SW1wbF9idWZmZXIsICBIYXNoTWFwSW1wbDxIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRh
S2V5Pj46Om9mZnNldE9mQnVmZmVyKCkpIFwKICAgICBtYWNybyhIYXNoTWFwSW1wbF9oZWFkLCAg
SGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT4+OjpvZmZzZXRP
ZkhlYWQoKSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTEsNiArMzUxLDcgQEAg
aW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgUHV0QnlW
YWxEaXJlY3Q6CiAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgIGNhc2UgTWF0Y2hTdHJ1
Y3R1cmU6CisgICAgY2FzZSBDcmVhdGVUaGlzOgogICAgICAgICAvLyBUaGVzZSBhcmUgT0suCiAg
ICAgICAgIGJyZWFrOwogCkBAIC0zNjIsNyArMzYzLDYgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZl
bCBjYW5Db21waWxlKE5vZGUqIAogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgSWRlbnRpdHlX
aXRoUHJvZmlsZToKLSAgICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgY2FzZSBDaGVja1RpZXJVcElu
TG9vcDoKICAgICBjYXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6CiAgICAgY2FzZSBDaGVja1Rp
ZXJVcEF0UmV0dXJuOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NDcsNiArODQ3LDkg
QEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBOZXdBcnJheVdpdGhTcHJlYWQ6CiAgICAgICAgICAg
ICBjb21waWxlTmV3QXJyYXlXaXRoU3ByZWFkKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBDcmVhdGVUaGlzOgorICAgICAgICAgICAgY29tcGlsZUNyZWF0ZVRoaXMoKTsKKyAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNwcmVhZDoKICAgICAgICAgICAgIGNvbXBp
bGVTcHJlYWQoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTY2Miw2ICs1NjY1LDQwIEBAIHBy
aXZhdGU6CiAKICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgIH0KKyAgICAKKyAgICB2
b2lkIGNvbXBpbGVDcmVhdGVUaGlzKCkKKyAgICB7CisgICAgICAgIExWYWx1ZSBjYWxsZWUgPSBs
b3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGlzRnVuY3Rp
b25CbG9jayA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGhhc1JhcmVE
YXRhID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgc2xvd1BhdGggPSBt
X291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291
dC5uZXdCbG9jaygpOworCisgICAgICAgIG1fb3V0LmJyYW5jaChpc0Z1bmN0aW9uKGNhbGxlZSwg
cHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgpKSksIHVzdWFsbHkoaXNGdW5jdGlvbkJsb2NrKSwg
cmFyZWx5KHNsb3dQYXRoKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291
dC5hcHBlbmRUbyhpc0Z1bmN0aW9uQmxvY2ssIGhhc1JhcmVEYXRhKTsKKyAgICAgICAgTFZhbHVl
IHJhcmVEYXRhID0gbV9vdXQubG9hZFB0cihjYWxsZWUsIG1faGVhcHMuSlNGdW5jdGlvbl9yYXJl
RGF0YSk7CisgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5pc1plcm82NChyYXJlRGF0YSksIHJh
cmVseShzbG93UGF0aCksIHVzdWFsbHkoaGFzUmFyZURhdGEpKTsKKworICAgICAgICBtX291dC5h
cHBlbmRUbyhoYXNSYXJlRGF0YSwgc2xvd1BhdGgpOworICAgICAgICBMVmFsdWUgYWxsb2NhdG9y
ID0gbV9vdXQubG9hZFB0cihyYXJlRGF0YSwgbV9oZWFwcy5GdW5jdGlvblJhcmVEYXRhX2FsbG9j
YXRvcik7CisgICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmUgPSBtX291dC5sb2FkUHRyKHJhcmVEYXRh
LCBtX2hlYXBzLkZ1bmN0aW9uUmFyZURhdGFfc3RydWN0dXJlKTsKKyAgICAgICAgTFZhbHVlIGJ1
dHRlcmZseSA9IG1fb3V0LmNvbnN0SW50UHRyKDApOworICAgICAgICBWYWx1ZUZyb21CbG9jayBm
YXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGFsbG9jYXRlT2JqZWN0KGFsbG9jYXRvciwgc3RydWN0
dXJlLCBidXR0ZXJmbHksIHNsb3dQYXRoKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0
aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93UGF0aCwgY29udGludWF0aW9uKTsK
KyAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwo
CisgICAgICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0ZVRoaXMp
LCBtX2NhbGxGcmFtZSwgY2FsbGVlLCBtX291dC5jb25zdEludDMyKG1fbm9kZS0+aW5saW5lQ2Fw
YWNpdHkoKSkpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAg
IG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICBMVmFsdWUg
cmVzdWx0ID0gbV9vdXQucGhpKEludDY0LCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KTsKKworICAg
ICAgICBtdXRhdG9yRmVuY2UoKTsKKyAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAgIH0K
IAogICAgIHZvaWQgY29tcGlsZVNwcmVhZCgpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzUsNiArMjc1
LDcgQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbgogICAgIHYodW5z
aWduZWQsIG1heEFjY2Vzc1ZhcmlhbnRMaXN0U2l6ZSwgOCwgTm9ybWFsLCBudWxscHRyKSBcCiAg
ICAgdihib29sLCB1c2VQb2x5dmFyaWFudERldmlydHVhbGl6YXRpb24sIHRydWUsIE5vcm1hbCwg
bnVsbHB0cikgXAogICAgIHYoYm9vbCwgdXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZywgdHJ1
ZSwgTm9ybWFsLCBudWxscHRyKSBcCisgICAgdih1bnNpZ25lZCwgbWF4UG9seW1vcnBoaWNBY2Nl
c3NJbmxpbmluZ0xpc3RTaXplLCAzLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KGJvb2wsIHVz
ZVBvbHltb3JwaGljQ2FsbElubGluaW5nLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2
KGJvb2wsIHVzZVBvbHltb3JwaGljQ2FsbElubGluaW5nRm9yTm9uU3R1YlN0YXR1cywgZmFsc2Us
IE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYodW5zaWduZWQsIG1heFBvbHltb3JwaGljQ2FsbFZh
cmlhbnRMaXN0U2l6ZSwgMTUsIE5vcm1hbCwgbnVsbHB0cikgXAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341604</attachid>
            <date>2018-05-30 14:48:49 -0700</date>
            <delta_ts>2018-05-30 15:39:42 -0700</delta_ts>
            <desc>DFG/FTL filtering of statuses seems to be written</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>114397</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgJKHJldmlz
aW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8u
aAkod29ya2luZyBjb3B5KQpAQCAtMjY2LDEyICsyNjYsNiBAQCBpbmxpbmUgdW5zaWduZWQgZ2V0
QnlWYWxJbmZvQnl0ZWNvZGVJbmRlCiAgICAgcmV0dXJuIGluZm8tPmJ5dGVjb2RlSW5kZXg7CiB9
CiAKLXR5cGVkZWYgSGFzaE1hcDxDb2RlT3JpZ2luLCBCeVZhbEluZm8qLCBDb2RlT3JpZ2luQXBw
cm94aW1hdGVIYXNoPiBCeVZhbEluZm9NYXA7Ci0KLSNlbHNlIC8vIEVOQUJMRShKSVQpCi0KLXR5
cGVkZWYgSGFzaE1hcDxpbnQsIHZvaWQqPiBCeVZhbEluZm9NYXA7Ci0KICNlbmRpZiAvLyBFTkFC
TEUoSklUKQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkocmV2aXNpb24gMjMyMjI3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVz
dWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNDI3LDcgKzQyNyw3IEBAIHN0YXRpYyB2b2lkIGR1bXBDaGFpbihQcmlu
dFN0cmVhbSYgb3V0LCAKIH0KIAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVjb2Rl
RHVtcGVyPEJsb2NrPjo6cHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwg
aW50IGxvY2F0aW9uLCBjb25zdCBTdHViSW5mb01hcCYgbWFwKQordm9pZCBCeXRlY29kZUR1bXBl
cjxCbG9jaz46OnByaW50R2V0QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBs
b2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBjb25zdCBhdXRv
KiBpbnN0cnVjdGlvbiA9IGluc3RydWN0aW9uc0JlZ2luKCkgKyBsb2NhdGlvbjsKIApAQCAtNDQ3
LDcgKzQ0Nyw3IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludEdldEJ5SWQKICAg
ICB9CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YlB0
ciA9IG1hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpKSB7CisgICAgaWYgKFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViUHRyID0gc3RhdHVzTWFwLmdldChDb2RlT3JpZ2luKGxvY2F0aW9uKSkuc3R1
YkluZm8pIHsKICAgICAgICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gKnN0dWJQdHI7
CiAgICAgICAgIGlmIChzdHViSW5mby5yZXNldEJ5R0MpCiAgICAgICAgICAgICBvdXQucHJpbnQo
IiAoUmVzZXQgQnkgR0MpIik7CkBAIC00ODgsMTIgKzQ4OCwxMiBAQCB2b2lkIEJ5dGVjb2RlRHVt
cGVyPEJsb2NrPjo6cHJpbnRHZXRCeUlkCiAgICAgICAgIG91dC5wcmludGYoIikiKTsKICAgICB9
CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShtYXApOworICAgIFVOVVNFRF9QQVJBTShzdGF0dXNN
YXApOwogI2VuZGlmCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgotdm9pZCBCeXRlY29kZUR1
bXBlcjxCbG9jaz46OnByaW50UHV0QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGlu
dCBsb2NhdGlvbiwgY29uc3QgU3R1YkluZm9NYXAmIG1hcCkKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8
QmxvY2s+OjpwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9j
YXRpb24sIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgY29uc3QgYXV0byog
aW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNCZWdpbigpICsgbG9jYXRpb247CiAKQEAgLTUyMSw3
ICs1MjEsNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRQdXRCeUlkCiAgICAg
fQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJQdHIg
PSBtYXAuZ2V0KENvZGVPcmlnaW4obG9jYXRpb24pKSkgeworICAgIGlmIChTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YlB0ciA9IHN0YXR1c01hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpLnN0dWJJ
bmZvKSB7CiAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9ICpzdHViUHRyOwog
ICAgICAgICBpZiAoc3R1YkluZm8ucmVzZXRCeUdDKQogICAgICAgICAgICAgb3V0LnByaW50KCIg
KFJlc2V0IEJ5IEdDKSIpOwpAQCAtNTQ3LDEyICs1NDcsMTIgQEAgdm9pZCBCeXRlY29kZUR1bXBl
cjxCbG9jaz46OnByaW50UHV0QnlJZAogICAgICAgICBvdXQucHJpbnRmKCIpIik7CiAgICAgfQog
I2Vsc2UKLSAgICBVTlVTRURfUEFSQU0obWFwKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdHVzTWFw
KTsKICNlbmRpZgogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1w
ZXI8QmxvY2s+OjpwcmludEluQnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBs
b2NhdGlvbiwgY29uc3QgU3R1YkluZm9NYXAmIG1hcCkKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8Qmxv
Y2s+OjpwcmludEluQnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlv
biwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBjb25zdCBhdXRvKiBpbnN0
cnVjdGlvbiA9IGluc3RydWN0aW9uc0JlZ2luKCkgKyBsb2NhdGlvbjsKIApAQCAtNTYxLDcgKzU2
MSw3IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludEluQnlJZEMKICAgICBVTlVT
RURfUEFSQU0oaWRlbnQpOyAvLyB0ZWxsIHRoZSBjb21waWxlciB0byBzaHV0IHVwIGluIGNlcnRh
aW4gcGxhdGZvcm0gY29uZmlndXJhdGlvbnMuCiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmIChT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YlB0ciA9IG1hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikp
KSB7CisgICAgaWYgKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViUHRyID0gc3RhdHVzTWFwLmdldChD
b2RlT3JpZ2luKGxvY2F0aW9uKSkuc3R1YkluZm8pIHsKICAgICAgICAgU3RydWN0dXJlU3R1Yklu
Zm8mIHN0dWJJbmZvID0gKnN0dWJQdHI7CiAgICAgICAgIGlmIChzdHViSW5mby5yZXNldEJ5R0Mp
CiAgICAgICAgICAgICBvdXQucHJpbnQoIiAoUmVzZXQgQnkgR0MpIik7CkBAIC02MDAsMjYgKzYw
MCwyNiBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRJbkJ5SWRDCiAgICAgfQog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0ob3V0KTsKLSAgICBVTlVTRURfUEFSQU0obWFwKTsKKyAg
ICBVTlVTRURfUEFSQU0oc3RhdHVzTWFwKTsKICNlbmRpZgogfQogCiAjaWYgRU5BQkxFKEpJVCkK
IHRlbXBsYXRlPHR5cGVuYW1lIEJsb2NrPgotdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1
bXBDYWxsTGlua1N0YXR1cyhQcmludFN0cmVhbSYsIHVuc2lnbmVkLCBjb25zdCBDYWxsTGlua0lu
Zm9NYXAmKQordm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBDYWxsTGlua1N0YXR1cyhQ
cmludFN0cmVhbSYsIHVuc2lnbmVkLCBjb25zdCBJQ1N0YXR1c01hcCYpCiB7CiB9CiAKIHRlbXBs
YXRlPD4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8Q29kZUJsb2NrPjo6ZHVtcENhbGxMaW5rU3RhdHVz
KFByaW50U3RyZWFtJiBvdXQsIHVuc2lnbmVkIGxvY2F0aW9uLCBjb25zdCBDYWxsTGlua0luZm9N
YXAmIG1hcCkKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8Q29kZUJsb2NrPjo6ZHVtcENhbGxMaW5rU3Rh
dHVzKFByaW50U3RyZWFtJiBvdXQsIHVuc2lnbmVkIGxvY2F0aW9uLCBjb25zdCBJQ1N0YXR1c01h
cCYgc3RhdHVzTWFwKQogewogICAgIGlmIChibG9jaygpLT5qaXRUeXBlKCkgIT0gSklUQ29kZTo6
RlRMSklUKQotICAgICAgICBvdXQucHJpbnQoIiBzdGF0dXMoIiwgQ2FsbExpbmtTdGF0dXM6OmNv
bXB1dGVGb3IoYmxvY2soKSwgbG9jYXRpb24sIG1hcCksICIpIik7CisgICAgICAgIG91dC5wcmlu
dCgiIHN0YXR1cygiLCBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcihibG9jaygpLCBsb2NhdGlv
biwgc3RhdHVzTWFwKSwgIikiKTsKIH0KICNlbmRpZgogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4K
LXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludENhbGxPcChQcmludFN0cmVhbSYgb3V0
LCBpbnQgbG9jYXRpb24sIGNvbnN0IHR5cGVuYW1lIEJsb2NrOjpJbnN0cnVjdGlvbiomIGl0LCBj
b25zdCBjaGFyKiBvcCwgQ2FjaGVEdW1wTW9kZSBjYWNoZUR1bXBNb2RlLCBib29sJiBoYXNQcmlu
dGVkUHJvZmlsaW5nLCBjb25zdCBDYWxsTGlua0luZm9NYXAmIG1hcCkKK3ZvaWQgQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpwcmludENhbGxPcChQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24s
IGNvbnN0IHR5cGVuYW1lIEJsb2NrOjpJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCwg
Q2FjaGVEdW1wTW9kZSBjYWNoZUR1bXBNb2RlLCBib29sJiBoYXNQcmludGVkUHJvZmlsaW5nLCBj
b25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQogewogICAgIGludCBkc3QgPSAoKytpdCktPnUu
b3BlcmFuZDsKICAgICBpbnQgZnVuYyA9ICgrK2l0KS0+dS5vcGVyYW5kOwpAQCAtNjM4LDcgKzYz
OCw3IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludENhbGxPcCgKICAgICAgICAg
ICAgICAgICBvdXQucHJpbnRmKCIgbGxpbnQoJXApIiwgb2JqZWN0KTsKICAgICAgICAgfQogI2lm
IEVOQUJMRShKSVQpCi0gICAgICAgIGlmIChDYWxsTGlua0luZm8qIGluZm8gPSBtYXAuZ2V0KENv
ZGVPcmlnaW4obG9jYXRpb24pKSkgeworICAgICAgICBpZiAoQ2FsbExpbmtJbmZvKiBpbmZvID0g
c3RhdHVzTWFwLmdldChDb2RlT3JpZ2luKGxvY2F0aW9uKSkuY2FsbExpbmtJbmZvKSB7CiAgICAg
ICAgICAgICBpZiAoaW5mby0+aGF2ZUxhc3RTZWVuQ2FsbGVlKCkpIHsKICAgICAgICAgICAgICAg
ICBKU09iamVjdCogb2JqZWN0ID0gaW5mby0+bGFzdFNlZW5DYWxsZWUoKTsKICAgICAgICAgICAg
ICAgICBpZiAoYXV0byogZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPigqdm0o
KSwgb2JqZWN0KSkKQEAgLTY0OCw5ICs2NDgsOSBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2Nr
Pjo6cHJpbnRDYWxsT3AoCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBkdW1w
Q2FsbExpbmtTdGF0dXMob3V0LCBsb2NhdGlvbiwgbWFwKTsKKyAgICAgICAgZHVtcENhbGxMaW5r
U3RhdHVzKG91dCwgbG9jYXRpb24sIHN0YXR1c01hcCk7CiAjZWxzZQotICAgICAgICBVTlVTRURf
UEFSQU0obWFwKTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHN0YXR1c01hcCk7CiAjZW5kaWYKICAg
ICB9CiAgICAgKytpdDsKQEAgLTY3OCw3ICs2NzgsNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJs
b2NrPjo6cHJpbnRMb2NhdGlvCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgotdm9pZCBCeXRl
Y29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCB0
eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6
SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgU3R1YkluZm9NYXAmIHN0dWJJbmZvcywgY29uc3QgQ2Fs
bExpbmtJbmZvTWFwJiBjYWxsTGlua0luZm9zKQordm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46
OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5z
dHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwg
Y29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBpbnQgbG9jYXRpb24gPSBpdCAt
IGJlZ2luOwogICAgIGJvb2wgaGFzUHJpbnRlZFByb2ZpbGluZyA9IGZhbHNlOwpAQCAtMTA3MSw3
ICsxMDcxLDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZQogICAg
ICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgIHByaW50TG9jYXRpb25B
bmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImluX2J5X2lkIik7CiAgICAgICAgIG91dC5wcmludGYo
IiVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5k
YXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZpZXIoaWQwKSkuZGF0YSgpKTsKLSAgICAgICAgcHJp
bnRJbkJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdHViSW5mb3MpOworICAgICAgICBw
cmludEluQnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0YXR1c01hcCk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIG9wX2luX2J5X3ZhbDogewpAQCAtMTA5NSw3ICsxMDk1
LDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZQogICAgICAgICBw
cmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJnZXRfYnlfaWRfZGlyZWN0Iik7
CiAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZpZXIoaWQwKSku
ZGF0YSgpKTsKICAgICAgICAgaXQgKz0gMjsgLy8gSW5jcmVtZW50IHVwIHRvIHRoZSB2YWx1ZSBw
cm9maWxlci4KLSAgICAgICAgcHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMob3V0LCBsb2NhdGlvbiwg
c3R1YkluZm9zKTsKKyAgICAgICAgcHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMob3V0LCBsb2NhdGlv
biwgc3RhdHVzTWFwKTsKICAgICAgICAgZHVtcFZhbHVlUHJvZmlsaW5nKG91dCwgaXQsIGhhc1By
aW50ZWRQcm9maWxpbmcpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xMTA0LDcgKzExMDQs
NyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJ5dGVjb2RlCiAgICAgY2FzZSBv
cF9nZXRfYnlfaWRfdW5zZXQ6CiAgICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOiB7CiAgICAg
ICAgIHByaW50R2V0QnlJZE9wKG91dCwgbG9jYXRpb24sIGl0KTsKLSAgICAgICAgcHJpbnRHZXRC
eUlkQ2FjaGVTdGF0dXMob3V0LCBsb2NhdGlvbiwgc3R1YkluZm9zKTsKKyAgICAgICAgcHJpbnRH
ZXRCeUlkQ2FjaGVTdGF0dXMob3V0LCBsb2NhdGlvbiwgc3RhdHVzTWFwKTsKICAgICAgICAgZHVt
cFZhbHVlUHJvZmlsaW5nKG91dCwgaXQsIGhhc1ByaW50ZWRQcm9maWxpbmcpOwogICAgICAgICBi
cmVhazsKICAgICB9CkBAIC0xMTMwLDcgKzExMzAsNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJs
b2NrPjo6ZHVtcEJ5dGVjb2RlCiAgICAgfQogICAgIGNhc2Ugb3BfcHV0X2J5X2lkOiB7CiAgICAg
ICAgIHByaW50UHV0QnlJZE9wKG91dCwgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkIik7Ci0gICAg
ICAgIHByaW50UHV0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0dWJJbmZvcyk7Cisg
ICAgICAgIHByaW50UHV0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0YXR1c01hcCk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIG9wX3B1dF9ieV9pZF93aXRoX3RoaXM6
IHsKQEAgLTE0NzYsMTUgKzE0NzYsMTUgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1
bXBCeXRlY29kZQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBvcF9jYWxsOiB7Ci0g
ICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAiY2FsbCIsIER1bXBDYWNoZXMs
IGhhc1ByaW50ZWRQcm9maWxpbmcsIGNhbGxMaW5rSW5mb3MpOworICAgICAgICBwcmludENhbGxP
cChvdXQsIGxvY2F0aW9uLCBpdCwgImNhbGwiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmls
aW5nLCBzdGF0dXNNYXApOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBvcF90YWls
X2NhbGw6IHsKLSAgICAgICAgcHJpbnRDYWxsT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJ0YWlsX2Nh
bGwiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmlsaW5nLCBjYWxsTGlua0luZm9zKTsKKyAg
ICAgICAgcHJpbnRDYWxsT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJ0YWlsX2NhbGwiLCBEdW1wQ2Fj
aGVzLCBoYXNQcmludGVkUHJvZmlsaW5nLCBzdGF0dXNNYXApOwogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgY2FzZSBvcF9jYWxsX2V2YWw6IHsKLSAgICAgICAgcHJpbnRDYWxsT3Aob3V0LCBs
b2NhdGlvbiwgaXQsICJjYWxsX2V2YWwiLCBEb250RHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2Zp
bGluZywgY2FsbExpbmtJbmZvcyk7CisgICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24s
IGl0LCAiY2FsbF9ldmFsIiwgRG9udER1bXBDYWNoZXMsIGhhc1ByaW50ZWRQcm9maWxpbmcsIHN0
YXR1c01hcCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMTUyMyw3ICsxNTIzLDcgQEAg
dm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZQogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgY2FzZSBvcF9jb25zdHJ1Y3Q6IHsKLSAgICAgICAgcHJpbnRDYWxsT3Aob3V0
LCBsb2NhdGlvbiwgaXQsICJjb25zdHJ1Y3QiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmls
aW5nLCBjYWxsTGlua0luZm9zKTsKKyAgICAgICAgcHJpbnRDYWxsT3Aob3V0LCBsb2NhdGlvbiwg
aXQsICJjb25zdHJ1Y3QiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmlsaW5nLCBzdGF0dXNN
YXApOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBvcF9zdHJjYXQ6IHsKQEAgLTE3
NzgsMTAgKzE3NzgsMTAgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29k
ZQogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+
OjpkdW1wQnl0ZWNvZGUoQmxvY2sqIGJsb2NrLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCB0eXBl
bmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5z
dHJ1Y3Rpb24qJiBpdCwgY29uc3QgU3R1YkluZm9NYXAmIHN0dWJJbmZvcywgY29uc3QgQ2FsbExp
bmtJbmZvTWFwJiBjYWxsTGlua0luZm9zKQordm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1
bXBCeXRlY29kZShCbG9jayogYmxvY2ssIFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IHR5cGVuYW1l
IEJsb2NrOjpJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IHR5cGVuYW1lIEJsb2NrOjpJbnN0cnVj
dGlvbiomIGl0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQogewogICAgIEJ5dGVjb2Rl
RHVtcGVyIGR1bXBlcihibG9jaywgYmVnaW4pOwotICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0
LCBiZWdpbiwgaXQsIHN0dWJJbmZvcywgY2FsbExpbmtJbmZvcyk7CisgICAgZHVtcGVyLmR1bXBC
eXRlY29kZShvdXQsIGJlZ2luLCBpdCwgc3RhdHVzTWFwKTsKIH0KIAogdGVtcGxhdGU8Y2xhc3Mg
QmxvY2s+CkBAIC0xODkwLDcgKzE4OTAsNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6
ZHVtcFN0cmluZ1N3CiB9CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgotdm9pZCBCeXRlY29kZUR1
bXBlcjxCbG9jaz46OmR1bXBCbG9jayhCbG9jayogYmxvY2ssIGNvbnN0IHR5cGVuYW1lIEJsb2Nr
OjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBQcmludFN0cmVhbSYgb3V0LCBj
b25zdCBTdHViSW5mb01hcCYgc3R1YkluZm9zLCBjb25zdCBDYWxsTGlua0luZm9NYXAmIGNhbGxM
aW5rSW5mb3MpCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJsb2NrKEJsb2NrKiBi
bG9jaywgY29uc3QgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBpbnN0cnVj
dGlvbnMsIFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7
CiAgICAgc2l6ZV90IGluc3RydWN0aW9uQ291bnQgPSAwOwogCkBAIC0xOTEwLDcgKzE5MTAsNyBA
QCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJsb2NrKEJsCiAgICAgY29uc3QgYXV0
byogZW5kID0gaW5zdHJ1Y3Rpb25zLmVuZCgpOwogICAgIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPiBk
dW1wZXIoYmxvY2ssIGJlZ2luKTsKICAgICBmb3IgKGNvbnN0IGF1dG8qIGl0ID0gYmVnaW47IGl0
ICE9IGVuZDsgKytpdCkKLSAgICAgICAgZHVtcGVyLmR1bXBCeXRlY29kZShvdXQsIGJlZ2luLCBp
dCwgc3R1YkluZm9zLCBjYWxsTGlua0luZm9zKTsKKyAgICAgICAgZHVtcGVyLmR1bXBCeXRlY29k
ZShvdXQsIGJlZ2luLCBpdCwgc3RhdHVzTWFwKTsKIAogICAgIGR1bXBlci5kdW1wSWRlbnRpZmll
cnMob3V0KTsKICAgICBkdW1wZXIuZHVtcENvbnN0YW50cyhvdXQpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmgJKHJldmlzaW9uIDIz
MjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
NyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yNiw2ICsyNyw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkNhbGxMaW5rSW5mby5oIgorI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCiAjaW5jbHVkZSAiU3Ry
dWN0dXJlU3R1YkluZm8uaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zNyw4ICszOSw4IEBAIGNs
YXNzIEJ5dGVjb2RlRHVtcGVyIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIHR5cGVuYW1lIEJsb2Nr
OjpJbnN0cnVjdGlvbiBJbnN0cnVjdGlvbjsKIAotICAgIHN0YXRpYyB2b2lkIGR1bXBCeXRlY29k
ZShCbG9jayosIFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29u
c3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgU3R1YkluZm9NYXAmID0gU3R1YkluZm9NYXAoKSwg
Y29uc3QgQ2FsbExpbmtJbmZvTWFwJiA9IENhbGxMaW5rSW5mb01hcCgpKTsKLSAgICBzdGF0aWMg
dm9pZCBkdW1wQmxvY2soQmxvY2sqLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0
cnVjdGlvbnMmLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBTdHViSW5mb01hcCYgPSBTdHViSW5m
b01hcCgpLCBjb25zdCBDYWxsTGlua0luZm9NYXAmID0gQ2FsbExpbmtJbmZvTWFwKCkpOworICAg
IHN0YXRpYyB2b2lkIGR1bXBCeXRlY29kZShCbG9jayosIFByaW50U3RyZWFtJiBvdXQsIGNvbnN0
IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgSUNTdGF0
dXNNYXAmIHN0YXR1c01hcCA9IElDU3RhdHVzTWFwKCkpOworICAgIHN0YXRpYyB2b2lkIGR1bXBC
bG9jayhCbG9jayosIGNvbnN0IHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYs
IFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXAgPSBJQ1N0YXR1
c01hcCgpKTsKIAogcHJpdmF0ZToKICAgICBCeXRlY29kZUR1bXBlcihCbG9jayogYmxvY2ssIGNv
bnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbikKQEAgLTY5LDE0ICs3MSwxNCBAQCBw
cml2YXRlOgogICAgIHZvaWQgcHJpbnRDb25kaXRpb25hbEp1bXAoUHJpbnRTdHJlYW0mIG91dCwg
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBpbnQgbG9jYXRpb24s
IGNvbnN0IGNoYXIqIG9wKTsKICAgICB2b2lkIHByaW50Q29tcGFyZUp1bXAoUHJpbnRTdHJlYW0m
IG91dCwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBpbnQgbG9j
YXRpb24sIGNvbnN0IGNoYXIqIG9wKTsKICAgICB2b2lkIHByaW50R2V0QnlJZE9wKFByaW50U3Ry
ZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCk7Ci0gICAgdm9p
ZCBwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24s
IGNvbnN0IFN0dWJJbmZvTWFwJik7Ci0gICAgdm9pZCBwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhQ
cmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IFN0dWJJbmZvTWFwJik7Ci0gICAg
dm9pZCBwcmludEluQnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlv
biwgY29uc3QgU3R1YkluZm9NYXAmKTsKKyAgICB2b2lkIHByaW50R2V0QnlJZENhY2hlU3RhdHVz
KFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmKTsKKyAg
ICB2b2lkIHByaW50UHV0QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2Nh
dGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmKTsKKyAgICB2b2lkIHByaW50SW5CeUlkQ2FjaGVTdGF0
dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJQ1N0YXR1c01hcCYpOwog
ICAgIGVudW0gQ2FjaGVEdW1wTW9kZSB7IER1bXBDYWNoZXMsIERvbnREdW1wQ2FjaGVzIH07Ci0g
ICAgdm9pZCBwcmludENhbGxPcChQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0
IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IGNoYXIqIG9wLCBDYWNoZUR1bXBNb2RlLCBib29sJiBo
YXNQcmludGVkUHJvZmlsaW5nLCBjb25zdCBDYWxsTGlua0luZm9NYXAmKTsKKyAgICB2b2lkIHBy
aW50Q2FsbE9wKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rp
b24qJiBpdCwgY29uc3QgY2hhciogb3AsIENhY2hlRHVtcE1vZGUsIGJvb2wmIGhhc1ByaW50ZWRQ
cm9maWxpbmcsIGNvbnN0IElDU3RhdHVzTWFwJik7CiAgICAgdm9pZCBwcmludFB1dEJ5SWRPcChQ
cmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNv
bnN0IGNoYXIqIG9wKTsKICAgICB2b2lkIHByaW50TG9jYXRpb25PcEFuZFJlZ2lzdGVyT3BlcmFu
ZChQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQs
IGNvbnN0IGNoYXIqIG9wLCBpbnQgb3BlcmFuZCk7Ci0gICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJp
bnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlv
biomIGl0LCBjb25zdCBTdHViSW5mb01hcCYsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYpOworICAg
IHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiBi
ZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgSUNTdGF0dXNNYXAmKTsKIAogICAg
IHZvaWQgZHVtcFZhbHVlUHJvZmlsaW5nKFByaW50U3RyZWFtJiwgY29uc3QgSW5zdHJ1Y3Rpb24q
JiwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZyk7CiAgICAgdm9pZCBkdW1wQXJyYXlQcm9maWxp
bmcoUHJpbnRTdHJlYW0mLCBjb25zdCBJbnN0cnVjdGlvbiomLCBib29sJiBoYXNQcmludGVkUHJv
ZmlsaW5nKTsKQEAgLTg1LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkKiBhY3R1YWxQb2lu
dGVyRm9yKFNwZWNpYWw6OlBvaW50ZXIpIGNvbnN0OwogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICB2
b2lkIGR1bXBDYWxsTGlua1N0YXR1cyhQcmludFN0cmVhbSYsIHVuc2lnbmVkIGxvY2F0aW9uLCBj
b25zdCBDYWxsTGlua0luZm9NYXAmKTsKKyAgICB2b2lkIGR1bXBDYWxsTGlua1N0YXR1cyhQcmlu
dFN0cmVhbSYsIHVuc2lnbmVkIGxvY2F0aW9uLCBjb25zdCBJQ1N0YXR1c01hcCYpOwogI2VuZGlm
CiAKICAgICBCbG9jayogbV9ibG9jazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9DYWxsTGlua0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMzUy
LDEyICszNTIsNiBAQCBpbmxpbmUgQ29kZU9yaWdpbiBnZXRDYWxsTGlua0luZm9Db2RlT3JpCiAg
ICAgcmV0dXJuIGNhbGxMaW5rSW5mby5jb2RlT3JpZ2luKCk7CiB9CiAKLXR5cGVkZWYgSGFzaE1h
cDxDb2RlT3JpZ2luLCBDYWxsTGlua0luZm8qLCBDb2RlT3JpZ2luQXBwcm94aW1hdGVIYXNoPiBD
YWxsTGlua0luZm9NYXA7Ci0KLSNlbHNlIC8vIEVOQUJMRShKSVQpCi0KLXR5cGVkZWYgSGFzaE1h
cDxpbnQsIHZvaWQqPiBDYWxsTGlua0luZm9NYXA7Ci0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsTGlua1N0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzcsNyArNzcsOCBAQCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0
ZUZyCiB9CiAKIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAotICAg
IENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgY29uc3Qg
Q2FsbExpbmtJbmZvTWFwJiBtYXApCisgICAgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNp
Z25lZCBieXRlY29kZUluZGV4LCBjb25zdCBJQ1N0YXR1c01hcCYgbWFwLAorICAgIEV4aXRTaXRl
RGF0YSBleGl0U2l0ZURhdGEpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihwcm9m
aWxlZEJsb2NrLT5tX2xvY2spOwogICAgIApAQCAtODUsOSArODYsNyBAQCBDYWxsTGlua1N0YXR1
cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvCiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5k
ZXgpOwogICAgIFVOVVNFRF9QQVJBTShtYXApOwogI2lmIEVOQUJMRShERkdfSklUKQotICAgIEV4
aXRTaXRlRGF0YSBleGl0U2l0ZURhdGEgPSBjb21wdXRlRXhpdFNpdGVEYXRhKHByb2ZpbGVkQmxv
Y2ssIGJ5dGVjb2RlSW5kZXgpOwotICAgIAotICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZv
ID0gbWFwLmdldChDb2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgpKTsKKyAgICBDYWxsTGlua0luZm8q
IGNhbGxMaW5rSW5mbyA9IG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4KSkuY2FsbExp
bmtJbmZvOwogICAgIGlmICghY2FsbExpbmtJbmZvKSB7CiAgICAgICAgIGlmIChleGl0U2l0ZURh
dGEudGFrZXNTbG93UGF0aCkKICAgICAgICAgICAgIHJldHVybiB0YWtlc1Nsb3dQYXRoKCk7CkBA
IC0xMDcsMTEgKzEwNiwyMSBAQCBDYWxsTGlua1N0YXR1czo6RXhpdFNpdGVEYXRhIENhbGxMaW5r
U3RhCiAgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHByb2ZpbGVkQmxvY2stPnVu
bGlua2VkQ29kZUJsb2NrKCk7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxv
Y2stPm1fbG9jayk7CiAKLSAgICBleGl0U2l0ZURhdGEudGFrZXNTbG93UGF0aCA9Ci0gICAgICAg
IGNvZGVCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0
ZWNvZGVJbmRleCwgQmFkVHlwZSkpCi0gICAgICAgIHx8IGNvZGVCbG9jay0+aGFzRXhpdFNpdGUo
bG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkRXhlY3V0YWJs
ZSkpOwotICAgIGV4aXRTaXRlRGF0YS5iYWRGdW5jdGlvbiA9Ci0gICAgICAgIGNvZGVCbG9jay0+
aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwg
QmFkQ2VsbCkpOworICAgIGF1dG8gdGFrZXNTbG93UGF0aCA9IFsmXSAoRXhpdGluZ0lubGluZUtp
bmQgaW5saW5lS2luZCkgLT4gRXhpdEZsYWcgeworICAgICAgICByZXR1cm4gRXhpdEZsYWcoCisg
ICAgICAgICAgICBjb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4
aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZFR5cGUsIEV4aXRGcm9tQW55dGhpbmcsIGlubGluZUtp
bmQpKQorICAgICAgICAgICAgfHwgY29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6
RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRFeGVjdXRhYmxlLCBFeGl0RnJvbUFu
eXRoaW5nLCBpbmxpbmVLaW5kKSksCisgICAgICAgICAgICBpbmxpbmVLaW5kKTsKKyAgICB9Owor
ICAgIAorICAgIGF1dG8gYmFkRnVuY3Rpb24gPSBbJl0gKEV4aXRpbmdJbmxpbmVLaW5kIGlubGlu
ZUtpbmQpIC0+IGJvb2wgeworICAgICAgICByZXR1cm4gY29kZUJsb2NrLT5oYXNFeGl0U2l0ZShs
b2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRDZWxsLCBFeGl0
RnJvbUFueXRoaW5nLCBpbmxpbmVLaW5kKSk7CisgICAgfTsKKyAgICAKKyAgICBleGl0U2l0ZURh
dGEudGFrZXNTbG93UGF0aCB8PSB0YWtlc1Nsb3dQYXRoKEV4aXRGcm9tTm90SW5saW5lZCk7Cisg
ICAgZXhpdFNpdGVEYXRhLnRha2VzU2xvd1BhdGggfD0gdGFrZXNTbG93UGF0aChFeGl0RnJvbUlu
bGluZWQpOworICAgIGV4aXRTaXRlRGF0YS5iYWRGdW5jdGlvbiB8PSBiYWRGdW5jdGlvbihFeGl0
RnJvbU5vdElubGluZWQpOworICAgIGV4aXRTaXRlRGF0YS5iYWRGdW5jdGlvbiB8PSBiYWRGdW5j
dGlvbihFeGl0RnJvbUlubGluZWQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRC
bG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwpAQCAtMjI3LDgzICsyMzYs
NTQgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcgogCiBDYWxsTGlu
a1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKICAgICBjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImIGxvY2tlciwgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBDYWxsTGlua0luZm8m
IGNhbGxMaW5rSW5mbywKLSAgICBFeGl0U2l0ZURhdGEgZXhpdFNpdGVEYXRhKQorICAgIEV4aXRT
aXRlRGF0YSBleGl0U2l0ZURhdGEsIEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQpCiB7CiAg
ICAgQ2FsbExpbmtTdGF0dXMgcmVzdWx0ID0gY29tcHV0ZUZvcihsb2NrZXIsIHByb2ZpbGVkQmxv
Y2ssIGNhbGxMaW5rSW5mbyk7Ci0gICAgaWYgKGV4aXRTaXRlRGF0YS5iYWRGdW5jdGlvbikgewot
ICAgICAgICBpZiAocmVzdWx0LmlzQmFzZWRPblN0dWIoKSkgeworICAgIHJlc3VsdC5hY2NvdW50
Rm9yRXhpdHMoZXhpdFNpdGVkYXRhLCBpbmxpbmVLaW5kKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorI2VuZGlmCisKK3ZvaWQgQ2FsbExpbmtTdGF0dXM6OmFjY291bnRGb3JFeGl0cyhFeGl0U2l0
ZURhdGEgZXhpdFNpdGVEYXRhLCBFeGl0aW5nSW5saW5lS2luZCBpbmxpbmVLaW5kKQoreworICAg
IGlmIChleGl0U2l0ZURhdGEuYmFkRnVuY3Rpb24uaXNTZXQoaW5saW5lS2luZCkpIHsKKyAgICAg
ICAgaWYgKGlzQmFzZWRPblN0dWIoKSkgewogICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIHBv
bHltb3JwaGljIHN0dWIsIHRoZW4gaGF2aW5nIGFuIGV4aXQgc2l0ZSBpcyBub3QgcXVpdGUgc28g
dXNlZnVsLiBJbgogICAgICAgICAgICAgLy8gbW9zdCBjYXNlcywgdGhlIGluZm9ybWF0aW9uIGlu
IHRoZSBzdHViIGhhcyBoaWdoZXIgZmlkZWxpdHkuCi0gICAgICAgICAgICByZXN1bHQubWFrZUNs
b3N1cmVDYWxsKCk7CisgICAgICAgICAgICBtYWtlQ2xvc3VyZUNhbGwoKTsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIC8vIFdlIG1pZ2h0IG5vdCBoYXZlIGEgcG9seW1vcnBoaWMgc3R1
YiBmb3IgYW55IG51bWJlciBvZiByZWFzb25zLiBXaGVuIHRoaXMgaGFwcGVucywgd2UKICAgICAg
ICAgICAgIC8vIGFyZSBpbiBsZXNzIGNlcnRhaW4gdGVycml0b3J5LCBzbyBleGl0IHNpdGVzIG1l
YW4gYSBsb3QuCi0gICAgICAgICAgICByZXN1bHQubV9jb3VsZFRha2VTbG93UGF0aCA9IHRydWU7
CisgICAgICAgICAgICBtX2NvdWxkVGFrZVNsb3dQYXRoID0gdHJ1ZTsKICAgICAgICAgfQogICAg
IH0KLSAgICBpZiAoZXhpdFNpdGVEYXRhLnRha2VzU2xvd1BhdGgpCi0gICAgICAgIHJlc3VsdC5t
X2NvdWxkVGFrZVNsb3dQYXRoID0gdHJ1ZTsKICAgICAKLSAgICByZXR1cm4gcmVzdWx0OworICAg
IGlmIChleGl0U2l0ZURhdGEudGFrZXNTbG93UGF0aC5pc1NldChpbmxpbmVLaW5kKSkKKyAgICAg
ICAgbV9jb3VsZFRha2VTbG93UGF0aCA9IHRydWU7CiB9Ci0jZW5kaWYKIAotdm9pZCBDYWxsTGlu
a1N0YXR1czo6Y29tcHV0ZURGR1N0YXR1c2VzKAotICAgIENvZGVCbG9jayogZGZnQ29kZUJsb2Nr
LCBDYWxsTGlua1N0YXR1czo6Q29udGV4dE1hcCYgbWFwKQorQ2FsbExpbmtTdGF0dXMgQ2FsbExp
bmtTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4sCisgICAgY29uc3QgSUNTdGF0dXNNYXAmIGJhc2VsaW5lTWFwLCBj
b25zdCBJQ1N0YXR1c0NvbnRleHRTdGFjayYgb3B0aW1pemVkU3RhY2spCiB7Ci0jaWYgRU5BQkxF
KERGR19KSVQpCi0gICAgUkVMRUFTRV9BU1NFUlQoZGZnQ29kZUJsb2NrLT5qaXRUeXBlKCkgPT0g
SklUQ29kZTo6REZHSklUKTsKLSAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gZGZn
Q29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpOwotICAgIGZvciAoYXV0byBpdGVyID0gZGZnQ29kZUJs
b2NrLT5jYWxsTGlua0luZm9zQmVnaW4oKTsgISFpdGVyOyArK2l0ZXIpIHsKLSAgICAgICAgQ2Fs
bExpbmtJbmZvJiBpbmZvID0gKippdGVyOwotICAgICAgICBpZiAoaW5mby5pc0RpcmVjdCgpKSB7
Ci0gICAgICAgICAgICAvLyBJZiB0aGUgREZHIHdhcyBhYmxlIHRvIGdldCBhIGRpcmVjdCBjYWxs
IHRoZW4gcHJvYmFibHkgc28gd2lsbCB3ZS4gSG93ZXZlciwgdGhlcmUgaXMKLSAgICAgICAgICAg
IC8vIGEgcmVtb3RlIGNoYW5jZSB0aGF0IGl0J3MgYmFkIG5ld3MgdG8gbG9zZSBpbmZvcm1hdGlv
biBhYm91dCB3aGF0IHRoZSBERkcgZGlkLiBXZSdkCi0gICAgICAgICAgICAvLyBpZGVhbGx5IGxp
a2UgdG8ganVzdCBrbm93IHRoYXQgdGhlIERGRyBoYWQgZW1pdHRlZCBhIERpcmVjdENhbGwuCi0g
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBDb2RlT3JpZ2luIGNvZGVP
cmlnaW4gPSBpbmZvLmNvZGVPcmlnaW4oKTsKLSAgICAgICAgCi0gICAgICAgIC8vIENoZWNrIGlm
IHdlIGhhZCBhbHJlYWR5IHByZXZpb3VzbHkgbWFkZSBhIHRlcnJpYmxlIG1pc3Rha2UgaW4gdGhl
IEZUTCBmb3IgdGhpcwotICAgICAgICAvLyBjb2RlIG9yaWdpbi4gTm90ZSB0aGF0IHRoaXMgaXMg
YXBwcm94aW1hdGUgYmVjYXVzZSB3ZSBjb3VsZCBoYXZlIGEgbW9ub3ZhcmlhbnQKLSAgICAgICAg
Ly8gaW5saW5lIGluIHRoZSBGVEwgdGhhdCBlbmRlZCB1cCBmYWlsaW5nLiBXZSBzaG91bGQgZml4
IHRoYXQgYXQgc29tZSBwb2ludCBieQotICAgICAgICAvLyBoYXZpbmcgZGF0YSBzdHJ1Y3R1cmVz
IHRvIHRyYWNrIHRoZSBjb250ZXh0IG9mIGZyZXF1ZW50IGV4aXRzLiBUaGlzIGlzIGN1cnJlbnRs
eQotICAgICAgICAvLyBjaGFsbGVuZ2luZyBiZWNhdXNlIGl0IHdvdWxkIHJlcXVpcmUgY3JlYXRp
bmcgYSBDb2RlT3JpZ2luLWJhc2VkIGRhdGFiYXNlIGluCi0gICAgICAgIC8vIGJhc2VsaW5lIENv
ZGVCbG9ja3MsIGJ1dCB0aG9zZSBDb2RlQmxvY2tzIGRvbid0IHJlYWxseSBoYXZlIGEgcGxhY2Ug
dG8gcHV0IHRoZQotICAgICAgICAvLyBJbmxpbmVDYWxsRnJhbWVzLgotICAgICAgICBDb2RlQmxv
Y2sqIGN1cnJlbnRCYXNlbGluZSA9Ci0gICAgICAgICAgICBiYXNlbGluZUNvZGVCbG9ja0Zvck9y
aWdpbkFuZEJhc2VsaW5lQ29kZUJsb2NrKGNvZGVPcmlnaW4sIGJhc2VsaW5lQ29kZUJsb2NrKTsK
LSAgICAgICAgRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YSA9IGNvbXB1dGVFeGl0U2l0ZURhdGEo
Y3VycmVudEJhc2VsaW5lLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpOwotICAgICAgICAKLSAg
ICAgICAgewotICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihkZmdDb2RlQmxv
Y2stPm1fbG9jayk7Ci0gICAgICAgICAgICBtYXAuYWRkKGluZm8uY29kZU9yaWdpbigpLCBjb21w
dXRlRm9yKGxvY2tlciwgZGZnQ29kZUJsb2NrLCBpbmZvLCBleGl0U2l0ZURhdGEpKTsKLSAgICAg
ICAgfQotICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGRmZ0NvZGVCbG9jayk7Ci0jZW5k
aWYgLy8gRU5BQkxFKERGR19KSVQpCisgICAgRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YSA9IGNv
bXB1dGVFeGl0U2l0ZURhdGEocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4
KTsKICAgICAKLSAgICBpZiAoQ2FsbExpbmtTdGF0dXNJbnRlcm5hbDo6dmVyYm9zZSkgewotICAg
ICAgICBkYXRhTG9nKCJDb250ZXh0IG1hcDpcbiIpOwotICAgICAgICBDb250ZXh0TWFwOjppdGVy
YXRvciBpdGVyID0gbWFwLmJlZ2luKCk7Ci0gICAgICAgIENvbnRleHRNYXA6Oml0ZXJhdG9yIGVu
ZCA9IG1hcC5lbmQoKTsKLSAgICAgICAgZm9yICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKLSAg
ICAgICAgICAgIGRhdGFMb2coIiAgICAiLCBpdGVyLT5rZXksICI6XG4iKTsKLSAgICAgICAgICAg
IGRhdGFMb2coIiAgICAgICAgIiwgaXRlci0+dmFsdWUsICJcbiIpOworICAgIGZvciAoY29uc3Qg
SUNTdGF0dXNDb250ZXh0JiBjb250ZXh0IDogb3B0aW1pemVkU3RhY2spIHsKKyAgICAgICAgSUNT
dGF0dXMgc3RhdHVzID0gY29udGV4dC5nZXQoY29kZU9yaWdpbik7CisgICAgICAgIGlmIChzdGF0
dXMuY2FsbExpbmtJbmZvKSB7CisgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2Vy
KGNvbnRleHQub3B0aW1pemVkQ29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgQ2FsbExp
bmtTdGF0dXMgc3RhdHVzID0gY29tcHV0ZUZvcigKKyAgICAgICAgICAgICAgICBsb2NrZXIsIGNv
bnRleHQub3B0aW1pemVkQ29kZUJsb2NrLCAqc3RhdHVzLmNhbGxMaW5rSW5mbywgZXhpdFNpdGVE
YXRhLAorICAgICAgICAgICAgICAgIGNvbnRleHQuaW5saW5lS2luZChjb2RlT3JpZ2luKSk7Cisg
ICAgICAgICAgICBpZiAoc3RhdHVzKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGF0dXM7CiAg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChzdGF0dXMuY2FsbExpbmtTdGF0dXMpCisg
ICAgICAgICAgICByZXR1cm4gKnN0YXR1cy5jYWxsTGlua1N0YXR1czsKICAgICB9Ci19Ci0KLUNh
bGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAotICAgIENvZGVCbG9jayog
cHJvZmlsZWRCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLAotICAgIGNvbnN0IENhbGxMaW5r
SW5mb01hcCYgYmFzZWxpbmVNYXAsIGNvbnN0IENhbGxMaW5rU3RhdHVzOjpDb250ZXh0TWFwJiBk
ZmdNYXApCi17Ci0gICAgYXV0byBpdGVyID0gZGZnTWFwLmZpbmQoY29kZU9yaWdpbik7Ci0gICAg
aWYgKGl0ZXIgIT0gZGZnTWFwLmVuZCgpKQotICAgICAgICByZXR1cm4gaXRlci0+dmFsdWU7CiAg
ICAgCi0gICAgcmV0dXJuIGNvbXB1dGVGb3IocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRl
Y29kZUluZGV4LCBiYXNlbGluZU1hcCk7CisgICAgcmV0dXJuIGNvbXB1dGVGb3IocHJvZmlsZWRC
bG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBiYXNlbGluZU1hcCwgZXhpdFNpdGVEYXRh
KTsKIH0KIAogdm9pZCBDYWxsTGlua1N0YXR1czo6c2V0UHJvdmVuQ29uc3RhbnRDYWxsZWUoQ2Fs
bFZhcmlhbnQgdmFyaWFudCkKQEAgLTMyNyw2ICszMDcsMjQgQEAgdm9pZCBDYWxsTGlua1N0YXR1
czo6bWFrZUNsb3N1cmVDYWxsKCkKICAgICBtX3ZhcmlhbnRzID0gZGVzcGVjaWZpZWRWYXJpYW50
TGlzdChtX3ZhcmlhbnRzKTsKIH0KIAorYm9vbCBDYWxsTGlua1N0YXR1czo6ZmluYWxpemUoKQor
eworICAgIGZvciAoQ2FsbFZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKSB7CisgICAgICAg
IGlmICghdmFyaWFudC5maW5hbGl6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDYWxsTGlua1N0YXR1czo6ZmlsdGVyKEpT
VmFsdWUgdmFsdWUpCit7CisgICAgbV92YXJpYW50cy5yZW1vdmVBbGxNYXRjaGluZygKKyAgICAg
ICAgWyZdIChDYWxsVmFyaWFudCYgdmFyaWFudCkgLT4gYm9vbCB7CisgICAgICAgICAgICB2YXJp
YW50LmZpbHRlcih2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gIXZhcmlhbnQ7CisgICAgICAg
IH0pOworfQorCiB2b2lkIENhbGxMaW5rU3RhdHVzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNv
bnN0CiB7CiAgICAgaWYgKCFpc1NldCgpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJDYWxsVmFyaWFudC5oIgogI2luY2x1ZGUg
IkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJDb25jdXJyZW50SlNMb2NrLmgiCisjaW5jbHVkZSAi
RXhpdEZsYWcuaCIKKyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgogI2luY2x1ZGUgIkpTQ0pTVmFs
dWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC02MCwzOSArNjIsMzIgQEAgcHVibGljOgogICAg
IHsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoCi0g
ICAgICAgIENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIGNvbnN0IENhbGxMaW5r
SW5mb01hcCYpOwotCiAgICAgc3RydWN0IEV4aXRTaXRlRGF0YSB7Ci0gICAgICAgIGJvb2wgdGFr
ZXNTbG93UGF0aCB7IGZhbHNlIH07Ci0gICAgICAgIGJvb2wgYmFkRnVuY3Rpb24geyBmYWxzZSB9
OworICAgICAgICBFeGl0RmxhZyB0YWtlc1Nsb3dQYXRoOworICAgICAgICBFeGl0RmxhZyBiYWRG
dW5jdGlvbjsKICAgICB9OwogICAgIHN0YXRpYyBFeGl0U2l0ZURhdGEgY29tcHV0ZUV4aXRTaXRl
RGF0YShDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKICAgICAKKyAgICBzdGF0
aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29k
ZUluZGV4LCBjb25zdCBJQ1N0YXR1c01hcCYsIEV4aXRTaXRlRGF0YSk7CisKICNpZiBFTkFCTEUo
SklUKQogICAgIC8vIENvbXB1dGVzIHRoZSBzdGF0dXMgYXNzdW1pbmcgdGhhdCB3ZSBuZXZlciB0
b29rIHNsb3cgcGF0aCBhbmQgbmV2ZXIgcHJldmlvdXNseQogICAgIC8vIGV4aXRlZC4KICAgICBz
dGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcihjb25zdCBDb25jdXJyZW50SlNMb2NrZXIm
LCBDb2RlQmxvY2sqLCBDYWxsTGlua0luZm8mKTsKKyAgICAKKyAgICAvLyBDb21wdXRlcyB0aGUg
c3RhdHVzIGFjY291bnRpbmcgZm9yIGV4aXRzLgogICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBj
b21wdXRlRm9yKAotICAgICAgICBjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sq
LCBDYWxsTGlua0luZm8mLCBFeGl0U2l0ZURhdGEpOworICAgICAgICBjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImLCBDb2RlQmxvY2sqLCBDYWxsTGlua0luZm8mLCBFeGl0U2l0ZURhdGEsIEV4aXRp
bmdJbmxpbmVLaW5kID0gRXhpdEZyb21BbnlJbmxpbmVLaW5kKTsKICNlbmRpZgogICAgIAotICAg
IHR5cGVkZWYgSGFzaE1hcDxDb2RlT3JpZ2luLCBDYWxsTGlua1N0YXR1cywgQ29kZU9yaWdpbkFw
cHJveGltYXRlSGFzaD4gQ29udGV4dE1hcDsKLSAgICAKLSAgICAvLyBDb21wdXRlcyBhbGwgb2Yg
dGhlIHN0YXR1c2VzIG9mIHRoZSBERkcgY29kZSBibG9jay4gRG9lc24ndCBpbmNsdWRlIHN0YXR1
c2VzIHRoYXQgaGFkCi0gICAgLy8gbm8gaW5mb3JtYXRpb24uIEN1cnJlbnRseSB3ZSB1c2UgdGhp
cyB3aGVuIGNvbXBpbGluZyBGVEwgY29kZSwgdG8gZW5hYmxlIHBvbHl2YXJpYW50Ci0gICAgLy8g
aW5saW5pbmcuCi0gICAgc3RhdGljIHZvaWQgY29tcHV0ZURGR1N0YXR1c2VzKENvZGVCbG9jayog
ZGZnQ29kZUJsb2NrLCBDb250ZXh0TWFwJik7Ci0gICAgCi0gICAgLy8gSGVscGVyIHRoYXQgZmly
c3QgY29uc3VsdHMgdGhlIENvbnRleHRNYXAgYW5kIHRoZW4gZG9lcyBjb21wdXRlRm9yKCkuCiAg
ICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoCi0gICAgICAgIENvZGVCbG9jayos
IENvZGVPcmlnaW4sIGNvbnN0IENhbGxMaW5rSW5mb01hcCYsIGNvbnN0IENvbnRleHRNYXAmKTsK
KyAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgY29uc3QgSUNTdGF0dXNNYXAmLCBjb25z
dCBJQ1N0YXR1c0NvbnRleHRTdGFjayYpOwogICAgIAogICAgIHZvaWQgc2V0UHJvdmVuQ29uc3Rh
bnRDYWxsZWUoQ2FsbFZhcmlhbnQpOwogICAgIAogICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJl
dHVybiAhbV92YXJpYW50cy5pc0VtcHR5KCkgfHwgbV9jb3VsZFRha2VTbG93UGF0aDsgfQogICAg
IAotICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIWlzU2V0KCk7IH0KKyAgICBl
eHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gaXNTZXQoKTsgfQogICAgIAog
ICAgIGJvb2wgY291bGRUYWtlU2xvd1BhdGgoKSBjb25zdCB7IHJldHVybiBtX2NvdWxkVGFrZVNs
b3dQYXRoOyB9CiAgICAgCkBAIC0xMTAsNiArMTA1LDEwIEBAIHB1YmxpYzoKICAgICAKICAgICB1
bnNpZ25lZCBtYXhOdW1Bcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX21heE51bUFyZ3VtZW50
czsgfQogICAgIAorICAgIGJvb2wgZmluYWxpemUoKTsKKyAgICAKKyAgICB2b2lkIGZpbHRlcihK
U1ZhbHVlKTsKKyAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAK
IHByaXZhdGU6CkBAIC0xMjEsNiArMTIwLDggQEAgcHJpdmF0ZToKICAgICAgICAgY29uc3QgQ29u
Y3VycmVudEpTTG9ja2VyJiwgQ2FsbExpbmtJbmZvJik7CiAjZW5kaWYKICAgICAKKyAgICB2b2lk
IGFjY291bnRGb3JFeGl0cyhFeGl0U2l0ZURhdGEsIEV4aXRpbmdJbmxpbmVLaW5kKTsKKyAgICAK
ICAgICBDYWxsVmFyaWFudExpc3QgbV92YXJpYW50czsKICAgICBib29sIG1fY291bGRUYWtlU2xv
d1BhdGggeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1Byb3ZlZCB7IGZhbHNlIH07CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5jcHAJKHJldmlz
aW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNiArMzEsMzUgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKK2Jvb2wgQ2FsbFZhcmlhbnQ6OmZpbmFsaXplKCkKK3sKKyAgICBpZiAobV9jYWxsZWUg
JiYgIUhlYXA6OmlzTWFya2VkKG1fY2FsbGVlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIENhbGxWYXJpYW50OjpmaWx0ZXIoSlNWYWx1ZSB2YWx1
ZSkKK3sKKyAgICBpZiAoISp0aGlzKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKCFp
c0Nsb3N1cmVDYWxsKCkpIHsKKyAgICAgICAgaWYgKG5vbkV4ZWN1dGFibGVDYWxsZWUoKSAhPSB2
YWx1ZSkKKyAgICAgICAgICAgICp0aGlzID0gQ2FsbFZhcmlhbnQoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICAKKyAgICBpZiAoSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0R5bmFtaWND
YXN0PEpTRnVuY3Rpb24qPih2YWx1ZSkpIHsKKyAgICAgICAgaWYgKGZ1bmN0aW9uLT5leGVjdXRh
YmxlKCkgPT0gZXhlY3V0YWJsZSgpKQorICAgICAgICAgICAgKnRoaXMgPSBDYWxsVmFyaWFudChm
dW5jdGlvbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICp0aGlzID0gQ2FsbFZhcmlhbnQo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICAqdGhpcyA9IENhbGxWYXJpYW50
KCk7Cit9CisKIHZvaWQgQ2FsbFZhcmlhbnQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QK
IHsKICAgICBpZiAoISp0aGlzKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbFZhcmlhbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbFZhcmlhbnQuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzEsNyAr
NzEsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yISgp
IGNvbnN0IHsgcmV0dXJuICFtX2NhbGxlZTsgfQorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2wo
KSBjb25zdCB7IHJldHVybiAhIW1fY2FsbGVlOyB9CiAgICAgCiAgICAgLy8gSWYgdGhpcyB2YXJp
YW50IHJlZmVycyB0byBhIGZ1bmN0aW9uLCBjaGFuZ2UgaXQgdG8gcmVmZXIgdG8gaXRzIGV4ZWN1
dGFibGUuCiAgICAgQUxXQVlTX0lOTElORSBDYWxsVmFyaWFudCBkZXNwZWNpZmllZENsb3N1cmUo
KSBjb25zdApAQCAtMTM2LDYgKzEzNiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KICAgICAKKyAgICBib29sIGZpbmFsaXplKCk7CisgICAgCisgICAgdm9pZCBm
aWx0ZXIoSlNWYWx1ZSk7CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNv
bnN0OwogICAgIAogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlz
aW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsMjQgKzIzOCwyMCBAQCB2b2lkIENvZGVCbG9jazo6
ZHVtcEJ5dGVjb2RlKCkKIAogdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVh
bSYgb3V0KQogewotICAgIFN0dWJJbmZvTWFwIHN0dWJJbmZvczsKLSAgICBDYWxsTGlua0luZm9N
YXAgY2FsbExpbmtJbmZvczsKLSAgICBnZXRTdHViSW5mb01hcChzdHViSW5mb3MpOwotICAgIGdl
dENhbGxMaW5rSW5mb01hcChjYWxsTGlua0luZm9zKTsKLSAgICBCeXRlY29kZUR1bXBlcjxDb2Rl
QmxvY2s+OjpkdW1wQmxvY2sodGhpcywgaW5zdHJ1Y3Rpb25zKCksIG91dCwgc3R1YkluZm9zLCBj
YWxsTGlua0luZm9zKTsKKyAgICBJQ1N0YXR1c01hcCBzdGF0dXNNYXA7CisgICAgZ2V0SUNTdGF0
dXNNYXAoc3RhdHVzTWFwKTsKKyAgICBCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wQmxv
Y2sodGhpcywgaW5zdHJ1Y3Rpb25zKCksIG91dCwgc3RhdHVzTWFwKTsKIH0KIAotdm9pZCBDb2Rl
QmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiog
YmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiBzdHViSW5m
b3MsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYgY2FsbExpbmtJbmZvcykKK3ZvaWQgQ29kZUJsb2Nr
OjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2lu
LCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQog
ewotICAgIEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBCeXRlY29kZSh0aGlzLCBvdXQs
IGJlZ2luLCBpdCwgc3R1YkluZm9zLCBjYWxsTGlua0luZm9zKTsKKyAgICBCeXRlY29kZUR1bXBl
cjxDb2RlQmxvY2s+OjpkdW1wQnl0ZWNvZGUodGhpcywgb3V0LCBiZWdpbiwgaXQsIHN0YXR1c01h
cCk7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCi0gICAgUHJpbnRTdHJlYW0m
IG91dCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsCi0gICAgY29uc3QgU3R1YkluZm9NYXAmIHN0
dWJJbmZvcywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBjYWxsTGlua0luZm9zKQordm9pZCBDb2Rl
QmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBjb25zdCBJbnN0cnVj
dGlvbiogaXQgPSAmaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdOwotICAgIGR1bXBCeXRl
Y29kZShvdXQsIGluc3RydWN0aW9ucygpLmJlZ2luKCksIGl0LCBzdHViSW5mb3MsIGNhbGxMaW5r
SW5mb3MpOworICAgIGR1bXBCeXRlY29kZShvdXQsIGluc3RydWN0aW9ucygpLmJlZ2luKCksIGl0
LCBzdGF0dXNNYXApOwogfQogCiAjZGVmaW5lIEZPUl9FQUNIX01FTUJFUl9WRUNUT1IobWFjcm8p
IFwKQEAgLTExNjYsNiArMTE2Miw5IEBAIHZvaWQgQ29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0
aW9ucyhjb24KICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6
aW5nSklUKGppdFR5cGUoKSkpIHsKICAgICAgICAgREZHOjpDb21tb25EYXRhKiBkZmdDb21tb24g
PSBtX2ppdENvZGUtPmRmZ0NvbW1vbigpOworICAgICAgICAKKyAgICAgICAgZGZnQ29tbW9uLT5y
ZWNvcmRlZFN0YXR1c2VzLm1hcmtJZkNoZWFwKHZpc2l0b3IpOworICAgICAgICAKICAgICAgICAg
Zm9yIChhdXRvJiB3ZWFrUmVmZXJlbmNlIDogZGZnQ29tbW9uLT53ZWFrU3RydWN0dXJlUmVmZXJl
bmNlcykKICAgICAgICAgICAgIHdlYWtSZWZlcmVuY2UtPm1hcmtJZkNoZWFwKHZpc2l0b3IpOwog
CkBAIC0xMzk3LDU3ICsxMzk2LDQzIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0
aW9uYWxseSgKICAgICAgICAgZmluYWxpemVCYXNlbGluZUpJVElubGluZUNhY2hlcygpOwogI2Vu
ZGlmCiAKLSAgICBWTTo6U3BhY2VBbmRGaW5hbGl6ZXJTZXQ6OmZpbmFsaXplclNldEZvcigqc3Vi
c3BhY2UoKSkucmVtb3ZlKHRoaXMpOwotfQotCi12b2lkIENvZGVCbG9jazo6Z2V0U3R1YkluZm9N
YXAoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgU3R1YkluZm9NYXAmIHJlc3VsdCkKLXsKLSNp
ZiBFTkFCTEUoSklUKQotICAgIGlmIChKSVRDb2RlOjppc0pJVChqaXRUeXBlKCkpKQotICAgICAg
ICB0b0hhc2hNYXAobV9zdHViSW5mb3MsIGdldFN0cnVjdHVyZVN0dWJJbmZvQ29kZU9yaWdpbiwg
cmVzdWx0KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHJlc3VsdCk7Ci0jZW5kaWYKLX0KLQot
dm9pZCBDb2RlQmxvY2s6OmdldFN0dWJJbmZvTWFwKFN0dWJJbmZvTWFwJiByZXN1bHQpCi17Ci0g
ICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIGdldFN0dWJJbmZvTWFw
KGxvY2tlciwgcmVzdWx0KTsKLX0KLQotdm9pZCBDb2RlQmxvY2s6OmdldENhbGxMaW5rSW5mb01h
cChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDYWxsTGlua0luZm9NYXAmIHJlc3VsdCkKLXsK
LSNpZiBFTkFCTEUoSklUKQotICAgIGlmIChKSVRDb2RlOjppc0pJVChqaXRUeXBlKCkpKQotICAg
ICAgICB0b0hhc2hNYXAobV9jYWxsTGlua0luZm9zLCBnZXRDYWxsTGlua0luZm9Db2RlT3JpZ2lu
LCByZXN1bHQpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKLSNlbmRpZgotfQor
ICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0VHlwZSgpKSkgeworICAgICAgICBE
Rkc6OkNvbW1vbkRhdGEqIGRmZ0NvbW1vbiA9IG1faml0Q29kZS0+ZGZnQ29tbW9uKCk7CisgICAg
ICAgIGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5maW5hbGl6ZSgpOworICAgIH0KIAotdm9p
ZCBDb2RlQmxvY2s6OmdldENhbGxMaW5rSW5mb01hcChDYWxsTGlua0luZm9NYXAmIHJlc3VsdCkK
LXsKLSAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgZ2V0Q2FsbExp
bmtJbmZvTWFwKGxvY2tlciwgcmVzdWx0KTsKKyAgICBWTTo6U3BhY2VBbmRGaW5hbGl6ZXJTZXQ6
OmZpbmFsaXplclNldEZvcigqc3Vic3BhY2UoKSkucmVtb3ZlKHRoaXMpOwogfQogCi12b2lkIENv
ZGVCbG9jazo6Z2V0QnlWYWxJbmZvTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5VmFs
SW5mb01hcCYgcmVzdWx0KQordm9pZCBDb2RlQmxvY2s6OmdldElDU3RhdHVzTWFwKGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYsIElDU3RhdHVzTWFwJiByZXN1bHQpCiB7CiAjaWYgRU5BQkxFKEpJ
VCkKICAgICBpZiAoSklUQ29kZTo6aXNKSVQoaml0VHlwZSgpKSkgewotICAgICAgICBmb3IgKGF1
dG8qIGJ5VmFsSW5mbyA6IG1fYnlWYWxJbmZvcykKLSAgICAgICAgICAgIHJlc3VsdC5hZGQoQ29k
ZU9yaWdpbihieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXgpLCBieVZhbEluZm8pOworICAgICAgICBm
b3IgKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA6IG1fc3R1YkluZm9zKQorICAgICAgICAg
ICAgcmVzdWx0LmFkZChzdHViSW5mby0+Y29kZU9yaWdpbiwgSUNTdGF0dXMoKSkuaXRlcmF0b3It
PnZhbHVlLnN0dWJJbmZvID0gc3R1YkluZm87CisgICAgICAgIGZvciAoQ2FsbExpbmtJbmZvKiBj
YWxsTGlua0luZm8gOiBtX2NhbGxMaW5rSW5mb3MpCisgICAgICAgICAgICByZXN1bHQuYWRkKGNh
bGxMaW5rSW5mby0+Y29kZU9yaWdpbigpLCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUuY2Fs
bExpbmtJbmZvID0gY2FsbExpbmtJbmZvOworICAgICAgICBmb3IgKEJ5VmFsSW5mbyogYnlWYWxJ
bmZvIDogbV9iYWxWYWxJbmZvcykKKyAgICAgICAgICAgIHJlc3VsdC5hZGQoQ29kZU9yaWdpbihi
eVZhbEluZm8tPmJ5dGVjb2RlSW5kZXgpLCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUuYnlW
YWxJbmZvID0gYnlWYWxJbmZvOworICAgICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklU
KGppdFR5cGUoKSkpIHsKKyAgICAgICAgICAgIERGRzo6Q29tbW9uRGF0YSogZGZnQ29tbW9uID0g
bV9qaXRDb2RlLT5kZmdDb21tb24oKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcGFpciA6IGRm
Z0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5jYWxscykKKyAgICAgICAgICAgICAgICByZXN1bHQu
YWRkKHBhaXIuZmlyc3QsIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52YWx1ZS5jYWxsU3RhdHVzID0g
cGFpci5zZWNvbmQuZ2V0KCk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBkZmdDb21t
b24tPnJlY29yZGVkU3RhdHVzZXMuZ2V0cykKKyAgICAgICAgICAgICAgICByZXN1bHQuYWRkKHBh
aXIuZmlyc3QsIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52YWx1ZS5nZXRTdGF0dXMgPSBwYWlyLnNl
Y29uZC5nZXQoKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcGFpciA6IGRmZ0NvbW1vbi0+cmVj
b3JkZWRTdGF0dXNlcy5wdXRzKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQocGFpci5maXJz
dCwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLnB1dFN0YXR1cyA9IHBhaXIuc2Vjb25kLmdl
dCgpOworICAgICAgICB9CiAgICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsK
ICNlbmRpZgogfQogCi12b2lkIENvZGVCbG9jazo6Z2V0QnlWYWxJbmZvTWFwKEJ5VmFsSW5mb01h
cCYgcmVzdWx0KQordm9pZCBDb2RlQmxvY2s6OmdldElDU3RhdHVzTWFwKElDU3RhdHVzTWFwJiBy
ZXN1bHQpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIGdl
dEJ5VmFsSW5mb01hcChsb2NrZXIsIHJlc3VsdCk7CisgICAgZ2V0SUNTdGF0dXNNYXAobG9ja2Vy
LCByZXN1bHQpOwogfQogCiAjaWYgRU5BQkxFKEpJVCkKQEAgLTE1MTQsNyArMTQ5OSw3IEBAIHZv
aWQgQ29kZUJsb2NrOjpyZXNldEpJVERhdGEoKQogICAgIAogICAgIC8vIFdlIGNhbiBjbGVhciB0
aGVzZSBiZWNhdXNlIG5vIG90aGVyIHRocmVhZCB3aWxsIGhhdmUgcmVmZXJlbmNlcyB0byBhbnkg
c3R1YiBpbmZvcywgY2FsbAogICAgIC8vIGxpbmsgaW5mb3MsIG9yIGJ5IHZhbCBpbmZvcyBpZiB3
ZSBkb24ndCBoYXZlIEpJVCBjb2RlLiBBdHRlbXB0cyB0byBxdWVyeSB0aGVzZSBkYXRhCi0gICAg
Ly8gc3RydWN0dXJlcyB1c2luZyB0aGUgY29uY3VycmVudCBBUEkgKGdldFN0dWJJbmZvTWFwIGFu
ZCBmcmllbmRzKSB3aWxsIHJldHVybiBub3RoaW5nIGlmIHdlCisgICAgLy8gc3RydWN0dXJlcyB1
c2luZyB0aGUgY29uY3VycmVudCBBUEkgKGdldElDU3RhdHVzTWFwIGFuZCBmcmllbmRzKSB3aWxs
IHJldHVybiBub3RoaW5nIGlmIHdlCiAgICAgLy8gZG9uJ3QgaGF2ZSBKSVQgY29kZS4KICAgICBt
X3N0dWJJbmZvcy5jbGVhcigpOwogICAgIG1fY2FsbExpbmtJbmZvcy5jbGVhcigpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjMy
MjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiRXhwcmVzc2lvblJhbmdlSW5m
by5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIkhhbmRsZXJJ
bmZvLmgiCisjaW5jbHVkZSAiSUNTdGF0dXNNYXAuaCIKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5o
IgogI2luY2x1ZGUgIkpJVENvZGUuaCIKICNpbmNsdWRlICJKSVRDb2RlTWFwLmgiCkBAIC05Niw4
ICs5Nyw2IEBAIGVudW0gY2xhc3MgQWNjZXNzVHlwZSA6IGludDhfdDsKIAogc3RydWN0IEFyaXRo
UHJvZmlsZTsKIAotdHlwZWRlZiBIYXNoTWFwPENvZGVPcmlnaW4sIFN0cnVjdHVyZVN0dWJJbmZv
KiwgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFzaD4gU3R1YkluZm9NYXA7Ci0KIGVudW0gUmVvcHRp
bWl6YXRpb25Nb2RlIHsgRG9udENvdW50UmVvcHRpbWl6YXRpb24sIENvdW50UmVvcHRpbWl6YXRp
b24gfTsKIAogY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CkBAIC0xOTYsOCArMTk1
LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBkdW1wQnl0ZWNvZGUoKTsKICAgICB2b2lkIGR1bXBC
eXRlY29kZShQcmludFN0cmVhbSYpOwotICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFt
JiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwg
Y29uc3QgU3R1YkluZm9NYXAmID0gU3R1YkluZm9NYXAoKSwgY29uc3QgQ2FsbExpbmtJbmZvTWFw
JiA9IENhbGxMaW5rSW5mb01hcCgpKTsKLSAgICB2b2lkIGR1bXBCeXRlY29kZShQcmludFN0cmVh
bSYgb3V0LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgU3R1YkluZm9NYXAmID0gU3R1
YkluZm9NYXAoKSwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiA9IENhbGxMaW5rSW5mb01hcCgpKTsK
KyAgICB2b2lkIGR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlv
biogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJiA9IElD
U3RhdHVzTWFwKCkpOworICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBJQ1N0YXR1c01hcCYgPSBJQ1N0YXR1c01hcCgp
KTsKIAogICAgIHZvaWQgZHVtcEV4Y2VwdGlvbkhhbmRsZXJzKFByaW50U3RyZWFtJik7CiAgICAg
dm9pZCBwcmludFN0cnVjdHVyZXMoUHJpbnRTdHJlYW0mLCBjb25zdCBJbnN0cnVjdGlvbiopOwpA
QCAtMjM3LDE0ICsyMzYsOCBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiBieXRlY29kZU9mZnNldEZyb21DYWxsU2l0ZUluZGV4KENhbGxTaXRlSW5kZXgpOwogCi0gICAg
dm9pZCBnZXRTdHViSW5mb01hcChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBTdHViSW5mb01h
cCYgcmVzdWx0KTsKLSAgICB2b2lkIGdldFN0dWJJbmZvTWFwKFN0dWJJbmZvTWFwJiByZXN1bHQp
OwotICAgIAotICAgIHZvaWQgZ2V0Q2FsbExpbmtJbmZvTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xv
Y2tlciYsIENhbGxMaW5rSW5mb01hcCYgcmVzdWx0KTsKLSAgICB2b2lkIGdldENhbGxMaW5rSW5m
b01hcChDYWxsTGlua0luZm9NYXAmIHJlc3VsdCk7Ci0KLSAgICB2b2lkIGdldEJ5VmFsSW5mb01h
cChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBCeVZhbEluZm9NYXAmIHJlc3VsdCk7Ci0gICAg
dm9pZCBnZXRCeVZhbEluZm9NYXAoQnlWYWxJbmZvTWFwJiByZXN1bHQpOworICAgIHZvaWQgZ2V0
SUNTdGF0dXNNYXAoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgSUNTdGF0dXNNYXAmIHJlc3Vs
dCk7CisgICAgdm9pZCBnZXRJQ1N0YXR1c01hcChJQ1N0YXR1c01hcCYgcmVzdWx0KTsKICAgICAK
ICNpZiBFTkFCTEUoSklUKQogICAgIEpJVEFkZElDKiBhZGRKSVRBZGRJQyhBcml0aFByb2ZpbGUq
LCBJbnN0cnVjdGlvbiopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVPcmlnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlT3JpZ2luLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDYsNyArNDYs
NyBAQCB1bnNpZ25lZCBDb2RlT3JpZ2luOjppbmxpbmVEZXB0aCgpIGNvbnN0CiAgICAgcmV0dXJu
IGlubGluZURlcHRoRm9yQ2FsbEZyYW1lKGlubGluZUNhbGxGcmFtZSk7CiB9CiAKLWJvb2wgQ29k
ZU9yaWdpbjo6aXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhjb25zdCBDb2RlT3JpZ2luJiBvdGhlcikg
Y29uc3QKK2Jvb2wgQ29kZU9yaWdpbjo6aXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhjb25zdCBDb2Rl
T3JpZ2luJiBvdGhlciwgQ29kZUJsb2NrKiB0ZXJtaW5hbCkgY29uc3QKIHsKICAgICBDb2RlT3Jp
Z2luIGEgPSAqdGhpczsKICAgICBDb2RlT3JpZ2luIGIgPSBvdGhlcjsKQEAgLTY4LDEwICs2OCwx
MyBAQCBib29sIENvZGVPcmlnaW46OmlzQXBwcm94aW1hdGVseUVxdWFsVG8oCiAgICAgICAgIGlm
IChhLmJ5dGVjb2RlSW5kZXggIT0gYi5ieXRlY29kZUluZGV4KQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAKLSAgICAgICAgaWYgKCghIWEuaW5saW5lQ2FsbEZyYW1lKSAhPSAo
ISFiLmlubGluZUNhbGxGcmFtZSkpCisgICAgICAgIGJvb2wgYUhhc0lubGluZUNhbGxGcmFtZSA9
ICEhYS5pbmxpbmVDYWxsRnJhbWUKKyAgICAgICAgICAgICYmIGEuaW5saW5lQ2FsbEZyYW1lLT5i
YXNlbGluZUNvZGVCbG9jay5nZXQoKSAhPSB0ZXJtaW5hbDsKKyAgICAgICAgYm9vbCBiSGFzSW5s
aW5lQ2FsbEZyYW1lID0gISFiLmlubGluZUNhbGxGcmFtZTsKKyAgICAgICAgaWYgKGFIYXNJbmxp
bmVDYWxsRnJhbWUgIT0gYkhhc0lubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgCi0gICAgICAgIGlmICghYS5pbmxpbmVDYWxsRnJhbWUpCisgICAgICAg
IGlmICghYUhhc0lubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICAKICAgICAgICAgaWYgKGEuaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay5n
ZXQoKSAhPSBiLmlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkpCkBAIC04
Miw3ICs4NSw3IEBAIGJvb2wgQ29kZU9yaWdpbjo6aXNBcHByb3hpbWF0ZWx5RXF1YWxUbygKICAg
ICB9CiB9CiAKLXVuc2lnbmVkIENvZGVPcmlnaW46OmFwcHJveGltYXRlSGFzaCgpIGNvbnN0Cit1
bnNpZ25lZCBDb2RlT3JpZ2luOjphcHByb3hpbWF0ZUhhc2goQ29kZUJsb2NrKiB0ZXJtaW5hbCkg
Y29uc3QKIHsKICAgICBpZiAoIWlzU2V0KCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtOTcsNiAr
MTAwLDkgQEAgdW5zaWduZWQgQ29kZU9yaWdpbjo6YXBwcm94aW1hdGVIYXNoKCkgYwogICAgICAg
ICBpZiAoIWNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQogICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICAgICAgCisgICAgICAgIGlmIChjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+
YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkgPT0gdGVybWluYWwpCisgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgICAgICAKICAgICAgICAgcmVzdWx0ICs9IFdURjo6UHRySGFzaDxKU0NlbGwq
Pjo6aGFzaChjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2suZ2V0
KCkpOwogICAgICAgICAKICAgICAgICAgY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4uaW5saW5lQ2Fs
bEZyYW1lLT5kaXJlY3RDYWxsZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZU9yaWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlT3JpZ2luLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05NCw5ICs5NCw5
IEBAIHN0cnVjdCBDb2RlT3JpZ2luIHsKICAgICAKICAgICAvLyBUaGlzIGNoZWNrcyBpZiB0aGUg
dHdvIGNvZGUgb3JpZ2lucyBjb3JyZXNwb25kIHRvIHRoZSBzYW1lIHN0YWNrIHRyYWNlIHNuaXBw
ZXRzLAogICAgIC8vIGJ1dCBpZ25vcmUgd2hldGhlciB0aGUgSW5saW5lQ2FsbEZyYW1lJ3MgYXJl
IGlkZW50aWNhbC4KLSAgICBib29sIGlzQXBwcm94aW1hdGVseUVxdWFsVG8oY29uc3QgQ29kZU9y
aWdpbiYgb3RoZXIpIGNvbnN0OworICAgIGJvb2wgaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhjb25z
dCBDb2RlT3JpZ2luJiBvdGhlciwgQ29kZUJsb2NrKiB0ZXJtaW5hbCA9IG51bGxwdHIpIGNvbnN0
OwogICAgIAotICAgIHVuc2lnbmVkIGFwcHJveGltYXRlSGFzaCgpIGNvbnN0OworICAgIHVuc2ln
bmVkIGFwcHJveGltYXRlSGFzaChDb2RlQmxvY2sqIHRlcm1pbmFsID0gbnVsbHB0cikgY29uc3Q7
CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rpb24+CiAgICAgdm9pZCB3YWxrVXBJbmxp
bmVTdGFjayhjb25zdCBGdW5jdGlvbiYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Myw4ICs0MywxMCBAQCBFeGl0UHJvZmlsZTo6fkV4aXRQcm9maWxlKCkgeyB9
CiAKIGJvb2wgRXhpdFByb2ZpbGU6OmFkZChDb2RlQmxvY2sqIG93bmVyLCBjb25zdCBGcmVxdWVu
dEV4aXRTaXRlJiBzaXRlKQogeworICAgIFJFTEVBU0VfQVNTRVJUKHNpdGUuaml0VHlwZSgpICE9
IEV4aXRGcm9tQW55dGhpbmcpOworICAgIFJFTEVBU0VfQVNTRVJUKHNpdGUuaW5saW5lS2luZCgp
ICE9IEV4aXRGcm9tQW55SW5saW5lS2luZCk7CisKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9j
a2VyKG93bmVyLT51bmxpbmtlZENvZGVCbG9jaygpLT5tX2xvY2spOwotICAgIEFTU0VSVChzaXRl
LmppdFR5cGUoKSAhPSBFeGl0RnJvbUFueXRoaW5nKTsKIAogICAgIENPREVCTE9DS19MT0dfRVZF
TlQob3duZXIsICJmcmVxdWVudEV4aXQiLCAoc2l0ZSkpOwogICAgIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgJKHJldmlzaW9uIDIz
MjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MS0yMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ29u
Y3VycmVudEpTTG9jay5oIgogI2luY2x1ZGUgIkV4aXRLaW5kLmgiCisjaW5jbHVkZSAiRXhpdGlu
Z0lubGluZUtpbmQuaCIKICNpbmNsdWRlICJFeGl0aW5nSklUVHlwZS5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNDEsNiArNDIsNyBAQCBw
dWJsaWM6CiAgICAgICAgIDogbV9ieXRlY29kZU9mZnNldCgwKSAvLyAwID0gZW1wdHkgdmFsdWUK
ICAgICAgICAgLCBtX2tpbmQoRXhpdEtpbmRVbnNldCkKICAgICAgICAgLCBtX2ppdFR5cGUoRXhp
dEZyb21Bbnl0aGluZykKKyAgICAgICAgLCBtX2lubGluZUtpbmQoRXhpdEZyb21BbnlJbmxpbmVL
aW5kKQogICAgIHsKICAgICB9CiAgICAgCkBAIC00OCwxMyArNTAsMTUgQEAgcHVibGljOgogICAg
ICAgICA6IG1fYnl0ZWNvZGVPZmZzZXQoMSkgLy8gMSA9IGRlbGV0ZWQgdmFsdWUKICAgICAgICAg
LCBtX2tpbmQoRXhpdEtpbmRVbnNldCkKICAgICAgICAgLCBtX2ppdFR5cGUoRXhpdEZyb21Bbnl0
aGluZykKKyAgICAgICAgLCBtX2lubGluZUtpbmQoRXhpdEZyb21BbnlJbmxpbmVLaW5kKQogICAg
IHsKICAgICB9CiAgICAgCi0gICAgZXhwbGljaXQgRnJlcXVlbnRFeGl0U2l0ZSh1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCwgRXhpdEtpbmQga2luZCwgRXhpdGluZ0pJVFR5cGUgaml0VHlwZSA9IEV4
aXRGcm9tQW55dGhpbmcpCisgICAgZXhwbGljaXQgRnJlcXVlbnRFeGl0U2l0ZSh1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCwgRXhpdEtpbmQga2luZCwgRXhpdGluZ0pJVFR5cGUgaml0VHlwZSA9IEV4
aXRGcm9tQW55dGhpbmcsIEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQgPSBFeGl0RnJvbUFu
eUlubGluZUtpbmQpCiAgICAgICAgIDogbV9ieXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkK
ICAgICAgICAgLCBtX2tpbmQoa2luZCkKICAgICAgICAgLCBtX2ppdFR5cGUoaml0VHlwZSkKKyAg
ICAgICAgLCBtX2lubGluZUtpbmQoaW5saW5lS2luZCkKICAgICB7CiAgICAgICAgIGlmIChtX2tp
bmQgPT0gQXJndW1lbnRzRXNjYXBlZCkgewogICAgICAgICAgICAgLy8gQ291bnQgdGhpcyBvbmUg
Z2xvYmFsbHkuIEl0IGRvZXNuJ3QgbWF0dGVyIHdoZXJlIGluIHRoZSBjb2RlIGJsb2NrIHRoZSBh
cmd1bWVudHMgZXhjYXBlZDsKQEAgLTY1LDEwICs2OSwxMSBAQCBwdWJsaWM6CiAgICAgCiAgICAg
Ly8gVXNlIHRoaXMgY29uc3RydWN0b3IgaWYgeW91IHdpc2ggZm9yIHRoZSBleGl0IHNpdGUgdG8g
YmUgY291bnRlZCBnbG9iYWxseSB3aXRoaW4gaXRzCiAgICAgLy8gY29kZSBibG9jay4KLSAgICBl
eHBsaWNpdCBGcmVxdWVudEV4aXRTaXRlKEV4aXRLaW5kIGtpbmQsIEV4aXRpbmdKSVRUeXBlIGpp
dFR5cGUgPSBFeGl0RnJvbUFueXRoaW5nKQorICAgIGV4cGxpY2l0IEZyZXF1ZW50RXhpdFNpdGUo
RXhpdEtpbmQga2luZCwgRXhpdGluZ0pJVFR5cGUgaml0VHlwZSA9IEV4aXRGcm9tQW55dGhpbmcs
IEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQgPSBFeGl0RnJvbUFueUlubGluZUtpbmQpCiAg
ICAgICAgIDogbV9ieXRlY29kZU9mZnNldCgwKQogICAgICAgICAsIG1fa2luZChraW5kKQogICAg
ICAgICAsIG1faml0VHlwZShqaXRUeXBlKQorICAgICAgICAsIG1faW5saW5lS2luZChpbmxpbmVL
aW5kKQogICAgIHsKICAgICB9CiAgICAgCkBAIC04MSw3ICs4Niw4IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIHJldHVybiBtX2J5dGVjb2RlT2Zmc2V0ID09IG90aGVyLm1fYnl0ZWNvZGVPZmZz
ZXQKICAgICAgICAgICAgICYmIG1fa2luZCA9PSBvdGhlci5tX2tpbmQKLSAgICAgICAgICAgICYm
IG1faml0VHlwZSA9PSBvdGhlci5tX2ppdFR5cGU7CisgICAgICAgICAgICAmJiBtX2ppdFR5cGUg
PT0gb3RoZXIubV9qaXRUeXBlCisgICAgICAgICAgICAmJiBtX2lubGluZUtpbmQgPT0gb3RoZXIu
bV9pbmxpbmVLaW5kOwogICAgIH0KICAgICAKICAgICBib29sIHN1YnN1bWVzKGNvbnN0IEZyZXF1
ZW50RXhpdFNpdGUmIG90aGVyKSBjb25zdApAQCAtOTAsMTkgKzk2LDI0IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKG1fa2luZCAhPSBvdGhlci5tX2tp
bmQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChtX2ppdFR5cGUgPT0g
RXhpdEZyb21Bbnl0aGluZykKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICByZXR1
cm4gbV9qaXRUeXBlID09IG90aGVyLm1faml0VHlwZTsKKyAgICAgICAgaWYgKG1faml0VHlwZSAh
PSBFeGl0RnJvbUFueXRoaW5nCisgICAgICAgICAgICAmJiBtX2ppdFR5cGUgIT0gb3RoZXIubV9q
aXRUeXBlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAobV9pbmxpbmVL
aW5kICE9IEV4aXRGcm9tQW55SW5saW5lS2luZAorICAgICAgICAgICAgJiYgbV9pbmxpbmVLaW5k
ICE9IG90aGVyLm1faW5saW5lS2luZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAog
ICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6aW50SGFzaChtX2J5dGVjb2RlT2Zmc2V0KSArIG1f
a2luZCArIHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RXhpdGluZ0pJVFR5cGU+
PihtX2ppdFR5cGUpICogNzsKKyAgICAgICAgcmV0dXJuIFdURjo6aW50SGFzaChtX2J5dGVjb2Rl
T2Zmc2V0KSArIG1fa2luZCArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2ppdFR5cGUpICogNyAr
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2lubGluZUtpbmQpICogMTE7CiAgICAgfQogICAgIAog
ICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9ieXRlY29kZU9m
ZnNldDsgfQogICAgIEV4aXRLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KICAg
ICBFeGl0aW5nSklUVHlwZSBqaXRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9qaXRUeXBlOyB9Cisg
ICAgRXhpdGluZ0lubGluZUtpbmQgaW5saW5lS2luZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5l
S2luZDsgfQogICAgIAogICAgIEZyZXF1ZW50RXhpdFNpdGUgd2l0aEpJVFR5cGUoRXhpdGluZ0pJ
VFR5cGUgaml0VHlwZSkgY29uc3QKICAgICB7CkBAIC0xMTEsNiArMTIyLDEzIEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBGcmVxdWVudEV4aXRTaXRlIHdp
dGhJbmxpbmVLaW5kKEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQpIGNvbnN0CisgICAgewor
ICAgICAgICBGcmVxdWVudEV4aXRTaXRlIHJlc3VsdCA9ICp0aGlzOworICAgICAgICByZXN1bHQu
bV9pbmxpbmVLaW5kID0gaW5saW5lS2luZDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisKICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKICAgICB7CiAgICAg
ICAgIHJldHVybiBtX2tpbmQgPT0gRXhpdEtpbmRVbnNldCAmJiBtX2J5dGVjb2RlT2Zmc2V0OwpA
QCAtMTIyLDYgKzE0MCw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9ieXRlY29kZU9mZnNl
dDsKICAgICBFeGl0S2luZCBtX2tpbmQ7CiAgICAgRXhpdGluZ0pJVFR5cGUgbV9qaXRUeXBlOwor
ICAgIEV4aXRpbmdJbmxpbmVLaW5kIG1faW5saW5lS2luZDsKIH07CiAKIHN0cnVjdCBGcmVxdWVu
dEV4aXRTaXRlSGFzaCB7CkBAIC0xOTIsMTAgKzIxMSwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBo
YXNFeGl0U2l0ZShjb25zdCBGcmVxdWVudEV4aXRTaXRlJiBzaXRlKSBjb25zdAogICAgIHsKICAg
ICAgICAgaWYgKHNpdGUuaml0VHlwZSgpID09IEV4aXRGcm9tQW55dGhpbmcpIHsKLSAgICAgICAg
ICAgIHJldHVybiBoYXNFeGl0U2l0ZShzaXRlLndpdGhKSVRUeXBlKEV4aXRGcm9tREZHKSkKLSAg
ICAgICAgICAgICAgICB8fCBoYXNFeGl0U2l0ZShzaXRlLndpdGhKSVRUeXBlKEV4aXRGcm9tRlRM
KSk7CisgICAgICAgICAgICByZXR1cm4gaGFzRXhpdFNpdGVXaXRoU3BlY2lmaWNKSVRUeXBlKHNp
dGUud2l0aEpJVFR5cGUoRXhpdEZyb21ERkcpKQorICAgICAgICAgICAgICAgIHx8IGhhc0V4aXRT
aXRlV2l0aFNwZWNpZmljSklUVHlwZShzaXRlLndpdGhKSVRUeXBlKEV4aXRGcm9tRlRMKSk7CiAg
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1fZnJlcXVlbnRFeGl0U2l0ZXMuZmluZChzaXRlKSAh
PSBtX2ZyZXF1ZW50RXhpdFNpdGVzLmVuZCgpOworICAgICAgICByZXR1cm4gaGFzRXhpdFNpdGVX
aXRoU3BlY2lmaWNKSVRUeXBlKHNpdGUpOwogICAgIH0KICAgICAKICAgICBib29sIGhhc0V4aXRT
aXRlKEV4aXRLaW5kIGtpbmQpIGNvbnN0CkBAIC0yMDgsNiArMjI3LDIwIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIGhhc0V4aXRTaXRlKEZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwg
a2luZCkpOwogICAgIH0KIHByaXZhdGU6CisgICAgYm9vbCBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZp
Y0pJVFR5cGUoY29uc3QgRnJlcXVlbnRFeGl0U2l0ZSYgc2l0ZSkgY29uc3QKKyAgICB7CisgICAg
ICAgIGlmIChzaXRlLmlubGluZUtpbmQoKSA9PSBFeGl0RnJvbUFueUlubGluZUtpbmQpIHsKKyAg
ICAgICAgICAgIHJldHVybiBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0lubGluZUtpbmQoc2l0ZS53
aXRoSW5saW5lS2luZChFeGl0RnJvbU5vdElubGluZWQpKQorICAgICAgICAgICAgICAgIHx8IGhh
c0V4aXRTaXRlV2l0aFNwZWNpZmljSW5saW5lS2luZChzaXRlLndpdGhJbmxpbmVLaW5kKEV4aXRG
cm9tSW5saW5lZCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBoYXNFeGl0U2l0ZVdpdGhT
cGVjaWZpY0lubGluZUtpbmQoc2l0ZSk7CisgICAgfQorICAgIAorICAgIGJvb2wgaGFzRXhpdFNp
dGVXaXRoU3BlY2lmaWNJbmxpbmVLaW5kKGNvbnN0IEZyZXF1ZW50RXhpdFNpdGUmIHNpdGUpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9mcmVxdWVudEV4aXRTaXRlcy5maW5kKHNpdGUp
ICE9IG1fZnJlcXVlbnRFeGl0U2l0ZXMuZW5kKCk7CisgICAgfQorICAgIAogICAgIEhhc2hTZXQ8
RnJlcXVlbnRFeGl0U2l0ZT4gbV9mcmVxdWVudEV4aXRTaXRlczsKIH07CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0RmxhZy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0RmxhZy5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0RmxhZy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI3ByYW1nYSBvbmNlCisKKyNpbmNsdWRlICJFeGl0aW5nSW5saW5lS2luZC5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhpdEZsYWcgeworcHVibGljOgorICAgIEV4aXRGbGFn
KCkgeyB9CisgICAgCisgICAgRXhpdEZsYWcoYm9vbCB2YWx1ZSwgRXhpdGluZ0lubGluZUtpbmQg
aW5saW5lS2luZCkKKyAgICB7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIAorICAgICAgICBzd2l0Y2ggKGlubGluZUtpbmQpIHsKKyAgICAgICAgY2Fz
ZSBFeGl0RnJvbUFueUlubGluZUtpbmQ6CisgICAgICAgICAgICBtX2JpdHMgPSB0cnVlTm90SW5s
aW5lZCB8IHRydWVJbmxpbmVkOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRXhp
dEZyb21Ob3RJbmxpbmVkOgorICAgICAgICAgICAgbV9iaXRzID0gdHJ1ZU5vdElubGluZWQ7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFeGl0RnJvbUlubGluZWQ6CisgICAgICAg
ICAgICBtX2JpdHMgPSB0cnVlSW5saW5lZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgfQorICAgIAorICAgIEV4aXRGbGFnIG9wZXJhdG9yfChjb25zdCBFeGl0RmxhZyYgb3Ro
ZXIpIGNvbnN0CisgICAgeworICAgICAgICBFeGl0RmxhZyByZXN1bHQ7CisgICAgICAgIHJlc3Vs
dC5tX2JpdHMgPSBtX2JpdHMgfCBvdGhlci5tX2JpdHM7CisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfQorICAgIAorICAgIEV4aXRGbGFnJiBvcGVyYXRvcnw9KGNvbnN0IEV4aXRGbGFnJiBv
dGhlcikKKyAgICB7CisgICAgICAgICp0aGlzID0gKnRoaXMgfCBvdGhlcjsKKyAgICB9CisgICAg
CisgICAgRXhpdEZsYWcgb3BlcmF0b3ImKGNvbnN0IEV4aXRGbGFnJiBvdGhlcikgY29uc3QKKyAg
ICB7CisgICAgICAgIEV4aXRGbGFnIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1fYml0cyA9IG1f
Yml0cyAmIG90aGVyLm1fYml0czsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAg
CisgICAgRXhpdEZsYWcmIG9wZXJhdG9yJj0oY29uc3QgRXhpdEZsYWcmIG90aGVyKQorICAgIHsK
KyAgICAgICAgKnRoaXMgPSAqdGhpcyAmIG90aGVyOworICAgIH0KKyAgICAKKyAgICBleHBsaWNp
dCBvcGVyYXRvciBib29sKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhIW1fYml0czsK
KyAgICB9CisgICAgCisgICAgYm9vbCBpc1NldChFeGl0aW5nSW5saW5lS2luZCBpbmxpbmVLaW5k
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICp0aGlzICYgRXhpdEZsYWcodHJ1ZSwgaW5s
aW5lS2luZCk7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3RleHByIHVp
bnQ4X3QgdHJ1ZU5vdElubGluZWQgPSAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCB0
cnVlSW5saW5lZCA9IDI7CisgICAgCisgICAgdWludDhfdCBtX2JpdHMgeyAwIH07Cit9OworCit9
IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V4aXRpbmdJbmxpbmVLaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0aW5nSW5saW5lS2luZC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRXhpdGluZ0lubGlu
ZUtpbmQuaCIKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgV1RG
IHsKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwordm9pZCBwcmludEludGVybmFsKFByaW50U3Ry
ZWFtJiBvdXQsIEV4aXRpbmdJbmxpbmVLaW5kIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7
CisgICAgY2FzZSBFeGl0RnJvbUFueUlubGluZUtpbmQ6CisgICAgICAgIG91dC5wcmludCgiRnJv
bUFueUlubGluZUtpbmQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRXhpdEZyb21Ob3RJ
bmxpbmVkOgorICAgICAgICBvdXQucHJpbnQoIkZyb21Ob3RJbmxpbmVkIik7CisgICAgICAgIHJl
dHVybjsKKyAgICBjYXNlIEV4aXRGcm9tSW5saW5lZDoKKyAgICAgICAgb3V0LnByaW50KCJGcm9t
SW5saW5lZCIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtp
bmQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgSlND
IHsKKworZW51bSBFeGl0aW5nSW5saW5lS2luZCA6IHVpbnQ4X3QgeworICAgIEV4aXRGcm9tQW55
SW5saW5lS2luZCwKKyAgICBFeGl0RnJvbU5vdElubGluZWQsCisgICAgRXhpdEZyb21JbmxpbmVk
LAorfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBQ
cmludFN0cmVhbTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6RXhpdGlu
Z0lubGluZUtpbmQpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9u
IDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDkgKzExNiwxMyBAQCBHZXRCeUlkU3RhdHVzIEdl
dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgIGxvY2tlciwgcHJvZmlsZWRCbG9jaywg
bWFwLmdldChDb2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgpKSwgdWlkLAogICAgICAgICBDYWxsTGlu
a1N0YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YShwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4
KSk7CiAgICAgCisgICAgaWYgKGJ5dGVjb2RlSW5kZXggPT0gMjApCisgICAgICAgIGRhdGFMb2co
IlJlc3VsdDogIiwgcmVzdWx0LCAiXG4iKTsKKyAgICAKICAgICBpZiAoIXJlc3VsdC50YWtlc1Ns
b3dQYXRoKCkKKyAgICAgICAgJiYgYnl0ZWNvZGVJbmRleCAhPSAyMAogICAgICAgICAmJiBoYXNF
eGl0U2l0ZShwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4KSkKLSAgICAgICAgcmV0dXJuIEdl
dEJ5SWRTdGF0dXMocmVzdWx0Lm1ha2VzQ2FsbHMoKSA/IE1ha2VzQ2FsbHMgOiBUYWtlc1Nsb3dQ
YXRoLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5zbG93VmVyc2lvbigpOwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0obWFwKTsKICNlbmRpZgpAQCAtMTM3LDcgKzE0MSw3IEBAIEdldEJ5
SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclMKICAgICAgICAgQ2FsbExpbmtTdGF0
dXM6OmNvbXB1dGVFeGl0U2l0ZURhdGEocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29k
ZUluZGV4KSk7CiAKICAgICBpZiAoIXJlc3VsdC50YWtlc1Nsb3dQYXRoKCkgJiYgR2V0QnlJZFN0
YXR1czo6aGFzRXhpdFNpdGUocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4
KSkKLSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMocmVzdWx0Lm1ha2VzQ2FsbHMoKSA/IEdl
dEJ5SWRTdGF0dXM6Ok1ha2VzQ2FsbHMgOiBHZXRCeUlkU3RhdHVzOjpUYWtlc1Nsb3dQYXRoLCB0
cnVlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5zbG93VmVyc2lvbigpOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkBAIC0xNzAsOCArMTc0LDExIEBA
IEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclMKICAgICAgICAgfQogICAg
IH0KICAgICAKLSAgICBpZiAoc3R1YkluZm8tPnRvb2tTbG93UGF0aCkKKyAgICBpZiAoc3R1Yklu
Zm8tPnRvb2tTbG93UGF0aCkgeworICAgICAgICBpZiAoc3R1YkluZm8tPmNvZGVPcmlnaW4uYnl0
ZWNvZGVJbmRleCA9PSAyMCkKKyAgICAgICAgICAgIGRhdGFMb2coIlN0dWIgaW5mbyB0b29rIHNs
b3cgcGF0aC5cbiIpOwogICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhzbG93UGF0aFN0YXRl
KTsKKyAgICB9CiAgICAgCiAgICAgLy8gRmluYWxseSBmaWd1cmUgb3V0IGlmIHdlIGNhbiBkZXJp
dmUgYW4gYWNjZXNzIHN0cmF0ZWd5LgogICAgIEdldEJ5SWRTdGF0dXMgcmVzdWx0OwpAQCAtMzMy
LDEyICszMzksMTUgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAog
ICAgICAgICAgICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVl
ZGJhY2soCiAgICAgICAgICAgICAgICAgbG9ja2VyLCBkZmdCbG9jaywgZGZnTWFwLmdldChjb2Rl
T3JpZ2luKSwgdWlkLCBleGl0U2l0ZURhdGEpOwogICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBpZiAoZmFsc2UgJiYgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4ID09IDIwKQorICAgICAgICAg
ICAgZGF0YUxvZygiSW4gIiwgcG9pbnRlckR1bXAocHJvZmlsZWRCbG9jayksICIgIiwgY29kZU9y
aWdpbiwgIjogREZHIHNhdzogIiwgcmVzdWx0LCAiXG4iKTsKIAogICAgICAgICBpZiAocmVzdWx0
LnRha2VzU2xvd1BhdGgoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgCi0gICAg
ICAgIGlmIChoYXNFeGl0U2l0ZShwcm9maWxlZEJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5k
ZXgpKQotICAgICAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgdHJ1
ZSk7CisgICAgICAgIGlmIChjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXggIT0gMjAgJiYgaGFzRXhp
dFNpdGUocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KSkKKyAgICAgICAg
ICAgIHJldHVybiByZXN1bHQuc2xvd1ZlcnNpb24oKTsKICAgICAgICAgCiAgICAgICAgIGlmIChy
ZXN1bHQuaXNTZXQoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0zNDYsNyArMzU2
LDEwIEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICBVTlVT
RURfUEFSQU0oZGZnQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShkZmdNYXApOwogI2VuZGlmCi0K
KyAgICAKKyAgICBpZiAoZGZnQmxvY2sgJiYgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4ID09IDIw
KQorICAgICAgICBkYXRhTG9nKCJJbiAiLCBwb2ludGVyRHVtcChwcm9maWxlZEJsb2NrKSwgIiAi
LCBjb2RlT3JpZ2luLCAiOiBHb2luZyB3aXRoIHdoYXQgYmFzZWxpbmUgc2F3LlxuIik7CisgICAg
ICAgIAogICAgIHJldHVybiBjb21wdXRlRm9yKHByb2ZpbGVkQmxvY2ssIGJhc2VsaW5lTWFwLCBj
b2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIHVpZCk7CiB9CiAKQEAgLTQxNCw2ICs0MjcsMTEgQEAg
Ym9vbCBHZXRCeUlkU3RhdHVzOjptYWtlc0NhbGxzKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKK0dldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6c2xvd1ZlcnNpb24oKSBjb25zdAor
eworICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKG1ha2VzQ2FsbHMoKSA/IE1ha2VzQ2FsbHMgOiBU
YWtlc1Nsb3dQYXRoLCB3YXNTZWVuSW5KSVQoKSk7Cit9CisKIHZvaWQgR2V0QnlJZFN0YXR1czo6
ZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0KQogewogICAgIGlmIChtX3N0YXRlICE9IFNp
bXBsZSkKQEAgLTQyMyw2ICs0NDEsMjUgQEAgdm9pZCBHZXRCeUlkU3RhdHVzOjpmaWx0ZXIoY29u
c3QgU3RydWN0dQogICAgICAgICBtX3N0YXRlID0gTm9JbmZvcm1hdGlvbjsKIH0KIAordm9pZCBH
ZXRCeUlkU3RhdHVzOjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBm
b3IgKEdldEJ5SWRWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykKKyAgICAgICAgdmFyaWF0
Lm1hcmtJZkNoZWFwKHZpc2l0b3IpOworfQorCitib29sIEdldEJ5SWRTdGF0dXM6OmZpbmFsaXpl
KCkKK3sKKyAgICBmb3IgKEdldEJ5SWRWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykgewor
ICAgICAgICBpZiAoIXZhcmlhbnQuZmluYWxpemUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgaWYgKG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0ICYmICFIZWFwOjppc01h
cmtlZChtX21vZHVsZU5hbWVzcGFjZU9iamVjdCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAobV9tb2R1bGVFbnZpcm9ubWVudCAmJiAhSGVhcDo6aXNNYXJrZWQobV9tb2R1bGVFbnZp
cm9ubWVudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwog
dm9pZCBHZXRCeUlkU3RhdHVzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAg
b3V0LnByaW50KCIoIik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0
QnlJZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9HZXRCeUlkU3RhdHVzLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAiQ29uY3VycmVudEpTTG9j
ay5oIgogI2luY2x1ZGUgIkdldEJ5SWRWYXJpYW50LmgiCisjaW5jbHVkZSAiSUNTdGF0dXNNYXAu
aCIKICNpbmNsdWRlICJTY29wZU9mZnNldC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQwLDgg
KzQxLDYgQEAgY2xhc3MgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q7CiBjbGFzcyBNb2R1bGVOYW1l
c3BhY2VBY2Nlc3NDYXNlOwogY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CiAKLXR5cGVkZWYgSGFz
aE1hcDxDb2RlT3JpZ2luLCBTdHJ1Y3R1cmVTdHViSW5mbyosIENvZGVPcmlnaW5BcHByb3hpbWF0
ZUhhc2g+IFN0dWJJbmZvTWFwOwotCiBjbGFzcyBHZXRCeUlkU3RhdHVzIHsKIHB1YmxpYzoKICAg
ICBlbnVtIFN0YXRlIHsKQEAgLTgxLDEwICs4MCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIG1fdmFy
aWFudHMuYXBwZW5kKHZhcmlhbnQpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgR2V0QnlJZFN0
YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIFN0dWJJbmZvTWFwJiwgdW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7CisgICAgc3RhdGljIEdldEJ5SWRTdGF0
dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCBJQ1N0YXR1c01hcCYsIHVuc2lnbmVkIGJ5dGVjb2Rl
SW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogICAgIHN0YXRpYyBHZXRCeUlkU3RhdHVz
IGNvbXB1dGVGb3IoY29uc3QgU3RydWN0dXJlU2V0JiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7
CiAgICAgCi0gICAgc3RhdGljIEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqIGJh
c2VsaW5lQmxvY2ssIENvZGVCbG9jayogZGZnQmxvY2ssIFN0dWJJbmZvTWFwJiBiYXNlbGluZU1h
cCwgU3R1YkluZm9NYXAmIGRmZ01hcCwgQ29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVp
ZCk7CisgICAgc3RhdGljIEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqIGJhc2Vs
aW5lQmxvY2ssIENvZGVCbG9jayogZGZnQmxvY2ssIElDU3RhdHVzTWFwJiBiYXNlbGluZU1hcCwg
SUNTdGF0dXNDb250ZXh0U3RhY2smIGRmZ0NvbnRleHRTdGFjaywgQ29kZU9yaWdpbiwgVW5pcXVl
ZFN0cmluZ0ltcGwqIHVpZCk7CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBzdGF0aWMgR2V0
QnlJZFN0YXR1cyBjb21wdXRlRm9yU3R1YkluZm8oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwg
Q29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyosIENvZGVPcmlnaW4s
IFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwpAQCAtMTA2LDYgKzEwNSw4IEBAIHB1YmxpYzoKICAg
ICBib29sIHRha2VzU2xvd1BhdGgoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFRha2VzU2xv
d1BhdGggfHwgbV9zdGF0ZSA9PSBNYWtlc0NhbGxzIHx8IG1fc3RhdGUgPT0gQ3VzdG9tIHx8IG1f
c3RhdGUgPT0gTW9kdWxlTmFtZXNwYWNlOyB9CiAgICAgYm9vbCBtYWtlc0NhbGxzKCkgY29uc3Q7
CiAgICAgCisgICAgR2V0QnlJZFN0YXR1cyBzbG93VmVyc2lvbigpIGNvbnN0OworICAgIAogICAg
IGJvb2wgd2FzU2VlbkluSklUKCkgY29uc3QgeyByZXR1cm4gbV93YXNTZWVuSW5KSVQ7IH0KICAg
ICAKICAgICAvLyBBdHRlbXB0cyB0byByZWR1Y2UgdGhlIHNldCBvZiB2YXJpYW50cyB0byBmaXQg
dGhlIGdpdmVuIHN0cnVjdHVyZSBzZXQuIFRoaXMgbWF5IGJlIGFwcHJveGltYXRlLgpAQCAtMTE1
LDYgKzExNiw5IEBAIHB1YmxpYzoKICAgICBKU01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZp
cm9ubWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlRW52aXJvbm1lbnQ7IH0KICAgICBTY29w
ZU9mZnNldCBzY29wZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVPZmZzZXQ7IH0KICAg
ICAKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7CisgICAgYm9vbCBmaW5hbGl6
ZSgpOyAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGlzIGdldHMgdG8gbGl2ZS4KKyAgICAKICAgICB2b2lk
IGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5jcHAJKHJldmlz
aW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFy
aWFudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNSw2ICsxMzUsMjQgQEAgYm9vbCBHZXRCeUlk
VmFyaWFudDo6YXR0ZW1wdFRvTWVyZ2UoY29ucwogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lk
IEdldEJ5SWRWYXJpYW50OjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAg
ICBtX3N0cnVjdHVyZVNldC5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKK30KKworYm9vbCBHZXRCeUlk
VmFyaWFudDo6ZmluYWxpemUoKQoreworICAgIGlmICghbV9zdHJ1Y3R1cmVTZXQuaXNTdGlsbEFs
aXZlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fY29uZGl0aW9uU2V0LmFy
ZVN0aWxsTGl2ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fY2FsbExpbmtT
dGF0dXMgJiYgIW1fY2FsbExpbmtTdGF0dXMtPmZpbmFsaXplKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAobV9pbnRyaW5zaWNGdW5jdGlvbiAmJiAhSGVhcDo6aXNNYXJrZWQobV9p
bnRyaW5zaWNGdW5jdGlvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwogdm9pZCBHZXRCeUlkVmFyaWFudDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dAogewogICAgIGR1bXBJbkNvbnRleHQob3V0LCAwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5oCShyZXZpc2lvbiAyMzIyMjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzMsNiArNzMsOSBAQCBwdWJsaWM6CiAKICAgICBib29sIGF0dGVtcHRUb01l
cmdlKGNvbnN0IEdldEJ5SWRWYXJpYW50JiBvdGhlcik7CiAgICAgCisgICAgdm9pZCBtYXJrSWZD
aGVhcChTbG90VmlzaXRvciYpOworICAgIGJvb2wgZmluYWxpemUoKTsKKyAgICAKICAgICB2b2lk
IGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICB2b2lkIGR1bXBJbkNvbnRleHQoUHJpbnRT
dHJlYW0mLCBEdW1wQ29udGV4dCopIGNvbnN0OwogICAgIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNNYXAuY3BwCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSUNTdGF0dXNNYXAuaCIK
KworI2luY2x1ZGUgIlRlcm1pbmF0ZWRDb2RlT3JpZ2luLmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitJQ1N0YXR1cyBJQ1N0YXR1c0NvbnRleHQ6OmdldChDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCit7
CisgICAgcmV0dXJuIG1hcC5nZXQ8VGVybWluYXRlZENvZGVPcmlnaW5IYXNoVHJhbnNsYXRvcj4o
CisgICAgICAgIFRlcm1pbmF0ZWRDb2RlT3JpZ2luKGNvZGVPcmlnaW4sIGJhc2VsaW5lQ29kZUJs
b2NrKSk7Cit9CisKK2Jvb2wgSUNTdGF0dXNDb250ZXh0Ojppc0lubGluZWQoQ29kZU9yaWdpbiBj
b2RlT3JpZ2luKQoreworICAgIHJldHVybiBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSAmJiBj
b2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkgIT0gYmFz
ZWxpbmVDb2RlQmxvY2s7Cit9CisKK0V4aXRpbmdJbmxpbmVLaW5kIElDU3RhdHVzQ29udGV4dDo6
aW5saW5lS2luZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCit7CisgICAgcmV0dXJuIGlzSW5saW5l
ZChjb2RlT3JpZ2luKSA/IEV4aXRGcm9tSW5saW5lZCA6IEV4aXRGcm9tTm90SW5saW5lZDsKK30K
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JQ1N0YXR1c01hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JQ1N0YXR1c01hcC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYW1n
YSBvbmNlCisKKyNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIENhbGxMaW5rSW5mbzsKK2NsYXNzIENhbGxM
aW5rU3RhdHVzOworY2xhc3MgQ29kZUJsb2NrOworY2xhc3MgR2V0QnlJZFN0YXR1czsKK2NsYXNz
IFB1dEJ5SWRTdGF0dXM7CitjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsKK3N0cnVjdCBCeVZhbElu
Zm87CisKK3N0cnVjdCBJQ1N0YXR1cyB7CisgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZv
IHsgbnVsbHB0ciB9OworICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvIHsgbnVsbHB0ciB9
OworICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvIHsgbnVsbHB0ciB9OworICAgIENhbGxMaW5rU3Rh
dHVzKiBjYWxsU3RhdHVzIHsgbnVsbHB0ciB9OworICAgIEdldEJ5SWRTdGF0dXMqIGdldFN0YXR1
cyB7IG51bGxwdHIgfTsKKyAgICBQdXRCeUlkU3RhdHVzKiBwdXRTdGF0dXMgeyBudWxscHRyIH07
Cit9OworCit0eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdpbiwgSUNTdGF0dXMsIENvZGVPcmlnaW5B
cHByb3hpbWF0ZUhhc2g+IElDU3RhdHVzTWFwOworCitzdHJ1Y3QgSUNTdGF0dXNDb250ZXh0IHsK
KyAgICBJQ1N0YXR1cyBnZXQoQ29kZU9yaWdpbik7CisgICAgYm9vbCBpc0lubGluZWQoQ29kZU9y
aWdpbikgY29uc3Q7CisgICAgRXhpdGluZ0lubGluZUtpbmQgaW5saW5lS2luZChDb2RlT3JpZ2lu
KSBjb25zdDsKKyAgICAKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrIHsgbnVsbHB0
ciB9OworICAgIENvZGVCbG9jayogb3B0aW1pemVkQ29kZUJsb2NrIHsgbnVsbHB0ciB9OworICAg
IElDU3RhdHVzTWFwIG1hcDsKK307CisKK3R5cGVkZWYgVmVjdG9yPElDU3RhdHVzQ29udGV4dCos
IDg+IElDU3RhdHVzQ29udGV4dFN0YWNrOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAko
cmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTgsNiArMzk4LDMwIEBAIGJvb2wgUHV0
QnlJZFN0YXR1czo6bWFrZXNDYWxscygpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2
b2lkIFB1dEJ5SWRTdGF0dXM6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorewor
ICAgIGZvciAoUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKQorICAgICAgICB2
YXJpYW50Lm1hcmtJZkNoZWFwKHZpc2l0b3IpOworfQorCitib29sIFB1dEJ5SWRTdGF0dXM6OmZp
bmFsaXplKCkKK3sKKyAgICBmb3IgKFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50
cykgeworICAgICAgICBpZiAoIXZhcmlhbnQuZmluYWxpemUoKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUHV0QnlJZFN0YXR1
czo6ZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0KQoreworICAgIGlmIChtX3N0YXRlICE9
IFNpbXBsZSkKKyAgICAgICAgcmV0dXJuOworICAgIGZpbHRlcklDU3RhdHVzVmFyaWFudHMobV92
YXJpYW50cywgc2V0KTsKKyAgICBpZiAobV92YXJpYW50cy5pc0VtcHR5KCkpCisgICAgICAgIG1f
c3RhdGUgPSBOb0luZm9ybWF0aW9uOworfQorCiB2b2lkIFB1dEJ5SWRTdGF0dXM6OmR1bXAoUHJp
bnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAkocmV2aXNp
b24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0
dXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgorI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCiAjaW5j
bHVkZSAiUHV0QnlJZFZhcmlhbnQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC02OSwxMCArNzAs
MTAgQEAgcHVibGljOgogICAgICAgICBtX3ZhcmlhbnRzLmFwcGVuZCh2YXJpYW50KTsKICAgICB9
CiAgICAgCi0gICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCBT
dHViSW5mb01hcCYsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQpOworICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgSUNT
dGF0dXNNYXAmLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlk
KTsKICAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKEpTR2xvYmFsT2JqZWN0Kiwg
Y29uc3QgU3RydWN0dXJlU2V0JiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgYm9vbCBpc0RpcmVj
dCk7CiAgICAgCi0gICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sq
IGJhc2VsaW5lQmxvY2ssIENvZGVCbG9jayogZGZnQmxvY2ssIFN0dWJJbmZvTWFwJiBiYXNlbGlu
ZU1hcCwgU3R1YkluZm9NYXAmIGRmZ01hcCwgQ29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwq
IHVpZCk7CisgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqIGJh
c2VsaW5lQmxvY2ssIENvZGVCbG9jayogZGZnQmxvY2ssIElDU3RhdHVzTWFwJiBiYXNlbGluZU1h
cCwgSUNTdGF0dXNNYXAmIGRmZ01hcCwgQ29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVp
ZCk7CiAKICNpZiBFTkFCTEUoSklUKQogICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVG
b3JTdHViSW5mbyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqIGJhc2VsaW5l
QmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiwgQ29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwq
IHVpZCk7CkBAIC05MSw2ICs5MiwxMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgUHV0QnlJZFZhcmlh
bnQmIGF0KHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV92YXJpYW50c1tpbmRleF07IH0K
ICAgICBjb25zdCBQdXRCeUlkVmFyaWFudCYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpIGNvbnN0
IHsgcmV0dXJuIGF0KGluZGV4KTsgfQogICAgIAorICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZp
c2l0b3ImKTsKKyAgICBib29sIGZpbmFsaXplKCk7CisgICAgdm9pZCBmaWx0ZXIoY29uc3QgU3Ry
dWN0dXJlU2V0Jik7CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAg
ICAgCiBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
SWRWYXJpYW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHV0QnlJZFZhcmlhbnQuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTIwNiw2ICsyMDYsMjYgQEAgYm9vbCBQdXRCeUlkVmFyaWFudDo6YXR0ZW1wdFRvTWVyZ2VUcmFu
cwogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIFB1dEJ5SWRWYXJpYW50OjptYXJrSWZDaGVh
cChTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBtX29sZFN0cnVjdHVyZS5tYXJrSWZDaGVh
cCh2aXNpdG9yKTsKKyAgICBpZiAobV9uZXdTdHJ1Y3R1cmUpCisgICAgICAgIG1fbmV3U3RydWN0
dXJlLT5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKK30KKworYm9vbCBQdXRCeUlkVmFyaWFudDo6Zmlu
YWxpemUoKQoreworICAgIGlmICghbV9vbGRTdHJ1Y3R1cmUuaXNTdGlsbEFsaXZlKHZpc2l0b3Ip
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fbmV3U3RydWN0dXJlICYmICFIZWFw
Ojppc01hcmtlZChtX25ld1N0cnVjdHVyZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIW1fY29uZGl0aW9uU2V0LmFyZVN0aWxsTGl2ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKG1fY2FsbExpbmtTdGF0dXMgJiYgIW1fY2FsbExpbmtTdGF0dXMtPmZpbmFsaXpl
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBQ
dXRCeUlkVmFyaWFudDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIGR1bXBJ
bkNvbnRleHQob3V0LCAwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRCeUlkVmFyaWFudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkVmFyaWFudC5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03
MywxNyArNzMsMTcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9vbGRTdHJ1Y3R1cmU7CiAg
ICAgfQogICAgIAotICAgIGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0KCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBzdHJ1Y3R1cmUoKTsKLSAgICB9Ci0gICAgCiAgICAgY29u
c3QgU3RydWN0dXJlU2V0JiBvbGRTdHJ1Y3R1cmUoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNT
RVJUKGtpbmQoKSA9PSBUcmFuc2l0aW9uIHx8IGtpbmQoKSA9PSBSZXBsYWNlIHx8IGtpbmQoKSA9
PSBTZXR0ZXIpOwogICAgICAgICByZXR1cm4gbV9vbGRTdHJ1Y3R1cmU7CiAgICAgfQogICAgIAor
ICAgIGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0KCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBvbGRTdHJ1Y3R1cmUoKTsKKyAgICB9CisgICAgCiAgICAgU3RydWN0dXJlU2V0
JiBvbGRTdHJ1Y3R1cmUoKQogICAgIHsKICAgICAgICAgQVNTRVJUKGtpbmQoKSA9PSBUcmFuc2l0
aW9uIHx8IGtpbmQoKSA9PSBSZXBsYWNlIHx8IGtpbmQoKSA9PSBTZXR0ZXIpOwpAQCAtMTI5LDYg
KzEyOSw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgYXR0ZW1wdFRvTWVyZ2UoY29uc3QgUHV0QnlJ
ZFZhcmlhbnQmIG90aGVyKTsKICAgICAKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9y
Jik7CisgICAgYm9vbCBmaW5hbGl6ZSgpOworICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0OwogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250
ZXh0KikgY29uc3Q7CiAKQEAgLTEzNyw3ICsxNDAsNyBAQCBwcml2YXRlOgogICAgIAogICAgIEtp
bmQgbV9raW5kOwogICAgIFN0cnVjdHVyZVNldCBtX29sZFN0cnVjdHVyZTsKLSAgICBTdHJ1Y3R1
cmUqIG1fbmV3U3RydWN0dXJlOworICAgIFN0cnVjdHVyZSogbV9uZXdTdHJ1Y3R1cmUgeyBudWxs
cHRyIH07CiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgbV9jb25kaXRpb25TZXQ7CiAg
ICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAgICAgSW5mZXJyZWRUeXBlOjpEZXNjcmlwdG9y
IG1fcmVxdWlyZWRUeXBlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jl
Y29yZGVkU3RhdHVzZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgorI2luY2x1ZGUg
IkdldEJ5SWRTdGF0dXMuaCIKKyNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitzdHJ1Y3QgUmVjb3JkZWRTdGF0dXNlcyB7CisgICAgUmVjb3JkZWRTdGF0dXNl
cygpIHsgfQorICAgIAorICAgIFJlY29yZGVkU3RhdHVzZXMmIG9wZXJhdG9yPShjb25zdCBSZWNv
cmRlZFN0YXR1c2VzJiBvdGhlcikgPSBkZWxldGU7CisgICAgCisgICAgUmVjb3JkZWRTdGF0dXNl
cyYgb3BlcmF0b3I9KFJlY29yZGVkU3RhdHVzZXMmJiBvdGhlcikKKyAgICB7CisgICAgICAgIGNh
bGxzID0gV1RGTW92ZShvdGhlci5jYWxscyk7CisgICAgICAgIGdldHMgPSBXVEZNb3ZlKG90aGVy
LmdldHMpOworICAgICAgICBwdXRzID0gV1RGTW92ZShvdGhlci5wdXRzKTsKKyAgICB9CisgICAg
CisgICAgUmVjb3JkZWRTdGF0dXNlcyhjb25zdCBSZWNvcmRlZFN0YXR1c2VzJiBvdGhlcikgPSBk
ZWxldGU7CisgICAgCisgICAgUmVjb3JkZWRTdGF0dXNlcyhSZWNvcmVkZWRTdGF0dXNlcyYmIG90
aGVyKQorICAgIHsKKyAgICAgICAgKnRoaXMgPSBXVEZNb3ZlKG90aGVyKTsKKyAgICB9CisgICAg
CisgICAgQ2FsbExpbmtTdGF0dXMqIGFkZENhbGxMaW5rU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4m
IGNvZGVPcmlnaW4sIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBzdGF0dXMpCisgICAgeworICAgICAg
ICBhdXRvIHN0YXR1c1B0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2FsbExpbmtTdGF0dXM+KHN0YXR1
cyk7CisgICAgICAgIENhbGxMaW5rU3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7Cisg
ICAgICAgIGNhbGxzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihjb2RlT3JpZ2luLCBXVEZNb3ZlKHN0
YXR1c1B0cikpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgR2V0
QnlJZFN0YXR1cyogYWRkR2V0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2lu
LCBjb25zdCBHZXRCeUlkU3RhdHVzJiBzdGF0dXMpCisgICAgeworICAgICAgICBhdXRvIHN0YXR1
c1B0ciA9IHN0ZDo6bWFrZV91bmlxdWU8R2V0QnlJZFN0YXR1cz4oc3RhdHVzKTsKKyAgICAgICAg
R2V0QnlJZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOworICAgICAgICBnZXRzLmFw
cGVuZChzdGQ6Om1ha2VfcGFpcihjb2RlT3JpZ2luLCBXVEZNb3ZlKHN0YXR1c1B0cikpKTsKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgUHV0QnlJZFN0YXR1cyogYWRk
UHV0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBjb25zdCBQdXRCeUlk
U3RhdHVzJiBzdGF0dXMpCisgICAgeworICAgICAgICBhdXRvIHN0YXR1c1B0ciA9IHN0ZDo6bWFr
ZV91bmlxdWU8UHV0QnlJZFN0YXR1cz4oc3RhdHVzKTsKKyAgICAgICAgUHV0QnlJZFN0YXR1cyog
cmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOworICAgICAgICBwdXRzLmFwcGVuZChzdGQ6Om1ha2Vf
cGFpcihjb2RlT3JpZ2luLCBXVEZNb3ZlKHN0YXR1c1B0cikpKTsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisgICAgCisgICAgdm9pZCBtYXJrSWZDaGVhcChTbG90VmlzaXRvciYgc2xv
dFZpc2l0b3IpCisgICAgeworICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBnZXRzKQorICAgICAg
ICAgICAgcGFpci5zZWNvbmQtPm1hcmtJZkNoZWFwKHNsb3RWaXNpdG9yKTsKKyAgICAgICAgZm9y
IChhdXRvJiBwYWlyIDogcHV0cykKKyAgICAgICAgICAgIHBhaXIuc2Vjb25kLT5tYXJrSWZDaGVh
cChzbG90VmlzaXRvcik7CisgICAgfQorICAgIAorICAgIHZvaWQgZmluYWxpemUoKQorICAgIHsK
KyAgICAgICAgYXV0byBmaW5hbGl6ZSA9IFtdIChhdXRvJiB2ZWN0b3IpIHsKKyAgICAgICAgICAg
IHZlY3Rvci5yZW1vdmVBbGxNYXRjaGluZygKKyAgICAgICAgICAgICAgICBbJl0gKGF1dG8mIHBh
aXIpIC0+IGJvb2wgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gIXBhaXIuc2Vjb25kLT5m
aW5hbGl6ZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgdmVjdG9yLnNocmlu
a1RvRml0KCk7CisgICAgICAgIH07CisgICAgICAgIGZpbmFsaXplKGNhbGxzKTsKKyAgICAgICAg
ZmluYWxpemUoZ2V0cyk7CisgICAgICAgIGZpbmFsaXplKHB1dHMpOworICAgIH0KKyAgICAKKyAg
ICB2b2lkIHNocmlua1RvRml0KCkKKyAgICB7CisgICAgICAgIGNhbGxzLnNocmlua1RvRml0KCk7
CisgICAgICAgIGdldHMuc2hyaW5rVG9GaXQoKTsKKyAgICAgICAgcHV0cy5zaHJpbmtUb0ZpdCgp
OworICAgIH0KKyAgICAKKyAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5p
cXVlX3B0cjxDYWxsTGlua1N0YXR1cz4+PiBjYWxsczsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPENv
ZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxHZXRCeUlkU3RhdHVzPj4+IGdldHM7CisgICAgVmVj
dG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8UHV0QnlJZFN0YXR1cz4+
PiBwdXRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuY3BwCShyZXZpc2lvbiAyMzIyMjcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zMSw2ICszMSwyMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAordm9p
ZCBTdHJ1Y3R1cmVTZXQ6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9yKSBjb25zdAor
eworICAgIGZvciAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgOiAqdGhpcykKKyAgICAgICAgc3RydWN0
dXJlLT5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKK30KKworYm9vbCBTdHJ1Y3R1cmVTZXQ6OmlzU3Rp
bGxBbGl2ZSgpIGNvbnN0Cit7CisgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6ICp0aGlz
KSB7CisgICAgICAgIGlmICghSGVhcDo6aXNNYXJrZWQoc3RydWN0dXJlKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgU3RydWN0
dXJlU2V0OjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250
ZXh0KSBjb25zdAogewogICAgIENvbW1hUHJpbnRlciBjb21tYTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmgJKHJldmlzaW9uIDIzMjIyNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMt
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTU4LDYgKzU4LDkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
cmV0dXJuIG9ubHlFbnRyeSgpOwogICAgIH0KKworICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZp
c2l0b3ImKSBjb25zdDsKKyAgICBib29sIGlzU3RpbGxBbGl2ZSgpIGNvbnN0OwogICAgIAogICAg
IHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0KikgY29uc3Q7CiAg
ICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVGVybWluYXRlZENvZGVPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVGVybWluYXRlZENvZGVPcmlnaW4uaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVGVybWluYXRlZENvZGVP
cmlnaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2Ug
SlNDIHsKKworc3RydWN0IFRlcm1pbmF0ZWRDb2RlT3JpZ2luIHsKKyAgICBUZXJtaW5hdGVkQ29k
ZU9yaWdpbigpIHsgfQorICAgIAorICAgIFRlcm1pbmF0ZWRDb2RlT3JpZ2luKGNvbnN0IENvZGVP
cmlnaW4mIGNvZGVPcmlnaW4sIENvZGVCbG9jayogdGVybWluYWwpCisgICAgICAgIDogY29kZU9y
aWdpbihjb2RlT3JpZ2luKQorICAgICAgICAsIHRlcm1pbmFsKHRlcm1pbmFsKQorICAgIHsKKyAg
ICB9CisgICAgCisgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luOworICAgIENvZGVCbG9jayogdGVy
bWluYWwgeyBudWxscHRyIH07Cit9OworCitzdHJ1Y3QgVGVybWluYXRlZENvZGVPcmlnaW5IYXNo
VHJhbnNsYXRvciB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVGVybWluYXRlZENv
ZGVPcmlnaW4mIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlLmNvZGVPcmlnaW4u
YXBwcm94aW1hdGVIYXNoKHZhbHVlLnRlcm1pbmFsKTsKKyAgICB9CisgICAgCisgICAgc3RhdGlj
IGJvb2wgZXF1YWwoY29uc3QgQ29kZU9yaWdpbiYgYSwgY29uc3QgVGVybWluYXRlZENvZGVPcmlp
Z24mIGIpCisgICAgeworICAgICAgICByZXR1cm4gYi5jb2RlT3JpZ2luLmFwcHJveGltYXRlbHlF
cXVhbChhLCBiLnRlcm1pbmFsKTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNDk5LDYgKzM0OTksMjUgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeQogICAgIGNhc2UgWm9tYmllSGludDoKICAgICBjYXNlIEV4aXRPSzoKICAgICAg
ICAgYnJlYWs7CisgICAgICAgIAorICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAg
ICAgIGlmIChKU1ZhbHVlIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV92YWx1ZSkK
KyAgICAgICAgICAgIG5vZGUtPmNhbGxMaW5rU3RhdHVzKCkuZmlsdGVyKHZhbHVlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgICAgIAorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czogeworICAg
ICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICBpZiAodmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkKKyAgICAgICAgICAgIG5vZGUt
PmdldEJ5SWRTdGF0dXMoKS5maWx0ZXIobV92YWx1ZS5tX3N0cnVjdHVyZS50b1N0cnVjdHVyZVNl
dCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAgICAKKyAgICBjYXNlIEZpbHRlclB1
dEJ5SWRTdGF0dXM6IHsKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5v
ZGUtPmNoaWxkMigpKTsKKyAgICAgICAgaWYgKHZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkp
CisgICAgICAgICAgICBub2RlLT5wdXRCeUlkU3RhdHVzKCkuZmlsdGVyKG1fdmFsdWUubV9zdHJ1
Y3R1cmUudG9TdHJ1Y3R1cmVTZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAgIGNh
c2UgQ2hlY2tUeXBlSW5mb0ZsYWdzOiB7CiAgICAgICAgIGNvbnN0IEFic3RyYWN0VmFsdWUmIGFi
c3RyYWN0VmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAyMzIy
MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTA4Miw5ICsxMDgyLDggQEAgcHJpdmF0ZToKICAgICAgICAgLy8g
Y29kZSBibG9jayBoYWQgZ2F0aGVyZWQuCiAgICAgICAgIExhenlPcGVyYW5kVmFsdWVQcm9maWxl
UGFyc2VyIG1fbGF6eU9wZXJhbmRzOwogICAgICAgICAKLSAgICAgICAgQ2FsbExpbmtJbmZvTWFw
IG1fY2FsbExpbmtJbmZvczsKLSAgICAgICAgU3R1YkluZm9NYXAgbV9zdHViSW5mb3M7Ci0gICAg
ICAgIEJ5VmFsSW5mb01hcCBtX2J5VmFsSW5mb3M7CisgICAgICAgIElDU3RhdHVzTWFwIG1fYmFz
ZWxpbmVNYXA7CisgICAgICAgIElDU3RhdHVzQ29udGV4dCBtX29wdGltaXplZENvbnRleHQ7CiAg
ICAgICAgIAogICAgICAgICAvLyBQb2ludGVycyB0byB0aGUgYXJndW1lbnQgcG9zaXRpb24gdHJh
Y2tlcnMgZm9yIHRoaXMgc2xpY2Ugb2YgY29kZS4KICAgICAgICAgVmVjdG9yPEFyZ3VtZW50UG9z
aXRpb24qPiBtX2FyZ3VtZW50UG9zaXRpb25zOwpAQCAtMTEwMiwxMCArMTEwMSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWU6OktpbmQsCiAgICAgICAgICAgICBCYXNp
Y0Jsb2NrKiBjb250aW51YXRpb25CbG9jayk7CiAgICAgICAgIAotICAgICAgICB+SW5saW5lU3Rh
Y2tFbnRyeSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1fYnl0ZUNvZGVQYXJzZXItPm1faW5s
aW5lU3RhY2tUb3AgPSBtX2NhbGxlcjsKLSAgICAgICAgfQorICAgICAgICB+SW5saW5lU3RhY2tF
bnRyeSgpOwogICAgICAgICAKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlbWFwT3BlcmFuZChW
aXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkgY29uc3QKICAgICAgICAgewpAQCAtMTEyMCw2ICsxMTE2
LDggQEAgcHJpdmF0ZToKICAgICAKICAgICBJbmxpbmVTdGFja0VudHJ5KiBtX2lubGluZVN0YWNr
VG9wOwogICAgIAorICAgIElDU3RhdHVzQ29udGV4dFN0YWNrIG1faWNDb250ZXh0U3RhY2s7Cisg
ICAgCiAgICAgc3RydWN0IERlbGF5ZWRTZXRMb2NhbCB7CiAgICAgICAgIENvZGVPcmlnaW4gbV9v
cmlnaW47CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBtX29wZXJhbmQ7CkBAIC0xMTQ2LDEwICsx
MTQ0LDYgQEAgcHJpdmF0ZToKICAgICAKICAgICBWZWN0b3I8RGVsYXllZFNldExvY2FsLCAyPiBt
X3NldExvY2FsUXVldWU7CiAKLSAgICBDb2RlQmxvY2sqIG1fZGZnQ29kZUJsb2NrOwotICAgIENh
bGxMaW5rU3RhdHVzOjpDb250ZXh0TWFwIG1fY2FsbENvbnRleHRNYXA7Ci0gICAgU3R1YkluZm9N
YXAgbV9kZmdTdHViSW5mb3M7Ci0gICAgCiAgICAgSW5zdHJ1Y3Rpb24qIG1fY3VycmVudEluc3Ry
dWN0aW9uOwogICAgIGJvb2wgbV9oYXNEZWJ1Z2dlckVuYWJsZWQ7CiB9OwpAQCAtMTIxNCw3ICsx
MjA4LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFycwogCiAgICAg
Q2FsbExpbmtTdGF0dXMgY2FsbExpbmtTdGF0dXMgPSBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZv
cigKICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBjdXJyZW50Q29k
ZU9yaWdpbigpLAotICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxMaW5rSW5mb3MsIG1f
Y2FsbENvbnRleHRNYXApOworICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFw
LCBtX2ljQ29udGV4dFN0YWNrKTsKIAogICAgIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kID0g
SW5saW5lQ2FsbEZyYW1lOjpraW5kRm9yKGNhbGxNb2RlKTsKIApAQCAtMTI0Miw2ICsxMjM2LDgg
QEAgQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFycwogICAgIC8vIElmIHdl
IGhhdmUgcHJvZmlsaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgY2FsbCwgYW5kIGl0IGRpZCBu
b3QgYmVoYXZlIHRvbyBwb2x5bW9ycGhpY2FsbHksCiAgICAgLy8gd2UgbWF5IGJlIGFibGUgdG8g
aW5saW5lIGl0LCBvciBpbiB0aGUgY2FzZSBvZiByZWN1cnNpdmUgdGFpbCBjYWxscyB0dXJuIGl0
IGludG8gYSBqdW1wLgogICAgIGlmIChjYWxsTGlua1N0YXR1cy5jYW5PcHRpbWl6ZSgpKSB7Cisg
ICAgICAgIGFkZFRvR3JhcGgoRmlsdGVyQ2FsbExpbmtTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1f
cGxhbnMucmVjb3JkZWRTdGF0dXNlcy5hZGRDYWxsTGlua1N0YXR1cyhjdXJyZW50Q29kZU9yaWdp
bigpLCBjYWxsTGlua1N0YXR1cykpLCBjYWxsVGFyZ2V0KTsKKyAgICAgICAgCiAgICAgICAgIFZp
cnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgw
LCByZWdpc3Rlck9mZnNldCk7CiAgICAgICAgIGF1dG8gb3B0aW1pemF0aW9uUmVzdWx0ID0gaGFu
ZGxlSW5saW5pbmcoY2FsbFRhcmdldCwgcmVzdWx0LCBjYWxsTGlua1N0YXR1cywgcmVnaXN0ZXJP
ZmZzZXQsIHRoaXNBcmd1bWVudCwKICAgICAgICAgICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBtX2N1cnJlbnRJbmRleCArIGluc3RydWN0aW9uU2l6ZSwgb3AsIGtpbmQsIHByZWRpY3Rp
b24pOwpAQCAtMTI3OSwxMiArMTI3NSwxNCBAQCBCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkg
Qnl0ZUNvZGVQYXJzCiAgICAgCiAgICAgQ2FsbExpbmtTdGF0dXMgY2FsbExpbmtTdGF0dXMgPSBD
YWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLCBjdXJyZW50Q29kZU9yaWdpbigpLAotICAgICAgICBtX2lubGluZVN0YWNr
VG9wLT5tX2NhbGxMaW5rSW5mb3MsIG1fY2FsbENvbnRleHRNYXApOworICAgICAgICBtX2lubGlu
ZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrKTsKICAgICByZWZpbmVT
dGF0aWNhbGx5KGNhbGxMaW5rU3RhdHVzLCBjYWxsVGFyZ2V0KTsKICAgICAKICAgICBWRVJCT1NF
X0xPRygiICAgIFZhcmFyZ3MgY2FsbCBsaW5rIHN0YXR1cyBhdCAiLCBjdXJyZW50Q29kZU9yaWdp
bigpLCAiOiAiLCBjYWxsTGlua1N0YXR1cywgIlxuIik7CiAgICAgCiAgICAgaWYgKGNhbGxMaW5r
U3RhdHVzLmNhbk9wdGltaXplKCkpIHsKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJDYWxsTGlu
a1N0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFucy5yZWNvcmRlZFN0YXR1c2VzLmFkZENhbGxM
aW5rU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIGNhbGxMaW5rU3RhdHVzKSksIGNhbGxUYXJn
ZXQpOworICAgICAgICAKICAgICAgICAgaWYgKGhhbmRsZVZhcmFyZ3NJbmxpbmluZyhjYWxsVGFy
Z2V0LCByZXN1bHQsCiAgICAgICAgICAgICBjYWxsTGlua1N0YXR1cywgZmlyc3RGcmVlUmVnLCBW
aXJ0dWFsUmVnaXN0ZXIodGhpc1JlZyksIFZpcnR1YWxSZWdpc3Rlcihhcmd1bWVudHMpLAogICAg
ICAgICAgICAgZmlyc3RWYXJBcmdPZmZzZXQsIG9wLApAQCAtMzMxOCw5ICszMzE2LDEyIEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVEdldHRlcigKICAgICBpZiAoIWNoZWNrKHZh
cmlhbnQuY29uZGl0aW9uU2V0KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYWRkVG9H
cmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHZhcmlh
bnQuc3RydWN0dXJlU2V0KCkpKSwgdGhpc05vZGUpOwotCisgICAgCiAgICAgLy8gV2UgZG8gbm90
IG5lZWQgdG8gZW1pdCBDaGVja0NlbGwgdGhpbmd5IGhlcmUuIFdoZW4gdGhlIGN1c3RvbSBhY2Nl
c3NvciBpcyByZXBsYWNlZCB0byBkaWZmZXJlbnQgb25lLCBTdHJ1Y3R1cmUgdHJhbnNpdGlvbiBv
Y2N1cnMuCiAgICAgYWRkVG9HcmFwaChDaGVja1N1YkNsYXNzLCBPcEluZm8oZG9tQXR0cmlidXRl
LmNsYXNzSW5mbyksIHRoaXNOb2RlKTsKKyAgICAKKyAgICBib29sIHdhc1NlZW5JbkpJVCA9IHRy
dWU7CisgICAgYWRkVG9HcmFwaChGaWx0ZXJHZXRCeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5t
X3BsYW4ucmVjb3JkZWRTdGF0dXNlcy5hZGRHZXRCeUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2lu
KCksIEdldEJ5SWRTdGF0dXMoR2V0QnlJZFN0YXR1czo6Q3VzdG9tLCB3YXNTZWVuSW5KSVQsIHZh
cmlhbnQpKSksIHRoaXNOb2RlKTsKIAogICAgIENhbGxET01HZXR0ZXJEYXRhKiBjYWxsRE9NR2V0
dGVyRGF0YSA9IG1fZ3JhcGgubV9jYWxsRE9NR2V0dGVyRGF0YS5hZGQoKTsKICAgICBjYWxsRE9N
R2V0dGVyRGF0YS0+Y3VzdG9tQWNjZXNzb3JHZXR0ZXIgPSB2YXJpYW50LmN1c3RvbUFjY2Vzc29y
R2V0dGVyKCk7CkBAIC0zMzUyLDYgKzMzNTMsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVNb2R1bGVOYW1lc3BhCiAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUu
aGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENlbGwpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgYWRkVG9HcmFwaChDaGVja0NlbGwsIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShnZXRC
eUlkLm1vZHVsZU5hbWVzcGFjZU9iamVjdCgpKSksIEVkZ2UoYmFzZSwgQ2VsbFVzZSkpOworICAg
IAorICAgIGFkZFRvR3JhcGgoRmlsdGVyR2V0QnlJZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9w
bGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkR2V0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigp
LCBnZXRCeUlkKSksIGJhc2UpOwogCiAgICAgLy8gSWRlYWxseSB3ZSB3b3VsZG4ndCBoYXZlIHRv
IGRvIHRoaXMgUGhhbnRvbS4gQnV0OgogICAgIC8vCkBAIC00MDA3LDE0ICs0MDEwLDI1IEBAIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgCisgICAgLy8gRklYTUU6IElmIHdlIHVzZSB0aGUgR2V0QnlJZFN0YXR1cyBmb3IgYW55
dGhpbmcgdGhlbiB3ZSBzaG91bGQgcmVjb3JkIGl0IGFuZCBpbnNlcnQgYSBub2RlCisgICAgLy8g
YWZ0ZXIgZXZlcnl0aGluZyBlbHNlIChsaWtlIHRoZSBHZXRCeU9mZnNldCBvciB3aGF0ZXZlcikg
dGhhdCB3aWxsIGZpbHRlciB0aGUgcmVjb3JkZWQKKyAgICAvLyBHZXRCeUlkU3RhdHVzLiBUaGF0
IG1lYW5zIHRoYXQgdGhlIGNvbnN0YW50IGZvbGRlciBhbHNvIG5lZWRzIHRvIGRvIHRoZSBzYW1l
IQorICAgIAogICAgIGlmIChnZXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgPiAxKSB7CiAgICAg
ICAgIGlmIChnZXRCeUlkU3RhdHVzLm1ha2VzQ2FsbHMoKSB8fCAhaXNGVEwobV9ncmFwaC5tX3Bs
YW4ubW9kZSkKLSAgICAgICAgICAgIHx8ICFPcHRpb25zOjp1c2VQb2x5bW9ycGhpY0FjY2Vzc0lu
bGluaW5nKCkpIHsKKyAgICAgICAgICAgIHx8ICFPcHRpb25zOjp1c2VQb2x5bW9ycGhpY0FjY2Vz
c0lubGluaW5nKCkKKyAgICAgICAgICAgIHx8IGdldEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSA+
IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZSgpKSB7CisgICAg
ICAgICAgICBpZiAoZmFsc2UgJiYgZ2V0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpID4gT3B0aW9u
czo6bWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplKCkpIHsKKyAgICAgICAgICAg
ICAgICBkYXRhTG9nKCJBdCAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKKyAgICAgICAg
ICAgICAgICBkYXRhTG9nKCJHaXZpbmcgdXAgb246ICIsIGdldEJ5SWRTdGF0dXMsICJcbiIpOwor
ICAgICAgICAgICAgfQogICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihkZXN0aW5hdGlv
bk9wZXJhbmQpLAogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoZ2V0QnlJZCwgT3BJbmZvKGlk
ZW50aWZpZXJOdW1iZXIpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJH
ZXRCeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcy5hZGRH
ZXRCeUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIGdldEJ5SWRTdGF0dXMpKSwgYmFzZSk7
CisgICAgICAgIAogICAgICAgICBWZWN0b3I8TXVsdGlHZXRCeU9mZnNldENhc2UsIDI+IGNhc2Vz
OwogICAgICAgICAKICAgICAgICAgLy8gMSkgRW1pdCBwcm90b3R5cGUgc3RydWN0dXJlIGNoZWNr
cyBmb3IgYWxsIGNoYWlucy4gVGhpcyBjb3VsZCBzb3J0IG9mIG1heWJlIG5vdCBiZQpAQCAtNDA1
NiwxMCArNDA3MCwxMiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAg
ICAgICAgICAgYWRkVG9HcmFwaChNdWx0aUdldEJ5T2Zmc2V0LCBPcEluZm8oZGF0YSksIE9wSW5m
byhwcmVkaWN0aW9uKSwgYmFzZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgYWRk
VG9HcmFwaChGaWx0ZXJHZXRCeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3Jk
ZWRTdGF0dXNlcy5hZGRHZXRCeUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIGdldEJ5SWRT
dGF0dXMpKSwgYmFzZSk7CiAgICAgCiAgICAgQVNTRVJUKGdldEJ5SWRTdGF0dXMubnVtVmFyaWFu
dHMoKSA9PSAxKTsKICAgICBHZXRCeUlkVmFyaWFudCB2YXJpYW50ID0gZ2V0QnlJZFN0YXR1c1sw
XTsKLSAgICAgICAgICAgICAgICAKKyAgICAKICAgICBOb2RlKiBsb2FkZWRWYWx1ZSA9IGxvYWQo
cHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFyaWFudCk7CiAgICAgaWYgKCFs
b2FkZWRWYWx1ZSkgewogICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRlc3RpbmF0aW9uT3Bl
cmFuZCksCkBAIC00MTUwLDcgKzQxNjYsMTAgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
UHV0QnlJZCgKICAgICAKICAgICBpZiAocHV0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpID4gMSkg
ewogICAgICAgICBpZiAoIWlzRlRMKG1fZ3JhcGgubV9wbGFuLm1vZGUpIHx8IHB1dEJ5SWRTdGF0
dXMubWFrZXNDYWxscygpCi0gICAgICAgICAgICB8fCAhT3B0aW9uczo6dXNlUG9seW1vcnBoaWNB
Y2Nlc3NJbmxpbmluZygpKSB7CisgICAgICAgICAgICB8fCAhT3B0aW9uczo6dXNlUG9seW1vcnBo
aWNBY2Nlc3NJbmxpbmluZygpCisgICAgICAgICAgICB8fCBwdXRCeUlkU3RhdHVzLm51bVZhcmlh
bnRzKCkgPiBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemUoKSkg
eworICAgICAgICAgICAgaWYgKGZhbHNlICYmIHB1dEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSA+
IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZSgpKQorICAgICAg
ICAgICAgICAgIGRhdGFMb2coIkdpdmluZyB1cCBvbjogIiwgcHV0QnlJZFN0YXR1cywgIlxuIik7
CiAgICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwg
cHV0QnlJZFN0YXR1cywgaXNEaXJlY3QpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CkBAIC00MTY4LDYgKzQxODcsOCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlk
KAogICAgICAgICAKICAgICAgICAgaWYgKFVOTElLRUxZKG1fZ3JhcGguY29tcGlsYXRpb24oKSkp
CiAgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9uKCktPm5vdGljZUlubGluZWRQdXRCeUlk
KCk7CisgICAgICAgIAorICAgICAgICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE9w
SW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFkZFB1dEJ5SWRTdGF0dXMoY3Vy
cmVudENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0YXR1cykpLCBiYXNlKTsKIAogICAgICAgICBmb3Ig
KGNvbnN0IFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50IDogcHV0QnlJZFN0YXR1cy52YXJpYW50cygp
KSB7CiAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVySW5mZXJyZWRUeXBlKHZhcmlhbnQucmVx
dWlyZWRUeXBlKCkpOwpAQCAtNDE4OSw2ICs0MjEwLDggQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlUHV0QnlJZCgKICAgICAKICAgICBzd2l0Y2ggKHZhcmlhbnQua2luZCgpKSB7CiAgICAg
Y2FzZSBQdXRCeUlkVmFyaWFudDo6UmVwbGFjZTogeworICAgICAgICBhZGRUb0dyYXBoKEZpbHRl
clB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFk
ZFB1dEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0YXR1cykpLCBiYXNl
KTsKKyAgICAgICAgCiAgICAgICAgIHN0b3JlKGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIHZhcmlh
bnQsIHZhbHVlKTsKICAgICAgICAgaWYgKFVOTElLRUxZKG1fZ3JhcGguY29tcGlsYXRpb24oKSkp
CiAgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9uKCktPm5vdGljZUlubGluZWRQdXRCeUlk
KCk7CkBAIC00MTk2LDYgKzQyMTksOCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRC
eUlkKAogICAgIH0KICAgICAKICAgICBjYXNlIFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uOiB7
CisgICAgICAgIGFkZFRvR3JhcGgoRmlsdGVyUHV0QnlJZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgu
bV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkUHV0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdp
bigpLCBwdXRCeUlkU3RhdHVzKSksIGJhc2UpOworICAgICAgICAKICAgICAgICAgYWRkVG9HcmFw
aChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQu
b2xkU3RydWN0dXJlKCkpKSwgYmFzZSk7CiAgICAgICAgIGlmICghY2hlY2sodmFyaWFudC5jb25k
aXRpb25TZXQoKSkpIHsKICAgICAgICAgICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXJO
dW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCk7CkBAIC00MjYzLDYgKzQyODgs
OCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgIH0KICAgICAgICAg
CiAgICAgY2FzZSBQdXRCeUlkVmFyaWFudDo6U2V0dGVyOiB7CisgICAgICAgIGFkZFRvR3JhcGgo
RmlsdGVyUHV0QnlJZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVz
ZXMuYWRkUHV0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBwdXRCeUlkU3RhdHVzKSks
IGJhc2UpOworICAgICAgICAKICAgICAgICAgTm9kZSogbG9hZGVkVmFsdWUgPSBsb2FkKFNwZWND
ZWxsT3RoZXIsIGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIHZhcmlhbnQpOwogICAgICAgICBpZiAo
IWxvYWRlZFZhbHVlKSB7CiAgICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVy
TnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QpOwpAQCAtNTIwMCw3ICs1MjI3
LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAg
ICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlm
aWVyTnVtYmVyXTsKICAgICAgICAgICAgIEdldEJ5SWRTdGF0dXMgZ2V0QnlJZFN0YXR1cyA9IEdl
dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1Rv
cC0+bV9wcm9maWxlZEJsb2NrLCBtX2RmZ0NvZGVCbG9jaywKLSAgICAgICAgICAgICAgICBtX2lu
bGluZVN0YWNrVG9wLT5tX3N0dWJJbmZvcywgbV9kZmdTdHViSW5mb3MsCisgICAgICAgICAgICAg
ICAgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywKICAg
ICAgICAgICAgICAgICBjdXJyZW50Q29kZU9yaWdpbigpLCB1aWQpOwogCiAgICAgICAgICAgICBB
Y2Nlc3NUeXBlIHR5cGUgPSBBY2Nlc3NUeXBlOjpHZXQ7CkBAIC02NjAzLDEyICs2NjMwLDIwIEBA
IEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmUKICAgICAgICAgLy8gV2Ug
ZG8gdGhpcyB3aGlsZSBob2xkaW5nIHRoZSBsb2NrIGJlY2F1c2Ugd2Ugd2FudCB0byBlbmNvdXJh
Z2UgU3RydWN0dXJlU3R1YkluZm8ncwogICAgICAgICAvLyB0byBiZSBwb3RlbnRpYWxseSBhZGRl
ZCB0byBvcGVyYXRpb25zIGFuZCBiZWNhdXNlIHRoZSBwcm9maWxlZCBibG9jayBjb3VsZCBiZSBp
biB0aGUKICAgICAgICAgLy8gbWlkZGxlIG9mIExMSW50LT5KSVQgdGllci11cCBpbiB3aGljaCBj
YXNlIHdlIHdvdWxkIGJlIGFkZGluZyB0aGUgaW5mbydzIHJpZ2h0IG5vdy4KLSAgICAgICAgaWYg
KG1fcHJvZmlsZWRCbG9jay0+aGFzQmFzZWxpbmVKSVRQcm9maWxpbmcoKSkgewotICAgICAgICAg
ICAgbV9wcm9maWxlZEJsb2NrLT5nZXRTdHViSW5mb01hcChsb2NrZXIsIG1fc3R1YkluZm9zKTsK
LSAgICAgICAgICAgIG1fcHJvZmlsZWRCbG9jay0+Z2V0Q2FsbExpbmtJbmZvTWFwKGxvY2tlciwg
bV9jYWxsTGlua0luZm9zKTsKLSAgICAgICAgICAgIG1fcHJvZmlsZWRCbG9jay0+Z2V0QnlWYWxJ
bmZvTWFwKGxvY2tlciwgbV9ieVZhbEluZm9zKTsKKyAgICAgICAgaWYgKG1fcHJvZmlsZWRCbG9j
ay0+aGFzQmFzZWxpbmVKSVRQcm9maWxpbmcoKSkKKyAgICAgICAgICAgIG1fcHJvZmlsZWRCbG9j
ay0+Z2V0SUNTdGF0dXNNYXAobG9ja2VyLCBtX2Jhc2VsaW5lTWFwKTsKKyAgICB9CisgICAgCisg
ICAgbV9vcHRpbWl6ZWRDb250ZXh0LmJhc2VsaW5lQ29kZUJsb2NrID0gbV9wcm9maWxlZEJsb2Nr
OworICAgIGlmIChPcHRpb25zOjp1c2VQb2x5dmFyaWFudERldmlydHVhbGl6YXRpb24oKSkgewor
ICAgICAgICBDb2RlQmxvY2sqIG9wdGltaXplZEJsb2NrID0gbV9wcm9maWxlZEJsb2NrLT5yZXBs
YWNlbWVudCgpOworICAgICAgICBtX29wdGltaXplZENvbnRleHQub3B0aW1pemVkQ29kZUJsb2Nr
ID0gb3B0aW1pemVkQmxvY2s7CisgICAgICAgIGlmIChvcHRpbWl6ZWRCbG9jaykgeworICAgICAg
ICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihvcHRpbWl6ZWRCbG9jay0+bV9sb2NrKTsK
KyAgICAgICAgICAgIG9wdGltaXplZEJsb2NrLT5nZXRJQ1N0YXR1c01hcChsb2NrZXIsIG1fb3B0
aW1pemVkQ29udGV4dC5tYXApOwogICAgICAgICB9CiAgICAgfQorICAgIG1faWNDb250ZXh0U3Rh
Y2suYXBwZW5kKCZtX29wdGltaXplZENvbnRleHQpOwogICAgIAogICAgIGludCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpc1dpdGhGaXh1cCA9IHN0ZDo6bWF4PGludD4oYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKIApAQCAtNjY3Myw2ICs2
NzA4LDEzIEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmUKICAgICBi
eXRlQ29kZVBhcnNlci0+bV9pbmxpbmVTdGFja1RvcCA9IHRoaXM7CiB9CiAKK0J5dGVDb2RlUGFy
c2VyOjpJbmxpbmVTdGFja0VudHJ5Ojp+SW5saW5lU3RhY2tFbnRyeSgpCit7CisgICAgbV9ieXRl
Q29kZVBhcnNlci0+bV9pbmxpbmVTdGFja1RvcCA9IG1fY2FsbGVyOworICAgIFJFTEVBU0VfQVNT
RVJUKG1fYnl0ZUNvZGVQYXJzZXItPm1faWNDb250ZXh0U3RhY2subGFzdCgpID09ICZtX29wdGlt
aXplZENvbnRleHQpOworICAgIG1fYnl0ZUNvZGVQYXJzZXItPm1faWNDb250ZXh0U3RhY2sucmVt
b3ZlTGFzdCgpOworfQorCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiB7
CiAgICAgY2xlYXJDYWNoZXMoKTsKQEAgLTY3NjksMTUgKzY4MTEsNiBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZSgpCiAgICAgCiAgICAgVkVSQk9TRV9MT0coIlBhcnNpbmcgIiwgKm1fY29k
ZUJsb2NrLCAiXG4iKTsKICAgICAKLSAgICBtX2RmZ0NvZGVCbG9jayA9IG1fZ3JhcGgubV9wbGFu
LnByb2ZpbGVkREZHQ29kZUJsb2NrOwotICAgIGlmIChpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2Rl
KSAmJiBtX2RmZ0NvZGVCbG9jawotICAgICAgICAmJiBPcHRpb25zOjp1c2VQb2x5dmFyaWFudERl
dmlydHVhbGl6YXRpb24oKSkgewotICAgICAgICBpZiAoT3B0aW9uczo6dXNlUG9seXZhcmlhbnRD
YWxsSW5saW5pbmcoKSkKLSAgICAgICAgICAgIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlREZHU3Rh
dHVzZXMobV9kZmdDb2RlQmxvY2ssIG1fY2FsbENvbnRleHRNYXApOwotICAgICAgICBpZiAoT3B0
aW9uczo6dXNlUG9seXZhcmlhbnRCeUlkSW5saW5pbmcoKSkKLSAgICAgICAgICAgIG1fZGZnQ29k
ZUJsb2NrLT5nZXRTdHViSW5mb01hcChtX2RmZ1N0dWJJbmZvcyk7Ci0gICAgfQotICAgIAogICAg
IElubGluZVN0YWNrRW50cnkgaW5saW5lU3RhY2tFbnRyeSgKICAgICAgICAgdGhpcywgbV9jb2Rl
QmxvY2ssIG1fcHJvZmlsZWRCbG9jaywgMCwgVmlydHVhbFJlZ2lzdGVyKCksIFZpcnR1YWxSZWdp
c3RlcigpLAogICAgICAgICBtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBJbmxpbmVDYWxs
RnJhbWU6OkNhbGwsIG51bGxwdHIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NDYsNiArNDQ2LDkgQEAg
dm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgUHJvZmls
ZUNvbnRyb2xGbG93OgogICAgIGNhc2UgUHV0SGludDoKICAgICBjYXNlIEluaXRpYWxpemVFbnRy
eXBvaW50QXJndW1lbnRzOgorICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgY2Fz
ZSBGaWx0ZXJHZXRCeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAg
ICAgICAgd3JpdGUoU2lkZVN0YXRlKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUu
Y3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJzRXhpdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNiArNzUsOSBAQCBib29s
IGNsb2JiZXJzRXhpdFN0YXRlKEdyYXBoJiBncmFwaCwgTm9kCiAgICAgY2FzZSBGZW5jZWRTdG9y
ZUJhcnJpZXI6CiAgICAgY2FzZSBBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKICAgICBjYXNlIFJl
YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CisgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoK
KyAgICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3Rh
dHVzOgogICAgICAgICAvLyBUaGVzZSBkbyBjbG9iYmVyIG1lbW9yeSwgYnV0IG5vdGhpbmcgdGhh
dCBpcyBvYnNlcnZhYmxlLiBJdCBtYXkgYmUgbmljZSB0byBzZXBhcmF0ZSB0aGUKICAgICAgICAg
Ly8gaGVhcHMgaW50byB0aG9zZSB0aGF0IGFyZSBvYnNlcnZhYmxlIGFuZCB0aG9zZSB0aGF0IGFy
ZW4ndCwgYnV0IHdlIGRvbid0IGRvIHRoYXQgcmlnaHQgbm93LgogICAgICAgICAvLyBGSVhNRTog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODQ0MApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmgJKHJldmlzaW9uIDIzMjIyNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjUsNiArMTI1LDcgQEAgcHVibGljOgogICAgIEJhZzxDb2RlQmxvY2tKZXR0aXNv
bmluZ1dhdGNocG9pbnQ+IHdhdGNocG9pbnRzOwogICAgIEJhZzxBZGFwdGl2ZVN0cnVjdHVyZVdh
dGNocG9pbnQ+IGFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludHM7CiAgICAgQmFnPEFkYXB0aXZl
SW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludD4gYWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5
VmFsdWVXYXRjaHBvaW50czsKKyAgICBSZWNvcmRlZFN0YXR1c2VzIHJlY29yZGVkU3RhdHVzZXM7
CiAgICAgVmVjdG9yPEp1bXBSZXBsYWNlbWVudD4ganVtcFJlcGxhY2VtZW50czsKICAgICAKICAg
ICBTY3JhdGNoQnVmZmVyKiBjYXRjaE9TUkVudHJ5QnVmZmVyOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTIsNiAr
MzEyLDkgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2Ug
QXRvbWljc1hvcjoKICAgICBjYXNlIEF0b21pY3NJc0xvY2tGcmVlOgogICAgIGNhc2UgTWF0Y2hT
dHJ1Y3R1cmU6CisgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICBjYXNlIEZpbHRl
ckdldEJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBjYXNlIFB1c2hXaXRoU2NvcGU6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIxMzgsNiArMjEzOCw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgR2V0R2xvYmFs
VGhpczoKICAgICAgICAgY2FzZSBFeHRyYWN0VmFsdWVGcm9tV2Vha01hcEdldDoKICAgICAgICAg
Y2FzZSBDUFVJbnRyaW5zaWM6CisgICAgICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6Cisg
ICAgICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJQdXRC
eUlkU3RhdHVzOgogICAgICAgICAgICAgYnJlYWs7CiAjZWxzZQogICAgICAgICBkZWZhdWx0OgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDIzMjIy
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNTYsNiArMzU2LDEyIEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCwgY29uc3QKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiaWdub3JlTGFzdEluZGV4SXNXcml0
YWJsZSA9ICIsIG5vZGUtPmlnbm9yZUxhc3RJbmRleElzV3JpdGFibGUoKSk7CiAgICAgaWYgKG5v
ZGUtPmlzQ29uc3RhbnQoKSkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBwb2ludGVyRHVtcElu
Q29udGV4dChub2RlLT5jb25zdGFudCgpLCBjb250ZXh0KSk7CisgICAgaWYgKG5vZGUtPmhhc0Nh
bGxMaW5rU3RhdHVzKCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgKm5vZGUtPmNhbGxMaW5r
U3RhdHVzKCkpOworICAgIGlmIChub2RlLT5oYXNHZXRCeUlkU3RhdHVzKCkpCisgICAgICAgIG91
dC5wcmludChjb21tYSwgKm5vZGUtPmdldEJ5SWRTdGF0dXMoKSk7CisgICAgaWYgKG5vZGUtPmhh
c1B1dEJ5SWRTdGF0dXMoKSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAqbm9kZS0+cHV0QnlJ
ZFN0YXR1cygpKTsKICAgICBpZiAobm9kZS0+aXNKdW1wKCkpCiAgICAgICAgIG91dC5wcmludChj
b21tYSwgIlQ6IiwgKm5vZGUtPnRhcmdldEJsb2NrKCkpOwogICAgIGlmIChub2RlLT5pc0JyYW5j
aCgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5j
cHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODgsNiArMTg4LDggQEAgdm9pZCBKSVRD
b21waWxlcjo6Y29tcGlsZUV4Y2VwdGlvbkhhbmRsZQogCiB2b2lkIEpJVENvbXBpbGVyOjpsaW5r
KExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiB7CisgICAgbV9qaXRDb2RlLT5jb21tb24ucmVjb3Jk
ZWRTdGF0dXNlcyA9IFdURk1vdmUobV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcyk7Cisg
ICAgCiAgICAgLy8gTGluayB0aGUgY29kZSwgcG9wdWxhdGUgZGF0YSBpbiBDb2RlQmxvY2sgZGF0
YSBzdHJ1Y3R1cmVzLgogICAgIG1faml0Q29kZS0+Y29tbW9uLmZyYW1lUmVnaXN0ZXJDb3VudCA9
IG1fZ3JhcGguZnJhbWVSZWdpc3RlckNvdW50KCk7CiAgICAgbV9qaXRDb2RlLT5jb21tb24ucmVx
dWlyZWRSZWdpc3RlckNvdW50Rm9yRXhpdCA9IG1fZ3JhcGgucmVxdWlyZWRSZWdpc3RlckNvdW50
Rm9yRXhpdCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3Bw
CShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4
aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDkgQEAgRXhpdE1vZGUgbWF5RXhp
dEltcGwoR3JhcGgmIGdyYXBoLCBOb2RlKgogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKICAgICBj
YXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKICAgICBjYXNlIE51a2VTdHJ1Y3R1cmVBbmRT
ZXRCdXR0ZXJmbHk6CisgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICBjYXNlIEZp
bHRlckdldEJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAg
ICBicmVhazsKIAogICAgIGNhc2UgU3RyQ2F0OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzY5LDYgKzI3NjksMzkgQEAgcHVibGljOgog
ICAgICAgICBBU1NFUlQob3AoKSA9PSBUaHJvd1N0YXRpY0Vycm9yKTsKICAgICAgICAgcmV0dXJu
IG1fb3BJbmZvLmFzPHVpbnQzMl90PigpOwogICAgIH0KKyAgICAKKyAgICBib29sIGhhc0NhbGxM
aW5rU3RhdHVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBvcCgpID09IEZpbHRlckNhbGxMaW5r
U3RhdHVzOworICAgIH0KKyAgICAKKyAgICBDYWxsTGlua1N0YXR1cyogY2FsbExpbmtTdGF0dXMo
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc0NhbGxMaW5rU3RhdHVzKCkpOworICAgICAgICBy
ZXR1cm4gbV9vcEluZm8uYXM8Q2FsbExpbmtTdGF0dXMqPigpOworICAgIH0KKyAgICAKKyAgICBi
b29sIGhhc0dldEJ5SWRTdGF0dXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gRmls
dGVyR2V0QnlJZFN0YXR1czsKKyAgICB9CisgICAgCisgICAgR2V0QnlJZFN0YXR1cyogZ2V0QnlJ
ZFN0YXR1cygpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzR2V0QnlJZFN0YXR1cygpKTsKKyAg
ICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPEdldEJ5SWRTdGF0dXMqPigpOworICAgIH0KKyAgICAK
KyAgICBib29sIGhhc1B1dEJ5SWRTdGF0dXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkg
PT0gRmlsdGVyUHV0QnlJZFN0YXR1czsKKyAgICB9CisgICAgCisgICAgUHV0QnlJZFN0YXR1cyog
cHV0QnlJZFN0YXR1cygpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzUHV0QnlJZFN0YXR1cygp
KTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPFB1dEJ5SWRTdGF0dXMqPigpOworICAgIH0K
IAogICAgIHZvaWQgZHVtcENoaWxkcmVuKFByaW50U3RyZWFtJiBvdXQpCiAgICAgewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMjMyMjI3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOTQsMTEgKzM5NCw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAg
ICBtYWNybyhHZXRBcmd1bWVudCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAogICAgIG1hY3JvKE5l
d0Z1bmN0aW9uLCBOb2RlUmVzdWx0SlMpIFwKLSAgICBcCiAgICAgbWFjcm8oTmV3R2VuZXJhdG9y
RnVuY3Rpb24sIE5vZGVSZXN1bHRKUykgXAotICAgIFwKICAgICBtYWNybyhOZXdBc3luY0dlbmVy
YXRvckZ1bmN0aW9uLCBOb2RlUmVzdWx0SlMpIFwKLSAgICBcCiAgICAgbWFjcm8oTmV3QXN5bmNG
dW5jdGlvbiwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAogICAgIC8qIEJsb2NrIHRlcm1pbmFscy4g
Ki9cCkBAIC00NzUsNiArNDcyLDExIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
ICAgICBcCiAgICAgLyogVXNlZCBmb3IgJHZtIHBlcmZvcm1hbmNlIGRlYnVnZ2luZyAqLyBcCiAg
ICAgbWFjcm8oQ1BVSW50cmluc2ljLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBc
CisgICAgXAorICAgIC8qIFVzZWQgdG8gcHJvdmlkZSBmZWVkYmFjayB0byB0aGUgSUMgcHJvZmls
ZXIuICovIFwKKyAgICBtYWNybyhGaWx0ZXJDYWxsTGlua1N0YXR1cywgTm9kZU11c3RHZW5lcmF0
ZSkgXAorICAgIG1hY3JvKEZpbHRlckdldEJ5SWRTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwK
KyAgICBtYWNybyhGaWx0ZXJQdXRCeUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAKIAog
Ly8gVGhpcyBlbnVtIGdlbmVyYXRlcyBhIG1vbm90b25pY2FsbHkgaW5jcmVhc2luZyBpZCBmb3Ig
YWxsIE5vZGUgdHlwZXMsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXRCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXRCYXNlLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsMTEgKzQyLDE3
IEBAIHZvaWQgT1NSRXhpdEJhc2U6OmNvbnNpZGVyQWRkaW5nQXNGcmVxdWUKICAgICAgICAgYmFz
ZWxpbmVDb2RlQmxvY2tGb3JPcmlnaW5BbmRCYXNlbGluZUNvZGVCbG9jaygKICAgICAgICAgICAg
IG1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlLCBwcm9maWxlZENvZGVCbG9jayk7CiAgICAgaWYg
KHNvdXJjZVByb2ZpbGVkQ29kZUJsb2NrKSB7CisgICAgICAgIEV4aXRpbmdJbmxpbmVLaW5kIGlu
bGluZUtpbmQ7CisgICAgICAgIGlmIChtX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZS5pbmxpbmVD
YWxsRnJhbWUpCisgICAgICAgICAgICBpbmxpbmVLaW5kID0gRXhpdEZyb21JbmxpbmVkOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBpbmxpbmVLaW5kID0gRXhpdEZyb21Ob3RJbmxpbmVkOwor
ICAgICAgICAKICAgICAgICAgRnJlcXVlbnRFeGl0U2l0ZSBzaXRlOwogICAgICAgICBpZiAobV93
YXNIb2lzdGVkKQotICAgICAgICAgICAgc2l0ZSA9IEZyZXF1ZW50RXhpdFNpdGUoSG9pc3RpbmdG
YWlsZWQsIGppdFR5cGUpOworICAgICAgICAgICAgc2l0ZSA9IEZyZXF1ZW50RXhpdFNpdGUoSG9p
c3RpbmdGYWlsZWQsIGppdFR5cGUsIGlubGluZUtpbmQpOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBzaXRlID0gRnJlcXVlbnRFeGl0U2l0ZShtX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZS5i
eXRlY29kZUluZGV4LCBtX2tpbmQsIGppdFR5cGUpOworICAgICAgICAgICAgc2l0ZSA9IEZyZXF1
ZW50RXhpdFNpdGUobV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGUuYnl0ZWNvZGVJbmRleCwgbV9r
aW5kLCBqaXRUeXBlLCBpbmxpbmVLaW5kKTsKICAgICAgICAgRXhpdFByb2ZpbGU6OmFkZChzb3Vy
Y2VQcm9maWxlZENvZGVCbG9jaywgc2l0ZSk7CiAgICAgfQogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1BsYW4uY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzMsNiArNjMzLDgg
QEAgdm9pZCBQbGFuOjpjaGVja0xpdmVuZXNzQW5kVmlzaXRDaGlsZHJlbgogICAgIGNsZWFuTXVz
dEhhbmRsZVZhbHVlc0lmTmVjZXNzYXJ5KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbXVzdEhh
bmRsZVZhbHVlcy5zaXplKCk7IGktLTspCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVy
ZWQobXVzdEhhbmRsZVZhbHVlc1tpXSk7CisgICAgCisgICAgcmVjb3JkZWRTdGF0dXNlcy5tYXJr
SWZDaGVhcCh2aXNpdG9yKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQoY29kZUJs
b2NrKTsKICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKGNvZGVCbG9jay0+YWx0ZXJuYXRp
dmUoKSk7CkBAIC02NDksNiArNjUxLDExIEBAIHZvaWQgUGxhbjo6Y2hlY2tMaXZlbmVzc0FuZFZp
c2l0Q2hpbGRyZW4KICAgICB0cmFuc2l0aW9ucy52aXNpdENoaWxkcmVuKHZpc2l0b3IpOwogfQog
Cit2b2lkIFBsYW46OmZpbmFsaXplSW5HQygpCit7CisgICAgcmVjb3JkZWRTdGF0dXNlcy5maW5h
bGl6ZSgpOworfQorCiBib29sIFBsYW46OmlzS25vd25Ub0JlTGl2ZUR1cmluZ0dDKCkKIHsKICAg
ICBpZiAoc3RhZ2UgPT0gQ2FuY2VsbGVkKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQbGFuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
bGFuLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UGxhbi5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3Miw3IEBAIHN0cnVjdCBQbGFuIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGUKICAgICB2b2lkIGl0ZXJhdGVDb2RlQmxvY2tzRm9yR0Mo
Y29uc3QgRnVuYyYpOwogICAgIHZvaWQgY2hlY2tMaXZlbmVzc0FuZFZpc2l0Q2hpbGRyZW4oU2xv
dFZpc2l0b3ImKTsKICAgICBib29sIGlzS25vd25Ub0JlTGl2ZUR1cmluZ0dDKCk7CisgICAgdm9p
ZCBmaW5hbGl6ZUluR0MoKTsKICAgICB2b2lkIGNhbmNlbCgpOwogCiAgICAgYm9vbCBjYW5UaWVy
VXBBbmRPU1JFbnRlcigpIGNvbnN0IHsgcmV0dXJuICF0aWVyVXBBbmRPU1JFbnRlckJ5dGVjb2Rl
cy5pc0VtcHR5KCk7IH0KQEAgLTEwNCw2ICsxMDUsNyBAQCBzdHJ1Y3QgUGxhbiA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlCiAgICAgRGVzaXJlZElkZW50aWZpZXJzIGlkZW50aWZpZXJzOwog
ICAgIERlc2lyZWRXZWFrUmVmZXJlbmNlcyB3ZWFrUmVmZXJlbmNlczsKICAgICBEZXNpcmVkVHJh
bnNpdGlvbnMgdHJhbnNpdGlvbnM7CisgICAgUmVjb3JlZFN0YXR1c2VzIHJlY29yZGVkU3RhdHVz
ZXM7CiAgICAgCiAgICAgYm9vbCB3aWxsVHJ5VG9UaWVyVXAgeyBmYWxzZSB9OwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyMDYsNiArMTIwNiw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSW5pdGlhbGl6
ZUVudHJ5cG9pbnRBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgV2Vha1NldEFkZDoKICAgICAgICAg
Y2FzZSBXZWFrTWFwU2V0OgorICAgICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAg
ICAgICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJ
ZFN0YXR1czoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIC8vIFRo
aXMgZ2V0cyBpZ25vcmVkIGJlY2F1c2UgaXQgb25seSBwcmV0ZW5kcyB0byBwcm9kdWNlIGEgdmFs
dWUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3OCw2ICs0NzgsMTMgQEAgYm9vbCBzYWZl
VG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgICAgICAvLyBhbHJlYWR5IGZvcmNl
IHRoZXNlIHRoaW5ncyB0byBiZSBvcmRlcmVkIHByZWNpc2VseS4gSSdtIGp1c3Qgbm90IGNvbmZp
ZGVudCBlbm91Z2ggaW4gbXkKICAgICAgICAgLy8gZWZmZWN0IGJhc2VkIG1lbW9yeSBtb2RlbCB0
byByZWx5IHNvbGVseSBvbiB0aGF0IHJpZ2h0IG5vdy4KICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAKKyAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmlsdGVy
R2V0QnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CisgICAgICAgIC8v
IFdlIGRvbid0IHdhbnQgdGhlc2UgdG8gYmUgbW92ZWQgYW55d2hlcmUgb3RoZXIgdGhhbiB3aGVy
ZSB3ZSBwdXQgdGhlbSwgc2luY2Ugd2Ugd2FudCB0aGVtCisgICAgICAgIC8vIHRvIGNhcHR1cmUg
InByb2ZpbGluZyIgYXQgdGhlIHBvaW50IGluIGNvbnRyb2wgZmxvdyBoZXJlIHRoZSB1c2VyIHB1
dCB0aGVtLgorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjYXNlIEdldEJ5VmFsOgogICAg
IGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24g
MjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAzMyw2ICs0MDMzLDExIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIENoZWNrU3RydWN0dXJlT3JF
bXB0eToKICAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG5vZGUsICJDaGVja1N0cnVj
dHVyZU9yRW1wdHkgb25seSB1c2VkIGluIDY0LWJpdCBERkciKTsKICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIAorICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJH
ZXRCeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKKyAgICAgICAgYnJl
YWs7CiAKICAgICBjYXNlIExhc3ROb2RlVHlwZToKICAgICBjYXNlIFBoaToKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2
aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYyNiw2ICs0NjI2LDExIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CisgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICBjYXNlIEZpbHRlckdldEJ5SWRT
dGF0dXM6CisgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgorICAgICAgICBicmVhazsKKwog
I2Vsc2UgLy8gRU5BQkxFKEZUTF9KSVQpCiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAg
ICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1dvcmtsaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1dvcmtsaXN0LmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5Myw4ICszOTMs
MTAgQEAgdm9pZCBXb3JrbGlzdDo6cmVtb3ZlRGVhZFBsYW5zKFZNJiB2bSkKICAgICAgICAgICAg
IFBsYW4qIHBsYW4gPSBpdGVyLT52YWx1ZS5nZXQoKTsKICAgICAgICAgICAgIGlmIChwbGFuLT52
bSAhPSAmdm0pCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAocGxh
bi0+aXNLbm93blRvQmVMaXZlRHVyaW5nR0MoKSkKKyAgICAgICAgICAgIGlmIChwbGFuLT5pc0tu
b3duVG9CZUxpdmVEdXJpbmdHQygpKSB7CisgICAgICAgICAgICAgICAgcGxhbi0+ZmluYWxpemVJ
bkdDKCk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChwbGFuLT5zdGFnZSAhPSBQbGFuOjpDYW5jZWxsZWQpOyAvLyBT
aG91bGQgbm90IGJlIGNhbmNlbGxlZCwgeWV0LgogICAgICAgICAgICAgQVNTRVJUKCFkZWFkUGxh
bktleXMuY29udGFpbnMocGxhbi0+a2V5KCkpKTsKICAgICAgICAgICAgIGRlYWRQbGFuS2V5cy5h
ZGQocGxhbi0+a2V5KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Niw2ICs1Niw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRM
IHsKICAgICBtYWNybyhEaXJlY3RBcmd1bWVudHNfbWluQ2FwYWNpdHksIERpcmVjdEFyZ3VtZW50
czo6b2Zmc2V0T2ZNaW5DYXBhY2l0eSgpKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX21h
cHBlZEFyZ3VtZW50cywgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZk1hcHBlZEFyZ3VtZW50cygp
KSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX21vZGlmaWVkQXJndW1lbnRzRGVzY3JpcHRv
ciwgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZk1vZGlmaWVkQXJndW1lbnRzRGVzY3JpcHRvcigp
KSBcCisgICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9hbGxvY2F0b3IsIEZ1bmN0aW9uUmFyZURh
dGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlOjpvZmZzZXRPZkFsbG9jYXRvcigpKSBcCisgICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0
YV9zdHJ1Y3R1cmUsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblBy
b2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSBc
CiAgICAgbWFjcm8oR2V0dGVyU2V0dGVyX2dldHRlciwgR2V0dGVyU2V0dGVyOjpvZmZzZXRPZkdl
dHRlcigpKSBcCiAgICAgbWFjcm8oR2V0dGVyU2V0dGVyX3NldHRlciwgR2V0dGVyU2V0dGVyOjpv
ZmZzZXRPZlNldHRlcigpKSBcCiAgICAgbWFjcm8oSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoLCBK
U0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkgXApAQCAtMTEyLDEwICsxMTQsMTAg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3JvKFN0cmluZ0ltcGxf
bGVuZ3RoLCBTdHJpbmdJbXBsOjpsZW5ndGhNZW1vcnlPZmZzZXQoKSkgXAogICAgIG1hY3JvKFN0
cnVjdHVyZV9jbGFzc0luZm8sIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpIFwKICAgICBt
YWNybyhTdHJ1Y3R1cmVfZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNl
dCgpKSBcCisgICAgbWFjcm8oU3RydWN0dXJlX2luZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3Rvcnks
IFN0cnVjdHVyZTo6aW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeU9mZnNldCgpKSBcCisgICAg
bWFjcm8oU3RydWN0dXJlX2lubGluZUNhcGFjaXR5LCBTdHJ1Y3R1cmU6OmlubGluZUNhcGFjaXR5
T2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfcHJvdG90eXBlLCBTdHJ1Y3R1cmU6OnBy
b3RvdHlwZU9mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlX3N0cnVjdHVyZUlELCBTdHJ1
Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KCkpIFwKLSAgICBtYWNybyhTdHJ1Y3R1cmVfaW5saW5l
Q2FwYWNpdHksIFN0cnVjdHVyZTo6aW5saW5lQ2FwYWNpdHlPZmZzZXQoKSkgXAotICAgIG1hY3Jv
KFN0cnVjdHVyZV9pbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5LCBTdHJ1Y3R1cmU6OmluZGV4
aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnlPZmZzZXQoKSkgXAogICAgIG1hY3JvKEhhc2hNYXBJbXBs
X2NhcGFjaXR5LCBIYXNoTWFwSW1wbDxIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5
Pj46Om9mZnNldE9mQ2FwYWNpdHkoKSkgXAogICAgIG1hY3JvKEhhc2hNYXBJbXBsX2J1ZmZlciwg
IEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+Pjo6b2Zmc2V0
T2ZCdWZmZXIoKSkgXAogICAgIG1hY3JvKEhhc2hNYXBJbXBsX2hlYWQsICBIYXNoTWFwSW1wbDxI
YXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46Om9mZnNldE9mSGVhZCgpKSBcCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCShy
ZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1MSw2ICszNTEsMTAgQEAgaW5saW5lIENhcGFi
aWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CiAg
ICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgIGNhc2UgTWF0Y2hTdHJ1Y3R1cmU6CisgICAg
Y2FzZSBDcmVhdGVUaGlzOgorICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgY2Fz
ZSBGaWx0ZXJHZXRCeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAg
ICAgICAgLy8gVGhlc2UgYXJlIE9LLgogICAgICAgICBicmVhazsKIApAQCAtMzYyLDcgKzM2Niw2
IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICAgICAgYnJl
YWs7CiAKICAgICBjYXNlIElkZW50aXR5V2l0aFByb2ZpbGU6Ci0gICAgY2FzZSBDcmVhdGVUaGlz
OgogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9T
UkVudGVyOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIzMjIyNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODQ3LDYgKzg0Nyw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgTmV3QXJy
YXlXaXRoU3ByZWFkOgogICAgICAgICAgICAgY29tcGlsZU5ld0FycmF5V2l0aFNwcmVhZCgpOwog
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3JlYXRlVGhpczoKKyAgICAgICAgICAg
IGNvbXBpbGVDcmVhdGVUaGlzKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBT
cHJlYWQ6CiAgICAgICAgICAgICBjb21waWxlU3ByZWFkKCk7CiAgICAgICAgICAgICBicmVhazsK
QEAgLTEzMTIsNiArMTMxNSw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQm90dG9tVmFsdWU6
CiAgICAgICAgIGNhc2UgS2lsbFN0YWNrOgogICAgICAgICBjYXNlIEluaXRpYWxpemVFbnRyeXBv
aW50QXJndW1lbnRzOgorICAgICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAgICAg
ICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0
YXR1czoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
REZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIlVucmVjb2duaXplZCBub2RlIGluIEZUTCBiYWNr
ZW5kIik7CkBAIC01NjYyLDYgKzU2NjgsNDAgQEAgcHJpdmF0ZToKIAogICAgICAgICBzZXRKU1Zh
bHVlKHJlc3VsdCk7CiAgICAgfQorICAgIAorICAgIHZvaWQgY29tcGlsZUNyZWF0ZVRoaXMoKQor
ICAgIHsKKyAgICAgICAgTFZhbHVlIGNhbGxlZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7
CisKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNGdW5jdGlvbkJsb2NrID0gbV9vdXQubmV3QmxvY2so
KTsKKyAgICAgICAgTEJhc2ljQmxvY2sgaGFzUmFyZURhdGEgPSBtX291dC5uZXdCbG9jaygpOwor
ICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAg
IExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAg
bV9vdXQuYnJhbmNoKGlzRnVuY3Rpb24oY2FsbGVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQx
KCkpKSwgdXN1YWxseShpc0Z1bmN0aW9uQmxvY2spLCByYXJlbHkoc2xvd1BhdGgpKTsKKworICAg
ICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzRnVuY3Rpb25CbG9j
aywgaGFzUmFyZURhdGEpOworICAgICAgICBMVmFsdWUgcmFyZURhdGEgPSBtX291dC5sb2FkUHRy
KGNhbGxlZSwgbV9oZWFwcy5KU0Z1bmN0aW9uX3JhcmVEYXRhKTsKKyAgICAgICAgbV9vdXQuYnJh
bmNoKG1fb3V0LmlzWmVybzY0KHJhcmVEYXRhKSwgcmFyZWx5KHNsb3dQYXRoKSwgdXN1YWxseSho
YXNSYXJlRGF0YSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGhhc1JhcmVEYXRhLCBzbG93
UGF0aCk7CisgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBtX291dC5sb2FkUHRyKHJhcmVEYXRh
LCBtX2hlYXBzLkZ1bmN0aW9uUmFyZURhdGFfYWxsb2NhdG9yKTsKKyAgICAgICAgTFZhbHVlIHN0
cnVjdHVyZSA9IG1fb3V0LmxvYWRQdHIocmFyZURhdGEsIG1faGVhcHMuRnVuY3Rpb25SYXJlRGF0
YV9zdHJ1Y3R1cmUpOworICAgICAgICBMVmFsdWUgYnV0dGVyZmx5ID0gbV9vdXQuY29uc3RJbnRQ
dHIoMCk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3Io
YWxsb2NhdGVPYmplY3QoYWxsb2NhdG9yLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSwgc2xvd1BhdGgp
KTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFw
cGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24pOworICAgICAgICBWYWx1ZUZyb21CbG9jayBz
bG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbCgKKyAgICAgICAgICAgIEludDY0LCBtX291
dC5vcGVyYXRpb24ob3BlcmF0aW9uQ3JlYXRlVGhpcyksIG1fY2FsbEZyYW1lLCBjYWxsZWUsIG1f
b3V0LmNvbnN0SW50MzIobV9ub2RlLT5pbmxpbmVDYXBhY2l0eSgpKSkpOworICAgICAgICBtX291
dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0
aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5waGkoSW50NjQs
IGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpOworCisgICAgICAgIG11dGF0b3JGZW5jZSgpOworICAg
ICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CisgICAgfQogCiAgICAgdm9pZCBjb21waWxlU3ByZWFk
KCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShy
ZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3NSw2ICsyNzUsNyBAQCBjb25zdGV4cHIgYm9vbCBlbmFi
bGVXZWJBc3NlbWJseVN0cmVhbWluCiAgICAgdih1bnNpZ25lZCwgbWF4QWNjZXNzVmFyaWFudExp
c3RTaXplLCA4LCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KGJvb2wsIHVzZVBvbHl2YXJpYW50
RGV2aXJ0dWFsaXphdGlvbiwgdHJ1ZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihib29sLCB1
c2VQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAg
ICB2KHVuc2lnbmVkLCBtYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemUsIDMsIE5v
cm1hbCwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwgdXNlUG9seW1vcnBoaWNDYWxsSW5saW5pbmcs
IHRydWUsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwgdXNlUG9seW1vcnBoaWNDYWxs
SW5saW5pbmdGb3JOb25TdHViU3RhdHVzLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAg
dih1bnNpZ25lZCwgbWF4UG9seW1vcnBoaWNDYWxsVmFyaWFudExpc3RTaXplLCAxNSwgTm9ybWFs
LCBudWxscHRyKSBcCkBAIC0zMjIsOSArMzIzLDYgQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2Vi
QXNzZW1ibHlTdHJlYW1pbgogICAgIFwKICAgICB2KHVuc2lnbmVkLCBtYXhpbXVtVmFyYXJnc0Zv
cklubGluaW5nLCAxMDAsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIFwKLSAgICB2KGJvb2wsIHVz
ZVBvbHl2YXJpYW50Q2FsbElubGluaW5nLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKLSAgICB2
KGJvb2wsIHVzZVBvbHl2YXJpYW50QnlJZElubGluaW5nLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIp
IFwKLSAgICBcCiAgICAgdihib29sLCB1c2VNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZSwgZmFs
c2UsIE5vcm1hbCwgIlNldHRpbmcgdG8gdHJ1ZSBhbGxvd3MgdGhlIERGRydzIE1heGltYWxGbHVz
aEluc2VydGlvblBoYXNlIHRvIHJ1bi4iKSBcCiAgICAgXAogICAgIHYodW5zaWduZWQsIG1heGlt
dW1CaW5hcnlTdHJpbmdTd2l0Y2hDYXNlTGVuZ3RoLCA1MCwgTm9ybWFsLCBudWxscHRyKSBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341611</attachid>
            <date>2018-05-30 15:39:42 -0700</date>
            <delta_ts>2018-05-30 16:20:13 -0700</delta_ts>
            <desc>GetByIdStatus is starting to look good</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>119855</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgJKHJldmlz
aW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeVZhbEluZm8u
aAkod29ya2luZyBjb3B5KQpAQCAtMjY2LDEyICsyNjYsNiBAQCBpbmxpbmUgdW5zaWduZWQgZ2V0
QnlWYWxJbmZvQnl0ZWNvZGVJbmRlCiAgICAgcmV0dXJuIGluZm8tPmJ5dGVjb2RlSW5kZXg7CiB9
CiAKLXR5cGVkZWYgSGFzaE1hcDxDb2RlT3JpZ2luLCBCeVZhbEluZm8qLCBDb2RlT3JpZ2luQXBw
cm94aW1hdGVIYXNoPiBCeVZhbEluZm9NYXA7Ci0KLSNlbHNlIC8vIEVOQUJMRShKSVQpCi0KLXR5
cGVkZWYgSGFzaE1hcDxpbnQsIHZvaWQqPiBCeVZhbEluZm9NYXA7Ci0KICNlbmRpZiAvLyBFTkFC
TEUoSklUKQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkocmV2aXNpb24gMjMyMjI3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVz
dWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNDI3LDcgKzQyNyw3IEBAIHN0YXRpYyB2b2lkIGR1bXBDaGFpbihQcmlu
dFN0cmVhbSYgb3V0LCAKIH0KIAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVjb2Rl
RHVtcGVyPEJsb2NrPjo6cHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwg
aW50IGxvY2F0aW9uLCBjb25zdCBTdHViSW5mb01hcCYgbWFwKQordm9pZCBCeXRlY29kZUR1bXBl
cjxCbG9jaz46OnByaW50R2V0QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBs
b2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBjb25zdCBhdXRv
KiBpbnN0cnVjdGlvbiA9IGluc3RydWN0aW9uc0JlZ2luKCkgKyBsb2NhdGlvbjsKIApAQCAtNDQ3
LDcgKzQ0Nyw3IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludEdldEJ5SWQKICAg
ICB9CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YlB0
ciA9IG1hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpKSB7CisgICAgaWYgKFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViUHRyID0gc3RhdHVzTWFwLmdldChDb2RlT3JpZ2luKGxvY2F0aW9uKSkuc3R1
YkluZm8pIHsKICAgICAgICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gKnN0dWJQdHI7
CiAgICAgICAgIGlmIChzdHViSW5mby5yZXNldEJ5R0MpCiAgICAgICAgICAgICBvdXQucHJpbnQo
IiAoUmVzZXQgQnkgR0MpIik7CkBAIC00ODgsMTIgKzQ4OCwxMiBAQCB2b2lkIEJ5dGVjb2RlRHVt
cGVyPEJsb2NrPjo6cHJpbnRHZXRCeUlkCiAgICAgICAgIG91dC5wcmludGYoIikiKTsKICAgICB9
CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShtYXApOworICAgIFVOVVNFRF9QQVJBTShzdGF0dXNN
YXApOwogI2VuZGlmCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgotdm9pZCBCeXRlY29kZUR1
bXBlcjxCbG9jaz46OnByaW50UHV0QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGlu
dCBsb2NhdGlvbiwgY29uc3QgU3R1YkluZm9NYXAmIG1hcCkKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8
QmxvY2s+OjpwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9j
YXRpb24sIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgY29uc3QgYXV0byog
aW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNCZWdpbigpICsgbG9jYXRpb247CiAKQEAgLTUyMSw3
ICs1MjEsNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRQdXRCeUlkCiAgICAg
fQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJQdHIg
PSBtYXAuZ2V0KENvZGVPcmlnaW4obG9jYXRpb24pKSkgeworICAgIGlmIChTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YlB0ciA9IHN0YXR1c01hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpLnN0dWJJ
bmZvKSB7CiAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9ICpzdHViUHRyOwog
ICAgICAgICBpZiAoc3R1YkluZm8ucmVzZXRCeUdDKQogICAgICAgICAgICAgb3V0LnByaW50KCIg
KFJlc2V0IEJ5IEdDKSIpOwpAQCAtNTQ3LDEyICs1NDcsMTIgQEAgdm9pZCBCeXRlY29kZUR1bXBl
cjxCbG9jaz46OnByaW50UHV0QnlJZAogICAgICAgICBvdXQucHJpbnRmKCIpIik7CiAgICAgfQog
I2Vsc2UKLSAgICBVTlVTRURfUEFSQU0obWFwKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdHVzTWFw
KTsKICNlbmRpZgogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1w
ZXI8QmxvY2s+OjpwcmludEluQnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBs
b2NhdGlvbiwgY29uc3QgU3R1YkluZm9NYXAmIG1hcCkKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8Qmxv
Y2s+OjpwcmludEluQnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlv
biwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBjb25zdCBhdXRvKiBpbnN0
cnVjdGlvbiA9IGluc3RydWN0aW9uc0JlZ2luKCkgKyBsb2NhdGlvbjsKIApAQCAtNTYxLDcgKzU2
MSw3IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludEluQnlJZEMKICAgICBVTlVT
RURfUEFSQU0oaWRlbnQpOyAvLyB0ZWxsIHRoZSBjb21waWxlciB0byBzaHV0IHVwIGluIGNlcnRh
aW4gcGxhdGZvcm0gY29uZmlndXJhdGlvbnMuCiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmIChT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YlB0ciA9IG1hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikp
KSB7CisgICAgaWYgKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViUHRyID0gc3RhdHVzTWFwLmdldChD
b2RlT3JpZ2luKGxvY2F0aW9uKSkuc3R1YkluZm8pIHsKICAgICAgICAgU3RydWN0dXJlU3R1Yklu
Zm8mIHN0dWJJbmZvID0gKnN0dWJQdHI7CiAgICAgICAgIGlmIChzdHViSW5mby5yZXNldEJ5R0Mp
CiAgICAgICAgICAgICBvdXQucHJpbnQoIiAoUmVzZXQgQnkgR0MpIik7CkBAIC02MDAsMjYgKzYw
MCwyNiBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRJbkJ5SWRDCiAgICAgfQog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0ob3V0KTsKLSAgICBVTlVTRURfUEFSQU0obWFwKTsKKyAg
ICBVTlVTRURfUEFSQU0oc3RhdHVzTWFwKTsKICNlbmRpZgogfQogCiAjaWYgRU5BQkxFKEpJVCkK
IHRlbXBsYXRlPHR5cGVuYW1lIEJsb2NrPgotdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1
bXBDYWxsTGlua1N0YXR1cyhQcmludFN0cmVhbSYsIHVuc2lnbmVkLCBjb25zdCBDYWxsTGlua0lu
Zm9NYXAmKQordm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBDYWxsTGlua1N0YXR1cyhQ
cmludFN0cmVhbSYsIHVuc2lnbmVkLCBjb25zdCBJQ1N0YXR1c01hcCYpCiB7CiB9CiAKIHRlbXBs
YXRlPD4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8Q29kZUJsb2NrPjo6ZHVtcENhbGxMaW5rU3RhdHVz
KFByaW50U3RyZWFtJiBvdXQsIHVuc2lnbmVkIGxvY2F0aW9uLCBjb25zdCBDYWxsTGlua0luZm9N
YXAmIG1hcCkKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8Q29kZUJsb2NrPjo6ZHVtcENhbGxMaW5rU3Rh
dHVzKFByaW50U3RyZWFtJiBvdXQsIHVuc2lnbmVkIGxvY2F0aW9uLCBjb25zdCBJQ1N0YXR1c01h
cCYgc3RhdHVzTWFwKQogewogICAgIGlmIChibG9jaygpLT5qaXRUeXBlKCkgIT0gSklUQ29kZTo6
RlRMSklUKQotICAgICAgICBvdXQucHJpbnQoIiBzdGF0dXMoIiwgQ2FsbExpbmtTdGF0dXM6OmNv
bXB1dGVGb3IoYmxvY2soKSwgbG9jYXRpb24sIG1hcCksICIpIik7CisgICAgICAgIG91dC5wcmlu
dCgiIHN0YXR1cygiLCBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcihibG9jaygpLCBsb2NhdGlv
biwgc3RhdHVzTWFwKSwgIikiKTsKIH0KICNlbmRpZgogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4K
LXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludENhbGxPcChQcmludFN0cmVhbSYgb3V0
LCBpbnQgbG9jYXRpb24sIGNvbnN0IHR5cGVuYW1lIEJsb2NrOjpJbnN0cnVjdGlvbiomIGl0LCBj
b25zdCBjaGFyKiBvcCwgQ2FjaGVEdW1wTW9kZSBjYWNoZUR1bXBNb2RlLCBib29sJiBoYXNQcmlu
dGVkUHJvZmlsaW5nLCBjb25zdCBDYWxsTGlua0luZm9NYXAmIG1hcCkKK3ZvaWQgQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpwcmludENhbGxPcChQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24s
IGNvbnN0IHR5cGVuYW1lIEJsb2NrOjpJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCwg
Q2FjaGVEdW1wTW9kZSBjYWNoZUR1bXBNb2RlLCBib29sJiBoYXNQcmludGVkUHJvZmlsaW5nLCBj
b25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQogewogICAgIGludCBkc3QgPSAoKytpdCktPnUu
b3BlcmFuZDsKICAgICBpbnQgZnVuYyA9ICgrK2l0KS0+dS5vcGVyYW5kOwpAQCAtNjM4LDcgKzYz
OCw3IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludENhbGxPcCgKICAgICAgICAg
ICAgICAgICBvdXQucHJpbnRmKCIgbGxpbnQoJXApIiwgb2JqZWN0KTsKICAgICAgICAgfQogI2lm
IEVOQUJMRShKSVQpCi0gICAgICAgIGlmIChDYWxsTGlua0luZm8qIGluZm8gPSBtYXAuZ2V0KENv
ZGVPcmlnaW4obG9jYXRpb24pKSkgeworICAgICAgICBpZiAoQ2FsbExpbmtJbmZvKiBpbmZvID0g
c3RhdHVzTWFwLmdldChDb2RlT3JpZ2luKGxvY2F0aW9uKSkuY2FsbExpbmtJbmZvKSB7CiAgICAg
ICAgICAgICBpZiAoaW5mby0+aGF2ZUxhc3RTZWVuQ2FsbGVlKCkpIHsKICAgICAgICAgICAgICAg
ICBKU09iamVjdCogb2JqZWN0ID0gaW5mby0+bGFzdFNlZW5DYWxsZWUoKTsKICAgICAgICAgICAg
ICAgICBpZiAoYXV0byogZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPigqdm0o
KSwgb2JqZWN0KSkKQEAgLTY0OCw5ICs2NDgsOSBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2Nr
Pjo6cHJpbnRDYWxsT3AoCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBkdW1w
Q2FsbExpbmtTdGF0dXMob3V0LCBsb2NhdGlvbiwgbWFwKTsKKyAgICAgICAgZHVtcENhbGxMaW5r
U3RhdHVzKG91dCwgbG9jYXRpb24sIHN0YXR1c01hcCk7CiAjZWxzZQotICAgICAgICBVTlVTRURf
UEFSQU0obWFwKTsKKyAgICAgICAgVU5VU0VEX1BBUkFNKHN0YXR1c01hcCk7CiAjZW5kaWYKICAg
ICB9CiAgICAgKytpdDsKQEAgLTY3OCw3ICs2NzgsNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJs
b2NrPjo6cHJpbnRMb2NhdGlvCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgotdm9pZCBCeXRl
Y29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCB0
eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6
SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgU3R1YkluZm9NYXAmIHN0dWJJbmZvcywgY29uc3QgQ2Fs
bExpbmtJbmZvTWFwJiBjYWxsTGlua0luZm9zKQordm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46
OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5z
dHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwg
Y29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBpbnQgbG9jYXRpb24gPSBpdCAt
IGJlZ2luOwogICAgIGJvb2wgaGFzUHJpbnRlZFByb2ZpbGluZyA9IGZhbHNlOwpAQCAtMTA3MSw3
ICsxMDcxLDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZQogICAg
ICAgICBpbnQgaWQwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgIHByaW50TG9jYXRpb25B
bmRPcChvdXQsIGxvY2F0aW9uLCBpdCwgImluX2J5X2lkIik7CiAgICAgICAgIG91dC5wcmludGYo
IiVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5k
YXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZpZXIoaWQwKSkuZGF0YSgpKTsKLSAgICAgICAgcHJp
bnRJbkJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdHViSW5mb3MpOworICAgICAgICBw
cmludEluQnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0YXR1c01hcCk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIG9wX2luX2J5X3ZhbDogewpAQCAtMTA5NSw3ICsxMDk1
LDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZQogICAgICAgICBw
cmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJnZXRfYnlfaWRfZGlyZWN0Iik7
CiAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgJXMiLCByZWdpc3Rlck5hbWUocjApLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGlkTmFtZShpZDAsIGlkZW50aWZpZXIoaWQwKSku
ZGF0YSgpKTsKICAgICAgICAgaXQgKz0gMjsgLy8gSW5jcmVtZW50IHVwIHRvIHRoZSB2YWx1ZSBw
cm9maWxlci4KLSAgICAgICAgcHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMob3V0LCBsb2NhdGlvbiwg
c3R1YkluZm9zKTsKKyAgICAgICAgcHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMob3V0LCBsb2NhdGlv
biwgc3RhdHVzTWFwKTsKICAgICAgICAgZHVtcFZhbHVlUHJvZmlsaW5nKG91dCwgaXQsIGhhc1By
aW50ZWRQcm9maWxpbmcpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xMTA0LDcgKzExMDQs
NyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJ5dGVjb2RlCiAgICAgY2FzZSBv
cF9nZXRfYnlfaWRfdW5zZXQ6CiAgICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOiB7CiAgICAg
ICAgIHByaW50R2V0QnlJZE9wKG91dCwgbG9jYXRpb24sIGl0KTsKLSAgICAgICAgcHJpbnRHZXRC
eUlkQ2FjaGVTdGF0dXMob3V0LCBsb2NhdGlvbiwgc3R1YkluZm9zKTsKKyAgICAgICAgcHJpbnRH
ZXRCeUlkQ2FjaGVTdGF0dXMob3V0LCBsb2NhdGlvbiwgc3RhdHVzTWFwKTsKICAgICAgICAgZHVt
cFZhbHVlUHJvZmlsaW5nKG91dCwgaXQsIGhhc1ByaW50ZWRQcm9maWxpbmcpOwogICAgICAgICBi
cmVhazsKICAgICB9CkBAIC0xMTMwLDcgKzExMzAsNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJs
b2NrPjo6ZHVtcEJ5dGVjb2RlCiAgICAgfQogICAgIGNhc2Ugb3BfcHV0X2J5X2lkOiB7CiAgICAg
ICAgIHByaW50UHV0QnlJZE9wKG91dCwgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkIik7Ci0gICAg
ICAgIHByaW50UHV0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0dWJJbmZvcyk7Cisg
ICAgICAgIHByaW50UHV0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0YXR1c01hcCk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIG9wX3B1dF9ieV9pZF93aXRoX3RoaXM6
IHsKQEAgLTE0NzYsMTUgKzE0NzYsMTUgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1
bXBCeXRlY29kZQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBvcF9jYWxsOiB7Ci0g
ICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAiY2FsbCIsIER1bXBDYWNoZXMs
IGhhc1ByaW50ZWRQcm9maWxpbmcsIGNhbGxMaW5rSW5mb3MpOworICAgICAgICBwcmludENhbGxP
cChvdXQsIGxvY2F0aW9uLCBpdCwgImNhbGwiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmls
aW5nLCBzdGF0dXNNYXApOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBvcF90YWls
X2NhbGw6IHsKLSAgICAgICAgcHJpbnRDYWxsT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJ0YWlsX2Nh
bGwiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmlsaW5nLCBjYWxsTGlua0luZm9zKTsKKyAg
ICAgICAgcHJpbnRDYWxsT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJ0YWlsX2NhbGwiLCBEdW1wQ2Fj
aGVzLCBoYXNQcmludGVkUHJvZmlsaW5nLCBzdGF0dXNNYXApOwogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgY2FzZSBvcF9jYWxsX2V2YWw6IHsKLSAgICAgICAgcHJpbnRDYWxsT3Aob3V0LCBs
b2NhdGlvbiwgaXQsICJjYWxsX2V2YWwiLCBEb250RHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2Zp
bGluZywgY2FsbExpbmtJbmZvcyk7CisgICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24s
IGl0LCAiY2FsbF9ldmFsIiwgRG9udER1bXBDYWNoZXMsIGhhc1ByaW50ZWRQcm9maWxpbmcsIHN0
YXR1c01hcCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMTUyMyw3ICsxNTIzLDcgQEAg
dm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZQogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgY2FzZSBvcF9jb25zdHJ1Y3Q6IHsKLSAgICAgICAgcHJpbnRDYWxsT3Aob3V0
LCBsb2NhdGlvbiwgaXQsICJjb25zdHJ1Y3QiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmls
aW5nLCBjYWxsTGlua0luZm9zKTsKKyAgICAgICAgcHJpbnRDYWxsT3Aob3V0LCBsb2NhdGlvbiwg
aXQsICJjb25zdHJ1Y3QiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmlsaW5nLCBzdGF0dXNN
YXApOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBvcF9zdHJjYXQ6IHsKQEAgLTE3
NzgsMTAgKzE3NzgsMTAgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29k
ZQogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+
OjpkdW1wQnl0ZWNvZGUoQmxvY2sqIGJsb2NrLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCB0eXBl
bmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5z
dHJ1Y3Rpb24qJiBpdCwgY29uc3QgU3R1YkluZm9NYXAmIHN0dWJJbmZvcywgY29uc3QgQ2FsbExp
bmtJbmZvTWFwJiBjYWxsTGlua0luZm9zKQordm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1
bXBCeXRlY29kZShCbG9jayogYmxvY2ssIFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IHR5cGVuYW1l
IEJsb2NrOjpJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IHR5cGVuYW1lIEJsb2NrOjpJbnN0cnVj
dGlvbiomIGl0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQogewogICAgIEJ5dGVjb2Rl
RHVtcGVyIGR1bXBlcihibG9jaywgYmVnaW4pOwotICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0
LCBiZWdpbiwgaXQsIHN0dWJJbmZvcywgY2FsbExpbmtJbmZvcyk7CisgICAgZHVtcGVyLmR1bXBC
eXRlY29kZShvdXQsIGJlZ2luLCBpdCwgc3RhdHVzTWFwKTsKIH0KIAogdGVtcGxhdGU8Y2xhc3Mg
QmxvY2s+CkBAIC0xODkwLDcgKzE4OTAsNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6
ZHVtcFN0cmluZ1N3CiB9CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgotdm9pZCBCeXRlY29kZUR1
bXBlcjxCbG9jaz46OmR1bXBCbG9jayhCbG9jayogYmxvY2ssIGNvbnN0IHR5cGVuYW1lIEJsb2Nr
OjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBQcmludFN0cmVhbSYgb3V0LCBj
b25zdCBTdHViSW5mb01hcCYgc3R1YkluZm9zLCBjb25zdCBDYWxsTGlua0luZm9NYXAmIGNhbGxM
aW5rSW5mb3MpCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJsb2NrKEJsb2NrKiBi
bG9jaywgY29uc3QgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBpbnN0cnVj
dGlvbnMsIFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7
CiAgICAgc2l6ZV90IGluc3RydWN0aW9uQ291bnQgPSAwOwogCkBAIC0xOTEwLDcgKzE5MTAsNyBA
QCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJsb2NrKEJsCiAgICAgY29uc3QgYXV0
byogZW5kID0gaW5zdHJ1Y3Rpb25zLmVuZCgpOwogICAgIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPiBk
dW1wZXIoYmxvY2ssIGJlZ2luKTsKICAgICBmb3IgKGNvbnN0IGF1dG8qIGl0ID0gYmVnaW47IGl0
ICE9IGVuZDsgKytpdCkKLSAgICAgICAgZHVtcGVyLmR1bXBCeXRlY29kZShvdXQsIGJlZ2luLCBp
dCwgc3R1YkluZm9zLCBjYWxsTGlua0luZm9zKTsKKyAgICAgICAgZHVtcGVyLmR1bXBCeXRlY29k
ZShvdXQsIGJlZ2luLCBpdCwgc3RhdHVzTWFwKTsKIAogICAgIGR1bXBlci5kdW1wSWRlbnRpZmll
cnMob3V0KTsKICAgICBkdW1wZXIuZHVtcENvbnN0YW50cyhvdXQpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmgJKHJldmlzaW9uIDIz
MjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
NyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yNiw2ICsyNyw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkNhbGxMaW5rSW5mby5oIgorI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCiAjaW5jbHVkZSAiU3Ry
dWN0dXJlU3R1YkluZm8uaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zNyw4ICszOSw4IEBAIGNs
YXNzIEJ5dGVjb2RlRHVtcGVyIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIHR5cGVuYW1lIEJsb2Nr
OjpJbnN0cnVjdGlvbiBJbnN0cnVjdGlvbjsKIAotICAgIHN0YXRpYyB2b2lkIGR1bXBCeXRlY29k
ZShCbG9jayosIFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29u
c3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgU3R1YkluZm9NYXAmID0gU3R1YkluZm9NYXAoKSwg
Y29uc3QgQ2FsbExpbmtJbmZvTWFwJiA9IENhbGxMaW5rSW5mb01hcCgpKTsKLSAgICBzdGF0aWMg
dm9pZCBkdW1wQmxvY2soQmxvY2sqLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0
cnVjdGlvbnMmLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBTdHViSW5mb01hcCYgPSBTdHViSW5m
b01hcCgpLCBjb25zdCBDYWxsTGlua0luZm9NYXAmID0gQ2FsbExpbmtJbmZvTWFwKCkpOworICAg
IHN0YXRpYyB2b2lkIGR1bXBCeXRlY29kZShCbG9jayosIFByaW50U3RyZWFtJiBvdXQsIGNvbnN0
IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgSUNTdGF0
dXNNYXAmIHN0YXR1c01hcCA9IElDU3RhdHVzTWFwKCkpOworICAgIHN0YXRpYyB2b2lkIGR1bXBC
bG9jayhCbG9jayosIGNvbnN0IHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYs
IFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXAgPSBJQ1N0YXR1
c01hcCgpKTsKIAogcHJpdmF0ZToKICAgICBCeXRlY29kZUR1bXBlcihCbG9jayogYmxvY2ssIGNv
bnN0IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbikKQEAgLTY5LDE0ICs3MSwxNCBAQCBw
cml2YXRlOgogICAgIHZvaWQgcHJpbnRDb25kaXRpb25hbEp1bXAoUHJpbnRTdHJlYW0mIG91dCwg
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBpbnQgbG9jYXRpb24s
IGNvbnN0IGNoYXIqIG9wKTsKICAgICB2b2lkIHByaW50Q29tcGFyZUp1bXAoUHJpbnRTdHJlYW0m
IG91dCwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBpbnQgbG9j
YXRpb24sIGNvbnN0IGNoYXIqIG9wKTsKICAgICB2b2lkIHByaW50R2V0QnlJZE9wKFByaW50U3Ry
ZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCk7Ci0gICAgdm9p
ZCBwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24s
IGNvbnN0IFN0dWJJbmZvTWFwJik7Ci0gICAgdm9pZCBwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhQ
cmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IFN0dWJJbmZvTWFwJik7Ci0gICAg
dm9pZCBwcmludEluQnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlv
biwgY29uc3QgU3R1YkluZm9NYXAmKTsKKyAgICB2b2lkIHByaW50R2V0QnlJZENhY2hlU3RhdHVz
KFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmKTsKKyAg
ICB2b2lkIHByaW50UHV0QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2Nh
dGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmKTsKKyAgICB2b2lkIHByaW50SW5CeUlkQ2FjaGVTdGF0
dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJQ1N0YXR1c01hcCYpOwog
ICAgIGVudW0gQ2FjaGVEdW1wTW9kZSB7IER1bXBDYWNoZXMsIERvbnREdW1wQ2FjaGVzIH07Ci0g
ICAgdm9pZCBwcmludENhbGxPcChQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0
IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IGNoYXIqIG9wLCBDYWNoZUR1bXBNb2RlLCBib29sJiBo
YXNQcmludGVkUHJvZmlsaW5nLCBjb25zdCBDYWxsTGlua0luZm9NYXAmKTsKKyAgICB2b2lkIHBy
aW50Q2FsbE9wKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgSW5zdHJ1Y3Rp
b24qJiBpdCwgY29uc3QgY2hhciogb3AsIENhY2hlRHVtcE1vZGUsIGJvb2wmIGhhc1ByaW50ZWRQ
cm9maWxpbmcsIGNvbnN0IElDU3RhdHVzTWFwJik7CiAgICAgdm9pZCBwcmludFB1dEJ5SWRPcChQ
cmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNv
bnN0IGNoYXIqIG9wKTsKICAgICB2b2lkIHByaW50TG9jYXRpb25PcEFuZFJlZ2lzdGVyT3BlcmFu
ZChQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQs
IGNvbnN0IGNoYXIqIG9wLCBpbnQgb3BlcmFuZCk7Ci0gICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJp
bnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlv
biomIGl0LCBjb25zdCBTdHViSW5mb01hcCYsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYpOworICAg
IHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiBi
ZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgSUNTdGF0dXNNYXAmKTsKIAogICAg
IHZvaWQgZHVtcFZhbHVlUHJvZmlsaW5nKFByaW50U3RyZWFtJiwgY29uc3QgSW5zdHJ1Y3Rpb24q
JiwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZyk7CiAgICAgdm9pZCBkdW1wQXJyYXlQcm9maWxp
bmcoUHJpbnRTdHJlYW0mLCBjb25zdCBJbnN0cnVjdGlvbiomLCBib29sJiBoYXNQcmludGVkUHJv
ZmlsaW5nKTsKQEAgLTg1LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkKiBhY3R1YWxQb2lu
dGVyRm9yKFNwZWNpYWw6OlBvaW50ZXIpIGNvbnN0OwogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICB2
b2lkIGR1bXBDYWxsTGlua1N0YXR1cyhQcmludFN0cmVhbSYsIHVuc2lnbmVkIGxvY2F0aW9uLCBj
b25zdCBDYWxsTGlua0luZm9NYXAmKTsKKyAgICB2b2lkIGR1bXBDYWxsTGlua1N0YXR1cyhQcmlu
dFN0cmVhbSYsIHVuc2lnbmVkIGxvY2F0aW9uLCBjb25zdCBJQ1N0YXR1c01hcCYpOwogI2VuZGlm
CiAKICAgICBCbG9jayogbV9ibG9jazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9DYWxsTGlua0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMzUy
LDEyICszNTIsNiBAQCBpbmxpbmUgQ29kZU9yaWdpbiBnZXRDYWxsTGlua0luZm9Db2RlT3JpCiAg
ICAgcmV0dXJuIGNhbGxMaW5rSW5mby5jb2RlT3JpZ2luKCk7CiB9CiAKLXR5cGVkZWYgSGFzaE1h
cDxDb2RlT3JpZ2luLCBDYWxsTGlua0luZm8qLCBDb2RlT3JpZ2luQXBwcm94aW1hdGVIYXNoPiBD
YWxsTGlua0luZm9NYXA7Ci0KLSNlbHNlIC8vIEVOQUJMRShKSVQpCi0KLXR5cGVkZWYgSGFzaE1h
cDxpbnQsIHZvaWQqPiBDYWxsTGlua0luZm9NYXA7Ci0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsTGlua1N0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzcsNyArNzcsOCBAQCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0
ZUZyCiB9CiAKIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAotICAg
IENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgY29uc3Qg
Q2FsbExpbmtJbmZvTWFwJiBtYXApCisgICAgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNp
Z25lZCBieXRlY29kZUluZGV4LCBjb25zdCBJQ1N0YXR1c01hcCYgbWFwLAorICAgIEV4aXRTaXRl
RGF0YSBleGl0U2l0ZURhdGEpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihwcm9m
aWxlZEJsb2NrLT5tX2xvY2spOwogICAgIApAQCAtODUsOSArODYsNyBAQCBDYWxsTGlua1N0YXR1
cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvCiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5k
ZXgpOwogICAgIFVOVVNFRF9QQVJBTShtYXApOwogI2lmIEVOQUJMRShERkdfSklUKQotICAgIEV4
aXRTaXRlRGF0YSBleGl0U2l0ZURhdGEgPSBjb21wdXRlRXhpdFNpdGVEYXRhKHByb2ZpbGVkQmxv
Y2ssIGJ5dGVjb2RlSW5kZXgpOwotICAgIAotICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZv
ID0gbWFwLmdldChDb2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgpKTsKKyAgICBDYWxsTGlua0luZm8q
IGNhbGxMaW5rSW5mbyA9IG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4KSkuY2FsbExp
bmtJbmZvOwogICAgIGlmICghY2FsbExpbmtJbmZvKSB7CiAgICAgICAgIGlmIChleGl0U2l0ZURh
dGEudGFrZXNTbG93UGF0aCkKICAgICAgICAgICAgIHJldHVybiB0YWtlc1Nsb3dQYXRoKCk7CkBA
IC0xMDcsMTEgKzEwNiwyMSBAQCBDYWxsTGlua1N0YXR1czo6RXhpdFNpdGVEYXRhIENhbGxMaW5r
U3RhCiAgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHByb2ZpbGVkQmxvY2stPnVu
bGlua2VkQ29kZUJsb2NrKCk7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxv
Y2stPm1fbG9jayk7CiAKLSAgICBleGl0U2l0ZURhdGEudGFrZXNTbG93UGF0aCA9Ci0gICAgICAg
IGNvZGVCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0
ZWNvZGVJbmRleCwgQmFkVHlwZSkpCi0gICAgICAgIHx8IGNvZGVCbG9jay0+aGFzRXhpdFNpdGUo
bG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkRXhlY3V0YWJs
ZSkpOwotICAgIGV4aXRTaXRlRGF0YS5iYWRGdW5jdGlvbiA9Ci0gICAgICAgIGNvZGVCbG9jay0+
aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwg
QmFkQ2VsbCkpOworICAgIGF1dG8gdGFrZXNTbG93UGF0aCA9IFsmXSAoRXhpdGluZ0lubGluZUtp
bmQgaW5saW5lS2luZCkgLT4gRXhpdEZsYWcgeworICAgICAgICByZXR1cm4gRXhpdEZsYWcoCisg
ICAgICAgICAgICBjb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4
aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZFR5cGUsIEV4aXRGcm9tQW55dGhpbmcsIGlubGluZUtp
bmQpKQorICAgICAgICAgICAgfHwgY29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6
RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRFeGVjdXRhYmxlLCBFeGl0RnJvbUFu
eXRoaW5nLCBpbmxpbmVLaW5kKSksCisgICAgICAgICAgICBpbmxpbmVLaW5kKTsKKyAgICB9Owor
ICAgIAorICAgIGF1dG8gYmFkRnVuY3Rpb24gPSBbJl0gKEV4aXRpbmdJbmxpbmVLaW5kIGlubGlu
ZUtpbmQpIC0+IGJvb2wgeworICAgICAgICByZXR1cm4gY29kZUJsb2NrLT5oYXNFeGl0U2l0ZShs
b2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRDZWxsLCBFeGl0
RnJvbUFueXRoaW5nLCBpbmxpbmVLaW5kKSk7CisgICAgfTsKKyAgICAKKyAgICBleGl0U2l0ZURh
dGEudGFrZXNTbG93UGF0aCB8PSB0YWtlc1Nsb3dQYXRoKEV4aXRGcm9tTm90SW5saW5lZCk7Cisg
ICAgZXhpdFNpdGVEYXRhLnRha2VzU2xvd1BhdGggfD0gdGFrZXNTbG93UGF0aChFeGl0RnJvbUlu
bGluZWQpOworICAgIGV4aXRTaXRlRGF0YS5iYWRGdW5jdGlvbiB8PSBiYWRGdW5jdGlvbihFeGl0
RnJvbU5vdElubGluZWQpOworICAgIGV4aXRTaXRlRGF0YS5iYWRGdW5jdGlvbiB8PSBiYWRGdW5j
dGlvbihFeGl0RnJvbUlubGluZWQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRC
bG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwpAQCAtMjI3LDgzICsyMzYs
NTQgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcgogCiBDYWxsTGlu
a1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKICAgICBjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImIGxvY2tlciwgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBDYWxsTGlua0luZm8m
IGNhbGxMaW5rSW5mbywKLSAgICBFeGl0U2l0ZURhdGEgZXhpdFNpdGVEYXRhKQorICAgIEV4aXRT
aXRlRGF0YSBleGl0U2l0ZURhdGEsIEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQpCiB7CiAg
ICAgQ2FsbExpbmtTdGF0dXMgcmVzdWx0ID0gY29tcHV0ZUZvcihsb2NrZXIsIHByb2ZpbGVkQmxv
Y2ssIGNhbGxMaW5rSW5mbyk7Ci0gICAgaWYgKGV4aXRTaXRlRGF0YS5iYWRGdW5jdGlvbikgewot
ICAgICAgICBpZiAocmVzdWx0LmlzQmFzZWRPblN0dWIoKSkgeworICAgIHJlc3VsdC5hY2NvdW50
Rm9yRXhpdHMoZXhpdFNpdGVkYXRhLCBpbmxpbmVLaW5kKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorI2VuZGlmCisKK3ZvaWQgQ2FsbExpbmtTdGF0dXM6OmFjY291bnRGb3JFeGl0cyhFeGl0U2l0
ZURhdGEgZXhpdFNpdGVEYXRhLCBFeGl0aW5nSW5saW5lS2luZCBpbmxpbmVLaW5kKQoreworICAg
IGlmIChleGl0U2l0ZURhdGEuYmFkRnVuY3Rpb24uaXNTZXQoaW5saW5lS2luZCkpIHsKKyAgICAg
ICAgaWYgKGlzQmFzZWRPblN0dWIoKSkgewogICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIHBv
bHltb3JwaGljIHN0dWIsIHRoZW4gaGF2aW5nIGFuIGV4aXQgc2l0ZSBpcyBub3QgcXVpdGUgc28g
dXNlZnVsLiBJbgogICAgICAgICAgICAgLy8gbW9zdCBjYXNlcywgdGhlIGluZm9ybWF0aW9uIGlu
IHRoZSBzdHViIGhhcyBoaWdoZXIgZmlkZWxpdHkuCi0gICAgICAgICAgICByZXN1bHQubWFrZUNs
b3N1cmVDYWxsKCk7CisgICAgICAgICAgICBtYWtlQ2xvc3VyZUNhbGwoKTsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIC8vIFdlIG1pZ2h0IG5vdCBoYXZlIGEgcG9seW1vcnBoaWMgc3R1
YiBmb3IgYW55IG51bWJlciBvZiByZWFzb25zLiBXaGVuIHRoaXMgaGFwcGVucywgd2UKICAgICAg
ICAgICAgIC8vIGFyZSBpbiBsZXNzIGNlcnRhaW4gdGVycml0b3J5LCBzbyBleGl0IHNpdGVzIG1l
YW4gYSBsb3QuCi0gICAgICAgICAgICByZXN1bHQubV9jb3VsZFRha2VTbG93UGF0aCA9IHRydWU7
CisgICAgICAgICAgICBtX2NvdWxkVGFrZVNsb3dQYXRoID0gdHJ1ZTsKICAgICAgICAgfQogICAg
IH0KLSAgICBpZiAoZXhpdFNpdGVEYXRhLnRha2VzU2xvd1BhdGgpCi0gICAgICAgIHJlc3VsdC5t
X2NvdWxkVGFrZVNsb3dQYXRoID0gdHJ1ZTsKICAgICAKLSAgICByZXR1cm4gcmVzdWx0OworICAg
IGlmIChleGl0U2l0ZURhdGEudGFrZXNTbG93UGF0aC5pc1NldChpbmxpbmVLaW5kKSkKKyAgICAg
ICAgbV9jb3VsZFRha2VTbG93UGF0aCA9IHRydWU7CiB9Ci0jZW5kaWYKIAotdm9pZCBDYWxsTGlu
a1N0YXR1czo6Y29tcHV0ZURGR1N0YXR1c2VzKAotICAgIENvZGVCbG9jayogZGZnQ29kZUJsb2Nr
LCBDYWxsTGlua1N0YXR1czo6Q29udGV4dE1hcCYgbWFwKQorQ2FsbExpbmtTdGF0dXMgQ2FsbExp
bmtTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4sCisgICAgY29uc3QgSUNTdGF0dXNNYXAmIGJhc2VsaW5lTWFwLCBj
b25zdCBJQ1N0YXR1c0NvbnRleHRTdGFjayYgb3B0aW1pemVkU3RhY2spCiB7Ci0jaWYgRU5BQkxF
KERGR19KSVQpCi0gICAgUkVMRUFTRV9BU1NFUlQoZGZnQ29kZUJsb2NrLT5qaXRUeXBlKCkgPT0g
SklUQ29kZTo6REZHSklUKTsKLSAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gZGZn
Q29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpOwotICAgIGZvciAoYXV0byBpdGVyID0gZGZnQ29kZUJs
b2NrLT5jYWxsTGlua0luZm9zQmVnaW4oKTsgISFpdGVyOyArK2l0ZXIpIHsKLSAgICAgICAgQ2Fs
bExpbmtJbmZvJiBpbmZvID0gKippdGVyOwotICAgICAgICBpZiAoaW5mby5pc0RpcmVjdCgpKSB7
Ci0gICAgICAgICAgICAvLyBJZiB0aGUgREZHIHdhcyBhYmxlIHRvIGdldCBhIGRpcmVjdCBjYWxs
IHRoZW4gcHJvYmFibHkgc28gd2lsbCB3ZS4gSG93ZXZlciwgdGhlcmUgaXMKLSAgICAgICAgICAg
IC8vIGEgcmVtb3RlIGNoYW5jZSB0aGF0IGl0J3MgYmFkIG5ld3MgdG8gbG9zZSBpbmZvcm1hdGlv
biBhYm91dCB3aGF0IHRoZSBERkcgZGlkLiBXZSdkCi0gICAgICAgICAgICAvLyBpZGVhbGx5IGxp
a2UgdG8ganVzdCBrbm93IHRoYXQgdGhlIERGRyBoYWQgZW1pdHRlZCBhIERpcmVjdENhbGwuCi0g
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBDb2RlT3JpZ2luIGNvZGVP
cmlnaW4gPSBpbmZvLmNvZGVPcmlnaW4oKTsKLSAgICAgICAgCi0gICAgICAgIC8vIENoZWNrIGlm
IHdlIGhhZCBhbHJlYWR5IHByZXZpb3VzbHkgbWFkZSBhIHRlcnJpYmxlIG1pc3Rha2UgaW4gdGhl
IEZUTCBmb3IgdGhpcwotICAgICAgICAvLyBjb2RlIG9yaWdpbi4gTm90ZSB0aGF0IHRoaXMgaXMg
YXBwcm94aW1hdGUgYmVjYXVzZSB3ZSBjb3VsZCBoYXZlIGEgbW9ub3ZhcmlhbnQKLSAgICAgICAg
Ly8gaW5saW5lIGluIHRoZSBGVEwgdGhhdCBlbmRlZCB1cCBmYWlsaW5nLiBXZSBzaG91bGQgZml4
IHRoYXQgYXQgc29tZSBwb2ludCBieQotICAgICAgICAvLyBoYXZpbmcgZGF0YSBzdHJ1Y3R1cmVz
IHRvIHRyYWNrIHRoZSBjb250ZXh0IG9mIGZyZXF1ZW50IGV4aXRzLiBUaGlzIGlzIGN1cnJlbnRs
eQotICAgICAgICAvLyBjaGFsbGVuZ2luZyBiZWNhdXNlIGl0IHdvdWxkIHJlcXVpcmUgY3JlYXRp
bmcgYSBDb2RlT3JpZ2luLWJhc2VkIGRhdGFiYXNlIGluCi0gICAgICAgIC8vIGJhc2VsaW5lIENv
ZGVCbG9ja3MsIGJ1dCB0aG9zZSBDb2RlQmxvY2tzIGRvbid0IHJlYWxseSBoYXZlIGEgcGxhY2Ug
dG8gcHV0IHRoZQotICAgICAgICAvLyBJbmxpbmVDYWxsRnJhbWVzLgotICAgICAgICBDb2RlQmxv
Y2sqIGN1cnJlbnRCYXNlbGluZSA9Ci0gICAgICAgICAgICBiYXNlbGluZUNvZGVCbG9ja0Zvck9y
aWdpbkFuZEJhc2VsaW5lQ29kZUJsb2NrKGNvZGVPcmlnaW4sIGJhc2VsaW5lQ29kZUJsb2NrKTsK
LSAgICAgICAgRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YSA9IGNvbXB1dGVFeGl0U2l0ZURhdGEo
Y3VycmVudEJhc2VsaW5lLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpOwotICAgICAgICAKLSAg
ICAgICAgewotICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihkZmdDb2RlQmxv
Y2stPm1fbG9jayk7Ci0gICAgICAgICAgICBtYXAuYWRkKGluZm8uY29kZU9yaWdpbigpLCBjb21w
dXRlRm9yKGxvY2tlciwgZGZnQ29kZUJsb2NrLCBpbmZvLCBleGl0U2l0ZURhdGEpKTsKLSAgICAg
ICAgfQotICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGRmZ0NvZGVCbG9jayk7Ci0jZW5k
aWYgLy8gRU5BQkxFKERGR19KSVQpCisgICAgRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YSA9IGNv
bXB1dGVFeGl0U2l0ZURhdGEocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4
KTsKICAgICAKLSAgICBpZiAoQ2FsbExpbmtTdGF0dXNJbnRlcm5hbDo6dmVyYm9zZSkgewotICAg
ICAgICBkYXRhTG9nKCJDb250ZXh0IG1hcDpcbiIpOwotICAgICAgICBDb250ZXh0TWFwOjppdGVy
YXRvciBpdGVyID0gbWFwLmJlZ2luKCk7Ci0gICAgICAgIENvbnRleHRNYXA6Oml0ZXJhdG9yIGVu
ZCA9IG1hcC5lbmQoKTsKLSAgICAgICAgZm9yICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKLSAg
ICAgICAgICAgIGRhdGFMb2coIiAgICAiLCBpdGVyLT5rZXksICI6XG4iKTsKLSAgICAgICAgICAg
IGRhdGFMb2coIiAgICAgICAgIiwgaXRlci0+dmFsdWUsICJcbiIpOworICAgIGZvciAoY29uc3Qg
SUNTdGF0dXNDb250ZXh0JiBjb250ZXh0IDogb3B0aW1pemVkU3RhY2spIHsKKyAgICAgICAgSUNT
dGF0dXMgc3RhdHVzID0gY29udGV4dC5nZXQoY29kZU9yaWdpbik7CisgICAgICAgIGlmIChzdGF0
dXMuY2FsbExpbmtJbmZvKSB7CisgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2Vy
KGNvbnRleHQub3B0aW1pemVkQ29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgQ2FsbExp
bmtTdGF0dXMgcmVzdWx0ID0gY29tcHV0ZUZvcigKKyAgICAgICAgICAgICAgICBsb2NrZXIsIGNv
bnRleHQub3B0aW1pemVkQ29kZUJsb2NrLCAqc3RhdHVzLmNhbGxMaW5rSW5mbywgZXhpdFNpdGVE
YXRhLAorICAgICAgICAgICAgICAgIGNvbnRleHQuaW5saW5lS2luZChjb2RlT3JpZ2luKSk7Cisg
ICAgICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChzdGF0dXMuY2FsbExpbmtTdGF0dXMpCisg
ICAgICAgICAgICByZXR1cm4gKnN0YXR1cy5jYWxsTGlua1N0YXR1czsKICAgICB9Ci19Ci0KLUNh
bGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAotICAgIENvZGVCbG9jayog
cHJvZmlsZWRCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLAotICAgIGNvbnN0IENhbGxMaW5r
SW5mb01hcCYgYmFzZWxpbmVNYXAsIGNvbnN0IENhbGxMaW5rU3RhdHVzOjpDb250ZXh0TWFwJiBk
ZmdNYXApCi17Ci0gICAgYXV0byBpdGVyID0gZGZnTWFwLmZpbmQoY29kZU9yaWdpbik7Ci0gICAg
aWYgKGl0ZXIgIT0gZGZnTWFwLmVuZCgpKQotICAgICAgICByZXR1cm4gaXRlci0+dmFsdWU7CiAg
ICAgCi0gICAgcmV0dXJuIGNvbXB1dGVGb3IocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRl
Y29kZUluZGV4LCBiYXNlbGluZU1hcCk7CisgICAgcmV0dXJuIGNvbXB1dGVGb3IocHJvZmlsZWRC
bG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBiYXNlbGluZU1hcCwgZXhpdFNpdGVEYXRh
KTsKIH0KIAogdm9pZCBDYWxsTGlua1N0YXR1czo6c2V0UHJvdmVuQ29uc3RhbnRDYWxsZWUoQ2Fs
bFZhcmlhbnQgdmFyaWFudCkKQEAgLTMyNyw2ICszMDcsMjQgQEAgdm9pZCBDYWxsTGlua1N0YXR1
czo6bWFrZUNsb3N1cmVDYWxsKCkKICAgICBtX3ZhcmlhbnRzID0gZGVzcGVjaWZpZWRWYXJpYW50
TGlzdChtX3ZhcmlhbnRzKTsKIH0KIAorYm9vbCBDYWxsTGlua1N0YXR1czo6ZmluYWxpemUoKQor
eworICAgIGZvciAoQ2FsbFZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKSB7CisgICAgICAg
IGlmICghdmFyaWFudC5maW5hbGl6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDYWxsTGlua1N0YXR1czo6ZmlsdGVyKEpT
VmFsdWUgdmFsdWUpCit7CisgICAgbV92YXJpYW50cy5yZW1vdmVBbGxNYXRjaGluZygKKyAgICAg
ICAgWyZdIChDYWxsVmFyaWFudCYgdmFyaWFudCkgLT4gYm9vbCB7CisgICAgICAgICAgICB2YXJp
YW50LmZpbHRlcih2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gIXZhcmlhbnQ7CisgICAgICAg
IH0pOworfQorCiB2b2lkIENhbGxMaW5rU3RhdHVzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNv
bnN0CiB7CiAgICAgaWYgKCFpc1NldCgpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJDYWxsVmFyaWFudC5oIgogI2luY2x1ZGUg
IkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJDb25jdXJyZW50SlNMb2NrLmgiCisjaW5jbHVkZSAi
RXhpdEZsYWcuaCIKKyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgogI2luY2x1ZGUgIkpTQ0pTVmFs
dWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC02MCwzOSArNjIsMzIgQEAgcHVibGljOgogICAg
IHsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoCi0g
ICAgICAgIENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIGNvbnN0IENhbGxMaW5r
SW5mb01hcCYpOwotCiAgICAgc3RydWN0IEV4aXRTaXRlRGF0YSB7Ci0gICAgICAgIGJvb2wgdGFr
ZXNTbG93UGF0aCB7IGZhbHNlIH07Ci0gICAgICAgIGJvb2wgYmFkRnVuY3Rpb24geyBmYWxzZSB9
OworICAgICAgICBFeGl0RmxhZyB0YWtlc1Nsb3dQYXRoOworICAgICAgICBFeGl0RmxhZyBiYWRG
dW5jdGlvbjsKICAgICB9OwogICAgIHN0YXRpYyBFeGl0U2l0ZURhdGEgY29tcHV0ZUV4aXRTaXRl
RGF0YShDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKICAgICAKKyAgICBzdGF0
aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29k
ZUluZGV4LCBjb25zdCBJQ1N0YXR1c01hcCYsIEV4aXRTaXRlRGF0YSk7CisKICNpZiBFTkFCTEUo
SklUKQogICAgIC8vIENvbXB1dGVzIHRoZSBzdGF0dXMgYXNzdW1pbmcgdGhhdCB3ZSBuZXZlciB0
b29rIHNsb3cgcGF0aCBhbmQgbmV2ZXIgcHJldmlvdXNseQogICAgIC8vIGV4aXRlZC4KICAgICBz
dGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcihjb25zdCBDb25jdXJyZW50SlNMb2NrZXIm
LCBDb2RlQmxvY2sqLCBDYWxsTGlua0luZm8mKTsKKyAgICAKKyAgICAvLyBDb21wdXRlcyB0aGUg
c3RhdHVzIGFjY291bnRpbmcgZm9yIGV4aXRzLgogICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBj
b21wdXRlRm9yKAotICAgICAgICBjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sq
LCBDYWxsTGlua0luZm8mLCBFeGl0U2l0ZURhdGEpOworICAgICAgICBjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImLCBDb2RlQmxvY2sqLCBDYWxsTGlua0luZm8mLCBFeGl0U2l0ZURhdGEsIEV4aXRp
bmdJbmxpbmVLaW5kID0gRXhpdEZyb21BbnlJbmxpbmVLaW5kKTsKICNlbmRpZgogICAgIAotICAg
IHR5cGVkZWYgSGFzaE1hcDxDb2RlT3JpZ2luLCBDYWxsTGlua1N0YXR1cywgQ29kZU9yaWdpbkFw
cHJveGltYXRlSGFzaD4gQ29udGV4dE1hcDsKLSAgICAKLSAgICAvLyBDb21wdXRlcyBhbGwgb2Yg
dGhlIHN0YXR1c2VzIG9mIHRoZSBERkcgY29kZSBibG9jay4gRG9lc24ndCBpbmNsdWRlIHN0YXR1
c2VzIHRoYXQgaGFkCi0gICAgLy8gbm8gaW5mb3JtYXRpb24uIEN1cnJlbnRseSB3ZSB1c2UgdGhp
cyB3aGVuIGNvbXBpbGluZyBGVEwgY29kZSwgdG8gZW5hYmxlIHBvbHl2YXJpYW50Ci0gICAgLy8g
aW5saW5pbmcuCi0gICAgc3RhdGljIHZvaWQgY29tcHV0ZURGR1N0YXR1c2VzKENvZGVCbG9jayog
ZGZnQ29kZUJsb2NrLCBDb250ZXh0TWFwJik7Ci0gICAgCi0gICAgLy8gSGVscGVyIHRoYXQgZmly
c3QgY29uc3VsdHMgdGhlIENvbnRleHRNYXAgYW5kIHRoZW4gZG9lcyBjb21wdXRlRm9yKCkuCiAg
ICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoCi0gICAgICAgIENvZGVCbG9jayos
IENvZGVPcmlnaW4sIGNvbnN0IENhbGxMaW5rSW5mb01hcCYsIGNvbnN0IENvbnRleHRNYXAmKTsK
KyAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgY29uc3QgSUNTdGF0dXNNYXAmLCBjb25z
dCBJQ1N0YXR1c0NvbnRleHRTdGFjayYpOwogICAgIAogICAgIHZvaWQgc2V0UHJvdmVuQ29uc3Rh
bnRDYWxsZWUoQ2FsbFZhcmlhbnQpOwogICAgIAogICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJl
dHVybiAhbV92YXJpYW50cy5pc0VtcHR5KCkgfHwgbV9jb3VsZFRha2VTbG93UGF0aDsgfQogICAg
IAotICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIWlzU2V0KCk7IH0KKyAgICBl
eHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gaXNTZXQoKTsgfQogICAgIAog
ICAgIGJvb2wgY291bGRUYWtlU2xvd1BhdGgoKSBjb25zdCB7IHJldHVybiBtX2NvdWxkVGFrZVNs
b3dQYXRoOyB9CiAgICAgCkBAIC0xMTAsNiArMTA1LDEwIEBAIHB1YmxpYzoKICAgICAKICAgICB1
bnNpZ25lZCBtYXhOdW1Bcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX21heE51bUFyZ3VtZW50
czsgfQogICAgIAorICAgIGJvb2wgZmluYWxpemUoKTsKKyAgICAKKyAgICB2b2lkIGZpbHRlcihK
U1ZhbHVlKTsKKyAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAK
IHByaXZhdGU6CkBAIC0xMjEsNiArMTIwLDggQEAgcHJpdmF0ZToKICAgICAgICAgY29uc3QgQ29u
Y3VycmVudEpTTG9ja2VyJiwgQ2FsbExpbmtJbmZvJik7CiAjZW5kaWYKICAgICAKKyAgICB2b2lk
IGFjY291bnRGb3JFeGl0cyhFeGl0U2l0ZURhdGEsIEV4aXRpbmdJbmxpbmVLaW5kKTsKKyAgICAK
ICAgICBDYWxsVmFyaWFudExpc3QgbV92YXJpYW50czsKICAgICBib29sIG1fY291bGRUYWtlU2xv
d1BhdGggeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1Byb3ZlZCB7IGZhbHNlIH07CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5jcHAJKHJldmlz
aW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNiArMzEsMzUgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKK2Jvb2wgQ2FsbFZhcmlhbnQ6OmZpbmFsaXplKCkKK3sKKyAgICBpZiAobV9jYWxsZWUg
JiYgIUhlYXA6OmlzTWFya2VkKG1fY2FsbGVlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIENhbGxWYXJpYW50OjpmaWx0ZXIoSlNWYWx1ZSB2YWx1
ZSkKK3sKKyAgICBpZiAoISp0aGlzKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKCFp
c0Nsb3N1cmVDYWxsKCkpIHsKKyAgICAgICAgaWYgKG5vbkV4ZWN1dGFibGVDYWxsZWUoKSAhPSB2
YWx1ZSkKKyAgICAgICAgICAgICp0aGlzID0gQ2FsbFZhcmlhbnQoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICAKKyAgICBpZiAoSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0R5bmFtaWND
YXN0PEpTRnVuY3Rpb24qPih2YWx1ZSkpIHsKKyAgICAgICAgaWYgKGZ1bmN0aW9uLT5leGVjdXRh
YmxlKCkgPT0gZXhlY3V0YWJsZSgpKQorICAgICAgICAgICAgKnRoaXMgPSBDYWxsVmFyaWFudChm
dW5jdGlvbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICp0aGlzID0gQ2FsbFZhcmlhbnQo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICAqdGhpcyA9IENhbGxWYXJpYW50
KCk7Cit9CisKIHZvaWQgQ2FsbFZhcmlhbnQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QK
IHsKICAgICBpZiAoISp0aGlzKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbFZhcmlhbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbFZhcmlhbnQuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzEsNyAr
NzEsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yISgp
IGNvbnN0IHsgcmV0dXJuICFtX2NhbGxlZTsgfQorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2wo
KSBjb25zdCB7IHJldHVybiAhIW1fY2FsbGVlOyB9CiAgICAgCiAgICAgLy8gSWYgdGhpcyB2YXJp
YW50IHJlZmVycyB0byBhIGZ1bmN0aW9uLCBjaGFuZ2UgaXQgdG8gcmVmZXIgdG8gaXRzIGV4ZWN1
dGFibGUuCiAgICAgQUxXQVlTX0lOTElORSBDYWxsVmFyaWFudCBkZXNwZWNpZmllZENsb3N1cmUo
KSBjb25zdApAQCAtMTM2LDYgKzEzNiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KICAgICAKKyAgICBib29sIGZpbmFsaXplKCk7CisgICAgCisgICAgdm9pZCBm
aWx0ZXIoSlNWYWx1ZSk7CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNv
bnN0OwogICAgIAogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlz
aW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsMjQgKzIzOCwyMCBAQCB2b2lkIENvZGVCbG9jazo6
ZHVtcEJ5dGVjb2RlKCkKIAogdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVh
bSYgb3V0KQogewotICAgIFN0dWJJbmZvTWFwIHN0dWJJbmZvczsKLSAgICBDYWxsTGlua0luZm9N
YXAgY2FsbExpbmtJbmZvczsKLSAgICBnZXRTdHViSW5mb01hcChzdHViSW5mb3MpOwotICAgIGdl
dENhbGxMaW5rSW5mb01hcChjYWxsTGlua0luZm9zKTsKLSAgICBCeXRlY29kZUR1bXBlcjxDb2Rl
QmxvY2s+OjpkdW1wQmxvY2sodGhpcywgaW5zdHJ1Y3Rpb25zKCksIG91dCwgc3R1YkluZm9zLCBj
YWxsTGlua0luZm9zKTsKKyAgICBJQ1N0YXR1c01hcCBzdGF0dXNNYXA7CisgICAgZ2V0SUNTdGF0
dXNNYXAoc3RhdHVzTWFwKTsKKyAgICBCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wQmxv
Y2sodGhpcywgaW5zdHJ1Y3Rpb25zKCksIG91dCwgc3RhdHVzTWFwKTsKIH0KIAotdm9pZCBDb2Rl
QmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiog
YmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiBzdHViSW5m
b3MsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYgY2FsbExpbmtJbmZvcykKK3ZvaWQgQ29kZUJsb2Nr
OjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2lu
LCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQog
ewotICAgIEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBCeXRlY29kZSh0aGlzLCBvdXQs
IGJlZ2luLCBpdCwgc3R1YkluZm9zLCBjYWxsTGlua0luZm9zKTsKKyAgICBCeXRlY29kZUR1bXBl
cjxDb2RlQmxvY2s+OjpkdW1wQnl0ZWNvZGUodGhpcywgb3V0LCBiZWdpbiwgaXQsIHN0YXR1c01h
cCk7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCi0gICAgUHJpbnRTdHJlYW0m
IG91dCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsCi0gICAgY29uc3QgU3R1YkluZm9NYXAmIHN0
dWJJbmZvcywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBjYWxsTGlua0luZm9zKQordm9pZCBDb2Rl
QmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBjb25zdCBJbnN0cnVj
dGlvbiogaXQgPSAmaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdOwotICAgIGR1bXBCeXRl
Y29kZShvdXQsIGluc3RydWN0aW9ucygpLmJlZ2luKCksIGl0LCBzdHViSW5mb3MsIGNhbGxMaW5r
SW5mb3MpOworICAgIGR1bXBCeXRlY29kZShvdXQsIGluc3RydWN0aW9ucygpLmJlZ2luKCksIGl0
LCBzdGF0dXNNYXApOwogfQogCiAjZGVmaW5lIEZPUl9FQUNIX01FTUJFUl9WRUNUT1IobWFjcm8p
IFwKQEAgLTExNjYsNiArMTE2Miw5IEBAIHZvaWQgQ29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0
aW9ucyhjb24KICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6
aW5nSklUKGppdFR5cGUoKSkpIHsKICAgICAgICAgREZHOjpDb21tb25EYXRhKiBkZmdDb21tb24g
PSBtX2ppdENvZGUtPmRmZ0NvbW1vbigpOworICAgICAgICAKKyAgICAgICAgZGZnQ29tbW9uLT5y
ZWNvcmRlZFN0YXR1c2VzLm1hcmtJZkNoZWFwKHZpc2l0b3IpOworICAgICAgICAKICAgICAgICAg
Zm9yIChhdXRvJiB3ZWFrUmVmZXJlbmNlIDogZGZnQ29tbW9uLT53ZWFrU3RydWN0dXJlUmVmZXJl
bmNlcykKICAgICAgICAgICAgIHdlYWtSZWZlcmVuY2UtPm1hcmtJZkNoZWFwKHZpc2l0b3IpOwog
CkBAIC0xMzk3LDU3ICsxMzk2LDQzIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0
aW9uYWxseSgKICAgICAgICAgZmluYWxpemVCYXNlbGluZUpJVElubGluZUNhY2hlcygpOwogI2Vu
ZGlmCiAKLSAgICBWTTo6U3BhY2VBbmRGaW5hbGl6ZXJTZXQ6OmZpbmFsaXplclNldEZvcigqc3Vi
c3BhY2UoKSkucmVtb3ZlKHRoaXMpOwotfQotCi12b2lkIENvZGVCbG9jazo6Z2V0U3R1YkluZm9N
YXAoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgU3R1YkluZm9NYXAmIHJlc3VsdCkKLXsKLSNp
ZiBFTkFCTEUoSklUKQotICAgIGlmIChKSVRDb2RlOjppc0pJVChqaXRUeXBlKCkpKQotICAgICAg
ICB0b0hhc2hNYXAobV9zdHViSW5mb3MsIGdldFN0cnVjdHVyZVN0dWJJbmZvQ29kZU9yaWdpbiwg
cmVzdWx0KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHJlc3VsdCk7Ci0jZW5kaWYKLX0KLQot
dm9pZCBDb2RlQmxvY2s6OmdldFN0dWJJbmZvTWFwKFN0dWJJbmZvTWFwJiByZXN1bHQpCi17Ci0g
ICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIGdldFN0dWJJbmZvTWFw
KGxvY2tlciwgcmVzdWx0KTsKLX0KLQotdm9pZCBDb2RlQmxvY2s6OmdldENhbGxMaW5rSW5mb01h
cChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDYWxsTGlua0luZm9NYXAmIHJlc3VsdCkKLXsK
LSNpZiBFTkFCTEUoSklUKQotICAgIGlmIChKSVRDb2RlOjppc0pJVChqaXRUeXBlKCkpKQotICAg
ICAgICB0b0hhc2hNYXAobV9jYWxsTGlua0luZm9zLCBnZXRDYWxsTGlua0luZm9Db2RlT3JpZ2lu
LCByZXN1bHQpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKLSNlbmRpZgotfQor
ICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0VHlwZSgpKSkgeworICAgICAgICBE
Rkc6OkNvbW1vbkRhdGEqIGRmZ0NvbW1vbiA9IG1faml0Q29kZS0+ZGZnQ29tbW9uKCk7CisgICAg
ICAgIGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5maW5hbGl6ZSgpOworICAgIH0KIAotdm9p
ZCBDb2RlQmxvY2s6OmdldENhbGxMaW5rSW5mb01hcChDYWxsTGlua0luZm9NYXAmIHJlc3VsdCkK
LXsKLSAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgZ2V0Q2FsbExp
bmtJbmZvTWFwKGxvY2tlciwgcmVzdWx0KTsKKyAgICBWTTo6U3BhY2VBbmRGaW5hbGl6ZXJTZXQ6
OmZpbmFsaXplclNldEZvcigqc3Vic3BhY2UoKSkucmVtb3ZlKHRoaXMpOwogfQogCi12b2lkIENv
ZGVCbG9jazo6Z2V0QnlWYWxJbmZvTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5VmFs
SW5mb01hcCYgcmVzdWx0KQordm9pZCBDb2RlQmxvY2s6OmdldElDU3RhdHVzTWFwKGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYsIElDU3RhdHVzTWFwJiByZXN1bHQpCiB7CiAjaWYgRU5BQkxFKEpJ
VCkKICAgICBpZiAoSklUQ29kZTo6aXNKSVQoaml0VHlwZSgpKSkgewotICAgICAgICBmb3IgKGF1
dG8qIGJ5VmFsSW5mbyA6IG1fYnlWYWxJbmZvcykKLSAgICAgICAgICAgIHJlc3VsdC5hZGQoQ29k
ZU9yaWdpbihieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXgpLCBieVZhbEluZm8pOworICAgICAgICBm
b3IgKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA6IG1fc3R1YkluZm9zKQorICAgICAgICAg
ICAgcmVzdWx0LmFkZChzdHViSW5mby0+Y29kZU9yaWdpbiwgSUNTdGF0dXMoKSkuaXRlcmF0b3It
PnZhbHVlLnN0dWJJbmZvID0gc3R1YkluZm87CisgICAgICAgIGZvciAoQ2FsbExpbmtJbmZvKiBj
YWxsTGlua0luZm8gOiBtX2NhbGxMaW5rSW5mb3MpCisgICAgICAgICAgICByZXN1bHQuYWRkKGNh
bGxMaW5rSW5mby0+Y29kZU9yaWdpbigpLCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUuY2Fs
bExpbmtJbmZvID0gY2FsbExpbmtJbmZvOworICAgICAgICBmb3IgKEJ5VmFsSW5mbyogYnlWYWxJ
bmZvIDogbV9iYWxWYWxJbmZvcykKKyAgICAgICAgICAgIHJlc3VsdC5hZGQoQ29kZU9yaWdpbihi
eVZhbEluZm8tPmJ5dGVjb2RlSW5kZXgpLCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUuYnlW
YWxJbmZvID0gYnlWYWxJbmZvOworICAgICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklU
KGppdFR5cGUoKSkpIHsKKyAgICAgICAgICAgIERGRzo6Q29tbW9uRGF0YSogZGZnQ29tbW9uID0g
bV9qaXRDb2RlLT5kZmdDb21tb24oKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcGFpciA6IGRm
Z0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5jYWxscykKKyAgICAgICAgICAgICAgICByZXN1bHQu
YWRkKHBhaXIuZmlyc3QsIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52YWx1ZS5jYWxsU3RhdHVzID0g
cGFpci5zZWNvbmQuZ2V0KCk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBkZmdDb21t
b24tPnJlY29yZGVkU3RhdHVzZXMuZ2V0cykKKyAgICAgICAgICAgICAgICByZXN1bHQuYWRkKHBh
aXIuZmlyc3QsIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52YWx1ZS5nZXRTdGF0dXMgPSBwYWlyLnNl
Y29uZC5nZXQoKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcGFpciA6IGRmZ0NvbW1vbi0+cmVj
b3JkZWRTdGF0dXNlcy5wdXRzKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQocGFpci5maXJz
dCwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLnB1dFN0YXR1cyA9IHBhaXIuc2Vjb25kLmdl
dCgpOworICAgICAgICB9CiAgICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsK
ICNlbmRpZgogfQogCi12b2lkIENvZGVCbG9jazo6Z2V0QnlWYWxJbmZvTWFwKEJ5VmFsSW5mb01h
cCYgcmVzdWx0KQordm9pZCBDb2RlQmxvY2s6OmdldElDU3RhdHVzTWFwKElDU3RhdHVzTWFwJiBy
ZXN1bHQpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIGdl
dEJ5VmFsSW5mb01hcChsb2NrZXIsIHJlc3VsdCk7CisgICAgZ2V0SUNTdGF0dXNNYXAobG9ja2Vy
LCByZXN1bHQpOwogfQogCiAjaWYgRU5BQkxFKEpJVCkKQEAgLTE1MTQsNyArMTQ5OSw3IEBAIHZv
aWQgQ29kZUJsb2NrOjpyZXNldEpJVERhdGEoKQogICAgIAogICAgIC8vIFdlIGNhbiBjbGVhciB0
aGVzZSBiZWNhdXNlIG5vIG90aGVyIHRocmVhZCB3aWxsIGhhdmUgcmVmZXJlbmNlcyB0byBhbnkg
c3R1YiBpbmZvcywgY2FsbAogICAgIC8vIGxpbmsgaW5mb3MsIG9yIGJ5IHZhbCBpbmZvcyBpZiB3
ZSBkb24ndCBoYXZlIEpJVCBjb2RlLiBBdHRlbXB0cyB0byBxdWVyeSB0aGVzZSBkYXRhCi0gICAg
Ly8gc3RydWN0dXJlcyB1c2luZyB0aGUgY29uY3VycmVudCBBUEkgKGdldFN0dWJJbmZvTWFwIGFu
ZCBmcmllbmRzKSB3aWxsIHJldHVybiBub3RoaW5nIGlmIHdlCisgICAgLy8gc3RydWN0dXJlcyB1
c2luZyB0aGUgY29uY3VycmVudCBBUEkgKGdldElDU3RhdHVzTWFwIGFuZCBmcmllbmRzKSB3aWxs
IHJldHVybiBub3RoaW5nIGlmIHdlCiAgICAgLy8gZG9uJ3QgaGF2ZSBKSVQgY29kZS4KICAgICBt
X3N0dWJJbmZvcy5jbGVhcigpOwogICAgIG1fY2FsbExpbmtJbmZvcy5jbGVhcigpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjMy
MjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiRXhwcmVzc2lvblJhbmdlSW5m
by5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIkhhbmRsZXJJ
bmZvLmgiCisjaW5jbHVkZSAiSUNTdGF0dXNNYXAuaCIKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5o
IgogI2luY2x1ZGUgIkpJVENvZGUuaCIKICNpbmNsdWRlICJKSVRDb2RlTWFwLmgiCkBAIC05Niw4
ICs5Nyw2IEBAIGVudW0gY2xhc3MgQWNjZXNzVHlwZSA6IGludDhfdDsKIAogc3RydWN0IEFyaXRo
UHJvZmlsZTsKIAotdHlwZWRlZiBIYXNoTWFwPENvZGVPcmlnaW4sIFN0cnVjdHVyZVN0dWJJbmZv
KiwgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFzaD4gU3R1YkluZm9NYXA7Ci0KIGVudW0gUmVvcHRp
bWl6YXRpb25Nb2RlIHsgRG9udENvdW50UmVvcHRpbWl6YXRpb24sIENvdW50UmVvcHRpbWl6YXRp
b24gfTsKIAogY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CkBAIC0xOTYsOCArMTk1
LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBkdW1wQnl0ZWNvZGUoKTsKICAgICB2b2lkIGR1bXBC
eXRlY29kZShQcmludFN0cmVhbSYpOwotICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFt
JiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwg
Y29uc3QgU3R1YkluZm9NYXAmID0gU3R1YkluZm9NYXAoKSwgY29uc3QgQ2FsbExpbmtJbmZvTWFw
JiA9IENhbGxMaW5rSW5mb01hcCgpKTsKLSAgICB2b2lkIGR1bXBCeXRlY29kZShQcmludFN0cmVh
bSYgb3V0LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgU3R1YkluZm9NYXAmID0gU3R1
YkluZm9NYXAoKSwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiA9IENhbGxMaW5rSW5mb01hcCgpKTsK
KyAgICB2b2lkIGR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlv
biogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJiA9IElD
U3RhdHVzTWFwKCkpOworICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBJQ1N0YXR1c01hcCYgPSBJQ1N0YXR1c01hcCgp
KTsKIAogICAgIHZvaWQgZHVtcEV4Y2VwdGlvbkhhbmRsZXJzKFByaW50U3RyZWFtJik7CiAgICAg
dm9pZCBwcmludFN0cnVjdHVyZXMoUHJpbnRTdHJlYW0mLCBjb25zdCBJbnN0cnVjdGlvbiopOwpA
QCAtMjM3LDE0ICsyMzYsOCBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiBieXRlY29kZU9mZnNldEZyb21DYWxsU2l0ZUluZGV4KENhbGxTaXRlSW5kZXgpOwogCi0gICAg
dm9pZCBnZXRTdHViSW5mb01hcChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBTdHViSW5mb01h
cCYgcmVzdWx0KTsKLSAgICB2b2lkIGdldFN0dWJJbmZvTWFwKFN0dWJJbmZvTWFwJiByZXN1bHQp
OwotICAgIAotICAgIHZvaWQgZ2V0Q2FsbExpbmtJbmZvTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xv
Y2tlciYsIENhbGxMaW5rSW5mb01hcCYgcmVzdWx0KTsKLSAgICB2b2lkIGdldENhbGxMaW5rSW5m
b01hcChDYWxsTGlua0luZm9NYXAmIHJlc3VsdCk7Ci0KLSAgICB2b2lkIGdldEJ5VmFsSW5mb01h
cChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBCeVZhbEluZm9NYXAmIHJlc3VsdCk7Ci0gICAg
dm9pZCBnZXRCeVZhbEluZm9NYXAoQnlWYWxJbmZvTWFwJiByZXN1bHQpOworICAgIHZvaWQgZ2V0
SUNTdGF0dXNNYXAoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgSUNTdGF0dXNNYXAmIHJlc3Vs
dCk7CisgICAgdm9pZCBnZXRJQ1N0YXR1c01hcChJQ1N0YXR1c01hcCYgcmVzdWx0KTsKICAgICAK
ICNpZiBFTkFCTEUoSklUKQogICAgIEpJVEFkZElDKiBhZGRKSVRBZGRJQyhBcml0aFByb2ZpbGUq
LCBJbnN0cnVjdGlvbiopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVPcmlnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlT3JpZ2luLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDYsNyArNDYs
NyBAQCB1bnNpZ25lZCBDb2RlT3JpZ2luOjppbmxpbmVEZXB0aCgpIGNvbnN0CiAgICAgcmV0dXJu
IGlubGluZURlcHRoRm9yQ2FsbEZyYW1lKGlubGluZUNhbGxGcmFtZSk7CiB9CiAKLWJvb2wgQ29k
ZU9yaWdpbjo6aXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhjb25zdCBDb2RlT3JpZ2luJiBvdGhlcikg
Y29uc3QKK2Jvb2wgQ29kZU9yaWdpbjo6aXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhjb25zdCBDb2Rl
T3JpZ2luJiBvdGhlciwgQ29kZUJsb2NrKiB0ZXJtaW5hbCkgY29uc3QKIHsKICAgICBDb2RlT3Jp
Z2luIGEgPSAqdGhpczsKICAgICBDb2RlT3JpZ2luIGIgPSBvdGhlcjsKQEAgLTY4LDEwICs2OCwx
MyBAQCBib29sIENvZGVPcmlnaW46OmlzQXBwcm94aW1hdGVseUVxdWFsVG8oCiAgICAgICAgIGlm
IChhLmJ5dGVjb2RlSW5kZXggIT0gYi5ieXRlY29kZUluZGV4KQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAKLSAgICAgICAgaWYgKCghIWEuaW5saW5lQ2FsbEZyYW1lKSAhPSAo
ISFiLmlubGluZUNhbGxGcmFtZSkpCisgICAgICAgIGJvb2wgYUhhc0lubGluZUNhbGxGcmFtZSA9
ICEhYS5pbmxpbmVDYWxsRnJhbWUKKyAgICAgICAgICAgICYmIGEuaW5saW5lQ2FsbEZyYW1lLT5i
YXNlbGluZUNvZGVCbG9jay5nZXQoKSAhPSB0ZXJtaW5hbDsKKyAgICAgICAgYm9vbCBiSGFzSW5s
aW5lQ2FsbEZyYW1lID0gISFiLmlubGluZUNhbGxGcmFtZTsKKyAgICAgICAgaWYgKGFIYXNJbmxp
bmVDYWxsRnJhbWUgIT0gYkhhc0lubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgCi0gICAgICAgIGlmICghYS5pbmxpbmVDYWxsRnJhbWUpCisgICAgICAg
IGlmICghYUhhc0lubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICAKICAgICAgICAgaWYgKGEuaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay5n
ZXQoKSAhPSBiLmlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkpCkBAIC04
Miw3ICs4NSw3IEBAIGJvb2wgQ29kZU9yaWdpbjo6aXNBcHByb3hpbWF0ZWx5RXF1YWxUbygKICAg
ICB9CiB9CiAKLXVuc2lnbmVkIENvZGVPcmlnaW46OmFwcHJveGltYXRlSGFzaCgpIGNvbnN0Cit1
bnNpZ25lZCBDb2RlT3JpZ2luOjphcHByb3hpbWF0ZUhhc2goQ29kZUJsb2NrKiB0ZXJtaW5hbCkg
Y29uc3QKIHsKICAgICBpZiAoIWlzU2V0KCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtOTcsNiAr
MTAwLDkgQEAgdW5zaWduZWQgQ29kZU9yaWdpbjo6YXBwcm94aW1hdGVIYXNoKCkgYwogICAgICAg
ICBpZiAoIWNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQogICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICAgICAgCisgICAgICAgIGlmIChjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+
YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkgPT0gdGVybWluYWwpCisgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgICAgICAKICAgICAgICAgcmVzdWx0ICs9IFdURjo6UHRySGFzaDxKU0NlbGwq
Pjo6aGFzaChjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2suZ2V0
KCkpOwogICAgICAgICAKICAgICAgICAgY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4uaW5saW5lQ2Fs
bEZyYW1lLT5kaXJlY3RDYWxsZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZU9yaWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlT3JpZ2luLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05NCw5ICs5NCw5
IEBAIHN0cnVjdCBDb2RlT3JpZ2luIHsKICAgICAKICAgICAvLyBUaGlzIGNoZWNrcyBpZiB0aGUg
dHdvIGNvZGUgb3JpZ2lucyBjb3JyZXNwb25kIHRvIHRoZSBzYW1lIHN0YWNrIHRyYWNlIHNuaXBw
ZXRzLAogICAgIC8vIGJ1dCBpZ25vcmUgd2hldGhlciB0aGUgSW5saW5lQ2FsbEZyYW1lJ3MgYXJl
IGlkZW50aWNhbC4KLSAgICBib29sIGlzQXBwcm94aW1hdGVseUVxdWFsVG8oY29uc3QgQ29kZU9y
aWdpbiYgb3RoZXIpIGNvbnN0OworICAgIGJvb2wgaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhjb25z
dCBDb2RlT3JpZ2luJiBvdGhlciwgQ29kZUJsb2NrKiB0ZXJtaW5hbCA9IG51bGxwdHIpIGNvbnN0
OwogICAgIAotICAgIHVuc2lnbmVkIGFwcHJveGltYXRlSGFzaCgpIGNvbnN0OworICAgIHVuc2ln
bmVkIGFwcHJveGltYXRlSGFzaChDb2RlQmxvY2sqIHRlcm1pbmFsID0gbnVsbHB0cikgY29uc3Q7
CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rpb24+CiAgICAgdm9pZCB3YWxrVXBJbmxp
bmVTdGFjayhjb25zdCBGdW5jdGlvbiYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Myw4ICs0MywxMCBAQCBFeGl0UHJvZmlsZTo6fkV4aXRQcm9maWxlKCkgeyB9
CiAKIGJvb2wgRXhpdFByb2ZpbGU6OmFkZChDb2RlQmxvY2sqIG93bmVyLCBjb25zdCBGcmVxdWVu
dEV4aXRTaXRlJiBzaXRlKQogeworICAgIFJFTEVBU0VfQVNTRVJUKHNpdGUuaml0VHlwZSgpICE9
IEV4aXRGcm9tQW55dGhpbmcpOworICAgIFJFTEVBU0VfQVNTRVJUKHNpdGUuaW5saW5lS2luZCgp
ICE9IEV4aXRGcm9tQW55SW5saW5lS2luZCk7CisKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9j
a2VyKG93bmVyLT51bmxpbmtlZENvZGVCbG9jaygpLT5tX2xvY2spOwotICAgIEFTU0VSVChzaXRl
LmppdFR5cGUoKSAhPSBFeGl0RnJvbUFueXRoaW5nKTsKIAogICAgIENPREVCTE9DS19MT0dfRVZF
TlQob3duZXIsICJmcmVxdWVudEV4aXQiLCAoc2l0ZSkpOwogICAgIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgJKHJldmlzaW9uIDIz
MjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MS0yMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ29u
Y3VycmVudEpTTG9jay5oIgogI2luY2x1ZGUgIkV4aXRLaW5kLmgiCisjaW5jbHVkZSAiRXhpdGlu
Z0lubGluZUtpbmQuaCIKICNpbmNsdWRlICJFeGl0aW5nSklUVHlwZS5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNDEsNiArNDIsNyBAQCBw
dWJsaWM6CiAgICAgICAgIDogbV9ieXRlY29kZU9mZnNldCgwKSAvLyAwID0gZW1wdHkgdmFsdWUK
ICAgICAgICAgLCBtX2tpbmQoRXhpdEtpbmRVbnNldCkKICAgICAgICAgLCBtX2ppdFR5cGUoRXhp
dEZyb21Bbnl0aGluZykKKyAgICAgICAgLCBtX2lubGluZUtpbmQoRXhpdEZyb21BbnlJbmxpbmVL
aW5kKQogICAgIHsKICAgICB9CiAgICAgCkBAIC00OCwxMyArNTAsMTUgQEAgcHVibGljOgogICAg
ICAgICA6IG1fYnl0ZWNvZGVPZmZzZXQoMSkgLy8gMSA9IGRlbGV0ZWQgdmFsdWUKICAgICAgICAg
LCBtX2tpbmQoRXhpdEtpbmRVbnNldCkKICAgICAgICAgLCBtX2ppdFR5cGUoRXhpdEZyb21Bbnl0
aGluZykKKyAgICAgICAgLCBtX2lubGluZUtpbmQoRXhpdEZyb21BbnlJbmxpbmVLaW5kKQogICAg
IHsKICAgICB9CiAgICAgCi0gICAgZXhwbGljaXQgRnJlcXVlbnRFeGl0U2l0ZSh1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCwgRXhpdEtpbmQga2luZCwgRXhpdGluZ0pJVFR5cGUgaml0VHlwZSA9IEV4
aXRGcm9tQW55dGhpbmcpCisgICAgZXhwbGljaXQgRnJlcXVlbnRFeGl0U2l0ZSh1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCwgRXhpdEtpbmQga2luZCwgRXhpdGluZ0pJVFR5cGUgaml0VHlwZSA9IEV4
aXRGcm9tQW55dGhpbmcsIEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQgPSBFeGl0RnJvbUFu
eUlubGluZUtpbmQpCiAgICAgICAgIDogbV9ieXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkK
ICAgICAgICAgLCBtX2tpbmQoa2luZCkKICAgICAgICAgLCBtX2ppdFR5cGUoaml0VHlwZSkKKyAg
ICAgICAgLCBtX2lubGluZUtpbmQoaW5saW5lS2luZCkKICAgICB7CiAgICAgICAgIGlmIChtX2tp
bmQgPT0gQXJndW1lbnRzRXNjYXBlZCkgewogICAgICAgICAgICAgLy8gQ291bnQgdGhpcyBvbmUg
Z2xvYmFsbHkuIEl0IGRvZXNuJ3QgbWF0dGVyIHdoZXJlIGluIHRoZSBjb2RlIGJsb2NrIHRoZSBh
cmd1bWVudHMgZXhjYXBlZDsKQEAgLTY1LDEwICs2OSwxMSBAQCBwdWJsaWM6CiAgICAgCiAgICAg
Ly8gVXNlIHRoaXMgY29uc3RydWN0b3IgaWYgeW91IHdpc2ggZm9yIHRoZSBleGl0IHNpdGUgdG8g
YmUgY291bnRlZCBnbG9iYWxseSB3aXRoaW4gaXRzCiAgICAgLy8gY29kZSBibG9jay4KLSAgICBl
eHBsaWNpdCBGcmVxdWVudEV4aXRTaXRlKEV4aXRLaW5kIGtpbmQsIEV4aXRpbmdKSVRUeXBlIGpp
dFR5cGUgPSBFeGl0RnJvbUFueXRoaW5nKQorICAgIGV4cGxpY2l0IEZyZXF1ZW50RXhpdFNpdGUo
RXhpdEtpbmQga2luZCwgRXhpdGluZ0pJVFR5cGUgaml0VHlwZSA9IEV4aXRGcm9tQW55dGhpbmcs
IEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQgPSBFeGl0RnJvbUFueUlubGluZUtpbmQpCiAg
ICAgICAgIDogbV9ieXRlY29kZU9mZnNldCgwKQogICAgICAgICAsIG1fa2luZChraW5kKQogICAg
ICAgICAsIG1faml0VHlwZShqaXRUeXBlKQorICAgICAgICAsIG1faW5saW5lS2luZChpbmxpbmVL
aW5kKQogICAgIHsKICAgICB9CiAgICAgCkBAIC04MSw3ICs4Niw4IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIHJldHVybiBtX2J5dGVjb2RlT2Zmc2V0ID09IG90aGVyLm1fYnl0ZWNvZGVPZmZz
ZXQKICAgICAgICAgICAgICYmIG1fa2luZCA9PSBvdGhlci5tX2tpbmQKLSAgICAgICAgICAgICYm
IG1faml0VHlwZSA9PSBvdGhlci5tX2ppdFR5cGU7CisgICAgICAgICAgICAmJiBtX2ppdFR5cGUg
PT0gb3RoZXIubV9qaXRUeXBlCisgICAgICAgICAgICAmJiBtX2lubGluZUtpbmQgPT0gb3RoZXIu
bV9pbmxpbmVLaW5kOwogICAgIH0KICAgICAKICAgICBib29sIHN1YnN1bWVzKGNvbnN0IEZyZXF1
ZW50RXhpdFNpdGUmIG90aGVyKSBjb25zdApAQCAtOTAsMTkgKzk2LDI0IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKG1fa2luZCAhPSBvdGhlci5tX2tp
bmQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChtX2ppdFR5cGUgPT0g
RXhpdEZyb21Bbnl0aGluZykKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICByZXR1
cm4gbV9qaXRUeXBlID09IG90aGVyLm1faml0VHlwZTsKKyAgICAgICAgaWYgKG1faml0VHlwZSAh
PSBFeGl0RnJvbUFueXRoaW5nCisgICAgICAgICAgICAmJiBtX2ppdFR5cGUgIT0gb3RoZXIubV9q
aXRUeXBlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAobV9pbmxpbmVL
aW5kICE9IEV4aXRGcm9tQW55SW5saW5lS2luZAorICAgICAgICAgICAgJiYgbV9pbmxpbmVLaW5k
ICE9IG90aGVyLm1faW5saW5lS2luZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAog
ICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6aW50SGFzaChtX2J5dGVjb2RlT2Zmc2V0KSArIG1f
a2luZCArIHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RXhpdGluZ0pJVFR5cGU+
PihtX2ppdFR5cGUpICogNzsKKyAgICAgICAgcmV0dXJuIFdURjo6aW50SGFzaChtX2J5dGVjb2Rl
T2Zmc2V0KSArIG1fa2luZCArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2ppdFR5cGUpICogNyAr
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2lubGluZUtpbmQpICogMTE7CiAgICAgfQogICAgIAog
ICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9ieXRlY29kZU9m
ZnNldDsgfQogICAgIEV4aXRLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KICAg
ICBFeGl0aW5nSklUVHlwZSBqaXRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9qaXRUeXBlOyB9Cisg
ICAgRXhpdGluZ0lubGluZUtpbmQgaW5saW5lS2luZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5l
S2luZDsgfQogICAgIAogICAgIEZyZXF1ZW50RXhpdFNpdGUgd2l0aEpJVFR5cGUoRXhpdGluZ0pJ
VFR5cGUgaml0VHlwZSkgY29uc3QKICAgICB7CkBAIC0xMTEsNiArMTIyLDEzIEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBGcmVxdWVudEV4aXRTaXRlIHdp
dGhJbmxpbmVLaW5kKEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQpIGNvbnN0CisgICAgewor
ICAgICAgICBGcmVxdWVudEV4aXRTaXRlIHJlc3VsdCA9ICp0aGlzOworICAgICAgICByZXN1bHQu
bV9pbmxpbmVLaW5kID0gaW5saW5lS2luZDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisKICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKICAgICB7CiAgICAg
ICAgIHJldHVybiBtX2tpbmQgPT0gRXhpdEtpbmRVbnNldCAmJiBtX2J5dGVjb2RlT2Zmc2V0OwpA
QCAtMTIyLDYgKzE0MCw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9ieXRlY29kZU9mZnNl
dDsKICAgICBFeGl0S2luZCBtX2tpbmQ7CiAgICAgRXhpdGluZ0pJVFR5cGUgbV9qaXRUeXBlOwor
ICAgIEV4aXRpbmdJbmxpbmVLaW5kIG1faW5saW5lS2luZDsKIH07CiAKIHN0cnVjdCBGcmVxdWVu
dEV4aXRTaXRlSGFzaCB7CkBAIC0xOTIsMTAgKzIxMSwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBo
YXNFeGl0U2l0ZShjb25zdCBGcmVxdWVudEV4aXRTaXRlJiBzaXRlKSBjb25zdAogICAgIHsKICAg
ICAgICAgaWYgKHNpdGUuaml0VHlwZSgpID09IEV4aXRGcm9tQW55dGhpbmcpIHsKLSAgICAgICAg
ICAgIHJldHVybiBoYXNFeGl0U2l0ZShzaXRlLndpdGhKSVRUeXBlKEV4aXRGcm9tREZHKSkKLSAg
ICAgICAgICAgICAgICB8fCBoYXNFeGl0U2l0ZShzaXRlLndpdGhKSVRUeXBlKEV4aXRGcm9tRlRM
KSk7CisgICAgICAgICAgICByZXR1cm4gaGFzRXhpdFNpdGVXaXRoU3BlY2lmaWNKSVRUeXBlKHNp
dGUud2l0aEpJVFR5cGUoRXhpdEZyb21ERkcpKQorICAgICAgICAgICAgICAgIHx8IGhhc0V4aXRT
aXRlV2l0aFNwZWNpZmljSklUVHlwZShzaXRlLndpdGhKSVRUeXBlKEV4aXRGcm9tRlRMKSk7CiAg
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1fZnJlcXVlbnRFeGl0U2l0ZXMuZmluZChzaXRlKSAh
PSBtX2ZyZXF1ZW50RXhpdFNpdGVzLmVuZCgpOworICAgICAgICByZXR1cm4gaGFzRXhpdFNpdGVX
aXRoU3BlY2lmaWNKSVRUeXBlKHNpdGUpOwogICAgIH0KICAgICAKICAgICBib29sIGhhc0V4aXRT
aXRlKEV4aXRLaW5kIGtpbmQpIGNvbnN0CkBAIC0yMDgsNiArMjI3LDIwIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIGhhc0V4aXRTaXRlKEZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwg
a2luZCkpOwogICAgIH0KIHByaXZhdGU6CisgICAgYm9vbCBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZp
Y0pJVFR5cGUoY29uc3QgRnJlcXVlbnRFeGl0U2l0ZSYgc2l0ZSkgY29uc3QKKyAgICB7CisgICAg
ICAgIGlmIChzaXRlLmlubGluZUtpbmQoKSA9PSBFeGl0RnJvbUFueUlubGluZUtpbmQpIHsKKyAg
ICAgICAgICAgIHJldHVybiBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0lubGluZUtpbmQoc2l0ZS53
aXRoSW5saW5lS2luZChFeGl0RnJvbU5vdElubGluZWQpKQorICAgICAgICAgICAgICAgIHx8IGhh
c0V4aXRTaXRlV2l0aFNwZWNpZmljSW5saW5lS2luZChzaXRlLndpdGhJbmxpbmVLaW5kKEV4aXRG
cm9tSW5saW5lZCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBoYXNFeGl0U2l0ZVdpdGhT
cGVjaWZpY0lubGluZUtpbmQoc2l0ZSk7CisgICAgfQorICAgIAorICAgIGJvb2wgaGFzRXhpdFNp
dGVXaXRoU3BlY2lmaWNJbmxpbmVLaW5kKGNvbnN0IEZyZXF1ZW50RXhpdFNpdGUmIHNpdGUpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9mcmVxdWVudEV4aXRTaXRlcy5maW5kKHNpdGUp
ICE9IG1fZnJlcXVlbnRFeGl0U2l0ZXMuZW5kKCk7CisgICAgfQorICAgIAogICAgIEhhc2hTZXQ8
RnJlcXVlbnRFeGl0U2l0ZT4gbV9mcmVxdWVudEV4aXRTaXRlczsKIH07CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0RmxhZy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0RmxhZy5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0RmxhZy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI3ByYW1nYSBvbmNlCisKKyNpbmNsdWRlICJFeGl0aW5nSW5saW5lS2luZC5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhpdEZsYWcgeworcHVibGljOgorICAgIEV4aXRGbGFn
KCkgeyB9CisgICAgCisgICAgRXhpdEZsYWcoYm9vbCB2YWx1ZSwgRXhpdGluZ0lubGluZUtpbmQg
aW5saW5lS2luZCkKKyAgICB7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIAorICAgICAgICBzd2l0Y2ggKGlubGluZUtpbmQpIHsKKyAgICAgICAgY2Fz
ZSBFeGl0RnJvbUFueUlubGluZUtpbmQ6CisgICAgICAgICAgICBtX2JpdHMgPSB0cnVlTm90SW5s
aW5lZCB8IHRydWVJbmxpbmVkOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRXhp
dEZyb21Ob3RJbmxpbmVkOgorICAgICAgICAgICAgbV9iaXRzID0gdHJ1ZU5vdElubGluZWQ7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFeGl0RnJvbUlubGluZWQ6CisgICAgICAg
ICAgICBtX2JpdHMgPSB0cnVlSW5saW5lZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgfQorICAgIAorICAgIEV4aXRGbGFnIG9wZXJhdG9yfChjb25zdCBFeGl0RmxhZyYgb3Ro
ZXIpIGNvbnN0CisgICAgeworICAgICAgICBFeGl0RmxhZyByZXN1bHQ7CisgICAgICAgIHJlc3Vs
dC5tX2JpdHMgPSBtX2JpdHMgfCBvdGhlci5tX2JpdHM7CisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfQorICAgIAorICAgIEV4aXRGbGFnJiBvcGVyYXRvcnw9KGNvbnN0IEV4aXRGbGFnJiBv
dGhlcikKKyAgICB7CisgICAgICAgICp0aGlzID0gKnRoaXMgfCBvdGhlcjsKKyAgICB9CisgICAg
CisgICAgRXhpdEZsYWcgb3BlcmF0b3ImKGNvbnN0IEV4aXRGbGFnJiBvdGhlcikgY29uc3QKKyAg
ICB7CisgICAgICAgIEV4aXRGbGFnIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1fYml0cyA9IG1f
Yml0cyAmIG90aGVyLm1fYml0czsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAg
CisgICAgRXhpdEZsYWcmIG9wZXJhdG9yJj0oY29uc3QgRXhpdEZsYWcmIG90aGVyKQorICAgIHsK
KyAgICAgICAgKnRoaXMgPSAqdGhpcyAmIG90aGVyOworICAgIH0KKyAgICAKKyAgICBleHBsaWNp
dCBvcGVyYXRvciBib29sKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhIW1fYml0czsK
KyAgICB9CisgICAgCisgICAgYm9vbCBpc1NldChFeGl0aW5nSW5saW5lS2luZCBpbmxpbmVLaW5k
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICp0aGlzICYgRXhpdEZsYWcodHJ1ZSwgaW5s
aW5lS2luZCk7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3RleHByIHVp
bnQ4X3QgdHJ1ZU5vdElubGluZWQgPSAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCB0
cnVlSW5saW5lZCA9IDI7CisgICAgCisgICAgdWludDhfdCBtX2JpdHMgeyAwIH07Cit9OworCit9
IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V4aXRpbmdJbmxpbmVLaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0aW5nSW5saW5lS2luZC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRXhpdGluZ0lubGlu
ZUtpbmQuaCIKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgV1RG
IHsKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwordm9pZCBwcmludEludGVybmFsKFByaW50U3Ry
ZWFtJiBvdXQsIEV4aXRpbmdJbmxpbmVLaW5kIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7
CisgICAgY2FzZSBFeGl0RnJvbUFueUlubGluZUtpbmQ6CisgICAgICAgIG91dC5wcmludCgiRnJv
bUFueUlubGluZUtpbmQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRXhpdEZyb21Ob3RJ
bmxpbmVkOgorICAgICAgICBvdXQucHJpbnQoIkZyb21Ob3RJbmxpbmVkIik7CisgICAgICAgIHJl
dHVybjsKKyAgICBjYXNlIEV4aXRGcm9tSW5saW5lZDoKKyAgICAgICAgb3V0LnByaW50KCJGcm9t
SW5saW5lZCIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtp
bmQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgSlND
IHsKKworZW51bSBFeGl0aW5nSW5saW5lS2luZCA6IHVpbnQ4X3QgeworICAgIEV4aXRGcm9tQW55
SW5saW5lS2luZCwKKyAgICBFeGl0RnJvbU5vdElubGluZWQsCisgICAgRXhpdEZyb21JbmxpbmVk
LAorfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBQ
cmludFN0cmVhbTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6RXhpdGlu
Z0lubGluZUtpbmQpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9u
IDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsMTIgKzUyLDE3IEBAIGJvb2wgR2V0QnlJZFN0YXR1
czo6YXBwZW5kVmFyaWFudChjb25zdCAKIH0KIAogI2lmIEVOQUJMRShERkdfSklUKQotYm9vbCBH
ZXRCeUlkU3RhdHVzOjpoYXNFeGl0U2l0ZShDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgpCitFeGl0RmxhZyBHZXRCeUlkU3RhdHVzOjpoYXNFeGl0U2l0ZShD
b2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAg
VW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gcHJvZmlsZWRCbG9jay0+dW5s
aW5rZWRDb2RlQmxvY2soKTsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHVubGlua2Vk
Q29kZUJsb2NrLT5tX2xvY2spOwotICAgIHJldHVybiB1bmxpbmtlZENvZGVCbG9jay0+aGFzRXhp
dFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkQ2Fj
aGUpKQotICAgICAgICB8fCB1bmxpbmtlZENvZGVCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBE
Rkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkQ29uc3RhbnRDYWNoZSkpOwor
ICAgIGF1dG8gZXhpdEZsYWcgPSBbJl0gKEV4aXRLaW5kIGV4aXRLaW5kKSAtPiBFeGl0RmxhZyB7
CisgICAgICAgIGF1dG8gd2l0aElubGluZWQgPSBbJl0gKEV4aXRpbmdJbmxpbmVkS2luZCBpbmxp
bmVLaW5kKSAtPiBFeGl0RmxhZyB7CisgICAgICAgICAgICByZXR1cm4gRXhpdEZsYWcodW5saW5r
ZWRDb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5
dGVjb2RlSW5kZXgsIGV4aXRLaW5kLCBFeGl0RnJvbUFueXRoaW5nLCBpbmxpbmVLaW5kKSksIGlu
bGluZUtpbmQpOworICAgICAgICB9OworICAgICAgICByZXR1cm4gd2l0aElubGluZWQoRXhpdEZy
b21Ob3RJbmxpbmVkKSB8IHdpdGhJbmxpbmVkKEV4aXRGcm9tSW5saW5lZCk7CisgICAgfTsKKyAg
ICByZXR1cm4gZXhpdEZsYWcoQmFkQ2FjaGUpIHwgZXhpdEZsYWcoQmFkQ29uc3RhbnRDYWNoZSk7
CiB9CiAjZW5kaWYKIApAQCAtMTA1LDcgKzExMCw3IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0
YXR1czo6Y29tcHV0ZUZyb20KICAgICB9CiB9CiAKLUdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1
czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIFN0dWJJbmZvTWFwJiBtYXAs
IHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitHZXRCeUlk
U3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2Nr
LCBJQ1N0YXR1c01hcCYgbWFwLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkLCBFeGl0RmxhZyBkaWRFeGl0LCBDYWxsTGlua1N0YXR1czo6RXhpdFNpdGVEYXRh
IGNhbGxFeGl0U2l0ZURhdGEpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihwcm9m
aWxlZEJsb2NrLT5tX2xvY2spOwogCkBAIC0xMTMsMTIgKzExOCwxMSBAQCBHZXRCeUlkU3RhdHVz
IEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBy
ZXN1bHQgPSBjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygKLSAgICAg
ICAgbG9ja2VyLCBwcm9maWxlZEJsb2NrLCBtYXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRl
eCkpLCB1aWQsCi0gICAgICAgIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKHBy
b2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpKTsKKyAgICAgICAgbG9ja2VyLCBwcm9maWxlZEJs
b2NrLCBtYXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkpLnN0dWJJbmZvLCB1aWQsCisg
ICAgICAgIGNhbGxFeGl0U2l0ZURhdGEpOwogICAgIAotICAgIGlmICghcmVzdWx0LnRha2VzU2xv
d1BhdGgoKQotICAgICAgICAmJiBoYXNFeGl0U2l0ZShwcm9maWxlZEJsb2NrLCBieXRlY29kZUlu
ZGV4KSkKLSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMocmVzdWx0Lm1ha2VzQ2FsbHMoKSA/
IE1ha2VzQ2FsbHMgOiBUYWtlc1Nsb3dQYXRoLCB0cnVlKTsKKyAgICBpZiAoZGlkRXhpdCkKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdC5zbG93VmVyc2lvbigpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0obWFwKTsKICNlbmRpZgpAQCAtMTM3LDcgKzE0MSw3IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJ
ZFN0YXR1czo6Y29tcHV0ZUZvclMKICAgICAgICAgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVFeGl0
U2l0ZURhdGEocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KSk7CiAKICAg
ICBpZiAoIXJlc3VsdC50YWtlc1Nsb3dQYXRoKCkgJiYgR2V0QnlJZFN0YXR1czo6aGFzRXhpdFNp
dGUocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KSkKLSAgICAgICAgcmV0
dXJuIEdldEJ5SWRTdGF0dXMocmVzdWx0Lm1ha2VzQ2FsbHMoKSA/IEdldEJ5SWRTdGF0dXM6Ok1h
a2VzQ2FsbHMgOiBHZXRCeUlkU3RhdHVzOjpUYWtlc1Nsb3dQYXRoLCB0cnVlKTsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdC5zbG93VmVyc2lvbigpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5k
aWYgLy8gRU5BQkxFKERGR19KSVQpCkBAIC0xNzAsOCArMTc0LDExIEBAIEdldEJ5SWRTdGF0dXMg
R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclMKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBp
ZiAoc3R1YkluZm8tPnRvb2tTbG93UGF0aCkKKyAgICBpZiAoc3R1YkluZm8tPnRvb2tTbG93UGF0
aCkgeworICAgICAgICBpZiAoc3R1YkluZm8tPmNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCA9PSAy
MCkKKyAgICAgICAgICAgIGRhdGFMb2coIlN0dWIgaW5mbyB0b29rIHNsb3cgcGF0aC5cbiIpOwog
ICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhzbG93UGF0aFN0YXRlKTsKKyAgICB9CiAgICAg
CiAgICAgLy8gRmluYWxseSBmaWd1cmUgb3V0IGlmIHdlIGNhbiBkZXJpdmUgYW4gYWNjZXNzIHN0
cmF0ZWd5LgogICAgIEdldEJ5SWRTdGF0dXMgcmVzdWx0OwpAQCAtMzE0LDQwICszMjEsMjkgQEAg
R2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yUwogI2VuZGlmIC8vIEVOQUJM
RShKSVQpCiAKIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKLSAgICBD
b2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIENvZGVCbG9jayogZGZnQmxvY2ssIFN0dWJJbmZvTWFw
JiBiYXNlbGluZU1hcCwKLSAgICBTdHViSW5mb01hcCYgZGZnTWFwLCBDb2RlT3JpZ2luIGNvZGVP
cmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCisgICAgQ29kZUJsb2NrKiBwcm9maWxlZEJs
b2NrLCBDb2RlQmxvY2sqIGRmZ0Jsb2NrLCBJQ1N0YXR1c01hcCYgYmFzZWxpbmVNYXAsCisgICAg
SUNTdGF0dXNDb250ZXh0U3RhY2smIGljQ29udGV4dFN0YWNrLCBDb2RlT3JpZ2luIGNvZGVPcmln
aW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7Ci0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAg
aWYgKGRmZ0Jsb2NrKSB7Ci0gICAgICAgIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgZXhp
dFNpdGVEYXRhOwotICAgICAgICB7Ci0gICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9j
a2VyKHByb2ZpbGVkQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICBleGl0U2l0ZURhdGEgPSBD
YWxsTGlua1N0YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YSgKLSAgICAgICAgICAgICAgICBwcm9m
aWxlZEJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpOwotICAgICAgICB9Ci0gICAgICAg
IAotICAgICAgICBHZXRCeUlkU3RhdHVzIHJlc3VsdDsKLSAgICAgICAgewotICAgICAgICAgICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihkZmdCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAg
IHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAotICAg
ICAgICAgICAgICAgIGxvY2tlciwgZGZnQmxvY2ssIGRmZ01hcC5nZXQoY29kZU9yaWdpbiksIHVp
ZCwgZXhpdFNpdGVEYXRhKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChyZXN1bHQudGFrZXNT
bG93UGF0aCgpKQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICBDYWxsTGlua1N0YXR1
czo6RXhpdFNpdGVEYXRhIGNhbGxFeGl0U2l0ZURhdGEgPQorICAgICAgICBDYWxsTGlua1N0YXR1
czo6Y29tcHV0ZUV4aXRTaXRlRGF0YShwcm9maWxlZEJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2Rl
SW5kZXgpOworICAgIEV4aXRGbGFnIGRpZEV4aXQgPSBoYXNFeGl0U2l0ZShwcm9maWxlZEJsb2Nr
LCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpOwogICAgIAotICAgICAgICBpZiAoaGFzRXhpdFNp
dGUocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KSkKLSAgICAgICAgICAg
IHJldHVybiBHZXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIHRydWUpOworICAgIGZvciAoSUNT
dGF0dXNDb250ZXh0JiBjb250ZXh0IDogaWNDb250ZXh0U3RhY2spIHsKKyAgICAgICAgSUNTdGF0
dXMgc3RhdHVzID0gY29udGV4dC5nZXQoY29kZU9yaWdpbik7CiAgICAgICAgIAotICAgICAgICBp
ZiAocmVzdWx0LmlzU2V0KCkpCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICBp
ZiAoc3RhdHVzLnN0dWJJbmZvKSB7CisgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9j
a2VyKGNvbnRleHQub3B0aW1pemVkQ29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgR2V0
QnlJZFN0YXR1cyByZXN1bHQgPSBjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVk
YmFjaygKKyAgICAgICAgICAgICAgICBsb2NrZXIsIGNvbnRleHQub3B0aW1pemVkQ29kZUJsb2Nr
LCBzdGF0dXMuc3R1YkluZm8sIHVpZCwgY2FsbEV4aXRTaXRlRGF0YSk7CisgICAgICAgICAgICBp
ZiAocmVzdWx0LmlzU2V0KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZGlkRXhpdC5pc1NldChj
b250ZXh0LmlubGluZUtpbmQoY29kZU9yaWdpbikpKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0LnNsb3dWZXJzaW9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFN
KGRmZ0Jsb2NrKTsKLSAgICBVTlVTRURfUEFSQU0oZGZnTWFwKTsKLSNlbmRpZgotCi0gICAgcmV0
dXJuIGNvbXB1dGVGb3IocHJvZmlsZWRCbG9jaywgYmFzZWxpbmVNYXAsIGNvZGVPcmlnaW4uYnl0
ZWNvZGVJbmRleCwgdWlkKTsKKyAgICAgICAgCisgICAgcmV0dXJuIGNvbXB1dGVGb3IocHJvZmls
ZWRCbG9jaywgYmFzZWxpbmVNYXAsIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgdWlkLCBjYWxs
RXhpdFNpdGVEYXRhKTsKIH0KIAogR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRl
Rm9yKGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQpAQCAt
NDE0LDYgKzQxMCwxMSBAQCBib29sIEdldEJ5SWRTdGF0dXM6Om1ha2VzQ2FsbHMoKSBjb25zdAog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAorR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpzbG93
VmVyc2lvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMobWFrZXNDYWxscygp
ID8gTWFrZXNDYWxscyA6IFRha2VzU2xvd1BhdGgsIHdhc1NlZW5JbkpJVCgpKTsKK30KKwogdm9p
ZCBHZXRCeUlkU3RhdHVzOjpmaWx0ZXIoY29uc3QgU3RydWN0dXJlU2V0JiBzZXQpCiB7CiAgICAg
aWYgKG1fc3RhdGUgIT0gU2ltcGxlKQpAQCAtNDIzLDYgKzQyNCwyNSBAQCB2b2lkIEdldEJ5SWRT
dGF0dXM6OmZpbHRlcihjb25zdCBTdHJ1Y3R1CiAgICAgICAgIG1fc3RhdGUgPSBOb0luZm9ybWF0
aW9uOwogfQogCit2b2lkIEdldEJ5SWRTdGF0dXM6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQoreworICAgIGZvciAoR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRz
KQorICAgICAgICB2YXJpYXQubWFya0lmQ2hlYXAodmlzaXRvcik7Cit9CisKK2Jvb2wgR2V0QnlJ
ZFN0YXR1czo6ZmluYWxpemUoKQoreworICAgIGZvciAoR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQg
OiBtX3ZhcmlhbnRzKSB7CisgICAgICAgIGlmICghdmFyaWFudC5maW5hbGl6ZSgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAobV9tb2R1bGVOYW1lc3BhY2VPYmpl
Y3QgJiYgIUhlYXA6OmlzTWFya2VkKG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0KSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIGlmIChtX21vZHVsZUVudmlyb25tZW50ICYmICFIZWFwOjppc01h
cmtlZChtX21vZHVsZUVudmlyb25tZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJl
dHVybiB0cnVlOworfQorCiB2b2lkIEdldEJ5SWRTdGF0dXM6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uc3QKIHsKICAgICBvdXQucHJpbnQoIigiKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAkocmV2aXNpb24gMjMyMjI3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMjgsNyArMjgsOSBAQAogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCiAjaW5j
bHVkZSAiQ29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKKyNpbmNs
dWRlICJFeGl0RmxhZy5oIgogI2luY2x1ZGUgIkdldEJ5SWRWYXJpYW50LmgiCisjaW5jbHVkZSAi
SUNTdGF0dXNNYXAuaCIKICNpbmNsdWRlICJTY29wZU9mZnNldC5oIgogCiBuYW1lc3BhY2UgSlND
IHsKQEAgLTQwLDggKzQyLDYgQEAgY2xhc3MgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q7CiBjbGFz
cyBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOwogY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CiAK
LXR5cGVkZWYgSGFzaE1hcDxDb2RlT3JpZ2luLCBTdHJ1Y3R1cmVTdHViSW5mbyosIENvZGVPcmln
aW5BcHByb3hpbWF0ZUhhc2g+IFN0dWJJbmZvTWFwOwotCiBjbGFzcyBHZXRCeUlkU3RhdHVzIHsK
IHB1YmxpYzoKICAgICBlbnVtIFN0YXRlIHsKQEAgLTgxLDEwICs4MSwxMCBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fdmFyaWFudHMuYXBwZW5kKHZhcmlhbnQpOwogICAgIH0KICAgICAKLSAgICBzdGF0
aWMgR2V0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIFN0dWJJbmZvTWFwJiwgdW5z
aWduZWQgYnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7CisgICAgc3RhdGlj
IEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCBJQ1N0YXR1c01hcCYsIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIEV4aXRGbGFnLCBDYWxs
TGlua1N0YXR1czo6RXhpdFNpdGVEYXRhKTsKICAgICBzdGF0aWMgR2V0QnlJZFN0YXR1cyBjb21w
dXRlRm9yKGNvbnN0IFN0cnVjdHVyZVNldCYsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogICAg
IAotICAgIHN0YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGlu
ZUJsb2NrLCBDb2RlQmxvY2sqIGRmZ0Jsb2NrLCBTdHViSW5mb01hcCYgYmFzZWxpbmVNYXAsIFN0
dWJJbmZvTWFwJiBkZmdNYXAsIENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwor
ICAgIHN0YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJs
b2NrLCBDb2RlQmxvY2sqIGRmZ0Jsb2NrLCBJQ1N0YXR1c01hcCYgYmFzZWxpbmVNYXAsIElDU3Rh
dHVzQ29udGV4dFN0YWNrJiBkZmdDb250ZXh0U3RhY2ssIENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJp
bmdJbXBsKiB1aWQpOwogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgc3RhdGljIEdldEJ5SWRT
dGF0dXMgY29tcHV0ZUZvclN0dWJJbmZvKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVC
bG9jayogYmFzZWxpbmVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qLCBDb2RlT3JpZ2luLCBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkKTsKQEAgLTEwNiw2ICsxMDYsOCBAQCBwdWJsaWM6CiAgICAgYm9v
bCB0YWtlc1Nsb3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBUYWtlc1Nsb3dQYXRo
IHx8IG1fc3RhdGUgPT0gTWFrZXNDYWxscyB8fCBtX3N0YXRlID09IEN1c3RvbSB8fCBtX3N0YXRl
ID09IE1vZHVsZU5hbWVzcGFjZTsgfQogICAgIGJvb2wgbWFrZXNDYWxscygpIGNvbnN0OwogICAg
IAorICAgIEdldEJ5SWRTdGF0dXMgc2xvd1ZlcnNpb24oKSBjb25zdDsKKyAgICAKICAgICBib29s
IHdhc1NlZW5JbkpJVCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzU2VlbkluSklUOyB9CiAgICAgCiAg
ICAgLy8gQXR0ZW1wdHMgdG8gcmVkdWNlIHRoZSBzZXQgb2YgdmFyaWFudHMgdG8gZml0IHRoZSBn
aXZlbiBzdHJ1Y3R1cmUgc2V0LiBUaGlzIG1heSBiZSBhcHByb3hpbWF0ZS4KQEAgLTExNSwxMSAr
MTE3LDE0IEBAIHB1YmxpYzoKICAgICBKU01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9u
bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlRW52aXJvbm1lbnQ7IH0KICAgICBTY29wZU9m
ZnNldCBzY29wZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVPZmZzZXQ7IH0KICAgICAK
KyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7CisgICAgYm9vbCBmaW5hbGl6ZSgp
OyAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGlzIGdldHMgdG8gbGl2ZS4KKyAgICAKICAgICB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKIHByaXZhdGU6CiAjaWYgRU5BQkxFKERGR19K
SVQpCi0gICAgc3RhdGljIGJvb2wgaGFzRXhpdFNpdGUoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0
ZWNvZGVJbmRleCk7CisgICAgc3RhdGljIEV4aXRGbGFnIGhhc0V4aXRTaXRlKENvZGVCbG9jayos
IHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwogI2VuZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICBH
ZXRCeUlkU3RhdHVzKGNvbnN0IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UmKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcAko
cmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5
SWRWYXJpYW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM1LDYgKzEzNSwyNCBAQCBib29sIEdl
dEJ5SWRWYXJpYW50OjphdHRlbXB0VG9NZXJnZShjb25zCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
K3ZvaWQgR2V0QnlJZFZhcmlhbnQ6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQor
eworICAgIG1fc3RydWN0dXJlU2V0Lm1hcmtJZkNoZWFwKHZpc2l0b3IpOworfQorCitib29sIEdl
dEJ5SWRWYXJpYW50OjpmaW5hbGl6ZSgpCit7CisgICAgaWYgKCFtX3N0cnVjdHVyZVNldC5pc1N0
aWxsQWxpdmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghbV9jb25kaXRpb25T
ZXQuYXJlU3RpbGxMaXZlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9jYWxs
TGlua1N0YXR1cyAmJiAhbV9jYWxsTGlua1N0YXR1cy0+ZmluYWxpemUoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmIChtX2ludHJpbnNpY0Z1bmN0aW9uICYmICFIZWFwOjppc01hcmtl
ZChtX2ludHJpbnNpY0Z1bmN0aW9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVy
biB0cnVlOworfQorCiB2b2lkIEdldEJ5SWRWYXJpYW50OjpkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0CiB7CiAgICAgZHVtcEluQ29udGV4dChvdXQsIDApOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmgJKHJldmlzaW9uIDIzMjIy
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC03Myw2ICs3Myw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgYXR0ZW1w
dFRvTWVyZ2UoY29uc3QgR2V0QnlJZFZhcmlhbnQmIG90aGVyKTsKICAgICAKKyAgICB2b2lkIG1h
cmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7CisgICAgYm9vbCBmaW5hbGl6ZSgpOworICAgIAogICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIHZvaWQgZHVtcEluQ29udGV4dChQ
cmludFN0cmVhbSYsIER1bXBDb250ZXh0KikgY29uc3Q7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5jcHAJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFwLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJQ1N0YXR1c01h
cC5oIgorCisjaW5jbHVkZSAiVGVybWluYXRlZENvZGVPcmlnaW4uaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK0lDU3RhdHVzIElDU3RhdHVzQ29udGV4dDo6Z2V0KENvZGVPcmlnaW4gY29kZU9yaWdp
bikKK3sKKyAgICByZXR1cm4gbWFwLmdldDxUZXJtaW5hdGVkQ29kZU9yaWdpbkhhc2hUcmFuc2xh
dG9yPigKKyAgICAgICAgVGVybWluYXRlZENvZGVPcmlnaW4oY29kZU9yaWdpbiwgYmFzZWxpbmVD
b2RlQmxvY2spKTsKK30KKworYm9vbCBJQ1N0YXR1c0NvbnRleHQ6OmlzSW5saW5lZChDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4pCit7CisgICAgcmV0dXJuIGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1l
ICYmIGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay5nZXQoKSAh
PSBiYXNlbGluZUNvZGVCbG9jazsKK30KKworRXhpdGluZ0lubGluZUtpbmQgSUNTdGF0dXNDb250
ZXh0OjppbmxpbmVLaW5kKENvZGVPcmlnaW4gY29kZU9yaWdpbikKK3sKKyAgICByZXR1cm4gaXNJ
bmxpbmVkKGNvZGVPcmlnaW4pID8gRXhpdEZyb21JbmxpbmVkIDogRXhpdEZyb21Ob3RJbmxpbmVk
OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0lDU3RhdHVzTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFwLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
cHJhbWdhIG9uY2UKKworI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKKyNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQ2FsbExpbmtJbmZvOworY2xhc3Mg
Q2FsbExpbmtTdGF0dXM7CitjbGFzcyBDb2RlQmxvY2s7CitjbGFzcyBHZXRCeUlkU3RhdHVzOwor
Y2xhc3MgUHV0QnlJZFN0YXR1czsKK2NsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOworc3RydWN0IEJ5
VmFsSW5mbzsKKworc3RydWN0IElDU3RhdHVzIHsKKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YkluZm8geyBudWxscHRyIH07CisgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8geyBudWxs
cHRyIH07CisgICAgQnlWYWxJbmZvKiBieVZhbEluZm8geyBudWxscHRyIH07CisgICAgQ2FsbExp
bmtTdGF0dXMqIGNhbGxTdGF0dXMgeyBudWxscHRyIH07CisgICAgR2V0QnlJZFN0YXR1cyogZ2V0
U3RhdHVzIHsgbnVsbHB0ciB9OworICAgIFB1dEJ5SWRTdGF0dXMqIHB1dFN0YXR1cyB7IG51bGxw
dHIgfTsKK307CisKK3R5cGVkZWYgSGFzaE1hcDxDb2RlT3JpZ2luLCBJQ1N0YXR1cywgQ29kZU9y
aWdpbkFwcHJveGltYXRlSGFzaD4gSUNTdGF0dXNNYXA7CisKK3N0cnVjdCBJQ1N0YXR1c0NvbnRl
eHQgeworICAgIElDU3RhdHVzIGdldChDb2RlT3JpZ2luKTsKKyAgICBib29sIGlzSW5saW5lZChD
b2RlT3JpZ2luKSBjb25zdDsKKyAgICBFeGl0aW5nSW5saW5lS2luZCBpbmxpbmVLaW5kKENvZGVP
cmlnaW4pIGNvbnN0OworICAgIAorICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2sgeyBu
dWxscHRyIH07CisgICAgQ29kZUJsb2NrKiBvcHRpbWl6ZWRDb2RlQmxvY2sgeyBudWxscHRyIH07
CisgICAgSUNTdGF0dXNNYXAgbWFwOworfTsKKwordHlwZWRlZiBWZWN0b3I8SUNTdGF0dXNDb250
ZXh0KiwgOD4gSUNTdGF0dXNDb250ZXh0U3RhY2s7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMu
Y3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHV0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5OCw2ICszOTgsMzAgQEAgYm9v
bCBQdXRCeUlkU3RhdHVzOjptYWtlc0NhbGxzKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKK3ZvaWQgUHV0QnlJZFN0YXR1czo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
Cit7CisgICAgZm9yIChQdXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IG1fdmFyaWFudHMpCisgICAg
ICAgIHZhcmlhbnQubWFya0lmQ2hlYXAodmlzaXRvcik7Cit9CisKK2Jvb2wgUHV0QnlJZFN0YXR1
czo6ZmluYWxpemUoKQoreworICAgIGZvciAoUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3Zh
cmlhbnRzKSB7CisgICAgICAgIGlmICghdmFyaWFudC5maW5hbGl6ZSgpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBQdXRCeUlk
U3RhdHVzOjpmaWx0ZXIoY29uc3QgU3RydWN0dXJlU2V0JiBzZXQpCit7CisgICAgaWYgKG1fc3Rh
dGUgIT0gU2ltcGxlKQorICAgICAgICByZXR1cm47CisgICAgZmlsdGVySUNTdGF0dXNWYXJpYW50
cyhtX3ZhcmlhbnRzLCBzZXQpOworICAgIGlmIChtX3ZhcmlhbnRzLmlzRW1wdHkoKSkKKyAgICAg
ICAgbV9zdGF0ZSA9IE5vSW5mb3JtYXRpb247Cit9CisKIHZvaWQgUHV0QnlJZFN0YXR1czo6ZHVt
cChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIHN3aXRjaCAobV9zdGF0ZSkgewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCShy
ZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJ
ZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCisjaW5jbHVkZSAiSUNTdGF0dXNNYXAuaCIK
ICNpbmNsdWRlICJQdXRCeUlkVmFyaWFudC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTY5LDEw
ICs3MCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIG1fdmFyaWFudHMuYXBwZW5kKHZhcmlhbnQpOwog
ICAgIH0KICAgICAKLSAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9j
ayosIFN0dWJJbmZvTWFwJiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCk7CisgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sq
LCBJQ1N0YXR1c01hcCYsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBs
KiB1aWQpOwogICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoSlNHbG9iYWxPYmpl
Y3QqLCBjb25zdCBTdHJ1Y3R1cmVTZXQmLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBib29sIGlz
RGlyZWN0KTsKICAgICAKLSAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVC
bG9jayogYmFzZWxpbmVCbG9jaywgQ29kZUJsb2NrKiBkZmdCbG9jaywgU3R1YkluZm9NYXAmIGJh
c2VsaW5lTWFwLCBTdHViSW5mb01hcCYgZGZnTWFwLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkKTsKKyAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9j
ayogYmFzZWxpbmVCbG9jaywgQ29kZUJsb2NrKiBkZmdCbG9jaywgSUNTdGF0dXNNYXAmIGJhc2Vs
aW5lTWFwLCBJQ1N0YXR1c01hcCYgZGZnTWFwLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1w
bCogdWlkKTsKIAogI2lmIEVOQUJMRShKSVQpCiAgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29t
cHV0ZUZvclN0dWJJbmZvKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayogYmFz
ZWxpbmVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkKTsKQEAgLTkxLDYgKzkyLDEwIEBAIHB1YmxpYzoKICAgICBjb25zdCBQdXRCeUlk
VmFyaWFudCYgYXQoc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBtX3ZhcmlhbnRzW2luZGV4
XTsgfQogICAgIGNvbnN0IFB1dEJ5SWRWYXJpYW50JiBvcGVyYXRvcltdKHNpemVfdCBpbmRleCkg
Y29uc3QgeyByZXR1cm4gYXQoaW5kZXgpOyB9CiAgICAgCisgICAgdm9pZCBtYXJrSWZDaGVhcChT
bG90VmlzaXRvciYpOworICAgIGJvb2wgZmluYWxpemUoKTsKKyAgICB2b2lkIGZpbHRlcihjb25z
dCBTdHJ1Y3R1cmVTZXQmKTsKKyAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25z
dDsKICAgICAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHV0QnlJZFZhcmlhbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjA2LDYgKzIwNiwyNiBAQCBib29sIFB1dEJ5SWRWYXJpYW50OjphdHRlbXB0VG9NZXJn
ZVRyYW5zCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgUHV0QnlJZFZhcmlhbnQ6Om1hcmtJ
ZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIG1fb2xkU3RydWN0dXJlLm1hcmtJ
ZkNoZWFwKHZpc2l0b3IpOworICAgIGlmIChtX25ld1N0cnVjdHVyZSkKKyAgICAgICAgbV9uZXdT
dHJ1Y3R1cmUtPm1hcmtJZkNoZWFwKHZpc2l0b3IpOworfQorCitib29sIFB1dEJ5SWRWYXJpYW50
OjpmaW5hbGl6ZSgpCit7CisgICAgaWYgKCFtX29sZFN0cnVjdHVyZS5pc1N0aWxsQWxpdmUodmlz
aXRvcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9uZXdTdHJ1Y3R1cmUgJiYg
IUhlYXA6OmlzTWFya2VkKG1fbmV3U3RydWN0dXJlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmICghbV9jb25kaXRpb25TZXQuYXJlU3RpbGxMaXZlKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAobV9jYWxsTGlua1N0YXR1cyAmJiAhbV9jYWxsTGlua1N0YXR1cy0+Zmlu
YWxpemUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCiB2
b2lkIFB1dEJ5SWRWYXJpYW50OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAg
ZHVtcEluQ29udGV4dChvdXQsIDApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1B1dEJ5SWRWYXJpYW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTczLDE3ICs3MywxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX29sZFN0cnVjdHVy
ZTsKICAgICB9CiAgICAgCi0gICAgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQoKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0cnVjdHVyZSgpOwotICAgIH0KLSAgICAKICAg
ICBjb25zdCBTdHJ1Y3R1cmVTZXQmIG9sZFN0cnVjdHVyZSgpIGNvbnN0CiAgICAgewogICAgICAg
ICBBU1NFUlQoa2luZCgpID09IFRyYW5zaXRpb24gfHwga2luZCgpID09IFJlcGxhY2UgfHwga2lu
ZCgpID09IFNldHRlcik7CiAgICAgICAgIHJldHVybiBtX29sZFN0cnVjdHVyZTsKICAgICB9CiAg
ICAgCisgICAgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG9sZFN0cnVjdHVyZSgpOworICAgIH0KKyAgICAKICAgICBTdHJ1Y3R1
cmVTZXQmIG9sZFN0cnVjdHVyZSgpCiAgICAgewogICAgICAgICBBU1NFUlQoa2luZCgpID09IFRy
YW5zaXRpb24gfHwga2luZCgpID09IFJlcGxhY2UgfHwga2luZCgpID09IFNldHRlcik7CkBAIC0x
MjksNiArMTI5LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBhdHRlbXB0VG9NZXJnZShjb25zdCBQ
dXRCeUlkVmFyaWFudCYgb3RoZXIpOwogICAgIAorICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZp
c2l0b3ImKTsKKyAgICBib29sIGZpbmFsaXplKCk7CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50
U3RyZWFtJikgY29uc3Q7CiAgICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVt
cENvbnRleHQqKSBjb25zdDsKIApAQCAtMTM3LDcgKzE0MCw3IEBAIHByaXZhdGU6CiAgICAgCiAg
ICAgS2luZCBtX2tpbmQ7CiAgICAgU3RydWN0dXJlU2V0IG1fb2xkU3RydWN0dXJlOwotICAgIFN0
cnVjdHVyZSogbV9uZXdTdHJ1Y3R1cmU7CisgICAgU3RydWN0dXJlKiBtX25ld1N0cnVjdHVyZSB7
IG51bGxwdHIgfTsKICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBtX2NvbmRpdGlvblNl
dDsKICAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKICAgICBJbmZlcnJlZFR5cGU6OkRlc2Ny
aXB0b3IgbV9yZXF1aXJlZFR5cGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUmVjb3JkZWRTdGF0dXNlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCisjaW5j
bHVkZSAiR2V0QnlJZFN0YXR1cy5oIgorI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBSZWNvcmRlZFN0YXR1c2VzIHsKKyAgICBSZWNvcmRlZFN0
YXR1c2VzKCkgeyB9CisgICAgCisgICAgUmVjb3JkZWRTdGF0dXNlcyYgb3BlcmF0b3I9KGNvbnN0
IFJlY29yZGVkU3RhdHVzZXMmIG90aGVyKSA9IGRlbGV0ZTsKKyAgICAKKyAgICBSZWNvcmRlZFN0
YXR1c2VzJiBvcGVyYXRvcj0oUmVjb3JkZWRTdGF0dXNlcyYmIG90aGVyKQorICAgIHsKKyAgICAg
ICAgY2FsbHMgPSBXVEZNb3ZlKG90aGVyLmNhbGxzKTsKKyAgICAgICAgZ2V0cyA9IFdURk1vdmUo
b3RoZXIuZ2V0cyk7CisgICAgICAgIHB1dHMgPSBXVEZNb3ZlKG90aGVyLnB1dHMpOworICAgIH0K
KyAgICAKKyAgICBSZWNvcmRlZFN0YXR1c2VzKGNvbnN0IFJlY29yZGVkU3RhdHVzZXMmIG90aGVy
KSA9IGRlbGV0ZTsKKyAgICAKKyAgICBSZWNvcmRlZFN0YXR1c2VzKFJlY29yZWRlZFN0YXR1c2Vz
JiYgb3RoZXIpCisgICAgeworICAgICAgICAqdGhpcyA9IFdURk1vdmUob3RoZXIpOworICAgIH0K
KyAgICAKKyAgICBDYWxsTGlua1N0YXR1cyogYWRkQ2FsbExpbmtTdGF0dXMoY29uc3QgQ29kZU9y
aWdpbiYgY29kZU9yaWdpbiwgY29uc3QgQ2FsbExpbmtTdGF0dXMmIHN0YXR1cykKKyAgICB7Cisg
ICAgICAgIGF1dG8gc3RhdHVzUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsTGlua1N0YXR1cz4o
c3RhdHVzKTsKKyAgICAgICAgQ2FsbExpbmtTdGF0dXMqIHJlc3VsdCA9IHN0YXR1c1B0ci5nZXQo
KTsKKyAgICAgICAgY2FsbHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1v
dmUoc3RhdHVzUHRyKSkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAg
ICBHZXRCeUlkU3RhdHVzKiBhZGRHZXRCeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVP
cmlnaW4sIGNvbnN0IEdldEJ5SWRTdGF0dXMmIHN0YXR1cykKKyAgICB7CisgICAgICAgIGF1dG8g
c3RhdHVzUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxHZXRCeUlkU3RhdHVzPihzdGF0dXMpOworICAg
ICAgICBHZXRCeUlkU3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7CisgICAgICAgIGdl
dHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3RhdHVzUHRyKSkp
OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICBQdXRCeUlkU3RhdHVz
KiBhZGRQdXRCeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0IFB1
dEJ5SWRTdGF0dXMmIHN0YXR1cykKKyAgICB7CisgICAgICAgIGF1dG8gc3RhdHVzUHRyID0gc3Rk
OjptYWtlX3VuaXF1ZTxQdXRCeUlkU3RhdHVzPihzdGF0dXMpOworICAgICAgICBQdXRCeUlkU3Rh
dHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7CisgICAgICAgIHB1dHMuYXBwZW5kKHN0ZDo6
bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3RhdHVzUHRyKSkpOworICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9y
JiBzbG90VmlzaXRvcikKKyAgICB7CisgICAgICAgIGZvciAoYXV0byYgcGFpciA6IGdldHMpCisg
ICAgICAgICAgICBwYWlyLnNlY29uZC0+bWFya0lmQ2hlYXAoc2xvdFZpc2l0b3IpOworICAgICAg
ICBmb3IgKGF1dG8mIHBhaXIgOiBwdXRzKQorICAgICAgICAgICAgcGFpci5zZWNvbmQtPm1hcmtJ
ZkNoZWFwKHNsb3RWaXNpdG9yKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBmaW5hbGl6ZSgpCisg
ICAgeworICAgICAgICBhdXRvIGZpbmFsaXplID0gW10gKGF1dG8mIHZlY3RvcikgeworICAgICAg
ICAgICAgdmVjdG9yLnJlbW92ZUFsbE1hdGNoaW5nKAorICAgICAgICAgICAgICAgIFsmXSAoYXV0
byYgcGFpcikgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAhcGFpci5zZWNv
bmQtPmZpbmFsaXplKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB2ZWN0b3Iu
c2hyaW5rVG9GaXQoKTsKKyAgICAgICAgfTsKKyAgICAgICAgZmluYWxpemUoY2FsbHMpOworICAg
ICAgICBmaW5hbGl6ZShnZXRzKTsKKyAgICAgICAgZmluYWxpemUocHV0cyk7CisgICAgfQorICAg
IAorICAgIHZvaWQgc2hyaW5rVG9GaXQoKQorICAgIHsKKyAgICAgICAgY2FsbHMuc2hyaW5rVG9G
aXQoKTsKKyAgICAgICAgZ2V0cy5zaHJpbmtUb0ZpdCgpOworICAgICAgICBwdXRzLnNocmlua1Rv
Rml0KCk7CisgICAgfQorICAgIAorICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29kZU9yaWdpbiwgc3Rk
Ojp1bmlxdWVfcHRyPENhbGxMaW5rU3RhdHVzPj4+IGNhbGxzOworICAgIFZlY3RvcjxzdGQ6OnBh
aXI8Q29kZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPEdldEJ5SWRTdGF0dXM+Pj4gZ2V0czsKKyAg
ICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxQdXRCeUlkU3Rh
dHVzPj4+IHB1dHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5jcHAJKHJldmlzaW9uIDIz
MjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDYgKzMxLDIxIEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
Cit2b2lkIFN0cnVjdHVyZVNldDo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZpc2l0b3IpIGNv
bnN0Cit7CisgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6ICp0aGlzKQorICAgICAgICBz
dHJ1Y3R1cmUtPm1hcmtJZkNoZWFwKHZpc2l0b3IpOworfQorCitib29sIFN0cnVjdHVyZVNldDo6
aXNTdGlsbEFsaXZlKCkgY29uc3QKK3sKKyAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDog
KnRoaXMpIHsKKyAgICAgICAgaWYgKCFIZWFwOjppc01hcmtlZChzdHJ1Y3R1cmUpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBT
dHJ1Y3R1cmVTZXQ6OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQq
IGNvbnRleHQpIGNvbnN0CiB7CiAgICAgQ29tbWFQcmludGVyIGNvbW1hOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAkocmV2aXNpb24gMjMy
MjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwg
MjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTgsNiArNTgsOSBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICByZXR1cm4gb25seUVudHJ5KCk7CiAgICAgfQorCisgICAgdm9pZCBtYXJrSWZDaGVhcChT
bG90VmlzaXRvciYpIGNvbnN0OworICAgIGJvb2wgaXNTdGlsbEFsaXZlKCkgY29uc3Q7CiAgICAg
CiAgICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25z
dDsKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9UZXJtaW5hdGVkQ29kZU9yaWdpbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9UZXJtaW5hdGVkQ29kZU9yaWdpbi5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9UZXJtaW5hdGVk
Q29kZU9yaWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVz
cGFjZSBKU0MgeworCitzdHJ1Y3QgVGVybWluYXRlZENvZGVPcmlnaW4geworICAgIFRlcm1pbmF0
ZWRDb2RlT3JpZ2luKCkgeyB9CisgICAgCisgICAgVGVybWluYXRlZENvZGVPcmlnaW4oY29uc3Qg
Q29kZU9yaWdpbiYgY29kZU9yaWdpbiwgQ29kZUJsb2NrKiB0ZXJtaW5hbCkKKyAgICAgICAgOiBj
b2RlT3JpZ2luKGNvZGVPcmlnaW4pCisgICAgICAgICwgdGVybWluYWwodGVybWluYWwpCisgICAg
eworICAgIH0KKyAgICAKKyAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW47CisgICAgQ29kZUJsb2Nr
KiB0ZXJtaW5hbCB7IG51bGxwdHIgfTsKK307CisKK3N0cnVjdCBUZXJtaW5hdGVkQ29kZU9yaWdp
bkhhc2hUcmFuc2xhdG9yIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBUZXJtaW5h
dGVkQ29kZU9yaWdpbiYgdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gdmFsdWUuY29kZU9y
aWdpbi5hcHByb3hpbWF0ZUhhc2godmFsdWUudGVybWluYWwpOworICAgIH0KKyAgICAKKyAgICBz
dGF0aWMgYm9vbCBlcXVhbChjb25zdCBDb2RlT3JpZ2luJiBhLCBjb25zdCBUZXJtaW5hdGVkQ29k
ZU9yaWlnbiYgYikKKyAgICB7CisgICAgICAgIHJldHVybiBiLmNvZGVPcmlnaW4uYXBwcm94aW1h
dGVseUVxdWFsKGEsIGIudGVybWluYWwpOworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIEpT
QworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM0OTksNiArMzQ5OSwyNSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8
QWJzdHJhY3RTdGF0ZVR5CiAgICAgY2FzZSBab21iaWVIaW50OgogICAgIGNhc2UgRXhpdE9LOgog
ICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoK
KyAgICAgICAgaWYgKEpTVmFsdWUgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3Zh
bHVlKQorICAgICAgICAgICAgbm9kZS0+Y2FsbExpbmtTdGF0dXMoKS5maWx0ZXIodmFsdWUpOwor
ICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgY2FzZSBGaWx0ZXJHZXRCeUlkU3RhdHVzOiB7
CisgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKQorICAgICAgICAgICAg
bm9kZS0+Z2V0QnlJZFN0YXR1cygpLmZpbHRlcihtX3ZhbHVlLm1fc3RydWN0dXJlLnRvU3RydWN0
dXJlU2V0KCkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAorICAgIGNhc2UgRmls
dGVyUHV0QnlJZFN0YXR1czogeworICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5v
ZGUobm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBpZiAodmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5p
dGUoKSkKKyAgICAgICAgICAgIG5vZGUtPnB1dEJ5SWRTdGF0dXMoKS5maWx0ZXIobV92YWx1ZS5t
X3N0cnVjdHVyZS50b1N0cnVjdHVyZVNldCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCiAg
ICAgY2FzZSBDaGVja1R5cGVJbmZvRmxhZ3M6IHsKICAgICAgICAgY29uc3QgQWJzdHJhY3RWYWx1
ZSYgYWJzdHJhY3RWYWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9u
IDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgyLDkgKzEwODIsOCBAQCBwcml2YXRlOgogICAgICAg
ICAvLyBjb2RlIGJsb2NrIGhhZCBnYXRoZXJlZC4KICAgICAgICAgTGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGVQYXJzZXIgbV9sYXp5T3BlcmFuZHM7CiAgICAgICAgIAotICAgICAgICBDYWxsTGlua0lu
Zm9NYXAgbV9jYWxsTGlua0luZm9zOwotICAgICAgICBTdHViSW5mb01hcCBtX3N0dWJJbmZvczsK
LSAgICAgICAgQnlWYWxJbmZvTWFwIG1fYnlWYWxJbmZvczsKKyAgICAgICAgSUNTdGF0dXNNYXAg
bV9iYXNlbGluZU1hcDsKKyAgICAgICAgSUNTdGF0dXNDb250ZXh0IG1fb3B0aW1pemVkQ29udGV4
dDsKICAgICAgICAgCiAgICAgICAgIC8vIFBvaW50ZXJzIHRvIHRoZSBhcmd1bWVudCBwb3NpdGlv
biB0cmFja2VycyBmb3IgdGhpcyBzbGljZSBvZiBjb2RlLgogICAgICAgICBWZWN0b3I8QXJndW1l
bnRQb3NpdGlvbio+IG1fYXJndW1lbnRQb3NpdGlvbnM7CkBAIC0xMTAyLDEwICsxMTAxLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZTo6S2luZCwKICAgICAgICAgICAg
IEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrKTsKICAgICAgICAgCi0gICAgICAgIH5Jbmxp
bmVTdGFja0VudHJ5KCkKLSAgICAgICAgewotICAgICAgICAgICAgbV9ieXRlQ29kZVBhcnNlci0+
bV9pbmxpbmVTdGFja1RvcCA9IG1fY2FsbGVyOwotICAgICAgICB9CisgICAgICAgIH5JbmxpbmVT
dGFja0VudHJ5KCk7CiAgICAgICAgIAogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVtYXBPcGVy
YW5kKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSBjb25zdAogICAgICAgICB7CkBAIC0xMTIwLDYg
KzExMTYsOCBAQCBwcml2YXRlOgogICAgIAogICAgIElubGluZVN0YWNrRW50cnkqIG1faW5saW5l
U3RhY2tUb3A7CiAgICAgCisgICAgSUNTdGF0dXNDb250ZXh0U3RhY2sgbV9pY0NvbnRleHRTdGFj
azsKKyAgICAKICAgICBzdHJ1Y3QgRGVsYXllZFNldExvY2FsIHsKICAgICAgICAgQ29kZU9yaWdp
biBtX29yaWdpbjsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG1fb3BlcmFuZDsKQEAgLTExNDYs
MTAgKzExNDQsNiBAQCBwcml2YXRlOgogICAgIAogICAgIFZlY3RvcjxEZWxheWVkU2V0TG9jYWws
IDI+IG1fc2V0TG9jYWxRdWV1ZTsKIAotICAgIENvZGVCbG9jayogbV9kZmdDb2RlQmxvY2s7Ci0g
ICAgQ2FsbExpbmtTdGF0dXM6OkNvbnRleHRNYXAgbV9jYWxsQ29udGV4dE1hcDsKLSAgICBTdHVi
SW5mb01hcCBtX2RmZ1N0dWJJbmZvczsKLSAgICAKICAgICBJbnN0cnVjdGlvbiogbV9jdXJyZW50
SW5zdHJ1Y3Rpb247CiAgICAgYm9vbCBtX2hhc0RlYnVnZ2VyRW5hYmxlZDsKIH07CkBAIC0xMjE0
LDcgKzEyMDgsNyBAQCBCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzCiAK
ICAgICBDYWxsTGlua1N0YXR1cyBjYWxsTGlua1N0YXR1cyA9IENhbGxMaW5rU3RhdHVzOjpjb21w
dXRlRm9yKAogICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIGN1cnJl
bnRDb2RlT3JpZ2luKCksCi0gICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbExpbmtJbmZv
cywgbV9jYWxsQ29udGV4dE1hcCk7CisgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxp
bmVNYXAsIG1faWNDb250ZXh0U3RhY2spOwogCiAgICAgSW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtp
bmQgPSBJbmxpbmVDYWxsRnJhbWU6OmtpbmRGb3IoY2FsbE1vZGUpOwogCkBAIC0xMjQyLDYgKzEy
MzYsOCBAQCBCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzCiAgICAgLy8g
SWYgd2UgaGF2ZSBwcm9maWxpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBjYWxsLCBhbmQgaXQg
ZGlkIG5vdCBiZWhhdmUgdG9vIHBvbHltb3JwaGljYWxseSwKICAgICAvLyB3ZSBtYXkgYmUgYWJs
ZSB0byBpbmxpbmUgaXQsIG9yIGluIHRoZSBjYXNlIG9mIHJlY3Vyc2l2ZSB0YWlsIGNhbGxzIHR1
cm4gaXQgaW50byBhIGp1bXAuCiAgICAgaWYgKGNhbGxMaW5rU3RhdHVzLmNhbk9wdGltaXplKCkp
IHsKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJDYWxsTGlua1N0YXR1cywgT3BJbmZvKG1fZ3Jh
cGgubV9wbGFucy5yZWNvcmRlZFN0YXR1c2VzLmFkZENhbGxMaW5rU3RhdHVzKGN1cnJlbnRDb2Rl
T3JpZ2luKCksIGNhbGxMaW5rU3RhdHVzKSksIGNhbGxUYXJnZXQpOworICAgICAgICAKICAgICAg
ICAgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3Vt
ZW50KDAsIHJlZ2lzdGVyT2Zmc2V0KTsKICAgICAgICAgYXV0byBvcHRpbWl6YXRpb25SZXN1bHQg
PSBoYW5kbGVJbmxpbmluZyhjYWxsVGFyZ2V0LCByZXN1bHQsIGNhbGxMaW5rU3RhdHVzLCByZWdp
c3Rlck9mZnNldCwgdGhpc0FyZ3VtZW50LAogICAgICAgICAgICAgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMsIG1fY3VycmVudEluZGV4ICsgaW5zdHJ1Y3Rpb25TaXplLCBvcCwga2luZCwgcHJl
ZGljdGlvbik7CkBAIC0xMjc5LDEyICsxMjc1LDE0IEBAIEJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5h
bGl0eSBCeXRlQ29kZVBhcnMKICAgICAKICAgICBDYWxsTGlua1N0YXR1cyBjYWxsTGlua1N0YXR1
cyA9IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICBtX2lubGluZVN0YWNrVG9w
LT5tX3Byb2ZpbGVkQmxvY2ssIGN1cnJlbnRDb2RlT3JpZ2luKCksCi0gICAgICAgIG1faW5saW5l
U3RhY2tUb3AtPm1fY2FsbExpbmtJbmZvcywgbV9jYWxsQ29udGV4dE1hcCk7CisgICAgICAgIG1f
aW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2spOwogICAgIHJl
ZmluZVN0YXRpY2FsbHkoY2FsbExpbmtTdGF0dXMsIGNhbGxUYXJnZXQpOwogICAgIAogICAgIFZF
UkJPU0VfTE9HKCIgICAgVmFyYXJncyBjYWxsIGxpbmsgc3RhdHVzIGF0ICIsIGN1cnJlbnRDb2Rl
T3JpZ2luKCksICI6ICIsIGNhbGxMaW5rU3RhdHVzLCAiXG4iKTsKICAgICAKICAgICBpZiAoY2Fs
bExpbmtTdGF0dXMuY2FuT3B0aW1pemUoKSkgeworICAgICAgICBhZGRUb0dyYXBoKEZpbHRlckNh
bGxMaW5rU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW5zLnJlY29yZGVkU3RhdHVzZXMuYWRk
Q2FsbExpbmtTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgY2FsbExpbmtTdGF0dXMpKSwgY2Fs
bFRhcmdldCk7CisgICAgICAgIAogICAgICAgICBpZiAoaGFuZGxlVmFyYXJnc0lubGluaW5nKGNh
bGxUYXJnZXQsIHJlc3VsdCwKICAgICAgICAgICAgIGNhbGxMaW5rU3RhdHVzLCBmaXJzdEZyZWVS
ZWcsIFZpcnR1YWxSZWdpc3Rlcih0aGlzUmVnKSwgVmlydHVhbFJlZ2lzdGVyKGFyZ3VtZW50cyks
CiAgICAgICAgICAgICBmaXJzdFZhckFyZ09mZnNldCwgb3AsCkBAIC0zMzE4LDkgKzMzMTYsMTIg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKAogICAgIGlmICghY2hl
Y2sodmFyaWFudC5jb25kaXRpb25TZXQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBh
ZGRUb0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQo
dmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSkpLCB0aGlzTm9kZSk7Ci0KKyAgICAKICAgICAvLyBXZSBk
byBub3QgbmVlZCB0byBlbWl0IENoZWNrQ2VsbCB0aGluZ3kgaGVyZS4gV2hlbiB0aGUgY3VzdG9t
IGFjY2Vzc29yIGlzIHJlcGxhY2VkIHRvIGRpZmZlcmVudCBvbmUsIFN0cnVjdHVyZSB0cmFuc2l0
aW9uIG9jY3Vycy4KICAgICBhZGRUb0dyYXBoKENoZWNrU3ViQ2xhc3MsIE9wSW5mbyhkb21BdHRy
aWJ1dGUuY2xhc3NJbmZvKSwgdGhpc05vZGUpOworICAgIAorICAgIGJvb2wgd2FzU2VlbkluSklU
ID0gdHJ1ZTsKKyAgICBhZGRUb0dyYXBoKEZpbHRlckdldEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dy
YXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFkZEdldEJ5SWRTdGF0dXMoY3VycmVudENvZGVP
cmlnaW4oKSwgR2V0QnlJZFN0YXR1cyhHZXRCeUlkU3RhdHVzOjpDdXN0b20sIHdhc1NlZW5JbkpJ
VCwgdmFyaWFudCkpKSwgdGhpc05vZGUpOwogCiAgICAgQ2FsbERPTUdldHRlckRhdGEqIGNhbGxE
T01HZXR0ZXJEYXRhID0gbV9ncmFwaC5tX2NhbGxET01HZXR0ZXJEYXRhLmFkZCgpOwogICAgIGNh
bGxET01HZXR0ZXJEYXRhLT5jdXN0b21BY2Nlc3NvckdldHRlciA9IHZhcmlhbnQuY3VzdG9tQWNj
ZXNzb3JHZXR0ZXIoKTsKQEAgLTMzNTIsNiArMzM1Myw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZU1vZHVsZU5hbWVzcGEKICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJv
ZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2VsbCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZvKG1fZ3JhcGguZnJlZXpl
KGdldEJ5SWQubW9kdWxlTmFtZXNwYWNlT2JqZWN0KCkpKSwgRWRnZShiYXNlLCBDZWxsVXNlKSk7
CisgICAgCisgICAgYWRkVG9HcmFwaChGaWx0ZXJHZXRCeUlkU3RhdHVzLCBPcEluZm8obV9ncmFw
aC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcy5hZGRHZXRCeUlkU3RhdHVzKGN1cnJlbnRDb2RlT3Jp
Z2luKCksIGdldEJ5SWQpKSwgYmFzZSk7CiAKICAgICAvLyBJZGVhbGx5IHdlIHdvdWxkbid0IGhh
dmUgdG8gZG8gdGhpcyBQaGFudG9tLiBCdXQ6CiAgICAgLy8KQEAgLTQwMDcsMTQgKzQwMTAsMjUg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKKyAgICAvLyBGSVhNRTogSWYgd2UgdXNlIHRoZSBHZXRCeUlkU3RhdHVzIGZv
ciBhbnl0aGluZyB0aGVuIHdlIHNob3VsZCByZWNvcmQgaXQgYW5kIGluc2VydCBhIG5vZGUKKyAg
ICAvLyBhZnRlciBldmVyeXRoaW5nIGVsc2UgKGxpa2UgdGhlIEdldEJ5T2Zmc2V0IG9yIHdoYXRl
dmVyKSB0aGF0IHdpbGwgZmlsdGVyIHRoZSByZWNvcmRlZAorICAgIC8vIEdldEJ5SWRTdGF0dXMu
IFRoYXQgbWVhbnMgdGhhdCB0aGUgY29uc3RhbnQgZm9sZGVyIGFsc28gbmVlZHMgdG8gZG8gdGhl
IHNhbWUhCisgICAgCiAgICAgaWYgKGdldEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSA+IDEpIHsK
ICAgICAgICAgaWYgKGdldEJ5SWRTdGF0dXMubWFrZXNDYWxscygpIHx8ICFpc0ZUTChtX2dyYXBo
Lm1fcGxhbi5tb2RlKQotICAgICAgICAgICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3JwaGljQWNj
ZXNzSW5saW5pbmcoKSkgeworICAgICAgICAgICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3JwaGlj
QWNjZXNzSW5saW5pbmcoKQorICAgICAgICAgICAgfHwgZ2V0QnlJZFN0YXR1cy5udW1WYXJpYW50
cygpID4gT3B0aW9uczo6bWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplKCkpIHsK
KyAgICAgICAgICAgIGlmIChmYWxzZSAmJiBnZXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgPiBP
cHRpb25zOjptYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemUoKSkgeworICAgICAg
ICAgICAgICAgIGRhdGFMb2coIkF0ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOworICAg
ICAgICAgICAgICAgIGRhdGFMb2coIkdpdmluZyB1cCBvbjogIiwgZ2V0QnlJZFN0YXR1cywgIlxu
Iik7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRlc3Rp
bmF0aW9uT3BlcmFuZCksCiAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChnZXRCeUlkLCBPcElu
Zm8oaWRlbnRpZmllck51bWJlciksIE9wSW5mbyhwcmVkaWN0aW9uKSwgYmFzZSkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICBhZGRUb0dyYXBoKEZp
bHRlckdldEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2Vz
LmFkZEdldEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgZ2V0QnlJZFN0YXR1cykpLCBi
YXNlKTsKKyAgICAgICAgCiAgICAgICAgIFZlY3RvcjxNdWx0aUdldEJ5T2Zmc2V0Q2FzZSwgMj4g
Y2FzZXM7CiAgICAgICAgIAogICAgICAgICAvLyAxKSBFbWl0IHByb3RvdHlwZSBzdHJ1Y3R1cmUg
Y2hlY2tzIGZvciBhbGwgY2hhaW5zLiBUaGlzIGNvdWxkIHNvcnQgb2YgbWF5YmUgbm90IGJlCkBA
IC00MDU2LDEwICs0MDcwLDEyIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQo
CiAgICAgICAgICAgICBhZGRUb0dyYXBoKE11bHRpR2V0QnlPZmZzZXQsIE9wSW5mbyhkYXRhKSwg
T3BJbmZvKHByZWRpY3Rpb24pLCBiYXNlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyAg
ICBhZGRUb0dyYXBoKEZpbHRlckdldEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5y
ZWNvcmRlZFN0YXR1c2VzLmFkZEdldEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgZ2V0
QnlJZFN0YXR1cykpLCBiYXNlKTsKICAgICAKICAgICBBU1NFUlQoZ2V0QnlJZFN0YXR1cy5udW1W
YXJpYW50cygpID09IDEpOwogICAgIEdldEJ5SWRWYXJpYW50IHZhcmlhbnQgPSBnZXRCeUlkU3Rh
dHVzWzBdOwotICAgICAgICAgICAgICAgIAorICAgIAogICAgIE5vZGUqIGxvYWRlZFZhbHVlID0g
bG9hZChwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YXJpYW50KTsKICAgICBp
ZiAoIWxvYWRlZFZhbHVlKSB7CiAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoZGVzdGluYXRp
b25PcGVyYW5kKSwKQEAgLTQxNTAsNyArNDE2NiwxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVQdXRCeUlkKAogICAgIAogICAgIGlmIChwdXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkg
PiAxKSB7CiAgICAgICAgIGlmICghaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkgfHwgcHV0QnlJ
ZFN0YXR1cy5tYWtlc0NhbGxzKCkKLSAgICAgICAgICAgIHx8ICFPcHRpb25zOjp1c2VQb2x5bW9y
cGhpY0FjY2Vzc0lubGluaW5nKCkpIHsKKyAgICAgICAgICAgIHx8ICFPcHRpb25zOjp1c2VQb2x5
bW9ycGhpY0FjY2Vzc0lubGluaW5nKCkKKyAgICAgICAgICAgIHx8IHB1dEJ5SWRTdGF0dXMubnVt
VmFyaWFudHMoKSA+IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6
ZSgpKSB7CisgICAgICAgICAgICBpZiAoZmFsc2UgJiYgcHV0QnlJZFN0YXR1cy5udW1WYXJpYW50
cygpID4gT3B0aW9uczo6bWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplKCkpCisg
ICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2aW5nIHVwIG9uOiAiLCBwdXRCeUlkU3RhdHVzLCAi
XG4iKTsKICAgICAgICAgICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIHZh
bHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KQEAgLTQxNjgsNiArNDE4Nyw4IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1
dEJ5SWQoCiAgICAgICAgIAogICAgICAgICBpZiAoVU5MSUtFTFkobV9ncmFwaC5jb21waWxhdGlv
bigpKSkKICAgICAgICAgICAgIG1fZ3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZFB1
dEJ5SWQoKTsKKyAgICAgICAgCisgICAgICAgIGFkZFRvR3JhcGgoRmlsdGVyUHV0QnlJZFN0YXR1
cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkUHV0QnlJZFN0YXR1
cyhjdXJyZW50Q29kZU9yaWdpbigpLCBwdXRCeUlkU3RhdHVzKSksIGJhc2UpOwogCiAgICAgICAg
IGZvciAoY29uc3QgUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBwdXRCeUlkU3RhdHVzLnZhcmlh
bnRzKCkpIHsKICAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJJbmZlcnJlZFR5cGUodmFyaWFu
dC5yZXF1aXJlZFR5cGUoKSk7CkBAIC00MTg5LDYgKzQyMTAsOCBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVQdXRCeUlkKAogICAgIAogICAgIHN3aXRjaCAodmFyaWFudC5raW5kKCkpIHsK
ICAgICBjYXNlIFB1dEJ5SWRWYXJpYW50OjpSZXBsYWNlOiB7CisgICAgICAgIGFkZFRvR3JhcGgo
RmlsdGVyUHV0QnlJZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVz
ZXMuYWRkUHV0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBwdXRCeUlkU3RhdHVzKSks
IGJhc2UpOworICAgICAgICAKICAgICAgICAgc3RvcmUoYmFzZSwgaWRlbnRpZmllck51bWJlciwg
dmFyaWFudCwgdmFsdWUpOwogICAgICAgICBpZiAoVU5MSUtFTFkobV9ncmFwaC5jb21waWxhdGlv
bigpKSkKICAgICAgICAgICAgIG1fZ3JhcGguY29tcGlsYXRpb24oKS0+bm90aWNlSW5saW5lZFB1
dEJ5SWQoKTsKQEAgLTQxOTYsNiArNDIxOSw4IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZVB1dEJ5SWQoCiAgICAgfQogICAgIAogICAgIGNhc2UgUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRp
b246IHsKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJQdXRCeUlkU3RhdHVzLCBPcEluZm8obV9n
cmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcy5hZGRQdXRCeUlkU3RhdHVzKGN1cnJlbnRDb2Rl
T3JpZ2luKCksIHB1dEJ5SWRTdGF0dXMpKSwgYmFzZSk7CisgICAgICAgIAogICAgICAgICBhZGRU
b0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFy
aWFudC5vbGRTdHJ1Y3R1cmUoKSkpLCBiYXNlKTsKICAgICAgICAgaWYgKCFjaGVjayh2YXJpYW50
LmNvbmRpdGlvblNldCgpKSkgewogICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRp
Zmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0KTsKQEAgLTQyNjMsNiAr
NDI4OCw4IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgfQogICAg
ICAgICAKICAgICBjYXNlIFB1dEJ5SWRWYXJpYW50OjpTZXR0ZXI6IHsKKyAgICAgICAgYWRkVG9H
cmFwaChGaWx0ZXJQdXRCeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRT
dGF0dXNlcy5hZGRQdXRCeUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIHB1dEJ5SWRTdGF0
dXMpKSwgYmFzZSk7CisgICAgICAgIAogICAgICAgICBOb2RlKiBsb2FkZWRWYWx1ZSA9IGxvYWQo
U3BlY0NlbGxPdGhlciwgYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFyaWFudCk7CiAgICAgICAg
IGlmICghbG9hZGVkVmFsdWUpIHsKICAgICAgICAgICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50
aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCk7CkBAIC01MjAwLDcg
KzUyMjcsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAg
ICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW2lk
ZW50aWZpZXJOdW1iZXJdOwogICAgICAgICAgICAgR2V0QnlJZFN0YXR1cyBnZXRCeUlkU3RhdHVz
ID0gR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgICAgICAgICBtX2lubGluZVN0
YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIG1fZGZnQ29kZUJsb2NrLAotICAgICAgICAgICAgICAg
IG1faW5saW5lU3RhY2tUb3AtPm1fc3R1YkluZm9zLCBtX2RmZ1N0dWJJbmZvcywKKyAgICAgICAg
ICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNr
LAogICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCksIHVpZCk7CiAKICAgICAgICAg
ICAgIEFjY2Vzc1R5cGUgdHlwZSA9IEFjY2Vzc1R5cGU6OkdldDsKQEAgLTY2MDMsMTIgKzY2MzAs
MjAgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZQogICAgICAgICAv
LyBXZSBkbyB0aGlzIHdoaWxlIGhvbGRpbmcgdGhlIGxvY2sgYmVjYXVzZSB3ZSB3YW50IHRvIGVu
Y291cmFnZSBTdHJ1Y3R1cmVTdHViSW5mbydzCiAgICAgICAgIC8vIHRvIGJlIHBvdGVudGlhbGx5
IGFkZGVkIHRvIG9wZXJhdGlvbnMgYW5kIGJlY2F1c2UgdGhlIHByb2ZpbGVkIGJsb2NrIGNvdWxk
IGJlIGluIHRoZQogICAgICAgICAvLyBtaWRkbGUgb2YgTExJbnQtPkpJVCB0aWVyLXVwIGluIHdo
aWNoIGNhc2Ugd2Ugd291bGQgYmUgYWRkaW5nIHRoZSBpbmZvJ3MgcmlnaHQgbm93LgotICAgICAg
ICBpZiAobV9wcm9maWxlZEJsb2NrLT5oYXNCYXNlbGluZUpJVFByb2ZpbGluZygpKSB7Ci0gICAg
ICAgICAgICBtX3Byb2ZpbGVkQmxvY2stPmdldFN0dWJJbmZvTWFwKGxvY2tlciwgbV9zdHViSW5m
b3MpOwotICAgICAgICAgICAgbV9wcm9maWxlZEJsb2NrLT5nZXRDYWxsTGlua0luZm9NYXAobG9j
a2VyLCBtX2NhbGxMaW5rSW5mb3MpOwotICAgICAgICAgICAgbV9wcm9maWxlZEJsb2NrLT5nZXRC
eVZhbEluZm9NYXAobG9ja2VyLCBtX2J5VmFsSW5mb3MpOworICAgICAgICBpZiAobV9wcm9maWxl
ZEJsb2NrLT5oYXNCYXNlbGluZUpJVFByb2ZpbGluZygpKQorICAgICAgICAgICAgbV9wcm9maWxl
ZEJsb2NrLT5nZXRJQ1N0YXR1c01hcChsb2NrZXIsIG1fYmFzZWxpbmVNYXApOworICAgIH0KKyAg
ICAKKyAgICBtX29wdGltaXplZENvbnRleHQuYmFzZWxpbmVDb2RlQmxvY2sgPSBtX3Byb2ZpbGVk
QmxvY2s7CisgICAgaWYgKE9wdGlvbnM6OnVzZVBvbHl2YXJpYW50RGV2aXJ0dWFsaXphdGlvbigp
KSB7CisgICAgICAgIENvZGVCbG9jayogb3B0aW1pemVkQmxvY2sgPSBtX3Byb2ZpbGVkQmxvY2st
PnJlcGxhY2VtZW50KCk7CisgICAgICAgIG1fb3B0aW1pemVkQ29udGV4dC5vcHRpbWl6ZWRDb2Rl
QmxvY2sgPSBvcHRpbWl6ZWRCbG9jazsKKyAgICAgICAgaWYgKG9wdGltaXplZEJsb2NrKSB7Cisg
ICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG9wdGltaXplZEJsb2NrLT5tX2xv
Y2spOworICAgICAgICAgICAgb3B0aW1pemVkQmxvY2stPmdldElDU3RhdHVzTWFwKGxvY2tlciwg
bV9vcHRpbWl6ZWRDb250ZXh0Lm1hcCk7CiAgICAgICAgIH0KICAgICB9CisgICAgbV9pY0NvbnRl
eHRTdGFjay5hcHBlbmQoJm1fb3B0aW1pemVkQ29udGV4dCk7CiAgICAgCiAgICAgaW50IGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzV2l0aEZpeHVwID0gc3RkOjptYXg8aW50Pihhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcywgY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOwogCkBAIC02Njcz
LDYgKzY3MDgsMTMgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZQog
ICAgIGJ5dGVDb2RlUGFyc2VyLT5tX2lubGluZVN0YWNrVG9wID0gdGhpczsKIH0KIAorQnl0ZUNv
ZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6On5JbmxpbmVTdGFja0VudHJ5KCkKK3sKKyAgICBt
X2J5dGVDb2RlUGFyc2VyLT5tX2lubGluZVN0YWNrVG9wID0gbV9jYWxsZXI7CisgICAgUkVMRUFT
RV9BU1NFUlQobV9ieXRlQ29kZVBhcnNlci0+bV9pY0NvbnRleHRTdGFjay5sYXN0KCkgPT0gJm1f
b3B0aW1pemVkQ29udGV4dCk7CisgICAgbV9ieXRlQ29kZVBhcnNlci0+bV9pY0NvbnRleHRTdGFj
ay5yZW1vdmVMYXN0KCk7Cit9CisKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2Nr
KCkKIHsKICAgICBjbGVhckNhY2hlcygpOwpAQCAtNjc2OSwxNSArNjgxMSw2IEBAIHZvaWQgQnl0
ZUNvZGVQYXJzZXI6OnBhcnNlKCkKICAgICAKICAgICBWRVJCT1NFX0xPRygiUGFyc2luZyAiLCAq
bV9jb2RlQmxvY2ssICJcbiIpOwogICAgIAotICAgIG1fZGZnQ29kZUJsb2NrID0gbV9ncmFwaC5t
X3BsYW4ucHJvZmlsZWRERkdDb2RlQmxvY2s7Ci0gICAgaWYgKGlzRlRMKG1fZ3JhcGgubV9wbGFu
Lm1vZGUpICYmIG1fZGZnQ29kZUJsb2NrCi0gICAgICAgICYmIE9wdGlvbnM6OnVzZVBvbHl2YXJp
YW50RGV2aXJ0dWFsaXphdGlvbigpKSB7Ci0gICAgICAgIGlmIChPcHRpb25zOjp1c2VQb2x5dmFy
aWFudENhbGxJbmxpbmluZygpKQotICAgICAgICAgICAgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVE
RkdTdGF0dXNlcyhtX2RmZ0NvZGVCbG9jaywgbV9jYWxsQ29udGV4dE1hcCk7Ci0gICAgICAgIGlm
IChPcHRpb25zOjp1c2VQb2x5dmFyaWFudEJ5SWRJbmxpbmluZygpKQotICAgICAgICAgICAgbV9k
ZmdDb2RlQmxvY2stPmdldFN0dWJJbmZvTWFwKG1fZGZnU3R1YkluZm9zKTsKLSAgICB9Ci0gICAg
CiAgICAgSW5saW5lU3RhY2tFbnRyeSBpbmxpbmVTdGFja0VudHJ5KAogICAgICAgICB0aGlzLCBt
X2NvZGVCbG9jaywgbV9wcm9maWxlZEJsb2NrLCAwLCBWaXJ0dWFsUmVnaXN0ZXIoKSwgVmlydHVh
bFJlZ2lzdGVyKCksCiAgICAgICAgIG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIElubGlu
ZUNhbGxGcmFtZTo6Q2FsbCwgbnVsbHB0cik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0Niw2ICs0NDYs
OSBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBQ
cm9maWxlQ29udHJvbEZsb3c6CiAgICAgY2FzZSBQdXRIaW50OgogICAgIGNhc2UgSW5pdGlhbGl6
ZUVudHJ5cG9pbnRBcmd1bWVudHM6CisgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAg
ICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVz
OgogICAgICAgICB3cml0ZShTaWRlU3RhdGUpOwogICAgICAgICByZXR1cm47CiAgICAgICAgIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRT
dGF0ZS5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3NSw5IEBA
IGJvb2wgY2xvYmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBoLCBOb2QKICAgICBjYXNlIEZlbmNl
ZFN0b3JlQmFycmllcjoKICAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgogICAgIGNh
c2UgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKKyAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3Rh
dHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlclB1dEJ5
SWRTdGF0dXM6CiAgICAgICAgIC8vIFRoZXNlIGRvIGNsb2JiZXIgbWVtb3J5LCBidXQgbm90aGlu
ZyB0aGF0IGlzIG9ic2VydmFibGUuIEl0IG1heSBiZSBuaWNlIHRvIHNlcGFyYXRlIHRoZQogICAg
ICAgICAvLyBoZWFwcyBpbnRvIHRob3NlIHRoYXQgYXJlIG9ic2VydmFibGUgYW5kIHRob3NlIHRo
YXQgYXJlbid0LCBidXQgd2UgZG9uJ3QgZG8gdGhhdCByaWdodCBub3cuCiAgICAgICAgIC8vIEZJ
WE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NDQwCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuaAkocmV2aXNpb24gMjMy
MjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEyNSw2ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgQmFnPENvZGVCbG9ja0pl
dHRpc29uaW5nV2F0Y2hwb2ludD4gd2F0Y2hwb2ludHM7CiAgICAgQmFnPEFkYXB0aXZlU3RydWN0
dXJlV2F0Y2hwb2ludD4gYWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50czsKICAgICBCYWc8QWRh
cHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50PiBhZGFwdGl2ZUluZmVycmVkUHJv
cGVydHlWYWx1ZVdhdGNocG9pbnRzOworICAgIFJlY29yZGVkU3RhdHVzZXMgcmVjb3JkZWRTdGF0
dXNlczsKICAgICBWZWN0b3I8SnVtcFJlcGxhY2VtZW50PiBqdW1wUmVwbGFjZW1lbnRzOwogICAg
IAogICAgIFNjcmF0Y2hCdWZmZXIqIGNhdGNoT1NSRW50cnlCdWZmZXI7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25z
dGFudEZvbGRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1Nyw3ICs1NTcsMTUgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBhdXRvIGFkZEZpbHRlclN0YXR1cyA9IFsmXSAo
KSB7CisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAg
ICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBGaWx0ZXJHZXRCeUlk
U3RhdHVzLCBub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9n
cmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcy5hZGRHZXRCeUlkU3RhdHVzKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYywgc3RhdHVzKSksCisgICAgICAgICAgICAgICAgICAgICAgICBiYXNlVmFsdWUp
OworICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
aWYgKHN0YXR1cy5udW1WYXJpYW50cygpID09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgYWRk
RmlsdGVyU3RhdHVzKCk7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRHZXRCeU9mZnNldChpbmRl
eEluQmxvY2ssIG5vZGUsIGJhc2VWYWx1ZSwgc3RhdHVzWzBdLCBpZGVudGlmaWVyTnVtYmVyKTsK
ICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwpAQCAtNTY2LDYgKzU3NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaWYg
KCFpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgYWRkRmlsdGVyU3RhdHVzKCk7CiAg
ICAgICAgICAgICAgICAgTXVsdGlHZXRCeU9mZnNldERhdGEqIGRhdGEgPSBtX2dyYXBoLm1fbXVs
dGlHZXRCeU9mZnNldERhdGEuYWRkKCk7CiAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBHZXRC
eUlkVmFyaWFudCYgdmFyaWFudCA6IHN0YXR1cy52YXJpYW50cygpKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGRhdGEtPmNhc2VzLmFwcGVuZCgKQEAgLTYzOSw2ICs2NDgsMTEgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICBpZiAoIWFsbEdvb2QpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dE5vZGUoCisgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIEZpbHRl
clB1dEJ5SWRTdGF0dXMsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgT3BJbmZv
KG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkUHV0QnlJZFN0YXR1cyhub2RlLT5v
cmlnaW4uc2VtYW50aWMsIHN0YXR1cykpLAorICAgICAgICAgICAgICAgICAgICBiYXNlVmFsdWUp
OworICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChzdGF0dXMubnVtVmFyaWFu
dHMoKSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRQdXRCeU9mZnNldChpbmRleElu
QmxvY2ssIG5vZGUsIGJhc2VWYWx1ZSwgc3RhdHVzWzBdLCBpZGVudGlmaWVyTnVtYmVyKTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMiw2ICszMTIsOSBAQCBib29s
IGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBBdG9taWNzWG9yOgog
ICAgIGNhc2UgQXRvbWljc0lzTG9ja0ZyZWU6CiAgICAgY2FzZSBNYXRjaFN0cnVjdHVyZToKKyAg
ICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1
czoKKyAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGNhc2UgUHVzaFdpdGhTY29wZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzOCw2
ICsyMTM4LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRHbG9iYWxUaGlzOgogICAgICAg
ICBjYXNlIEV4dHJhY3RWYWx1ZUZyb21XZWFrTWFwR2V0OgogICAgICAgICBjYXNlIENQVUludHJp
bnNpYzoKKyAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICAgICAgY2FzZSBG
aWx0ZXJHZXRCeUlkU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAg
ICAgICAgICAgICBicmVhazsKICNlbHNlCiAgICAgICAgIGRlZmF1bHQ6CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1Niw2
ICszNTYsMTIgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdAogICAg
ICAgICBvdXQucHJpbnQoY29tbWEsICJpZ25vcmVMYXN0SW5kZXhJc1dyaXRhYmxlID0gIiwgbm9k
ZS0+aWdub3JlTGFzdEluZGV4SXNXcml0YWJsZSgpKTsKICAgICBpZiAobm9kZS0+aXNDb25zdGFu
dCgpKQogICAgICAgICBvdXQucHJpbnQoY29tbWEsIHBvaW50ZXJEdW1wSW5Db250ZXh0KG5vZGUt
PmNvbnN0YW50KCksIGNvbnRleHQpKTsKKyAgICBpZiAobm9kZS0+aGFzQ2FsbExpbmtTdGF0dXMo
KSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAqbm9kZS0+Y2FsbExpbmtTdGF0dXMoKSk7Cisg
ICAgaWYgKG5vZGUtPmhhc0dldEJ5SWRTdGF0dXMoKSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1h
LCAqbm9kZS0+Z2V0QnlJZFN0YXR1cygpKTsKKyAgICBpZiAobm9kZS0+aGFzUHV0QnlJZFN0YXR1
cygpKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICpub2RlLT5wdXRCeUlkU3RhdHVzKCkpOwog
ICAgIGlmIChub2RlLT5pc0p1bXAoKSkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiVDoiLCAq
bm9kZS0+dGFyZ2V0QmxvY2soKSk7CiAgICAgaWYgKG5vZGUtPmlzQnJhbmNoKCkpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24g
MjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE4OCw2ICsxODgsOCBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21w
aWxlRXhjZXB0aW9uSGFuZGxlCiAKIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYg
bGlua0J1ZmZlcikKIHsKKyAgICBtX2ppdENvZGUtPmNvbW1vbi5yZWNvcmRlZFN0YXR1c2VzID0g
V1RGTW92ZShtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKTsKKyAgICAKICAgICAvLyBM
aW5rIHRoZSBjb2RlLCBwb3B1bGF0ZSBkYXRhIGluIENvZGVCbG9jayBkYXRhIHN0cnVjdHVyZXMu
CiAgICAgbV9qaXRDb2RlLT5jb21tb24uZnJhbWVSZWdpc3RlckNvdW50ID0gbV9ncmFwaC5mcmFt
ZVJlZ2lzdGVyQ291bnQoKTsKICAgICBtX2ppdENvZGUtPmNvbW1vbi5yZXF1aXJlZFJlZ2lzdGVy
Q291bnRGb3JFeGl0ID0gbV9ncmFwaC5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0KCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHJldmlzaW9uIDIz
MjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwMSw2ICsxMDEsOSBAQCBFeGl0TW9kZSBtYXlFeGl0SW1wbChHcmFwaCYg
Z3JhcGgsIE5vZGUqCiAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUmVjb3JkUmVn
RXhwQ2FjaGVkUmVzdWx0OgogICAgIGNhc2UgTnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseToK
KyAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0
YXR1czoKKyAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgIGJyZWFrOwogCiAg
ICAgY2FzZSBTdHJDYXQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2
aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI3NjksNiArMjc2OSwzOSBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VS
VChvcCgpID09IFRocm93U3RhdGljRXJyb3IpOwogICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8
dWludDMyX3Q+KCk7CiAgICAgfQorICAgIAorICAgIGJvb2wgaGFzQ2FsbExpbmtTdGF0dXMoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gRmlsdGVyQ2FsbExpbmtTdGF0dXM7CisgICAg
fQorICAgIAorICAgIENhbGxMaW5rU3RhdHVzKiBjYWxsTGlua1N0YXR1cygpCisgICAgeworICAg
ICAgICBBU1NFUlQoaGFzQ2FsbExpbmtTdGF0dXMoKSk7CisgICAgICAgIHJldHVybiBtX29wSW5m
by5hczxDYWxsTGlua1N0YXR1cyo+KCk7CisgICAgfQorICAgIAorICAgIGJvb2wgaGFzR2V0QnlJ
ZFN0YXR1cygpCisgICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBGaWx0ZXJHZXRCeUlkU3Rh
dHVzOworICAgIH0KKyAgICAKKyAgICBHZXRCeUlkU3RhdHVzKiBnZXRCeUlkU3RhdHVzKCkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChoYXNHZXRCeUlkU3RhdHVzKCkpOworICAgICAgICByZXR1cm4g
bV9vcEluZm8uYXM8R2V0QnlJZFN0YXR1cyo+KCk7CisgICAgfQorICAgIAorICAgIGJvb2wgaGFz
UHV0QnlJZFN0YXR1cygpCisgICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBGaWx0ZXJQdXRC
eUlkU3RhdHVzOworICAgIH0KKyAgICAKKyAgICBQdXRCeUlkU3RhdHVzKiBwdXRCeUlkU3RhdHVz
KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNQdXRCeUlkU3RhdHVzKCkpOworICAgICAgICBy
ZXR1cm4gbV9vcEluZm8uYXM8UHV0QnlJZFN0YXR1cyo+KCk7CisgICAgfQogCiAgICAgdm9pZCBk
dW1wQ2hpbGRyZW4oUHJpbnRTdHJlYW0mIG91dCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5NCwxMSAr
Mzk0LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEdldEFy
Z3VtZW50LCBOb2RlUmVzdWx0SlMpIFwKICAgICBcCiAgICAgbWFjcm8oTmV3RnVuY3Rpb24sIE5v
ZGVSZXN1bHRKUykgXAotICAgIFwKICAgICBtYWNybyhOZXdHZW5lcmF0b3JGdW5jdGlvbiwgTm9k
ZVJlc3VsdEpTKSBcCi0gICAgXAogICAgIG1hY3JvKE5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24s
IE5vZGVSZXN1bHRKUykgXAotICAgIFwKICAgICBtYWNybyhOZXdBc3luY0Z1bmN0aW9uLCBOb2Rl
UmVzdWx0SlMpIFwKICAgICBcCiAgICAgLyogQmxvY2sgdGVybWluYWxzLiAqL1wKQEAgLTQ3NSw2
ICs0NzIsMTEgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIFwKICAgICAv
KiBVc2VkIGZvciAkdm0gcGVyZm9ybWFuY2UgZGVidWdnaW5nICovIFwKICAgICBtYWNybyhDUFVJ
bnRyaW5zaWMsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBcCisgICAg
LyogVXNlZCB0byBwcm92aWRlIGZlZWRiYWNrIHRvIHRoZSBJQyBwcm9maWxlci4gKi8gXAorICAg
IG1hY3JvKEZpbHRlckNhbGxMaW5rU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFj
cm8oRmlsdGVyR2V0QnlJZFN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEZp
bHRlclB1dEJ5SWRTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKIAogCiAvLyBUaGlzIGVudW0g
Z2VuZXJhdGVzIGEgbW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIGlkIGZvciBhbGwgTm9kZSB0eXBl
cywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdEJhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdEJhc2UuY3Bw
CShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXRCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MiwxMSArNDIsMTcgQEAgdm9pZCBPU1JF
eGl0QmFzZTo6Y29uc2lkZXJBZGRpbmdBc0ZyZXF1ZQogICAgICAgICBiYXNlbGluZUNvZGVCbG9j
a0Zvck9yaWdpbkFuZEJhc2VsaW5lQ29kZUJsb2NrKAogICAgICAgICAgICAgbV9jb2RlT3JpZ2lu
Rm9yRXhpdFByb2ZpbGUsIHByb2ZpbGVkQ29kZUJsb2NrKTsKICAgICBpZiAoc291cmNlUHJvZmls
ZWRDb2RlQmxvY2spIHsKKyAgICAgICAgRXhpdGluZ0lubGluZUtpbmQgaW5saW5lS2luZDsKKyAg
ICAgICAgaWYgKG1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlLmlubGluZUNhbGxGcmFtZSkKKyAg
ICAgICAgICAgIGlubGluZUtpbmQgPSBFeGl0RnJvbUlubGluZWQ7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGlubGluZUtpbmQgPSBFeGl0RnJvbU5vdElubGluZWQ7CisgICAgICAgIAogICAg
ICAgICBGcmVxdWVudEV4aXRTaXRlIHNpdGU7CiAgICAgICAgIGlmIChtX3dhc0hvaXN0ZWQpCi0g
ICAgICAgICAgICBzaXRlID0gRnJlcXVlbnRFeGl0U2l0ZShIb2lzdGluZ0ZhaWxlZCwgaml0VHlw
ZSk7CisgICAgICAgICAgICBzaXRlID0gRnJlcXVlbnRFeGl0U2l0ZShIb2lzdGluZ0ZhaWxlZCwg
aml0VHlwZSwgaW5saW5lS2luZCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNpdGUgPSBG
cmVxdWVudEV4aXRTaXRlKG1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlLmJ5dGVjb2RlSW5kZXgs
IG1fa2luZCwgaml0VHlwZSk7CisgICAgICAgICAgICBzaXRlID0gRnJlcXVlbnRFeGl0U2l0ZSht
X2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZS5ieXRlY29kZUluZGV4LCBtX2tpbmQsIGppdFR5cGUs
IGlubGluZUtpbmQpOwogICAgICAgICBFeGl0UHJvZmlsZTo6YWRkKHNvdXJjZVByb2ZpbGVkQ29k
ZUJsb2NrLCBzaXRlKTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1BsYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UGxhbi5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUGxhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzMyw2ICs2MzMsOCBAQCB2b2lkIFBsYW46
OmNoZWNrTGl2ZW5lc3NBbmRWaXNpdENoaWxkcmVuCiAgICAgY2xlYW5NdXN0SGFuZGxlVmFsdWVz
SWZOZWNlc3NhcnkoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtdXN0SGFuZGxlVmFsdWVzLnNp
emUoKTsgaS0tOykKICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChtdXN0SGFuZGxl
VmFsdWVzW2ldKTsKKyAgICAKKyAgICByZWNvcmRlZFN0YXR1c2VzLm1hcmtJZkNoZWFwKHZpc2l0
b3IpOwogCiAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxvY2spOwogICAgIHZp
c2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQoY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKTsKQEAgLTY0
OSw2ICs2NTEsMTEgQEAgdm9pZCBQbGFuOjpjaGVja0xpdmVuZXNzQW5kVmlzaXRDaGlsZHJlbgog
ICAgIHRyYW5zaXRpb25zLnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiB9CiAKK3ZvaWQgUGxhbjo6
ZmluYWxpemVJbkdDKCkKK3sKKyAgICByZWNvcmRlZFN0YXR1c2VzLmZpbmFsaXplKCk7Cit9CisK
IGJvb2wgUGxhbjo6aXNLbm93blRvQmVMaXZlRHVyaW5nR0MoKQogewogICAgIGlmIChzdGFnZSA9
PSBDYW5jZWxsZWQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaAkocmV2aXNp
b24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgJKHdvcmtp
bmcgY29weSkKQEAgLTcyLDYgKzcyLDcgQEAgc3RydWN0IFBsYW4gOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZQogICAgIHZvaWQgaXRlcmF0ZUNvZGVCbG9ja3NGb3JHQyhjb25zdCBGdW5jJik7
CiAgICAgdm9pZCBjaGVja0xpdmVuZXNzQW5kVmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOwog
ICAgIGJvb2wgaXNLbm93blRvQmVMaXZlRHVyaW5nR0MoKTsKKyAgICB2b2lkIGZpbmFsaXplSW5H
QygpOwogICAgIHZvaWQgY2FuY2VsKCk7CiAKICAgICBib29sIGNhblRpZXJVcEFuZE9TUkVudGVy
KCkgY29uc3QgeyByZXR1cm4gIXRpZXJVcEFuZE9TUkVudGVyQnl0ZWNvZGVzLmlzRW1wdHkoKTsg
fQpAQCAtMTA0LDYgKzEwNSw3IEBAIHN0cnVjdCBQbGFuIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGUKICAgICBEZXNpcmVkSWRlbnRpZmllcnMgaWRlbnRpZmllcnM7CiAgICAgRGVzaXJlZFdl
YWtSZWZlcmVuY2VzIHdlYWtSZWZlcmVuY2VzOwogICAgIERlc2lyZWRUcmFuc2l0aW9ucyB0cmFu
c2l0aW9uczsKKyAgICBSZWNvcmVkU3RhdHVzZXMgcmVjb3JkZWRTdGF0dXNlczsKICAgICAKICAg
ICBib29sIHdpbGxUcnlUb1RpZXJVcCB7IGZhbHNlIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwNiw2
ICsxMjA2LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJbml0aWFsaXplRW50cnlwb2ludEFy
Z3VtZW50czoKICAgICAgICAgY2FzZSBXZWFrU2V0QWRkOgogICAgICAgICBjYXNlIFdlYWtNYXBT
ZXQ6CisgICAgICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgICAgIGNhc2UgRmls
dGVyR2V0QnlJZFN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgLy8gVGhpcyBnZXRzIGlnbm9y
ZWQgYmVjYXVzZSBpdCBvbmx5IHByZXRlbmRzIHRvIHByb2R1Y2UgYSB2YWx1ZS4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAy
MzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNDc4LDYgKzQ3OCwxMyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJz
dHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgICAgIC8vIGFscmVhZHkgZm9yY2UgdGhlc2UgdGhpbmdz
IHRvIGJlIG9yZGVyZWQgcHJlY2lzZWx5LiBJJ20ganVzdCBub3QgY29uZmlkZW50IGVub3VnaCBp
biBteQogICAgICAgICAvLyBlZmZlY3QgYmFzZWQgbWVtb3J5IG1vZGVsIHRvIHJlbHkgc29sZWx5
IG9uIHRoYXQgcmlnaHQgbm93LgogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAg
IGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJHZXRCeUlkU3RhdHVz
OgorICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKKyAgICAgICAgLy8gV2UgZG9uJ3Qgd2Fu
dCB0aGVzZSB0byBiZSBtb3ZlZCBhbnl3aGVyZSBvdGhlciB0aGFuIHdoZXJlIHdlIHB1dCB0aGVt
LCBzaW5jZSB3ZSB3YW50IHRoZW0KKyAgICAgICAgLy8gdG8gY2FwdHVyZSAicHJvZmlsaW5nIiBh
dCB0aGUgcG9pbnQgaW4gY29udHJvbCBmbG93IGhlcmUgdGhlIHVzZXIgcHV0IHRoZW0uCisgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgY2FzZSBHZXRJbmRl
eGVkUHJvcGVydHlTdG9yYWdlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MDMzLDYgKzQwMzMsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmVPckVtcHR5OgogICAgICAg
ICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbm9kZSwgIkNoZWNrU3RydWN0dXJlT3JFbXB0eSBv
bmx5IHVzZWQgaW4gNjQtYml0IERGRyIpOwogICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAg
Y2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0dXM6
CisgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgorICAgICAgICBicmVhazsKIAogICAgIGNh
c2UgTGFzdE5vZGVUeXBlOgogICAgIGNhc2UgUGhpOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyMzIyMjcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NjI2LDYgKzQ2MjYsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEZp
bHRlckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICBj
YXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CisgICAgICAgIGJyZWFrOworCiAjZWxzZSAvLyBFTkFC
TEUoRlRMX0pJVCkKICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgogICAgIGNhc2UgQ2hlY2tU
aWVyVXBBdFJldHVybjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xp
c3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xp
c3QuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1dvcmtsaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzkzLDggKzM5MywxMCBAQCB2b2lkIFdv
cmtsaXN0OjpyZW1vdmVEZWFkUGxhbnMoVk0mIHZtKQogICAgICAgICAgICAgUGxhbiogcGxhbiA9
IGl0ZXItPnZhbHVlLmdldCgpOwogICAgICAgICAgICAgaWYgKHBsYW4tPnZtICE9ICZ2bSkKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChwbGFuLT5pc0tub3duVG9C
ZUxpdmVEdXJpbmdHQygpKQorICAgICAgICAgICAgaWYgKHBsYW4tPmlzS25vd25Ub0JlTGl2ZUR1
cmluZ0dDKCkpIHsKKyAgICAgICAgICAgICAgICBwbGFuLT5maW5hbGl6ZUluR0MoKTsKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHBsYW4tPnN0YWdlICE9IFBsYW46OkNhbmNlbGxlZCk7IC8vIFNob3VsZCBub3QgYmUg
Y2FuY2VsbGVkLCB5ZXQuCiAgICAgICAgICAgICBBU1NFUlQoIWRlYWRQbGFuS2V5cy5jb250YWlu
cyhwbGFuLT5rZXkoKSkpOwogICAgICAgICAgICAgZGVhZFBsYW5LZXlzLmFkZChwbGFuLT5rZXko
KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTU2LDYgKzU2LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3Jv
KERpcmVjdEFyZ3VtZW50c19taW5DYXBhY2l0eSwgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZk1p
bkNhcGFjaXR5KCkpIFwKICAgICBtYWNybyhEaXJlY3RBcmd1bWVudHNfbWFwcGVkQXJndW1lbnRz
LCBEaXJlY3RBcmd1bWVudHM6Om9mZnNldE9mTWFwcGVkQXJndW1lbnRzKCkpIFwKICAgICBtYWNy
byhEaXJlY3RBcmd1bWVudHNfbW9kaWZpZWRBcmd1bWVudHNEZXNjcmlwdG9yLCBEaXJlY3RBcmd1
bWVudHM6Om9mZnNldE9mTW9kaWZpZWRBcmd1bWVudHNEZXNjcmlwdG9yKCkpIFwKKyAgICBtYWNy
byhGdW5jdGlvblJhcmVEYXRhX2FsbG9jYXRvciwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZP
YmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNl
dE9mQWxsb2NhdG9yKCkpIFwKKyAgICBtYWNybyhGdW5jdGlvblJhcmVEYXRhX3N0cnVjdHVyZSwg
RnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mU3RydWN0dXJlKCkpIFwKICAgICBtYWNybyhH
ZXR0ZXJTZXR0ZXJfZ2V0dGVyLCBHZXR0ZXJTZXR0ZXI6Om9mZnNldE9mR2V0dGVyKCkpIFwKICAg
ICBtYWNybyhHZXR0ZXJTZXR0ZXJfc2V0dGVyLCBHZXR0ZXJTZXR0ZXI6Om9mZnNldE9mU2V0dGVy
KCkpIFwKICAgICBtYWNybyhKU0FycmF5QnVmZmVyVmlld19sZW5ndGgsIEpTQXJyYXlCdWZmZXJW
aWV3OjpvZmZzZXRPZkxlbmd0aCgpKSBcCkBAIC0xMTIsMTAgKzExNCwxMCBAQCBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8oU3RyaW5nSW1wbF9sZW5ndGgsIFN0cmlu
Z0ltcGw6Omxlbmd0aE1lbW9yeU9mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlX2NsYXNz
SW5mbywgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVy
ZV9nbG9iYWxPYmplY3QsIFN0cnVjdHVyZTo6Z2xvYmFsT2JqZWN0T2Zmc2V0KCkpIFwKKyAgICBt
YWNybyhTdHJ1Y3R1cmVfaW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeSwgU3RydWN0dXJlOjpp
bmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5T2Zmc2V0KCkpIFwKKyAgICBtYWNybyhTdHJ1Y3R1
cmVfaW5saW5lQ2FwYWNpdHksIFN0cnVjdHVyZTo6aW5saW5lQ2FwYWNpdHlPZmZzZXQoKSkgXAog
ICAgIG1hY3JvKFN0cnVjdHVyZV9wcm90b3R5cGUsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0
KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfc3RydWN0dXJlSUQsIFN0cnVjdHVyZTo6c3RydWN0
dXJlSURPZmZzZXQoKSkgXAotICAgIG1hY3JvKFN0cnVjdHVyZV9pbmxpbmVDYXBhY2l0eSwgU3Ry
dWN0dXJlOjppbmxpbmVDYXBhY2l0eU9mZnNldCgpKSBcCi0gICAgbWFjcm8oU3RydWN0dXJlX2lu
ZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnksIFN0cnVjdHVyZTo6aW5kZXhpbmdNb2RlSW5jbHVk
aW5nSGlzdG9yeU9mZnNldCgpKSBcCiAgICAgbWFjcm8oSGFzaE1hcEltcGxfY2FwYWNpdHksIEhh
c2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+Pjo6b2Zmc2V0T2ZD
YXBhY2l0eSgpKSBcCiAgICAgbWFjcm8oSGFzaE1hcEltcGxfYnVmZmVyLCAgSGFzaE1hcEltcGw8
SGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT4+OjpvZmZzZXRPZkJ1ZmZlcigpKSBc
CiAgICAgbWFjcm8oSGFzaE1hcEltcGxfaGVhZCwgIEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8
SGFzaE1hcEJ1Y2tldERhdGFLZXk+Pjo6b2Zmc2V0T2ZIZWFkKCkpIFwKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDIzMjIy
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzUxLDYgKzM1MSwxMCBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNh
bkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICBjYXNlIFB1dEJ5
VmFsV2l0aFRoaXM6CiAgICAgY2FzZSBNYXRjaFN0cnVjdHVyZToKKyAgICBjYXNlIENyZWF0ZVRo
aXM6CisgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICBjYXNlIEZpbHRlckdldEJ5
SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICAvLyBUaGVz
ZSBhcmUgT0suCiAgICAgICAgIGJyZWFrOwogCkBAIC0zNjIsNyArMzY2LDYgQEAgaW5saW5lIENh
cGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgICAgICBicmVhazsKIAogICAgIGNh
c2UgSWRlbnRpdHlXaXRoUHJvZmlsZToKLSAgICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgY2FzZSBD
aGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6CiAgICAg
Y2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
OTEsNiArMzkxLDggQEAgcHVibGljOgogCiAgICAgICAgIC8vIFdlIHB1dCB0aGUgYmxvY2tzIGlu
dG8gdGhlIEIzIHByb2NlZHVyZSBpbiBhIHN1cGVyIHdlaXJkIG9yZGVyLiBOb3cgd2UgcmVvcmRl
ciB0aGVtLgogICAgICAgICBtX291dC5hcHBseUJsb2NrT3JkZXIoKTsKKyAgICAgICAgCisgICAg
ICAgIG1fc3RhdGUuaml0Q29kZS0+Y29tbW9uLnJlY29yZGVkU3RhdHVzZXMgPSBXVEZNb3ZlKG1f
Z3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTg0
Nyw2ICs4NDksOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNwcmVhZDoK
ICAgICAgICAgICAgIGNvbXBpbGVOZXdBcnJheVdpdGhTcHJlYWQoKTsKICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIENyZWF0ZVRoaXM6CisgICAgICAgICAgICBjb21waWxlQ3JlYXRl
VGhpcygpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU3ByZWFkOgogICAgICAg
ICAgICAgY29tcGlsZVNwcmVhZCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMzEyLDYgKzEz
MTcsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEJvdHRvbVZhbHVlOgogICAgICAgICBjYXNl
IEtpbGxTdGFjazoKICAgICAgICAgY2FzZSBJbml0aWFsaXplRW50cnlwb2ludEFyZ3VtZW50czoK
KyAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJH
ZXRCeUlkU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIERGR19DUkFTSChtX2dy
YXBoLCBtX25vZGUsICJVbnJlY29nbml6ZWQgbm9kZSBpbiBGVEwgYmFja2VuZCIpOwpAQCAtNTY2
Miw2ICs1NjcwLDQwIEBAIHByaXZhdGU6CiAKICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwog
ICAgIH0KKyAgICAKKyAgICB2b2lkIGNvbXBpbGVDcmVhdGVUaGlzKCkKKyAgICB7CisgICAgICAg
IExWYWx1ZSBjYWxsZWUgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworCisgICAgICAgIExC
YXNpY0Jsb2NrIGlzRnVuY3Rpb25CbG9jayA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExC
YXNpY0Jsb2NrIGhhc1JhcmVEYXRhID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2lj
QmxvY2sgc2xvd1BhdGggPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBj
b250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOworCisgICAgICAgIG1fb3V0LmJyYW5jaChp
c0Z1bmN0aW9uKGNhbGxlZSwgcHJvdmVuVHlwZShtX25vZGUtPmNoaWxkMSgpKSksIHVzdWFsbHko
aXNGdW5jdGlvbkJsb2NrKSwgcmFyZWx5KHNsb3dQYXRoKSk7CisKKyAgICAgICAgTEJhc2ljQmxv
Y2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpc0Z1bmN0aW9uQmxvY2ssIGhhc1JhcmVEYXRh
KTsKKyAgICAgICAgTFZhbHVlIHJhcmVEYXRhID0gbV9vdXQubG9hZFB0cihjYWxsZWUsIG1faGVh
cHMuSlNGdW5jdGlvbl9yYXJlRGF0YSk7CisgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5pc1pl
cm82NChyYXJlRGF0YSksIHJhcmVseShzbG93UGF0aCksIHVzdWFsbHkoaGFzUmFyZURhdGEpKTsK
KworICAgICAgICBtX291dC5hcHBlbmRUbyhoYXNSYXJlRGF0YSwgc2xvd1BhdGgpOworICAgICAg
ICBMVmFsdWUgYWxsb2NhdG9yID0gbV9vdXQubG9hZFB0cihyYXJlRGF0YSwgbV9oZWFwcy5GdW5j
dGlvblJhcmVEYXRhX2FsbG9jYXRvcik7CisgICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmUgPSBtX291
dC5sb2FkUHRyKHJhcmVEYXRhLCBtX2hlYXBzLkZ1bmN0aW9uUmFyZURhdGFfc3RydWN0dXJlKTsK
KyAgICAgICAgTFZhbHVlIGJ1dHRlcmZseSA9IG1fb3V0LmNvbnN0SW50UHRyKDApOworICAgICAg
ICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGFsbG9jYXRlT2JqZWN0
KGFsbG9jYXRvciwgc3RydWN0dXJlLCBidXR0ZXJmbHksIHNsb3dQYXRoKSk7CisgICAgICAgIG1f
b3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93UGF0
aCwgY29udGludWF0aW9uKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1f
b3V0LmFuY2hvcih2bUNhbGwoCisgICAgICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9w
ZXJhdGlvbkNyZWF0ZVRoaXMpLCBtX2NhbGxGcmFtZSwgY2FsbGVlLCBtX291dC5jb25zdEludDMy
KG1fbm9kZS0+aW5saW5lQ2FwYWNpdHkoKSkpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQp
OworICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQucGhpKEludDY0LCBmYXN0UmVzdWx0LCBz
bG93UmVzdWx0KTsKKworICAgICAgICBtdXRhdG9yRmVuY2UoKTsKKyAgICAgICAgc2V0SlNWYWx1
ZShyZXN1bHQpOworICAgIH0KIAogICAgIHZvaWQgY29tcGlsZVNwcmVhZCgpCiAgICAgewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMjMyMjI3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzUsNiArMjc1LDcgQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlT
dHJlYW1pbgogICAgIHYodW5zaWduZWQsIG1heEFjY2Vzc1ZhcmlhbnRMaXN0U2l6ZSwgOCwgTm9y
bWFsLCBudWxscHRyKSBcCiAgICAgdihib29sLCB1c2VQb2x5dmFyaWFudERldmlydHVhbGl6YXRp
b24sIHRydWUsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwgdXNlUG9seW1vcnBoaWNB
Y2Nlc3NJbmxpbmluZywgdHJ1ZSwgTm9ybWFsLCBudWxscHRyKSBcCisgICAgdih1bnNpZ25lZCwg
bWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplLCAzLCBOb3JtYWwsIG51bGxwdHIp
IFwKICAgICB2KGJvb2wsIHVzZVBvbHltb3JwaGljQ2FsbElubGluaW5nLCB0cnVlLCBOb3JtYWws
IG51bGxwdHIpIFwKICAgICB2KGJvb2wsIHVzZVBvbHltb3JwaGljQ2FsbElubGluaW5nRm9yTm9u
U3R1YlN0YXR1cywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYodW5zaWduZWQsIG1h
eFBvbHltb3JwaGljQ2FsbFZhcmlhbnRMaXN0U2l6ZSwgMTUsIE5vcm1hbCwgbnVsbHB0cikgXApA
QCAtMzIyLDkgKzMyMyw2IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFt
aW4KICAgICBcCiAgICAgdih1bnNpZ25lZCwgbWF4aW11bVZhcmFyZ3NGb3JJbmxpbmluZywgMTAw
LCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICBcCi0gICAgdihib29sLCB1c2VQb2x5dmFyaWFudENh
bGxJbmxpbmluZywgdHJ1ZSwgTm9ybWFsLCBudWxscHRyKSBcCi0gICAgdihib29sLCB1c2VQb2x5
dmFyaWFudEJ5SWRJbmxpbmluZywgdHJ1ZSwgTm9ybWFsLCBudWxscHRyKSBcCi0gICAgXAogICAg
IHYoYm9vbCwgdXNlTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UsIGZhbHNlLCBOb3JtYWwsICJT
ZXR0aW5nIHRvIHRydWUgYWxsb3dzIHRoZSBERkcncyBNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFz
ZSB0byBydW4uIikgXAogICAgIFwKICAgICB2KHVuc2lnbmVkLCBtYXhpbXVtQmluYXJ5U3RyaW5n
U3dpdGNoQ2FzZUxlbmd0aCwgNTAsIE5vcm1hbCwgbnVsbHB0cikgXAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341614</attachid>
            <date>2018-05-30 16:20:13 -0700</date>
            <delta_ts>2018-05-31 14:54:31 -0700</delta_ts>
            <desc>maybe it&apos;s done</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>140490</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIzMjIyNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNDQwLDYgKzQ0MCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUEKICAgICBieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgKICAgICBieXRlY29k
ZS9FeGVjdXRpb25Db3VudGVyLmgKICAgICBieXRlY29kZS9FeGl0S2luZC5oCisgICAgYnl0ZWNv
ZGUvRXhpdGluZ0lubGluZUtpbmQuaAogICAgIGJ5dGVjb2RlL0V4aXRpbmdKSVRUeXBlLmgKICAg
ICBieXRlY29kZS9FeHByZXNzaW9uUmFuZ2VJbmZvLmgKICAgICBieXRlY29kZS9IYW5kbGVySW5m
by5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyMzIyMjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIx
MiwxMyArMjEyLDE2IEBAIGJ5dGVjb2RlL0RpcmVjdEV2YWxDb2RlQ2FjaGUuY3BwCiBieXRlY29k
ZS9FdmFsQ29kZUJsb2NrLmNwcAogYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5j
cHAKIGJ5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIuY3BwCitieXRlY29kZS9FeGl0RmxhZy5jcHAK
IGJ5dGVjb2RlL0V4aXRLaW5kLmNwcAorYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuY3BwCiBi
eXRlY29kZS9FeGl0aW5nSklUVHlwZS5jcHAKIGJ5dGVjb2RlL0Z1bGxDb2RlT3JpZ2luLmNwcAog
Ynl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suY3BwCiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNw
cAogYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCiBieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlLmNwcAorYnl0ZWNvZGUvSUNTdGF0dXNNYXAuY3BwCiBieXRlY29kZS9JbmxpbmVBY2Nl
c3MuY3BwCiBieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwCiBieXRlY29kZS9JbmxpbmVDYWxs
RnJhbWVTZXQuY3BwCkBAIC0yNDUsNiArMjQ4LDcgQEAgYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNz
Q2FzZS5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRGbGFncy5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0
dXMuY3BwCiBieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAKK2J5dGVjb2RlL1JlY29yZGVkU3Rh
dHVzZXMuY3BwCiBieXRlY29kZS9SZWR1Y2VXaGl0ZXNwYWNlLmNwcAogYnl0ZWNvZGUvU3BlY2lh
bFBvaW50ZXIuY3BwCiBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtMjk3LDYgKzI5NywxMSBAQAogCQkwRjQyNkE0OTE0NjBDQkI3MDAxMzFGOEYgLyog
VmlydHVhbFJlZ2lzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjQyNkE0NjE0NjBDQkFCMDAxMzFGOEYgLyogVmlydHVhbFJlZ2lzdGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0MjZBNEIx
NDYwQ0Q2RTAwMTMxRjhGIC8qIERhdGFGb3JtYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDI2QTRBMTQ2MENENkIwMDEzMUY4RiAvKiBEYXRhRm9y
bWF0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEY0MzE3MzgxNDZCQUM2OTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0MzE3MzYxNDZCQUM2NTAwN0Uz
ODkwIC8qIExpc3RhYmxlSGFuZGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTBGNDRBN0IwMjBCRjY4NjIwMDIyQjE3MSAvKiBFeGl0RmxhZy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NEE3QUUy
MEJGNjg1RjAwMjJCMTcxIC8qIEV4aXRGbGFnLmggKi87IH07CisJCTBGNDRBN0IxMjBCRjY4Qzkw
MDIyQjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NEE3QTcyMEJGNjg1RDAwMjJCMTcxIC8qIEV4aXRpbmdJ
bmxpbmVLaW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEY0NEE3QjIyMEJGNjhDRTAwMjJCMTcxIC8qIElDU3RhdHVzTWFwLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ0QTdBRjIwQkY2ODVGMDAy
MkIxNzEgLyogSUNTdGF0dXNNYXAuaCAqLzsgfTsKKwkJMEY0NEE3QjMyMEJGNjhEMTAwMjJCMTcx
IC8qIFJlY29yZGVkU3RhdHVzZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNDRBN0FBMjBCRjY4NUUwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2Vz
LmggKi87IH07CisJCTBGNDRBN0I0MjBCRjY4RDkwMDIyQjE3MSAvKiBUZXJtaW5hdGVkQ29kZU9y
aWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0
NEE3QTgyMEJGNjg1RTAwMjJCMTcxIC8qIFRlcm1pbmF0ZWRDb2RlT3JpZ2luLmggKi87IH07CiAJ
CTBGNDU3MDM5MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NTcwMzcxQkU0NEM5
MTAwNjJBNjI5IC8qIEFpckVsaW1pbmF0ZURlYWRDb2RlLmggKi87IH07CiAJCTBGNDU3MDNEMUJF
NDVGMEEwMDYyQTYyOSAvKiBBaXJSZXBvcnRVc2VkUmVnaXN0ZXJzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ1NzAzQjFCRTQ1RjBBMDA2MkE2Mjkg
LyogQWlyUmVwb3J0VXNlZFJlZ2lzdGVycy5oICovOyB9OwogCQkwRjQ1NzA0MTFCRTU4NENBMDA2
MkE2MjkgLyogQjNUaW1pbmdTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY0NTcwM0YxQkU1ODRDQTAwNjJBNjI5IC8qIEIzVGltaW5nU2NvcGUu
aCAqLzsgfTsKQEAgLTIyODcsNiArMjI5MiwxNSBAQAogCQkwRjQyNkE0QTE0NjBDRDZCMDAxMzFG
OEYgLyogRGF0YUZvcm1hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRh
Rm9ybWF0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDJCM0MwMjAxRUI1MDkw
MDM1NzAzMSAvKiBBbGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQWxsb2NhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0MzE3
MzYxNDZCQUM2NTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBMaXN0YWJsZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEY0NEE3QTcyMEJGNjg1RDAwMjJCMTcxIC8qIEV4aXRpbmdJbmxpbmVLaW5kLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4aXRpbmdJbmxpbmVLaW5kLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDRBN0E4MjBCRjY4NUUwMDIyQjE3MSAvKiBU
ZXJtaW5hdGVkQ29kZU9yaWdpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
ZXJtaW5hdGVkQ29kZU9yaWdpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ0
QTdBOTIwQkY2ODVFMDAyMkIxNzEgLyogRXhpdEZsYWcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRXhpdEZsYWcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjQ0QTdBQTIwQkY2ODVFMDAyMkIxNzEgLyogUmVjb3JkZWRTdGF0dXNlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWNvcmRlZFN0YXR1c2VzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDRBN0FCMjBCRjY4NUUwMDIyQjE3MSAvKiBJQ1N0YXR1
c01hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJQ1N0YXR1c01h
cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDRBN0FDMjBCRjY4NUYwMDIy
QjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBFeGl0aW5nSW5saW5lS2luZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGNDRBN0FEMjBCRjY4NUYwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlY29yZGVkU3RhdHVzZXMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ0QTdBRTIwQkY2ODVGMDAyMkIxNzEg
LyogRXhpdEZsYWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhpdEZsYWcu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NEE3QUYyMEJGNjg1RjAwMjJCMTcx
IC8qIElDU3RhdHVzTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElDU3Rh
dHVzTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDU3MDM2MUJFNDRDOTEw
MDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBBaXJFbGltaW5hdGVEZWFkQ29kZS5jcHA7IHBhdGggPSBiMy9haXIv
QWlyRWxpbWluYXRlRGVhZENvZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjQ1NzAzNzFCRTQ0QzkxMDA2MkE2MjkgLyogQWlyRWxpbWluYXRlRGVhZENvZGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyRWxpbWluYXRlRGVhZENvZGUuaDsgcGF0aCA9
IGIzL2Fpci9BaXJFbGltaW5hdGVEZWFkQ29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjQ1NzAzQTFCRTQ1RjBBMDA2MkE2MjkgLyogQWlyUmVwb3J0VXNlZFJlZ2lzdGVycy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJSZXBvcnRVc2VkUmVn
aXN0ZXJzLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJSZXBvcnRVc2VkUmVnaXN0ZXJzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc1ODcsNiArNzYwMSwxNSBAQAogCQk5NjlBMDc4
RjBFRDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCTBGNDRBN0E5MjBCRjY4NUUwMDIyQjE3MSAvKiBFeGl0Rmxh
Zy5jcHAgKi8sCisJCQkJMEY0NEE3QUUyMEJGNjg1RjAwMjJCMTcxIC8qIEV4aXRGbGFnLmggKi8s
CisJCQkJMEY0NEE3QUMyMEJGNjg1RjAwMjJCMTcxIC8qIEV4aXRpbmdJbmxpbmVLaW5kLmNwcCAq
LywKKwkJCQkwRjQ0QTdBNzIwQkY2ODVEMDAyMkIxNzEgLyogRXhpdGluZ0lubGluZUtpbmQuaCAq
LywKKwkJCQkwRjQ0QTdBQjIwQkY2ODVFMDAyMkIxNzEgLyogSUNTdGF0dXNNYXAuY3BwICovLAor
CQkJCTBGNDRBN0FGMjBCRjY4NUYwMDIyQjE3MSAvKiBJQ1N0YXR1c01hcC5oICovLAorCQkJCTBG
NDRBN0FEMjBCRjY4NUYwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmNwcCAqLywKKwkJCQkw
RjQ0QTdBQTIwQkY2ODVFMDAyMkIxNzEgLyogUmVjb3JkZWRTdGF0dXNlcy5oICovLAorCQkJCTBG
NDRBN0E4MjBCRjY4NUUwMDIyQjE3MSAvKiBUZXJtaW5hdGVkQ29kZU9yaWdpbi5oICovLAogCQkJ
CTUzNEUwMzUyMUU1M0JCQTkwMDIxM0Y2NCAvKiBhY2Nlc3NDYXNlICovLAogCQkJCUUzQkZEMEI5
MURBRjgwN0MwMDY1REVBMiAvKiBBY2Nlc3NDYXNlU25pcHBldFBhcmFtcy5jcHAgKi8sCiAJCQkJ
RTNCRkQwQkExREFGODA3QzAwNjVERUEyIC8qIEFjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmggKi8s
CkBAIC04NDAxLDYgKzg0MjQsNyBAQAogCQkJCTUzRDQ0NERDMURBRjA4QUIwMEI5Mjc4NCAvKiBC
M1dhc21BZGRyZXNzVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzNDFGQzcyMURBQzM0M0Mw
MEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjJDNjNCMjFFNjBBRTQ3MDBDMTM4MzkgLyogQjNXaWR0aC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEY0NEE3QjIyMEJGNjhDRTAwMjJCMTcxIC8qIElDU3RhdHVzTWFwLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MjY3OEY4RjFBMDMxMDA5MDA2QTMwNkQgLyogQmFzaWNCbG9ja0xvY2F0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxNDdCODNBQzBFNkRCOEM5MDA0Nzc1QTQgLyogQmF0Y2hlZFRyYW5z
aXRpb25PcHRpbWl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2OTc2RTVGMUZBM0U4QkMwMEU3
QzRFMSAvKiBCaWdJbnRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCkBAIC04NjIwLDYgKzg2
NDQsNyBAQAogCQkJCTg2RUM5REM2MTMyOERGODIwMDJCMkFENyAvKiBERkdHZW5lcmF0aW9uSW5m
by5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQzlEQzgxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dy
YXBoLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJGQ0NGQTE4QTYwMDcwMDAxQTI3RjggLyogREZH
R3JhcGhTYWZlcG9pbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDRBN0IxMjBCRjY4QzkwMDIy
QjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMTc2NjEx
OTZCOEY5RTAwOTEwNTJBIC8qIERGR0hlYXBMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZDODQxNjkxQkE4QzMyMTAwNjE4MzdEIC8qIERGR0luZmVycmVkVHlwZUNoZWNrLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkIxNEUyMTE4MTI1NzBCMDA5QjZCNEQgLyogREZHSW5saW5lQ2FjaGVX
cmFwcGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTg3NzAsNiArODc5NSw3IEBACiAJCQkJQTdBOEFG
MzgxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTdBOEFGMzkxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYyNEU1NDMxN0VBOUY1OTAwQUJCMjE3IC8qIEZQUkluZm8uaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGNDRBN0IzMjBCRjY4RDEwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFMzRFREJGNzFEQjVGRkM5MDBEQzg3QTUgLyogRnJhbWVUcmFjZXJz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU1MTNBNjFENUE2ODJDMDBDMzJCRDggLyogRnJlZUxp
c3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjU4NUUxMUVFMDgwNUEwMDk1MTc2RCAvKiBGcmVl
TGlzdElubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtOTExOSw2ICs5MTQ1LDcgQEAKIAkJCQk3
MDEzQ0E4QzFCNDkxQTk0MDBDQUU2MTMgLyogSlNKb2IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
MThDNDE2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0xleGljYWxFbnZpcm9ubWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxOEM0MjMwRTE2RjVDRDAwQjM0NDYwIC8qIEpTTG9jay5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEY0NEE3QjAyMEJGNjg2MjAwMjJCMTcxIC8qIEV4aXRGbGFnLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDMjVENzA5QzE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTJBNEJCN0YzMThBNDExNzkwMDhBMEZDRCAvKiBKU01hbmFn
ZWRWYWx1ZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzAwODc0MjE3Q0JFOEVCMDBD
M0U2NDMgLyogSlNNYXAuaCBpbiBIZWFkZXJzICovLApAQCAtOTQzNSw2ICs5NDYyLDcgQEAKIAkJ
CQlBNzI5OURBMjE3RDEyODQ4MDA1RjVGRjkgLyogU2V0UHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkVFOTg0MTFBODg2NUI3MDA3NTRFOTMgLyogU2V0dXBWYXJhcmdzRnJhbWUuaCBp
biBIZWFkZXJzICovLAogCQkJCURDMTdFODE4MUM5QzkxRDkwMDhBNkFCMyAvKiBTaGFkb3dDaGlj
a2VuLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ0QTdCNDIwQkY2OEQ5MDAyMkIxNzEgLyogVGVy
bWluYXRlZENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCURDMTdFODE5MUM5QzkxREIw
MDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUz
MDIyRDMxRTNENzNBNTAwQkFDNDkzIC8qIFNpZ2lsbENyYXNoQW5hbHl6ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNEQ4Qzc4MUZDQTNDRkEwMDFEMzJBQyAvKiBTaW1wbGVNYXJraW5nQ29uc3Ry
YWludC5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnlWYWxJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5VmFsSW5mby5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2NiwxMiArMjY2LDYg
QEAgaW5saW5lIHVuc2lnbmVkIGdldEJ5VmFsSW5mb0J5dGVjb2RlSW5kZQogICAgIHJldHVybiBp
bmZvLT5ieXRlY29kZUluZGV4OwogfQogCi10eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdpbiwgQnlW
YWxJbmZvKiwgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFzaD4gQnlWYWxJbmZvTWFwOwotCi0jZWxz
ZSAvLyBFTkFCTEUoSklUKQotCi10eXBlZGVmIEhhc2hNYXA8aW50LCB2b2lkKj4gQnlWYWxJbmZv
TWFwOwotCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5j
cHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUR1bXBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4K
LSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyNyw3ICs0MjcsNyBAQCBzdGF0
aWMgdm9pZCBkdW1wQ2hhaW4oUHJpbnRTdHJlYW0mIG91dCwgCiB9CiAKIHRlbXBsYXRlPGNsYXNz
IEJsb2NrPgotdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50R2V0QnlJZENhY2hlU3Rh
dHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgU3R1YkluZm9NYXAmIG1h
cCkKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhQ
cmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNN
YXApCiB7CiAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNCZWdpbigp
ICsgbG9jYXRpb247CiAKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJs
b2NrPjo6cHJpbnRHZXRCeUlkCiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJQdHIgPSBtYXAuZ2V0KENvZGVPcmlnaW4obG9jYXRpb24pKSkg
eworICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YlB0ciA9IHN0YXR1c01hcC5nZXQoQ29k
ZU9yaWdpbihsb2NhdGlvbikpLnN0dWJJbmZvKSB7CiAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZv
JiBzdHViSW5mbyA9ICpzdHViUHRyOwogICAgICAgICBpZiAoc3R1YkluZm8ucmVzZXRCeUdDKQog
ICAgICAgICAgICAgb3V0LnByaW50KCIgKFJlc2V0IEJ5IEdDKSIpOwpAQCAtNDg4LDEyICs0ODgs
MTIgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50R2V0QnlJZAogICAgICAgICBv
dXQucHJpbnRmKCIpIik7CiAgICAgfQogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0obWFwKTsKKyAg
ICBVTlVTRURfUEFSQU0oc3RhdHVzTWFwKTsKICNlbmRpZgogfQogCiB0ZW1wbGF0ZTxjbGFzcyBC
bG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludFB1dEJ5SWRDYWNoZVN0YXR1
cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IFN0dWJJbmZvTWFwJiBtYXAp
Cit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRQdXRCeUlkQ2FjaGVTdGF0dXMoUHJp
bnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFw
KQogewogICAgIGNvbnN0IGF1dG8qIGluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zQmVnaW4oKSAr
IGxvY2F0aW9uOwogCkBAIC01MjEsNyArNTIxLDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9j
az46OnByaW50UHV0QnlJZAogICAgIH0KIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViUHRyID0gbWFwLmdldChDb2RlT3JpZ2luKGxvY2F0aW9uKSkpIHsK
KyAgICBpZiAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJQdHIgPSBzdGF0dXNNYXAuZ2V0KENvZGVP
cmlnaW4obG9jYXRpb24pKS5zdHViSW5mbykgewogICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYg
c3R1YkluZm8gPSAqc3R1YlB0cjsKICAgICAgICAgaWYgKHN0dWJJbmZvLnJlc2V0QnlHQykKICAg
ICAgICAgICAgIG91dC5wcmludCgiIChSZXNldCBCeSBHQykiKTsKQEAgLTU0NywxMiArNTQ3LDEy
IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludFB1dEJ5SWQKICAgICAgICAgb3V0
LnByaW50ZigiKSIpOwogICAgIH0KICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKG1hcCk7CisgICAg
VU5VU0VEX1BBUkFNKHN0YXR1c01hcCk7CiAjZW5kaWYKIH0KIAogdGVtcGxhdGU8Y2xhc3MgQmxv
Y2s+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRJbkJ5SWRDYWNoZVN0YXR1cyhQ
cmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IFN0dWJJbmZvTWFwJiBtYXApCit2
b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRJbkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0
cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7
CiAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNCZWdpbigpICsgbG9j
YXRpb247CiAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6
cHJpbnRJbkJ5SWRDCiAgICAgVU5VU0VEX1BBUkFNKGlkZW50KTsgLy8gdGVsbCB0aGUgY29tcGls
ZXIgdG8gc2h1dCB1cCBpbiBjZXJ0YWluIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb25zLgogCiAjaWYg
RU5BQkxFKEpJVCkKLSAgICBpZiAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJQdHIgPSBtYXAuZ2V0
KENvZGVPcmlnaW4obG9jYXRpb24pKSkgeworICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YlB0ciA9IHN0YXR1c01hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpLnN0dWJJbmZvKSB7CiAg
ICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9ICpzdHViUHRyOwogICAgICAgICBp
ZiAoc3R1YkluZm8ucmVzZXRCeUdDKQogICAgICAgICAgICAgb3V0LnByaW50KCIgKFJlc2V0IEJ5
IEdDKSIpOwpAQCAtNjAwLDI2ICs2MDAsMjYgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46
OnByaW50SW5CeUlkQwogICAgIH0KICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG91dCk7Ci0gICAg
VU5VU0VEX1BBUkFNKG1hcCk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXR1c01hcCk7CiAjZW5kaWYK
IH0KIAogI2lmIEVOQUJMRShKSVQpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaz4KLXZvaWQgQnl0
ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQ2FsbExpbmtTdGF0dXMoUHJpbnRTdHJlYW0mLCB1bnNp
Z25lZCwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJikKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+
OjpkdW1wQ2FsbExpbmtTdGF0dXMoUHJpbnRTdHJlYW0mLCB1bnNpZ25lZCwgY29uc3QgSUNTdGF0
dXNNYXAmKQogewogfQogCiB0ZW1wbGF0ZTw+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9j
az46OmR1bXBDYWxsTGlua1N0YXR1cyhQcmludFN0cmVhbSYgb3V0LCB1bnNpZ25lZCBsb2NhdGlv
biwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBtYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPENvZGVC
bG9jaz46OmR1bXBDYWxsTGlua1N0YXR1cyhQcmludFN0cmVhbSYgb3V0LCB1bnNpZ25lZCBsb2Nh
dGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBpZiAoYmxvY2soKS0+
aml0VHlwZSgpICE9IEpJVENvZGU6OkZUTEpJVCkKLSAgICAgICAgb3V0LnByaW50KCIgc3RhdHVz
KCIsIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKGJsb2NrKCksIGxvY2F0aW9uLCBtYXApLCAi
KSIpOworICAgICAgICBvdXQucHJpbnQoIiBzdGF0dXMoIiwgQ2FsbExpbmtTdGF0dXM6OmNvbXB1
dGVGb3IoYmxvY2soKSwgbG9jYXRpb24sIHN0YXR1c01hcCksICIpIik7CiB9CiAjZW5kaWYKIAog
dGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRD
YWxsT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCB0eXBlbmFtZSBCbG9j
azo6SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgY2hhciogb3AsIENhY2hlRHVtcE1vZGUgY2FjaGVE
dW1wTW9kZSwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZywgY29uc3QgQ2FsbExpbmtJbmZvTWFw
JiBtYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRDYWxsT3AoUHJpbnRTdHJl
YW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24q
JiBpdCwgY29uc3QgY2hhciogb3AsIENhY2hlRHVtcE1vZGUgY2FjaGVEdW1wTW9kZSwgYm9vbCYg
aGFzUHJpbnRlZFByb2ZpbGluZywgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKICAg
ICBpbnQgZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgaW50IGZ1bmMgPSAoKytpdCktPnUu
b3BlcmFuZDsKQEAgLTYzOCw3ICs2MzgsNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6
cHJpbnRDYWxsT3AoCiAgICAgICAgICAgICAgICAgb3V0LnByaW50ZigiIGxsaW50KCVwKSIsIG9i
amVjdCk7CiAgICAgICAgIH0KICNpZiBFTkFCTEUoSklUKQotICAgICAgICBpZiAoQ2FsbExpbmtJ
bmZvKiBpbmZvID0gbWFwLmdldChDb2RlT3JpZ2luKGxvY2F0aW9uKSkpIHsKKyAgICAgICAgaWYg
KENhbGxMaW5rSW5mbyogaW5mbyA9IHN0YXR1c01hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikp
LmNhbGxMaW5rSW5mbykgewogICAgICAgICAgICAgaWYgKGluZm8tPmhhdmVMYXN0U2VlbkNhbGxl
ZSgpKSB7CiAgICAgICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGluZm8tPmxhc3RTZWVu
Q2FsbGVlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGZ1bmN0aW9uID0ganNEeW5hbWlj
Q2FzdDxKU0Z1bmN0aW9uKj4oKnZtKCksIG9iamVjdCkpCkBAIC02NDgsOSArNjQ4LDkgQEAgdm9p
ZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50Q2FsbE9wKAogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKLSAgICAgICAgZHVtcENhbGxMaW5rU3RhdHVzKG91dCwgbG9jYXRpb24sIG1hcCk7
CisgICAgICAgIGR1bXBDYWxsTGlua1N0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdGF0dXNNYXApOwog
I2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKG1hcCk7CisgICAgICAgIFVOVVNFRF9QQVJBTShz
dGF0dXNNYXApOwogI2VuZGlmCiAgICAgfQogICAgICsraXQ7CkBAIC02NzgsNyArNjc4LDcgQEAg
dm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50TG9jYXRpbwogfQogCiB0ZW1wbGF0ZTxj
bGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUoUHJp
bnRTdHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiBiZWdpbiwg
Y29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFw
JiBzdHViSW5mb3MsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYgY2FsbExpbmtJbmZvcykKK3ZvaWQg
Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29u
c3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgdHlwZW5hbWUgQmxv
Y2s6Okluc3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAg
ICAgaW50IGxvY2F0aW9uID0gaXQgLSBiZWdpbjsKICAgICBib29sIGhhc1ByaW50ZWRQcm9maWxp
bmcgPSBmYWxzZTsKQEAgLTEwNzEsNyArMTA3MSw3IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8Qmxv
Y2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwog
ICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJpbl9ieV9pZCIp
OwogICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBpZGVudGlmaWVyKGlkMCkp
LmRhdGEoKSk7Ci0gICAgICAgIHByaW50SW5CeUlkQ2FjaGVTdGF0dXMob3V0LCBsb2NhdGlvbiwg
c3R1YkluZm9zKTsKKyAgICAgICAgcHJpbnRJbkJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9u
LCBzdGF0dXNNYXApOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBvcF9pbl9ieV92
YWw6IHsKQEAgLTEwOTUsNyArMTA5NSw3IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpk
dW1wQnl0ZWNvZGUKICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0
LCAiZ2V0X2J5X2lkX2RpcmVjdCIpOwogICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBpZE5hbWUo
aWQwLCBpZGVudGlmaWVyKGlkMCkpLmRhdGEoKSk7CiAgICAgICAgIGl0ICs9IDI7IC8vIEluY3Jl
bWVudCB1cCB0byB0aGUgdmFsdWUgcHJvZmlsZXIuCi0gICAgICAgIHByaW50R2V0QnlJZENhY2hl
U3RhdHVzKG91dCwgbG9jYXRpb24sIHN0dWJJbmZvcyk7CisgICAgICAgIHByaW50R2V0QnlJZENh
Y2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0YXR1c01hcCk7CiAgICAgICAgIGR1bXBWYWx1ZVBy
b2ZpbGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQpAQCAtMTEwNCw3ICsxMTA0LDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1
bXBCeXRlY29kZQogICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3Vuc2V0OgogICAgIGNhc2Ugb3BfZ2V0
X2FycmF5X2xlbmd0aDogewogICAgICAgICBwcmludEdldEJ5SWRPcChvdXQsIGxvY2F0aW9uLCBp
dCk7Ci0gICAgICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0dWJJ
bmZvcyk7CisgICAgICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0
YXR1c01hcCk7CiAgICAgICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQcmludGVk
UHJvZmlsaW5nKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTEzMCw3ICsxMTMwLDcgQEAg
dm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZQogICAgIH0KICAgICBjYXNl
IG9wX3B1dF9ieV9pZDogewogICAgICAgICBwcmludFB1dEJ5SWRPcChvdXQsIGxvY2F0aW9uLCBp
dCwgInB1dF9ieV9pZCIpOwotICAgICAgICBwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxv
Y2F0aW9uLCBzdHViSW5mb3MpOworICAgICAgICBwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhvdXQs
IGxvY2F0aW9uLCBzdGF0dXNNYXApOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBv
cF9wdXRfYnlfaWRfd2l0aF90aGlzOiB7CkBAIC0xNDc2LDE1ICsxNDc2LDE1IEBAIHZvaWQgQnl0
ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIGNhc2Ugb3BfY2FsbDogewotICAgICAgICBwcmludENhbGxPcChvdXQsIGxvY2F0aW9uLCBp
dCwgImNhbGwiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmlsaW5nLCBjYWxsTGlua0luZm9z
KTsKKyAgICAgICAgcHJpbnRDYWxsT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJjYWxsIiwgRHVtcENh
Y2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgc3RhdHVzTWFwKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIGNhc2Ugb3BfdGFpbF9jYWxsOiB7Ci0gICAgICAgIHByaW50Q2FsbE9wKG91dCwg
bG9jYXRpb24sIGl0LCAidGFpbF9jYWxsIiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGlu
ZywgY2FsbExpbmtJbmZvcyk7CisgICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0
LCAidGFpbF9jYWxsIiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgc3RhdHVzTWFw
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3BfY2FsbF9ldmFsOiB7Ci0gICAg
ICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAiY2FsbF9ldmFsIiwgRG9udER1bXBD
YWNoZXMsIGhhc1ByaW50ZWRQcm9maWxpbmcsIGNhbGxMaW5rSW5mb3MpOworICAgICAgICBwcmlu
dENhbGxPcChvdXQsIGxvY2F0aW9uLCBpdCwgImNhbGxfZXZhbCIsIERvbnREdW1wQ2FjaGVzLCBo
YXNQcmludGVkUHJvZmlsaW5nLCBzdGF0dXNNYXApOwogICAgICAgICBicmVhazsKICAgICB9CiAK
QEAgLTE1MjMsNyArMTUyMyw3IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0
ZWNvZGUKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3BfY29uc3RydWN0OiB7Ci0g
ICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAiY29uc3RydWN0IiwgRHVtcENh
Y2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgY2FsbExpbmtJbmZvcyk7CisgICAgICAgIHByaW50
Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAiY29uc3RydWN0IiwgRHVtcENhY2hlcywgaGFzUHJp
bnRlZFByb2ZpbGluZywgc3RhdHVzTWFwKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNh
c2Ugb3Bfc3RyY2F0OiB7CkBAIC0xNzc4LDEwICsxNzc4LDEwIEBAIHZvaWQgQnl0ZWNvZGVEdW1w
ZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKIH0KIAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lk
IEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJ5dGVjb2RlKEJsb2NrKiBibG9jaywgUHJpbnRT
dHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiBiZWdpbiwgY29u
c3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiBz
dHViSW5mb3MsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYgY2FsbExpbmtJbmZvcykKK3ZvaWQgQnl0
ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUoQmxvY2sqIGJsb2NrLCBQcmludFN0cmVh
bSYgb3V0LCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCB0
eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1
c01hcCkKIHsKICAgICBCeXRlY29kZUR1bXBlciBkdW1wZXIoYmxvY2ssIGJlZ2luKTsKLSAgICBk
dW1wZXIuZHVtcEJ5dGVjb2RlKG91dCwgYmVnaW4sIGl0LCBzdHViSW5mb3MsIGNhbGxMaW5rSW5m
b3MpOworICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0LCBiZWdpbiwgaXQsIHN0YXR1c01hcCk7
CiB9CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgpAQCAtMTg5MCw3ICsxODkwLDcgQEAgdm9pZCBC
eXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBTdHJpbmdTdwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBC
bG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQmxvY2soQmxvY2sqIGJsb2Nr
LCBjb25zdCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9u
cywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgU3R1YkluZm9NYXAmIHN0dWJJbmZvcywgY29uc3Qg
Q2FsbExpbmtJbmZvTWFwJiBjYWxsTGlua0luZm9zKQordm9pZCBCeXRlY29kZUR1bXBlcjxCbG9j
az46OmR1bXBCbG9jayhCbG9jayogYmxvY2ssIGNvbnN0IHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tl
ZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJQ1N0
YXR1c01hcCYgc3RhdHVzTWFwKQogewogICAgIHNpemVfdCBpbnN0cnVjdGlvbkNvdW50ID0gMDsK
IApAQCAtMTkxMCw3ICsxOTEwLDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBC
bG9jayhCbAogICAgIGNvbnN0IGF1dG8qIGVuZCA9IGluc3RydWN0aW9ucy5lbmQoKTsKICAgICBC
eXRlY29kZUR1bXBlcjxCbG9jaz4gZHVtcGVyKGJsb2NrLCBiZWdpbik7CiAgICAgZm9yIChjb25z
dCBhdXRvKiBpdCA9IGJlZ2luOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGR1bXBlci5kdW1w
Qnl0ZWNvZGUob3V0LCBiZWdpbiwgaXQsIHN0dWJJbmZvcywgY2FsbExpbmtJbmZvcyk7CisgICAg
ICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0LCBiZWdpbiwgaXQsIHN0YXR1c01hcCk7CiAKICAg
ICBkdW1wZXIuZHVtcElkZW50aWZpZXJzKG91dCk7CiAgICAgZHVtcGVyLmR1bXBDb25zdGFudHMo
b3V0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUR1bXBlci5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNiArMjcsNyBAQAogI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJDYWxsTGlua0luZm8uaCIKKyNpbmNsdWRlICJJQ1N0YXR1
c01hcC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAKIG5hbWVzcGFjZSBKU0Mg
ewpAQCAtMzcsOCArMzksOCBAQCBjbGFzcyBCeXRlY29kZUR1bXBlciB7CiBwdWJsaWM6CiAgICAg
dHlwZWRlZiB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24gSW5zdHJ1Y3Rpb247CiAKLSAgICBz
dGF0aWMgdm9pZCBkdW1wQnl0ZWNvZGUoQmxvY2sqLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJ
bnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IFN0dWJJbmZv
TWFwJiA9IFN0dWJJbmZvTWFwKCksIGNvbnN0IENhbGxMaW5rSW5mb01hcCYgPSBDYWxsTGlua0lu
Zm9NYXAoKSk7Ci0gICAgc3RhdGljIHZvaWQgZHVtcEJsb2NrKEJsb2NrKiwgY29uc3QgdHlwZW5h
bWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiwgUHJpbnRTdHJlYW0mIG91dCwgY29uc3Qg
U3R1YkluZm9NYXAmID0gU3R1YkluZm9NYXAoKSwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiA9IENh
bGxMaW5rSW5mb01hcCgpKTsKKyAgICBzdGF0aWMgdm9pZCBkdW1wQnl0ZWNvZGUoQmxvY2sqLCBQ
cmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0
aW9uKiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXAgPSBJQ1N0YXR1c01hcCgpKTsK
KyAgICBzdGF0aWMgdm9pZCBkdW1wQmxvY2soQmxvY2sqLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6
VW5wYWNrZWRJbnN0cnVjdGlvbnMmLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJQ1N0YXR1c01h
cCYgc3RhdHVzTWFwID0gSUNTdGF0dXNNYXAoKSk7CiAKIHByaXZhdGU6CiAgICAgQnl0ZWNvZGVE
dW1wZXIoQmxvY2sqIGJsb2NrLCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4p
CkBAIC02OSwxNCArNzEsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByaW50Q29uZGl0aW9uYWxK
dW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiwgY29uc3QgSW5zdHJ1Y3Rp
b24qJiBpdCwgaW50IGxvY2F0aW9uLCBjb25zdCBjaGFyKiBvcCk7CiAgICAgdm9pZCBwcmludENv
bXBhcmVKdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiwgY29uc3QgSW5z
dHJ1Y3Rpb24qJiBpdCwgaW50IGxvY2F0aW9uLCBjb25zdCBjaGFyKiBvcCk7CiAgICAgdm9pZCBw
cmludEdldEJ5SWRPcChQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3Ry
dWN0aW9uKiYgaXQpOwotICAgIHZvaWQgcHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJl
YW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBTdHViSW5mb01hcCYpOwotICAgIHZvaWQgcHJp
bnRQdXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25z
dCBTdHViSW5mb01hcCYpOwotICAgIHZvaWQgcHJpbnRJbkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0
cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IFN0dWJJbmZvTWFwJik7CisgICAgdm9pZCBw
cmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNv
bnN0IElDU3RhdHVzTWFwJik7CisgICAgdm9pZCBwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhQcmlu
dFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IElDU3RhdHVzTWFwJik7CisgICAgdm9p
ZCBwcmludEluQnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlvbiwg
Y29uc3QgSUNTdGF0dXNNYXAmKTsKICAgICBlbnVtIENhY2hlRHVtcE1vZGUgeyBEdW1wQ2FjaGVz
LCBEb250RHVtcENhY2hlcyB9OwotICAgIHZvaWQgcHJpbnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91
dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCwg
Q2FjaGVEdW1wTW9kZSwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZywgY29uc3QgQ2FsbExpbmtJ
bmZvTWFwJik7CisgICAgdm9pZCBwcmludENhbGxPcChQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9j
YXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IGNoYXIqIG9wLCBDYWNoZUR1bXBN
b2RlLCBib29sJiBoYXNQcmludGVkUHJvZmlsaW5nLCBjb25zdCBJQ1N0YXR1c01hcCYpOwogICAg
IHZvaWQgcHJpbnRQdXRCeUlkT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25z
dCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCk7CiAgICAgdm9pZCBwcmludExvY2F0
aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBj
b25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCwgaW50IG9wZXJhbmQpOwotICAg
IHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiBi
ZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgU3R1YkluZm9NYXAmLCBjb25zdCBD
YWxsTGlua0luZm9NYXAmKTsKKyAgICB2b2lkIGR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0
LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0
IElDU3RhdHVzTWFwJik7CiAKICAgICB2b2lkIGR1bXBWYWx1ZVByb2ZpbGluZyhQcmludFN0cmVh
bSYsIGNvbnN0IEluc3RydWN0aW9uKiYsIGJvb2wmIGhhc1ByaW50ZWRQcm9maWxpbmcpOwogICAg
IHZvaWQgZHVtcEFycmF5UHJvZmlsaW5nKFByaW50U3RyZWFtJiwgY29uc3QgSW5zdHJ1Y3Rpb24q
JiwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZyk7CkBAIC04NSw3ICs4Nyw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCogYWN0dWFsUG9pbnRlckZvcihTcGVjaWFsOjpQb2ludGVyKSBjb25zdDsKIAog
I2lmIEVOQUJMRShKSVQpCi0gICAgdm9pZCBkdW1wQ2FsbExpbmtTdGF0dXMoUHJpbnRTdHJlYW0m
LCB1bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJik7CisgICAgdm9pZCBk
dW1wQ2FsbExpbmtTdGF0dXMoUHJpbnRTdHJlYW0mLCB1bnNpZ25lZCBsb2NhdGlvbiwgY29uc3Qg
SUNTdGF0dXNNYXAmKTsKICNlbmRpZgogCiAgICAgQmxvY2sqIG1fYmxvY2s7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAy
MzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM1MiwxMiArMzUyLDYgQEAgaW5saW5lIENvZGVPcmlnaW4gZ2V0
Q2FsbExpbmtJbmZvQ29kZU9yaQogICAgIHJldHVybiBjYWxsTGlua0luZm8uY29kZU9yaWdpbigp
OwogfQogCi10eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdpbiwgQ2FsbExpbmtJbmZvKiwgQ29kZU9y
aWdpbkFwcHJveGltYXRlSGFzaD4gQ2FsbExpbmtJbmZvTWFwOwotCi0jZWxzZSAvLyBFTkFCTEUo
SklUKQotCi10eXBlZGVmIEhhc2hNYXA8aW50LCB2b2lkKj4gQ2FsbExpbmtJbmZvTWFwOwotCiAj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHJldmlz
aW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0
YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDggQEAgQ2FsbExpbmtTdGF0dXMg
Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcgogfQogCiBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0
YXR1czo6Y29tcHV0ZUZvcigKLSAgICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVk
IGJ5dGVjb2RlSW5kZXgsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYgbWFwKQorICAgIENvZGVCbG9j
ayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgY29uc3QgSUNTdGF0dXNN
YXAmIG1hcCwKKyAgICBFeGl0U2l0ZURhdGEgZXhpdFNpdGVEYXRhKQogewogICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKICAgICAKQEAgLTg1LDkg
Kzg2LDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGbwogICAgIFVO
VVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICAgICBVTlVTRURfUEFSQU0obWFwKTsKICNpZiBF
TkFCTEUoREZHX0pJVCkKLSAgICBFeGl0U2l0ZURhdGEgZXhpdFNpdGVEYXRhID0gY29tcHV0ZUV4
aXRTaXRlRGF0YShwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4KTsKLSAgICAKLSAgICBDYWxs
TGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4
KSk7CisgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBtYXAuZ2V0KENvZGVPcmlnaW4o
Ynl0ZWNvZGVJbmRleCkpLmNhbGxMaW5rSW5mbzsKICAgICBpZiAoIWNhbGxMaW5rSW5mbykgewog
ICAgICAgICBpZiAoZXhpdFNpdGVEYXRhLnRha2VzU2xvd1BhdGgpCiAgICAgICAgICAgICByZXR1
cm4gdGFrZXNTbG93UGF0aCgpOwpAQCAtMTA3LDExICsxMDYsMjEgQEAgQ2FsbExpbmtTdGF0dXM6
OkV4aXRTaXRlRGF0YSBDYWxsTGlua1N0YQogICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBwcm9maWxlZEJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpOwogICAgIENvbmN1cnJlbnRK
U0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwogCi0gICAgZXhpdFNpdGVEYXRhLnRh
a2VzU2xvd1BhdGggPQotICAgICAgICBjb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZH
OjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZFR5cGUpKQotICAgICAgICB8fCBj
b2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVj
b2RlSW5kZXgsIEJhZEV4ZWN1dGFibGUpKTsKLSAgICBleGl0U2l0ZURhdGEuYmFkRnVuY3Rpb24g
PQotICAgICAgICBjb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4
aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZENlbGwpKTsKKyAgICBhdXRvIHRha2VzU2xvd1BhdGgg
PSBbJl0gKEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQpIC0+IEV4aXRGbGFnIHsKKyAgICAg
ICAgcmV0dXJuIEV4aXRGbGFnKAorICAgICAgICAgICAgY29kZUJsb2NrLT5oYXNFeGl0U2l0ZShs
b2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRUeXBlLCBFeGl0
RnJvbUFueXRoaW5nLCBpbmxpbmVLaW5kKSkKKyAgICAgICAgICAgIHx8IGNvZGVCbG9jay0+aGFz
RXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFk
RXhlY3V0YWJsZSwgRXhpdEZyb21Bbnl0aGluZywgaW5saW5lS2luZCkpLAorICAgICAgICAgICAg
aW5saW5lS2luZCk7CisgICAgfTsKKyAgICAKKyAgICBhdXRvIGJhZEZ1bmN0aW9uID0gWyZdIChF
eGl0aW5nSW5saW5lS2luZCBpbmxpbmVLaW5kKSAtPiBib29sIHsKKyAgICAgICAgcmV0dXJuIGNv
ZGVCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNv
ZGVJbmRleCwgQmFkQ2VsbCwgRXhpdEZyb21Bbnl0aGluZywgaW5saW5lS2luZCkpOworICAgIH07
CisgICAgCisgICAgZXhpdFNpdGVEYXRhLnRha2VzU2xvd1BhdGggfD0gdGFrZXNTbG93UGF0aChF
eGl0RnJvbU5vdElubGluZWQpOworICAgIGV4aXRTaXRlRGF0YS50YWtlc1Nsb3dQYXRoIHw9IHRh
a2VzU2xvd1BhdGgoRXhpdEZyb21JbmxpbmVkKTsKKyAgICBleGl0U2l0ZURhdGEuYmFkRnVuY3Rp
b24gfD0gYmFkRnVuY3Rpb24oRXhpdEZyb21Ob3RJbmxpbmVkKTsKKyAgICBleGl0U2l0ZURhdGEu
YmFkRnVuY3Rpb24gfD0gYmFkRnVuY3Rpb24oRXhpdEZyb21JbmxpbmVkKTsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUlu
ZGV4KTsKQEAgLTIyNyw4MyArMjM2LDU0IEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVz
Ojpjb21wdXRlRnIKIAogQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3Io
CiAgICAgY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIENvZGVCbG9jayogcHJvZmls
ZWRCbG9jaywgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sCi0gICAgRXhpdFNpdGVEYXRhIGV4
aXRTaXRlRGF0YSkKKyAgICBFeGl0U2l0ZURhdGEgZXhpdFNpdGVEYXRhLCBFeGl0aW5nSW5saW5l
S2luZCBpbmxpbmVLaW5kKQogewogICAgIENhbGxMaW5rU3RhdHVzIHJlc3VsdCA9IGNvbXB1dGVG
b3IobG9ja2VyLCBwcm9maWxlZEJsb2NrLCBjYWxsTGlua0luZm8pOwotICAgIGlmIChleGl0U2l0
ZURhdGEuYmFkRnVuY3Rpb24pIHsKLSAgICAgICAgaWYgKHJlc3VsdC5pc0Jhc2VkT25TdHViKCkp
IHsKKyAgICByZXN1bHQuYWNjb3VudEZvckV4aXRzKGV4aXRTaXRlZGF0YSwgaW5saW5lS2luZCk7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZgorCit2b2lkIENhbGxMaW5rU3RhdHVzOjph
Y2NvdW50Rm9yRXhpdHMoRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YSwgRXhpdGluZ0lubGluZUtp
bmQgaW5saW5lS2luZCkKK3sKKyAgICBpZiAoZXhpdFNpdGVEYXRhLmJhZEZ1bmN0aW9uLmlzU2V0
KGlubGluZUtpbmQpKSB7CisgICAgICAgIGlmIChpc0Jhc2VkT25TdHViKCkpIHsKICAgICAgICAg
ICAgIC8vIElmIHdlIGhhdmUgYSBwb2x5bW9ycGhpYyBzdHViLCB0aGVuIGhhdmluZyBhbiBleGl0
IHNpdGUgaXMgbm90IHF1aXRlIHNvIHVzZWZ1bC4gSW4KICAgICAgICAgICAgIC8vIG1vc3QgY2Fz
ZXMsIHRoZSBpbmZvcm1hdGlvbiBpbiB0aGUgc3R1YiBoYXMgaGlnaGVyIGZpZGVsaXR5LgotICAg
ICAgICAgICAgcmVzdWx0Lm1ha2VDbG9zdXJlQ2FsbCgpOworICAgICAgICAgICAgbWFrZUNsb3N1
cmVDYWxsKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBXZSBtaWdodCBub3Qg
aGF2ZSBhIHBvbHltb3JwaGljIHN0dWIgZm9yIGFueSBudW1iZXIgb2YgcmVhc29ucy4gV2hlbiB0
aGlzIGhhcHBlbnMsIHdlCiAgICAgICAgICAgICAvLyBhcmUgaW4gbGVzcyBjZXJ0YWluIHRlcnJp
dG9yeSwgc28gZXhpdCBzaXRlcyBtZWFuIGEgbG90LgotICAgICAgICAgICAgcmVzdWx0Lm1fY291
bGRUYWtlU2xvd1BhdGggPSB0cnVlOworICAgICAgICAgICAgbV9jb3VsZFRha2VTbG93UGF0aCA9
IHRydWU7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKGV4aXRTaXRlRGF0YS50YWtlc1Nsb3dQ
YXRoKQotICAgICAgICByZXN1bHQubV9jb3VsZFRha2VTbG93UGF0aCA9IHRydWU7CiAgICAgCi0g
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICBpZiAoZXhpdFNpdGVEYXRhLnRha2VzU2xvd1BhdGguaXNT
ZXQoaW5saW5lS2luZCkpCisgICAgICAgIG1fY291bGRUYWtlU2xvd1BhdGggPSB0cnVlOwogfQot
I2VuZGlmCiAKLXZvaWQgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVERkdTdGF0dXNlcygKLSAgICBD
b2RlQmxvY2sqIGRmZ0NvZGVCbG9jaywgQ2FsbExpbmtTdGF0dXM6OkNvbnRleHRNYXAmIG1hcCkK
K0NhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAorICAgIENvZGVCbG9j
ayogcHJvZmlsZWRCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLAorICAgIGNvbnN0IElDU3Rh
dHVzTWFwJiBiYXNlbGluZU1hcCwgY29uc3QgSUNTdGF0dXNDb250ZXh0U3RhY2smIG9wdGltaXpl
ZFN0YWNrKQogewotI2lmIEVOQUJMRShERkdfSklUKQotICAgIFJFTEVBU0VfQVNTRVJUKGRmZ0Nv
ZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCk7Ci0gICAgQ29kZUJsb2NrKiBi
YXNlbGluZUNvZGVCbG9jayA9IGRmZ0NvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKTsKLSAgICBmb3Ig
KGF1dG8gaXRlciA9IGRmZ0NvZGVCbG9jay0+Y2FsbExpbmtJbmZvc0JlZ2luKCk7ICEhaXRlcjsg
KytpdGVyKSB7Ci0gICAgICAgIENhbGxMaW5rSW5mbyYgaW5mbyA9ICoqaXRlcjsKLSAgICAgICAg
aWYgKGluZm8uaXNEaXJlY3QoKSkgewotICAgICAgICAgICAgLy8gSWYgdGhlIERGRyB3YXMgYWJs
ZSB0byBnZXQgYSBkaXJlY3QgY2FsbCB0aGVuIHByb2JhYmx5IHNvIHdpbGwgd2UuIEhvd2V2ZXIs
IHRoZXJlIGlzCi0gICAgICAgICAgICAvLyBhIHJlbW90ZSBjaGFuY2UgdGhhdCBpdCdzIGJhZCBu
ZXdzIHRvIGxvc2UgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCB0aGUgREZHIGRpZC4gV2UnZAotICAg
ICAgICAgICAgLy8gaWRlYWxseSBsaWtlIHRvIGp1c3Qga25vdyB0aGF0IHRoZSBERkcgaGFkIGVt
aXR0ZWQgYSBEaXJlY3RDYWxsLgotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAg
ICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gaW5mby5jb2RlT3JpZ2luKCk7Ci0gICAgICAg
IAotICAgICAgICAvLyBDaGVjayBpZiB3ZSBoYWQgYWxyZWFkeSBwcmV2aW91c2x5IG1hZGUgYSB0
ZXJyaWJsZSBtaXN0YWtlIGluIHRoZSBGVEwgZm9yIHRoaXMKLSAgICAgICAgLy8gY29kZSBvcmln
aW4uIE5vdGUgdGhhdCB0aGlzIGlzIGFwcHJveGltYXRlIGJlY2F1c2Ugd2UgY291bGQgaGF2ZSBh
IG1vbm92YXJpYW50Ci0gICAgICAgIC8vIGlubGluZSBpbiB0aGUgRlRMIHRoYXQgZW5kZWQgdXAg
ZmFpbGluZy4gV2Ugc2hvdWxkIGZpeCB0aGF0IGF0IHNvbWUgcG9pbnQgYnkKLSAgICAgICAgLy8g
aGF2aW5nIGRhdGEgc3RydWN0dXJlcyB0byB0cmFjayB0aGUgY29udGV4dCBvZiBmcmVxdWVudCBl
eGl0cy4gVGhpcyBpcyBjdXJyZW50bHkKLSAgICAgICAgLy8gY2hhbGxlbmdpbmcgYmVjYXVzZSBp
dCB3b3VsZCByZXF1aXJlIGNyZWF0aW5nIGEgQ29kZU9yaWdpbi1iYXNlZCBkYXRhYmFzZSBpbgot
ICAgICAgICAvLyBiYXNlbGluZSBDb2RlQmxvY2tzLCBidXQgdGhvc2UgQ29kZUJsb2NrcyBkb24n
dCByZWFsbHkgaGF2ZSBhIHBsYWNlIHRvIHB1dCB0aGUKLSAgICAgICAgLy8gSW5saW5lQ2FsbEZy
YW1lcy4KLSAgICAgICAgQ29kZUJsb2NrKiBjdXJyZW50QmFzZWxpbmUgPQotICAgICAgICAgICAg
YmFzZWxpbmVDb2RlQmxvY2tGb3JPcmlnaW5BbmRCYXNlbGluZUNvZGVCbG9jayhjb2RlT3JpZ2lu
LCBiYXNlbGluZUNvZGVCbG9jayk7Ci0gICAgICAgIEV4aXRTaXRlRGF0YSBleGl0U2l0ZURhdGEg
PSBjb21wdXRlRXhpdFNpdGVEYXRhKGN1cnJlbnRCYXNlbGluZSwgY29kZU9yaWdpbi5ieXRlY29k
ZUluZGV4KTsKLSAgICAgICAgCi0gICAgICAgIHsKLSAgICAgICAgICAgIENvbmN1cnJlbnRKU0xv
Y2tlciBsb2NrZXIoZGZnQ29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgbWFwLmFkZChp
bmZvLmNvZGVPcmlnaW4oKSwgY29tcHV0ZUZvcihsb2NrZXIsIGRmZ0NvZGVCbG9jaywgaW5mbywg
ZXhpdFNpdGVEYXRhKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJB
TShkZmdDb2RlQmxvY2spOwotI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorICAgIEV4aXRTaXRl
RGF0YSBleGl0U2l0ZURhdGEgPSBjb21wdXRlRXhpdFNpdGVEYXRhKHByb2ZpbGVkQmxvY2ssIGNv
ZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7CiAgICAgCi0gICAgaWYgKENhbGxMaW5rU3RhdHVzSW50
ZXJuYWw6OnZlcmJvc2UpIHsKLSAgICAgICAgZGF0YUxvZygiQ29udGV4dCBtYXA6XG4iKTsKLSAg
ICAgICAgQ29udGV4dE1hcDo6aXRlcmF0b3IgaXRlciA9IG1hcC5iZWdpbigpOwotICAgICAgICBD
b250ZXh0TWFwOjppdGVyYXRvciBlbmQgPSBtYXAuZW5kKCk7Ci0gICAgICAgIGZvciAoOyBpdGVy
ICE9IGVuZDsgKytpdGVyKSB7Ci0gICAgICAgICAgICBkYXRhTG9nKCIgICAgIiwgaXRlci0+a2V5
LCAiOlxuIik7Ci0gICAgICAgICAgICBkYXRhTG9nKCIgICAgICAgICIsIGl0ZXItPnZhbHVlLCAi
XG4iKTsKKyAgICBmb3IgKGNvbnN0IElDU3RhdHVzQ29udGV4dCYgY29udGV4dCA6IG9wdGltaXpl
ZFN0YWNrKSB7CisgICAgICAgIElDU3RhdHVzIHN0YXR1cyA9IGNvbnRleHQuZ2V0KGNvZGVPcmln
aW4pOworICAgICAgICBpZiAoc3RhdHVzLmNhbGxMaW5rSW5mbykgeworICAgICAgICAgICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcihjb250ZXh0Lm9wdGltaXplZENvZGVCbG9jay0+bV9sb2Nr
KTsKKyAgICAgICAgICAgIENhbGxMaW5rU3RhdHVzIHJlc3VsdCA9IGNvbXB1dGVGb3IoCisgICAg
ICAgICAgICAgICAgbG9ja2VyLCBjb250ZXh0Lm9wdGltaXplZENvZGVCbG9jaywgKnN0YXR1cy5j
YWxsTGlua0luZm8sIGV4aXRTaXRlRGF0YSwKKyAgICAgICAgICAgICAgICBjb250ZXh0LmlubGlu
ZUtpbmQoY29kZU9yaWdpbikpOworICAgICAgICAgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoc3Rh
dHVzLmNhbGxMaW5rU3RhdHVzKQorICAgICAgICAgICAgcmV0dXJuICpzdGF0dXMuY2FsbExpbmtT
dGF0dXM7CiAgICAgfQotfQotCi1DYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0
ZUZvcigKLSAgICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdp
biwKLSAgICBjb25zdCBDYWxsTGlua0luZm9NYXAmIGJhc2VsaW5lTWFwLCBjb25zdCBDYWxsTGlu
a1N0YXR1czo6Q29udGV4dE1hcCYgZGZnTWFwKQotewotICAgIGF1dG8gaXRlciA9IGRmZ01hcC5m
aW5kKGNvZGVPcmlnaW4pOwotICAgIGlmIChpdGVyICE9IGRmZ01hcC5lbmQoKSkKLSAgICAgICAg
cmV0dXJuIGl0ZXItPnZhbHVlOwogICAgIAotICAgIHJldHVybiBjb21wdXRlRm9yKHByb2ZpbGVk
QmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgYmFzZWxpbmVNYXApOworICAgIHJldHVy
biBjb21wdXRlRm9yKHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgYmFz
ZWxpbmVNYXAsIGV4aXRTaXRlRGF0YSk7CiB9CiAKIHZvaWQgQ2FsbExpbmtTdGF0dXM6OnNldFBy
b3ZlbkNvbnN0YW50Q2FsbGVlKENhbGxWYXJpYW50IHZhcmlhbnQpCkBAIC0zMjcsNiArMzA3LDI0
IEBAIHZvaWQgQ2FsbExpbmtTdGF0dXM6Om1ha2VDbG9zdXJlQ2FsbCgpCiAgICAgbV92YXJpYW50
cyA9IGRlc3BlY2lmaWVkVmFyaWFudExpc3QobV92YXJpYW50cyk7CiB9CiAKK2Jvb2wgQ2FsbExp
bmtTdGF0dXM6OmZpbmFsaXplKCkKK3sKKyAgICBmb3IgKENhbGxWYXJpYW50JiB2YXJpYW50IDog
bV92YXJpYW50cykgeworICAgICAgICBpZiAoIXZhcmlhbnQuZmluYWxpemUoKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQ2Fs
bExpbmtTdGF0dXM6OmZpbHRlcihKU1ZhbHVlIHZhbHVlKQoreworICAgIG1fdmFyaWFudHMucmVt
b3ZlQWxsTWF0Y2hpbmcoCisgICAgICAgIFsmXSAoQ2FsbFZhcmlhbnQmIHZhcmlhbnQpIC0+IGJv
b2wgeworICAgICAgICAgICAgdmFyaWFudC5maWx0ZXIodmFsdWUpOworICAgICAgICAgICAgcmV0
dXJuICF2YXJpYW50OworICAgICAgICB9KTsKK30KKwogdm9pZCBDYWxsTGlua1N0YXR1czo6ZHVt
cChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIGlmICghaXNTZXQoKSkgewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHJl
dmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlu
a1N0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVkZSAiQ2Fs
bFZhcmlhbnQuaCIKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAiQ29uY3VycmVu
dEpTTG9jay5oIgorI2luY2x1ZGUgIkV4aXRGbGFnLmgiCisjaW5jbHVkZSAiSUNTdGF0dXNNYXAu
aCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNjAsMzkg
KzYyLDMyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBDYWxsTGlu
a1N0YXR1cyBjb21wdXRlRm9yKAotICAgICAgICBDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29k
ZUluZGV4LCBjb25zdCBDYWxsTGlua0luZm9NYXAmKTsKLQogICAgIHN0cnVjdCBFeGl0U2l0ZURh
dGEgewotICAgICAgICBib29sIHRha2VzU2xvd1BhdGggeyBmYWxzZSB9OwotICAgICAgICBib29s
IGJhZEZ1bmN0aW9uIHsgZmFsc2UgfTsKKyAgICAgICAgRXhpdEZsYWcgdGFrZXNTbG93UGF0aDsK
KyAgICAgICAgRXhpdEZsYWcgYmFkRnVuY3Rpb247CiAgICAgfTsKICAgICBzdGF0aWMgRXhpdFNp
dGVEYXRhIGNvbXB1dGVFeGl0U2l0ZURhdGEoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCk7CiAgICAgCisgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJs
b2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgY29uc3QgSUNTdGF0dXNNYXAmLCBFeGl0U2l0
ZURhdGEpOworCiAjaWYgRU5BQkxFKEpJVCkKICAgICAvLyBDb21wdXRlcyB0aGUgc3RhdHVzIGFz
c3VtaW5nIHRoYXQgd2UgbmV2ZXIgdG9vayBzbG93IHBhdGggYW5kIG5ldmVyIHByZXZpb3VzbHkK
ICAgICAvLyBleGl0ZWQuCiAgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoY29u
c3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKiwgQ2FsbExpbmtJbmZvJik7CisgICAg
CisgICAgLy8gQ29tcHV0ZXMgdGhlIHN0YXR1cyBhY2NvdW50aW5nIGZvciBleGl0cy4KICAgICBz
dGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcigKLSAgICAgICAgY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJiwgQ29kZUJsb2NrKiwgQ2FsbExpbmtJbmZvJiwgRXhpdFNpdGVEYXRhKTsKKyAg
ICAgICAgY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKiwgQ2FsbExpbmtJbmZv
JiwgRXhpdFNpdGVEYXRhLCBFeGl0aW5nSW5saW5lS2luZCA9IEV4aXRGcm9tQW55SW5saW5lS2lu
ZCk7CiAjZW5kaWYKICAgICAKLSAgICB0eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdpbiwgQ2FsbExp
bmtTdGF0dXMsIENvZGVPcmlnaW5BcHByb3hpbWF0ZUhhc2g+IENvbnRleHRNYXA7Ci0gICAgCi0g
ICAgLy8gQ29tcHV0ZXMgYWxsIG9mIHRoZSBzdGF0dXNlcyBvZiB0aGUgREZHIGNvZGUgYmxvY2su
IERvZXNuJ3QgaW5jbHVkZSBzdGF0dXNlcyB0aGF0IGhhZAotICAgIC8vIG5vIGluZm9ybWF0aW9u
LiBDdXJyZW50bHkgd2UgdXNlIHRoaXMgd2hlbiBjb21waWxpbmcgRlRMIGNvZGUsIHRvIGVuYWJs
ZSBwb2x5dmFyaWFudAotICAgIC8vIGlubGluaW5nLgotICAgIHN0YXRpYyB2b2lkIGNvbXB1dGVE
RkdTdGF0dXNlcyhDb2RlQmxvY2sqIGRmZ0NvZGVCbG9jaywgQ29udGV4dE1hcCYpOwotICAgIAot
ICAgIC8vIEhlbHBlciB0aGF0IGZpcnN0IGNvbnN1bHRzIHRoZSBDb250ZXh0TWFwIGFuZCB0aGVu
IGRvZXMgY29tcHV0ZUZvcigpLgogICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9y
KAotICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBjb25zdCBDYWxsTGlua0luZm9NYXAm
LCBjb25zdCBDb250ZXh0TWFwJik7CisgICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIGNv
bnN0IElDU3RhdHVzTWFwJiwgY29uc3QgSUNTdGF0dXNDb250ZXh0U3RhY2smKTsKICAgICAKICAg
ICB2b2lkIHNldFByb3ZlbkNvbnN0YW50Q2FsbGVlKENhbGxWYXJpYW50KTsKICAgICAKICAgICBi
b29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gIW1fdmFyaWFudHMuaXNFbXB0eSgpIHx8IG1fY291
bGRUYWtlU2xvd1BhdGg7IH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0
dXJuICFpc1NldCgpOyB9CisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0
dXJuIGlzU2V0KCk7IH0KICAgICAKICAgICBib29sIGNvdWxkVGFrZVNsb3dQYXRoKCkgY29uc3Qg
eyByZXR1cm4gbV9jb3VsZFRha2VTbG93UGF0aDsgfQogICAgIApAQCAtMTEwLDYgKzEwNSwxMCBA
QCBwdWJsaWM6CiAgICAgCiAgICAgdW5zaWduZWQgbWF4TnVtQXJndW1lbnRzKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXhOdW1Bcmd1bWVudHM7IH0KICAgICAKKyAgICBib29sIGZpbmFsaXplKCk7Cisg
ICAgCisgICAgdm9pZCBmaWx0ZXIoSlNWYWx1ZSk7CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50
U3RyZWFtJikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgpAQCAtMTIxLDYgKzEyMCw4IEBAIHByaXZh
dGU6CiAgICAgICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENhbGxMaW5rSW5mbyYpOwog
I2VuZGlmCiAgICAgCisgICAgdm9pZCBhY2NvdW50Rm9yRXhpdHMoRXhpdFNpdGVEYXRhLCBFeGl0
aW5nSW5saW5lS2luZCk7CisgICAgCiAgICAgQ2FsbFZhcmlhbnRMaXN0IG1fdmFyaWFudHM7CiAg
ICAgYm9vbCBtX2NvdWxkVGFrZVNsb3dQYXRoIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNQcm92
ZWQgeyBmYWxzZSB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxW
YXJpYW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbFZhcmlhbnQuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDYgKzMx
LDM1IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitib29sIENhbGxWYXJpYW50OjpmaW5hbGl6ZSgp
Cit7CisgICAgaWYgKG1fY2FsbGVlICYmICFIZWFwOjppc01hcmtlZChtX2NhbGxlZSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDYWxsVmFyaWFu
dDo6ZmlsdGVyKEpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKCEqdGhpcykKKyAgICAgICAgcmV0
dXJuOworICAgIAorICAgIGlmICghaXNDbG9zdXJlQ2FsbCgpKSB7CisgICAgICAgIGlmIChub25F
eGVjdXRhYmxlQ2FsbGVlKCkgIT0gdmFsdWUpCisgICAgICAgICAgICAqdGhpcyA9IENhbGxWYXJp
YW50KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKEpTRnVuY3Rpb24q
IGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odmFsdWUpKSB7CisgICAgICAg
IGlmIChmdW5jdGlvbi0+ZXhlY3V0YWJsZSgpID09IGV4ZWN1dGFibGUoKSkKKyAgICAgICAgICAg
ICp0aGlzID0gQ2FsbFZhcmlhbnQoZnVuY3Rpb24pOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICAqdGhpcyA9IENhbGxWYXJpYW50KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisg
ICAgKnRoaXMgPSBDYWxsVmFyaWFudCgpOworfQorCiB2b2lkIENhbGxWYXJpYW50OjpkdW1wKFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgaWYgKCEqdGhpcykgewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgJKHJldmlzaW9uIDIzMjIy
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAg
Ci0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsZWU7IH0KKyAgICBl
eHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2NhbGxlZTsgfQogICAg
IAogICAgIC8vIElmIHRoaXMgdmFyaWFudCByZWZlcnMgdG8gYSBmdW5jdGlvbiwgY2hhbmdlIGl0
IHRvIHJlZmVyIHRvIGl0cyBleGVjdXRhYmxlLgogICAgIEFMV0FZU19JTkxJTkUgQ2FsbFZhcmlh
bnQgZGVzcGVjaWZpZWRDbG9zdXJlKCkgY29uc3QKQEAgLTEzNiw2ICsxMzYsMTAgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCisgICAgYm9vbCBmaW5hbGl6
ZSgpOworICAgIAorICAgIHZvaWQgZmlsdGVyKEpTVmFsdWUpOworICAgIAogICAgIHZvaWQgZHVt
cChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKICAgICAKICAgICBib29sIGlzSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM4LDI0ICsyMzgs
MjAgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgpCiAKIHZvaWQgQ29kZUJsb2NrOjpk
dW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCkKIHsKLSAgICBTdHViSW5mb01hcCBzdHViSW5m
b3M7Ci0gICAgQ2FsbExpbmtJbmZvTWFwIGNhbGxMaW5rSW5mb3M7Ci0gICAgZ2V0U3R1YkluZm9N
YXAoc3R1YkluZm9zKTsKLSAgICBnZXRDYWxsTGlua0luZm9NYXAoY2FsbExpbmtJbmZvcyk7Ci0g
ICAgQnl0ZWNvZGVEdW1wZXI8Q29kZUJsb2NrPjo6ZHVtcEJsb2NrKHRoaXMsIGluc3RydWN0aW9u
cygpLCBvdXQsIHN0dWJJbmZvcywgY2FsbExpbmtJbmZvcyk7CisgICAgSUNTdGF0dXNNYXAgc3Rh
dHVzTWFwOworICAgIGdldElDU3RhdHVzTWFwKHN0YXR1c01hcCk7CisgICAgQnl0ZWNvZGVEdW1w
ZXI8Q29kZUJsb2NrPjo6ZHVtcEJsb2NrKHRoaXMsIGluc3RydWN0aW9ucygpLCBvdXQsIHN0YXR1
c01hcCk7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91
dCwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25z
dCBTdHViSW5mb01hcCYgc3R1YkluZm9zLCBjb25zdCBDYWxsTGlua0luZm9NYXAmIGNhbGxMaW5r
SW5mb3MpCit2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIGNv
bnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgSUNT
dGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKLSAgICBCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+Ojpk
dW1wQnl0ZWNvZGUodGhpcywgb3V0LCBiZWdpbiwgaXQsIHN0dWJJbmZvcywgY2FsbExpbmtJbmZv
cyk7CisgICAgQnl0ZWNvZGVEdW1wZXI8Q29kZUJsb2NrPjo6ZHVtcEJ5dGVjb2RlKHRoaXMsIG91
dCwgYmVnaW4sIGl0LCBzdGF0dXNNYXApOwogfQogCi12b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKAotICAgIFByaW50U3RyZWFtJiBvdXQsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LAotICAg
IGNvbnN0IFN0dWJJbmZvTWFwJiBzdHViSW5mb3MsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYgY2Fs
bExpbmtJbmZvcykKK3ZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91
dCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXAp
CiB7CiAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGl0ID0gJmluc3RydWN0aW9ucygpW2J5dGVjb2Rl
T2Zmc2V0XTsKLSAgICBkdW1wQnl0ZWNvZGUob3V0LCBpbnN0cnVjdGlvbnMoKS5iZWdpbigpLCBp
dCwgc3R1YkluZm9zLCBjYWxsTGlua0luZm9zKTsKKyAgICBkdW1wQnl0ZWNvZGUob3V0LCBpbnN0
cnVjdGlvbnMoKS5iZWdpbigpLCBpdCwgc3RhdHVzTWFwKTsKIH0KIAogI2RlZmluZSBGT1JfRUFD
SF9NRU1CRVJfVkVDVE9SKG1hY3JvKSBcCkBAIC0xMTY2LDYgKzExNjIsOSBAQCB2b2lkIENvZGVC
bG9jazo6cHJvcGFnYXRlVHJhbnNpdGlvbnMoY29uCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAg
aWYgKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChqaXRUeXBlKCkpKSB7CiAgICAgICAgIERGRzo6
Q29tbW9uRGF0YSogZGZnQ29tbW9uID0gbV9qaXRDb2RlLT5kZmdDb21tb24oKTsKKyAgICAgICAg
CisgICAgICAgIGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5tYXJrSWZDaGVhcCh2aXNpdG9y
KTsKKyAgICAgICAgCiAgICAgICAgIGZvciAoYXV0byYgd2Vha1JlZmVyZW5jZSA6IGRmZ0NvbW1v
bi0+d2Vha1N0cnVjdHVyZVJlZmVyZW5jZXMpCiAgICAgICAgICAgICB3ZWFrUmVmZXJlbmNlLT5t
YXJrSWZDaGVhcCh2aXNpdG9yKTsKIApAQCAtMTM5Nyw1NyArMTM5Niw0MyBAQCB2b2lkIENvZGVC
bG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoCiAgICAgICAgIGZpbmFsaXplQmFzZWxpbmVK
SVRJbmxpbmVDYWNoZXMoKTsKICNlbmRpZgogCi0gICAgVk06OlNwYWNlQW5kRmluYWxpemVyU2V0
OjpmaW5hbGl6ZXJTZXRGb3IoKnN1YnNwYWNlKCkpLnJlbW92ZSh0aGlzKTsKLX0KLQotdm9pZCBD
b2RlQmxvY2s6OmdldFN0dWJJbmZvTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFN0dWJJ
bmZvTWFwJiByZXN1bHQpCi17Ci0jaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoSklUQ29kZTo6aXNK
SVQoaml0VHlwZSgpKSkKLSAgICAgICAgdG9IYXNoTWFwKG1fc3R1YkluZm9zLCBnZXRTdHJ1Y3R1
cmVTdHViSW5mb0NvZGVPcmlnaW4sIHJlc3VsdCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShy
ZXN1bHQpOwotI2VuZGlmCi19Ci0KLXZvaWQgQ29kZUJsb2NrOjpnZXRTdHViSW5mb01hcChTdHVi
SW5mb01hcCYgcmVzdWx0KQotewotICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2Nr
KTsKLSAgICBnZXRTdHViSW5mb01hcChsb2NrZXIsIHJlc3VsdCk7Ci19Ci0KLXZvaWQgQ29kZUJs
b2NrOjpnZXRDYWxsTGlua0luZm9NYXAoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ2FsbExp
bmtJbmZvTWFwJiByZXN1bHQpCi17Ci0jaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoSklUQ29kZTo6
aXNKSVQoaml0VHlwZSgpKSkKLSAgICAgICAgdG9IYXNoTWFwKG1fY2FsbExpbmtJbmZvcywgZ2V0
Q2FsbExpbmtJbmZvQ29kZU9yaWdpbiwgcmVzdWx0KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFN
KHJlc3VsdCk7Ci0jZW5kaWYKLX0KKyAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGpp
dFR5cGUoKSkpIHsKKyAgICAgICAgREZHOjpDb21tb25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENv
ZGUtPmRmZ0NvbW1vbigpOworICAgICAgICBkZmdDb21tb24tPnJlY29yZGVkU3RhdHVzZXMuZmlu
YWxpemUoKTsKKyAgICB9CiAKLXZvaWQgQ29kZUJsb2NrOjpnZXRDYWxsTGlua0luZm9NYXAoQ2Fs
bExpbmtJbmZvTWFwJiByZXN1bHQpCi17Ci0gICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlciht
X2xvY2spOwotICAgIGdldENhbGxMaW5rSW5mb01hcChsb2NrZXIsIHJlc3VsdCk7CisgICAgVk06
OlNwYWNlQW5kRmluYWxpemVyU2V0OjpmaW5hbGl6ZXJTZXRGb3IoKnN1YnNwYWNlKCkpLnJlbW92
ZSh0aGlzKTsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OmdldEJ5VmFsSW5mb01hcChjb25zdCBDb25j
dXJyZW50SlNMb2NrZXImLCBCeVZhbEluZm9NYXAmIHJlc3VsdCkKK3ZvaWQgQ29kZUJsb2NrOjpn
ZXRJQ1N0YXR1c01hcChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBJQ1N0YXR1c01hcCYgcmVz
dWx0KQogewogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKEpJVENvZGU6OmlzSklUKGppdFR5cGUo
KSkpIHsKLSAgICAgICAgZm9yIChhdXRvKiBieVZhbEluZm8gOiBtX2J5VmFsSW5mb3MpCi0gICAg
ICAgICAgICByZXN1bHQuYWRkKENvZGVPcmlnaW4oYnlWYWxJbmZvLT5ieXRlY29kZUluZGV4KSwg
YnlWYWxJbmZvKTsKKyAgICAgICAgZm9yIChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gOiBt
X3N0dWJJbmZvcykKKyAgICAgICAgICAgIHJlc3VsdC5hZGQoc3R1YkluZm8tPmNvZGVPcmlnaW4s
IElDU3RhdHVzKCkpLml0ZXJhdG9yLT52YWx1ZS5zdHViSW5mbyA9IHN0dWJJbmZvOworICAgICAg
ICBmb3IgKENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvIDogbV9jYWxsTGlua0luZm9zKQorICAg
ICAgICAgICAgcmVzdWx0LmFkZChjYWxsTGlua0luZm8tPmNvZGVPcmlnaW4oKSwgSUNTdGF0dXMo
KSkuaXRlcmF0b3ItPnZhbHVlLmNhbGxMaW5rSW5mbyA9IGNhbGxMaW5rSW5mbzsKKyAgICAgICAg
Zm9yIChCeVZhbEluZm8qIGJ5VmFsSW5mbyA6IG1fYmFsVmFsSW5mb3MpCisgICAgICAgICAgICBy
ZXN1bHQuYWRkKENvZGVPcmlnaW4oYnlWYWxJbmZvLT5ieXRlY29kZUluZGV4KSwgSUNTdGF0dXMo
KSkuaXRlcmF0b3ItPnZhbHVlLmJ5VmFsSW5mbyA9IGJ5VmFsSW5mbzsKKyAgICAgICAgaWYgKEpJ
VENvZGU6OmlzT3B0aW1pemluZ0pJVChqaXRUeXBlKCkpKSB7CisgICAgICAgICAgICBERkc6OkNv
bW1vbkRhdGEqIGRmZ0NvbW1vbiA9IG1faml0Q29kZS0+ZGZnQ29tbW9uKCk7CisgICAgICAgICAg
ICBmb3IgKGF1dG8mIHBhaXIgOiBkZmdDb21tb24tPnJlY29yZGVkU3RhdHVzZXMuY2FsbHMpCisg
ICAgICAgICAgICAgICAgcmVzdWx0LmFkZChwYWlyLmZpcnN0LCBJQ1N0YXR1cygpKS5pdGVyYXRv
ci0+dmFsdWUuY2FsbFN0YXR1cyA9IHBhaXIuc2Vjb25kLmdldCgpOworICAgICAgICAgICAgZm9y
IChhdXRvJiBwYWlyIDogZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLmdldHMpCisgICAgICAg
ICAgICAgICAgcmVzdWx0LmFkZChwYWlyLmZpcnN0LCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFs
dWUuZ2V0U3RhdHVzID0gcGFpci5zZWNvbmQuZ2V0KCk7CisgICAgICAgICAgICBmb3IgKGF1dG8m
IHBhaXIgOiBkZmdDb21tb24tPnJlY29yZGVkU3RhdHVzZXMucHV0cykKKyAgICAgICAgICAgICAg
ICByZXN1bHQuYWRkKHBhaXIuZmlyc3QsIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52YWx1ZS5wdXRT
dGF0dXMgPSBwYWlyLnNlY29uZC5nZXQoKTsKKyAgICAgICAgfQogICAgIH0KICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKHJlc3VsdCk7CiAjZW5kaWYKIH0KIAotdm9pZCBDb2RlQmxvY2s6OmdldEJ5
VmFsSW5mb01hcChCeVZhbEluZm9NYXAmIHJlc3VsdCkKK3ZvaWQgQ29kZUJsb2NrOjpnZXRJQ1N0
YXR1c01hcChJQ1N0YXR1c01hcCYgcmVzdWx0KQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBs
b2NrZXIobV9sb2NrKTsKLSAgICBnZXRCeVZhbEluZm9NYXAobG9ja2VyLCByZXN1bHQpOworICAg
IGdldElDU3RhdHVzTWFwKGxvY2tlciwgcmVzdWx0KTsKIH0KIAogI2lmIEVOQUJMRShKSVQpCkBA
IC0xNTE0LDcgKzE0OTksNyBAQCB2b2lkIENvZGVCbG9jazo6cmVzZXRKSVREYXRhKCkKICAgICAK
ICAgICAvLyBXZSBjYW4gY2xlYXIgdGhlc2UgYmVjYXVzZSBubyBvdGhlciB0aHJlYWQgd2lsbCBo
YXZlIHJlZmVyZW5jZXMgdG8gYW55IHN0dWIgaW5mb3MsIGNhbGwKICAgICAvLyBsaW5rIGluZm9z
LCBvciBieSB2YWwgaW5mb3MgaWYgd2UgZG9uJ3QgaGF2ZSBKSVQgY29kZS4gQXR0ZW1wdHMgdG8g
cXVlcnkgdGhlc2UgZGF0YQotICAgIC8vIHN0cnVjdHVyZXMgdXNpbmcgdGhlIGNvbmN1cnJlbnQg
QVBJIChnZXRTdHViSW5mb01hcCBhbmQgZnJpZW5kcykgd2lsbCByZXR1cm4gbm90aGluZyBpZiB3
ZQorICAgIC8vIHN0cnVjdHVyZXMgdXNpbmcgdGhlIGNvbmN1cnJlbnQgQVBJIChnZXRJQ1N0YXR1
c01hcCBhbmQgZnJpZW5kcykgd2lsbCByZXR1cm4gbm90aGluZyBpZiB3ZQogICAgIC8vIGRvbid0
IGhhdmUgSklUIGNvZGUuCiAgICAgbV9zdHViSW5mb3MuY2xlYXIoKTsKICAgICBtX2NhbGxMaW5r
SW5mb3MuY2xlYXIoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1
ZGUgIkV4cHJlc3Npb25SYW5nZUluZm8uaCIKICNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGUu
aCIKICNpbmNsdWRlICJIYW5kbGVySW5mby5oIgorI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCiAj
aW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCiAjaW5jbHVkZSAi
SklUQ29kZU1hcC5oIgpAQCAtOTYsOCArOTcsNiBAQCBlbnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBp
bnQ4X3Q7CiAKIHN0cnVjdCBBcml0aFByb2ZpbGU7CiAKLXR5cGVkZWYgSGFzaE1hcDxDb2RlT3Jp
Z2luLCBTdHJ1Y3R1cmVTdHViSW5mbyosIENvZGVPcmlnaW5BcHByb3hpbWF0ZUhhc2g+IFN0dWJJ
bmZvTWFwOwotCiBlbnVtIFJlb3B0aW1pemF0aW9uTW9kZSB7IERvbnRDb3VudFJlb3B0aW1pemF0
aW9uLCBDb3VudFJlb3B0aW1pemF0aW9uIH07CiAKIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBK
U0NlbGwgewpAQCAtMTk2LDggKzE5NSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZHVtcEJ5dGVj
b2RlKCk7CiAgICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mKTsKLSAgICB2b2lkIGR1
bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNv
bnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiA9IFN0dWJJbmZvTWFwKCks
IGNvbnN0IENhbGxMaW5rSW5mb01hcCYgPSBDYWxsTGlua0luZm9NYXAoKSk7Ci0gICAgdm9pZCBk
dW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNv
bnN0IFN0dWJJbmZvTWFwJiA9IFN0dWJJbmZvTWFwKCksIGNvbnN0IENhbGxMaW5rSW5mb01hcCYg
PSBDYWxsTGlua0luZm9NYXAoKSk7CisgICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0m
IG91dCwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBj
b25zdCBJQ1N0YXR1c01hcCYgPSBJQ1N0YXR1c01hcCgpKTsKKyAgICB2b2lkIGR1bXBCeXRlY29k
ZShQcmludFN0cmVhbSYgb3V0LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgSUNTdGF0
dXNNYXAmID0gSUNTdGF0dXNNYXAoKSk7CiAKICAgICB2b2lkIGR1bXBFeGNlcHRpb25IYW5kbGVy
cyhQcmludFN0cmVhbSYpOwogICAgIHZvaWQgcHJpbnRTdHJ1Y3R1cmVzKFByaW50U3RyZWFtJiwg
Y29uc3QgSW5zdHJ1Y3Rpb24qKTsKQEAgLTIzNywxNCArMjM2LDggQEAgcHVibGljOgogCiAgICAg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYnl0ZWNvZGVPZmZzZXRGcm9tQ2FsbFNpdGVJbmRleChD
YWxsU2l0ZUluZGV4KTsKIAotICAgIHZvaWQgZ2V0U3R1YkluZm9NYXAoY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJiwgU3R1YkluZm9NYXAmIHJlc3VsdCk7Ci0gICAgdm9pZCBnZXRTdHViSW5mb01h
cChTdHViSW5mb01hcCYgcmVzdWx0KTsKLSAgICAKLSAgICB2b2lkIGdldENhbGxMaW5rSW5mb01h
cChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDYWxsTGlua0luZm9NYXAmIHJlc3VsdCk7Ci0g
ICAgdm9pZCBnZXRDYWxsTGlua0luZm9NYXAoQ2FsbExpbmtJbmZvTWFwJiByZXN1bHQpOwotCi0g
ICAgdm9pZCBnZXRCeVZhbEluZm9NYXAoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQnlWYWxJ
bmZvTWFwJiByZXN1bHQpOwotICAgIHZvaWQgZ2V0QnlWYWxJbmZvTWFwKEJ5VmFsSW5mb01hcCYg
cmVzdWx0KTsKKyAgICB2b2lkIGdldElDU3RhdHVzTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tl
ciYsIElDU3RhdHVzTWFwJiByZXN1bHQpOworICAgIHZvaWQgZ2V0SUNTdGF0dXNNYXAoSUNTdGF0
dXNNYXAmIHJlc3VsdCk7CiAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICBKSVRBZGRJQyogYWRk
SklUQWRkSUMoQXJpdGhQcm9maWxlKiwgSW5zdHJ1Y3Rpb24qKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAJKHJldmlzaW9uIDIzMjIyNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTQ2LDcgKzQ2LDcgQEAgdW5zaWduZWQgQ29kZU9yaWdpbjo6aW5saW5lRGVw
dGgoKSBjb25zdAogICAgIHJldHVybiBpbmxpbmVEZXB0aEZvckNhbGxGcmFtZShpbmxpbmVDYWxs
RnJhbWUpOwogfQogCi1ib29sIENvZGVPcmlnaW46OmlzQXBwcm94aW1hdGVseUVxdWFsVG8oY29u
c3QgQ29kZU9yaWdpbiYgb3RoZXIpIGNvbnN0Citib29sIENvZGVPcmlnaW46OmlzQXBwcm94aW1h
dGVseUVxdWFsVG8oY29uc3QgQ29kZU9yaWdpbiYgb3RoZXIsIENvZGVCbG9jayogdGVybWluYWwp
IGNvbnN0CiB7CiAgICAgQ29kZU9yaWdpbiBhID0gKnRoaXM7CiAgICAgQ29kZU9yaWdpbiBiID0g
b3RoZXI7CkBAIC02OCwxMCArNjgsMTMgQEAgYm9vbCBDb2RlT3JpZ2luOjppc0FwcHJveGltYXRl
bHlFcXVhbFRvKAogICAgICAgICBpZiAoYS5ieXRlY29kZUluZGV4ICE9IGIuYnl0ZWNvZGVJbmRl
eCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIGlmICgoISFh
LmlubGluZUNhbGxGcmFtZSkgIT0gKCEhYi5pbmxpbmVDYWxsRnJhbWUpKQorICAgICAgICBib29s
IGFIYXNJbmxpbmVDYWxsRnJhbWUgPSAhIWEuaW5saW5lQ2FsbEZyYW1lCisgICAgICAgICAgICAm
JiBhLmlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkgIT0gdGVybWluYWw7
CisgICAgICAgIGJvb2wgYkhhc0lubGluZUNhbGxGcmFtZSA9ICEhYi5pbmxpbmVDYWxsRnJhbWU7
CisgICAgICAgIGlmIChhSGFzSW5saW5lQ2FsbEZyYW1lICE9IGJIYXNJbmxpbmVDYWxsRnJhbWUp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgICAgICBpZiAoIWEuaW5s
aW5lQ2FsbEZyYW1lKQorICAgICAgICBpZiAoIWFIYXNJbmxpbmVDYWxsRnJhbWUpCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAgICAgIGlmIChhLmlubGluZUNhbGxGcmFt
ZS0+YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkgIT0gYi5pbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5l
Q29kZUJsb2NrLmdldCgpKQpAQCAtODIsNyArODUsNyBAQCBib29sIENvZGVPcmlnaW46OmlzQXBw
cm94aW1hdGVseUVxdWFsVG8oCiAgICAgfQogfQogCi11bnNpZ25lZCBDb2RlT3JpZ2luOjphcHBy
b3hpbWF0ZUhhc2goKSBjb25zdAordW5zaWduZWQgQ29kZU9yaWdpbjo6YXBwcm94aW1hdGVIYXNo
KENvZGVCbG9jayogdGVybWluYWwpIGNvbnN0CiB7CiAgICAgaWYgKCFpc1NldCgpKQogICAgICAg
ICByZXR1cm4gMDsKQEAgLTk3LDYgKzEwMCw5IEBAIHVuc2lnbmVkIENvZGVPcmlnaW46OmFwcHJv
eGltYXRlSGFzaCgpIGMKICAgICAgICAgaWYgKCFjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkK
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIAorICAgICAgICBpZiAoY29kZU9y
aWdpbi5pbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLmdldCgpID09IHRlcm1pbmFs
KQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgCiAgICAgICAgIHJlc3VsdCAr
PSBXVEY6OlB0ckhhc2g8SlNDZWxsKj46Omhhc2goY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUt
PmJhc2VsaW5lQ29kZUJsb2NrLmdldCgpKTsKICAgICAgICAgCiAgICAgICAgIGNvZGVPcmlnaW4g
PSBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+ZGlyZWN0Q2FsbGVyOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCShyZXZpc2lvbiAyMzIyMjcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtOTQsOSArOTQsOSBAQCBzdHJ1Y3QgQ29kZU9yaWdpbiB7CiAgICAgCiAgICAg
Ly8gVGhpcyBjaGVja3MgaWYgdGhlIHR3byBjb2RlIG9yaWdpbnMgY29ycmVzcG9uZCB0byB0aGUg
c2FtZSBzdGFjayB0cmFjZSBzbmlwcGV0cywKICAgICAvLyBidXQgaWdub3JlIHdoZXRoZXIgdGhl
IElubGluZUNhbGxGcmFtZSdzIGFyZSBpZGVudGljYWwuCi0gICAgYm9vbCBpc0FwcHJveGltYXRl
bHlFcXVhbFRvKGNvbnN0IENvZGVPcmlnaW4mIG90aGVyKSBjb25zdDsKKyAgICBib29sIGlzQXBw
cm94aW1hdGVseUVxdWFsVG8oY29uc3QgQ29kZU9yaWdpbiYgb3RoZXIsIENvZGVCbG9jayogdGVy
bWluYWwgPSBudWxscHRyKSBjb25zdDsKICAgICAKLSAgICB1bnNpZ25lZCBhcHByb3hpbWF0ZUhh
c2goKSBjb25zdDsKKyAgICB1bnNpZ25lZCBhcHByb3hpbWF0ZUhhc2goQ29kZUJsb2NrKiB0ZXJt
aW5hbCA9IG51bGxwdHIpIGNvbnN0OwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9u
PgogICAgIHZvaWQgd2Fsa1VwSW5saW5lU3RhY2soY29uc3QgRnVuY3Rpb24mKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNwcAko
cmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4
aXRQcm9maWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsOCArNDMsMTAgQEAgRXhpdFByb2Zp
bGU6On5FeGl0UHJvZmlsZSgpIHsgfQogCiBib29sIEV4aXRQcm9maWxlOjphZGQoQ29kZUJsb2Nr
KiBvd25lciwgY29uc3QgRnJlcXVlbnRFeGl0U2l0ZSYgc2l0ZSkKIHsKKyAgICBSRUxFQVNFX0FT
U0VSVChzaXRlLmppdFR5cGUoKSAhPSBFeGl0RnJvbUFueXRoaW5nKTsKKyAgICBSRUxFQVNFX0FT
U0VSVChzaXRlLmlubGluZUtpbmQoKSAhPSBFeGl0RnJvbUFueUlubGluZUtpbmQpOworCiAgICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihvd25lci0+dW5saW5rZWRDb2RlQmxvY2soKS0+bV9s
b2NrKTsKLSAgICBBU1NFUlQoc2l0ZS5qaXRUeXBlKCkgIT0gRXhpdEZyb21Bbnl0aGluZyk7CiAK
ICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKG93bmVyLCAiZnJlcXVlbnRFeGl0IiwgKHNpdGUpKTsK
ICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmls
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0
UHJvZmlsZS5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5
LDcgQEAKIAogI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKICNpbmNsdWRlICJFeGl0S2lu
ZC5oIgorI2luY2x1ZGUgIkV4aXRpbmdJbmxpbmVLaW5kLmgiCiAjaW5jbHVkZSAiRXhpdGluZ0pJ
VFR5cGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KQEAgLTQxLDYgKzQyLDcgQEAgcHVibGljOgogICAgICAgICA6IG1fYnl0ZWNvZGVPZmZzZXQo
MCkgLy8gMCA9IGVtcHR5IHZhbHVlCiAgICAgICAgICwgbV9raW5kKEV4aXRLaW5kVW5zZXQpCiAg
ICAgICAgICwgbV9qaXRUeXBlKEV4aXRGcm9tQW55dGhpbmcpCisgICAgICAgICwgbV9pbmxpbmVL
aW5kKEV4aXRGcm9tQW55SW5saW5lS2luZCkKICAgICB7CiAgICAgfQogICAgIApAQCAtNDgsMTMg
KzUwLDE1IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX2J5dGVjb2RlT2Zmc2V0KDEpIC8vIDEgPSBk
ZWxldGVkIHZhbHVlCiAgICAgICAgICwgbV9raW5kKEV4aXRLaW5kVW5zZXQpCiAgICAgICAgICwg
bV9qaXRUeXBlKEV4aXRGcm9tQW55dGhpbmcpCisgICAgICAgICwgbV9pbmxpbmVLaW5kKEV4aXRG
cm9tQW55SW5saW5lS2luZCkKICAgICB7CiAgICAgfQogICAgIAotICAgIGV4cGxpY2l0IEZyZXF1
ZW50RXhpdFNpdGUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEV4aXRLaW5kIGtpbmQsIEV4aXRp
bmdKSVRUeXBlIGppdFR5cGUgPSBFeGl0RnJvbUFueXRoaW5nKQorICAgIGV4cGxpY2l0IEZyZXF1
ZW50RXhpdFNpdGUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEV4aXRLaW5kIGtpbmQsIEV4aXRp
bmdKSVRUeXBlIGppdFR5cGUgPSBFeGl0RnJvbUFueXRoaW5nLCBFeGl0aW5nSW5saW5lS2luZCBp
bmxpbmVLaW5kID0gRXhpdEZyb21BbnlJbmxpbmVLaW5kKQogICAgICAgICA6IG1fYnl0ZWNvZGVP
ZmZzZXQoYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgICwgbV9raW5kKGtpbmQpCiAgICAgICAgICwg
bV9qaXRUeXBlKGppdFR5cGUpCisgICAgICAgICwgbV9pbmxpbmVLaW5kKGlubGluZUtpbmQpCiAg
ICAgewogICAgICAgICBpZiAobV9raW5kID09IEFyZ3VtZW50c0VzY2FwZWQpIHsKICAgICAgICAg
ICAgIC8vIENvdW50IHRoaXMgb25lIGdsb2JhbGx5LiBJdCBkb2Vzbid0IG1hdHRlciB3aGVyZSBp
biB0aGUgY29kZSBibG9jayB0aGUgYXJndW1lbnRzIGV4Y2FwZWQ7CkBAIC02NSwxMCArNjksMTEg
QEAgcHVibGljOgogICAgIAogICAgIC8vIFVzZSB0aGlzIGNvbnN0cnVjdG9yIGlmIHlvdSB3aXNo
IGZvciB0aGUgZXhpdCBzaXRlIHRvIGJlIGNvdW50ZWQgZ2xvYmFsbHkgd2l0aGluIGl0cwogICAg
IC8vIGNvZGUgYmxvY2suCi0gICAgZXhwbGljaXQgRnJlcXVlbnRFeGl0U2l0ZShFeGl0S2luZCBr
aW5kLCBFeGl0aW5nSklUVHlwZSBqaXRUeXBlID0gRXhpdEZyb21Bbnl0aGluZykKKyAgICBleHBs
aWNpdCBGcmVxdWVudEV4aXRTaXRlKEV4aXRLaW5kIGtpbmQsIEV4aXRpbmdKSVRUeXBlIGppdFR5
cGUgPSBFeGl0RnJvbUFueXRoaW5nLCBFeGl0aW5nSW5saW5lS2luZCBpbmxpbmVLaW5kID0gRXhp
dEZyb21BbnlJbmxpbmVLaW5kKQogICAgICAgICA6IG1fYnl0ZWNvZGVPZmZzZXQoMCkKICAgICAg
ICAgLCBtX2tpbmQoa2luZCkKICAgICAgICAgLCBtX2ppdFR5cGUoaml0VHlwZSkKKyAgICAgICAg
LCBtX2lubGluZUtpbmQoaW5saW5lS2luZCkKICAgICB7CiAgICAgfQogICAgIApAQCAtODEsNyAr
ODYsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV9ieXRlY29kZU9mZnNldCA9
PSBvdGhlci5tX2J5dGVjb2RlT2Zmc2V0CiAgICAgICAgICAgICAmJiBtX2tpbmQgPT0gb3RoZXIu
bV9raW5kCi0gICAgICAgICAgICAmJiBtX2ppdFR5cGUgPT0gb3RoZXIubV9qaXRUeXBlOworICAg
ICAgICAgICAgJiYgbV9qaXRUeXBlID09IG90aGVyLm1faml0VHlwZQorICAgICAgICAgICAgJiYg
bV9pbmxpbmVLaW5kID09IG90aGVyLm1faW5saW5lS2luZDsKICAgICB9CiAgICAgCiAgICAgYm9v
bCBzdWJzdW1lcyhjb25zdCBGcmVxdWVudEV4aXRTaXRlJiBvdGhlcikgY29uc3QKQEAgLTkwLDE5
ICs5NiwyNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlm
IChtX2tpbmQgIT0gb3RoZXIubV9raW5kKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICBpZiAobV9qaXRUeXBlID09IEV4aXRGcm9tQW55dGhpbmcpCi0gICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIG1faml0VHlwZSA9PSBvdGhlci5tX2ppdFR5cGU7Cisg
ICAgICAgIGlmIChtX2ppdFR5cGUgIT0gRXhpdEZyb21Bbnl0aGluZworICAgICAgICAgICAgJiYg
bV9qaXRUeXBlICE9IG90aGVyLm1faml0VHlwZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgaWYgKG1faW5saW5lS2luZCAhPSBFeGl0RnJvbUFueUlubGluZUtpbmQKKyAgICAg
ICAgICAgICYmIG1faW5saW5lS2luZCAhPSBvdGhlci5tX2lubGluZUtpbmQpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKICAgICB1
bnNpZ25lZCBoYXNoKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6OmludEhhc2go
bV9ieXRlY29kZU9mZnNldCkgKyBtX2tpbmQgKyBzdGF0aWNfY2FzdDxzdGQ6OnVuZGVybHlpbmdf
dHlwZV90PEV4aXRpbmdKSVRUeXBlPj4obV9qaXRUeXBlKSAqIDc7CisgICAgICAgIHJldHVybiBX
VEY6OmludEhhc2gobV9ieXRlY29kZU9mZnNldCkgKyBtX2tpbmQgKyBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obV9qaXRUeXBlKSAqIDcgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9pbmxpbmVLaW5k
KSAqIDExOwogICAgIH0KICAgICAKICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCgpIGNvbnN0
IHsgcmV0dXJuIG1fYnl0ZWNvZGVPZmZzZXQ7IH0KICAgICBFeGl0S2luZCBraW5kKCkgY29uc3Qg
eyByZXR1cm4gbV9raW5kOyB9CiAgICAgRXhpdGluZ0pJVFR5cGUgaml0VHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1faml0VHlwZTsgfQorICAgIEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQoKSBj
b25zdCB7IHJldHVybiBtX2lubGluZUtpbmQ7IH0KICAgICAKICAgICBGcmVxdWVudEV4aXRTaXRl
IHdpdGhKSVRUeXBlKEV4aXRpbmdKSVRUeXBlIGppdFR5cGUpIGNvbnN0CiAgICAgewpAQCAtMTEx
LDYgKzEyMiwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisg
ICAgRnJlcXVlbnRFeGl0U2l0ZSB3aXRoSW5saW5lS2luZChFeGl0aW5nSW5saW5lS2luZCBpbmxp
bmVLaW5kKSBjb25zdAorICAgIHsKKyAgICAgICAgRnJlcXVlbnRFeGl0U2l0ZSByZXN1bHQgPSAq
dGhpczsKKyAgICAgICAgcmVzdWx0Lm1faW5saW5lS2luZCA9IGlubGluZUtpbmQ7CisgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgfQorCiAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9raW5kID09IEV4aXRLaW5kVW5zZXQg
JiYgbV9ieXRlY29kZU9mZnNldDsKQEAgLTEyMiw2ICsxNDAsNyBAQCBwcml2YXRlOgogICAgIHVu
c2lnbmVkIG1fYnl0ZWNvZGVPZmZzZXQ7CiAgICAgRXhpdEtpbmQgbV9raW5kOwogICAgIEV4aXRp
bmdKSVRUeXBlIG1faml0VHlwZTsKKyAgICBFeGl0aW5nSW5saW5lS2luZCBtX2lubGluZUtpbmQ7
CiB9OwogCiBzdHJ1Y3QgRnJlcXVlbnRFeGl0U2l0ZUhhc2ggewpAQCAtMTkyLDEwICsyMTEsMTAg
QEAgcHVibGljOgogICAgIGJvb2wgaGFzRXhpdFNpdGUoY29uc3QgRnJlcXVlbnRFeGl0U2l0ZSYg
c2l0ZSkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChzaXRlLmppdFR5cGUoKSA9PSBFeGl0RnJv
bUFueXRoaW5nKSB7Ci0gICAgICAgICAgICByZXR1cm4gaGFzRXhpdFNpdGUoc2l0ZS53aXRoSklU
VHlwZShFeGl0RnJvbURGRykpCi0gICAgICAgICAgICAgICAgfHwgaGFzRXhpdFNpdGUoc2l0ZS53
aXRoSklUVHlwZShFeGl0RnJvbUZUTCkpOworICAgICAgICAgICAgcmV0dXJuIGhhc0V4aXRTaXRl
V2l0aFNwZWNpZmljSklUVHlwZShzaXRlLndpdGhKSVRUeXBlKEV4aXRGcm9tREZHKSkKKyAgICAg
ICAgICAgICAgICB8fCBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0pJVFR5cGUoc2l0ZS53aXRoSklU
VHlwZShFeGl0RnJvbUZUTCkpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtX2ZyZXF1ZW50
RXhpdFNpdGVzLmZpbmQoc2l0ZSkgIT0gbV9mcmVxdWVudEV4aXRTaXRlcy5lbmQoKTsKKyAgICAg
ICAgcmV0dXJuIGhhc0V4aXRTaXRlV2l0aFNwZWNpZmljSklUVHlwZShzaXRlKTsKICAgICB9CiAg
ICAgCiAgICAgYm9vbCBoYXNFeGl0U2l0ZShFeGl0S2luZCBraW5kKSBjb25zdApAQCAtMjA4LDYg
KzIyNywyMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBoYXNFeGl0U2l0ZShGcmVxdWVudEV4
aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIGtpbmQpKTsKICAgICB9CiBwcml2YXRlOgorICAgIGJvb2wg
aGFzRXhpdFNpdGVXaXRoU3BlY2lmaWNKSVRUeXBlKGNvbnN0IEZyZXF1ZW50RXhpdFNpdGUmIHNp
dGUpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoc2l0ZS5pbmxpbmVLaW5kKCkgPT0gRXhpdEZy
b21BbnlJbmxpbmVLaW5kKSB7CisgICAgICAgICAgICByZXR1cm4gaGFzRXhpdFNpdGVXaXRoU3Bl
Y2lmaWNJbmxpbmVLaW5kKHNpdGUud2l0aElubGluZUtpbmQoRXhpdEZyb21Ob3RJbmxpbmVkKSkK
KyAgICAgICAgICAgICAgICB8fCBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0lubGluZUtpbmQoc2l0
ZS53aXRoSW5saW5lS2luZChFeGl0RnJvbUlubGluZWQpKTsKKyAgICAgICAgfQorICAgICAgICBy
ZXR1cm4gaGFzRXhpdFNpdGVXaXRoU3BlY2lmaWNJbmxpbmVLaW5kKHNpdGUpOworICAgIH0KKyAg
ICAKKyAgICBib29sIGhhc0V4aXRTaXRlV2l0aFNwZWNpZmljSW5saW5lS2luZChjb25zdCBGcmVx
dWVudEV4aXRTaXRlJiBzaXRlKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZnJlcXVl
bnRFeGl0U2l0ZXMuZmluZChzaXRlKSAhPSBtX2ZyZXF1ZW50RXhpdFNpdGVzLmVuZCgpOworICAg
IH0KKyAgICAKICAgICBIYXNoU2V0PEZyZXF1ZW50RXhpdFNpdGU+IG1fZnJlcXVlbnRFeGl0U2l0
ZXM7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEZsYWcu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0Rmxh
Zy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4
aXRGbGFnLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJFeGl0RmxhZy5oIgorCisjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgorCitu
YW1lc3BhY2UgSlNDIHsKKwordm9pZCBFeGl0RmxhZzo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBj
b25zdAoreworICAgIGlmICghbV9iaXRzKSB7CisgICAgICAgIG91dC5wcmludCgiZmFsc2UiKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBDb21tYVByaW50ZXIgY29tbWEoInwi
OworICAgIGlmIChpc1NldChFeGl0RnJvbU5vdElubGluZWQpKQorICAgICAgICBvdXQucHJpbnQo
Y29tbWEsICJub3RJbmxpbmVkIik7CisgICAgaWYgKGlzU2V0KEV4aXRGcm9tSW5saW5lZCkpCisg
ICAgICAgIG91dC5wcmludChjb21tYSwgImlubGluZWQiKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0RmxhZy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0RmxhZy5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0RmxhZy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYW1nYSBvbmNlCisKKyNpbmNsdWRlICJFeGl0aW5n
SW5saW5lS2luZC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhpdEZsYWcgeworcHVi
bGljOgorICAgIEV4aXRGbGFnKCkgeyB9CisgICAgCisgICAgRXhpdEZsYWcoYm9vbCB2YWx1ZSwg
RXhpdGluZ0lubGluZUtpbmQgaW5saW5lS2luZCkKKyAgICB7CisgICAgICAgIGlmICghdmFsdWUp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgICAgICBzd2l0Y2ggKGlubGluZUtp
bmQpIHsKKyAgICAgICAgY2FzZSBFeGl0RnJvbUFueUlubGluZUtpbmQ6CisgICAgICAgICAgICBt
X2JpdHMgPSB0cnVlTm90SW5saW5lZCB8IHRydWVJbmxpbmVkOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgRXhpdEZyb21Ob3RJbmxpbmVkOgorICAgICAgICAgICAgbV9iaXRzID0g
dHJ1ZU5vdElubGluZWQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFeGl0RnJv
bUlubGluZWQ6CisgICAgICAgICAgICBtX2JpdHMgPSB0cnVlSW5saW5lZDsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIEV4aXRGbGFnIG9wZXJhdG9yfChj
b25zdCBFeGl0RmxhZyYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBFeGl0RmxhZyByZXN1
bHQ7CisgICAgICAgIHJlc3VsdC5tX2JpdHMgPSBtX2JpdHMgfCBvdGhlci5tX2JpdHM7CisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIEV4aXRGbGFnJiBvcGVyYXRvcnw9
KGNvbnN0IEV4aXRGbGFnJiBvdGhlcikKKyAgICB7CisgICAgICAgICp0aGlzID0gKnRoaXMgfCBv
dGhlcjsKKyAgICB9CisgICAgCisgICAgRXhpdEZsYWcgb3BlcmF0b3ImKGNvbnN0IEV4aXRGbGFn
JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIEV4aXRGbGFnIHJlc3VsdDsKKyAgICAgICAg
cmVzdWx0Lm1fYml0cyA9IG1fYml0cyAmIG90aGVyLm1fYml0czsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisgICAgCisgICAgRXhpdEZsYWcmIG9wZXJhdG9yJj0oY29uc3QgRXhpdEZs
YWcmIG90aGVyKQorICAgIHsKKyAgICAgICAgKnRoaXMgPSAqdGhpcyAmIG90aGVyOworICAgIH0K
KyAgICAKKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiAhIW1fYml0czsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc1NldChFeGl0aW5nSW5s
aW5lS2luZCBpbmxpbmVLaW5kKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICp0aGlzICYg
RXhpdEZsYWcodHJ1ZSwgaW5saW5lS2luZCk7CisgICAgfQorICAgIAorICAgIHZvaWQgZHVtcChQ
cmludFN0cmVhbSYpIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3RleHBy
IHVpbnQ4X3QgdHJ1ZU5vdElubGluZWQgPSAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhf
dCB0cnVlSW5saW5lZCA9IDI7CisgICAgCisgICAgdWludDhfdCBtX2JpdHMgeyAwIH07Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0V4aXRpbmdJbmxpbmVLaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuY3BwCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0aW5nSW5saW5lS2luZC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRXhpdGluZ0lu
bGluZUtpbmQuaCIKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3BhY2Ug
V1RGIHsKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwordm9pZCBwcmludEludGVybmFsKFByaW50
U3RyZWFtJiBvdXQsIEV4aXRpbmdJbmxpbmVLaW5kIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBl
KSB7CisgICAgY2FzZSBFeGl0RnJvbUFueUlubGluZUtpbmQ6CisgICAgICAgIG91dC5wcmludCgi
RnJvbUFueUlubGluZUtpbmQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRXhpdEZyb21O
b3RJbmxpbmVkOgorICAgICAgICBvdXQucHJpbnQoIkZyb21Ob3RJbmxpbmVkIik7CisgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIEV4aXRGcm9tSW5saW5lZDoKKyAgICAgICAgb3V0LnByaW50KCJG
cm9tSW5saW5lZCIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGlu
ZUtpbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2Ug
SlNDIHsKKworZW51bSBFeGl0aW5nSW5saW5lS2luZCA6IHVpbnQ4X3QgeworICAgIEV4aXRGcm9t
QW55SW5saW5lS2luZCwKKyAgICBFeGl0RnJvbU5vdElubGluZWQsCisgICAgRXhpdEZyb21Jbmxp
bmVkLAorfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBXVEYgeworCitjbGFz
cyBQcmludFN0cmVhbTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6RXhp
dGluZ0lubGluZUtpbmQpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHJldmlz
aW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3Rh
dHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsMTIgKzUyLDE3IEBAIGJvb2wgR2V0QnlJZFN0
YXR1czo6YXBwZW5kVmFyaWFudChjb25zdCAKIH0KIAogI2lmIEVOQUJMRShERkdfSklUKQotYm9v
bCBHZXRCeUlkU3RhdHVzOjpoYXNFeGl0U2l0ZShDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXgpCitFeGl0RmxhZyBHZXRCeUlkU3RhdHVzOjpoYXNFeGl0U2l0
ZShDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiB7CiAg
ICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gcHJvZmlsZWRCbG9jay0+
dW5saW5rZWRDb2RlQmxvY2soKTsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHVubGlu
a2VkQ29kZUJsb2NrLT5tX2xvY2spOwotICAgIHJldHVybiB1bmxpbmtlZENvZGVCbG9jay0+aGFz
RXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFk
Q2FjaGUpKQotICAgICAgICB8fCB1bmxpbmtlZENvZGVCbG9jay0+aGFzRXhpdFNpdGUobG9ja2Vy
LCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkQ29uc3RhbnRDYWNoZSkp
OworICAgIGF1dG8gZXhpdEZsYWcgPSBbJl0gKEV4aXRLaW5kIGV4aXRLaW5kKSAtPiBFeGl0Rmxh
ZyB7CisgICAgICAgIGF1dG8gd2l0aElubGluZWQgPSBbJl0gKEV4aXRpbmdJbmxpbmVkS2luZCBp
bmxpbmVLaW5kKSAtPiBFeGl0RmxhZyB7CisgICAgICAgICAgICByZXR1cm4gRXhpdEZsYWcodW5s
aW5rZWRDb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRl
KGJ5dGVjb2RlSW5kZXgsIGV4aXRLaW5kLCBFeGl0RnJvbUFueXRoaW5nLCBpbmxpbmVLaW5kKSks
IGlubGluZUtpbmQpOworICAgICAgICB9OworICAgICAgICByZXR1cm4gd2l0aElubGluZWQoRXhp
dEZyb21Ob3RJbmxpbmVkKSB8IHdpdGhJbmxpbmVkKEV4aXRGcm9tSW5saW5lZCk7CisgICAgfTsK
KyAgICByZXR1cm4gZXhpdEZsYWcoQmFkQ2FjaGUpIHwgZXhpdEZsYWcoQmFkQ29uc3RhbnRDYWNo
ZSk7CiB9CiAjZW5kaWYKIApAQCAtMTA1LDcgKzExMCw3IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJ
ZFN0YXR1czo6Y29tcHV0ZUZyb20KICAgICB9CiB9CiAKLUdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0
YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIFN0dWJJbmZvTWFwJiBt
YXAsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitHZXRC
eUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJs
b2NrLCBJQ1N0YXR1c01hcCYgbWFwLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3Ry
aW5nSW1wbCogdWlkLCBFeGl0RmxhZyBkaWRFeGl0LCBDYWxsTGlua1N0YXR1czo6RXhpdFNpdGVE
YXRhIGNhbGxFeGl0U2l0ZURhdGEpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihw
cm9maWxlZEJsb2NrLT5tX2xvY2spOwogCkBAIC0xMTMsMTIgKzExOCwxMSBAQCBHZXRCeUlkU3Rh
dHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAKICNpZiBFTkFCTEUoREZHX0pJVCkKICAg
ICByZXN1bHQgPSBjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjaygKLSAg
ICAgICAgbG9ja2VyLCBwcm9maWxlZEJsb2NrLCBtYXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJ
bmRleCkpLCB1aWQsCi0gICAgICAgIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRh
KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpKTsKKyAgICAgICAgbG9ja2VyLCBwcm9maWxl
ZEJsb2NrLCBtYXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkpLnN0dWJJbmZvLCB1aWQs
CisgICAgICAgIGNhbGxFeGl0U2l0ZURhdGEpOwogICAgIAotICAgIGlmICghcmVzdWx0LnRha2Vz
U2xvd1BhdGgoKQotICAgICAgICAmJiBoYXNFeGl0U2l0ZShwcm9maWxlZEJsb2NrLCBieXRlY29k
ZUluZGV4KSkKLSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMocmVzdWx0Lm1ha2VzQ2FsbHMo
KSA/IE1ha2VzQ2FsbHMgOiBUYWtlc1Nsb3dQYXRoLCB0cnVlKTsKKyAgICBpZiAoZGlkRXhpdCkK
KyAgICAgICAgcmV0dXJuIHJlc3VsdC5zbG93VmVyc2lvbigpOwogI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0obWFwKTsKICNlbmRpZgpAQCAtMTM3LDcgKzE0MSw3IEBAIEdldEJ5SWRTdGF0dXMgR2V0
QnlJZFN0YXR1czo6Y29tcHV0ZUZvclMKICAgICAgICAgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVF
eGl0U2l0ZURhdGEocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KSk7CiAK
ICAgICBpZiAoIXJlc3VsdC50YWtlc1Nsb3dQYXRoKCkgJiYgR2V0QnlJZFN0YXR1czo6aGFzRXhp
dFNpdGUocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KSkKLSAgICAgICAg
cmV0dXJuIEdldEJ5SWRTdGF0dXMocmVzdWx0Lm1ha2VzQ2FsbHMoKSA/IEdldEJ5SWRTdGF0dXM6
Ok1ha2VzQ2FsbHMgOiBHZXRCeUlkU3RhdHVzOjpUYWtlc1Nsb3dQYXRoLCB0cnVlKTsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdC5zbG93VmVyc2lvbigpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAj
ZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkBAIC0zMTQsNDAgKzMxOCwzMiBAQCBHZXRCeUlkU3Rh
dHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAog
R2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAotICAgIENvZGVCbG9jayog
cHJvZmlsZWRCbG9jaywgQ29kZUJsb2NrKiBkZmdCbG9jaywgU3R1YkluZm9NYXAmIGJhc2VsaW5l
TWFwLAotICAgIFN0dWJJbmZvTWFwJiBkZmdNYXAsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgVW5p
cXVlZFN0cmluZ0ltcGwqIHVpZCkKKyAgICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIElDU3Rh
dHVzTWFwJiBiYXNlbGluZU1hcCwKKyAgICBJQ1N0YXR1c0NvbnRleHRTdGFjayYgaWNDb250ZXh0
U3RhY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsK
LSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBpZiAoZGZnQmxvY2spIHsKLSAgICAgICAgQ2FsbExp
bmtTdGF0dXM6OkV4aXRTaXRlRGF0YSBleGl0U2l0ZURhdGE7Ci0gICAgICAgIHsKLSAgICAgICAg
ICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKLSAg
ICAgICAgICAgIGV4aXRTaXRlRGF0YSA9IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVE
YXRhKAotICAgICAgICAgICAgICAgIHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJ
bmRleCk7Ci0gICAgICAgIH0KKyAgICBDYWxsTGlua1N0YXR1czo6RXhpdFNpdGVEYXRhIGNhbGxF
eGl0U2l0ZURhdGEgPQorICAgICAgICBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0
YShwcm9maWxlZEJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpOworICAgIEV4aXRGbGFn
IGRpZEV4aXQgPSBoYXNFeGl0U2l0ZShwcm9maWxlZEJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2Rl
SW5kZXgpOworICAgIAorICAgIGZvciAoSUNTdGF0dXNDb250ZXh0JiBjb250ZXh0IDogaWNDb250
ZXh0U3RhY2spIHsKKyAgICAgICAgSUNTdGF0dXMgc3RhdHVzID0gY29udGV4dC5nZXQoY29kZU9y
aWdpbik7CiAgICAgICAgIAotICAgICAgICBHZXRCeUlkU3RhdHVzIHJlc3VsdDsKLSAgICAgICAg
ewotICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihkZmdCbG9jay0+bV9sb2Nr
KTsKLSAgICAgICAgICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0
ZUZlZWRiYWNrKAotICAgICAgICAgICAgICAgIGxvY2tlciwgZGZnQmxvY2ssIGRmZ01hcC5nZXQo
Y29kZU9yaWdpbiksIHVpZCwgZXhpdFNpdGVEYXRhKTsKKyAgICAgICAgaWYgKHN0YXR1cy5zdHVi
SW5mbykgeworICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb250ZXh0Lm9w
dGltaXplZENvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgIEdldEJ5SWRTdGF0dXMgcmVz
dWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCisgICAgICAg
ICAgICAgICAgbG9ja2VyLCBjb250ZXh0Lm9wdGltaXplZENvZGVCbG9jaywgc3RhdHVzLnN0dWJJ
bmZvLCB1aWQsIGNhbGxFeGl0U2l0ZURhdGEpOworICAgICAgICAgICAgaWYgKHJlc3VsdC5pc1Nl
dCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGRpZEV4aXQuaXNTZXQoY29udGV4dC5pbmxpbmVL
aW5kKGNvZGVPcmlnaW4pKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5zbG93
VmVyc2lvbigpOworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICB9
CiAgICAgICAgIH0KLQotICAgICAgICBpZiAocmVzdWx0LnRha2VzU2xvd1BhdGgoKSkKLSAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgCi0gICAgICAgIGlmIChoYXNFeGl0U2l0ZShwcm9m
aWxlZEJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpKQotICAgICAgICAgICAgcmV0dXJu
IEdldEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgdHJ1ZSk7CiAgICAgICAgIAotICAgICAgICBp
ZiAocmVzdWx0LmlzU2V0KCkpCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICBp
ZiAoc3RhdHVzLmdldFN0YXR1cykKKyAgICAgICAgICAgIHJldHVybiAqc3RhdHVzLmdldFN0YXR1
czsKICAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShkZmdCbG9jayk7Ci0gICAgVU5VU0VE
X1BBUkFNKGRmZ01hcCk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBjb21wdXRlRm9yKHByb2ZpbGVk
QmxvY2ssIGJhc2VsaW5lTWFwLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIHVpZCk7CisgICAg
ICAgIAorICAgIHJldHVybiBjb21wdXRlRm9yKHByb2ZpbGVkQmxvY2ssIGJhc2VsaW5lTWFwLCBj
b2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIHVpZCwgY2FsbEV4aXRTaXRlRGF0YSk7CiB9CiAKIEdl
dEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihjb25zdCBTdHJ1Y3R1cmVTZXQm
IHNldCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKQEAgLTQxNCw2ICs0MTAsMTEgQEAgYm9vbCBH
ZXRCeUlkU3RhdHVzOjptYWtlc0NhbGxzKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
K0dldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6c2xvd1ZlcnNpb24oKSBjb25zdAoreworICAg
IHJldHVybiBHZXRCeUlkU3RhdHVzKG1ha2VzQ2FsbHMoKSA/IE1ha2VzQ2FsbHMgOiBUYWtlc1Ns
b3dQYXRoLCB3YXNTZWVuSW5KSVQoKSk7Cit9CisKIHZvaWQgR2V0QnlJZFN0YXR1czo6ZmlsdGVy
KGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0KQogewogICAgIGlmIChtX3N0YXRlICE9IFNpbXBsZSkK
QEAgLTQyMyw2ICs0MjQsMjUgQEAgdm9pZCBHZXRCeUlkU3RhdHVzOjpmaWx0ZXIoY29uc3QgU3Ry
dWN0dQogICAgICAgICBtX3N0YXRlID0gTm9JbmZvcm1hdGlvbjsKIH0KIAordm9pZCBHZXRCeUlk
U3RhdHVzOjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBmb3IgKEdl
dEJ5SWRWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykKKyAgICAgICAgdmFyaWF0Lm1hcmtJ
ZkNoZWFwKHZpc2l0b3IpOworfQorCitib29sIEdldEJ5SWRTdGF0dXM6OmZpbmFsaXplKCkKK3sK
KyAgICBmb3IgKEdldEJ5SWRWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykgeworICAgICAg
ICBpZiAoIXZhcmlhbnQuZmluYWxpemUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgaWYgKG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0ICYmICFIZWFwOjppc01hcmtlZCht
X21vZHVsZU5hbWVzcGFjZU9iamVjdCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
bV9tb2R1bGVFbnZpcm9ubWVudCAmJiAhSGVhcDo6aXNNYXJrZWQobV9tb2R1bGVFbnZpcm9ubWVu
dCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBH
ZXRCeUlkU3RhdHVzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgb3V0LnBy
aW50KCIoIik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0
YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRC
eUlkU3RhdHVzLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDkgQEAK
ICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNp
bmNsdWRlICJDb25jdXJyZW50SlNMb2NrLmgiCisjaW5jbHVkZSAiRXhpdEZsYWcuaCIKICNpbmNs
dWRlICJHZXRCeUlkVmFyaWFudC5oIgorI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCiAjaW5jbHVk
ZSAiU2NvcGVPZmZzZXQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00MCw4ICs0Miw2IEBAIGNs
YXNzIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OwogY2xhc3MgTW9kdWxlTmFtZXNwYWNlQWNjZXNz
Q2FzZTsKIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOwogCi10eXBlZGVmIEhhc2hNYXA8Q29kZU9y
aWdpbiwgU3RydWN0dXJlU3R1YkluZm8qLCBDb2RlT3JpZ2luQXBwcm94aW1hdGVIYXNoPiBTdHVi
SW5mb01hcDsKLQogY2xhc3MgR2V0QnlJZFN0YXR1cyB7CiBwdWJsaWM6CiAgICAgZW51bSBTdGF0
ZSB7CkBAIC04MSwxMCArODEsMTAgQEAgcHVibGljOgogICAgICAgICBtX3ZhcmlhbnRzLmFwcGVu
ZCh2YXJpYW50KTsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIEdldEJ5SWRTdGF0dXMgY29tcHV0
ZUZvcihDb2RlQmxvY2sqLCBTdHViSW5mb01hcCYsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFVu
aXF1ZWRTdHJpbmdJbXBsKiB1aWQpOworICAgIHN0YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVG
b3IoQ29kZUJsb2NrKiwgSUNTdGF0dXNNYXAmLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkLCBFeGl0RmxhZywgQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0
YSk7CiAgICAgc3RhdGljIEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihjb25zdCBTdHJ1Y3R1cmVT
ZXQmLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKICAgICAKLSAgICBzdGF0aWMgR2V0QnlJZFN0
YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgQ29kZUJsb2NrKiBkZmdC
bG9jaywgU3R1YkluZm9NYXAmIGJhc2VsaW5lTWFwLCBTdHViSW5mb01hcCYgZGZnTWFwLCBDb2Rl
T3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKKyAgICBzdGF0aWMgR2V0QnlJZFN0YXR1
cyBjb21wdXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAmIGJhc2Vs
aW5lTWFwLCBJQ1N0YXR1c0NvbnRleHRTdGFjayYgZGZnQ29udGV4dFN0YWNrLCBDb2RlT3JpZ2lu
LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIHN0
YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mbyhjb25zdCBDb25jdXJyZW50SlNM
b2NrZXImLCBDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiwgQ29k
ZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7CkBAIC0xMDYsNiArMTA2LDggQEAgcHVi
bGljOgogICAgIGJvb2wgdGFrZXNTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0g
VGFrZXNTbG93UGF0aCB8fCBtX3N0YXRlID09IE1ha2VzQ2FsbHMgfHwgbV9zdGF0ZSA9PSBDdXN0
b20gfHwgbV9zdGF0ZSA9PSBNb2R1bGVOYW1lc3BhY2U7IH0KICAgICBib29sIG1ha2VzQ2FsbHMo
KSBjb25zdDsKICAgICAKKyAgICBHZXRCeUlkU3RhdHVzIHNsb3dWZXJzaW9uKCkgY29uc3Q7Cisg
ICAgCiAgICAgYm9vbCB3YXNTZWVuSW5KSVQoKSBjb25zdCB7IHJldHVybiBtX3dhc1NlZW5JbkpJ
VDsgfQogICAgIAogICAgIC8vIEF0dGVtcHRzIHRvIHJlZHVjZSB0aGUgc2V0IG9mIHZhcmlhbnRz
IHRvIGZpdCB0aGUgZ2l2ZW4gc3RydWN0dXJlIHNldC4gVGhpcyBtYXkgYmUgYXBwcm94aW1hdGUu
CkBAIC0xMTUsMTEgKzExNywxNCBAQCBwdWJsaWM6CiAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCog
bW9kdWxlRW52aXJvbm1lbnQoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZUVudmlyb25tZW50OyB9
CiAgICAgU2NvcGVPZmZzZXQgc2NvcGVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlT2Zm
c2V0OyB9CiAgICAgCisgICAgdm9pZCBtYXJrSWZDaGVhcChTbG90VmlzaXRvciYpOworICAgIGJv
b2wgZmluYWxpemUoKTsgLy8gUmV0dXJuIHRydWUgaWYgdGhpcyBnZXRzIHRvIGxpdmUuCisgICAg
CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgogI2lm
IEVOQUJMRShERkdfSklUKQotICAgIHN0YXRpYyBib29sIGhhc0V4aXRTaXRlKENvZGVCbG9jayos
IHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOworICAgIHN0YXRpYyBFeGl0RmxhZyBoYXNFeGl0U2l0
ZShDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKICNlbmRpZgogI2lmIEVOQUJM
RShKSVQpCiAgICAgR2V0QnlJZFN0YXR1cyhjb25zdCBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNl
Jik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlk
VmFyaWFudC5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9HZXRCeUlkVmFyaWFudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNSw2ICsxMzUs
MjQgQEAgYm9vbCBHZXRCeUlkVmFyaWFudDo6YXR0ZW1wdFRvTWVyZ2UoY29ucwogICAgIHJldHVy
biB0cnVlOwogfQogCit2b2lkIEdldEJ5SWRWYXJpYW50OjptYXJrSWZDaGVhcChTbG90VmlzaXRv
ciYgdmlzaXRvcikKK3sKKyAgICBtX3N0cnVjdHVyZVNldC5tYXJrSWZDaGVhcCh2aXNpdG9yKTsK
K30KKworYm9vbCBHZXRCeUlkVmFyaWFudDo6ZmluYWxpemUoKQoreworICAgIGlmICghbV9zdHJ1
Y3R1cmVTZXQuaXNTdGlsbEFsaXZlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
IW1fY29uZGl0aW9uU2V0LmFyZVN0aWxsTGl2ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKG1fY2FsbExpbmtTdGF0dXMgJiYgIW1fY2FsbExpbmtTdGF0dXMtPmZpbmFsaXplKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9pbnRyaW5zaWNGdW5jdGlvbiAmJiAh
SGVhcDo6aXNNYXJrZWQobV9pbnRyaW5zaWNGdW5jdGlvbikpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBHZXRCeUlkVmFyaWFudDo6ZHVtcChQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIGR1bXBJbkNvbnRleHQob3V0LCAwKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5oCShy
ZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJ
ZFZhcmlhbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNiArNzMsOSBAQCBwdWJsaWM6CiAKICAg
ICBib29sIGF0dGVtcHRUb01lcmdlKGNvbnN0IEdldEJ5SWRWYXJpYW50JiBvdGhlcik7CiAgICAg
CisgICAgdm9pZCBtYXJrSWZDaGVhcChTbG90VmlzaXRvciYpOworICAgIGJvb2wgZmluYWxpemUo
KTsKKyAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICB2b2lkIGR1
bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mLCBEdW1wQ29udGV4dCopIGNvbnN0OwogICAgIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFwLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNNYXAuY3BwCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01h
cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSUNTdGF0dXNNYXAuaCIKKworI2luY2x1ZGUgIlRlcm1pbmF0ZWRDb2RlT3JpZ2luLmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitJQ1N0YXR1cyBJQ1N0YXR1c0NvbnRleHQ6OmdldChDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4pCit7CisgICAgcmV0dXJuIG1hcC5nZXQ8VGVybWluYXRlZENvZGVPcmln
aW5IYXNoVHJhbnNsYXRvcj4oCisgICAgICAgIFRlcm1pbmF0ZWRDb2RlT3JpZ2luKGNvZGVPcmln
aW4sIGJhc2VsaW5lQ29kZUJsb2NrKSk7Cit9CisKK2Jvb2wgSUNTdGF0dXNDb250ZXh0Ojppc0lu
bGluZWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQoreworICAgIHJldHVybiBjb2RlT3JpZ2luLmlu
bGluZUNhbGxGcmFtZSAmJiBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2Rl
QmxvY2suZ2V0KCkgIT0gYmFzZWxpbmVDb2RlQmxvY2s7Cit9CisKK0V4aXRpbmdJbmxpbmVLaW5k
IElDU3RhdHVzQ29udGV4dDo6aW5saW5lS2luZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCit7Cisg
ICAgcmV0dXJuIGlzSW5saW5lZChjb2RlT3JpZ2luKSA/IEV4aXRGcm9tSW5saW5lZCA6IEV4aXRG
cm9tTm90SW5saW5lZDsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI3ByYW1nYSBvbmNlCisKKyNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIENhbGxMaW5r
SW5mbzsKK2NsYXNzIENhbGxMaW5rU3RhdHVzOworY2xhc3MgQ29kZUJsb2NrOworY2xhc3MgR2V0
QnlJZFN0YXR1czsKK2NsYXNzIFB1dEJ5SWRTdGF0dXM7CitjbGFzcyBTdHJ1Y3R1cmVTdHViSW5m
bzsKK3N0cnVjdCBCeVZhbEluZm87CisKK3N0cnVjdCBJQ1N0YXR1cyB7CisgICAgU3RydWN0dXJl
U3R1YkluZm8qIHN0dWJJbmZvIHsgbnVsbHB0ciB9OworICAgIENhbGxMaW5rSW5mbyogY2FsbExp
bmtJbmZvIHsgbnVsbHB0ciB9OworICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvIHsgbnVsbHB0ciB9
OworICAgIENhbGxMaW5rU3RhdHVzKiBjYWxsU3RhdHVzIHsgbnVsbHB0ciB9OworICAgIEdldEJ5
SWRTdGF0dXMqIGdldFN0YXR1cyB7IG51bGxwdHIgfTsKKyAgICBQdXRCeUlkU3RhdHVzKiBwdXRT
dGF0dXMgeyBudWxscHRyIH07Cit9OworCit0eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdpbiwgSUNT
dGF0dXMsIENvZGVPcmlnaW5BcHByb3hpbWF0ZUhhc2g+IElDU3RhdHVzTWFwOworCitzdHJ1Y3Qg
SUNTdGF0dXNDb250ZXh0IHsKKyAgICBJQ1N0YXR1cyBnZXQoQ29kZU9yaWdpbik7CisgICAgYm9v
bCBpc0lubGluZWQoQ29kZU9yaWdpbikgY29uc3Q7CisgICAgRXhpdGluZ0lubGluZUtpbmQgaW5s
aW5lS2luZChDb2RlT3JpZ2luKSBjb25zdDsKKyAgICAKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5l
Q29kZUJsb2NrIHsgbnVsbHB0ciB9OworICAgIENvZGVCbG9jayogb3B0aW1pemVkQ29kZUJsb2Nr
IHsgbnVsbHB0ciB9OworICAgIElDU3RhdHVzTWFwIG1hcDsKK307CisKK3R5cGVkZWYgVmVjdG9y
PElDU3RhdHVzQ29udGV4dCosIDg+IElDU3RhdHVzQ29udGV4dFN0YWNrOworCit9IC8vIG5hbWVz
cGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRT
dGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxMiAr
NTUsOSBAQCBib29sIFB1dEJ5SWRTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3QgCiB9CiAKICNp
ZiBFTkFCTEUoREZHX0pJVCkKLWJvb2wgUHV0QnlJZFN0YXR1czo6aGFzRXhpdFNpdGUoQ29kZUJs
b2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQorRXhpdEZsYWcgUHV0
QnlJZFN0YXR1czo6aGFzRXhpdFNpdGUoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25l
ZCBieXRlY29kZUluZGV4KQogewotICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVC
bG9jayA9IHByb2ZpbGVkQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCk7Ci0gICAgQ29uY3VycmVu
dEpTTG9ja2VyIGxvY2tlcih1bmxpbmtlZENvZGVCbG9jay0+bV9sb2NrKTsKLSAgICByZXR1cm4g
dW5saW5rZWRDb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRT
aXRlKGJ5dGVjb2RlSW5kZXgsIEJhZENhY2hlKSkKLSAgICAgICAgfHwgdW5saW5rZWRDb2RlQmxv
Y2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5k
ZXgsIEJhZENvbnN0YW50Q2FjaGUpKTsKKyAgICByZXR1cm4gR2V0QnlJZFN0YXR1czo6aGFzRXhp
dFNpdGUocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCk7CiB9CiAjZW5kaWYKIApAQCAtMTEw
LDcgKzEwNyw3IEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb20KICAg
ICAgICAgc3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgb2Zmc2V0LCBuZXdT
dHJ1Y3R1cmUtPmluZmVycmVkVHlwZURlc2NyaXB0b3JGb3IodWlkKSk7CiB9CiAKLVB1dEJ5SWRT
dGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ss
IFN0dWJJbmZvTWFwJiBtYXAsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJ
bXBsKiB1aWQpCitQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJs
b2NrKiBwcm9maWxlZEJsb2NrLCBJQ1N0YXR1c01hcCYgbWFwLCB1bnNpZ25lZCBieXRlY29kZUlu
ZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBFeGl0RmxhZyBkaWRFeGl0LCBDYWxsTGlua1N0
YXR1czo6RXhpdFNpdGVEYXRhIGNhbGxFeGl0U2l0ZURhdGEpCiB7CiAgICAgQ29uY3VycmVudEpT
TG9ja2VyIGxvY2tlcihwcm9maWxlZEJsb2NrLT5tX2xvY2spOwogICAgIApAQCAtMTE4LDEzICsx
MTUsMTIgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgIFVO
VVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICAgICBVTlVTRURfUEFSQU0odWlkKTsKICNpZiBF
TkFCTEUoREZHX0pJVCkKLSAgICBpZiAoaGFzRXhpdFNpdGUocHJvZmlsZWRCbG9jaywgYnl0ZWNv
ZGVJbmRleCkpCisgICAgaWYgKGRpZEV4aXQpCiAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVz
KFRha2VzU2xvd1BhdGgpOwogICAgIAotICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA9
IG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4KSk7CisgICAgU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvID0gbWFwLmdldChDb2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgpKS5zdHViSW5m
bzsKICAgICBQdXRCeUlkU3RhdHVzIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mbygKLSAgICAg
ICAgbG9ja2VyLCBwcm9maWxlZEJsb2NrLCBzdHViSW5mbywgdWlkLAotICAgICAgICBDYWxsTGlu
a1N0YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YShwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4
KSk7CisgICAgICAgIGxvY2tlciwgcHJvZmlsZWRCbG9jaywgc3R1YkluZm8sIHVpZCwgY2FsbEV4
aXRTaXRlRGF0YSk7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBjb21wdXRlRnJv
bUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIHVpZCk7CiAgICAgCkBAIC0yNjQs
MzggKzI2MCwzMSBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTCiB9
CiAjZW5kaWYKIAotUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVC
bG9jayogYmFzZWxpbmVCbG9jaywgQ29kZUJsb2NrKiBkZmdCbG9jaywgU3R1YkluZm9NYXAmIGJh
c2VsaW5lTWFwLCBTdHViSW5mb01hcCYgZGZnTWFwLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIFVu
aXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1
dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJQ1N0YXR1c01hcCYgYmFzZWxpbmVNYXAs
IElDU3RhdHVzQ29udGV4dFN0YWNrJiBjb250ZXh0U3RhY2ssIENvZGVPcmlnaW4gY29kZU9yaWdp
biwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBp
ZiAoZGZnQmxvY2spIHsKLSAgICAgICAgaWYgKGhhc0V4aXRTaXRlKGJhc2VsaW5lQmxvY2ssIGNv
ZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkpCi0gICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1
cyhUYWtlc1Nsb3dQYXRoKTsKLSAgICAgICAgQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0YSBl
eGl0U2l0ZURhdGE7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBs
b2NrZXIoYmFzZWxpbmVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgIGV4aXRTaXRlRGF0YSA9
IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKAotICAgICAgICAgICAgICAgIGJh
c2VsaW5lQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7Ci0gICAgICAgIH0KLSAgICAg
ICAgICAgIAotICAgICAgICBQdXRCeUlkU3RhdHVzIHJlc3VsdDsKLSAgICAgICAgewotICAgICAg
ICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihkZmdCbG9jay0+bV9sb2NrKTsKLSAgICAg
ICAgICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mbygKLSAgICAgICAgICAgICAgICBsb2Nr
ZXIsIGRmZ0Jsb2NrLCBkZmdNYXAuZ2V0KGNvZGVPcmlnaW4pLCB1aWQsIGV4aXRTaXRlRGF0YSk7
CisgICAgQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0YSBjYWxsRXhpdFNpdGVEYXRhID0KKyAg
ICAgICAgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVFeGl0U2l0ZURhdGEocHJvZmlsZWRCbG9jaywg
Y29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsKKyAgICBFeGl0RmxhZyBkaWRFeGl0ID0gaGFzRXhp
dFNpdGUocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsKKyAgICAKKyAg
ICBmb3IgKElDU3RhdHVzQ29udGV4dCYgY29udGV4dCA6IGNvbnRleHRTdGFjaykgeworICAgICAg
ICBJQ1N0YXR1cyBzdGF0dXMgPSBjb250ZXh0LmdldChjb2RlT3JpZ2luKTsKKyAgICAgICAgCisg
ICAgICAgIGlmIChzdGF0dXMuc3R1YkluZm8pIHsKKyAgICAgICAgICAgIENvbmN1cnJlbnRKU0xv
Y2tlciBsb2NrZXIoY29udGV4dC5vcHRpbWl6ZWRDb2RlQmxvY2stPm1fbG9jayk7CisgICAgICAg
ICAgICBQdXRCeUlkU3RhdHVzIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mbygKKyAgICAgICAg
ICAgICAgICBsb2NrZXIsIGNvbnRleHQub3B0aW1pemVkQ29kZUJsb2NrLCBzdGF0dXMuc3R1Yklu
Zm8sIHVpZCwgZXhpdFNpdGVEYXRhKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQuaXNTZXQoKSkg
eworICAgICAgICAgICAgICAgIGlmIChkaWRFeGl0LmlzU2V0KGNvbnRleHQuaW5saW5lS2luZChj
b2RlT3JpZ2luKSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQuc2xvd1ZlcnNp
b24oKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgICAgIAotICAgICAgICAvLyBXZSB1c2UgVGFrZXNTbG93UGF0aCBpbiBzb21l
IGNhc2VzIHdoZXJlIHRoZSBzdHViIHdhcyB1bnNldC4gVGhhdCdzIHdlaXJkIGFuZAotICAgICAg
ICAvLyBpdCB3b3VsZCBiZSBiZXR0ZXIgbm90IHRvIGRvIHRoYXQuIEJ1dCBpdCBtZWFucyB0aGF0
IHdlIGhhdmUgdG8gZGVmZW5kCi0gICAgICAgIC8vIG91cnNlbHZlcyBoZXJlLgotICAgICAgICBp
ZiAocmVzdWx0LmlzU2ltcGxlKCkpCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAg
ICBpZiAoc3RhdHVzLnB1dFN0YXR1cykKKyAgICAgICAgICAgIHJldHVybiAqc3RhdHVzLnB1dFN0
YXR1czsKICAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShkZmdCbG9jayk7Ci0gICAgVU5V
U0VEX1BBUkFNKGRmZ01hcCk7Ci0jZW5kaWYKIAotICAgIHJldHVybiBjb21wdXRlRm9yKGJhc2Vs
aW5lQmxvY2ssIGJhc2VsaW5lTWFwLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIHVpZCk7Cisg
ICAgcmV0dXJuIGNvbXB1dGVGb3IoYmFzZWxpbmVCbG9jaywgYmFzZWxpbmVNYXAsIGNvZGVPcmln
aW4uYnl0ZWNvZGVJbmRleCwgdWlkLCBkaWRFeGl0LCBleGl0U2l0ZURhdGEpOwogfQogCiBQdXRC
eUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgU3RydWN0dXJlU2V0JiBzZXQsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQs
IGJvb2wgaXNEaXJlY3QpCkBAIC0zOTgsNiArMzg3LDMwIEBAIGJvb2wgUHV0QnlJZFN0YXR1czo6
bWFrZXNDYWxscygpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIFB1dEJ5SWRT
dGF0dXM6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGZvciAoUHV0
QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKQorICAgICAgICB2YXJpYW50Lm1hcmtJ
ZkNoZWFwKHZpc2l0b3IpOworfQorCitib29sIFB1dEJ5SWRTdGF0dXM6OmZpbmFsaXplKCkKK3sK
KyAgICBmb3IgKFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykgeworICAgICAg
ICBpZiAoIXZhcmlhbnQuZmluYWxpemUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUHV0QnlJZFN0YXR1czo6ZmlsdGVyKGNv
bnN0IFN0cnVjdHVyZVNldCYgc2V0KQoreworICAgIGlmIChtX3N0YXRlICE9IFNpbXBsZSkKKyAg
ICAgICAgcmV0dXJuOworICAgIGZpbHRlcklDU3RhdHVzVmFyaWFudHMobV92YXJpYW50cywgc2V0
KTsKKyAgICBpZiAobV92YXJpYW50cy5pc0VtcHR5KCkpCisgICAgICAgIG1fc3RhdGUgPSBOb0lu
Zm9ybWF0aW9uOworfQorCiB2b2lkIFB1dEJ5SWRTdGF0dXM6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAkocmV2aXNpb24gMjMyMjI3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDYWxs
TGlua1N0YXR1cy5oIgorI2luY2x1ZGUgIkV4aXRGbGFnLmgiCisjaW5jbHVkZSAiSUNTdGF0dXNN
YXAuaCIKICNpbmNsdWRlICJQdXRCeUlkVmFyaWFudC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAg
LTY5LDEwICs3MSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIG1fdmFyaWFudHMuYXBwZW5kKHZhcmlh
bnQpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENv
ZGVCbG9jayosIFN0dWJJbmZvTWFwJiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0
cmluZ0ltcGwqIHVpZCk7CisgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2Rl
QmxvY2sqLCBJQ1N0YXR1c01hcCYsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJp
bmdJbXBsKiB1aWQsIEV4aXRGbGFnLCBDYWxsTGlua1N0YXR1czo6RXhpdFNpdGVEYXRhKTsKICAg
ICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKEpTR2xvYmFsT2JqZWN0KiwgY29uc3Qg
U3RydWN0dXJlU2V0JiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgYm9vbCBpc0RpcmVjdCk7CiAg
ICAgCi0gICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqIGJhc2Vs
aW5lQmxvY2ssIENvZGVCbG9jayogZGZnQmxvY2ssIFN0dWJJbmZvTWFwJiBiYXNlbGluZU1hcCwg
U3R1YkluZm9NYXAmIGRmZ01hcCwgQ29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7
CisgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqIGJhc2VsaW5l
QmxvY2ssIElDU3RhdHVzTWFwJiBiYXNlbGluZU1hcCwgSUNTdGF0dXNNYXAmIGRmZ01hcCwgQ29k
ZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7CiAKICNpZiBFTkFCTEUoSklUKQogICAg
IHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mbyhjb25zdCBDb25jdXJyZW50
SlNMb2NrZXImLCBDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiwg
Q29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7CkBAIC05MSwxMSArOTMsMTUgQEAg
cHVibGljOgogICAgIGNvbnN0IFB1dEJ5SWRWYXJpYW50JiBhdChzaXplX3QgaW5kZXgpIGNvbnN0
IHsgcmV0dXJuIG1fdmFyaWFudHNbaW5kZXhdOyB9CiAgICAgY29uc3QgUHV0QnlJZFZhcmlhbnQm
IG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBhdChpbmRleCk7IH0KICAg
ICAKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7CisgICAgYm9vbCBmaW5hbGl6
ZSgpOworICAgIHZvaWQgZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYpOworICAgIAogICAgIHZv
aWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIAogcHJpdmF0ZToKICNpZiBFTkFCTEUo
REZHX0pJVCkKLSAgICBzdGF0aWMgYm9vbCBoYXNFeGl0U2l0ZShDb2RlQmxvY2sqLCB1bnNpZ25l
ZCBieXRlY29kZUluZGV4KTsKKyAgICBzdGF0aWMgRXhpdEZsYWcgaGFzRXhpdFNpdGUoQ29kZUJs
b2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoSklUKQog
ICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mbygKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcAkocmV2
aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRW
YXJpYW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMDYsNiArMjA2LDI2IEBAIGJvb2wgUHV0
QnlJZFZhcmlhbnQ6OmF0dGVtcHRUb01lcmdlVHJhbnMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAor
dm9pZCBQdXRCeUlkVmFyaWFudDo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7
CisgICAgbV9vbGRTdHJ1Y3R1cmUubWFya0lmQ2hlYXAodmlzaXRvcik7CisgICAgaWYgKG1fbmV3
U3RydWN0dXJlKQorICAgICAgICBtX25ld1N0cnVjdHVyZS0+bWFya0lmQ2hlYXAodmlzaXRvcik7
Cit9CisKK2Jvb2wgUHV0QnlJZFZhcmlhbnQ6OmZpbmFsaXplKCkKK3sKKyAgICBpZiAoIW1fb2xk
U3RydWN0dXJlLmlzU3RpbGxBbGl2ZSh2aXNpdG9yKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmIChtX25ld1N0cnVjdHVyZSAmJiAhSGVhcDo6aXNNYXJrZWQobV9uZXdTdHJ1Y3R1cmUp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX2NvbmRpdGlvblNldC5hcmVTdGls
bExpdmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2NhbGxMaW5rU3RhdHVz
ICYmICFtX2NhbGxMaW5rU3RhdHVzLT5maW5hbGl6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgUHV0QnlJZFZhcmlhbnQ6OmR1bXAoUHJpbnRT
dHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBkdW1wSW5Db250ZXh0KG91dCwgMCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuaAkocmV2
aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRW
YXJpYW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzMsMTcgKzczLDE3IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIG1fb2xkU3RydWN0dXJlOwogICAgIH0KICAgICAKLSAgICBjb25zdCBTdHJ1
Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gc3Ry
dWN0dXJlKCk7Ci0gICAgfQotICAgIAogICAgIGNvbnN0IFN0cnVjdHVyZVNldCYgb2xkU3RydWN0
dXJlKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChraW5kKCkgPT0gVHJhbnNpdGlvbiB8
fCBraW5kKCkgPT0gUmVwbGFjZSB8fCBraW5kKCkgPT0gU2V0dGVyKTsKICAgICAgICAgcmV0dXJu
IG1fb2xkU3RydWN0dXJlOwogICAgIH0KICAgICAKKyAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0
cnVjdHVyZVNldCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gb2xkU3RydWN0dXJlKCk7
CisgICAgfQorICAgIAogICAgIFN0cnVjdHVyZVNldCYgb2xkU3RydWN0dXJlKCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChraW5kKCkgPT0gVHJhbnNpdGlvbiB8fCBraW5kKCkgPT0gUmVwbGFjZSB8
fCBraW5kKCkgPT0gU2V0dGVyKTsKQEAgLTEyOSw2ICsxMjksOSBAQCBwdWJsaWM6CiAKICAgICBi
b29sIGF0dGVtcHRUb01lcmdlKGNvbnN0IFB1dEJ5SWRWYXJpYW50JiBvdGhlcik7CiAgICAgCisg
ICAgdm9pZCBtYXJrSWZDaGVhcChTbG90VmlzaXRvciYpOworICAgIGJvb2wgZmluYWxpemUoKTsK
KyAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICB2b2lkIGR1bXBJ
bkNvbnRleHQoUHJpbnRTdHJlYW0mLCBEdW1wQ29udGV4dCopIGNvbnN0OwogCkBAIC0xMzcsNyAr
MTQwLDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBLaW5kIG1fa2luZDsKICAgICBTdHJ1Y3R1cmVT
ZXQgbV9vbGRTdHJ1Y3R1cmU7Ci0gICAgU3RydWN0dXJlKiBtX25ld1N0cnVjdHVyZTsKKyAgICBT
dHJ1Y3R1cmUqIG1fbmV3U3RydWN0dXJlIHsgbnVsbHB0ciB9OwogICAgIE9iamVjdFByb3BlcnR5
Q29uZGl0aW9uU2V0IG1fY29uZGl0aW9uU2V0OwogICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0
OwogICAgIEluZmVycmVkVHlwZTo6RGVzY3JpcHRvciBtX3JlcXVpcmVkVHlwZTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5j
cHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29y
ZGVkU3RhdHVzZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlJlY29yZGVkU3RhdHVzZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1Jl
Y29yZGVkU3RhdHVzZXMmIFJlY29yZGVkU3RhdHVzZXM6Om9wZXJhdG9yPShSZWNvcmRlZFN0YXR1
c2VzJiYgb3RoZXIpCit7CisgICAgY2FsbHMgPSBXVEZNb3ZlKG90aGVyLmNhbGxzKTsKKyAgICBn
ZXRzID0gV1RGTW92ZShvdGhlci5nZXRzKTsKKyAgICBwdXRzID0gV1RGTW92ZShvdGhlci5wdXRz
KTsKKyAgICBzaHJpbmtUb0ZpdCgpOworfQorCitSZWNvcmRlZFN0YXR1c2VzOjpSZWNvcmRlZFN0
YXR1c2VzKFJlY29yZGVkU3RhdHVzZXMmJiBvdGhlcikKK3sKKyAgICAqdGhpcyA9IFdURk1vdmUo
b3RoZXIpOworfQorCitDYWxsTGlua1N0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkQ2FsbExp
bmtTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgY29uc3QgQ2FsbExpbmtTdGF0
dXMmIHN0YXR1cykKK3sKKyAgICBhdXRvIHN0YXR1c1B0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2Fs
bExpbmtTdGF0dXM+KHN0YXR1cyk7CisgICAgQ2FsbExpbmtTdGF0dXMqIHJlc3VsdCA9IHN0YXR1
c1B0ci5nZXQoKTsKKyAgICBjYWxscy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY29kZU9yaWdpbiwg
V1RGTW92ZShzdGF0dXNQdHIpKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworR2V0QnlJZFN0
YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkR2V0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2lu
JiBjb2RlT3JpZ2luLCBjb25zdCBHZXRCeUlkU3RhdHVzJiBzdGF0dXMpCit7CisgICAgYXV0byBz
dGF0dXNQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdldEJ5SWRTdGF0dXM+KHN0YXR1cyk7CisgICAg
R2V0QnlJZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOworICAgIGdldHMuYXBwZW5k
KHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3RhdHVzUHRyKSkpOworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisgICAgCitQdXRCeUlkU3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjph
ZGRQdXRCeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0IFB1dEJ5
SWRTdGF0dXMmIHN0YXR1cykKK3sKKyAgICBhdXRvIHN0YXR1c1B0ciA9IHN0ZDo6bWFrZV91bmlx
dWU8UHV0QnlJZFN0YXR1cz4oc3RhdHVzKTsKKyAgICBQdXRCeUlkU3RhdHVzKiByZXN1bHQgPSBz
dGF0dXNQdHIuZ2V0KCk7CisgICAgcHV0cy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY29kZU9yaWdp
biwgV1RGTW92ZShzdGF0dXNQdHIpKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBS
ZWNvcmRlZFN0YXR1c2VzOjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYgc2xvdFZpc2l0b3IpCit7
CisgICAgZm9yIChhdXRvJiBwYWlyIDogZ2V0cykKKyAgICAgICAgcGFpci5zZWNvbmQtPm1hcmtJ
ZkNoZWFwKHNsb3RWaXNpdG9yKTsKKyAgICBmb3IgKGF1dG8mIHBhaXIgOiBwdXRzKQorICAgICAg
ICBwYWlyLnNlY29uZC0+bWFya0lmQ2hlYXAoc2xvdFZpc2l0b3IpOworfQorCit2b2lkIFJlY29y
ZGVkU3RhdHVzZXM6OmZpbmFsaXplKCkKK3sKKyAgICBhdXRvIGZpbmFsaXplID0gW10gKGF1dG8m
IHZlY3RvcikgeworICAgICAgICB2ZWN0b3IucmVtb3ZlQWxsTWF0Y2hpbmcoCisgICAgICAgICAg
ICBbJl0gKGF1dG8mIHBhaXIpIC0+IGJvb2wgeworICAgICAgICAgICAgICAgIHJldHVybiAhcGFp
ci5zZWNvbmQtPmZpbmFsaXplKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgdmVjdG9yLnNo
cmlua1RvRml0KCk7CisgICAgfTsKKyAgICBmaW5hbGl6ZShjYWxscyk7CisgICAgZmluYWxpemUo
Z2V0cyk7CisgICAgZmluYWxpemUocHV0cyk7Cit9CisKK3ZvaWQgUmVjb3JkZWRTdGF0dXNlczo6
c2hyaW5rVG9GaXQoKQoreworICAgIGNhbGxzLnNocmlua1RvRml0KCk7CisgICAgZ2V0cy5zaHJp
bmtUb0ZpdCgpOworICAgIHB1dHMuc2hyaW5rVG9GaXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1
c2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29y
ZGVkU3RhdHVzZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgorI2luY2x1ZGUgIkdldEJ5SWRTdGF0
dXMuaCIKKyNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitz
dHJ1Y3QgUmVjb3JkZWRTdGF0dXNlcyB7CisgICAgUmVjb3JkZWRTdGF0dXNlcygpIHsgfQorICAg
IAorICAgIFJlY29yZGVkU3RhdHVzZXMmIG9wZXJhdG9yPShjb25zdCBSZWNvcmRlZFN0YXR1c2Vz
JiBvdGhlcikgPSBkZWxldGU7CisgICAgCisgICAgUmVjb3JkZWRTdGF0dXNlcyYgb3BlcmF0b3I9
KFJlY29yZGVkU3RhdHVzZXMmJiBvdGhlcik7CisgICAgCisgICAgUmVjb3JkZWRTdGF0dXNlcyhj
b25zdCBSZWNvcmRlZFN0YXR1c2VzJiBvdGhlcikgPSBkZWxldGU7CisgICAgCisgICAgUmVjb3Jk
ZWRTdGF0dXNlcyhSZWNvcmVkZWRTdGF0dXNlcyYmIG90aGVyKTsKKyAgICAKKyAgICBDYWxsTGlu
a1N0YXR1cyogYWRkQ2FsbExpbmtTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0IENhbGxM
aW5rU3RhdHVzJik7CisgICAgR2V0QnlJZFN0YXR1cyogYWRkR2V0QnlJZFN0YXR1cyhjb25zdCBD
b2RlT3JpZ2luJiwgY29uc3QgR2V0QnlJZFN0YXR1cyYpOworICAgIFB1dEJ5SWRTdGF0dXMqIGFk
ZFB1dEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0IFB1dEJ5SWRTdGF0dXMmKTsK
KyAgICAKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiBzbG90VmlzaXRvcik7Cisg
ICAgCisgICAgdm9pZCBmaW5hbGl6ZSgpOworICAgIAorICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsK
KyAgICAKKyAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxD
YWxsTGlua1N0YXR1cz4+PiBjYWxsczsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4s
IHN0ZDo6dW5pcXVlX3B0cjxHZXRCeUlkU3RhdHVzPj4+IGdldHM7CisgICAgVmVjdG9yPHN0ZDo6
cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8UHV0QnlJZFN0YXR1cz4+PiBwdXRzOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zMSw2ICszMSwyMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAordm9pZCBTdHJ1Y3R1
cmVTZXQ6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9yKSBjb25zdAoreworICAgIGZv
ciAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgOiAqdGhpcykKKyAgICAgICAgc3RydWN0dXJlLT5tYXJr
SWZDaGVhcCh2aXNpdG9yKTsKK30KKworYm9vbCBTdHJ1Y3R1cmVTZXQ6OmlzU3RpbGxBbGl2ZSgp
IGNvbnN0Cit7CisgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6ICp0aGlzKSB7CisgICAg
ICAgIGlmICghSGVhcDo6aXNNYXJrZWQoc3RydWN0dXJlKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgU3RydWN0dXJlU2V0Ojpk
dW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25z
dAogewogICAgIENvbW1hUHJpbnRlciBjb21tYTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMtMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTU4LDYgKzU4LDkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG9u
bHlFbnRyeSgpOwogICAgIH0KKworICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKSBj
b25zdDsKKyAgICBib29sIGlzU3RpbGxBbGl2ZSgpIGNvbnN0OwogICAgIAogICAgIHZvaWQgZHVt
cEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0KikgY29uc3Q7CiAgICAgdm9pZCBk
dW1wKFByaW50U3RyZWFtJikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVGVybWluYXRlZENvZGVPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVGVybWluYXRlZENvZGVPcmlnaW4uaAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVGVybWluYXRlZENvZGVPcmlnaW4uaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgSlNDIHsKKwor
c3RydWN0IFRlcm1pbmF0ZWRDb2RlT3JpZ2luIHsKKyAgICBUZXJtaW5hdGVkQ29kZU9yaWdpbigp
IHsgfQorICAgIAorICAgIFRlcm1pbmF0ZWRDb2RlT3JpZ2luKGNvbnN0IENvZGVPcmlnaW4mIGNv
ZGVPcmlnaW4sIENvZGVCbG9jayogdGVybWluYWwpCisgICAgICAgIDogY29kZU9yaWdpbihjb2Rl
T3JpZ2luKQorICAgICAgICAsIHRlcm1pbmFsKHRlcm1pbmFsKQorICAgIHsKKyAgICB9CisgICAg
CisgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luOworICAgIENvZGVCbG9jayogdGVybWluYWwgeyBu
dWxscHRyIH07Cit9OworCitzdHJ1Y3QgVGVybWluYXRlZENvZGVPcmlnaW5IYXNoVHJhbnNsYXRv
ciB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVGVybWluYXRlZENvZGVPcmlnaW4m
IHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlLmNvZGVPcmlnaW4uYXBwcm94aW1h
dGVIYXNoKHZhbHVlLnRlcm1pbmFsKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIGJvb2wgZXF1
YWwoY29uc3QgQ29kZU9yaWdpbiYgYSwgY29uc3QgVGVybWluYXRlZENvZGVPcmlpZ24mIGIpCisg
ICAgeworICAgICAgICByZXR1cm4gYi5jb2RlT3JpZ2luLmFwcHJveGltYXRlbHlFcXVhbChhLCBi
LnRlcm1pbmFsKTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NDk5LDYgKzM0OTksMjUgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eQogICAgIGNhc2UgWm9tYmllSGludDoKICAgICBjYXNlIEV4aXRPSzoKICAgICAgICAgYnJlYWs7
CisgICAgICAgIAorICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgICAgIGlmIChK
U1ZhbHVlIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV92YWx1ZSkKKyAgICAgICAg
ICAgIG5vZGUtPmNhbGxMaW5rU3RhdHVzKCkuZmlsdGVyKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7
CisgICAgICAgIAorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czogeworICAgICAgICBBYnN0
cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBpZiAo
dmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkKKyAgICAgICAgICAgIG5vZGUtPmdldEJ5SWRT
dGF0dXMoKS5maWx0ZXIobV92YWx1ZS5tX3N0cnVjdHVyZS50b1N0cnVjdHVyZVNldCgpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgICAgICAKKyAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0
dXM6IHsKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgaWYgKHZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpCisgICAgICAg
ICAgICBub2RlLT5wdXRCeUlkU3RhdHVzKCkuZmlsdGVyKG1fdmFsdWUubV9zdHJ1Y3R1cmUudG9T
dHJ1Y3R1cmVTZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAgIGNhc2UgQ2hlY2tU
eXBlSW5mb0ZsYWdzOiB7CiAgICAgICAgIGNvbnN0IEFic3RyYWN0VmFsdWUmIGFic3RyYWN0VmFs
dWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTA4Miw5ICsxMDgyLDggQEAgcHJpdmF0ZToKICAgICAgICAgLy8gY29kZSBibG9j
ayBoYWQgZ2F0aGVyZWQuCiAgICAgICAgIExhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyIG1f
bGF6eU9wZXJhbmRzOwogICAgICAgICAKLSAgICAgICAgQ2FsbExpbmtJbmZvTWFwIG1fY2FsbExp
bmtJbmZvczsKLSAgICAgICAgU3R1YkluZm9NYXAgbV9zdHViSW5mb3M7Ci0gICAgICAgIEJ5VmFs
SW5mb01hcCBtX2J5VmFsSW5mb3M7CisgICAgICAgIElDU3RhdHVzTWFwIG1fYmFzZWxpbmVNYXA7
CisgICAgICAgIElDU3RhdHVzQ29udGV4dCBtX29wdGltaXplZENvbnRleHQ7CiAgICAgICAgIAog
ICAgICAgICAvLyBQb2ludGVycyB0byB0aGUgYXJndW1lbnQgcG9zaXRpb24gdHJhY2tlcnMgZm9y
IHRoaXMgc2xpY2Ugb2YgY29kZS4KICAgICAgICAgVmVjdG9yPEFyZ3VtZW50UG9zaXRpb24qPiBt
X2FyZ3VtZW50UG9zaXRpb25zOwpAQCAtMTEwMiwxMCArMTEwMSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBJbmxpbmVDYWxsRnJhbWU6OktpbmQsCiAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBj
b250aW51YXRpb25CbG9jayk7CiAgICAgICAgIAotICAgICAgICB+SW5saW5lU3RhY2tFbnRyeSgp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIG1fYnl0ZUNvZGVQYXJzZXItPm1faW5saW5lU3RhY2tU
b3AgPSBtX2NhbGxlcjsKLSAgICAgICAgfQorICAgICAgICB+SW5saW5lU3RhY2tFbnRyeSgpOwog
ICAgICAgICAKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlbWFwT3BlcmFuZChWaXJ0dWFsUmVn
aXN0ZXIgb3BlcmFuZCkgY29uc3QKICAgICAgICAgewpAQCAtMTEyMCw2ICsxMTE2LDggQEAgcHJp
dmF0ZToKICAgICAKICAgICBJbmxpbmVTdGFja0VudHJ5KiBtX2lubGluZVN0YWNrVG9wOwogICAg
IAorICAgIElDU3RhdHVzQ29udGV4dFN0YWNrIG1faWNDb250ZXh0U3RhY2s7CisgICAgCiAgICAg
c3RydWN0IERlbGF5ZWRTZXRMb2NhbCB7CiAgICAgICAgIENvZGVPcmlnaW4gbV9vcmlnaW47CiAg
ICAgICAgIFZpcnR1YWxSZWdpc3RlciBtX29wZXJhbmQ7CkBAIC0xMTQ2LDEwICsxMTQ0LDYgQEAg
cHJpdmF0ZToKICAgICAKICAgICBWZWN0b3I8RGVsYXllZFNldExvY2FsLCAyPiBtX3NldExvY2Fs
UXVldWU7CiAKLSAgICBDb2RlQmxvY2sqIG1fZGZnQ29kZUJsb2NrOwotICAgIENhbGxMaW5rU3Rh
dHVzOjpDb250ZXh0TWFwIG1fY2FsbENvbnRleHRNYXA7Ci0gICAgU3R1YkluZm9NYXAgbV9kZmdT
dHViSW5mb3M7Ci0gICAgCiAgICAgSW5zdHJ1Y3Rpb24qIG1fY3VycmVudEluc3RydWN0aW9uOwog
ICAgIGJvb2wgbV9oYXNEZWJ1Z2dlckVuYWJsZWQ7CiB9OwpAQCAtMTIxNCw3ICsxMjA4LDcgQEAg
Qnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFycwogCiAgICAgQ2FsbExpbmtT
dGF0dXMgY2FsbExpbmtTdGF0dXMgPSBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKICAgICAg
ICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBjdXJyZW50Q29kZU9yaWdpbigp
LAotICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxMaW5rSW5mb3MsIG1fY2FsbENvbnRl
eHRNYXApOworICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29u
dGV4dFN0YWNrKTsKIAogICAgIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kID0gSW5saW5lQ2Fs
bEZyYW1lOjpraW5kRm9yKGNhbGxNb2RlKTsKIApAQCAtMTI0Miw2ICsxMjM2LDggQEAgQnl0ZUNv
ZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFycwogICAgIC8vIElmIHdlIGhhdmUgcHJv
ZmlsaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgY2FsbCwgYW5kIGl0IGRpZCBub3QgYmVoYXZl
IHRvbyBwb2x5bW9ycGhpY2FsbHksCiAgICAgLy8gd2UgbWF5IGJlIGFibGUgdG8gaW5saW5lIGl0
LCBvciBpbiB0aGUgY2FzZSBvZiByZWN1cnNpdmUgdGFpbCBjYWxscyB0dXJuIGl0IGludG8gYSBq
dW1wLgogICAgIGlmIChjYWxsTGlua1N0YXR1cy5jYW5PcHRpbWl6ZSgpKSB7CisgICAgICAgIGFk
ZFRvR3JhcGgoRmlsdGVyQ2FsbExpbmtTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbnMucmVj
b3JkZWRTdGF0dXNlcy5hZGRDYWxsTGlua1N0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBjYWxs
TGlua1N0YXR1cykpLCBjYWxsVGFyZ2V0KTsKKyAgICAgICAgCiAgICAgICAgIFZpcnR1YWxSZWdp
c3RlciB0aGlzQXJndW1lbnQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgwLCByZWdpc3Rl
ck9mZnNldCk7CiAgICAgICAgIGF1dG8gb3B0aW1pemF0aW9uUmVzdWx0ID0gaGFuZGxlSW5saW5p
bmcoY2FsbFRhcmdldCwgcmVzdWx0LCBjYWxsTGlua1N0YXR1cywgcmVnaXN0ZXJPZmZzZXQsIHRo
aXNBcmd1bWVudCwKICAgICAgICAgICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBtX2N1
cnJlbnRJbmRleCArIGluc3RydWN0aW9uU2l6ZSwgb3AsIGtpbmQsIHByZWRpY3Rpb24pOwpAQCAt
MTI3OSwxMiArMTI3NSwxNCBAQCBCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQ
YXJzCiAgICAgCiAgICAgQ2FsbExpbmtTdGF0dXMgY2FsbExpbmtTdGF0dXMgPSBDYWxsTGlua1N0
YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJs
b2NrLCBjdXJyZW50Q29kZU9yaWdpbigpLAotICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Nh
bGxMaW5rSW5mb3MsIG1fY2FsbENvbnRleHRNYXApOworICAgICAgICBtX2lubGluZVN0YWNrVG9w
LT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrKTsKICAgICByZWZpbmVTdGF0aWNhbGx5
KGNhbGxMaW5rU3RhdHVzLCBjYWxsVGFyZ2V0KTsKICAgICAKICAgICBWRVJCT1NFX0xPRygiICAg
IFZhcmFyZ3MgY2FsbCBsaW5rIHN0YXR1cyBhdCAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiOiAi
LCBjYWxsTGlua1N0YXR1cywgIlxuIik7CiAgICAgCiAgICAgaWYgKGNhbGxMaW5rU3RhdHVzLmNh
bk9wdGltaXplKCkpIHsKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJDYWxsTGlua1N0YXR1cywg
T3BJbmZvKG1fZ3JhcGgubV9wbGFucy5yZWNvcmRlZFN0YXR1c2VzLmFkZENhbGxMaW5rU3RhdHVz
KGN1cnJlbnRDb2RlT3JpZ2luKCksIGNhbGxMaW5rU3RhdHVzKSksIGNhbGxUYXJnZXQpOworICAg
ICAgICAKICAgICAgICAgaWYgKGhhbmRsZVZhcmFyZ3NJbmxpbmluZyhjYWxsVGFyZ2V0LCByZXN1
bHQsCiAgICAgICAgICAgICBjYWxsTGlua1N0YXR1cywgZmlyc3RGcmVlUmVnLCBWaXJ0dWFsUmVn
aXN0ZXIodGhpc1JlZyksIFZpcnR1YWxSZWdpc3Rlcihhcmd1bWVudHMpLAogICAgICAgICAgICAg
Zmlyc3RWYXJBcmdPZmZzZXQsIG9wLApAQCAtMzMxOCw5ICszMzE2LDEyIEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZURPTUpJVEdldHRlcigKICAgICBpZiAoIWNoZWNrKHZhcmlhbnQuY29u
ZGl0aW9uU2V0KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYWRkVG9HcmFwaChDaGVj
a1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQuc3RydWN0
dXJlU2V0KCkpKSwgdGhpc05vZGUpOwotCisgICAgCiAgICAgLy8gV2UgZG8gbm90IG5lZWQgdG8g
ZW1pdCBDaGVja0NlbGwgdGhpbmd5IGhlcmUuIFdoZW4gdGhlIGN1c3RvbSBhY2Nlc3NvciBpcyBy
ZXBsYWNlZCB0byBkaWZmZXJlbnQgb25lLCBTdHJ1Y3R1cmUgdHJhbnNpdGlvbiBvY2N1cnMuCiAg
ICAgYWRkVG9HcmFwaChDaGVja1N1YkNsYXNzLCBPcEluZm8oZG9tQXR0cmlidXRlLmNsYXNzSW5m
byksIHRoaXNOb2RlKTsKKyAgICAKKyAgICBib29sIHdhc1NlZW5JbkpJVCA9IHRydWU7CisgICAg
YWRkVG9HcmFwaChGaWx0ZXJHZXRCeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVj
b3JkZWRTdGF0dXNlcy5hZGRHZXRCeUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIEdldEJ5
SWRTdGF0dXMoR2V0QnlJZFN0YXR1czo6Q3VzdG9tLCB3YXNTZWVuSW5KSVQsIHZhcmlhbnQpKSks
IHRoaXNOb2RlKTsKIAogICAgIENhbGxET01HZXR0ZXJEYXRhKiBjYWxsRE9NR2V0dGVyRGF0YSA9
IG1fZ3JhcGgubV9jYWxsRE9NR2V0dGVyRGF0YS5hZGQoKTsKICAgICBjYWxsRE9NR2V0dGVyRGF0
YS0+Y3VzdG9tQWNjZXNzb3JHZXR0ZXIgPSB2YXJpYW50LmN1c3RvbUFjY2Vzc29yR2V0dGVyKCk7
CkBAIC0zMzUyLDYgKzMzNTMsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVNb2R1bGVO
YW1lc3BhCiAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNp
dGUobV9jdXJyZW50SW5kZXgsIEJhZENlbGwpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
YWRkVG9HcmFwaChDaGVja0NlbGwsIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShnZXRCeUlkLm1vZHVs
ZU5hbWVzcGFjZU9iamVjdCgpKSksIEVkZ2UoYmFzZSwgQ2VsbFVzZSkpOworICAgIAorICAgIGFk
ZFRvR3JhcGgoRmlsdGVyR2V0QnlJZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29y
ZGVkU3RhdHVzZXMuYWRkR2V0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBnZXRCeUlk
KSksIGJhc2UpOwogCiAgICAgLy8gSWRlYWxseSB3ZSB3b3VsZG4ndCBoYXZlIHRvIGRvIHRoaXMg
UGhhbnRvbS4gQnV0OgogICAgIC8vCkBAIC00MDA3LDE0ICs0MDEwLDI1IEBAIHZvaWQgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCisg
ICAgLy8gRklYTUU6IElmIHdlIHVzZSB0aGUgR2V0QnlJZFN0YXR1cyBmb3IgYW55dGhpbmcgdGhl
biB3ZSBzaG91bGQgcmVjb3JkIGl0IGFuZCBpbnNlcnQgYSBub2RlCisgICAgLy8gYWZ0ZXIgZXZl
cnl0aGluZyBlbHNlIChsaWtlIHRoZSBHZXRCeU9mZnNldCBvciB3aGF0ZXZlcikgdGhhdCB3aWxs
IGZpbHRlciB0aGUgcmVjb3JkZWQKKyAgICAvLyBHZXRCeUlkU3RhdHVzLiBUaGF0IG1lYW5zIHRo
YXQgdGhlIGNvbnN0YW50IGZvbGRlciBhbHNvIG5lZWRzIHRvIGRvIHRoZSBzYW1lIQorICAgIAog
ICAgIGlmIChnZXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgPiAxKSB7CiAgICAgICAgIGlmIChn
ZXRCeUlkU3RhdHVzLm1ha2VzQ2FsbHMoKSB8fCAhaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkK
LSAgICAgICAgICAgIHx8ICFPcHRpb25zOjp1c2VQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nKCkp
IHsKKyAgICAgICAgICAgIHx8ICFPcHRpb25zOjp1c2VQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5n
KCkKKyAgICAgICAgICAgIHx8IGdldEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSA+IE9wdGlvbnM6
Om1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZSgpKSB7CisgICAgICAgICAgICBp
ZiAoZmFsc2UgJiYgZ2V0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpID4gT3B0aW9uczo6bWF4UG9s
eW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplKCkpIHsKKyAgICAgICAgICAgICAgICBkYXRh
TG9nKCJBdCAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKKyAgICAgICAgICAgICAgICBk
YXRhTG9nKCJHaXZpbmcgdXAgb246ICIsIGdldEJ5SWRTdGF0dXMsICJcbiIpOworICAgICAgICAg
ICAgfQogICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihkZXN0aW5hdGlvbk9wZXJhbmQp
LAogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoZ2V0QnlJZCwgT3BJbmZvKGlkZW50aWZpZXJO
dW1iZXIpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJHZXRCeUlkU3Rh
dHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcy5hZGRHZXRCeUlkU3Rh
dHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIGdldEJ5SWRTdGF0dXMpKSwgYmFzZSk7CisgICAgICAg
IAogICAgICAgICBWZWN0b3I8TXVsdGlHZXRCeU9mZnNldENhc2UsIDI+IGNhc2VzOwogICAgICAg
ICAKICAgICAgICAgLy8gMSkgRW1pdCBwcm90b3R5cGUgc3RydWN0dXJlIGNoZWNrcyBmb3IgYWxs
IGNoYWlucy4gVGhpcyBjb3VsZCBzb3J0IG9mIG1heWJlIG5vdCBiZQpAQCAtNDA1NiwxMCArNDA3
MCwxMiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAgICAgICAg
YWRkVG9HcmFwaChNdWx0aUdldEJ5T2Zmc2V0LCBPcEluZm8oZGF0YSksIE9wSW5mbyhwcmVkaWN0
aW9uKSwgYmFzZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgYWRkVG9HcmFwaChG
aWx0ZXJHZXRCeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNl
cy5hZGRHZXRCeUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIGdldEJ5SWRTdGF0dXMpKSwg
YmFzZSk7CiAgICAgCiAgICAgQVNTRVJUKGdldEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSA9PSAx
KTsKICAgICBHZXRCeUlkVmFyaWFudCB2YXJpYW50ID0gZ2V0QnlJZFN0YXR1c1swXTsKLSAgICAg
ICAgICAgICAgICAKKyAgICAKICAgICBOb2RlKiBsb2FkZWRWYWx1ZSA9IGxvYWQocHJlZGljdGlv
biwgYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFyaWFudCk7CiAgICAgaWYgKCFsb2FkZWRWYWx1
ZSkgewogICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRlc3RpbmF0aW9uT3BlcmFuZCksCkBA
IC00MTUwLDcgKzQxNjYsMTAgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgK
ICAgICAKICAgICBpZiAocHV0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpID4gMSkgewogICAgICAg
ICBpZiAoIWlzRlRMKG1fZ3JhcGgubV9wbGFuLm1vZGUpIHx8IHB1dEJ5SWRTdGF0dXMubWFrZXND
YWxscygpCi0gICAgICAgICAgICB8fCAhT3B0aW9uczo6dXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxp
bmluZygpKSB7CisgICAgICAgICAgICB8fCAhT3B0aW9uczo6dXNlUG9seW1vcnBoaWNBY2Nlc3NJ
bmxpbmluZygpCisgICAgICAgICAgICB8fCBwdXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgPiBP
cHRpb25zOjptYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemUoKSkgeworICAgICAg
ICAgICAgaWYgKGZhbHNlICYmIHB1dEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSA+IE9wdGlvbnM6
Om1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZSgpKQorICAgICAgICAgICAgICAg
IGRhdGFMb2coIkdpdmluZyB1cCBvbjogIiwgcHV0QnlJZFN0YXR1cywgIlxuIik7CiAgICAgICAg
ICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0
YXR1cywgaXNEaXJlY3QpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC00MTY4
LDYgKzQxODcsOCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgICAg
ICAKICAgICAgICAgaWYgKFVOTElLRUxZKG1fZ3JhcGguY29tcGlsYXRpb24oKSkpCiAgICAgICAg
ICAgICBtX2dyYXBoLmNvbXBpbGF0aW9uKCktPm5vdGljZUlubGluZWRQdXRCeUlkKCk7CisgICAg
ICAgIAorICAgICAgICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dy
YXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFkZFB1dEJ5SWRTdGF0dXMoY3VycmVudENvZGVP
cmlnaW4oKSwgcHV0QnlJZFN0YXR1cykpLCBiYXNlKTsKIAogICAgICAgICBmb3IgKGNvbnN0IFB1
dEJ5SWRWYXJpYW50JiB2YXJpYW50IDogcHV0QnlJZFN0YXR1cy52YXJpYW50cygpKSB7CiAgICAg
ICAgICAgICBtX2dyYXBoLnJlZ2lzdGVySW5mZXJyZWRUeXBlKHZhcmlhbnQucmVxdWlyZWRUeXBl
KCkpOwpAQCAtNDE4OSw2ICs0MjEwLDggQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0
QnlJZCgKICAgICAKICAgICBzd2l0Y2ggKHZhcmlhbnQua2luZCgpKSB7CiAgICAgY2FzZSBQdXRC
eUlkVmFyaWFudDo6UmVwbGFjZTogeworICAgICAgICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRT
dGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFkZFB1dEJ5SWRT
dGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0YXR1cykpLCBiYXNlKTsKKyAgICAg
ICAgCiAgICAgICAgIHN0b3JlKGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIHZhcmlhbnQsIHZhbHVl
KTsKICAgICAgICAgaWYgKFVOTElLRUxZKG1fZ3JhcGguY29tcGlsYXRpb24oKSkpCiAgICAgICAg
ICAgICBtX2dyYXBoLmNvbXBpbGF0aW9uKCktPm5vdGljZUlubGluZWRQdXRCeUlkKCk7CkBAIC00
MTk2LDYgKzQyMTksOCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAg
IH0KICAgICAKICAgICBjYXNlIFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uOiB7CisgICAgICAg
IGFkZFRvR3JhcGgoRmlsdGVyUHV0QnlJZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJl
Y29yZGVkU3RhdHVzZXMuYWRkUHV0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBwdXRC
eUlkU3RhdHVzKSksIGJhc2UpOworICAgICAgICAKICAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0
cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQub2xkU3RydWN0
dXJlKCkpKSwgYmFzZSk7CiAgICAgICAgIGlmICghY2hlY2sodmFyaWFudC5jb25kaXRpb25TZXQo
KSkpIHsKICAgICAgICAgICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIHZh
bHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCk7CkBAIC00MjYzLDYgKzQyODgsOCBAQCB2b2lk
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgIH0KICAgICAgICAgCiAgICAgY2Fz
ZSBQdXRCeUlkVmFyaWFudDo6U2V0dGVyOiB7CisgICAgICAgIGFkZFRvR3JhcGgoRmlsdGVyUHV0
QnlJZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkUHV0
QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBwdXRCeUlkU3RhdHVzKSksIGJhc2UpOwor
ICAgICAgICAKICAgICAgICAgTm9kZSogbG9hZGVkVmFsdWUgPSBsb2FkKFNwZWNDZWxsT3RoZXIs
IGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIHZhcmlhbnQpOwogICAgICAgICBpZiAoIWxvYWRlZFZh
bHVlKSB7CiAgICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2
YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QpOwpAQCAtNTAyNCw3ICs1MDUxLDcgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgdW5zaWdu
ZWQgaWRlbnRpZmllck51bWJlciA9IDA7CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxv
Y2stPm1fbG9jayk7Ci0gICAgICAgICAgICAgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2lu
bGluZVN0YWNrVG9wLT5tX2J5VmFsSW5mb3MuZ2V0KENvZGVPcmlnaW4oY3VycmVudENvZGVPcmln
aW4oKS5ieXRlY29kZUluZGV4KSk7CisgICAgICAgICAgICAgICAgQnlWYWxJbmZvKiBieVZhbElu
Zm8gPSBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLmdldChDb2RlT3JpZ2luKGN1cnJl
bnRDb2RlT3JpZ2luKCkuYnl0ZWNvZGVJbmRleCkpLmJ5VmFsSW5mbzsKICAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogV2hlbiB0aGUgYnl0ZWNvZGUgaXMgbm90IGNvbXBpbGVkIGluIHRoZSBiYXNl
bGluZSBKSVQsIGJ5VmFsSW5mbyBiZWNvbWVzIG51bGwuCiAgICAgICAgICAgICAgICAgLy8gQXQg
dGhhdCB0aW1lLCB0aGVyZSBpcyBubyBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICBpZiAo
YnlWYWxJbmZvCkBAIC01MDkzLDcgKzUxMjAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgUHV0QnlJZFN0YXR1cyBwdXRCeUlkU3Rh
dHVzOwogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpT
TG9ja2VyIGxvY2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7
Ci0gICAgICAgICAgICAgICAgICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9pbmxpbmVTdGFj
a1RvcC0+bV9ieVZhbEluZm9zLmdldChDb2RlT3JpZ2luKGN1cnJlbnRDb2RlT3JpZ2luKCkuYnl0
ZWNvZGVJbmRleCkpOworICAgICAgICAgICAgICAgICAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9
IG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAuZ2V0KENvZGVPcmlnaW4oY3VycmVudENv
ZGVPcmlnaW4oKS5ieXRlY29kZUluZGV4KSkuYnlWYWxJbmZvOwogICAgICAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogV2hlbiB0aGUgYnl0ZWNvZGUgaXMgbm90IGNvbXBpbGVkIGluIHRoZSBiYXNl
bGluZSBKSVQsIGJ5VmFsSW5mbyBiZWNvbWVzIG51bGwuCiAgICAgICAgICAgICAgICAgICAgIC8v
IEF0IHRoYXQgdGltZSwgdGhlcmUgaXMgbm8gaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAg
ICAgIGlmIChieVZhbEluZm8gCkBAIC01MTk5LDggKzUyMjYsOCBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAKICAgICAgICAgICAgIFVuaXF1
ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBoLmlkZW50aWZpZXJzKClbaWRlbnRpZmllck51bWJl
cl07CiAgICAgICAgICAgICBHZXRCeUlkU3RhdHVzIGdldEJ5SWRTdGF0dXMgPSBHZXRCeUlkU3Rh
dHVzOjpjb21wdXRlRm9yKAotICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJv
ZmlsZWRCbG9jaywgbV9kZmdDb2RlQmxvY2ssCi0gICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFj
a1RvcC0+bV9zdHViSW5mb3MsIG1fZGZnU3R1YkluZm9zLAorICAgICAgICAgICAgICAgIG1faW5s
aW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAgICAgICAgICBtX2lubGluZVN0
YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrLAogICAgICAgICAgICAgICAg
IGN1cnJlbnRDb2RlT3JpZ2luKCksIHVpZCk7CiAKICAgICAgICAgICAgIEFjY2Vzc1R5cGUgdHlw
ZSA9IEFjY2Vzc1R5cGU6OkdldDsKQEAgLTUyNDMsOCArNTI3MCw4IEBAIHZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIGJvb2wgZGlyZWN0ID0gY3Vy
cmVudEluc3RydWN0aW9uWzhdLnUucHV0QnlJZEZsYWdzICYgUHV0QnlJZElzRGlyZWN0OwogCiAg
ICAgICAgICAgICBQdXRCeUlkU3RhdHVzIHB1dEJ5SWRTdGF0dXMgPSBQdXRCeUlkU3RhdHVzOjpj
b21wdXRlRm9yKAotICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRC
bG9jaywgbV9kZmdDb2RlQmxvY2ssCi0gICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+
bV9zdHViSW5mb3MsIG1fZGZnU3R1YkluZm9zLAorICAgICAgICAgICAgICAgIG1faW5saW5lU3Rh
Y2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9w
LT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrLAogICAgICAgICAgICAgICAgIGN1cnJl
bnRDb2RlT3JpZ2luKCksIG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXSk7
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGhhbmRsZVB1dEJ5SWQoYmFzZSwgaWRlbnRpZmll
ck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGRpcmVjdCk7CkBAIC02NjAzLDEyICs2NjMw
LDIwIEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmUKICAgICAgICAg
Ly8gV2UgZG8gdGhpcyB3aGlsZSBob2xkaW5nIHRoZSBsb2NrIGJlY2F1c2Ugd2Ugd2FudCB0byBl
bmNvdXJhZ2UgU3RydWN0dXJlU3R1YkluZm8ncwogICAgICAgICAvLyB0byBiZSBwb3RlbnRpYWxs
eSBhZGRlZCB0byBvcGVyYXRpb25zIGFuZCBiZWNhdXNlIHRoZSBwcm9maWxlZCBibG9jayBjb3Vs
ZCBiZSBpbiB0aGUKICAgICAgICAgLy8gbWlkZGxlIG9mIExMSW50LT5KSVQgdGllci11cCBpbiB3
aGljaCBjYXNlIHdlIHdvdWxkIGJlIGFkZGluZyB0aGUgaW5mbydzIHJpZ2h0IG5vdy4KLSAgICAg
ICAgaWYgKG1fcHJvZmlsZWRCbG9jay0+aGFzQmFzZWxpbmVKSVRQcm9maWxpbmcoKSkgewotICAg
ICAgICAgICAgbV9wcm9maWxlZEJsb2NrLT5nZXRTdHViSW5mb01hcChsb2NrZXIsIG1fc3R1Yklu
Zm9zKTsKLSAgICAgICAgICAgIG1fcHJvZmlsZWRCbG9jay0+Z2V0Q2FsbExpbmtJbmZvTWFwKGxv
Y2tlciwgbV9jYWxsTGlua0luZm9zKTsKLSAgICAgICAgICAgIG1fcHJvZmlsZWRCbG9jay0+Z2V0
QnlWYWxJbmZvTWFwKGxvY2tlciwgbV9ieVZhbEluZm9zKTsKKyAgICAgICAgaWYgKG1fcHJvZmls
ZWRCbG9jay0+aGFzQmFzZWxpbmVKSVRQcm9maWxpbmcoKSkKKyAgICAgICAgICAgIG1fcHJvZmls
ZWRCbG9jay0+Z2V0SUNTdGF0dXNNYXAobG9ja2VyLCBtX2Jhc2VsaW5lTWFwKTsKKyAgICB9Cisg
ICAgCisgICAgbV9vcHRpbWl6ZWRDb250ZXh0LmJhc2VsaW5lQ29kZUJsb2NrID0gbV9wcm9maWxl
ZEJsb2NrOworICAgIGlmIChPcHRpb25zOjp1c2VQb2x5dmFyaWFudERldmlydHVhbGl6YXRpb24o
KSkgeworICAgICAgICBDb2RlQmxvY2sqIG9wdGltaXplZEJsb2NrID0gbV9wcm9maWxlZEJsb2Nr
LT5yZXBsYWNlbWVudCgpOworICAgICAgICBtX29wdGltaXplZENvbnRleHQub3B0aW1pemVkQ29k
ZUJsb2NrID0gb3B0aW1pemVkQmxvY2s7CisgICAgICAgIGlmIChvcHRpbWl6ZWRCbG9jaykgewor
ICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihvcHRpbWl6ZWRCbG9jay0+bV9s
b2NrKTsKKyAgICAgICAgICAgIG9wdGltaXplZEJsb2NrLT5nZXRJQ1N0YXR1c01hcChsb2NrZXIs
IG1fb3B0aW1pemVkQ29udGV4dC5tYXApOwogICAgICAgICB9CiAgICAgfQorICAgIG1faWNDb250
ZXh0U3RhY2suYXBwZW5kKCZtX29wdGltaXplZENvbnRleHQpOwogICAgIAogICAgIGludCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpc1dpdGhGaXh1cCA9IHN0ZDo6bWF4PGludD4oYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMsIGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKIApAQCAtNjY3
Myw2ICs2NzA4LDEzIEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmUK
ICAgICBieXRlQ29kZVBhcnNlci0+bV9pbmxpbmVTdGFja1RvcCA9IHRoaXM7CiB9CiAKK0J5dGVD
b2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5Ojp+SW5saW5lU3RhY2tFbnRyeSgpCit7CisgICAg
bV9ieXRlQ29kZVBhcnNlci0+bV9pbmxpbmVTdGFja1RvcCA9IG1fY2FsbGVyOworICAgIFJFTEVB
U0VfQVNTRVJUKG1fYnl0ZUNvZGVQYXJzZXItPm1faWNDb250ZXh0U3RhY2subGFzdCgpID09ICZt
X29wdGltaXplZENvbnRleHQpOworICAgIG1fYnl0ZUNvZGVQYXJzZXItPm1faWNDb250ZXh0U3Rh
Y2sucmVtb3ZlTGFzdCgpOworfQorCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9j
aygpCiB7CiAgICAgY2xlYXJDYWNoZXMoKTsKQEAgLTY3NjksMTUgKzY4MTEsNiBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAgICAgCiAgICAgVkVSQk9TRV9MT0coIlBhcnNpbmcgIiwg
Km1fY29kZUJsb2NrLCAiXG4iKTsKICAgICAKLSAgICBtX2RmZ0NvZGVCbG9jayA9IG1fZ3JhcGgu
bV9wbGFuLnByb2ZpbGVkREZHQ29kZUJsb2NrOwotICAgIGlmIChpc0ZUTChtX2dyYXBoLm1fcGxh
bi5tb2RlKSAmJiBtX2RmZ0NvZGVCbG9jawotICAgICAgICAmJiBPcHRpb25zOjp1c2VQb2x5dmFy
aWFudERldmlydHVhbGl6YXRpb24oKSkgewotICAgICAgICBpZiAoT3B0aW9uczo6dXNlUG9seXZh
cmlhbnRDYWxsSW5saW5pbmcoKSkKLSAgICAgICAgICAgIENhbGxMaW5rU3RhdHVzOjpjb21wdXRl
REZHU3RhdHVzZXMobV9kZmdDb2RlQmxvY2ssIG1fY2FsbENvbnRleHRNYXApOwotICAgICAgICBp
ZiAoT3B0aW9uczo6dXNlUG9seXZhcmlhbnRCeUlkSW5saW5pbmcoKSkKLSAgICAgICAgICAgIG1f
ZGZnQ29kZUJsb2NrLT5nZXRTdHViSW5mb01hcChtX2RmZ1N0dWJJbmZvcyk7Ci0gICAgfQotICAg
IAogICAgIElubGluZVN0YWNrRW50cnkgaW5saW5lU3RhY2tFbnRyeSgKICAgICAgICAgdGhpcywg
bV9jb2RlQmxvY2ssIG1fcHJvZmlsZWRCbG9jaywgMCwgVmlydHVhbFJlZ2lzdGVyKCksIFZpcnR1
YWxSZWdpc3RlcigpLAogICAgICAgICBtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBJbmxp
bmVDYWxsRnJhbWU6OkNhbGwsIG51bGxwdHIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NDYsNiArNDQ2
LDkgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2Ug
UHJvZmlsZUNvbnRyb2xGbG93OgogICAgIGNhc2UgUHV0SGludDoKICAgICBjYXNlIEluaXRpYWxp
emVFbnRyeXBvaW50QXJndW1lbnRzOgorICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6Cisg
ICAgY2FzZSBGaWx0ZXJHZXRCeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1
czoKICAgICAgICAgd3JpdGUoU2lkZVN0YXRlKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0
U3RhdGUuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNiArNzUsOSBA
QCBib29sIGNsb2JiZXJzRXhpdFN0YXRlKEdyYXBoJiBncmFwaCwgTm9kCiAgICAgY2FzZSBGZW5j
ZWRTdG9yZUJhcnJpZXI6CiAgICAgY2FzZSBBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKICAgICBj
YXNlIFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CisgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0
YXR1czoKKyAgICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJQdXRC
eUlkU3RhdHVzOgogICAgICAgICAvLyBUaGVzZSBkbyBjbG9iYmVyIG1lbW9yeSwgYnV0IG5vdGhp
bmcgdGhhdCBpcyBvYnNlcnZhYmxlLiBJdCBtYXkgYmUgbmljZSB0byBzZXBhcmF0ZSB0aGUKICAg
ICAgICAgLy8gaGVhcHMgaW50byB0aG9zZSB0aGF0IGFyZSBvYnNlcnZhYmxlIGFuZCB0aG9zZSB0
aGF0IGFyZW4ndCwgYnV0IHdlIGRvbid0IGRvIHRoYXQgcmlnaHQgbm93LgogICAgICAgICAvLyBG
SVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODQ0MApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmgJKHJldmlzaW9uIDIz
MjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjUsNiArMTI1LDcgQEAgcHVibGljOgogICAgIEJhZzxDb2RlQmxvY2tK
ZXR0aXNvbmluZ1dhdGNocG9pbnQ+IHdhdGNocG9pbnRzOwogICAgIEJhZzxBZGFwdGl2ZVN0cnVj
dHVyZVdhdGNocG9pbnQ+IGFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludHM7CiAgICAgQmFnPEFk
YXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludD4gYWRhcHRpdmVJbmZlcnJlZFBy
b3BlcnR5VmFsdWVXYXRjaHBvaW50czsKKyAgICBSZWNvcmRlZFN0YXR1c2VzIHJlY29yZGVkU3Rh
dHVzZXM7CiAgICAgVmVjdG9yPEp1bXBSZXBsYWNlbWVudD4ganVtcFJlcGxhY2VtZW50czsKICAg
ICAKICAgICBTY3JhdGNoQnVmZmVyKiBjYXRjaE9TUkVudHJ5QnVmZmVyOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5j
cHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29u
c3RhbnRGb2xkaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTcsNyArNTU3LDE1IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgYXV0byBhZGRGaWx0ZXJTdGF0dXMgPSBbJl0g
KCkgeworICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAg
ICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgRmlsdGVyR2V0QnlJ
ZFN0YXR1cywgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG1f
Z3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkR2V0QnlJZFN0YXR1cyhub2RlLT5vcmln
aW4uc2VtYW50aWMsIHN0YXR1cykpLAorICAgICAgICAgICAgICAgICAgICAgICAgYmFzZVZhbHVl
KTsKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
IGlmIChzdGF0dXMubnVtVmFyaWFudHMoKSA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAgIGFk
ZEZpbHRlclN0YXR1cygpOwogICAgICAgICAgICAgICAgICAgICBlbWl0R2V0QnlPZmZzZXQoaW5k
ZXhJbkJsb2NrLCBub2RlLCBiYXNlVmFsdWUsIHN0YXR1c1swXSwgaWRlbnRpZmllck51bWJlcik7
CiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKQEAgLTU2Niw2ICs1NzQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGlm
ICghaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGFkZEZpbHRlclN0YXR1cygpOwog
ICAgICAgICAgICAgICAgIE11bHRpR2V0QnlPZmZzZXREYXRhKiBkYXRhID0gbV9ncmFwaC5tX211
bHRpR2V0QnlPZmZzZXREYXRhLmFkZCgpOwogICAgICAgICAgICAgICAgIGZvciAoY29uc3QgR2V0
QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBzdGF0dXMudmFyaWFudHMoKSkgewogICAgICAgICAgICAg
ICAgICAgICBkYXRhLT5jYXNlcy5hcHBlbmQoCkBAIC02MzksNiArNjQ4LDExIEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgaWYgKCFhbGxHb29kKQogICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNl
cnROb2RlKAorICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBGaWx0
ZXJQdXRCeUlkU3RhdHVzLCBub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIE9wSW5m
byhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFkZFB1dEJ5SWRTdGF0dXMobm9kZS0+
b3JpZ2luLnNlbWFudGljLCBzdGF0dXMpKSwKKyAgICAgICAgICAgICAgICAgICAgYmFzZVZhbHVl
KTsKKyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzLm51bVZhcmlh
bnRzKCkgPT0gMSkgewogICAgICAgICAgICAgICAgICAgICBlbWl0UHV0QnlPZmZzZXQoaW5kZXhJ
bkJsb2NrLCBub2RlLCBiYXNlVmFsdWUsIHN0YXR1c1swXSwgaWRlbnRpZmllck51bWJlcik7CiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRG9lc0dDLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTIsNiArMzEyLDkgQEAgYm9v
bCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQXRvbWljc1hvcjoK
ICAgICBjYXNlIEF0b21pY3NJc0xvY2tGcmVlOgogICAgIGNhc2UgTWF0Y2hTdHJ1Y3R1cmU6Cisg
ICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0
dXM6CisgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBjYXNlIFB1c2hXaXRoU2NvcGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMzgs
NiArMjEzOCw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgR2V0R2xvYmFsVGhpczoKICAgICAg
ICAgY2FzZSBFeHRyYWN0VmFsdWVGcm9tV2Vha01hcEdldDoKICAgICAgICAgY2FzZSBDUFVJbnRy
aW5zaWM6CisgICAgICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgICAgIGNhc2Ug
RmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgog
ICAgICAgICAgICAgYnJlYWs7CiAjZWxzZQogICAgICAgICBkZWZhdWx0OgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTYs
NiArMzU2LDEyIEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QKICAg
ICAgICAgb3V0LnByaW50KGNvbW1hLCAiaWdub3JlTGFzdEluZGV4SXNXcml0YWJsZSA9ICIsIG5v
ZGUtPmlnbm9yZUxhc3RJbmRleElzV3JpdGFibGUoKSk7CiAgICAgaWYgKG5vZGUtPmlzQ29uc3Rh
bnQoKSkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBwb2ludGVyRHVtcEluQ29udGV4dChub2Rl
LT5jb25zdGFudCgpLCBjb250ZXh0KSk7CisgICAgaWYgKG5vZGUtPmhhc0NhbGxMaW5rU3RhdHVz
KCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgKm5vZGUtPmNhbGxMaW5rU3RhdHVzKCkpOwor
ICAgIGlmIChub2RlLT5oYXNHZXRCeUlkU3RhdHVzKCkpCisgICAgICAgIG91dC5wcmludChjb21t
YSwgKm5vZGUtPmdldEJ5SWRTdGF0dXMoKSk7CisgICAgaWYgKG5vZGUtPmhhc1B1dEJ5SWRTdGF0
dXMoKSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAqbm9kZS0+cHV0QnlJZFN0YXR1cygpKTsK
ICAgICBpZiAobm9kZS0+aXNKdW1wKCkpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIlQ6Iiwg
Km5vZGUtPnRhcmdldEJsb2NrKCkpOwogICAgIGlmIChub2RlLT5pc0JyYW5jaCgpKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9u
IDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xODgsNiArMTg4LDggQEAgdm9pZCBKSVRDb21waWxlcjo6Y29t
cGlsZUV4Y2VwdGlvbkhhbmRsZQogCiB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXIm
IGxpbmtCdWZmZXIpCiB7CisgICAgbV9qaXRDb2RlLT5jb21tb24ucmVjb3JkZWRTdGF0dXNlcyA9
IFdURk1vdmUobV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcyk7CisgICAgCiAgICAgLy8g
TGluayB0aGUgY29kZSwgcG9wdWxhdGUgZGF0YSBpbiBDb2RlQmxvY2sgZGF0YSBzdHJ1Y3R1cmVz
LgogICAgIG1faml0Q29kZS0+Y29tbW9uLmZyYW1lUmVnaXN0ZXJDb3VudCA9IG1fZ3JhcGguZnJh
bWVSZWdpc3RlckNvdW50KCk7CiAgICAgbV9qaXRDb2RlLT5jb21tb24ucmVxdWlyZWRSZWdpc3Rl
ckNvdW50Rm9yRXhpdCA9IG1fZ3JhcGgucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhpdCgpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCShyZXZpc2lvbiAy
MzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDkgQEAgRXhpdE1vZGUgbWF5RXhpdEltcGwoR3JhcGgm
IGdyYXBoLCBOb2RlKgogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKICAgICBjYXNlIFJlY29yZFJl
Z0V4cENhY2hlZFJlc3VsdDoKICAgICBjYXNlIE51a2VTdHJ1Y3R1cmVBbmRTZXRCdXR0ZXJmbHk6
CisgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICBjYXNlIEZpbHRlckdldEJ5SWRT
dGF0dXM6CisgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICBicmVhazsKIAog
ICAgIGNhc2UgU3RyQ2F0OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJl
dmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNzY5LDYgKzI3NjksMzkgQEAgcHVibGljOgogICAgICAgICBBU1NF
UlQob3AoKSA9PSBUaHJvd1N0YXRpY0Vycm9yKTsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFz
PHVpbnQzMl90PigpOwogICAgIH0KKyAgICAKKyAgICBib29sIGhhc0NhbGxMaW5rU3RhdHVzKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBvcCgpID09IEZpbHRlckNhbGxMaW5rU3RhdHVzOworICAg
IH0KKyAgICAKKyAgICBDYWxsTGlua1N0YXR1cyogY2FsbExpbmtTdGF0dXMoKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGhhc0NhbGxMaW5rU3RhdHVzKCkpOworICAgICAgICByZXR1cm4gbV9vcElu
Zm8uYXM8Q2FsbExpbmtTdGF0dXMqPigpOworICAgIH0KKyAgICAKKyAgICBib29sIGhhc0dldEJ5
SWRTdGF0dXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gRmlsdGVyR2V0QnlJZFN0
YXR1czsKKyAgICB9CisgICAgCisgICAgR2V0QnlJZFN0YXR1cyogZ2V0QnlJZFN0YXR1cygpCisg
ICAgeworICAgICAgICBBU1NFUlQoaGFzR2V0QnlJZFN0YXR1cygpKTsKKyAgICAgICAgcmV0dXJu
IG1fb3BJbmZvLmFzPEdldEJ5SWRTdGF0dXMqPigpOworICAgIH0KKyAgICAKKyAgICBib29sIGhh
c1B1dEJ5SWRTdGF0dXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gRmlsdGVyUHV0
QnlJZFN0YXR1czsKKyAgICB9CisgICAgCisgICAgUHV0QnlJZFN0YXR1cyogcHV0QnlJZFN0YXR1
cygpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzUHV0QnlJZFN0YXR1cygpKTsKKyAgICAgICAg
cmV0dXJuIG1fb3BJbmZvLmFzPFB1dEJ5SWRTdGF0dXMqPigpOworICAgIH0KIAogICAgIHZvaWQg
ZHVtcENoaWxkcmVuKFByaW50U3RyZWFtJiBvdXQpCiAgICAgewpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOTQsMTEg
KzM5NCw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhHZXRB
cmd1bWVudCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAogICAgIG1hY3JvKE5ld0Z1bmN0aW9uLCBO
b2RlUmVzdWx0SlMpIFwKLSAgICBcCiAgICAgbWFjcm8oTmV3R2VuZXJhdG9yRnVuY3Rpb24sIE5v
ZGVSZXN1bHRKUykgXAotICAgIFwKICAgICBtYWNybyhOZXdBc3luY0dlbmVyYXRvckZ1bmN0aW9u
LCBOb2RlUmVzdWx0SlMpIFwKLSAgICBcCiAgICAgbWFjcm8oTmV3QXN5bmNGdW5jdGlvbiwgTm9k
ZVJlc3VsdEpTKSBcCiAgICAgXAogICAgIC8qIEJsb2NrIHRlcm1pbmFscy4gKi9cCkBAIC00NzUs
NiArNDcyLDExIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBcCiAgICAg
LyogVXNlZCBmb3IgJHZtIHBlcmZvcm1hbmNlIGRlYnVnZ2luZyAqLyBcCiAgICAgbWFjcm8oQ1BV
SW50cmluc2ljLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgXAorICAg
IC8qIFVzZWQgdG8gcHJvdmlkZSBmZWVkYmFjayB0byB0aGUgSUMgcHJvZmlsZXIuICovIFwKKyAg
ICBtYWNybyhGaWx0ZXJDYWxsTGlua1N0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1h
Y3JvKEZpbHRlckdldEJ5SWRTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhG
aWx0ZXJQdXRCeUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAKIAogLy8gVGhpcyBlbnVt
IGdlbmVyYXRlcyBhIG1vbm90b25pY2FsbHkgaW5jcmVhc2luZyBpZCBmb3IgYWxsIE5vZGUgdHlw
ZXMsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRCYXNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRCYXNlLmNw
cAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsMTEgKzQyLDE3IEBAIHZvaWQgT1NS
RXhpdEJhc2U6OmNvbnNpZGVyQWRkaW5nQXNGcmVxdWUKICAgICAgICAgYmFzZWxpbmVDb2RlQmxv
Y2tGb3JPcmlnaW5BbmRCYXNlbGluZUNvZGVCbG9jaygKICAgICAgICAgICAgIG1fY29kZU9yaWdp
bkZvckV4aXRQcm9maWxlLCBwcm9maWxlZENvZGVCbG9jayk7CiAgICAgaWYgKHNvdXJjZVByb2Zp
bGVkQ29kZUJsb2NrKSB7CisgICAgICAgIEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQ7Cisg
ICAgICAgIGlmIChtX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZS5pbmxpbmVDYWxsRnJhbWUpCisg
ICAgICAgICAgICBpbmxpbmVLaW5kID0gRXhpdEZyb21JbmxpbmVkOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBpbmxpbmVLaW5kID0gRXhpdEZyb21Ob3RJbmxpbmVkOworICAgICAgICAKICAg
ICAgICAgRnJlcXVlbnRFeGl0U2l0ZSBzaXRlOwogICAgICAgICBpZiAobV93YXNIb2lzdGVkKQot
ICAgICAgICAgICAgc2l0ZSA9IEZyZXF1ZW50RXhpdFNpdGUoSG9pc3RpbmdGYWlsZWQsIGppdFR5
cGUpOworICAgICAgICAgICAgc2l0ZSA9IEZyZXF1ZW50RXhpdFNpdGUoSG9pc3RpbmdGYWlsZWQs
IGppdFR5cGUsIGlubGluZUtpbmQpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzaXRlID0g
RnJlcXVlbnRFeGl0U2l0ZShtX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZS5ieXRlY29kZUluZGV4
LCBtX2tpbmQsIGppdFR5cGUpOworICAgICAgICAgICAgc2l0ZSA9IEZyZXF1ZW50RXhpdFNpdGUo
bV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGUuYnl0ZWNvZGVJbmRleCwgbV9raW5kLCBqaXRUeXBl
LCBpbmxpbmVLaW5kKTsKICAgICAgICAgRXhpdFByb2ZpbGU6OmFkZChzb3VyY2VQcm9maWxlZENv
ZGVCbG9jaywgc2l0ZSk7CiAgICAgfQogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQbGFuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1BsYW4uY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1BsYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzMsNiArNjMzLDggQEAgdm9pZCBQbGFu
OjpjaGVja0xpdmVuZXNzQW5kVmlzaXRDaGlsZHJlbgogICAgIGNsZWFuTXVzdEhhbmRsZVZhbHVl
c0lmTmVjZXNzYXJ5KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbXVzdEhhbmRsZVZhbHVlcy5z
aXplKCk7IGktLTspCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQobXVzdEhhbmRs
ZVZhbHVlc1tpXSk7CisgICAgCisgICAgcmVjb3JkZWRTdGF0dXNlcy5tYXJrSWZDaGVhcCh2aXNp
dG9yKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQoY29kZUJsb2NrKTsKICAgICB2
aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSk7CkBAIC02
NDksNiArNjUxLDExIEBAIHZvaWQgUGxhbjo6Y2hlY2tMaXZlbmVzc0FuZFZpc2l0Q2hpbGRyZW4K
ICAgICB0cmFuc2l0aW9ucy52aXNpdENoaWxkcmVuKHZpc2l0b3IpOwogfQogCit2b2lkIFBsYW46
OmZpbmFsaXplSW5HQygpCit7CisgICAgcmVjb3JkZWRTdGF0dXNlcy5maW5hbGl6ZSgpOworfQor
CiBib29sIFBsYW46OmlzS25vd25Ub0JlTGl2ZUR1cmluZ0dDKCkKIHsKICAgICBpZiAoc3RhZ2Ug
PT0gQ2FuY2VsbGVkKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgJKHJldmlz
aW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Miw2ICs3Miw3IEBAIHN0cnVjdCBQbGFuIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGUKICAgICB2b2lkIGl0ZXJhdGVDb2RlQmxvY2tzRm9yR0MoY29uc3QgRnVuYyYp
OwogICAgIHZvaWQgY2hlY2tMaXZlbmVzc0FuZFZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsK
ICAgICBib29sIGlzS25vd25Ub0JlTGl2ZUR1cmluZ0dDKCk7CisgICAgdm9pZCBmaW5hbGl6ZUlu
R0MoKTsKICAgICB2b2lkIGNhbmNlbCgpOwogCiAgICAgYm9vbCBjYW5UaWVyVXBBbmRPU1JFbnRl
cigpIGNvbnN0IHsgcmV0dXJuICF0aWVyVXBBbmRPU1JFbnRlckJ5dGVjb2Rlcy5pc0VtcHR5KCk7
IH0KQEAgLTEwNCw2ICsxMDUsNyBAQCBzdHJ1Y3QgUGxhbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlCiAgICAgRGVzaXJlZElkZW50aWZpZXJzIGlkZW50aWZpZXJzOwogICAgIERlc2lyZWRX
ZWFrUmVmZXJlbmNlcyB3ZWFrUmVmZXJlbmNlczsKICAgICBEZXNpcmVkVHJhbnNpdGlvbnMgdHJh
bnNpdGlvbnM7CisgICAgUmVjb3JlZFN0YXR1c2VzIHJlY29yZGVkU3RhdHVzZXM7CiAgICAgCiAg
ICAgYm9vbCB3aWxsVHJ5VG9UaWVyVXAgeyBmYWxzZSB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMDYs
NiArMTIwNiw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSW5pdGlhbGl6ZUVudHJ5cG9pbnRB
cmd1bWVudHM6CiAgICAgICAgIGNhc2UgV2Vha1NldEFkZDoKICAgICAgICAgY2FzZSBXZWFrTWFw
U2V0OgorICAgICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAgICAgICBjYXNlIEZp
bHRlckdldEJ5SWRTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIC8vIFRoaXMgZ2V0cyBpZ25v
cmVkIGJlY2F1c2UgaXQgb25seSBwcmV0ZW5kcyB0byBwcm9kdWNlIGEgdmFsdWUuCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24g
MjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3OCw2ICs0NzgsMTMgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFi
c3RyYWN0U3RhdGVUeXBlJiBzdAogICAgICAgICAvLyBhbHJlYWR5IGZvcmNlIHRoZXNlIHRoaW5n
cyB0byBiZSBvcmRlcmVkIHByZWNpc2VseS4gSSdtIGp1c3Qgbm90IGNvbmZpZGVudCBlbm91Z2gg
aW4gbXkKICAgICAgICAgLy8gZWZmZWN0IGJhc2VkIG1lbW9yeSBtb2RlbCB0byByZWx5IHNvbGVs
eSBvbiB0aGF0IHJpZ2h0IG5vdy4KICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAg
ICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1
czoKKyAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CisgICAgICAgIC8vIFdlIGRvbid0IHdh
bnQgdGhlc2UgdG8gYmUgbW92ZWQgYW55d2hlcmUgb3RoZXIgdGhhbiB3aGVyZSB3ZSBwdXQgdGhl
bSwgc2luY2Ugd2Ugd2FudCB0aGVtCisgICAgICAgIC8vIHRvIGNhcHR1cmUgInByb2ZpbGluZyIg
YXQgdGhlIHBvaW50IGluIGNvbnRyb2wgZmxvdyBoZXJlIHRoZSB1c2VyIHB1dCB0aGVtLgorICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjYXNlIEdldEJ5VmFsOgogICAgIGNhc2UgR2V0SW5k
ZXhlZFByb3BlcnR5U3RvcmFnZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDAzMyw2ICs0MDMzLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIENoZWNrU3RydWN0dXJlT3JFbXB0eToKICAgICAg
ICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG5vZGUsICJDaGVja1N0cnVjdHVyZU9yRW1wdHkg
b25seSB1c2VkIGluIDY0LWJpdCBERkciKTsKICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAg
IGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJHZXRCeUlkU3RhdHVz
OgorICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKKyAgICAgICAgYnJlYWs7CiAKICAgICBj
YXNlIExhc3ROb2RlVHlwZToKICAgICBjYXNlIFBoaToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjMyMjI3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDYyNiw2ICs0NjI2LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBG
aWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0dXM6CisgICAg
Y2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgorICAgICAgICBicmVhazsKKwogI2Vsc2UgLy8gRU5B
QkxFKEZUTF9KSVQpCiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNr
VGllclVwQXRSZXR1cm46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmts
aXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmts
aXN0LmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdXb3JrbGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5Myw4ICszOTMsMTAgQEAgdm9pZCBX
b3JrbGlzdDo6cmVtb3ZlRGVhZFBsYW5zKFZNJiB2bSkKICAgICAgICAgICAgIFBsYW4qIHBsYW4g
PSBpdGVyLT52YWx1ZS5nZXQoKTsKICAgICAgICAgICAgIGlmIChwbGFuLT52bSAhPSAmdm0pCiAg
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAocGxhbi0+aXNLbm93blRv
QmVMaXZlRHVyaW5nR0MoKSkKKyAgICAgICAgICAgIGlmIChwbGFuLT5pc0tub3duVG9CZUxpdmVE
dXJpbmdHQygpKSB7CisgICAgICAgICAgICAgICAgcGxhbi0+ZmluYWxpemVJbkdDKCk7CiAgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChwbGFuLT5zdGFnZSAhPSBQbGFuOjpDYW5jZWxsZWQpOyAvLyBTaG91bGQgbm90IGJl
IGNhbmNlbGxlZCwgeWV0LgogICAgICAgICAgICAgQVNTRVJUKCFkZWFkUGxhbktleXMuY29udGFp
bnMocGxhbi0+a2V5KCkpKTsKICAgICAgICAgICAgIGRlYWRQbGFuS2V5cy5hZGQocGxhbi0+a2V5
KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCSh3b3JraW5nIGNvcHkpCkBA
IC01Niw2ICs1Niw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNy
byhEaXJlY3RBcmd1bWVudHNfbWluQ2FwYWNpdHksIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZN
aW5DYXBhY2l0eSgpKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX21hcHBlZEFyZ3VtZW50
cywgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZk1hcHBlZEFyZ3VtZW50cygpKSBcCiAgICAgbWFj
cm8oRGlyZWN0QXJndW1lbnRzX21vZGlmaWVkQXJndW1lbnRzRGVzY3JpcHRvciwgRGlyZWN0QXJn
dW1lbnRzOjpvZmZzZXRPZk1vZGlmaWVkQXJndW1lbnRzRGVzY3JpcHRvcigpKSBcCisgICAgbWFj
cm8oRnVuY3Rpb25SYXJlRGF0YV9hbGxvY2F0b3IsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9m
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZz
ZXRPZkFsbG9jYXRvcigpKSBcCisgICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9zdHJ1Y3R1cmUs
IEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9i
amVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSBcCiAgICAgbWFjcm8o
R2V0dGVyU2V0dGVyX2dldHRlciwgR2V0dGVyU2V0dGVyOjpvZmZzZXRPZkdldHRlcigpKSBcCiAg
ICAgbWFjcm8oR2V0dGVyU2V0dGVyX3NldHRlciwgR2V0dGVyU2V0dGVyOjpvZmZzZXRPZlNldHRl
cigpKSBcCiAgICAgbWFjcm8oSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoLCBKU0FycmF5QnVmZmVy
Vmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkgXApAQCAtMTEyLDEwICsxMTQsMTAgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3JvKFN0cmluZ0ltcGxfbGVuZ3RoLCBTdHJp
bmdJbXBsOjpsZW5ndGhNZW1vcnlPZmZzZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVyZV9jbGFz
c0luZm8sIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1
cmVfZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSBcCisgICAg
bWFjcm8oU3RydWN0dXJlX2luZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnksIFN0cnVjdHVyZTo6
aW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeU9mZnNldCgpKSBcCisgICAgbWFjcm8oU3RydWN0
dXJlX2lubGluZUNhcGFjaXR5LCBTdHJ1Y3R1cmU6OmlubGluZUNhcGFjaXR5T2Zmc2V0KCkpIFwK
ICAgICBtYWNybyhTdHJ1Y3R1cmVfcHJvdG90eXBlLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNl
dCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlX3N0cnVjdHVyZUlELCBTdHJ1Y3R1cmU6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpIFwKLSAgICBtYWNybyhTdHJ1Y3R1cmVfaW5saW5lQ2FwYWNpdHksIFN0
cnVjdHVyZTo6aW5saW5lQ2FwYWNpdHlPZmZzZXQoKSkgXAotICAgIG1hY3JvKFN0cnVjdHVyZV9p
bmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5LCBTdHJ1Y3R1cmU6OmluZGV4aW5nTW9kZUluY2x1
ZGluZ0hpc3RvcnlPZmZzZXQoKSkgXAogICAgIG1hY3JvKEhhc2hNYXBJbXBsX2NhcGFjaXR5LCBI
YXNoTWFwSW1wbDxIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46Om9mZnNldE9m
Q2FwYWNpdHkoKSkgXAogICAgIG1hY3JvKEhhc2hNYXBJbXBsX2J1ZmZlciwgIEhhc2hNYXBJbXBs
PEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+Pjo6b2Zmc2V0T2ZCdWZmZXIoKSkg
XAogICAgIG1hY3JvKEhhc2hNYXBJbXBsX2hlYWQsICBIYXNoTWFwSW1wbDxIYXNoTWFwQnVja2V0
PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46Om9mZnNldE9mSGVhZCgpKSBcCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyMzIy
MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM1MSw2ICszNTEsMTAgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBj
YW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CiAgICAgY2FzZSBQdXRC
eVZhbFdpdGhUaGlzOgogICAgIGNhc2UgTWF0Y2hTdHJ1Y3R1cmU6CisgICAgY2FzZSBDcmVhdGVU
aGlzOgorICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJHZXRC
eUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgLy8gVGhl
c2UgYXJlIE9LLgogICAgICAgICBicmVhazsKIApAQCAtMzYyLDcgKzM2Niw2IEBAIGlubGluZSBD
YXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICAgICAgYnJlYWs7CiAKICAgICBj
YXNlIElkZW50aXR5V2l0aFByb2ZpbGU6Ci0gICAgY2FzZSBDcmVhdGVUaGlzOgogICAgIGNhc2Ug
Q2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgogICAg
IGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzkxLDYgKzM5MSw4IEBAIHB1YmxpYzoKIAogICAgICAgICAvLyBXZSBwdXQgdGhlIGJsb2NrcyBp
bnRvIHRoZSBCMyBwcm9jZWR1cmUgaW4gYSBzdXBlciB3ZWlyZCBvcmRlci4gTm93IHdlIHJlb3Jk
ZXIgdGhlbS4KICAgICAgICAgbV9vdXQuYXBwbHlCbG9ja09yZGVyKCk7CisgICAgICAgIAorICAg
ICAgICBtX3N0YXRlLmppdENvZGUtPmNvbW1vbi5yZWNvcmRlZFN0YXR1c2VzID0gV1RGTW92ZSht
X2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC04
NDcsNiArODQ5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBOZXdBcnJheVdpdGhTcHJlYWQ6
CiAgICAgICAgICAgICBjb21waWxlTmV3QXJyYXlXaXRoU3ByZWFkKCk7CiAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBDcmVhdGVUaGlzOgorICAgICAgICAgICAgY29tcGlsZUNyZWF0
ZVRoaXMoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNwcmVhZDoKICAgICAg
ICAgICAgIGNvbXBpbGVTcHJlYWQoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTMxMiw2ICsx
MzE3LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBCb3R0b21WYWx1ZToKICAgICAgICAgY2Fz
ZSBLaWxsU3RhY2s6CiAgICAgICAgIGNhc2UgSW5pdGlhbGl6ZUVudHJ5cG9pbnRBcmd1bWVudHM6
CisgICAgICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVy
R2V0QnlJZFN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBERkdfQ1JBU0gobV9n
cmFwaCwgbV9ub2RlLCAiVW5yZWNvZ25pemVkIG5vZGUgaW4gRlRMIGJhY2tlbmQiKTsKQEAgLTU2
NjIsNiArNTY3MCw0MCBAQCBwcml2YXRlOgogCiAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsK
ICAgICB9CisgICAgCisgICAgdm9pZCBjb21waWxlQ3JlYXRlVGhpcygpCisgICAgeworICAgICAg
ICBMVmFsdWUgY2FsbGVlID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKKworICAgICAgICBM
QmFzaWNCbG9jayBpc0Z1bmN0aW9uQmxvY2sgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBM
QmFzaWNCbG9jayBoYXNSYXJlRGF0YSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNp
Y0Jsb2NrIHNsb3dQYXRoID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sg
Y29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKKworICAgICAgICBtX291dC5icmFuY2go
aXNGdW5jdGlvbihjYWxsZWUsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1c3VhbGx5
KGlzRnVuY3Rpb25CbG9jayksIHJhcmVseShzbG93UGF0aCkpOworCisgICAgICAgIExCYXNpY0Js
b2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaXNGdW5jdGlvbkJsb2NrLCBoYXNSYXJlRGF0
YSk7CisgICAgICAgIExWYWx1ZSByYXJlRGF0YSA9IG1fb3V0LmxvYWRQdHIoY2FsbGVlLCBtX2hl
YXBzLkpTRnVuY3Rpb25fcmFyZURhdGEpOworICAgICAgICBtX291dC5icmFuY2gobV9vdXQuaXNa
ZXJvNjQocmFyZURhdGEpLCByYXJlbHkoc2xvd1BhdGgpLCB1c3VhbGx5KGhhc1JhcmVEYXRhKSk7
CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaGFzUmFyZURhdGEsIHNsb3dQYXRoKTsKKyAgICAg
ICAgTFZhbHVlIGFsbG9jYXRvciA9IG1fb3V0LmxvYWRQdHIocmFyZURhdGEsIG1faGVhcHMuRnVu
Y3Rpb25SYXJlRGF0YV9hbGxvY2F0b3IpOworICAgICAgICBMVmFsdWUgc3RydWN0dXJlID0gbV9v
dXQubG9hZFB0cihyYXJlRGF0YSwgbV9oZWFwcy5GdW5jdGlvblJhcmVEYXRhX3N0cnVjdHVyZSk7
CisgICAgICAgIExWYWx1ZSBidXR0ZXJmbHkgPSBtX291dC5jb25zdEludFB0cigwKTsKKyAgICAg
ICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihhbGxvY2F0ZU9iamVj
dChhbGxvY2F0b3IsIHN0cnVjdHVyZSwgYnV0dGVyZmx5LCBzbG93UGF0aCkpOworICAgICAgICBt
X291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd1Bh
dGgsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBt
X291dC5hbmNob3Iodm1DYWxsKAorICAgICAgICAgICAgSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25DcmVhdGVUaGlzKSwgbV9jYWxsRnJhbWUsIGNhbGxlZSwgbV9vdXQuY29uc3RJbnQz
MihtX25vZGUtPmlubGluZUNhcGFjaXR5KCkpKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGlu
dWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0
KTsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LnBoaShJbnQ2NCwgZmFzdFJlc3VsdCwg
c2xvd1Jlc3VsdCk7CisKKyAgICAgICAgbXV0YXRvckZlbmNlKCk7CisgICAgICAgIHNldEpTVmFs
dWUocmVzdWx0KTsKKyAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVTcHJlYWQoKQogICAgIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDIzMjIy
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBj
b3B5KQpAQCAtMjc1LDYgKzI3NSw3IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5
U3RyZWFtaW4KICAgICB2KHVuc2lnbmVkLCBtYXhBY2Nlc3NWYXJpYW50TGlzdFNpemUsIDgsIE5v
cm1hbCwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwgdXNlUG9seXZhcmlhbnREZXZpcnR1YWxpemF0
aW9uLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KGJvb2wsIHVzZVBvbHltb3JwaGlj
QWNjZXNzSW5saW5pbmcsIHRydWUsIE5vcm1hbCwgbnVsbHB0cikgXAorICAgIHYodW5zaWduZWQs
IG1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZSwgMywgTm9ybWFsLCBudWxscHRy
KSBcCiAgICAgdihib29sLCB1c2VQb2x5bW9ycGhpY0NhbGxJbmxpbmluZywgdHJ1ZSwgTm9ybWFs
LCBudWxscHRyKSBcCiAgICAgdihib29sLCB1c2VQb2x5bW9ycGhpY0NhbGxJbmxpbmluZ0Zvck5v
blN0dWJTdGF0dXMsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KHVuc2lnbmVkLCBt
YXhQb2x5bW9ycGhpY0NhbGxWYXJpYW50TGlzdFNpemUsIDE1LCBOb3JtYWwsIG51bGxwdHIpIFwK
QEAgLTMyMiw5ICszMjMsNiBAQCBjb25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3NlbWJseVN0cmVh
bWluCiAgICAgXAogICAgIHYodW5zaWduZWQsIG1heGltdW1WYXJhcmdzRm9ySW5saW5pbmcsIDEw
MCwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgXAotICAgIHYoYm9vbCwgdXNlUG9seXZhcmlhbnRD
YWxsSW5saW5pbmcsIHRydWUsIE5vcm1hbCwgbnVsbHB0cikgXAotICAgIHYoYm9vbCwgdXNlUG9s
eXZhcmlhbnRCeUlkSW5saW5pbmcsIHRydWUsIE5vcm1hbCwgbnVsbHB0cikgXAotICAgIFwKICAg
ICB2KGJvb2wsIHVzZU1heGltYWxGbHVzaEluc2VydGlvblBoYXNlLCBmYWxzZSwgTm9ybWFsLCAi
U2V0dGluZyB0byB0cnVlIGFsbG93cyB0aGUgREZHJ3MgTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhh
c2UgdG8gcnVuLiIpIFwKICAgICBcCiAgICAgdih1bnNpZ25lZCwgbWF4aW11bUJpbmFyeVN0cmlu
Z1N3aXRjaENhc2VMZW5ndGgsIDUwLCBOb3JtYWwsIG51bGxwdHIpIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341693</attachid>
            <date>2018-05-31 14:54:31 -0700</date>
            <delta_ts>2018-05-31 16:41:06 -0700</delta_ts>
            <desc>slowly getting it to compile</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>141894</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIzMjIyNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNDQwLDYgKzQ0MCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUEKICAgICBieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgKICAgICBieXRlY29k
ZS9FeGVjdXRpb25Db3VudGVyLmgKICAgICBieXRlY29kZS9FeGl0S2luZC5oCisgICAgYnl0ZWNv
ZGUvRXhpdGluZ0lubGluZUtpbmQuaAogICAgIGJ5dGVjb2RlL0V4aXRpbmdKSVRUeXBlLmgKICAg
ICBieXRlY29kZS9FeHByZXNzaW9uUmFuZ2VJbmZvLmgKICAgICBieXRlY29kZS9IYW5kbGVySW5m
by5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyMzIyMjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIx
MiwxMyArMjEyLDE2IEBAIGJ5dGVjb2RlL0RpcmVjdEV2YWxDb2RlQ2FjaGUuY3BwCiBieXRlY29k
ZS9FdmFsQ29kZUJsb2NrLmNwcAogYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5j
cHAKIGJ5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIuY3BwCitieXRlY29kZS9FeGl0RmxhZy5jcHAK
IGJ5dGVjb2RlL0V4aXRLaW5kLmNwcAorYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuY3BwCiBi
eXRlY29kZS9FeGl0aW5nSklUVHlwZS5jcHAKIGJ5dGVjb2RlL0Z1bGxDb2RlT3JpZ2luLmNwcAog
Ynl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suY3BwCiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNw
cAogYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCiBieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlLmNwcAorYnl0ZWNvZGUvSUNTdGF0dXNNYXAuY3BwCiBieXRlY29kZS9JbmxpbmVBY2Nl
c3MuY3BwCiBieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwCiBieXRlY29kZS9JbmxpbmVDYWxs
RnJhbWVTZXQuY3BwCkBAIC0yNDUsNiArMjQ4LDcgQEAgYnl0ZWNvZGUvUHJveHlhYmxlQWNjZXNz
Q2FzZS5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRGbGFncy5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0
dXMuY3BwCiBieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAKK2J5dGVjb2RlL1JlY29yZGVkU3Rh
dHVzZXMuY3BwCiBieXRlY29kZS9SZWR1Y2VXaGl0ZXNwYWNlLmNwcAogYnl0ZWNvZGUvU3BlY2lh
bFBvaW50ZXIuY3BwCiBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtMjk3LDYgKzI5NywxMSBAQAogCQkwRjQyNkE0OTE0NjBDQkI3MDAxMzFGOEYgLyog
VmlydHVhbFJlZ2lzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjQyNkE0NjE0NjBDQkFCMDAxMzFGOEYgLyogVmlydHVhbFJlZ2lzdGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0MjZBNEIx
NDYwQ0Q2RTAwMTMxRjhGIC8qIERhdGFGb3JtYXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDI2QTRBMTQ2MENENkIwMDEzMUY4RiAvKiBEYXRhRm9y
bWF0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEY0MzE3MzgxNDZCQUM2OTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0MzE3MzYxNDZCQUM2NTAwN0Uz
ODkwIC8qIExpc3RhYmxlSGFuZGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTBGNDRBN0IwMjBCRjY4NjIwMDIyQjE3MSAvKiBFeGl0RmxhZy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NEE3QUUy
MEJGNjg1RjAwMjJCMTcxIC8qIEV4aXRGbGFnLmggKi87IH07CisJCTBGNDRBN0IxMjBCRjY4Qzkw
MDIyQjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NEE3QTcyMEJGNjg1RDAwMjJCMTcxIC8qIEV4aXRpbmdJ
bmxpbmVLaW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEY0NEE3QjIyMEJGNjhDRTAwMjJCMTcxIC8qIElDU3RhdHVzTWFwLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ0QTdBRjIwQkY2ODVGMDAy
MkIxNzEgLyogSUNTdGF0dXNNYXAuaCAqLzsgfTsKKwkJMEY0NEE3QjMyMEJGNjhEMTAwMjJCMTcx
IC8qIFJlY29yZGVkU3RhdHVzZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNDRBN0FBMjBCRjY4NUUwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2Vz
LmggKi87IH07CisJCTBGNDRBN0I0MjBCRjY4RDkwMDIyQjE3MSAvKiBUZXJtaW5hdGVkQ29kZU9y
aWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0
NEE3QTgyMEJGNjg1RTAwMjJCMTcxIC8qIFRlcm1pbmF0ZWRDb2RlT3JpZ2luLmggKi87IH07CiAJ
CTBGNDU3MDM5MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NTcwMzcxQkU0NEM5
MTAwNjJBNjI5IC8qIEFpckVsaW1pbmF0ZURlYWRDb2RlLmggKi87IH07CiAJCTBGNDU3MDNEMUJF
NDVGMEEwMDYyQTYyOSAvKiBBaXJSZXBvcnRVc2VkUmVnaXN0ZXJzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ1NzAzQjFCRTQ1RjBBMDA2MkE2Mjkg
LyogQWlyUmVwb3J0VXNlZFJlZ2lzdGVycy5oICovOyB9OwogCQkwRjQ1NzA0MTFCRTU4NENBMDA2
MkE2MjkgLyogQjNUaW1pbmdTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY0NTcwM0YxQkU1ODRDQTAwNjJBNjI5IC8qIEIzVGltaW5nU2NvcGUu
aCAqLzsgfTsKQEAgLTIyODcsNiArMjI5MiwxNSBAQAogCQkwRjQyNkE0QTE0NjBDRDZCMDAxMzFG
OEYgLyogRGF0YUZvcm1hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRh
Rm9ybWF0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDJCM0MwMjAxRUI1MDkw
MDM1NzAzMSAvKiBBbGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQWxsb2NhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0MzE3
MzYxNDZCQUM2NTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBMaXN0YWJsZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEY0NEE3QTcyMEJGNjg1RDAwMjJCMTcxIC8qIEV4aXRpbmdJbmxpbmVLaW5kLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4aXRpbmdJbmxpbmVLaW5kLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDRBN0E4MjBCRjY4NUUwMDIyQjE3MSAvKiBU
ZXJtaW5hdGVkQ29kZU9yaWdpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
ZXJtaW5hdGVkQ29kZU9yaWdpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ0
QTdBOTIwQkY2ODVFMDAyMkIxNzEgLyogRXhpdEZsYWcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRXhpdEZsYWcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjQ0QTdBQTIwQkY2ODVFMDAyMkIxNzEgLyogUmVjb3JkZWRTdGF0dXNlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWNvcmRlZFN0YXR1c2VzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDRBN0FCMjBCRjY4NUUwMDIyQjE3MSAvKiBJQ1N0YXR1
c01hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJQ1N0YXR1c01h
cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDRBN0FDMjBCRjY4NUYwMDIy
QjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBFeGl0aW5nSW5saW5lS2luZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGNDRBN0FEMjBCRjY4NUYwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlY29yZGVkU3RhdHVzZXMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ0QTdBRTIwQkY2ODVGMDAyMkIxNzEg
LyogRXhpdEZsYWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhpdEZsYWcu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NEE3QUYyMEJGNjg1RjAwMjJCMTcx
IC8qIElDU3RhdHVzTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElDU3Rh
dHVzTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDU3MDM2MUJFNDRDOTEw
MDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBBaXJFbGltaW5hdGVEZWFkQ29kZS5jcHA7IHBhdGggPSBiMy9haXIv
QWlyRWxpbWluYXRlRGVhZENvZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjQ1NzAzNzFCRTQ0QzkxMDA2MkE2MjkgLyogQWlyRWxpbWluYXRlRGVhZENvZGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQWlyRWxpbWluYXRlRGVhZENvZGUuaDsgcGF0aCA9
IGIzL2Fpci9BaXJFbGltaW5hdGVEZWFkQ29kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjQ1NzAzQTFCRTQ1RjBBMDA2MkE2MjkgLyogQWlyUmVwb3J0VXNlZFJlZ2lzdGVycy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBBaXJSZXBvcnRVc2VkUmVn
aXN0ZXJzLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJSZXBvcnRVc2VkUmVnaXN0ZXJzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc1ODcsNiArNzYwMSwxNSBAQAogCQk5NjlBMDc4
RjBFRDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCTBGNDRBN0E5MjBCRjY4NUUwMDIyQjE3MSAvKiBFeGl0Rmxh
Zy5jcHAgKi8sCisJCQkJMEY0NEE3QUUyMEJGNjg1RjAwMjJCMTcxIC8qIEV4aXRGbGFnLmggKi8s
CisJCQkJMEY0NEE3QUMyMEJGNjg1RjAwMjJCMTcxIC8qIEV4aXRpbmdJbmxpbmVLaW5kLmNwcCAq
LywKKwkJCQkwRjQ0QTdBNzIwQkY2ODVEMDAyMkIxNzEgLyogRXhpdGluZ0lubGluZUtpbmQuaCAq
LywKKwkJCQkwRjQ0QTdBQjIwQkY2ODVFMDAyMkIxNzEgLyogSUNTdGF0dXNNYXAuY3BwICovLAor
CQkJCTBGNDRBN0FGMjBCRjY4NUYwMDIyQjE3MSAvKiBJQ1N0YXR1c01hcC5oICovLAorCQkJCTBG
NDRBN0FEMjBCRjY4NUYwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmNwcCAqLywKKwkJCQkw
RjQ0QTdBQTIwQkY2ODVFMDAyMkIxNzEgLyogUmVjb3JkZWRTdGF0dXNlcy5oICovLAorCQkJCTBG
NDRBN0E4MjBCRjY4NUUwMDIyQjE3MSAvKiBUZXJtaW5hdGVkQ29kZU9yaWdpbi5oICovLAogCQkJ
CTUzNEUwMzUyMUU1M0JCQTkwMDIxM0Y2NCAvKiBhY2Nlc3NDYXNlICovLAogCQkJCUUzQkZEMEI5
MURBRjgwN0MwMDY1REVBMiAvKiBBY2Nlc3NDYXNlU25pcHBldFBhcmFtcy5jcHAgKi8sCiAJCQkJ
RTNCRkQwQkExREFGODA3QzAwNjVERUEyIC8qIEFjY2Vzc0Nhc2VTbmlwcGV0UGFyYW1zLmggKi8s
CkBAIC04NDAxLDYgKzg0MjQsNyBAQAogCQkJCTUzRDQ0NERDMURBRjA4QUIwMEI5Mjc4NCAvKiBC
M1dhc21BZGRyZXNzVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzNDFGQzcyMURBQzM0M0Mw
MEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjJDNjNCMjFFNjBBRTQ3MDBDMTM4MzkgLyogQjNXaWR0aC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEY0NEE3QjIyMEJGNjhDRTAwMjJCMTcxIC8qIElDU3RhdHVzTWFwLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MjY3OEY4RjFBMDMxMDA5MDA2QTMwNkQgLyogQmFzaWNCbG9ja0xvY2F0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxNDdCODNBQzBFNkRCOEM5MDA0Nzc1QTQgLyogQmF0Y2hlZFRyYW5z
aXRpb25PcHRpbWl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2OTc2RTVGMUZBM0U4QkMwMEU3
QzRFMSAvKiBCaWdJbnRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCkBAIC04NjIwLDYgKzg2
NDQsNyBAQAogCQkJCTg2RUM5REM2MTMyOERGODIwMDJCMkFENyAvKiBERkdHZW5lcmF0aW9uSW5m
by5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQzlEQzgxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dy
YXBoLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJGQ0NGQTE4QTYwMDcwMDAxQTI3RjggLyogREZH
R3JhcGhTYWZlcG9pbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDRBN0IxMjBCRjY4QzkwMDIy
QjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMTc2NjEx
OTZCOEY5RTAwOTEwNTJBIC8qIERGR0hlYXBMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZDODQxNjkxQkE4QzMyMTAwNjE4MzdEIC8qIERGR0luZmVycmVkVHlwZUNoZWNrLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkIxNEUyMTE4MTI1NzBCMDA5QjZCNEQgLyogREZHSW5saW5lQ2FjaGVX
cmFwcGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTg3NzAsNiArODc5NSw3IEBACiAJCQkJQTdBOEFG
MzgxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTdBOEFGMzkxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYyNEU1NDMxN0VBOUY1OTAwQUJCMjE3IC8qIEZQUkluZm8uaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGNDRBN0IzMjBCRjY4RDEwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFMzRFREJGNzFEQjVGRkM5MDBEQzg3QTUgLyogRnJhbWVUcmFjZXJz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU1MTNBNjFENUE2ODJDMDBDMzJCRDggLyogRnJlZUxp
c3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjU4NUUxMUVFMDgwNUEwMDk1MTc2RCAvKiBGcmVl
TGlzdElubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAtOTExOSw2ICs5MTQ1LDcgQEAKIAkJCQk3
MDEzQ0E4QzFCNDkxQTk0MDBDQUU2MTMgLyogSlNKb2IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
MThDNDE2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0xleGljYWxFbnZpcm9ubWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMxOEM0MjMwRTE2RjVDRDAwQjM0NDYwIC8qIEpTTG9jay5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEY0NEE3QjAyMEJGNjg2MjAwMjJCMTcxIC8qIEV4aXRGbGFnLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDMjVENzA5QzE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTJBNEJCN0YzMThBNDExNzkwMDhBMEZDRCAvKiBKU01hbmFn
ZWRWYWx1ZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzAwODc0MjE3Q0JFOEVCMDBD
M0U2NDMgLyogSlNNYXAuaCBpbiBIZWFkZXJzICovLApAQCAtOTQzNSw2ICs5NDYyLDcgQEAKIAkJ
CQlBNzI5OURBMjE3RDEyODQ4MDA1RjVGRjkgLyogU2V0UHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkVFOTg0MTFBODg2NUI3MDA3NTRFOTMgLyogU2V0dXBWYXJhcmdzRnJhbWUuaCBp
biBIZWFkZXJzICovLAogCQkJCURDMTdFODE4MUM5QzkxRDkwMDhBNkFCMyAvKiBTaGFkb3dDaGlj
a2VuLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ0QTdCNDIwQkY2OEQ5MDAyMkIxNzEgLyogVGVy
bWluYXRlZENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCURDMTdFODE5MUM5QzkxREIw
MDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUz
MDIyRDMxRTNENzNBNTAwQkFDNDkzIC8qIFNpZ2lsbENyYXNoQW5hbHl6ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNEQ4Qzc4MUZDQTNDRkEwMDFEMzJBQyAvKiBTaW1wbGVNYXJraW5nQ29uc3Ry
YWludC5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnlWYWxJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5VmFsSW5mby5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2NiwxMiArMjY2LDYg
QEAgaW5saW5lIHVuc2lnbmVkIGdldEJ5VmFsSW5mb0J5dGVjb2RlSW5kZQogICAgIHJldHVybiBp
bmZvLT5ieXRlY29kZUluZGV4OwogfQogCi10eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdpbiwgQnlW
YWxJbmZvKiwgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFzaD4gQnlWYWxJbmZvTWFwOwotCi0jZWxz
ZSAvLyBFTkFCTEUoSklUKQotCi10eXBlZGVmIEhhc2hNYXA8aW50LCB2b2lkKj4gQnlWYWxJbmZv
TWFwOwotCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5j
cHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUR1bXBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4K
LSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyNyw3ICs0MjcsNyBAQCBzdGF0
aWMgdm9pZCBkdW1wQ2hhaW4oUHJpbnRTdHJlYW0mIG91dCwgCiB9CiAKIHRlbXBsYXRlPGNsYXNz
IEJsb2NrPgotdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50R2V0QnlJZENhY2hlU3Rh
dHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgU3R1YkluZm9NYXAmIG1h
cCkKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhQ
cmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNN
YXApCiB7CiAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNCZWdpbigp
ICsgbG9jYXRpb247CiAKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJs
b2NrPjo6cHJpbnRHZXRCeUlkCiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJQdHIgPSBtYXAuZ2V0KENvZGVPcmlnaW4obG9jYXRpb24pKSkg
eworICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YlB0ciA9IHN0YXR1c01hcC5nZXQoQ29k
ZU9yaWdpbihsb2NhdGlvbikpLnN0dWJJbmZvKSB7CiAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZv
JiBzdHViSW5mbyA9ICpzdHViUHRyOwogICAgICAgICBpZiAoc3R1YkluZm8ucmVzZXRCeUdDKQog
ICAgICAgICAgICAgb3V0LnByaW50KCIgKFJlc2V0IEJ5IEdDKSIpOwpAQCAtNDg4LDEyICs0ODgs
MTIgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50R2V0QnlJZAogICAgICAgICBv
dXQucHJpbnRmKCIpIik7CiAgICAgfQogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0obWFwKTsKKyAg
ICBVTlVTRURfUEFSQU0oc3RhdHVzTWFwKTsKICNlbmRpZgogfQogCiB0ZW1wbGF0ZTxjbGFzcyBC
bG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludFB1dEJ5SWRDYWNoZVN0YXR1
cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IFN0dWJJbmZvTWFwJiBtYXAp
Cit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRQdXRCeUlkQ2FjaGVTdGF0dXMoUHJp
bnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFw
KQogewogICAgIGNvbnN0IGF1dG8qIGluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zQmVnaW4oKSAr
IGxvY2F0aW9uOwogCkBAIC01MjEsNyArNTIxLDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9j
az46OnByaW50UHV0QnlJZAogICAgIH0KIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViUHRyID0gbWFwLmdldChDb2RlT3JpZ2luKGxvY2F0aW9uKSkpIHsK
KyAgICBpZiAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJQdHIgPSBzdGF0dXNNYXAuZ2V0KENvZGVP
cmlnaW4obG9jYXRpb24pKS5zdHViSW5mbykgewogICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYg
c3R1YkluZm8gPSAqc3R1YlB0cjsKICAgICAgICAgaWYgKHN0dWJJbmZvLnJlc2V0QnlHQykKICAg
ICAgICAgICAgIG91dC5wcmludCgiIChSZXNldCBCeSBHQykiKTsKQEAgLTU0NywxMiArNTQ3LDEy
IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludFB1dEJ5SWQKICAgICAgICAgb3V0
LnByaW50ZigiKSIpOwogICAgIH0KICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKG1hcCk7CisgICAg
VU5VU0VEX1BBUkFNKHN0YXR1c01hcCk7CiAjZW5kaWYKIH0KIAogdGVtcGxhdGU8Y2xhc3MgQmxv
Y2s+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRJbkJ5SWRDYWNoZVN0YXR1cyhQ
cmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IFN0dWJJbmZvTWFwJiBtYXApCit2
b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRJbkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0
cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7
CiAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNCZWdpbigpICsgbG9j
YXRpb247CiAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6
cHJpbnRJbkJ5SWRDCiAgICAgVU5VU0VEX1BBUkFNKGlkZW50KTsgLy8gdGVsbCB0aGUgY29tcGls
ZXIgdG8gc2h1dCB1cCBpbiBjZXJ0YWluIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb25zLgogCiAjaWYg
RU5BQkxFKEpJVCkKLSAgICBpZiAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJQdHIgPSBtYXAuZ2V0
KENvZGVPcmlnaW4obG9jYXRpb24pKSkgeworICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YlB0ciA9IHN0YXR1c01hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpLnN0dWJJbmZvKSB7CiAg
ICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9ICpzdHViUHRyOwogICAgICAgICBp
ZiAoc3R1YkluZm8ucmVzZXRCeUdDKQogICAgICAgICAgICAgb3V0LnByaW50KCIgKFJlc2V0IEJ5
IEdDKSIpOwpAQCAtNjAwLDI2ICs2MDAsMjYgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46
OnByaW50SW5CeUlkQwogICAgIH0KICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG91dCk7Ci0gICAg
VU5VU0VEX1BBUkFNKG1hcCk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXR1c01hcCk7CiAjZW5kaWYK
IH0KIAogI2lmIEVOQUJMRShKSVQpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaz4KLXZvaWQgQnl0
ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQ2FsbExpbmtTdGF0dXMoUHJpbnRTdHJlYW0mLCB1bnNp
Z25lZCwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJikKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+
OjpkdW1wQ2FsbExpbmtTdGF0dXMoUHJpbnRTdHJlYW0mLCB1bnNpZ25lZCwgY29uc3QgSUNTdGF0
dXNNYXAmKQogewogfQogCiB0ZW1wbGF0ZTw+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9j
az46OmR1bXBDYWxsTGlua1N0YXR1cyhQcmludFN0cmVhbSYgb3V0LCB1bnNpZ25lZCBsb2NhdGlv
biwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBtYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPENvZGVC
bG9jaz46OmR1bXBDYWxsTGlua1N0YXR1cyhQcmludFN0cmVhbSYgb3V0LCB1bnNpZ25lZCBsb2Nh
dGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBpZiAoYmxvY2soKS0+
aml0VHlwZSgpICE9IEpJVENvZGU6OkZUTEpJVCkKLSAgICAgICAgb3V0LnByaW50KCIgc3RhdHVz
KCIsIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKGJsb2NrKCksIGxvY2F0aW9uLCBtYXApLCAi
KSIpOworICAgICAgICBvdXQucHJpbnQoIiBzdGF0dXMoIiwgQ2FsbExpbmtTdGF0dXM6OmNvbXB1
dGVGb3IoYmxvY2soKSwgbG9jYXRpb24sIHN0YXR1c01hcCksICIpIik7CiB9CiAjZW5kaWYKIAog
dGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRD
YWxsT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCB0eXBlbmFtZSBCbG9j
azo6SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgY2hhciogb3AsIENhY2hlRHVtcE1vZGUgY2FjaGVE
dW1wTW9kZSwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZywgY29uc3QgQ2FsbExpbmtJbmZvTWFw
JiBtYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRDYWxsT3AoUHJpbnRTdHJl
YW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24q
JiBpdCwgY29uc3QgY2hhciogb3AsIENhY2hlRHVtcE1vZGUgY2FjaGVEdW1wTW9kZSwgYm9vbCYg
aGFzUHJpbnRlZFByb2ZpbGluZywgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKICAg
ICBpbnQgZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgaW50IGZ1bmMgPSAoKytpdCktPnUu
b3BlcmFuZDsKQEAgLTYzOCw3ICs2MzgsNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6
cHJpbnRDYWxsT3AoCiAgICAgICAgICAgICAgICAgb3V0LnByaW50ZigiIGxsaW50KCVwKSIsIG9i
amVjdCk7CiAgICAgICAgIH0KICNpZiBFTkFCTEUoSklUKQotICAgICAgICBpZiAoQ2FsbExpbmtJ
bmZvKiBpbmZvID0gbWFwLmdldChDb2RlT3JpZ2luKGxvY2F0aW9uKSkpIHsKKyAgICAgICAgaWYg
KENhbGxMaW5rSW5mbyogaW5mbyA9IHN0YXR1c01hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikp
LmNhbGxMaW5rSW5mbykgewogICAgICAgICAgICAgaWYgKGluZm8tPmhhdmVMYXN0U2VlbkNhbGxl
ZSgpKSB7CiAgICAgICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGluZm8tPmxhc3RTZWVu
Q2FsbGVlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGZ1bmN0aW9uID0ganNEeW5hbWlj
Q2FzdDxKU0Z1bmN0aW9uKj4oKnZtKCksIG9iamVjdCkpCkBAIC02NDgsOSArNjQ4LDkgQEAgdm9p
ZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50Q2FsbE9wKAogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKLSAgICAgICAgZHVtcENhbGxMaW5rU3RhdHVzKG91dCwgbG9jYXRpb24sIG1hcCk7
CisgICAgICAgIGR1bXBDYWxsTGlua1N0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdGF0dXNNYXApOwog
I2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKG1hcCk7CisgICAgICAgIFVOVVNFRF9QQVJBTShz
dGF0dXNNYXApOwogI2VuZGlmCiAgICAgfQogICAgICsraXQ7CkBAIC02NzgsNyArNjc4LDcgQEAg
dm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50TG9jYXRpbwogfQogCiB0ZW1wbGF0ZTxj
bGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUoUHJp
bnRTdHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiBiZWdpbiwg
Y29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFw
JiBzdHViSW5mb3MsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYgY2FsbExpbmtJbmZvcykKK3ZvaWQg
Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29u
c3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgdHlwZW5hbWUgQmxv
Y2s6Okluc3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAg
ICAgaW50IGxvY2F0aW9uID0gaXQgLSBiZWdpbjsKICAgICBib29sIGhhc1ByaW50ZWRQcm9maWxp
bmcgPSBmYWxzZTsKQEAgLTEwNzEsNyArMTA3MSw3IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8Qmxv
Y2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwog
ICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJpbl9ieV9pZCIp
OwogICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBpZGVudGlmaWVyKGlkMCkp
LmRhdGEoKSk7Ci0gICAgICAgIHByaW50SW5CeUlkQ2FjaGVTdGF0dXMob3V0LCBsb2NhdGlvbiwg
c3R1YkluZm9zKTsKKyAgICAgICAgcHJpbnRJbkJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9u
LCBzdGF0dXNNYXApOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBvcF9pbl9ieV92
YWw6IHsKQEAgLTEwOTUsNyArMTA5NSw3IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpk
dW1wQnl0ZWNvZGUKICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0
LCAiZ2V0X2J5X2lkX2RpcmVjdCIpOwogICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzIiwg
cmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBpZE5hbWUo
aWQwLCBpZGVudGlmaWVyKGlkMCkpLmRhdGEoKSk7CiAgICAgICAgIGl0ICs9IDI7IC8vIEluY3Jl
bWVudCB1cCB0byB0aGUgdmFsdWUgcHJvZmlsZXIuCi0gICAgICAgIHByaW50R2V0QnlJZENhY2hl
U3RhdHVzKG91dCwgbG9jYXRpb24sIHN0dWJJbmZvcyk7CisgICAgICAgIHByaW50R2V0QnlJZENh
Y2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0YXR1c01hcCk7CiAgICAgICAgIGR1bXBWYWx1ZVBy
b2ZpbGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQpAQCAtMTEwNCw3ICsxMTA0LDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1
bXBCeXRlY29kZQogICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3Vuc2V0OgogICAgIGNhc2Ugb3BfZ2V0
X2FycmF5X2xlbmd0aDogewogICAgICAgICBwcmludEdldEJ5SWRPcChvdXQsIGxvY2F0aW9uLCBp
dCk7Ci0gICAgICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0dWJJ
bmZvcyk7CisgICAgICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0
YXR1c01hcCk7CiAgICAgICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQcmludGVk
UHJvZmlsaW5nKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTEzMCw3ICsxMTMwLDcgQEAg
dm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZQogICAgIH0KICAgICBjYXNl
IG9wX3B1dF9ieV9pZDogewogICAgICAgICBwcmludFB1dEJ5SWRPcChvdXQsIGxvY2F0aW9uLCBp
dCwgInB1dF9ieV9pZCIpOwotICAgICAgICBwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxv
Y2F0aW9uLCBzdHViSW5mb3MpOworICAgICAgICBwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhvdXQs
IGxvY2F0aW9uLCBzdGF0dXNNYXApOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBv
cF9wdXRfYnlfaWRfd2l0aF90aGlzOiB7CkBAIC0xNDc2LDE1ICsxNDc2LDE1IEBAIHZvaWQgQnl0
ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIGNhc2Ugb3BfY2FsbDogewotICAgICAgICBwcmludENhbGxPcChvdXQsIGxvY2F0aW9uLCBp
dCwgImNhbGwiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmlsaW5nLCBjYWxsTGlua0luZm9z
KTsKKyAgICAgICAgcHJpbnRDYWxsT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJjYWxsIiwgRHVtcENh
Y2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgc3RhdHVzTWFwKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIGNhc2Ugb3BfdGFpbF9jYWxsOiB7Ci0gICAgICAgIHByaW50Q2FsbE9wKG91dCwg
bG9jYXRpb24sIGl0LCAidGFpbF9jYWxsIiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGlu
ZywgY2FsbExpbmtJbmZvcyk7CisgICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0
LCAidGFpbF9jYWxsIiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgc3RhdHVzTWFw
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3BfY2FsbF9ldmFsOiB7Ci0gICAg
ICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAiY2FsbF9ldmFsIiwgRG9udER1bXBD
YWNoZXMsIGhhc1ByaW50ZWRQcm9maWxpbmcsIGNhbGxMaW5rSW5mb3MpOworICAgICAgICBwcmlu
dENhbGxPcChvdXQsIGxvY2F0aW9uLCBpdCwgImNhbGxfZXZhbCIsIERvbnREdW1wQ2FjaGVzLCBo
YXNQcmludGVkUHJvZmlsaW5nLCBzdGF0dXNNYXApOwogICAgICAgICBicmVhazsKICAgICB9CiAK
QEAgLTE1MjMsNyArMTUyMyw3IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0
ZWNvZGUKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3BfY29uc3RydWN0OiB7Ci0g
ICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAiY29uc3RydWN0IiwgRHVtcENh
Y2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgY2FsbExpbmtJbmZvcyk7CisgICAgICAgIHByaW50
Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAiY29uc3RydWN0IiwgRHVtcENhY2hlcywgaGFzUHJp
bnRlZFByb2ZpbGluZywgc3RhdHVzTWFwKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNh
c2Ugb3Bfc3RyY2F0OiB7CkBAIC0xNzc4LDEwICsxNzc4LDEwIEBAIHZvaWQgQnl0ZWNvZGVEdW1w
ZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKIH0KIAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lk
IEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJ5dGVjb2RlKEJsb2NrKiBibG9jaywgUHJpbnRT
dHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiBiZWdpbiwgY29u
c3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiBz
dHViSW5mb3MsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYgY2FsbExpbmtJbmZvcykKK3ZvaWQgQnl0
ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUoQmxvY2sqIGJsb2NrLCBQcmludFN0cmVh
bSYgb3V0LCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCB0
eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1
c01hcCkKIHsKICAgICBCeXRlY29kZUR1bXBlciBkdW1wZXIoYmxvY2ssIGJlZ2luKTsKLSAgICBk
dW1wZXIuZHVtcEJ5dGVjb2RlKG91dCwgYmVnaW4sIGl0LCBzdHViSW5mb3MsIGNhbGxMaW5rSW5m
b3MpOworICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0LCBiZWdpbiwgaXQsIHN0YXR1c01hcCk7
CiB9CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgpAQCAtMTg5MCw3ICsxODkwLDcgQEAgdm9pZCBC
eXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBTdHJpbmdTdwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBC
bG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQmxvY2soQmxvY2sqIGJsb2Nr
LCBjb25zdCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9u
cywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgU3R1YkluZm9NYXAmIHN0dWJJbmZvcywgY29uc3Qg
Q2FsbExpbmtJbmZvTWFwJiBjYWxsTGlua0luZm9zKQordm9pZCBCeXRlY29kZUR1bXBlcjxCbG9j
az46OmR1bXBCbG9jayhCbG9jayogYmxvY2ssIGNvbnN0IHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tl
ZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJQ1N0
YXR1c01hcCYgc3RhdHVzTWFwKQogewogICAgIHNpemVfdCBpbnN0cnVjdGlvbkNvdW50ID0gMDsK
IApAQCAtMTkxMCw3ICsxOTEwLDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBC
bG9jayhCbAogICAgIGNvbnN0IGF1dG8qIGVuZCA9IGluc3RydWN0aW9ucy5lbmQoKTsKICAgICBC
eXRlY29kZUR1bXBlcjxCbG9jaz4gZHVtcGVyKGJsb2NrLCBiZWdpbik7CiAgICAgZm9yIChjb25z
dCBhdXRvKiBpdCA9IGJlZ2luOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGR1bXBlci5kdW1w
Qnl0ZWNvZGUob3V0LCBiZWdpbiwgaXQsIHN0dWJJbmZvcywgY2FsbExpbmtJbmZvcyk7CisgICAg
ICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0LCBiZWdpbiwgaXQsIHN0YXR1c01hcCk7CiAKICAg
ICBkdW1wZXIuZHVtcElkZW50aWZpZXJzKG91dCk7CiAgICAgZHVtcGVyLmR1bXBDb25zdGFudHMo
b3V0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUR1bXBlci5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8q
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNiArMjcsNyBAQAogI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJDYWxsTGlua0luZm8uaCIKKyNpbmNsdWRlICJJQ1N0YXR1
c01hcC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAKIG5hbWVzcGFjZSBKU0Mg
ewpAQCAtMzcsOCArMzksOCBAQCBjbGFzcyBCeXRlY29kZUR1bXBlciB7CiBwdWJsaWM6CiAgICAg
dHlwZWRlZiB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24gSW5zdHJ1Y3Rpb247CiAKLSAgICBz
dGF0aWMgdm9pZCBkdW1wQnl0ZWNvZGUoQmxvY2sqLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJ
bnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IFN0dWJJbmZv
TWFwJiA9IFN0dWJJbmZvTWFwKCksIGNvbnN0IENhbGxMaW5rSW5mb01hcCYgPSBDYWxsTGlua0lu
Zm9NYXAoKSk7Ci0gICAgc3RhdGljIHZvaWQgZHVtcEJsb2NrKEJsb2NrKiwgY29uc3QgdHlwZW5h
bWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiwgUHJpbnRTdHJlYW0mIG91dCwgY29uc3Qg
U3R1YkluZm9NYXAmID0gU3R1YkluZm9NYXAoKSwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiA9IENh
bGxMaW5rSW5mb01hcCgpKTsKKyAgICBzdGF0aWMgdm9pZCBkdW1wQnl0ZWNvZGUoQmxvY2sqLCBQ
cmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0
aW9uKiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXAgPSBJQ1N0YXR1c01hcCgpKTsK
KyAgICBzdGF0aWMgdm9pZCBkdW1wQmxvY2soQmxvY2sqLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6
VW5wYWNrZWRJbnN0cnVjdGlvbnMmLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJQ1N0YXR1c01h
cCYgc3RhdHVzTWFwID0gSUNTdGF0dXNNYXAoKSk7CiAKIHByaXZhdGU6CiAgICAgQnl0ZWNvZGVE
dW1wZXIoQmxvY2sqIGJsb2NrLCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4p
CkBAIC02OSwxNCArNzEsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByaW50Q29uZGl0aW9uYWxK
dW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiwgY29uc3QgSW5zdHJ1Y3Rp
b24qJiBpdCwgaW50IGxvY2F0aW9uLCBjb25zdCBjaGFyKiBvcCk7CiAgICAgdm9pZCBwcmludENv
bXBhcmVKdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiwgY29uc3QgSW5z
dHJ1Y3Rpb24qJiBpdCwgaW50IGxvY2F0aW9uLCBjb25zdCBjaGFyKiBvcCk7CiAgICAgdm9pZCBw
cmludEdldEJ5SWRPcChQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3Ry
dWN0aW9uKiYgaXQpOwotICAgIHZvaWQgcHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJl
YW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBTdHViSW5mb01hcCYpOwotICAgIHZvaWQgcHJp
bnRQdXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25z
dCBTdHViSW5mb01hcCYpOwotICAgIHZvaWQgcHJpbnRJbkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0
cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IFN0dWJJbmZvTWFwJik7CisgICAgdm9pZCBw
cmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNv
bnN0IElDU3RhdHVzTWFwJik7CisgICAgdm9pZCBwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhQcmlu
dFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IElDU3RhdHVzTWFwJik7CisgICAgdm9p
ZCBwcmludEluQnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlvbiwg
Y29uc3QgSUNTdGF0dXNNYXAmKTsKICAgICBlbnVtIENhY2hlRHVtcE1vZGUgeyBEdW1wQ2FjaGVz
LCBEb250RHVtcENhY2hlcyB9OwotICAgIHZvaWQgcHJpbnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91
dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCwg
Q2FjaGVEdW1wTW9kZSwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZywgY29uc3QgQ2FsbExpbmtJ
bmZvTWFwJik7CisgICAgdm9pZCBwcmludENhbGxPcChQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9j
YXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IGNoYXIqIG9wLCBDYWNoZUR1bXBN
b2RlLCBib29sJiBoYXNQcmludGVkUHJvZmlsaW5nLCBjb25zdCBJQ1N0YXR1c01hcCYpOwogICAg
IHZvaWQgcHJpbnRQdXRCeUlkT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25z
dCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCk7CiAgICAgdm9pZCBwcmludExvY2F0
aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBj
b25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCwgaW50IG9wZXJhbmQpOwotICAg
IHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiBi
ZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgU3R1YkluZm9NYXAmLCBjb25zdCBD
YWxsTGlua0luZm9NYXAmKTsKKyAgICB2b2lkIGR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0
LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0
IElDU3RhdHVzTWFwJik7CiAKICAgICB2b2lkIGR1bXBWYWx1ZVByb2ZpbGluZyhQcmludFN0cmVh
bSYsIGNvbnN0IEluc3RydWN0aW9uKiYsIGJvb2wmIGhhc1ByaW50ZWRQcm9maWxpbmcpOwogICAg
IHZvaWQgZHVtcEFycmF5UHJvZmlsaW5nKFByaW50U3RyZWFtJiwgY29uc3QgSW5zdHJ1Y3Rpb24q
JiwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZyk7CkBAIC04NSw3ICs4Nyw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCogYWN0dWFsUG9pbnRlckZvcihTcGVjaWFsOjpQb2ludGVyKSBjb25zdDsKIAog
I2lmIEVOQUJMRShKSVQpCi0gICAgdm9pZCBkdW1wQ2FsbExpbmtTdGF0dXMoUHJpbnRTdHJlYW0m
LCB1bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJik7CisgICAgdm9pZCBk
dW1wQ2FsbExpbmtTdGF0dXMoUHJpbnRTdHJlYW0mLCB1bnNpZ25lZCBsb2NhdGlvbiwgY29uc3Qg
SUNTdGF0dXNNYXAmKTsKICNlbmRpZgogCiAgICAgQmxvY2sqIG1fYmxvY2s7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAy
MzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM1MiwxMiArMzUyLDYgQEAgaW5saW5lIENvZGVPcmlnaW4gZ2V0
Q2FsbExpbmtJbmZvQ29kZU9yaQogICAgIHJldHVybiBjYWxsTGlua0luZm8uY29kZU9yaWdpbigp
OwogfQogCi10eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdpbiwgQ2FsbExpbmtJbmZvKiwgQ29kZU9y
aWdpbkFwcHJveGltYXRlSGFzaD4gQ2FsbExpbmtJbmZvTWFwOwotCi0jZWxzZSAvLyBFTkFCTEUo
SklUKQotCi10eXBlZGVmIEhhc2hNYXA8aW50LCB2b2lkKj4gQ2FsbExpbmtJbmZvTWFwOwotCiAj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHJldmlz
aW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0
YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDggQEAgQ2FsbExpbmtTdGF0dXMg
Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcgogfQogCiBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0
YXR1czo6Y29tcHV0ZUZvcigKLSAgICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVk
IGJ5dGVjb2RlSW5kZXgsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYgbWFwKQorICAgIENvZGVCbG9j
ayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgY29uc3QgSUNTdGF0dXNN
YXAmIG1hcCwKKyAgICBFeGl0U2l0ZURhdGEgZXhpdFNpdGVEYXRhKQogewogICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKICAgICAKQEAgLTg1LDkg
Kzg2LDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGbwogICAgIFVO
VVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICAgICBVTlVTRURfUEFSQU0obWFwKTsKICNpZiBF
TkFCTEUoREZHX0pJVCkKLSAgICBFeGl0U2l0ZURhdGEgZXhpdFNpdGVEYXRhID0gY29tcHV0ZUV4
aXRTaXRlRGF0YShwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4KTsKLSAgICAKLSAgICBDYWxs
TGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4
KSk7CisgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBtYXAuZ2V0KENvZGVPcmlnaW4o
Ynl0ZWNvZGVJbmRleCkpLmNhbGxMaW5rSW5mbzsKICAgICBpZiAoIWNhbGxMaW5rSW5mbykgewog
ICAgICAgICBpZiAoZXhpdFNpdGVEYXRhLnRha2VzU2xvd1BhdGgpCiAgICAgICAgICAgICByZXR1
cm4gdGFrZXNTbG93UGF0aCgpOwpAQCAtMTAwLDYgKzk5LDEyIEBAIENhbGxMaW5rU3RhdHVzIENh
bGxMaW5rU3RhdHVzOjpjb21wdXRlRm8KICNlbmRpZgogfQogCitDYWxsTGlua1N0YXR1cyBDYWxs
TGlua1N0YXR1czo6Y29tcHV0ZUZvcigKKyAgICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXgsIGNvbnN0IElDU3RhdHVzTWFwJiBtYXApCit7CisgICAgcmV0
dXJuIGNvbXB1dGVGb3IocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgbWFwLCBjb21wdXRl
RXhpdFNpdGVEYXRhKHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpKTsKK30KKwogQ2FsbExp
bmtTdGF0dXM6OkV4aXRTaXRlRGF0YSBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0
YShDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiB7CiAg
ICAgRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YTsKQEAgLTEwNywxMSArMTEyLDIxIEBAIENhbGxM
aW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgQ2FsbExpbmtTdGEKICAgICBVbmxpbmtlZENvZGVCbG9j
ayogY29kZUJsb2NrID0gcHJvZmlsZWRCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKTsKICAgICBD
b25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKIAotICAgIGV4aXRT
aXRlRGF0YS50YWtlc1Nsb3dQYXRoID0KLSAgICAgICAgY29kZUJsb2NrLT5oYXNFeGl0U2l0ZShs
b2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRUeXBlKSkKLSAg
ICAgICAgfHwgY29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0
U2l0ZShieXRlY29kZUluZGV4LCBCYWRFeGVjdXRhYmxlKSk7Ci0gICAgZXhpdFNpdGVEYXRhLmJh
ZEZ1bmN0aW9uID0KLSAgICAgICAgY29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6
RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRDZWxsKSk7CisgICAgYXV0byB0YWtl
c1Nsb3dQYXRoID0gWyZdIChFeGl0aW5nSW5saW5lS2luZCBpbmxpbmVLaW5kKSAtPiBFeGl0Rmxh
ZyB7CisgICAgICAgIHJldHVybiBFeGl0RmxhZygKKyAgICAgICAgICAgIGNvZGVCbG9jay0+aGFz
RXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFk
VHlwZSwgRXhpdEZyb21Bbnl0aGluZywgaW5saW5lS2luZCkpCisgICAgICAgICAgICB8fCBjb2Rl
QmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2Rl
SW5kZXgsIEJhZEV4ZWN1dGFibGUsIEV4aXRGcm9tQW55dGhpbmcsIGlubGluZUtpbmQpKSwKKyAg
ICAgICAgICAgIGlubGluZUtpbmQpOworICAgIH07CisgICAgCisgICAgYXV0byBiYWRGdW5jdGlv
biA9IFsmXSAoRXhpdGluZ0lubGluZUtpbmQgaW5saW5lS2luZCkgLT4gRXhpdEZsYWcgeworICAg
ICAgICByZXR1cm4gRXhpdEZsYWcoY29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6
RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRDZWxsLCBFeGl0RnJvbUFueXRoaW5n
LCBpbmxpbmVLaW5kKSksIGlubGluZUtpbmQpOworICAgIH07CisgICAgCisgICAgZXhpdFNpdGVE
YXRhLnRha2VzU2xvd1BhdGggfD0gdGFrZXNTbG93UGF0aChFeGl0RnJvbU5vdElubGluZWQpOwor
ICAgIGV4aXRTaXRlRGF0YS50YWtlc1Nsb3dQYXRoIHw9IHRha2VzU2xvd1BhdGgoRXhpdEZyb21J
bmxpbmVkKTsKKyAgICBleGl0U2l0ZURhdGEuYmFkRnVuY3Rpb24gfD0gYmFkRnVuY3Rpb24oRXhp
dEZyb21Ob3RJbmxpbmVkKTsKKyAgICBleGl0U2l0ZURhdGEuYmFkRnVuY3Rpb24gfD0gYmFkRnVu
Y3Rpb24oRXhpdEZyb21JbmxpbmVkKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVk
QmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKQEAgLTIyNyw4MyArMjQy
LDU0IEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnIKIAogQ2FsbExp
bmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJiBsb2NrZXIsIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgQ2FsbExpbmtJbmZv
JiBjYWxsTGlua0luZm8sCi0gICAgRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YSkKKyAgICBFeGl0
U2l0ZURhdGEgZXhpdFNpdGVEYXRhLCBFeGl0aW5nSW5saW5lS2luZCBpbmxpbmVLaW5kKQogewog
ICAgIENhbGxMaW5rU3RhdHVzIHJlc3VsdCA9IGNvbXB1dGVGb3IobG9ja2VyLCBwcm9maWxlZEJs
b2NrLCBjYWxsTGlua0luZm8pOwotICAgIGlmIChleGl0U2l0ZURhdGEuYmFkRnVuY3Rpb24pIHsK
LSAgICAgICAgaWYgKHJlc3VsdC5pc0Jhc2VkT25TdHViKCkpIHsKKyAgICByZXN1bHQuYWNjb3Vu
dEZvckV4aXRzKGV4aXRTaXRlZGF0YSwgaW5saW5lS2luZCk7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKyNlbmRpZgorCit2b2lkIENhbGxMaW5rU3RhdHVzOjphY2NvdW50Rm9yRXhpdHMoRXhpdFNp
dGVEYXRhIGV4aXRTaXRlRGF0YSwgRXhpdGluZ0lubGluZUtpbmQgaW5saW5lS2luZCkKK3sKKyAg
ICBpZiAoZXhpdFNpdGVEYXRhLmJhZEZ1bmN0aW9uLmlzU2V0KGlubGluZUtpbmQpKSB7CisgICAg
ICAgIGlmIChpc0Jhc2VkT25TdHViKCkpIHsKICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYSBw
b2x5bW9ycGhpYyBzdHViLCB0aGVuIGhhdmluZyBhbiBleGl0IHNpdGUgaXMgbm90IHF1aXRlIHNv
IHVzZWZ1bC4gSW4KICAgICAgICAgICAgIC8vIG1vc3QgY2FzZXMsIHRoZSBpbmZvcm1hdGlvbiBp
biB0aGUgc3R1YiBoYXMgaGlnaGVyIGZpZGVsaXR5LgotICAgICAgICAgICAgcmVzdWx0Lm1ha2VD
bG9zdXJlQ2FsbCgpOworICAgICAgICAgICAgbWFrZUNsb3N1cmVDYWxsKCk7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAvLyBXZSBtaWdodCBub3QgaGF2ZSBhIHBvbHltb3JwaGljIHN0
dWIgZm9yIGFueSBudW1iZXIgb2YgcmVhc29ucy4gV2hlbiB0aGlzIGhhcHBlbnMsIHdlCiAgICAg
ICAgICAgICAvLyBhcmUgaW4gbGVzcyBjZXJ0YWluIHRlcnJpdG9yeSwgc28gZXhpdCBzaXRlcyBt
ZWFuIGEgbG90LgotICAgICAgICAgICAgcmVzdWx0Lm1fY291bGRUYWtlU2xvd1BhdGggPSB0cnVl
OworICAgICAgICAgICAgbV9jb3VsZFRha2VTbG93UGF0aCA9IHRydWU7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgaWYgKGV4aXRTaXRlRGF0YS50YWtlc1Nsb3dQYXRoKQotICAgICAgICByZXN1bHQu
bV9jb3VsZFRha2VTbG93UGF0aCA9IHRydWU7CiAgICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICBpZiAoZXhpdFNpdGVEYXRhLnRha2VzU2xvd1BhdGguaXNTZXQoaW5saW5lS2luZCkpCisgICAg
ICAgIG1fY291bGRUYWtlU2xvd1BhdGggPSB0cnVlOwogfQotI2VuZGlmCiAKLXZvaWQgQ2FsbExp
bmtTdGF0dXM6OmNvbXB1dGVERkdTdGF0dXNlcygKLSAgICBDb2RlQmxvY2sqIGRmZ0NvZGVCbG9j
aywgQ2FsbExpbmtTdGF0dXM6OkNvbnRleHRNYXAmIG1hcCkKK0NhbGxMaW5rU3RhdHVzIENhbGxM
aW5rU3RhdHVzOjpjb21wdXRlRm9yKAorICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luLAorICAgIGNvbnN0IElDU3RhdHVzTWFwJiBiYXNlbGluZU1hcCwg
Y29uc3QgSUNTdGF0dXNDb250ZXh0U3RhY2smIG9wdGltaXplZFN0YWNrKQogewotI2lmIEVOQUJM
RShERkdfSklUKQotICAgIFJFTEVBU0VfQVNTRVJUKGRmZ0NvZGVCbG9jay0+aml0VHlwZSgpID09
IEpJVENvZGU6OkRGR0pJVCk7Ci0gICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IGRm
Z0NvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKTsKLSAgICBmb3IgKGF1dG8gaXRlciA9IGRmZ0NvZGVC
bG9jay0+Y2FsbExpbmtJbmZvc0JlZ2luKCk7ICEhaXRlcjsgKytpdGVyKSB7Ci0gICAgICAgIENh
bGxMaW5rSW5mbyYgaW5mbyA9ICoqaXRlcjsKLSAgICAgICAgaWYgKGluZm8uaXNEaXJlY3QoKSkg
ewotICAgICAgICAgICAgLy8gSWYgdGhlIERGRyB3YXMgYWJsZSB0byBnZXQgYSBkaXJlY3QgY2Fs
bCB0aGVuIHByb2JhYmx5IHNvIHdpbGwgd2UuIEhvd2V2ZXIsIHRoZXJlIGlzCi0gICAgICAgICAg
ICAvLyBhIHJlbW90ZSBjaGFuY2UgdGhhdCBpdCdzIGJhZCBuZXdzIHRvIGxvc2UgaW5mb3JtYXRp
b24gYWJvdXQgd2hhdCB0aGUgREZHIGRpZC4gV2UnZAotICAgICAgICAgICAgLy8gaWRlYWxseSBs
aWtlIHRvIGp1c3Qga25vdyB0aGF0IHRoZSBERkcgaGFkIGVtaXR0ZWQgYSBEaXJlY3RDYWxsLgot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luID0gaW5mby5jb2RlT3JpZ2luKCk7Ci0gICAgICAgIAotICAgICAgICAvLyBDaGVjayBp
ZiB3ZSBoYWQgYWxyZWFkeSBwcmV2aW91c2x5IG1hZGUgYSB0ZXJyaWJsZSBtaXN0YWtlIGluIHRo
ZSBGVEwgZm9yIHRoaXMKLSAgICAgICAgLy8gY29kZSBvcmlnaW4uIE5vdGUgdGhhdCB0aGlzIGlz
IGFwcHJveGltYXRlIGJlY2F1c2Ugd2UgY291bGQgaGF2ZSBhIG1vbm92YXJpYW50Ci0gICAgICAg
IC8vIGlubGluZSBpbiB0aGUgRlRMIHRoYXQgZW5kZWQgdXAgZmFpbGluZy4gV2Ugc2hvdWxkIGZp
eCB0aGF0IGF0IHNvbWUgcG9pbnQgYnkKLSAgICAgICAgLy8gaGF2aW5nIGRhdGEgc3RydWN0dXJl
cyB0byB0cmFjayB0aGUgY29udGV4dCBvZiBmcmVxdWVudCBleGl0cy4gVGhpcyBpcyBjdXJyZW50
bHkKLSAgICAgICAgLy8gY2hhbGxlbmdpbmcgYmVjYXVzZSBpdCB3b3VsZCByZXF1aXJlIGNyZWF0
aW5nIGEgQ29kZU9yaWdpbi1iYXNlZCBkYXRhYmFzZSBpbgotICAgICAgICAvLyBiYXNlbGluZSBD
b2RlQmxvY2tzLCBidXQgdGhvc2UgQ29kZUJsb2NrcyBkb24ndCByZWFsbHkgaGF2ZSBhIHBsYWNl
IHRvIHB1dCB0aGUKLSAgICAgICAgLy8gSW5saW5lQ2FsbEZyYW1lcy4KLSAgICAgICAgQ29kZUJs
b2NrKiBjdXJyZW50QmFzZWxpbmUgPQotICAgICAgICAgICAgYmFzZWxpbmVDb2RlQmxvY2tGb3JP
cmlnaW5BbmRCYXNlbGluZUNvZGVCbG9jayhjb2RlT3JpZ2luLCBiYXNlbGluZUNvZGVCbG9jayk7
Ci0gICAgICAgIEV4aXRTaXRlRGF0YSBleGl0U2l0ZURhdGEgPSBjb21wdXRlRXhpdFNpdGVEYXRh
KGN1cnJlbnRCYXNlbGluZSwgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsKLSAgICAgICAgCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoZGZnQ29kZUJs
b2NrLT5tX2xvY2spOwotICAgICAgICAgICAgbWFwLmFkZChpbmZvLmNvZGVPcmlnaW4oKSwgY29t
cHV0ZUZvcihsb2NrZXIsIGRmZ0NvZGVCbG9jaywgaW5mbywgZXhpdFNpdGVEYXRhKSk7Ci0gICAg
ICAgIH0KLSAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShkZmdDb2RlQmxvY2spOwotI2Vu
ZGlmIC8vIEVOQUJMRShERkdfSklUKQorICAgIEV4aXRTaXRlRGF0YSBleGl0U2l0ZURhdGEgPSBj
b21wdXRlRXhpdFNpdGVEYXRhKHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRl
eCk7CiAgICAgCi0gICAgaWYgKENhbGxMaW5rU3RhdHVzSW50ZXJuYWw6OnZlcmJvc2UpIHsKLSAg
ICAgICAgZGF0YUxvZygiQ29udGV4dCBtYXA6XG4iKTsKLSAgICAgICAgQ29udGV4dE1hcDo6aXRl
cmF0b3IgaXRlciA9IG1hcC5iZWdpbigpOwotICAgICAgICBDb250ZXh0TWFwOjppdGVyYXRvciBl
bmQgPSBtYXAuZW5kKCk7Ci0gICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7Ci0g
ICAgICAgICAgICBkYXRhTG9nKCIgICAgIiwgaXRlci0+a2V5LCAiOlxuIik7Ci0gICAgICAgICAg
ICBkYXRhTG9nKCIgICAgICAgICIsIGl0ZXItPnZhbHVlLCAiXG4iKTsKKyAgICBmb3IgKGNvbnN0
IElDU3RhdHVzQ29udGV4dCogY29udGV4dCA6IG9wdGltaXplZFN0YWNrKSB7CisgICAgICAgIElD
U3RhdHVzIHN0YXR1cyA9IGNvbnRleHQtPmdldChjb2RlT3JpZ2luKTsKKyAgICAgICAgaWYgKHN0
YXR1cy5jYWxsTGlua0luZm8pIHsKKyAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2Nr
ZXIoY29udGV4dC0+b3B0aW1pemVkQ29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgQ2Fs
bExpbmtTdGF0dXMgcmVzdWx0ID0gY29tcHV0ZUZvcigKKyAgICAgICAgICAgICAgICBsb2NrZXIs
IGNvbnRleHQtPm9wdGltaXplZENvZGVCbG9jaywgKnN0YXR1cy5jYWxsTGlua0luZm8sIGV4aXRT
aXRlRGF0YSwKKyAgICAgICAgICAgICAgICBjb250ZXh0LmlubGluZUtpbmQoY29kZU9yaWdpbikp
OworICAgICAgICAgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoc3RhdHVzLmNhbGxMaW5rU3RhdHVz
KQorICAgICAgICAgICAgcmV0dXJuICpzdGF0dXMuY2FsbExpbmtTdGF0dXM7CiAgICAgfQotfQot
Ci1DYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKLSAgICBDb2RlQmxv
Y2sqIHByb2ZpbGVkQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwKLSAgICBjb25zdCBDYWxs
TGlua0luZm9NYXAmIGJhc2VsaW5lTWFwLCBjb25zdCBDYWxsTGlua1N0YXR1czo6Q29udGV4dE1h
cCYgZGZnTWFwKQotewotICAgIGF1dG8gaXRlciA9IGRmZ01hcC5maW5kKGNvZGVPcmlnaW4pOwot
ICAgIGlmIChpdGVyICE9IGRmZ01hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGl0ZXItPnZhbHVl
OwogICAgIAotICAgIHJldHVybiBjb21wdXRlRm9yKHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4u
Ynl0ZWNvZGVJbmRleCwgYmFzZWxpbmVNYXApOworICAgIHJldHVybiBjb21wdXRlRm9yKHByb2Zp
bGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgYmFzZWxpbmVNYXAsIGV4aXRTaXRl
RGF0YSk7CiB9CiAKIHZvaWQgQ2FsbExpbmtTdGF0dXM6OnNldFByb3ZlbkNvbnN0YW50Q2FsbGVl
KENhbGxWYXJpYW50IHZhcmlhbnQpCkBAIC0zMjcsNiArMzEzLDI0IEBAIHZvaWQgQ2FsbExpbmtT
dGF0dXM6Om1ha2VDbG9zdXJlQ2FsbCgpCiAgICAgbV92YXJpYW50cyA9IGRlc3BlY2lmaWVkVmFy
aWFudExpc3QobV92YXJpYW50cyk7CiB9CiAKK2Jvb2wgQ2FsbExpbmtTdGF0dXM6OmZpbmFsaXpl
KCkKK3sKKyAgICBmb3IgKENhbGxWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykgeworICAg
ICAgICBpZiAoIXZhcmlhbnQuZmluYWxpemUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQ2FsbExpbmtTdGF0dXM6OmZpbHRl
cihWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCit7CisgICAgbV92YXJpYW50cy5yZW1vdmVBbGxNYXRj
aGluZygKKyAgICAgICAgWyZdIChDYWxsVmFyaWFudCYgdmFyaWFudCkgLT4gYm9vbCB7CisgICAg
ICAgICAgICB2YXJpYW50LmZpbHRlcih2bSwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuICF2
YXJpYW50OworICAgICAgICB9KTsKK30KKwogdm9pZCBDYWxsTGlua1N0YXR1czo6ZHVtcChQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIGlmICghaXNTZXQoKSkgewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHJldmlzaW9u
IDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVkZSAiQ2FsbFZhcmlh
bnQuaCIKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAiQ29uY3VycmVudEpTTG9j
ay5oIgorI2luY2x1ZGUgIkV4aXRGbGFnLmgiCisjaW5jbHVkZSAiSUNTdGF0dXNNYXAuaCIKICNp
bmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNjAsMzkgKzYyLDMz
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1
cyBjb21wdXRlRm9yKAotICAgICAgICBDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4
LCBjb25zdCBDYWxsTGlua0luZm9NYXAmKTsKLQogICAgIHN0cnVjdCBFeGl0U2l0ZURhdGEgewot
ICAgICAgICBib29sIHRha2VzU2xvd1BhdGggeyBmYWxzZSB9OwotICAgICAgICBib29sIGJhZEZ1
bmN0aW9uIHsgZmFsc2UgfTsKKyAgICAgICAgRXhpdEZsYWcgdGFrZXNTbG93UGF0aDsKKyAgICAg
ICAgRXhpdEZsYWcgYmFkRnVuY3Rpb247CiAgICAgfTsKICAgICBzdGF0aWMgRXhpdFNpdGVEYXRh
IGNvbXB1dGVFeGl0U2l0ZURhdGEoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7
CiAgICAgCisgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwg
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgY29uc3QgSUNTdGF0dXNNYXAmLCBFeGl0U2l0ZURhdGEp
OworICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgsIGNvbnN0IElDU3RhdHVzTWFwJik7CisKICNpZiBFTkFCTEUoSklU
KQogICAgIC8vIENvbXB1dGVzIHRoZSBzdGF0dXMgYXNzdW1pbmcgdGhhdCB3ZSBuZXZlciB0b29r
IHNsb3cgcGF0aCBhbmQgbmV2ZXIgcHJldmlvdXNseQogICAgIC8vIGV4aXRlZC4KICAgICBzdGF0
aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBD
b2RlQmxvY2sqLCBDYWxsTGlua0luZm8mKTsKKyAgICAKKyAgICAvLyBDb21wdXRlcyB0aGUgc3Rh
dHVzIGFjY291bnRpbmcgZm9yIGV4aXRzLgogICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21w
dXRlRm9yKAotICAgICAgICBjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqLCBD
YWxsTGlua0luZm8mLCBFeGl0U2l0ZURhdGEpOworICAgICAgICBjb25zdCBDb25jdXJyZW50SlNM
b2NrZXImLCBDb2RlQmxvY2sqLCBDYWxsTGlua0luZm8mLCBFeGl0U2l0ZURhdGEsIEV4aXRpbmdJ
bmxpbmVLaW5kID0gRXhpdEZyb21BbnlJbmxpbmVLaW5kKTsKICNlbmRpZgogICAgIAotICAgIHR5
cGVkZWYgSGFzaE1hcDxDb2RlT3JpZ2luLCBDYWxsTGlua1N0YXR1cywgQ29kZU9yaWdpbkFwcHJv
eGltYXRlSGFzaD4gQ29udGV4dE1hcDsKLSAgICAKLSAgICAvLyBDb21wdXRlcyBhbGwgb2YgdGhl
IHN0YXR1c2VzIG9mIHRoZSBERkcgY29kZSBibG9jay4gRG9lc24ndCBpbmNsdWRlIHN0YXR1c2Vz
IHRoYXQgaGFkCi0gICAgLy8gbm8gaW5mb3JtYXRpb24uIEN1cnJlbnRseSB3ZSB1c2UgdGhpcyB3
aGVuIGNvbXBpbGluZyBGVEwgY29kZSwgdG8gZW5hYmxlIHBvbHl2YXJpYW50Ci0gICAgLy8gaW5s
aW5pbmcuCi0gICAgc3RhdGljIHZvaWQgY29tcHV0ZURGR1N0YXR1c2VzKENvZGVCbG9jayogZGZn
Q29kZUJsb2NrLCBDb250ZXh0TWFwJik7Ci0gICAgCi0gICAgLy8gSGVscGVyIHRoYXQgZmlyc3Qg
Y29uc3VsdHMgdGhlIENvbnRleHRNYXAgYW5kIHRoZW4gZG9lcyBjb21wdXRlRm9yKCkuCiAgICAg
c3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoCi0gICAgICAgIENvZGVCbG9jayosIENv
ZGVPcmlnaW4sIGNvbnN0IENhbGxMaW5rSW5mb01hcCYsIGNvbnN0IENvbnRleHRNYXAmKTsKKyAg
ICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgY29uc3QgSUNTdGF0dXNNYXAmLCBjb25zdCBJ
Q1N0YXR1c0NvbnRleHRTdGFjayYpOwogICAgIAogICAgIHZvaWQgc2V0UHJvdmVuQ29uc3RhbnRD
YWxsZWUoQ2FsbFZhcmlhbnQpOwogICAgIAogICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVy
biAhbV92YXJpYW50cy5pc0VtcHR5KCkgfHwgbV9jb3VsZFRha2VTbG93UGF0aDsgfQogICAgIAot
ICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIWlzU2V0KCk7IH0KKyAgICBleHBs
aWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gaXNTZXQoKTsgfQogICAgIAogICAg
IGJvb2wgY291bGRUYWtlU2xvd1BhdGgoKSBjb25zdCB7IHJldHVybiBtX2NvdWxkVGFrZVNsb3dQ
YXRoOyB9CiAgICAgCkBAIC0xMTAsNiArMTA2LDEwIEBAIHB1YmxpYzoKICAgICAKICAgICB1bnNp
Z25lZCBtYXhOdW1Bcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX21heE51bUFyZ3VtZW50czsg
fQogICAgIAorICAgIGJvb2wgZmluYWxpemUoKTsKKyAgICAKKyAgICB2b2lkIGZpbHRlcihWTSYs
IEpTVmFsdWUpOworICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAg
IAogcHJpdmF0ZToKQEAgLTEyMSw2ICsxMjEsOCBAQCBwcml2YXRlOgogICAgICAgICBjb25zdCBD
b25jdXJyZW50SlNMb2NrZXImLCBDYWxsTGlua0luZm8mKTsKICNlbmRpZgogICAgIAorICAgIHZv
aWQgYWNjb3VudEZvckV4aXRzKEV4aXRTaXRlRGF0YSwgRXhpdGluZ0lubGluZUtpbmQpOworICAg
IAogICAgIENhbGxWYXJpYW50TGlzdCBtX3ZhcmlhbnRzOwogICAgIGJvb2wgbV9jb3VsZFRha2VT
bG93UGF0aCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzUHJvdmVkIHsgZmFsc2UgfTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmNwcAkocmV2
aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJp
YW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw2ICszMSwzNSBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAorYm9vbCBDYWxsVmFyaWFudDo6ZmluYWxpemUoKQoreworICAgIGlmIChtX2NhbGxl
ZSAmJiAhSGVhcDo6aXNNYXJrZWQobV9jYWxsZWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQ2FsbFZhcmlhbnQ6OmZpbHRlcihWTSYgdm0sIEpT
VmFsdWUgdmFsdWUpCit7CisgICAgaWYgKCEqdGhpcykKKyAgICAgICAgcmV0dXJuOworICAgIAor
ICAgIGlmICghaXNDbG9zdXJlQ2FsbCgpKSB7CisgICAgICAgIGlmIChub25FeGVjdXRhYmxlQ2Fs
bGVlKCkgIT0gdmFsdWUpCisgICAgICAgICAgICAqdGhpcyA9IENhbGxWYXJpYW50KCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0g
anNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIHZhbHVlKSkgeworICAgICAgICBpZiAoZnVu
Y3Rpb24tPmV4ZWN1dGFibGUoKSA9PSBleGVjdXRhYmxlKCkpCisgICAgICAgICAgICAqdGhpcyA9
IENhbGxWYXJpYW50KGZ1bmN0aW9uKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKnRoaXMg
PSBDYWxsVmFyaWFudCgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgICp0aGlz
ID0gQ2FsbFZhcmlhbnQoKTsKK30KKwogdm9pZCBDYWxsVmFyaWFudDo6ZHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdAogewogICAgIGlmICghKnRoaXMpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogICAgIAotICAgIGJv
b2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fY2FsbGVlOyB9CisgICAgZXhwbGljaXQg
b3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsZWU7IH0KICAgICAKICAgICAv
LyBJZiB0aGlzIHZhcmlhbnQgcmVmZXJzIHRvIGEgZnVuY3Rpb24sIGNoYW5nZSBpdCB0byByZWZl
ciB0byBpdHMgZXhlY3V0YWJsZS4KICAgICBBTFdBWVNfSU5MSU5FIENhbGxWYXJpYW50IGRlc3Bl
Y2lmaWVkQ2xvc3VyZSgpIGNvbnN0CkBAIC0xMzYsNiArMTM2LDEwIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIAorICAgIGJvb2wgZmluYWxpemUoKTsKKyAg
ICAKKyAgICB2b2lkIGZpbHRlcihWTSYsIEpTVmFsdWUpOworICAgIAogICAgIHZvaWQgZHVtcChQ
cmludFN0cmVhbSYgb3V0KSBjb25zdDsKICAgICAKICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM4LDI0ICsyMzgsMjAg
QEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgpCiAKIHZvaWQgQ29kZUJsb2NrOjpkdW1w
Qnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCkKIHsKLSAgICBTdHViSW5mb01hcCBzdHViSW5mb3M7
Ci0gICAgQ2FsbExpbmtJbmZvTWFwIGNhbGxMaW5rSW5mb3M7Ci0gICAgZ2V0U3R1YkluZm9NYXAo
c3R1YkluZm9zKTsKLSAgICBnZXRDYWxsTGlua0luZm9NYXAoY2FsbExpbmtJbmZvcyk7Ci0gICAg
Qnl0ZWNvZGVEdW1wZXI8Q29kZUJsb2NrPjo6ZHVtcEJsb2NrKHRoaXMsIGluc3RydWN0aW9ucygp
LCBvdXQsIHN0dWJJbmZvcywgY2FsbExpbmtJbmZvcyk7CisgICAgSUNTdGF0dXNNYXAgc3RhdHVz
TWFwOworICAgIGdldElDU3RhdHVzTWFwKHN0YXR1c01hcCk7CisgICAgQnl0ZWNvZGVEdW1wZXI8
Q29kZUJsb2NrPjo6ZHVtcEJsb2NrKHRoaXMsIGluc3RydWN0aW9ucygpLCBvdXQsIHN0YXR1c01h
cCk7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwg
Y29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBT
dHViSW5mb01hcCYgc3R1YkluZm9zLCBjb25zdCBDYWxsTGlua0luZm9NYXAmIGNhbGxMaW5rSW5m
b3MpCit2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0
IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgSUNTdGF0
dXNNYXAmIHN0YXR1c01hcCkKIHsKLSAgICBCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1w
Qnl0ZWNvZGUodGhpcywgb3V0LCBiZWdpbiwgaXQsIHN0dWJJbmZvcywgY2FsbExpbmtJbmZvcyk7
CisgICAgQnl0ZWNvZGVEdW1wZXI8Q29kZUJsb2NrPjo6ZHVtcEJ5dGVjb2RlKHRoaXMsIG91dCwg
YmVnaW4sIGl0LCBzdGF0dXNNYXApOwogfQogCi12b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2Rl
KAotICAgIFByaW50U3RyZWFtJiBvdXQsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LAotICAgIGNv
bnN0IFN0dWJJbmZvTWFwJiBzdHViSW5mb3MsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYgY2FsbExp
bmtJbmZvcykKK3ZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwg
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7
CiAgICAgY29uc3QgSW5zdHJ1Y3Rpb24qIGl0ID0gJmluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zm
c2V0XTsKLSAgICBkdW1wQnl0ZWNvZGUob3V0LCBpbnN0cnVjdGlvbnMoKS5iZWdpbigpLCBpdCwg
c3R1YkluZm9zLCBjYWxsTGlua0luZm9zKTsKKyAgICBkdW1wQnl0ZWNvZGUob3V0LCBpbnN0cnVj
dGlvbnMoKS5iZWdpbigpLCBpdCwgc3RhdHVzTWFwKTsKIH0KIAogI2RlZmluZSBGT1JfRUFDSF9N
RU1CRVJfVkVDVE9SKG1hY3JvKSBcCkBAIC0xMTY2LDYgKzExNjIsOSBAQCB2b2lkIENvZGVCbG9j
azo6cHJvcGFnYXRlVHJhbnNpdGlvbnMoY29uCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgaWYg
KEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChqaXRUeXBlKCkpKSB7CiAgICAgICAgIERGRzo6Q29t
bW9uRGF0YSogZGZnQ29tbW9uID0gbV9qaXRDb2RlLT5kZmdDb21tb24oKTsKKyAgICAgICAgCisg
ICAgICAgIGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5tYXJrSWZDaGVhcCh2aXNpdG9yKTsK
KyAgICAgICAgCiAgICAgICAgIGZvciAoYXV0byYgd2Vha1JlZmVyZW5jZSA6IGRmZ0NvbW1vbi0+
d2Vha1N0cnVjdHVyZVJlZmVyZW5jZXMpCiAgICAgICAgICAgICB3ZWFrUmVmZXJlbmNlLT5tYXJr
SWZDaGVhcCh2aXNpdG9yKTsKIApAQCAtMTM5Nyw1NyArMTM5Niw0MyBAQCB2b2lkIENvZGVCbG9j
azo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoCiAgICAgICAgIGZpbmFsaXplQmFzZWxpbmVKSVRJ
bmxpbmVDYWNoZXMoKTsKICNlbmRpZgogCi0gICAgVk06OlNwYWNlQW5kRmluYWxpemVyU2V0Ojpm
aW5hbGl6ZXJTZXRGb3IoKnN1YnNwYWNlKCkpLnJlbW92ZSh0aGlzKTsKLX0KLQotdm9pZCBDb2Rl
QmxvY2s6OmdldFN0dWJJbmZvTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFN0dWJJbmZv
TWFwJiByZXN1bHQpCi17Ci0jaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoSklUQ29kZTo6aXNKSVQo
aml0VHlwZSgpKSkKLSAgICAgICAgdG9IYXNoTWFwKG1fc3R1YkluZm9zLCBnZXRTdHJ1Y3R1cmVT
dHViSW5mb0NvZGVPcmlnaW4sIHJlc3VsdCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShyZXN1
bHQpOwotI2VuZGlmCi19Ci0KLXZvaWQgQ29kZUJsb2NrOjpnZXRTdHViSW5mb01hcChTdHViSW5m
b01hcCYgcmVzdWx0KQotewotICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsK
LSAgICBnZXRTdHViSW5mb01hcChsb2NrZXIsIHJlc3VsdCk7Ci19Ci0KLXZvaWQgQ29kZUJsb2Nr
OjpnZXRDYWxsTGlua0luZm9NYXAoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ2FsbExpbmtJ
bmZvTWFwJiByZXN1bHQpCi17Ci0jaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoSklUQ29kZTo6aXNK
SVQoaml0VHlwZSgpKSkKLSAgICAgICAgdG9IYXNoTWFwKG1fY2FsbExpbmtJbmZvcywgZ2V0Q2Fs
bExpbmtJbmZvQ29kZU9yaWdpbiwgcmVzdWx0KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHJl
c3VsdCk7Ci0jZW5kaWYKLX0KKyAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5
cGUoKSkpIHsKKyAgICAgICAgREZHOjpDb21tb25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENvZGUt
PmRmZ0NvbW1vbigpOworICAgICAgICBkZmdDb21tb24tPnJlY29yZGVkU3RhdHVzZXMuZmluYWxp
emUoKTsKKyAgICB9CiAKLXZvaWQgQ29kZUJsb2NrOjpnZXRDYWxsTGlua0luZm9NYXAoQ2FsbExp
bmtJbmZvTWFwJiByZXN1bHQpCi17Ci0gICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xv
Y2spOwotICAgIGdldENhbGxMaW5rSW5mb01hcChsb2NrZXIsIHJlc3VsdCk7CisgICAgVk06OlNw
YWNlQW5kRmluYWxpemVyU2V0OjpmaW5hbGl6ZXJTZXRGb3IoKnN1YnNwYWNlKCkpLnJlbW92ZSh0
aGlzKTsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OmdldEJ5VmFsSW5mb01hcChjb25zdCBDb25jdXJy
ZW50SlNMb2NrZXImLCBCeVZhbEluZm9NYXAmIHJlc3VsdCkKK3ZvaWQgQ29kZUJsb2NrOjpnZXRJ
Q1N0YXR1c01hcChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBJQ1N0YXR1c01hcCYgcmVzdWx0
KQogewogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKEpJVENvZGU6OmlzSklUKGppdFR5cGUoKSkp
IHsKLSAgICAgICAgZm9yIChhdXRvKiBieVZhbEluZm8gOiBtX2J5VmFsSW5mb3MpCi0gICAgICAg
ICAgICByZXN1bHQuYWRkKENvZGVPcmlnaW4oYnlWYWxJbmZvLT5ieXRlY29kZUluZGV4KSwgYnlW
YWxJbmZvKTsKKyAgICAgICAgZm9yIChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gOiBtX3N0
dWJJbmZvcykKKyAgICAgICAgICAgIHJlc3VsdC5hZGQoc3R1YkluZm8tPmNvZGVPcmlnaW4sIElD
U3RhdHVzKCkpLml0ZXJhdG9yLT52YWx1ZS5zdHViSW5mbyA9IHN0dWJJbmZvOworICAgICAgICBm
b3IgKENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvIDogbV9jYWxsTGlua0luZm9zKQorICAgICAg
ICAgICAgcmVzdWx0LmFkZChjYWxsTGlua0luZm8tPmNvZGVPcmlnaW4oKSwgSUNTdGF0dXMoKSku
aXRlcmF0b3ItPnZhbHVlLmNhbGxMaW5rSW5mbyA9IGNhbGxMaW5rSW5mbzsKKyAgICAgICAgZm9y
IChCeVZhbEluZm8qIGJ5VmFsSW5mbyA6IG1fYmFsVmFsSW5mb3MpCisgICAgICAgICAgICByZXN1
bHQuYWRkKENvZGVPcmlnaW4oYnlWYWxJbmZvLT5ieXRlY29kZUluZGV4KSwgSUNTdGF0dXMoKSku
aXRlcmF0b3ItPnZhbHVlLmJ5VmFsSW5mbyA9IGJ5VmFsSW5mbzsKKyAgICAgICAgaWYgKEpJVENv
ZGU6OmlzT3B0aW1pemluZ0pJVChqaXRUeXBlKCkpKSB7CisgICAgICAgICAgICBERkc6OkNvbW1v
bkRhdGEqIGRmZ0NvbW1vbiA9IG1faml0Q29kZS0+ZGZnQ29tbW9uKCk7CisgICAgICAgICAgICBm
b3IgKGF1dG8mIHBhaXIgOiBkZmdDb21tb24tPnJlY29yZGVkU3RhdHVzZXMuY2FsbHMpCisgICAg
ICAgICAgICAgICAgcmVzdWx0LmFkZChwYWlyLmZpcnN0LCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+
dmFsdWUuY2FsbFN0YXR1cyA9IHBhaXIuc2Vjb25kLmdldCgpOworICAgICAgICAgICAgZm9yIChh
dXRvJiBwYWlyIDogZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLmdldHMpCisgICAgICAgICAg
ICAgICAgcmVzdWx0LmFkZChwYWlyLmZpcnN0LCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUu
Z2V0U3RhdHVzID0gcGFpci5zZWNvbmQuZ2V0KCk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHBh
aXIgOiBkZmdDb21tb24tPnJlY29yZGVkU3RhdHVzZXMucHV0cykKKyAgICAgICAgICAgICAgICBy
ZXN1bHQuYWRkKHBhaXIuZmlyc3QsIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52YWx1ZS5wdXRTdGF0
dXMgPSBwYWlyLnNlY29uZC5nZXQoKTsKKyAgICAgICAgfQogICAgIH0KICNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKHJlc3VsdCk7CiAjZW5kaWYKIH0KIAotdm9pZCBDb2RlQmxvY2s6OmdldEJ5VmFs
SW5mb01hcChCeVZhbEluZm9NYXAmIHJlc3VsdCkKK3ZvaWQgQ29kZUJsb2NrOjpnZXRJQ1N0YXR1
c01hcChJQ1N0YXR1c01hcCYgcmVzdWx0KQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2Nr
ZXIobV9sb2NrKTsKLSAgICBnZXRCeVZhbEluZm9NYXAobG9ja2VyLCByZXN1bHQpOworICAgIGdl
dElDU3RhdHVzTWFwKGxvY2tlciwgcmVzdWx0KTsKIH0KIAogI2lmIEVOQUJMRShKSVQpCkBAIC0x
NTE0LDcgKzE0OTksNyBAQCB2b2lkIENvZGVCbG9jazo6cmVzZXRKSVREYXRhKCkKICAgICAKICAg
ICAvLyBXZSBjYW4gY2xlYXIgdGhlc2UgYmVjYXVzZSBubyBvdGhlciB0aHJlYWQgd2lsbCBoYXZl
IHJlZmVyZW5jZXMgdG8gYW55IHN0dWIgaW5mb3MsIGNhbGwKICAgICAvLyBsaW5rIGluZm9zLCBv
ciBieSB2YWwgaW5mb3MgaWYgd2UgZG9uJ3QgaGF2ZSBKSVQgY29kZS4gQXR0ZW1wdHMgdG8gcXVl
cnkgdGhlc2UgZGF0YQotICAgIC8vIHN0cnVjdHVyZXMgdXNpbmcgdGhlIGNvbmN1cnJlbnQgQVBJ
IChnZXRTdHViSW5mb01hcCBhbmQgZnJpZW5kcykgd2lsbCByZXR1cm4gbm90aGluZyBpZiB3ZQor
ICAgIC8vIHN0cnVjdHVyZXMgdXNpbmcgdGhlIGNvbmN1cnJlbnQgQVBJIChnZXRJQ1N0YXR1c01h
cCBhbmQgZnJpZW5kcykgd2lsbCByZXR1cm4gbm90aGluZyBpZiB3ZQogICAgIC8vIGRvbid0IGhh
dmUgSklUIGNvZGUuCiAgICAgbV9zdHViSW5mb3MuY2xlYXIoKTsKICAgICBtX2NhbGxMaW5rSW5m
b3MuY2xlYXIoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUg
IkV4cHJlc3Npb25SYW5nZUluZm8uaCIKICNpbmNsdWRlICJGdW5jdGlvbkV4ZWN1dGFibGUuaCIK
ICNpbmNsdWRlICJIYW5kbGVySW5mby5oIgorI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCiAjaW5j
bHVkZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCiAjaW5jbHVkZSAiSklU
Q29kZU1hcC5oIgpAQCAtOTYsOCArOTcsNiBAQCBlbnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBpbnQ4
X3Q7CiAKIHN0cnVjdCBBcml0aFByb2ZpbGU7CiAKLXR5cGVkZWYgSGFzaE1hcDxDb2RlT3JpZ2lu
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIENvZGVPcmlnaW5BcHByb3hpbWF0ZUhhc2g+IFN0dWJJbmZv
TWFwOwotCiBlbnVtIFJlb3B0aW1pemF0aW9uTW9kZSB7IERvbnRDb3VudFJlb3B0aW1pemF0aW9u
LCBDb3VudFJlb3B0aW1pemF0aW9uIH07CiAKIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0Nl
bGwgewpAQCAtMTk2LDggKzE5NSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZHVtcEJ5dGVjb2Rl
KCk7CiAgICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mKTsKLSAgICB2b2lkIGR1bXBC
eXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0
IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiA9IFN0dWJJbmZvTWFwKCksIGNv
bnN0IENhbGxMaW5rSW5mb01hcCYgPSBDYWxsTGlua0luZm9NYXAoKSk7Ci0gICAgdm9pZCBkdW1w
Qnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0
IFN0dWJJbmZvTWFwJiA9IFN0dWJJbmZvTWFwKCksIGNvbnN0IENhbGxMaW5rSW5mb01hcCYgPSBD
YWxsTGlua0luZm9NYXAoKSk7CisgICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91
dCwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25z
dCBJQ1N0YXR1c01hcCYgPSBJQ1N0YXR1c01hcCgpKTsKKyAgICB2b2lkIGR1bXBCeXRlY29kZShQ
cmludFN0cmVhbSYgb3V0LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgSUNTdGF0dXNN
YXAmID0gSUNTdGF0dXNNYXAoKSk7CiAKICAgICB2b2lkIGR1bXBFeGNlcHRpb25IYW5kbGVycyhQ
cmludFN0cmVhbSYpOwogICAgIHZvaWQgcHJpbnRTdHJ1Y3R1cmVzKFByaW50U3RyZWFtJiwgY29u
c3QgSW5zdHJ1Y3Rpb24qKTsKQEAgLTIzNywxNCArMjM2LDggQEAgcHVibGljOgogCiAgICAgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gYnl0ZWNvZGVPZmZzZXRGcm9tQ2FsbFNpdGVJbmRleChDYWxs
U2l0ZUluZGV4KTsKIAotICAgIHZvaWQgZ2V0U3R1YkluZm9NYXAoY29uc3QgQ29uY3VycmVudEpT
TG9ja2VyJiwgU3R1YkluZm9NYXAmIHJlc3VsdCk7Ci0gICAgdm9pZCBnZXRTdHViSW5mb01hcChT
dHViSW5mb01hcCYgcmVzdWx0KTsKLSAgICAKLSAgICB2b2lkIGdldENhbGxMaW5rSW5mb01hcChj
b25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDYWxsTGlua0luZm9NYXAmIHJlc3VsdCk7Ci0gICAg
dm9pZCBnZXRDYWxsTGlua0luZm9NYXAoQ2FsbExpbmtJbmZvTWFwJiByZXN1bHQpOwotCi0gICAg
dm9pZCBnZXRCeVZhbEluZm9NYXAoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQnlWYWxJbmZv
TWFwJiByZXN1bHQpOwotICAgIHZvaWQgZ2V0QnlWYWxJbmZvTWFwKEJ5VmFsSW5mb01hcCYgcmVz
dWx0KTsKKyAgICB2b2lkIGdldElDU3RhdHVzTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYs
IElDU3RhdHVzTWFwJiByZXN1bHQpOworICAgIHZvaWQgZ2V0SUNTdGF0dXNNYXAoSUNTdGF0dXNN
YXAmIHJlc3VsdCk7CiAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICBKSVRBZGRJQyogYWRkSklU
QWRkSUMoQXJpdGhQcm9maWxlKiwgSW5zdHJ1Y3Rpb24qKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQ2LDcgKzQ2LDcgQEAgdW5zaWduZWQgQ29kZU9yaWdpbjo6aW5saW5lRGVwdGgo
KSBjb25zdAogICAgIHJldHVybiBpbmxpbmVEZXB0aEZvckNhbGxGcmFtZShpbmxpbmVDYWxsRnJh
bWUpOwogfQogCi1ib29sIENvZGVPcmlnaW46OmlzQXBwcm94aW1hdGVseUVxdWFsVG8oY29uc3Qg
Q29kZU9yaWdpbiYgb3RoZXIpIGNvbnN0Citib29sIENvZGVPcmlnaW46OmlzQXBwcm94aW1hdGVs
eUVxdWFsVG8oY29uc3QgQ29kZU9yaWdpbiYgb3RoZXIsIENvZGVCbG9jayogdGVybWluYWwpIGNv
bnN0CiB7CiAgICAgQ29kZU9yaWdpbiBhID0gKnRoaXM7CiAgICAgQ29kZU9yaWdpbiBiID0gb3Ro
ZXI7CkBAIC02OCwxMCArNjgsMTMgQEAgYm9vbCBDb2RlT3JpZ2luOjppc0FwcHJveGltYXRlbHlF
cXVhbFRvKAogICAgICAgICBpZiAoYS5ieXRlY29kZUluZGV4ICE9IGIuYnl0ZWNvZGVJbmRleCkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgICAgIGlmICgoISFhLmlu
bGluZUNhbGxGcmFtZSkgIT0gKCEhYi5pbmxpbmVDYWxsRnJhbWUpKQorICAgICAgICBib29sIGFI
YXNJbmxpbmVDYWxsRnJhbWUgPSAhIWEuaW5saW5lQ2FsbEZyYW1lCisgICAgICAgICAgICAmJiBh
LmlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkgIT0gdGVybWluYWw7Cisg
ICAgICAgIGJvb2wgYkhhc0lubGluZUNhbGxGcmFtZSA9ICEhYi5pbmxpbmVDYWxsRnJhbWU7Cisg
ICAgICAgIGlmIChhSGFzSW5saW5lQ2FsbEZyYW1lICE9IGJIYXNJbmxpbmVDYWxsRnJhbWUpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgICAgICBpZiAoIWEuaW5saW5l
Q2FsbEZyYW1lKQorICAgICAgICBpZiAoIWFIYXNJbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAgICAgIGlmIChhLmlubGluZUNhbGxGcmFtZS0+
YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkgIT0gYi5pbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29k
ZUJsb2NrLmdldCgpKQpAQCAtODIsNyArODUsNyBAQCBib29sIENvZGVPcmlnaW46OmlzQXBwcm94
aW1hdGVseUVxdWFsVG8oCiAgICAgfQogfQogCi11bnNpZ25lZCBDb2RlT3JpZ2luOjphcHByb3hp
bWF0ZUhhc2goKSBjb25zdAordW5zaWduZWQgQ29kZU9yaWdpbjo6YXBwcm94aW1hdGVIYXNoKENv
ZGVCbG9jayogdGVybWluYWwpIGNvbnN0CiB7CiAgICAgaWYgKCFpc1NldCgpKQogICAgICAgICBy
ZXR1cm4gMDsKQEAgLTk3LDYgKzEwMCw5IEBAIHVuc2lnbmVkIENvZGVPcmlnaW46OmFwcHJveGlt
YXRlSGFzaCgpIGMKICAgICAgICAgaWYgKCFjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkKICAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIAorICAgICAgICBpZiAoY29kZU9yaWdp
bi5pbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLmdldCgpID09IHRlcm1pbmFsKQor
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgCiAgICAgICAgIHJlc3VsdCArPSBX
VEY6OlB0ckhhc2g8SlNDZWxsKj46Omhhc2goY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmJh
c2VsaW5lQ29kZUJsb2NrLmdldCgpKTsKICAgICAgICAgCiAgICAgICAgIGNvZGVPcmlnaW4gPSBj
b2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+ZGlyZWN0Q2FsbGVyOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCShyZXZpc2lvbiAyMzIyMjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtOTQsOSArOTQsOSBAQCBzdHJ1Y3QgQ29kZU9yaWdpbiB7CiAgICAgCiAgICAgLy8g
VGhpcyBjaGVja3MgaWYgdGhlIHR3byBjb2RlIG9yaWdpbnMgY29ycmVzcG9uZCB0byB0aGUgc2Ft
ZSBzdGFjayB0cmFjZSBzbmlwcGV0cywKICAgICAvLyBidXQgaWdub3JlIHdoZXRoZXIgdGhlIElu
bGluZUNhbGxGcmFtZSdzIGFyZSBpZGVudGljYWwuCi0gICAgYm9vbCBpc0FwcHJveGltYXRlbHlF
cXVhbFRvKGNvbnN0IENvZGVPcmlnaW4mIG90aGVyKSBjb25zdDsKKyAgICBib29sIGlzQXBwcm94
aW1hdGVseUVxdWFsVG8oY29uc3QgQ29kZU9yaWdpbiYgb3RoZXIsIENvZGVCbG9jayogdGVybWlu
YWwgPSBudWxscHRyKSBjb25zdDsKICAgICAKLSAgICB1bnNpZ25lZCBhcHByb3hpbWF0ZUhhc2go
KSBjb25zdDsKKyAgICB1bnNpZ25lZCBhcHByb3hpbWF0ZUhhc2goQ29kZUJsb2NrKiB0ZXJtaW5h
bCA9IG51bGxwdHIpIGNvbnN0OwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZ1bmN0aW9uPgog
ICAgIHZvaWQgd2Fsa1VwSW5saW5lU3RhY2soY29uc3QgRnVuY3Rpb24mKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNwcAkocmV2
aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQ
cm9maWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsOCArNDMsMTAgQEAgRXhpdFByb2ZpbGU6
On5FeGl0UHJvZmlsZSgpIHsgfQogCiBib29sIEV4aXRQcm9maWxlOjphZGQoQ29kZUJsb2NrKiBv
d25lciwgY29uc3QgRnJlcXVlbnRFeGl0U2l0ZSYgc2l0ZSkKIHsKKyAgICBSRUxFQVNFX0FTU0VS
VChzaXRlLmppdFR5cGUoKSAhPSBFeGl0RnJvbUFueXRoaW5nKTsKKyAgICBSRUxFQVNFX0FTU0VS
VChzaXRlLmlubGluZUtpbmQoKSAhPSBFeGl0RnJvbUFueUlubGluZUtpbmQpOworCiAgICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcihvd25lci0+dW5saW5rZWRDb2RlQmxvY2soKS0+bV9sb2Nr
KTsKLSAgICBBU1NFUlQoc2l0ZS5qaXRUeXBlKCkgIT0gRXhpdEZyb21Bbnl0aGluZyk7CiAKICAg
ICBDT0RFQkxPQ0tfTE9HX0VWRU5UKG93bmVyLCAiZnJlcXVlbnRFeGl0IiwgKHNpdGUpKTsKICAg
ICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJv
ZmlsZS5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvREZHRXhpdFByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5LDcg
QEAKIAogI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKICNpbmNsdWRlICJFeGl0S2luZC5o
IgorI2luY2x1ZGUgIkV4aXRpbmdJbmxpbmVLaW5kLmgiCiAjaW5jbHVkZSAiRXhpdGluZ0pJVFR5
cGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
QEAgLTQxLDYgKzQyLDcgQEAgcHVibGljOgogICAgICAgICA6IG1fYnl0ZWNvZGVPZmZzZXQoMCkg
Ly8gMCA9IGVtcHR5IHZhbHVlCiAgICAgICAgICwgbV9raW5kKEV4aXRLaW5kVW5zZXQpCiAgICAg
ICAgICwgbV9qaXRUeXBlKEV4aXRGcm9tQW55dGhpbmcpCisgICAgICAgICwgbV9pbmxpbmVLaW5k
KEV4aXRGcm9tQW55SW5saW5lS2luZCkKICAgICB7CiAgICAgfQogICAgIApAQCAtNDgsMTMgKzUw
LDE1IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX2J5dGVjb2RlT2Zmc2V0KDEpIC8vIDEgPSBkZWxl
dGVkIHZhbHVlCiAgICAgICAgICwgbV9raW5kKEV4aXRLaW5kVW5zZXQpCiAgICAgICAgICwgbV9q
aXRUeXBlKEV4aXRGcm9tQW55dGhpbmcpCisgICAgICAgICwgbV9pbmxpbmVLaW5kKEV4aXRGcm9t
QW55SW5saW5lS2luZCkKICAgICB7CiAgICAgfQogICAgIAotICAgIGV4cGxpY2l0IEZyZXF1ZW50
RXhpdFNpdGUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEV4aXRLaW5kIGtpbmQsIEV4aXRpbmdK
SVRUeXBlIGppdFR5cGUgPSBFeGl0RnJvbUFueXRoaW5nKQorICAgIGV4cGxpY2l0IEZyZXF1ZW50
RXhpdFNpdGUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEV4aXRLaW5kIGtpbmQsIEV4aXRpbmdK
SVRUeXBlIGppdFR5cGUgPSBFeGl0RnJvbUFueXRoaW5nLCBFeGl0aW5nSW5saW5lS2luZCBpbmxp
bmVLaW5kID0gRXhpdEZyb21BbnlJbmxpbmVLaW5kKQogICAgICAgICA6IG1fYnl0ZWNvZGVPZmZz
ZXQoYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgICwgbV9raW5kKGtpbmQpCiAgICAgICAgICwgbV9q
aXRUeXBlKGppdFR5cGUpCisgICAgICAgICwgbV9pbmxpbmVLaW5kKGlubGluZUtpbmQpCiAgICAg
ewogICAgICAgICBpZiAobV9raW5kID09IEFyZ3VtZW50c0VzY2FwZWQpIHsKICAgICAgICAgICAg
IC8vIENvdW50IHRoaXMgb25lIGdsb2JhbGx5LiBJdCBkb2Vzbid0IG1hdHRlciB3aGVyZSBpbiB0
aGUgY29kZSBibG9jayB0aGUgYXJndW1lbnRzIGV4Y2FwZWQ7CkBAIC02NSwxMCArNjksMTEgQEAg
cHVibGljOgogICAgIAogICAgIC8vIFVzZSB0aGlzIGNvbnN0cnVjdG9yIGlmIHlvdSB3aXNoIGZv
ciB0aGUgZXhpdCBzaXRlIHRvIGJlIGNvdW50ZWQgZ2xvYmFsbHkgd2l0aGluIGl0cwogICAgIC8v
IGNvZGUgYmxvY2suCi0gICAgZXhwbGljaXQgRnJlcXVlbnRFeGl0U2l0ZShFeGl0S2luZCBraW5k
LCBFeGl0aW5nSklUVHlwZSBqaXRUeXBlID0gRXhpdEZyb21Bbnl0aGluZykKKyAgICBleHBsaWNp
dCBGcmVxdWVudEV4aXRTaXRlKEV4aXRLaW5kIGtpbmQsIEV4aXRpbmdKSVRUeXBlIGppdFR5cGUg
PSBFeGl0RnJvbUFueXRoaW5nLCBFeGl0aW5nSW5saW5lS2luZCBpbmxpbmVLaW5kID0gRXhpdEZy
b21BbnlJbmxpbmVLaW5kKQogICAgICAgICA6IG1fYnl0ZWNvZGVPZmZzZXQoMCkKICAgICAgICAg
LCBtX2tpbmQoa2luZCkKICAgICAgICAgLCBtX2ppdFR5cGUoaml0VHlwZSkKKyAgICAgICAgLCBt
X2lubGluZUtpbmQoaW5saW5lS2luZCkKICAgICB7CiAgICAgfQogICAgIApAQCAtODEsNyArODYs
OCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV9ieXRlY29kZU9mZnNldCA9PSBv
dGhlci5tX2J5dGVjb2RlT2Zmc2V0CiAgICAgICAgICAgICAmJiBtX2tpbmQgPT0gb3RoZXIubV9r
aW5kCi0gICAgICAgICAgICAmJiBtX2ppdFR5cGUgPT0gb3RoZXIubV9qaXRUeXBlOworICAgICAg
ICAgICAgJiYgbV9qaXRUeXBlID09IG90aGVyLm1faml0VHlwZQorICAgICAgICAgICAgJiYgbV9p
bmxpbmVLaW5kID09IG90aGVyLm1faW5saW5lS2luZDsKICAgICB9CiAgICAgCiAgICAgYm9vbCBz
dWJzdW1lcyhjb25zdCBGcmVxdWVudEV4aXRTaXRlJiBvdGhlcikgY29uc3QKQEAgLTkwLDE5ICs5
NiwyNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmICht
X2tpbmQgIT0gb3RoZXIubV9raW5kKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICBpZiAobV9qaXRUeXBlID09IEV4aXRGcm9tQW55dGhpbmcpCi0gICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgcmV0dXJuIG1faml0VHlwZSA9PSBvdGhlci5tX2ppdFR5cGU7CisgICAg
ICAgIGlmIChtX2ppdFR5cGUgIT0gRXhpdEZyb21Bbnl0aGluZworICAgICAgICAgICAgJiYgbV9q
aXRUeXBlICE9IG90aGVyLm1faml0VHlwZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgaWYgKG1faW5saW5lS2luZCAhPSBFeGl0RnJvbUFueUlubGluZUtpbmQKKyAgICAgICAg
ICAgICYmIG1faW5saW5lS2luZCAhPSBvdGhlci5tX2lubGluZUtpbmQpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKICAgICB1bnNp
Z25lZCBoYXNoKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6OmludEhhc2gobV9i
eXRlY29kZU9mZnNldCkgKyBtX2tpbmQgKyBzdGF0aWNfY2FzdDxzdGQ6OnVuZGVybHlpbmdfdHlw
ZV90PEV4aXRpbmdKSVRUeXBlPj4obV9qaXRUeXBlKSAqIDc7CisgICAgICAgIHJldHVybiBXVEY6
OmludEhhc2gobV9ieXRlY29kZU9mZnNldCkgKyBtX2tpbmQgKyBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4obV9qaXRUeXBlKSAqIDcgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9pbmxpbmVLaW5kKSAq
IDExOwogICAgIH0KICAgICAKICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIG1fYnl0ZWNvZGVPZmZzZXQ7IH0KICAgICBFeGl0S2luZCBraW5kKCkgY29uc3QgeyBy
ZXR1cm4gbV9raW5kOyB9CiAgICAgRXhpdGluZ0pJVFR5cGUgaml0VHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1faml0VHlwZTsgfQorICAgIEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQoKSBjb25z
dCB7IHJldHVybiBtX2lubGluZUtpbmQ7IH0KICAgICAKICAgICBGcmVxdWVudEV4aXRTaXRlIHdp
dGhKSVRUeXBlKEV4aXRpbmdKSVRUeXBlIGppdFR5cGUpIGNvbnN0CiAgICAgewpAQCAtMTExLDYg
KzEyMiwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisgICAg
RnJlcXVlbnRFeGl0U2l0ZSB3aXRoSW5saW5lS2luZChFeGl0aW5nSW5saW5lS2luZCBpbmxpbmVL
aW5kKSBjb25zdAorICAgIHsKKyAgICAgICAgRnJlcXVlbnRFeGl0U2l0ZSByZXN1bHQgPSAqdGhp
czsKKyAgICAgICAgcmVzdWx0Lm1faW5saW5lS2luZCA9IGlubGluZUtpbmQ7CisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfQorCiAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgp
IGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9raW5kID09IEV4aXRLaW5kVW5zZXQgJiYg
bV9ieXRlY29kZU9mZnNldDsKQEAgLTEyMiw2ICsxNDAsNyBAQCBwcml2YXRlOgogICAgIHVuc2ln
bmVkIG1fYnl0ZWNvZGVPZmZzZXQ7CiAgICAgRXhpdEtpbmQgbV9raW5kOwogICAgIEV4aXRpbmdK
SVRUeXBlIG1faml0VHlwZTsKKyAgICBFeGl0aW5nSW5saW5lS2luZCBtX2lubGluZUtpbmQ7CiB9
OwogCiBzdHJ1Y3QgRnJlcXVlbnRFeGl0U2l0ZUhhc2ggewpAQCAtMTkyLDEwICsyMTEsMTAgQEAg
cHVibGljOgogICAgIGJvb2wgaGFzRXhpdFNpdGUoY29uc3QgRnJlcXVlbnRFeGl0U2l0ZSYgc2l0
ZSkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChzaXRlLmppdFR5cGUoKSA9PSBFeGl0RnJvbUFu
eXRoaW5nKSB7Ci0gICAgICAgICAgICByZXR1cm4gaGFzRXhpdFNpdGUoc2l0ZS53aXRoSklUVHlw
ZShFeGl0RnJvbURGRykpCi0gICAgICAgICAgICAgICAgfHwgaGFzRXhpdFNpdGUoc2l0ZS53aXRo
SklUVHlwZShFeGl0RnJvbUZUTCkpOworICAgICAgICAgICAgcmV0dXJuIGhhc0V4aXRTaXRlV2l0
aFNwZWNpZmljSklUVHlwZShzaXRlLndpdGhKSVRUeXBlKEV4aXRGcm9tREZHKSkKKyAgICAgICAg
ICAgICAgICB8fCBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0pJVFR5cGUoc2l0ZS53aXRoSklUVHlw
ZShFeGl0RnJvbUZUTCkpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtX2ZyZXF1ZW50RXhp
dFNpdGVzLmZpbmQoc2l0ZSkgIT0gbV9mcmVxdWVudEV4aXRTaXRlcy5lbmQoKTsKKyAgICAgICAg
cmV0dXJuIGhhc0V4aXRTaXRlV2l0aFNwZWNpZmljSklUVHlwZShzaXRlKTsKICAgICB9CiAgICAg
CiAgICAgYm9vbCBoYXNFeGl0U2l0ZShFeGl0S2luZCBraW5kKSBjb25zdApAQCAtMjA4LDYgKzIy
NywyMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBoYXNFeGl0U2l0ZShGcmVxdWVudEV4aXRT
aXRlKGJ5dGVjb2RlSW5kZXgsIGtpbmQpKTsKICAgICB9CiBwcml2YXRlOgorICAgIGJvb2wgaGFz
RXhpdFNpdGVXaXRoU3BlY2lmaWNKSVRUeXBlKGNvbnN0IEZyZXF1ZW50RXhpdFNpdGUmIHNpdGUp
IGNvbnN0CisgICAgeworICAgICAgICBpZiAoc2l0ZS5pbmxpbmVLaW5kKCkgPT0gRXhpdEZyb21B
bnlJbmxpbmVLaW5kKSB7CisgICAgICAgICAgICByZXR1cm4gaGFzRXhpdFNpdGVXaXRoU3BlY2lm
aWNJbmxpbmVLaW5kKHNpdGUud2l0aElubGluZUtpbmQoRXhpdEZyb21Ob3RJbmxpbmVkKSkKKyAg
ICAgICAgICAgICAgICB8fCBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0lubGluZUtpbmQoc2l0ZS53
aXRoSW5saW5lS2luZChFeGl0RnJvbUlubGluZWQpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gaGFzRXhpdFNpdGVXaXRoU3BlY2lmaWNJbmxpbmVLaW5kKHNpdGUpOworICAgIH0KKyAgICAK
KyAgICBib29sIGhhc0V4aXRTaXRlV2l0aFNwZWNpZmljSW5saW5lS2luZChjb25zdCBGcmVxdWVu
dEV4aXRTaXRlJiBzaXRlKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZnJlcXVlbnRF
eGl0U2l0ZXMuZmluZChzaXRlKSAhPSBtX2ZyZXF1ZW50RXhpdFNpdGVzLmVuZCgpOworICAgIH0K
KyAgICAKICAgICBIYXNoU2V0PEZyZXF1ZW50RXhpdFNpdGU+IG1fZnJlcXVlbnRFeGl0U2l0ZXM7
CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEZsYWcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0RmxhZy5j
cHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRG
bGFnLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJFeGl0RmxhZy5oIgorCisjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgorCituYW1l
c3BhY2UgSlNDIHsKKwordm9pZCBFeGl0RmxhZzo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dAoreworICAgIGlmICghbV9iaXRzKSB7CisgICAgICAgIG91dC5wcmludCgiZmFsc2UiKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBDb21tYVByaW50ZXIgY29tbWEoInwiOwor
ICAgIGlmIChpc1NldChFeGl0RnJvbU5vdElubGluZWQpKQorICAgICAgICBvdXQucHJpbnQoY29t
bWEsICJub3RJbmxpbmVkIik7CisgICAgaWYgKGlzU2V0KEV4aXRGcm9tSW5saW5lZCkpCisgICAg
ICAgIG91dC5wcmludChjb21tYSwgImlubGluZWQiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0RmxhZy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0RmxhZy5oCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0RmxhZy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRXhpdGluZ0lu
bGluZUtpbmQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV4aXRGbGFnIHsKK3B1Ymxp
YzoKKyAgICBFeGl0RmxhZygpIHsgfQorICAgIAorICAgIEV4aXRGbGFnKGJvb2wgdmFsdWUsIEV4
aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQpCisgICAgeworICAgICAgICBpZiAoIXZhbHVlKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgc3dpdGNoIChpbmxpbmVLaW5k
KSB7CisgICAgICAgIGNhc2UgRXhpdEZyb21BbnlJbmxpbmVLaW5kOgorICAgICAgICAgICAgbV9i
aXRzID0gdHJ1ZU5vdElubGluZWQgfCB0cnVlSW5saW5lZDsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIEV4aXRGcm9tTm90SW5saW5lZDoKKyAgICAgICAgICAgIG1fYml0cyA9IHRy
dWVOb3RJbmxpbmVkOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRXhpdEZyb21J
bmxpbmVkOgorICAgICAgICAgICAgbV9iaXRzID0gdHJ1ZUlubGluZWQ7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBFeGl0RmxhZyBvcGVyYXRvcnwoY29u
c3QgRXhpdEZsYWcmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgRXhpdEZsYWcgcmVzdWx0
OworICAgICAgICByZXN1bHQubV9iaXRzID0gbV9iaXRzIHwgb3RoZXIubV9iaXRzOworICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICBFeGl0RmxhZyYgb3BlcmF0b3J8PShj
b25zdCBFeGl0RmxhZyYgb3RoZXIpCisgICAgeworICAgICAgICAqdGhpcyA9ICp0aGlzIHwgb3Ro
ZXI7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisgICAgCisgICAgRXhpdEZsYWcgb3Bl
cmF0b3ImKGNvbnN0IEV4aXRGbGFnJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIEV4aXRG
bGFnIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1fYml0cyA9IG1fYml0cyAmIG90aGVyLm1fYml0
czsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgRXhpdEZsYWcmIG9w
ZXJhdG9yJj0oY29uc3QgRXhpdEZsYWcmIG90aGVyKQorICAgIHsKKyAgICAgICAgKnRoaXMgPSAq
dGhpcyAmIG90aGVyOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorICAgIAorICAgIGV4
cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEhbV9i
aXRzOworICAgIH0KKyAgICAKKyAgICBib29sIGlzU2V0KEV4aXRpbmdJbmxpbmVLaW5kIGlubGlu
ZUtpbmQpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISEoKnRoaXMgJiBFeGl0RmxhZyh0
cnVlLCBpbmxpbmVLaW5kKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3Qg
dHJ1ZU5vdElubGluZWQgPSAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCB0cnVlSW5s
aW5lZCA9IDI7CisgICAgCisgICAgdWludDhfdCBtX2JpdHMgeyAwIH07Cit9OworCit9IC8vIG5h
bWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRp
bmdJbmxpbmVLaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0aW5nSW5saW5lS2luZC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRXhpdGluZ0lubGluZUtpbmQu
aCIKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgV1RGIHsKKwor
dXNpbmcgbmFtZXNwYWNlIEpTQzsKKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBv
dXQsIEV4aXRpbmdJbmxpbmVLaW5kIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAg
Y2FzZSBFeGl0RnJvbUFueUlubGluZUtpbmQ6CisgICAgICAgIG91dC5wcmludCgiRnJvbUFueUlu
bGluZUtpbmQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRXhpdEZyb21Ob3RJbmxpbmVk
OgorICAgICAgICBvdXQucHJpbnQoIkZyb21Ob3RJbmxpbmVkIik7CisgICAgICAgIHJldHVybjsK
KyAgICBjYXNlIEV4aXRGcm9tSW5saW5lZDoKKyAgICAgICAgb3V0LnByaW50KCJGcm9tSW5saW5l
ZCIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuaAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgSlNDIHsKKwor
ZW51bSBFeGl0aW5nSW5saW5lS2luZCA6IHVpbnQ4X3QgeworICAgIEV4aXRGcm9tQW55SW5saW5l
S2luZCwKKyAgICBFeGl0RnJvbU5vdElubGluZWQsCisgICAgRXhpdEZyb21JbmxpbmVkLAorfTsK
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBQcmludFN0
cmVhbTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6RXhpdGluZ0lubGlu
ZUtpbmQpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDIzMjIy
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTIsMTIgKzUyLDE3IEBAIGJvb2wgR2V0QnlJZFN0YXR1czo6YXBw
ZW5kVmFyaWFudChjb25zdCAKIH0KIAogI2lmIEVOQUJMRShERkdfSklUKQotYm9vbCBHZXRCeUlk
U3RhdHVzOjpoYXNFeGl0U2l0ZShDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5
dGVjb2RlSW5kZXgpCitFeGl0RmxhZyBHZXRCeUlkU3RhdHVzOjpoYXNFeGl0U2l0ZShDb2RlQmxv
Y2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgVW5saW5r
ZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gcHJvZmlsZWRCbG9jay0+dW5saW5rZWRD
b2RlQmxvY2soKTsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHVubGlua2VkQ29kZUJs
b2NrLT5tX2xvY2spOwotICAgIHJldHVybiB1bmxpbmtlZENvZGVCbG9jay0+aGFzRXhpdFNpdGUo
bG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkQ2FjaGUpKQot
ICAgICAgICB8fCB1bmxpbmtlZENvZGVCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZy
ZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkQ29uc3RhbnRDYWNoZSkpOworICAgIGF1
dG8gZXhpdEZsYWcgPSBbJl0gKEV4aXRLaW5kIGV4aXRLaW5kKSAtPiBFeGl0RmxhZyB7CisgICAg
ICAgIGF1dG8gd2l0aElubGluZWQgPSBbJl0gKEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQp
IC0+IEV4aXRGbGFnIHsKKyAgICAgICAgICAgIHJldHVybiBFeGl0RmxhZyh1bmxpbmtlZENvZGVC
bG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJ
bmRleCwgZXhpdEtpbmQsIEV4aXRGcm9tQW55dGhpbmcsIGlubGluZUtpbmQpKSwgaW5saW5lS2lu
ZCk7CisgICAgICAgIH07CisgICAgICAgIHJldHVybiB3aXRoSW5saW5lZChFeGl0RnJvbU5vdElu
bGluZWQpIHwgd2l0aElubGluZWQoRXhpdEZyb21JbmxpbmVkKTsKKyAgICB9OworICAgIHJldHVy
biBleGl0RmxhZyhCYWRDYWNoZSkgfCBleGl0RmxhZyhCYWRDb25zdGFudENhY2hlKTsKIH0KICNl
bmRpZgogCkBAIC0xMDUsNyArMTEwLDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpj
b21wdXRlRnJvbQogICAgIH0KIH0KIAotR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21w
dXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgU3R1YkluZm9NYXAmIG1hcCwgdW5zaWdu
ZWQgYnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK0dldEJ5SWRTdGF0dXMg
R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIElDU3Rh
dHVzTWFwJiBtYXAsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQsIEV4aXRGbGFnIGRpZEV4aXQsIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgY2FsbEV4
aXRTaXRlRGF0YSkKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHByb2ZpbGVkQmxv
Y2stPm1fbG9jayk7CiAKQEAgLTExMywxMiArMTE4LDExIEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJ
ZFN0YXR1czo6Y29tcHV0ZUZvcigKIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIHJlc3VsdCA9
IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAotICAgICAgICBsb2Nr
ZXIsIHByb2ZpbGVkQmxvY2ssIG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4KSksIHVp
ZCwKLSAgICAgICAgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVFeGl0U2l0ZURhdGEocHJvZmlsZWRC
bG9jaywgYnl0ZWNvZGVJbmRleCkpOworICAgICAgICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssIG1h
cC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4KSkuc3R1YkluZm8sIHVpZCwKKyAgICAgICAg
Y2FsbEV4aXRTaXRlRGF0YSk7CiAgICAgCi0gICAgaWYgKCFyZXN1bHQudGFrZXNTbG93UGF0aCgp
Ci0gICAgICAgICYmIGhhc0V4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpKQot
ICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhyZXN1bHQubWFrZXNDYWxscygpID8gTWFrZXND
YWxscyA6IFRha2VzU2xvd1BhdGgsIHRydWUpOworICAgIGlmIChkaWRFeGl0KQorICAgICAgICBy
ZXR1cm4gcmVzdWx0LnNsb3dWZXJzaW9uKCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShtYXAp
OwogI2VuZGlmCkBAIC0xMzcsNyArMTQxLDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVz
Ojpjb21wdXRlRm9yUwogICAgICAgICBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0
YShwcm9maWxlZEJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpKTsKIAogICAgIGlmICgh
cmVzdWx0LnRha2VzU2xvd1BhdGgoKSAmJiBHZXRCeUlkU3RhdHVzOjpoYXNFeGl0U2l0ZShwcm9m
aWxlZEJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpKQotICAgICAgICByZXR1cm4gR2V0
QnlJZFN0YXR1cyhyZXN1bHQubWFrZXNDYWxscygpID8gR2V0QnlJZFN0YXR1czo6TWFrZXNDYWxs
cyA6IEdldEJ5SWRTdGF0dXM6OlRha2VzU2xvd1BhdGgsIHRydWUpOworICAgICAgICByZXR1cm4g
cmVzdWx0LnNsb3dWZXJzaW9uKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KICNlbmRpZiAvLyBF
TkFCTEUoREZHX0pJVCkKQEAgLTMxNCw0MCArMzE4LDMyIEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJ
ZFN0YXR1czo6Y29tcHV0ZUZvclMKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCiBHZXRCeUlkU3Rh
dHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgQ29kZUJsb2NrKiBwcm9maWxlZEJs
b2NrLCBDb2RlQmxvY2sqIGRmZ0Jsb2NrLCBTdHViSW5mb01hcCYgYmFzZWxpbmVNYXAsCi0gICAg
U3R1YkluZm9NYXAmIGRmZ01hcCwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkKQorICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgSUNTdGF0dXNNYXAmIGJh
c2VsaW5lTWFwLAorICAgIElDU3RhdHVzQ29udGV4dFN0YWNrJiBpY0NvbnRleHRTdGFjaywgQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogewotI2lmIEVOQUJM
RShERkdfSklUKQotICAgIGlmIChkZmdCbG9jaykgewotICAgICAgICBDYWxsTGlua1N0YXR1czo6
RXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YTsKLSAgICAgICAgewotICAgICAgICAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihwcm9maWxlZEJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAg
ZXhpdFNpdGVEYXRhID0gQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVFeGl0U2l0ZURhdGEoCi0gICAg
ICAgICAgICAgICAgcHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsKLSAg
ICAgICAgfQorICAgIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgY2FsbEV4aXRTaXRlRGF0
YSA9CisgICAgICAgIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKHByb2ZpbGVk
QmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7CisgICAgRXhpdEZsYWcgZGlkRXhpdCA9
IGhhc0V4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7Cisg
ICAgCisgICAgZm9yIChJQ1N0YXR1c0NvbnRleHQqIGNvbnRleHQgOiBpY0NvbnRleHRTdGFjaykg
eworICAgICAgICBJQ1N0YXR1cyBzdGF0dXMgPSBjb250ZXh0LT5nZXQoY29kZU9yaWdpbik7CiAg
ICAgICAgIAotICAgICAgICBHZXRCeUlkU3RhdHVzIHJlc3VsdDsKLSAgICAgICAgewotICAgICAg
ICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihkZmdCbG9jay0+bV9sb2NrKTsKLSAgICAg
ICAgICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNr
KAotICAgICAgICAgICAgICAgIGxvY2tlciwgZGZnQmxvY2ssIGRmZ01hcC5nZXQoY29kZU9yaWdp
biksIHVpZCwgZXhpdFNpdGVEYXRhKTsKKyAgICAgICAgaWYgKHN0YXR1cy5zdHViSW5mbykgewor
ICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb250ZXh0LT5vcHRpbWl6ZWRD
b2RlQmxvY2stPm1fbG9jayk7CisgICAgICAgICAgICBHZXRCeUlkU3RhdHVzIHJlc3VsdCA9IGNv
bXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAorICAgICAgICAgICAgICAg
IGxvY2tlciwgY29udGV4dC0+b3B0aW1pemVkQ29kZUJsb2NrLCBzdGF0dXMuc3R1YkluZm8sIHVp
ZCwgY2FsbEV4aXRTaXRlRGF0YSk7CisgICAgICAgICAgICBpZiAocmVzdWx0LmlzU2V0KCkpIHsK
KyAgICAgICAgICAgICAgICBpZiAoZGlkRXhpdC5pc1NldChjb250ZXh0LT5pbmxpbmVLaW5kKGNv
ZGVPcmlnaW4pKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5zbG93VmVyc2lv
bigpOworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICB9CiAgICAg
ICAgIH0KLQotICAgICAgICBpZiAocmVzdWx0LnRha2VzU2xvd1BhdGgoKSkKLSAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7Ci0gICAgCi0gICAgICAgIGlmIChoYXNFeGl0U2l0ZShwcm9maWxlZEJs
b2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpKQotICAgICAgICAgICAgcmV0dXJuIEdldEJ5
SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgdHJ1ZSk7CiAgICAgICAgIAotICAgICAgICBpZiAocmVz
dWx0LmlzU2V0KCkpCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICBpZiAoc3Rh
dHVzLmdldFN0YXR1cykKKyAgICAgICAgICAgIHJldHVybiAqc3RhdHVzLmdldFN0YXR1czsKICAg
ICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShkZmdCbG9jayk7Ci0gICAgVU5VU0VEX1BBUkFN
KGRmZ01hcCk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBjb21wdXRlRm9yKHByb2ZpbGVkQmxvY2ss
IGJhc2VsaW5lTWFwLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIHVpZCk7CisgICAgICAgIAor
ICAgIHJldHVybiBjb21wdXRlRm9yKHByb2ZpbGVkQmxvY2ssIGJhc2VsaW5lTWFwLCBjb2RlT3Jp
Z2luLmJ5dGVjb2RlSW5kZXgsIHVpZCwgY2FsbEV4aXRTaXRlRGF0YSk7CiB9CiAKIEdldEJ5SWRT
dGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCwg
VW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKQEAgLTQxNCw2ICs0MTAsMTEgQEAgYm9vbCBHZXRCeUlk
U3RhdHVzOjptYWtlc0NhbGxzKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK0dldEJ5
SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6c2xvd1ZlcnNpb24oKSBjb25zdAoreworICAgIHJldHVy
biBHZXRCeUlkU3RhdHVzKG1ha2VzQ2FsbHMoKSA/IE1ha2VzQ2FsbHMgOiBUYWtlc1Nsb3dQYXRo
LCB3YXNTZWVuSW5KSVQoKSk7Cit9CisKIHZvaWQgR2V0QnlJZFN0YXR1czo6ZmlsdGVyKGNvbnN0
IFN0cnVjdHVyZVNldCYgc2V0KQogewogICAgIGlmIChtX3N0YXRlICE9IFNpbXBsZSkKQEAgLTQy
Myw2ICs0MjQsMjUgQEAgdm9pZCBHZXRCeUlkU3RhdHVzOjpmaWx0ZXIoY29uc3QgU3RydWN0dQog
ICAgICAgICBtX3N0YXRlID0gTm9JbmZvcm1hdGlvbjsKIH0KIAordm9pZCBHZXRCeUlkU3RhdHVz
OjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBmb3IgKEdldEJ5SWRW
YXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykKKyAgICAgICAgdmFyaWF0Lm1hcmtJZkNoZWFw
KHZpc2l0b3IpOworfQorCitib29sIEdldEJ5SWRTdGF0dXM6OmZpbmFsaXplKCkKK3sKKyAgICBm
b3IgKEdldEJ5SWRWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykgeworICAgICAgICBpZiAo
IXZhcmlhbnQuZmluYWxpemUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgaWYgKG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0ICYmICFIZWFwOjppc01hcmtlZChtX21vZHVs
ZU5hbWVzcGFjZU9iamVjdCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9tb2R1
bGVFbnZpcm9ubWVudCAmJiAhSGVhcDo6aXNNYXJrZWQobV9tb2R1bGVFbnZpcm9ubWVudCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBHZXRCeUlk
U3RhdHVzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgb3V0LnByaW50KCIo
Iik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3Rh
dHVzLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9HZXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDkgQEAKICNpbmNs
dWRlICJDYWxsTGlua1N0YXR1cy5oIgogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRl
ICJDb25jdXJyZW50SlNMb2NrLmgiCisjaW5jbHVkZSAiRXhpdEZsYWcuaCIKICNpbmNsdWRlICJH
ZXRCeUlkVmFyaWFudC5oIgorI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCiAjaW5jbHVkZSAiU2Nv
cGVPZmZzZXQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00MCw4ICs0Miw2IEBAIGNsYXNzIEpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0OwogY2xhc3MgTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZTsK
IGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOwogCi10eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdpbiwg
U3RydWN0dXJlU3R1YkluZm8qLCBDb2RlT3JpZ2luQXBwcm94aW1hdGVIYXNoPiBTdHViSW5mb01h
cDsKLQogY2xhc3MgR2V0QnlJZFN0YXR1cyB7CiBwdWJsaWM6CiAgICAgZW51bSBTdGF0ZSB7CkBA
IC04MSwxMCArODEsMTAgQEAgcHVibGljOgogICAgICAgICBtX3ZhcmlhbnRzLmFwcGVuZCh2YXJp
YW50KTsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihD
b2RlQmxvY2sqLCBTdHViSW5mb01hcCYsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRT
dHJpbmdJbXBsKiB1aWQpOworICAgIHN0YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29k
ZUJsb2NrKiwgSUNTdGF0dXNNYXAmLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3Ry
aW5nSW1wbCogdWlkLCBFeGl0RmxhZywgQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0YSk7CiAg
ICAgc3RhdGljIEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihjb25zdCBTdHJ1Y3R1cmVTZXQmLCBV
bmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKICAgICAKLSAgICBzdGF0aWMgR2V0QnlJZFN0YXR1cyBj
b21wdXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgQ29kZUJsb2NrKiBkZmdCbG9jaywg
U3R1YkluZm9NYXAmIGJhc2VsaW5lTWFwLCBTdHViSW5mb01hcCYgZGZnTWFwLCBDb2RlT3JpZ2lu
LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKKyAgICBzdGF0aWMgR2V0QnlJZFN0YXR1cyBjb21w
dXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAmIGJhc2VsaW5lTWFw
LCBJQ1N0YXR1c0NvbnRleHRTdGFjayYgZGZnQ29udGV4dFN0YWNrLCBDb2RlT3JpZ2luLCBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkKTsKIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIHN0YXRpYyBH
ZXRCeUlkU3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mbyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXIm
LCBDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiwgQ29kZU9yaWdp
biwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7CkBAIC0xMDYsNiArMTA2LDggQEAgcHVibGljOgog
ICAgIGJvb2wgdGFrZXNTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gVGFrZXNT
bG93UGF0aCB8fCBtX3N0YXRlID09IE1ha2VzQ2FsbHMgfHwgbV9zdGF0ZSA9PSBDdXN0b20gfHwg
bV9zdGF0ZSA9PSBNb2R1bGVOYW1lc3BhY2U7IH0KICAgICBib29sIG1ha2VzQ2FsbHMoKSBjb25z
dDsKICAgICAKKyAgICBHZXRCeUlkU3RhdHVzIHNsb3dWZXJzaW9uKCkgY29uc3Q7CisgICAgCiAg
ICAgYm9vbCB3YXNTZWVuSW5KSVQoKSBjb25zdCB7IHJldHVybiBtX3dhc1NlZW5JbkpJVDsgfQog
ICAgIAogICAgIC8vIEF0dGVtcHRzIHRvIHJlZHVjZSB0aGUgc2V0IG9mIHZhcmlhbnRzIHRvIGZp
dCB0aGUgZ2l2ZW4gc3RydWN0dXJlIHNldC4gVGhpcyBtYXkgYmUgYXBwcm94aW1hdGUuCkBAIC0x
MTUsMTEgKzExNywxNCBAQCBwdWJsaWM6CiAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogbW9kdWxl
RW52aXJvbm1lbnQoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZUVudmlyb25tZW50OyB9CiAgICAg
U2NvcGVPZmZzZXQgc2NvcGVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlT2Zmc2V0OyB9
CiAgICAgCisgICAgdm9pZCBtYXJrSWZDaGVhcChTbG90VmlzaXRvciYpOworICAgIGJvb2wgZmlu
YWxpemUoKTsgLy8gUmV0dXJuIHRydWUgaWYgdGhpcyBnZXRzIHRvIGxpdmUuCisgICAgCiAgICAg
dm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgogI2lmIEVOQUJM
RShERkdfSklUKQotICAgIHN0YXRpYyBib29sIGhhc0V4aXRTaXRlKENvZGVCbG9jayosIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgpOworICAgIHN0YXRpYyBFeGl0RmxhZyBoYXNFeGl0U2l0ZShDb2Rl
QmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKICNlbmRpZgogI2lmIEVOQUJMRShKSVQp
CiAgICAgR2V0QnlJZFN0YXR1cyhjb25zdCBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlJik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFu
dC5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9HZXRCeUlkVmFyaWFudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNSw2ICsxMzUsMjQgQEAg
Ym9vbCBHZXRCeUlkVmFyaWFudDo6YXR0ZW1wdFRvTWVyZ2UoY29ucwogICAgIHJldHVybiB0cnVl
OwogfQogCit2b2lkIEdldEJ5SWRWYXJpYW50OjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYgdmlz
aXRvcikKK3sKKyAgICBtX3N0cnVjdHVyZVNldC5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKK30KKwor
Ym9vbCBHZXRCeUlkVmFyaWFudDo6ZmluYWxpemUoKQoreworICAgIGlmICghbV9zdHJ1Y3R1cmVT
ZXQuaXNTdGlsbEFsaXZlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fY29u
ZGl0aW9uU2V0LmFyZVN0aWxsTGl2ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KG1fY2FsbExpbmtTdGF0dXMgJiYgIW1fY2FsbExpbmtTdGF0dXMtPmZpbmFsaXplKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9pbnRyaW5zaWNGdW5jdGlvbiAmJiAhSGVhcDo6
aXNNYXJrZWQobV9pbnRyaW5zaWNGdW5jdGlvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBHZXRCeUlkVmFyaWFudDo6ZHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdAogewogICAgIGR1bXBJbkNvbnRleHQob3V0LCAwKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5oCShyZXZpc2lv
biAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlh
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNiArNzMsOSBAQCBwdWJsaWM6CiAKICAgICBib29s
IGF0dGVtcHRUb01lcmdlKGNvbnN0IEdldEJ5SWRWYXJpYW50JiBvdGhlcik7CiAgICAgCisgICAg
dm9pZCBtYXJrSWZDaGVhcChTbG90VmlzaXRvciYpOworICAgIGJvb2wgZmluYWxpemUoKTsKKyAg
ICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICB2b2lkIGR1bXBJbkNv
bnRleHQoUHJpbnRTdHJlYW0mLCBEdW1wQ29udGV4dCopIGNvbnN0OwogICAgIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFwLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNNYXAuY3BwCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSUNT
dGF0dXNNYXAuaCIKKworI2luY2x1ZGUgIlRlcm1pbmF0ZWRDb2RlT3JpZ2luLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitJQ1N0YXR1cyBJQ1N0YXR1c0NvbnRleHQ6OmdldChDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4pIGNvbnN0Cit7CisgICAgcmV0dXJuIG1hcC5nZXQ8VGVybWluYXRlZENvZGVPcmln
aW5IYXNoVHJhbnNsYXRvcj4oCisgICAgICAgIFRlcm1pbmF0ZWRDb2RlT3JpZ2luKGNvZGVPcmln
aW4sIGJhc2VsaW5lQ29kZUJsb2NrKSk7Cit9CisKK2Jvb2wgSUNTdGF0dXNDb250ZXh0Ojppc0lu
bGluZWQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luKSBjb25zdAoreworICAgIHJldHVybiBjb2RlT3Jp
Z2luLmlubGluZUNhbGxGcmFtZSAmJiBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+YmFzZWxp
bmVDb2RlQmxvY2suZ2V0KCkgIT0gYmFzZWxpbmVDb2RlQmxvY2s7Cit9CisKK0V4aXRpbmdJbmxp
bmVLaW5kIElDU3RhdHVzQ29udGV4dDo6aW5saW5lS2luZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4p
IGNvbnN0Cit7CisgICAgcmV0dXJuIGlzSW5saW5lZChjb2RlT3JpZ2luKSA/IEV4aXRGcm9tSW5s
aW5lZCA6IEV4aXRGcm9tTm90SW5saW5lZDsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDb2RlT3Jp
Z2luLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2Ns
YXNzIENhbGxMaW5rSW5mbzsKK2NsYXNzIENhbGxMaW5rU3RhdHVzOworY2xhc3MgQ29kZUJsb2Nr
OworY2xhc3MgR2V0QnlJZFN0YXR1czsKK2NsYXNzIFB1dEJ5SWRTdGF0dXM7CitjbGFzcyBTdHJ1
Y3R1cmVTdHViSW5mbzsKK3N0cnVjdCBCeVZhbEluZm87CisKK3N0cnVjdCBJQ1N0YXR1cyB7Cisg
ICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvIHsgbnVsbHB0ciB9OworICAgIENhbGxMaW5r
SW5mbyogY2FsbExpbmtJbmZvIHsgbnVsbHB0ciB9OworICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZv
IHsgbnVsbHB0ciB9OworICAgIENhbGxMaW5rU3RhdHVzKiBjYWxsU3RhdHVzIHsgbnVsbHB0ciB9
OworICAgIEdldEJ5SWRTdGF0dXMqIGdldFN0YXR1cyB7IG51bGxwdHIgfTsKKyAgICBQdXRCeUlk
U3RhdHVzKiBwdXRTdGF0dXMgeyBudWxscHRyIH07Cit9OworCit0eXBlZGVmIEhhc2hNYXA8Q29k
ZU9yaWdpbiwgSUNTdGF0dXMsIENvZGVPcmlnaW5BcHByb3hpbWF0ZUhhc2g+IElDU3RhdHVzTWFw
OworCitzdHJ1Y3QgSUNTdGF0dXNDb250ZXh0IHsKKyAgICBJQ1N0YXR1cyBnZXQoQ29kZU9yaWdp
bikgY29uc3Q7CisgICAgYm9vbCBpc0lubGluZWQoQ29kZU9yaWdpbikgY29uc3Q7CisgICAgRXhp
dGluZ0lubGluZUtpbmQgaW5saW5lS2luZChDb2RlT3JpZ2luKSBjb25zdDsKKyAgICAKKyAgICBD
b2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrIHsgbnVsbHB0ciB9OworICAgIENvZGVCbG9jayog
b3B0aW1pemVkQ29kZUJsb2NrIHsgbnVsbHB0ciB9OworICAgIElDU3RhdHVzTWFwIG1hcDsKK307
CisKK3R5cGVkZWYgVmVjdG9yPElDU3RhdHVzQ29udGV4dCosIDg+IElDU3RhdHVzQ29udGV4dFN0
YWNrOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NSwxMiArNTUsOSBAQCBib29sIFB1dEJ5SWRTdGF0dXM6OmFwcGVuZFZhcmlh
bnQoY29uc3QgCiB9CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKLWJvb2wgUHV0QnlJZFN0YXR1czo6
aGFzRXhpdFNpdGUoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUlu
ZGV4KQorRXhpdEZsYWcgUHV0QnlJZFN0YXR1czo6aGFzRXhpdFNpdGUoQ29kZUJsb2NrKiBwcm9m
aWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQogewotICAgIFVubGlua2VkQ29kZUJs
b2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IHByb2ZpbGVkQmxvY2stPnVubGlua2VkQ29kZUJsb2Nr
KCk7Ci0gICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcih1bmxpbmtlZENvZGVCbG9jay0+bV9s
b2NrKTsKLSAgICByZXR1cm4gdW5saW5rZWRDb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwg
REZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZENhY2hlKSkKLSAgICAgICAg
fHwgdW5saW5rZWRDb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4
aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZENvbnN0YW50Q2FjaGUpKTsKKyAgICByZXR1cm4gR2V0
QnlJZFN0YXR1czo6aGFzRXhpdFNpdGUocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCk7CiB9
CiAjZW5kaWYKIApAQCAtMTEwLDcgKzEwNyw3IEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1
czo6Y29tcHV0ZUZyb20KICAgICAgICAgc3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUsIGNvbmRpdGlv
blNldCwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUtPmluZmVycmVkVHlwZURlc2NyaXB0b3JGb3IodWlk
KSk7CiB9CiAKLVB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxv
Y2sqIHByb2ZpbGVkQmxvY2ssIFN0dWJJbmZvTWFwJiBtYXAsIHVuc2lnbmVkIGJ5dGVjb2RlSW5k
ZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6
OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBJQ1N0YXR1c01hcCYgbWFwLCB1
bnNpZ25lZCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBFeGl0RmxhZyBk
aWRFeGl0LCBDYWxsTGlua1N0YXR1czo6RXhpdFNpdGVEYXRhIGNhbGxFeGl0U2l0ZURhdGEpCiB7
CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihwcm9maWxlZEJsb2NrLT5tX2xvY2spOwog
ICAgIApAQCAtMTE4LDEzICsxMTUsMTIgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpj
b21wdXRlRm9yKAogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICAgICBVTlVTRURf
UEFSQU0odWlkKTsKICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBpZiAoaGFzRXhpdFNpdGUocHJv
ZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCkpCisgICAgaWYgKGRpZEV4aXQpCiAgICAgICAgIHJl
dHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgpOwogICAgIAotICAgIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbyA9IG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4KSk7Cisg
ICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvID0gbWFwLmdldChDb2RlT3JpZ2luKGJ5dGVj
b2RlSW5kZXgpKS5zdHViSW5mbzsKICAgICBQdXRCeUlkU3RhdHVzIHJlc3VsdCA9IGNvbXB1dGVG
b3JTdHViSW5mbygKLSAgICAgICAgbG9ja2VyLCBwcm9maWxlZEJsb2NrLCBzdHViSW5mbywgdWlk
LAotICAgICAgICBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YShwcm9maWxlZEJs
b2NrLCBieXRlY29kZUluZGV4KSk7CisgICAgICAgIGxvY2tlciwgcHJvZmlsZWRCbG9jaywgc3R1
YkluZm8sIHVpZCwgY2FsbEV4aXRTaXRlRGF0YSk7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAg
IHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIHVp
ZCk7CiAgICAgCkBAIC0yNjQsMzggKzI2MCwzMSBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0
dXM6OmNvbXB1dGVGb3JTCiB9CiAjZW5kaWYKIAotUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVz
Ojpjb21wdXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgQ29kZUJsb2NrKiBkZmdCbG9j
aywgU3R1YkluZm9NYXAmIGJhc2VsaW5lTWFwLCBTdHViSW5mb01hcCYgZGZnTWFwLCBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitQdXRCeUlkU3RhdHVzIFB1
dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJQ1N0YXR1
c01hcCYgYmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4dFN0YWNrJiBjb250ZXh0U3RhY2ssIENv
ZGVPcmlnaW4gY29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKLSNpZiBFTkFC
TEUoREZHX0pJVCkKLSAgICBpZiAoZGZnQmxvY2spIHsKLSAgICAgICAgaWYgKGhhc0V4aXRTaXRl
KGJhc2VsaW5lQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkpCi0gICAgICAgICAgICBy
ZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKLSAgICAgICAgQ2FsbExpbmtTdGF0
dXM6OkV4aXRTaXRlRGF0YSBleGl0U2l0ZURhdGE7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIENv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoYmFzZWxpbmVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAg
ICAgIGV4aXRTaXRlRGF0YSA9IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKAot
ICAgICAgICAgICAgICAgIGJhc2VsaW5lQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7
Ci0gICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICBQdXRCeUlkU3RhdHVzIHJlc3VsdDsK
LSAgICAgICAgewotICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihkZmdCbG9j
ay0+bV9sb2NrKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mbygKLSAg
ICAgICAgICAgICAgICBsb2NrZXIsIGRmZ0Jsb2NrLCBkZmdNYXAuZ2V0KGNvZGVPcmlnaW4pLCB1
aWQsIGV4aXRTaXRlRGF0YSk7CisgICAgQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0YSBjYWxs
RXhpdFNpdGVEYXRhID0KKyAgICAgICAgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVFeGl0U2l0ZURh
dGEocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsKKyAgICBFeGl0Rmxh
ZyBkaWRFeGl0ID0gaGFzRXhpdFNpdGUocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29k
ZUluZGV4KTsKKyAgICAKKyAgICBmb3IgKElDU3RhdHVzQ29udGV4dCogY29udGV4dCA6IGNvbnRl
eHRTdGFjaykgeworICAgICAgICBJQ1N0YXR1cyBzdGF0dXMgPSBjb250ZXh0LT5nZXQoY29kZU9y
aWdpbik7CisgICAgICAgIAorICAgICAgICBpZiAoc3RhdHVzLnN0dWJJbmZvKSB7CisgICAgICAg
ICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvbnRleHQtPm9wdGltaXplZENvZGVCbG9j
ay0+bV9sb2NrKTsKKyAgICAgICAgICAgIFB1dEJ5SWRTdGF0dXMgcmVzdWx0ID0gY29tcHV0ZUZv
clN0dWJJbmZvKAorICAgICAgICAgICAgICAgIGxvY2tlciwgY29udGV4dC0+b3B0aW1pemVkQ29k
ZUJsb2NrLCBzdGF0dXMuc3R1YkluZm8sIHVpZCwgZXhpdFNpdGVEYXRhKTsKKyAgICAgICAgICAg
IGlmIChyZXN1bHQuaXNTZXQoKSkgeworICAgICAgICAgICAgICAgIGlmIChkaWRFeGl0LmlzU2V0
KGNvbnRleHQtPmlubGluZUtpbmQoY29kZU9yaWdpbikpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0LnNsb3dWZXJzaW9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgLy8gV2UgdXNl
IFRha2VzU2xvd1BhdGggaW4gc29tZSBjYXNlcyB3aGVyZSB0aGUgc3R1YiB3YXMgdW5zZXQuIFRo
YXQncyB3ZWlyZCBhbmQKLSAgICAgICAgLy8gaXQgd291bGQgYmUgYmV0dGVyIG5vdCB0byBkbyB0
aGF0LiBCdXQgaXQgbWVhbnMgdGhhdCB3ZSBoYXZlIHRvIGRlZmVuZAotICAgICAgICAvLyBvdXJz
ZWx2ZXMgaGVyZS4KLSAgICAgICAgaWYgKHJlc3VsdC5pc1NpbXBsZSgpKQotICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICAgICAgaWYgKHN0YXR1cy5wdXRTdGF0dXMpCisgICAgICAgICAg
ICByZXR1cm4gKnN0YXR1cy5wdXRTdGF0dXM7CiAgICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0oZGZnQmxvY2spOwotICAgIFVOVVNFRF9QQVJBTShkZmdNYXApOwotI2VuZGlmCiAKLSAgICBy
ZXR1cm4gY29tcHV0ZUZvcihiYXNlbGluZUJsb2NrLCBiYXNlbGluZU1hcCwgY29kZU9yaWdpbi5i
eXRlY29kZUluZGV4LCB1aWQpOworICAgIHJldHVybiBjb21wdXRlRm9yKGJhc2VsaW5lQmxvY2ss
IGJhc2VsaW5lTWFwLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIHVpZCwgZGlkRXhpdCwgZXhp
dFNpdGVEYXRhKTsKIH0KIAogUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9y
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0LCBV
bmlxdWVkU3RyaW5nSW1wbCogdWlkLCBib29sIGlzRGlyZWN0KQpAQCAtMzk4LDYgKzM4NywzMCBA
QCBib29sIFB1dEJ5SWRTdGF0dXM6Om1ha2VzQ2FsbHMoKSBjb25zdAogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAordm9pZCBQdXRCeUlkU3RhdHVzOjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYgdmlz
aXRvcikKK3sKKyAgICBmb3IgKFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykK
KyAgICAgICAgdmFyaWFudC5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKK30KKworYm9vbCBQdXRCeUlk
U3RhdHVzOjpmaW5hbGl6ZSgpCit7CisgICAgZm9yIChQdXRCeUlkVmFyaWFudCYgdmFyaWFudCA6
IG1fdmFyaWFudHMpIHsKKyAgICAgICAgaWYgKCF2YXJpYW50LmZpbmFsaXplKCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFB1
dEJ5SWRTdGF0dXM6OmZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCkKK3sKKyAgICBpZiAo
bV9zdGF0ZSAhPSBTaW1wbGUpCisgICAgICAgIHJldHVybjsKKyAgICBmaWx0ZXJJQ1N0YXR1c1Zh
cmlhbnRzKG1fdmFyaWFudHMsIHNldCk7CisgICAgaWYgKG1fdmFyaWFudHMuaXNFbXB0eSgpKQor
ICAgICAgICBtX3N0YXRlID0gTm9JbmZvcm1hdGlvbjsKK30KKwogdm9pZCBQdXRCeUlkU3RhdHVz
OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChtX3N0YXRlKSB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVz
LmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIKKyNpbmNsdWRlICJFeGl0RmxhZy5o
IgorI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFZhcmlhbnQuaCIK
IAogbmFtZXNwYWNlIEpTQyB7CkBAIC02OSwxMCArNzEsMTAgQEAgcHVibGljOgogICAgICAgICBt
X3ZhcmlhbnRzLmFwcGVuZCh2YXJpYW50KTsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIFB1dEJ5
SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCBTdHViSW5mb01hcCYsIHVuc2lnbmVkIGJ5
dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOworICAgIHN0YXRpYyBQdXRCeUlk
U3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgSUNTdGF0dXNNYXAmLCB1bnNpZ25lZCBieXRl
Y29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBFeGl0RmxhZywgQ2FsbExpbmtTdGF0
dXM6OkV4aXRTaXRlRGF0YSk7CiAgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihK
U0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cnVjdHVyZVNldCYsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQsIGJvb2wgaXNEaXJlY3QpOwogICAgIAotICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1
dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBDb2RlQmxvY2sqIGRmZ0Jsb2NrLCBTdHVi
SW5mb01hcCYgYmFzZWxpbmVNYXAsIFN0dWJJbmZvTWFwJiBkZmdNYXAsIENvZGVPcmlnaW4sIFVu
aXF1ZWRTdHJpbmdJbXBsKiB1aWQpOworICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVG
b3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJQ1N0YXR1c01hcCYgYmFzZWxpbmVNYXAsIElD
U3RhdHVzTWFwJiBkZmdNYXAsIENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwog
CiAjaWYgRU5BQkxFKEpJVCkKICAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yU3R1
YkluZm8oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKiBiYXNlbGluZUJsb2Nr
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQp
OwpAQCAtOTEsMTEgKzkzLDE1IEBAIHB1YmxpYzoKICAgICBjb25zdCBQdXRCeUlkVmFyaWFudCYg
YXQoc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBtX3ZhcmlhbnRzW2luZGV4XTsgfQogICAg
IGNvbnN0IFB1dEJ5SWRWYXJpYW50JiBvcGVyYXRvcltdKHNpemVfdCBpbmRleCkgY29uc3QgeyBy
ZXR1cm4gYXQoaW5kZXgpOyB9CiAgICAgCisgICAgdm9pZCBtYXJrSWZDaGVhcChTbG90VmlzaXRv
ciYpOworICAgIGJvb2wgZmluYWxpemUoKTsKKyAgICB2b2lkIGZpbHRlcihjb25zdCBTdHJ1Y3R1
cmVTZXQmKTsKKyAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAK
IHByaXZhdGU6CiAjaWYgRU5BQkxFKERGR19KSVQpCi0gICAgc3RhdGljIGJvb2wgaGFzRXhpdFNp
dGUoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CisgICAgc3RhdGljIEV4aXRG
bGFnIGhhc0V4aXRTaXRlKENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9y
U3R1YkluZm8oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZh
cmlhbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRCeUlkVmFyaWFudC5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjA2
LDYgKzIwNiwyNiBAQCBib29sIFB1dEJ5SWRWYXJpYW50OjphdHRlbXB0VG9NZXJnZVRyYW5zCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgUHV0QnlJZFZhcmlhbnQ6Om1hcmtJZkNoZWFwKFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIG1fb2xkU3RydWN0dXJlLm1hcmtJZkNoZWFwKHZp
c2l0b3IpOworICAgIGlmIChtX25ld1N0cnVjdHVyZSkKKyAgICAgICAgbV9uZXdTdHJ1Y3R1cmUt
Pm1hcmtJZkNoZWFwKHZpc2l0b3IpOworfQorCitib29sIFB1dEJ5SWRWYXJpYW50OjpmaW5hbGl6
ZSgpCit7CisgICAgaWYgKCFtX29sZFN0cnVjdHVyZS5pc1N0aWxsQWxpdmUodmlzaXRvcikpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9uZXdTdHJ1Y3R1cmUgJiYgIUhlYXA6Omlz
TWFya2VkKG1fbmV3U3RydWN0dXJlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgh
bV9jb25kaXRpb25TZXQuYXJlU3RpbGxMaXZlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAobV9jYWxsTGlua1N0YXR1cyAmJiAhbV9jYWxsTGlua1N0YXR1cy0+ZmluYWxpemUoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIFB1dEJ5
SWRWYXJpYW50OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgZHVtcEluQ29u
dGV4dChvdXQsIDApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
SWRWYXJpYW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1B1dEJ5SWRWYXJpYW50LmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTczLDE3
ICs3MywxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX29sZFN0cnVjdHVyZTsKICAgICB9
CiAgICAgCi0gICAgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQoKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIHN0cnVjdHVyZSgpOwotICAgIH0KLSAgICAKICAgICBjb25zdCBT
dHJ1Y3R1cmVTZXQmIG9sZFN0cnVjdHVyZSgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQo
a2luZCgpID09IFRyYW5zaXRpb24gfHwga2luZCgpID09IFJlcGxhY2UgfHwga2luZCgpID09IFNl
dHRlcik7CiAgICAgICAgIHJldHVybiBtX29sZFN0cnVjdHVyZTsKICAgICB9CiAgICAgCisgICAg
Y29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG9sZFN0cnVjdHVyZSgpOworICAgIH0KKyAgICAKICAgICBTdHJ1Y3R1cmVTZXQmIG9s
ZFN0cnVjdHVyZSgpCiAgICAgewogICAgICAgICBBU1NFUlQoa2luZCgpID09IFRyYW5zaXRpb24g
fHwga2luZCgpID09IFJlcGxhY2UgfHwga2luZCgpID09IFNldHRlcik7CkBAIC0xMjksNiArMTI5
LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBhdHRlbXB0VG9NZXJnZShjb25zdCBQdXRCeUlkVmFy
aWFudCYgb3RoZXIpOwogICAgIAorICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKTsK
KyAgICBib29sIGZpbmFsaXplKCk7CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikg
Y29uc3Q7CiAgICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQq
KSBjb25zdDsKIApAQCAtMTM3LDcgKzE0MCw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgS2luZCBt
X2tpbmQ7CiAgICAgU3RydWN0dXJlU2V0IG1fb2xkU3RydWN0dXJlOwotICAgIFN0cnVjdHVyZSog
bV9uZXdTdHJ1Y3R1cmU7CisgICAgU3RydWN0dXJlKiBtX25ld1N0cnVjdHVyZSB7IG51bGxwdHIg
fTsKICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBtX2NvbmRpdGlvblNldDsKICAgICBQ
cm9wZXJ0eU9mZnNldCBtX29mZnNldDsKICAgICBJbmZlcnJlZFR5cGU6OkRlc2NyaXB0b3IgbV9y
ZXF1aXJlZFR5cGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3Jk
ZWRTdGF0dXNlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZWNvcmRlZFN0YXR1c2VzLmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitSZWNvcmRlZFN0YXR1c2VzJiBSZWNvcmRlZFN0YXR1c2VzOjpv
cGVyYXRvcj0oUmVjb3JkZWRTdGF0dXNlcyYmIG90aGVyKQoreworICAgIGNhbGxzID0gV1RGTW92
ZShvdGhlci5jYWxscyk7CisgICAgZ2V0cyA9IFdURk1vdmUob3RoZXIuZ2V0cyk7CisgICAgcHV0
cyA9IFdURk1vdmUob3RoZXIucHV0cyk7CisgICAgc2hyaW5rVG9GaXQoKTsKK30KKworUmVjb3Jk
ZWRTdGF0dXNlczo6UmVjb3JkZWRTdGF0dXNlcyhSZWNvcmRlZFN0YXR1c2VzJiYgb3RoZXIpCit7
CisgICAgKnRoaXMgPSBXVEZNb3ZlKG90aGVyKTsKK30KKworQ2FsbExpbmtTdGF0dXMqIFJlY29y
ZGVkU3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmln
aW4sIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBzdGF0dXMpCit7CisgICAgYXV0byBzdGF0dXNQdHIg
PSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxMaW5rU3RhdHVzPihzdGF0dXMpOworICAgIENhbGxMaW5r
U3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7CisgICAgY2FsbHMuYXBwZW5kKHN0ZDo6
bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3RhdHVzUHRyKSkpOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK0dldEJ5SWRTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZEdldEJ5SWRT
dGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgY29uc3QgR2V0QnlJZFN0YXR1cyYg
c3RhdHVzKQoreworICAgIGF1dG8gc3RhdHVzUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxHZXRCeUlk
U3RhdHVzPihzdGF0dXMpOworICAgIEdldEJ5SWRTdGF0dXMqIHJlc3VsdCA9IHN0YXR1c1B0ci5n
ZXQoKTsKKyAgICBnZXRzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihjb2RlT3JpZ2luLCBXVEZNb3Zl
KHN0YXR1c1B0cikpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorICAgIAorUHV0QnlJZFN0YXR1
cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkUHV0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBj
b2RlT3JpZ2luLCBjb25zdCBQdXRCeUlkU3RhdHVzJiBzdGF0dXMpCit7CisgICAgYXV0byBzdGF0
dXNQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPFB1dEJ5SWRTdGF0dXM+KHN0YXR1cyk7CisgICAgUHV0
QnlJZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOworICAgIHB1dHMuYXBwZW5kKHN0
ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3RhdHVzUHRyKSkpOworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK3ZvaWQgUmVjb3JkZWRTdGF0dXNlczo6bWFya0lmQ2hlYXAoU2xvdFZp
c2l0b3ImIHNsb3RWaXNpdG9yKQoreworICAgIGZvciAoYXV0byYgcGFpciA6IGdldHMpCisgICAg
ICAgIHBhaXIuc2Vjb25kLT5tYXJrSWZDaGVhcChzbG90VmlzaXRvcik7CisgICAgZm9yIChhdXRv
JiBwYWlyIDogcHV0cykKKyAgICAgICAgcGFpci5zZWNvbmQtPm1hcmtJZkNoZWFwKHNsb3RWaXNp
dG9yKTsKK30KKwordm9pZCBSZWNvcmRlZFN0YXR1c2VzOjpmaW5hbGl6ZSgpCit7CisgICAgYXV0
byBmaW5hbGl6ZSA9IFtdIChhdXRvJiB2ZWN0b3IpIHsKKyAgICAgICAgdmVjdG9yLnJlbW92ZUFs
bE1hdGNoaW5nKAorICAgICAgICAgICAgWyZdIChhdXRvJiBwYWlyKSAtPiBib29sIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gIXBhaXIuc2Vjb25kLT5maW5hbGl6ZSgpOworICAgICAgICAgICAg
fSk7CisgICAgICAgIHZlY3Rvci5zaHJpbmtUb0ZpdCgpOworICAgIH07CisgICAgZmluYWxpemUo
Y2FsbHMpOworICAgIGZpbmFsaXplKGdldHMpOworICAgIGZpbmFsaXplKHB1dHMpOworfQorCit2
b2lkIFJlY29yZGVkU3RhdHVzZXM6OnNocmlua1RvRml0KCkKK3sKKyAgICBjYWxscy5zaHJpbmtU
b0ZpdCgpOworICAgIGdldHMuc2hyaW5rVG9GaXQoKTsKKyAgICBwdXRzLnNocmlua1RvRml0KCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmgJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIK
KyNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgiCisjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IFJlY29yZGVkU3RhdHVzZXMgeworICAgIFJlY29y
ZGVkU3RhdHVzZXMoKSB7IH0KKyAgICAKKyAgICBSZWNvcmRlZFN0YXR1c2VzJiBvcGVyYXRvcj0o
Y29uc3QgUmVjb3JkZWRTdGF0dXNlcyYgb3RoZXIpID0gZGVsZXRlOworICAgIAorICAgIFJlY29y
ZGVkU3RhdHVzZXMmIG9wZXJhdG9yPShSZWNvcmRlZFN0YXR1c2VzJiYgb3RoZXIpOworICAgIAor
ICAgIFJlY29yZGVkU3RhdHVzZXMoY29uc3QgUmVjb3JkZWRTdGF0dXNlcyYgb3RoZXIpID0gZGVs
ZXRlOworICAgIAorICAgIFJlY29yZGVkU3RhdHVzZXMoUmVjb3JkZWRTdGF0dXNlcyYmIG90aGVy
KTsKKyAgICAKKyAgICBDYWxsTGlua1N0YXR1cyogYWRkQ2FsbExpbmtTdGF0dXMoY29uc3QgQ29k
ZU9yaWdpbiYsIGNvbnN0IENhbGxMaW5rU3RhdHVzJik7CisgICAgR2V0QnlJZFN0YXR1cyogYWRk
R2V0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29uc3QgR2V0QnlJZFN0YXR1cyYpOwor
ICAgIFB1dEJ5SWRTdGF0dXMqIGFkZFB1dEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYsIGNv
bnN0IFB1dEJ5SWRTdGF0dXMmKTsKKyAgICAKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNp
dG9yJiBzbG90VmlzaXRvcik7CisgICAgCisgICAgdm9pZCBmaW5hbGl6ZSgpOworICAgIAorICAg
IHZvaWQgc2hyaW5rVG9GaXQoKTsKKyAgICAKKyAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmln
aW4sIHN0ZDo6dW5pcXVlX3B0cjxDYWxsTGlua1N0YXR1cz4+PiBjYWxsczsKKyAgICBWZWN0b3I8
c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxHZXRCeUlkU3RhdHVzPj4+IGdl
dHM7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8UHV0
QnlJZFN0YXR1cz4+PiBwdXRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuY3BwCShyZXZp
c2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw2ICszMSwyMSBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAordm9pZCBTdHJ1Y3R1cmVTZXQ6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNp
dG9yKSBjb25zdAoreworICAgIGZvciAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgOiAqdGhpcykKKyAg
ICAgICAgc3RydWN0dXJlLT5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKK30KKworYm9vbCBTdHJ1Y3R1
cmVTZXQ6OmlzU3RpbGxBbGl2ZSgpIGNvbnN0Cit7CisgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA6ICp0aGlzKSB7CisgICAgICAgIGlmICghSGVhcDo6aXNNYXJrZWQoc3RydWN0dXJlKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisK
IHZvaWQgU3RydWN0dXJlU2V0OjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBD
b250ZXh0KiBjb250ZXh0KSBjb25zdAogewogICAgIENvbW1hUHJpbnRlciBjb21tYTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmgJKHJldmlz
aW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVT
ZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEsIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU4LDYgKzU4LDkgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgcmV0dXJuIG9ubHlFbnRyeSgpOwogICAgIH0KKworICAgIHZvaWQgbWFya0lm
Q2hlYXAoU2xvdFZpc2l0b3ImKSBjb25zdDsKKyAgICBib29sIGlzU3RpbGxBbGl2ZSgpIGNvbnN0
OwogICAgIAogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0
KikgY29uc3Q7CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVGVybWluYXRlZENvZGVPcmlnaW4uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVGVybWluYXRlZENvZGVPcmln
aW4uaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVGVy
bWluYXRlZENvZGVPcmlnaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQor
CituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IFRlcm1pbmF0ZWRDb2RlT3JpZ2luIHsKKyAgICBU
ZXJtaW5hdGVkQ29kZU9yaWdpbigpIHsgfQorICAgIAorICAgIFRlcm1pbmF0ZWRDb2RlT3JpZ2lu
KGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIENvZGVCbG9jayogdGVybWluYWwpCisgICAg
ICAgIDogY29kZU9yaWdpbihjb2RlT3JpZ2luKQorICAgICAgICAsIHRlcm1pbmFsKHRlcm1pbmFs
KQorICAgIHsKKyAgICB9CisgICAgCisgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luOworICAgIENv
ZGVCbG9jayogdGVybWluYWwgeyBudWxscHRyIH07Cit9OworCitzdHJ1Y3QgVGVybWluYXRlZENv
ZGVPcmlnaW5IYXNoVHJhbnNsYXRvciB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3Qg
VGVybWluYXRlZENvZGVPcmlnaW4mIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbHVl
LmNvZGVPcmlnaW4uYXBwcm94aW1hdGVIYXNoKHZhbHVlLnRlcm1pbmFsKTsKKyAgICB9CisgICAg
CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgQ29kZU9yaWdpbiYgYSwgY29uc3QgVGVybWlu
YXRlZENvZGVPcmlpZ24mIGIpCisgICAgeworICAgICAgICByZXR1cm4gYi5jb2RlT3JpZ2luLmFw
cHJveGltYXRlbHlFcXVhbChhLCBiLnRlcm1pbmFsKTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVz
cGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMjMyMjI3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNDk5LDYgKzM0OTksMjUgQEAgYm9vbCBBYnN0cmFjdEludGVy
cHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgIGNhc2UgWm9tYmllSGludDoKICAgICBjYXNlIEV4
aXRPSzoKICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtT
dGF0dXM6CisgICAgICAgIGlmIChKU1ZhbHVlIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEo
KSkubV92YWx1ZSkKKyAgICAgICAgICAgIG5vZGUtPmNhbGxMaW5rU3RhdHVzKCkuZmlsdGVyKG1f
dm0sIHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgIGNhc2UgRmlsdGVyR2V0
QnlJZFN0YXR1czogeworICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICBpZiAodmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkK
KyAgICAgICAgICAgIG5vZGUtPmdldEJ5SWRTdGF0dXMoKS5maWx0ZXIobV92YWx1ZS5tX3N0cnVj
dHVyZS50b1N0cnVjdHVyZVNldCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAgICAK
KyAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6IHsKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSYg
dmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgaWYgKHZhbHVlLm1fc3Ry
dWN0dXJlLmlzRmluaXRlKCkpCisgICAgICAgICAgICBub2RlLT5wdXRCeUlkU3RhdHVzKCkuZmls
dGVyKG1fdmFsdWUubV9zdHJ1Y3R1cmUudG9TdHJ1Y3R1cmVTZXQoKSk7CisgICAgICAgIGJyZWFr
OworICAgIH0KIAogICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0ZsYWdzOiB7CiAgICAgICAgIGNvbnN0
IEFic3RyYWN0VmFsdWUmIGFic3RyYWN0VmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA4Miw5ICsxMDgyLDggQEAgcHJp
dmF0ZToKICAgICAgICAgLy8gY29kZSBibG9jayBoYWQgZ2F0aGVyZWQuCiAgICAgICAgIExhenlP
cGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyIG1fbGF6eU9wZXJhbmRzOwogICAgICAgICAKLSAgICAg
ICAgQ2FsbExpbmtJbmZvTWFwIG1fY2FsbExpbmtJbmZvczsKLSAgICAgICAgU3R1YkluZm9NYXAg
bV9zdHViSW5mb3M7Ci0gICAgICAgIEJ5VmFsSW5mb01hcCBtX2J5VmFsSW5mb3M7CisgICAgICAg
IElDU3RhdHVzTWFwIG1fYmFzZWxpbmVNYXA7CisgICAgICAgIElDU3RhdHVzQ29udGV4dCBtX29w
dGltaXplZENvbnRleHQ7CiAgICAgICAgIAogICAgICAgICAvLyBQb2ludGVycyB0byB0aGUgYXJn
dW1lbnQgcG9zaXRpb24gdHJhY2tlcnMgZm9yIHRoaXMgc2xpY2Ugb2YgY29kZS4KICAgICAgICAg
VmVjdG9yPEFyZ3VtZW50UG9zaXRpb24qPiBtX2FyZ3VtZW50UG9zaXRpb25zOwpAQCAtMTEwMiwx
MCArMTEwMSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWU6OktpbmQs
CiAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBjb250aW51YXRpb25CbG9jayk7CiAgICAgICAgIAot
ICAgICAgICB+SW5saW5lU3RhY2tFbnRyeSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1fYnl0
ZUNvZGVQYXJzZXItPm1faW5saW5lU3RhY2tUb3AgPSBtX2NhbGxlcjsKLSAgICAgICAgfQorICAg
ICAgICB+SW5saW5lU3RhY2tFbnRyeSgpOwogICAgICAgICAKICAgICAgICAgVmlydHVhbFJlZ2lz
dGVyIHJlbWFwT3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkgY29uc3QKICAgICAgICAg
ewpAQCAtMTEyMCw2ICsxMTE2LDggQEAgcHJpdmF0ZToKICAgICAKICAgICBJbmxpbmVTdGFja0Vu
dHJ5KiBtX2lubGluZVN0YWNrVG9wOwogICAgIAorICAgIElDU3RhdHVzQ29udGV4dFN0YWNrIG1f
aWNDb250ZXh0U3RhY2s7CisgICAgCiAgICAgc3RydWN0IERlbGF5ZWRTZXRMb2NhbCB7CiAgICAg
ICAgIENvZGVPcmlnaW4gbV9vcmlnaW47CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBtX29wZXJh
bmQ7CkBAIC0xMTQ2LDEwICsxMTQ0LDYgQEAgcHJpdmF0ZToKICAgICAKICAgICBWZWN0b3I8RGVs
YXllZFNldExvY2FsLCAyPiBtX3NldExvY2FsUXVldWU7CiAKLSAgICBDb2RlQmxvY2sqIG1fZGZn
Q29kZUJsb2NrOwotICAgIENhbGxMaW5rU3RhdHVzOjpDb250ZXh0TWFwIG1fY2FsbENvbnRleHRN
YXA7Ci0gICAgU3R1YkluZm9NYXAgbV9kZmdTdHViSW5mb3M7Ci0gICAgCiAgICAgSW5zdHJ1Y3Rp
b24qIG1fY3VycmVudEluc3RydWN0aW9uOwogICAgIGJvb2wgbV9oYXNEZWJ1Z2dlckVuYWJsZWQ7
CiB9OwpAQCAtMTIxNCw3ICsxMjA4LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5
dGVDb2RlUGFycwogCiAgICAgQ2FsbExpbmtTdGF0dXMgY2FsbExpbmtTdGF0dXMgPSBDYWxsTGlu
a1N0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrLCBjdXJyZW50Q29kZU9yaWdpbigpLAotICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5t
X2NhbGxMaW5rSW5mb3MsIG1fY2FsbENvbnRleHRNYXApOworICAgICAgICBtX2lubGluZVN0YWNr
VG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrKTsKIAogICAgIElubGluZUNhbGxG
cmFtZTo6S2luZCBraW5kID0gSW5saW5lQ2FsbEZyYW1lOjpraW5kRm9yKGNhbGxNb2RlKTsKIApA
QCAtMTI0Miw2ICsxMjM2LDggQEAgQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2Rl
UGFycwogICAgIC8vIElmIHdlIGhhdmUgcHJvZmlsaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoaXMg
Y2FsbCwgYW5kIGl0IGRpZCBub3QgYmVoYXZlIHRvbyBwb2x5bW9ycGhpY2FsbHksCiAgICAgLy8g
d2UgbWF5IGJlIGFibGUgdG8gaW5saW5lIGl0LCBvciBpbiB0aGUgY2FzZSBvZiByZWN1cnNpdmUg
dGFpbCBjYWxscyB0dXJuIGl0IGludG8gYSBqdW1wLgogICAgIGlmIChjYWxsTGlua1N0YXR1cy5j
YW5PcHRpbWl6ZSgpKSB7CisgICAgICAgIGFkZFRvR3JhcGgoRmlsdGVyQ2FsbExpbmtTdGF0dXMs
IE9wSW5mbyhtX2dyYXBoLm1fcGxhbnMucmVjb3JkZWRTdGF0dXNlcy5hZGRDYWxsTGlua1N0YXR1
cyhjdXJyZW50Q29kZU9yaWdpbigpLCBjYWxsTGlua1N0YXR1cykpLCBjYWxsVGFyZ2V0KTsKKyAg
ICAgICAgCiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQgPSB2aXJ0dWFsUmVn
aXN0ZXJGb3JBcmd1bWVudCgwLCByZWdpc3Rlck9mZnNldCk7CiAgICAgICAgIGF1dG8gb3B0aW1p
emF0aW9uUmVzdWx0ID0gaGFuZGxlSW5saW5pbmcoY2FsbFRhcmdldCwgcmVzdWx0LCBjYWxsTGlu
a1N0YXR1cywgcmVnaXN0ZXJPZmZzZXQsIHRoaXNBcmd1bWVudCwKICAgICAgICAgICAgIGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzLCBtX2N1cnJlbnRJbmRleCArIGluc3RydWN0aW9uU2l6ZSwg
b3AsIGtpbmQsIHByZWRpY3Rpb24pOwpAQCAtMTI3OSwxMiArMTI3NSwxNCBAQCBCeXRlQ29kZVBh
cnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzCiAgICAgCiAgICAgQ2FsbExpbmtTdGF0dXMg
Y2FsbExpbmtTdGF0dXMgPSBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgbV9p
bmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBjdXJyZW50Q29kZU9yaWdpbigpLAotICAg
ICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxMaW5rSW5mb3MsIG1fY2FsbENvbnRleHRNYXAp
OworICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0
YWNrKTsKICAgICByZWZpbmVTdGF0aWNhbGx5KGNhbGxMaW5rU3RhdHVzLCBjYWxsVGFyZ2V0KTsK
ICAgICAKICAgICBWRVJCT1NFX0xPRygiICAgIFZhcmFyZ3MgY2FsbCBsaW5rIHN0YXR1cyBhdCAi
LCBjdXJyZW50Q29kZU9yaWdpbigpLCAiOiAiLCBjYWxsTGlua1N0YXR1cywgIlxuIik7CiAgICAg
CiAgICAgaWYgKGNhbGxMaW5rU3RhdHVzLmNhbk9wdGltaXplKCkpIHsKKyAgICAgICAgYWRkVG9H
cmFwaChGaWx0ZXJDYWxsTGlua1N0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFucy5yZWNvcmRl
ZFN0YXR1c2VzLmFkZENhbGxMaW5rU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIGNhbGxMaW5r
U3RhdHVzKSksIGNhbGxUYXJnZXQpOworICAgICAgICAKICAgICAgICAgaWYgKGhhbmRsZVZhcmFy
Z3NJbmxpbmluZyhjYWxsVGFyZ2V0LCByZXN1bHQsCiAgICAgICAgICAgICBjYWxsTGlua1N0YXR1
cywgZmlyc3RGcmVlUmVnLCBWaXJ0dWFsUmVnaXN0ZXIodGhpc1JlZyksIFZpcnR1YWxSZWdpc3Rl
cihhcmd1bWVudHMpLAogICAgICAgICAgICAgZmlyc3RWYXJBcmdPZmZzZXQsIG9wLApAQCAtMzMx
OCw5ICszMzE2LDEyIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVEdldHRlcigK
ICAgICBpZiAoIWNoZWNrKHZhcmlhbnQuY29uZGl0aW9uU2V0KCkpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRk
U3RydWN0dXJlU2V0KHZhcmlhbnQuc3RydWN0dXJlU2V0KCkpKSwgdGhpc05vZGUpOwotCisgICAg
CiAgICAgLy8gV2UgZG8gbm90IG5lZWQgdG8gZW1pdCBDaGVja0NlbGwgdGhpbmd5IGhlcmUuIFdo
ZW4gdGhlIGN1c3RvbSBhY2Nlc3NvciBpcyByZXBsYWNlZCB0byBkaWZmZXJlbnQgb25lLCBTdHJ1
Y3R1cmUgdHJhbnNpdGlvbiBvY2N1cnMuCiAgICAgYWRkVG9HcmFwaChDaGVja1N1YkNsYXNzLCBP
cEluZm8oZG9tQXR0cmlidXRlLmNsYXNzSW5mbyksIHRoaXNOb2RlKTsKKyAgICAKKyAgICBib29s
IHdhc1NlZW5JbkpJVCA9IHRydWU7CisgICAgYWRkVG9HcmFwaChGaWx0ZXJHZXRCeUlkU3RhdHVz
LCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcy5hZGRHZXRCeUlkU3RhdHVz
KGN1cnJlbnRDb2RlT3JpZ2luKCksIEdldEJ5SWRTdGF0dXMoR2V0QnlJZFN0YXR1czo6Q3VzdG9t
LCB3YXNTZWVuSW5KSVQsIHZhcmlhbnQpKSksIHRoaXNOb2RlKTsKIAogICAgIENhbGxET01HZXR0
ZXJEYXRhKiBjYWxsRE9NR2V0dGVyRGF0YSA9IG1fZ3JhcGgubV9jYWxsRE9NR2V0dGVyRGF0YS5h
ZGQoKTsKICAgICBjYWxsRE9NR2V0dGVyRGF0YS0+Y3VzdG9tQWNjZXNzb3JHZXR0ZXIgPSB2YXJp
YW50LmN1c3RvbUFjY2Vzc29yR2V0dGVyKCk7CkBAIC0zMzUyLDYgKzMzNTMsOCBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVNb2R1bGVOYW1lc3BhCiAgICAgaWYgKG1faW5saW5lU3RhY2tU
b3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENlbGwpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYWRkVG9HcmFwaChDaGVja0NlbGwsIE9wSW5mbyht
X2dyYXBoLmZyZWV6ZShnZXRCeUlkLm1vZHVsZU5hbWVzcGFjZU9iamVjdCgpKSksIEVkZ2UoYmFz
ZSwgQ2VsbFVzZSkpOworICAgIAorICAgIGFkZFRvR3JhcGgoRmlsdGVyR2V0QnlJZFN0YXR1cywg
T3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkR2V0QnlJZFN0YXR1cyhj
dXJyZW50Q29kZU9yaWdpbigpLCBnZXRCeUlkKSksIGJhc2UpOwogCiAgICAgLy8gSWRlYWxseSB3
ZSB3b3VsZG4ndCBoYXZlIHRvIGRvIHRoaXMgUGhhbnRvbS4gQnV0OgogICAgIC8vCkBAIC00MDA3
LDE0ICs0MDEwLDI1IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgCisgICAgLy8gRklYTUU6IElmIHdlIHVzZSB0aGUgR2V0
QnlJZFN0YXR1cyBmb3IgYW55dGhpbmcgdGhlbiB3ZSBzaG91bGQgcmVjb3JkIGl0IGFuZCBpbnNl
cnQgYSBub2RlCisgICAgLy8gYWZ0ZXIgZXZlcnl0aGluZyBlbHNlIChsaWtlIHRoZSBHZXRCeU9m
ZnNldCBvciB3aGF0ZXZlcikgdGhhdCB3aWxsIGZpbHRlciB0aGUgcmVjb3JkZWQKKyAgICAvLyBH
ZXRCeUlkU3RhdHVzLiBUaGF0IG1lYW5zIHRoYXQgdGhlIGNvbnN0YW50IGZvbGRlciBhbHNvIG5l
ZWRzIHRvIGRvIHRoZSBzYW1lIQorICAgIAogICAgIGlmIChnZXRCeUlkU3RhdHVzLm51bVZhcmlh
bnRzKCkgPiAxKSB7CiAgICAgICAgIGlmIChnZXRCeUlkU3RhdHVzLm1ha2VzQ2FsbHMoKSB8fCAh
aXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkKLSAgICAgICAgICAgIHx8ICFPcHRpb25zOjp1c2VQ
b2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nKCkpIHsKKyAgICAgICAgICAgIHx8ICFPcHRpb25zOjp1
c2VQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nKCkKKyAgICAgICAgICAgIHx8IGdldEJ5SWRTdGF0
dXMubnVtVmFyaWFudHMoKSA+IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdM
aXN0U2l6ZSgpKSB7CisgICAgICAgICAgICBpZiAoZmFsc2UgJiYgZ2V0QnlJZFN0YXR1cy5udW1W
YXJpYW50cygpID4gT3B0aW9uczo6bWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXpl
KCkpIHsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJBdCAiLCBjdXJyZW50Q29kZU9yaWdpbigp
LCAiXG4iKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJHaXZpbmcgdXAgb246ICIsIGdldEJ5
SWRTdGF0dXMsICJcbiIpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgc2V0KFZpcnR1YWxS
ZWdpc3RlcihkZXN0aW5hdGlvbk9wZXJhbmQpLAogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgo
Z2V0QnlJZCwgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIpLCBPcEluZm8ocHJlZGljdGlvbiksIGJh
c2UpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAg
YWRkVG9HcmFwaChGaWx0ZXJHZXRCeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVj
b3JkZWRTdGF0dXNlcy5hZGRHZXRCeUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIGdldEJ5
SWRTdGF0dXMpKSwgYmFzZSk7CisgICAgICAgIAogICAgICAgICBWZWN0b3I8TXVsdGlHZXRCeU9m
ZnNldENhc2UsIDI+IGNhc2VzOwogICAgICAgICAKICAgICAgICAgLy8gMSkgRW1pdCBwcm90b3R5
cGUgc3RydWN0dXJlIGNoZWNrcyBmb3IgYWxsIGNoYWlucy4gVGhpcyBjb3VsZCBzb3J0IG9mIG1h
eWJlIG5vdCBiZQpAQCAtNDA1NiwxMCArNDA3MCwxMiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVHZXRCeUlkKAogICAgICAgICAgICAgYWRkVG9HcmFwaChNdWx0aUdldEJ5T2Zmc2V0LCBP
cEluZm8oZGF0YSksIE9wSW5mbyhwcmVkaWN0aW9uKSwgYmFzZSkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQorCisgICAgYWRkVG9HcmFwaChGaWx0ZXJHZXRCeUlkU3RhdHVzLCBPcEluZm8obV9n
cmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcy5hZGRHZXRCeUlkU3RhdHVzKGN1cnJlbnRDb2Rl
T3JpZ2luKCksIGdldEJ5SWRTdGF0dXMpKSwgYmFzZSk7CiAgICAgCiAgICAgQVNTRVJUKGdldEJ5
SWRTdGF0dXMubnVtVmFyaWFudHMoKSA9PSAxKTsKICAgICBHZXRCeUlkVmFyaWFudCB2YXJpYW50
ID0gZ2V0QnlJZFN0YXR1c1swXTsKLSAgICAgICAgICAgICAgICAKKyAgICAKICAgICBOb2RlKiBs
b2FkZWRWYWx1ZSA9IGxvYWQocHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFy
aWFudCk7CiAgICAgaWYgKCFsb2FkZWRWYWx1ZSkgewogICAgICAgICBzZXQoVmlydHVhbFJlZ2lz
dGVyKGRlc3RpbmF0aW9uT3BlcmFuZCksCkBAIC00MTUwLDcgKzQxNjYsMTAgQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICAKICAgICBpZiAocHV0QnlJZFN0YXR1cy5u
dW1WYXJpYW50cygpID4gMSkgewogICAgICAgICBpZiAoIWlzRlRMKG1fZ3JhcGgubV9wbGFuLm1v
ZGUpIHx8IHB1dEJ5SWRTdGF0dXMubWFrZXNDYWxscygpCi0gICAgICAgICAgICB8fCAhT3B0aW9u
czo6dXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZygpKSB7CisgICAgICAgICAgICB8fCAhT3B0
aW9uczo6dXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZygpCisgICAgICAgICAgICB8fCBwdXRC
eUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgPiBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0FjY2Vzc0lu
bGluaW5nTGlzdFNpemUoKSkgeworICAgICAgICAgICAgaWYgKGZhbHNlICYmIHB1dEJ5SWRTdGF0
dXMubnVtVmFyaWFudHMoKSA+IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdM
aXN0U2l6ZSgpKQorICAgICAgICAgICAgICAgIGRhdGFMb2coIkdpdmluZyB1cCBvbjogIiwgcHV0
QnlJZFN0YXR1cywgIlxuIik7CiAgICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlm
aWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CkBAIC00MTY4LDYgKzQxODcsOCBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVQdXRCeUlkKAogICAgICAgICAKICAgICAgICAgaWYgKFVOTElLRUxZKG1fZ3Jh
cGguY29tcGlsYXRpb24oKSkpCiAgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9uKCktPm5v
dGljZUlubGluZWRQdXRCeUlkKCk7CisgICAgICAgIAorICAgICAgICBhZGRUb0dyYXBoKEZpbHRl
clB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFk
ZFB1dEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0YXR1cykpLCBiYXNl
KTsKIAogICAgICAgICBmb3IgKGNvbnN0IFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50IDogcHV0QnlJ
ZFN0YXR1cy52YXJpYW50cygpKSB7CiAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVySW5mZXJy
ZWRUeXBlKHZhcmlhbnQucmVxdWlyZWRUeXBlKCkpOwpAQCAtNDE4OSw2ICs0MjEwLDggQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICAKICAgICBzd2l0Y2ggKHZhcmlh
bnQua2luZCgpKSB7CiAgICAgY2FzZSBQdXRCeUlkVmFyaWFudDo6UmVwbGFjZTogeworICAgICAg
ICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5y
ZWNvcmRlZFN0YXR1c2VzLmFkZFB1dEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgcHV0
QnlJZFN0YXR1cykpLCBiYXNlKTsKKyAgICAgICAgCiAgICAgICAgIHN0b3JlKGJhc2UsIGlkZW50
aWZpZXJOdW1iZXIsIHZhcmlhbnQsIHZhbHVlKTsKICAgICAgICAgaWYgKFVOTElLRUxZKG1fZ3Jh
cGguY29tcGlsYXRpb24oKSkpCiAgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9uKCktPm5v
dGljZUlubGluZWRQdXRCeUlkKCk7CkBAIC00MTk2LDYgKzQyMTksOCBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgIH0KICAgICAKICAgICBjYXNlIFB1dEJ5SWRWYXJp
YW50OjpUcmFuc2l0aW9uOiB7CisgICAgICAgIGFkZFRvR3JhcGgoRmlsdGVyUHV0QnlJZFN0YXR1
cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkUHV0QnlJZFN0YXR1
cyhjdXJyZW50Q29kZU9yaWdpbigpLCBwdXRCeUlkU3RhdHVzKSksIGJhc2UpOworICAgICAgICAK
ICAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3Ry
dWN0dXJlU2V0KHZhcmlhbnQub2xkU3RydWN0dXJlKCkpKSwgYmFzZSk7CiAgICAgICAgIGlmICgh
Y2hlY2sodmFyaWFudC5jb25kaXRpb25TZXQoKSkpIHsKICAgICAgICAgICAgIGVtaXRQdXRCeUlk
KGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCk7
CkBAIC00MjYzLDYgKzQyODgsOCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlk
KAogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBQdXRCeUlkVmFyaWFudDo6U2V0dGVyOiB7Cisg
ICAgICAgIGFkZFRvR3JhcGgoRmlsdGVyUHV0QnlJZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9w
bGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkUHV0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigp
LCBwdXRCeUlkU3RhdHVzKSksIGJhc2UpOworICAgICAgICAKICAgICAgICAgTm9kZSogbG9hZGVk
VmFsdWUgPSBsb2FkKFNwZWNDZWxsT3RoZXIsIGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIHZhcmlh
bnQpOwogICAgICAgICBpZiAoIWxvYWRlZFZhbHVlKSB7CiAgICAgICAgICAgICBlbWl0UHV0QnlJ
ZChiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3Qp
OwpAQCAtNTAyNCw3ICs1MDUxLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZAogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IDA7CiAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2lu
bGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICAgICAg
QnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2lubGluZVN0YWNrVG9wLT5tX2J5VmFsSW5mb3MuZ2V0
KENvZGVPcmlnaW4oY3VycmVudENvZGVPcmlnaW4oKS5ieXRlY29kZUluZGV4KSk7CisgICAgICAg
ICAgICAgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2Vs
aW5lTWFwLmdldChDb2RlT3JpZ2luKGN1cnJlbnRDb2RlT3JpZ2luKCkuYnl0ZWNvZGVJbmRleCkp
LmJ5VmFsSW5mbzsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2hlbiB0aGUgYnl0ZWNvZGUg
aXMgbm90IGNvbXBpbGVkIGluIHRoZSBiYXNlbGluZSBKSVQsIGJ5VmFsSW5mbyBiZWNvbWVzIG51
bGwuCiAgICAgICAgICAgICAgICAgLy8gQXQgdGhhdCB0aW1lLCB0aGVyZSBpcyBubyBpbmZvcm1h
dGlvbi4KICAgICAgICAgICAgICAgICBpZiAoYnlWYWxJbmZvCkBAIC01MDkzLDcgKzUxMjAsNyBA
QCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAg
ICAgUHV0QnlJZFN0YXR1cyBwdXRCeUlkU3RhdHVzOwogICAgICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2lubGluZVN0YWNrVG9w
LT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICAgICAgICAgIEJ5VmFsSW5m
byogYnlWYWxJbmZvID0gbV9pbmxpbmVTdGFja1RvcC0+bV9ieVZhbEluZm9zLmdldChDb2RlT3Jp
Z2luKGN1cnJlbnRDb2RlT3JpZ2luKCkuYnl0ZWNvZGVJbmRleCkpOworICAgICAgICAgICAgICAg
ICAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVN
YXAuZ2V0KENvZGVPcmlnaW4oY3VycmVudENvZGVPcmlnaW4oKS5ieXRlY29kZUluZGV4KSkuYnlW
YWxJbmZvOwogICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2hlbiB0aGUgYnl0ZWNvZGUg
aXMgbm90IGNvbXBpbGVkIGluIHRoZSBiYXNlbGluZSBKSVQsIGJ5VmFsSW5mbyBiZWNvbWVzIG51
bGwuCiAgICAgICAgICAgICAgICAgICAgIC8vIEF0IHRoYXQgdGltZSwgdGhlcmUgaXMgbm8gaW5m
b3JtYXRpb24uCiAgICAgICAgICAgICAgICAgICAgIGlmIChieVZhbEluZm8gCkBAIC01MTk5LDgg
KzUyMjYsOCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBoLmlk
ZW50aWZpZXJzKClbaWRlbnRpZmllck51bWJlcl07CiAgICAgICAgICAgICBHZXRCeUlkU3RhdHVz
IGdldEJ5SWRTdGF0dXMgPSBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAotICAgICAgICAgICAg
ICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgbV9kZmdDb2RlQmxvY2ssCi0g
ICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9zdHViSW5mb3MsIG1fZGZnU3R1Yklu
Zm9zLAorICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywK
KyAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29u
dGV4dFN0YWNrLAogICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCksIHVpZCk7CiAK
ICAgICAgICAgICAgIEFjY2Vzc1R5cGUgdHlwZSA9IEFjY2Vzc1R5cGU6OkdldDsKQEAgLTUyNDMs
OCArNTI3MCw4IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAg
ICAgICAgICAgIGJvb2wgZGlyZWN0ID0gY3VycmVudEluc3RydWN0aW9uWzhdLnUucHV0QnlJZEZs
YWdzICYgUHV0QnlJZElzRGlyZWN0OwogCiAgICAgICAgICAgICBQdXRCeUlkU3RhdHVzIHB1dEJ5
SWRTdGF0dXMgPSBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAotICAgICAgICAgICAgICAgIG1f
aW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgbV9kZmdDb2RlQmxvY2ssCi0gICAgICAg
ICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9zdHViSW5mb3MsIG1fZGZnU3R1YkluZm9zLAor
ICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKKyAgICAg
ICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0
YWNrLAogICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCksIG1fZ3JhcGguaWRlbnRp
ZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGhh
bmRsZVB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMs
IGRpcmVjdCk7CkBAIC02NjAzLDEyICs2NjMwLDIwIEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVT
dGFja0VudHJ5OjpJbmxpbmUKICAgICAgICAgLy8gV2UgZG8gdGhpcyB3aGlsZSBob2xkaW5nIHRo
ZSBsb2NrIGJlY2F1c2Ugd2Ugd2FudCB0byBlbmNvdXJhZ2UgU3RydWN0dXJlU3R1YkluZm8ncwog
ICAgICAgICAvLyB0byBiZSBwb3RlbnRpYWxseSBhZGRlZCB0byBvcGVyYXRpb25zIGFuZCBiZWNh
dXNlIHRoZSBwcm9maWxlZCBibG9jayBjb3VsZCBiZSBpbiB0aGUKICAgICAgICAgLy8gbWlkZGxl
IG9mIExMSW50LT5KSVQgdGllci11cCBpbiB3aGljaCBjYXNlIHdlIHdvdWxkIGJlIGFkZGluZyB0
aGUgaW5mbydzIHJpZ2h0IG5vdy4KLSAgICAgICAgaWYgKG1fcHJvZmlsZWRCbG9jay0+aGFzQmFz
ZWxpbmVKSVRQcm9maWxpbmcoKSkgewotICAgICAgICAgICAgbV9wcm9maWxlZEJsb2NrLT5nZXRT
dHViSW5mb01hcChsb2NrZXIsIG1fc3R1YkluZm9zKTsKLSAgICAgICAgICAgIG1fcHJvZmlsZWRC
bG9jay0+Z2V0Q2FsbExpbmtJbmZvTWFwKGxvY2tlciwgbV9jYWxsTGlua0luZm9zKTsKLSAgICAg
ICAgICAgIG1fcHJvZmlsZWRCbG9jay0+Z2V0QnlWYWxJbmZvTWFwKGxvY2tlciwgbV9ieVZhbElu
Zm9zKTsKKyAgICAgICAgaWYgKG1fcHJvZmlsZWRCbG9jay0+aGFzQmFzZWxpbmVKSVRQcm9maWxp
bmcoKSkKKyAgICAgICAgICAgIG1fcHJvZmlsZWRCbG9jay0+Z2V0SUNTdGF0dXNNYXAobG9ja2Vy
LCBtX2Jhc2VsaW5lTWFwKTsKKyAgICB9CisgICAgCisgICAgbV9vcHRpbWl6ZWRDb250ZXh0LmJh
c2VsaW5lQ29kZUJsb2NrID0gbV9wcm9maWxlZEJsb2NrOworICAgIGlmIChPcHRpb25zOjp1c2VQ
b2x5dmFyaWFudERldmlydHVhbGl6YXRpb24oKSkgeworICAgICAgICBDb2RlQmxvY2sqIG9wdGlt
aXplZEJsb2NrID0gbV9wcm9maWxlZEJsb2NrLT5yZXBsYWNlbWVudCgpOworICAgICAgICBtX29w
dGltaXplZENvbnRleHQub3B0aW1pemVkQ29kZUJsb2NrID0gb3B0aW1pemVkQmxvY2s7CisgICAg
ICAgIGlmIChvcHRpbWl6ZWRCbG9jaykgeworICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2Vy
IGxvY2tlcihvcHRpbWl6ZWRCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgIG9wdGltaXplZEJs
b2NrLT5nZXRJQ1N0YXR1c01hcChsb2NrZXIsIG1fb3B0aW1pemVkQ29udGV4dC5tYXApOwogICAg
ICAgICB9CiAgICAgfQorICAgIG1faWNDb250ZXh0U3RhY2suYXBwZW5kKCZtX29wdGltaXplZENv
bnRleHQpOwogICAgIAogICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1dpdGhGaXh1
cCA9IHN0ZDo6bWF4PGludD4oYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGNvZGVCbG9jay0+
bnVtUGFyYW1ldGVycygpKTsKIApAQCAtNjY3Myw2ICs2NzA4LDEzIEBAIEJ5dGVDb2RlUGFyc2Vy
OjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmUKICAgICBieXRlQ29kZVBhcnNlci0+bV9pbmxpbmVT
dGFja1RvcCA9IHRoaXM7CiB9CiAKK0J5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5Ojp+
SW5saW5lU3RhY2tFbnRyeSgpCit7CisgICAgbV9ieXRlQ29kZVBhcnNlci0+bV9pbmxpbmVTdGFj
a1RvcCA9IG1fY2FsbGVyOworICAgIFJFTEVBU0VfQVNTRVJUKG1fYnl0ZUNvZGVQYXJzZXItPm1f
aWNDb250ZXh0U3RhY2subGFzdCgpID09ICZtX29wdGltaXplZENvbnRleHQpOworICAgIG1fYnl0
ZUNvZGVQYXJzZXItPm1faWNDb250ZXh0U3RhY2sucmVtb3ZlTGFzdCgpOworfQorCiB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiB7CiAgICAgY2xlYXJDYWNoZXMoKTsKQEAg
LTY3NjksMTUgKzY4MTEsNiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAgICAgCiAg
ICAgVkVSQk9TRV9MT0coIlBhcnNpbmcgIiwgKm1fY29kZUJsb2NrLCAiXG4iKTsKICAgICAKLSAg
ICBtX2RmZ0NvZGVCbG9jayA9IG1fZ3JhcGgubV9wbGFuLnByb2ZpbGVkREZHQ29kZUJsb2NrOwot
ICAgIGlmIChpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSAmJiBtX2RmZ0NvZGVCbG9jawotICAg
ICAgICAmJiBPcHRpb25zOjp1c2VQb2x5dmFyaWFudERldmlydHVhbGl6YXRpb24oKSkgewotICAg
ICAgICBpZiAoT3B0aW9uczo6dXNlUG9seXZhcmlhbnRDYWxsSW5saW5pbmcoKSkKLSAgICAgICAg
ICAgIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlREZHU3RhdHVzZXMobV9kZmdDb2RlQmxvY2ssIG1f
Y2FsbENvbnRleHRNYXApOwotICAgICAgICBpZiAoT3B0aW9uczo6dXNlUG9seXZhcmlhbnRCeUlk
SW5saW5pbmcoKSkKLSAgICAgICAgICAgIG1fZGZnQ29kZUJsb2NrLT5nZXRTdHViSW5mb01hcCht
X2RmZ1N0dWJJbmZvcyk7Ci0gICAgfQotICAgIAogICAgIElubGluZVN0YWNrRW50cnkgaW5saW5l
U3RhY2tFbnRyeSgKICAgICAgICAgdGhpcywgbV9jb2RlQmxvY2ssIG1fcHJvZmlsZWRCbG9jaywg
MCwgVmlydHVhbFJlZ2lzdGVyKCksIFZpcnR1YWxSZWdpc3RlcigpLAogICAgICAgICBtX2NvZGVC
bG9jay0+bnVtUGFyYW1ldGVycygpLCBJbmxpbmVDYWxsRnJhbWU6OkNhbGwsIG51bGxwdHIpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9u
IDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NDYsNiArNDQ2LDkgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZQogICAgIGNhc2UgUHJvZmlsZUNvbnRyb2xGbG93OgogICAgIGNhc2Ug
UHV0SGludDoKICAgICBjYXNlIEluaXRpYWxpemVFbnRyeXBvaW50QXJndW1lbnRzOgorICAgIGNh
c2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJHZXRCeUlkU3RhdHVzOgor
ICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgd3JpdGUoU2lkZVN0YXRlKTsK
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzUsNiArNzUsOSBAQCBib29sIGNsb2JiZXJzRXhpdFN0YXRlKEdyYXBo
JiBncmFwaCwgTm9kCiAgICAgY2FzZSBGZW5jZWRTdG9yZUJhcnJpZXI6CiAgICAgY2FzZSBBbGxv
Y2F0ZVByb3BlcnR5U3RvcmFnZToKICAgICBjYXNlIFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6
CisgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICBjYXNlIEZpbHRlckdldEJ5SWRT
dGF0dXM6CisgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICAvLyBUaGVzZSBk
byBjbG9iYmVyIG1lbW9yeSwgYnV0IG5vdGhpbmcgdGhhdCBpcyBvYnNlcnZhYmxlLiBJdCBtYXkg
YmUgbmljZSB0byBzZXBhcmF0ZSB0aGUKICAgICAgICAgLy8gaGVhcHMgaW50byB0aG9zZSB0aGF0
IGFyZSBvYnNlcnZhYmxlIGFuZCB0aG9zZSB0aGF0IGFyZW4ndCwgYnV0IHdlIGRvbid0IGRvIHRo
YXQgcmlnaHQgbm93LgogICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0ODQ0MApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb21tb25EYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb21tb25EYXRhLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29tbW9uRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAj
aW5jbHVkZSAiSW5saW5lQ2FsbEZyYW1lU2V0LmgiCiAjaW5jbHVkZSAiSlNDYXN0LmgiCiAjaW5j
bHVkZSAiUHJvZmlsZXJDb21waWxhdGlvbi5oIgorI2luY2x1ZGUgIlJlY29yZGVkU3RhdHVzZXMu
aCIKICNpbmNsdWRlIDx3dGYvQmFnLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAK
QEAgLTEyNSw2ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgQmFnPENvZGVCbG9ja0pldHRpc29uaW5n
V2F0Y2hwb2ludD4gd2F0Y2hwb2ludHM7CiAgICAgQmFnPEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hw
b2ludD4gYWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50czsKICAgICBCYWc8QWRhcHRpdmVJbmZl
cnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50PiBhZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1
ZVdhdGNocG9pbnRzOworICAgIFJlY29yZGVkU3RhdHVzZXMgcmVjb3JkZWRTdGF0dXNlczsKICAg
ICBWZWN0b3I8SnVtcFJlcGxhY2VtZW50PiBqdW1wUmVwbGFjZW1lbnRzOwogICAgIAogICAgIFNj
cmF0Y2hCdWZmZXIqIGNhdGNoT1NSRW50cnlCdWZmZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkocmV2aXNp
b24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1Nyw3ICs1NTcsMTUgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICBhdXRvIGFkZEZpbHRlclN0YXR1cyA9IFsmXSAoKSB7CisgICAg
ICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAg
ICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBGaWx0ZXJHZXRCeUlkU3RhdHVzLCBu
b2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5tX3Bs
YW4ucmVjb3JkZWRTdGF0dXNlcy5hZGRHZXRCeUlkU3RhdHVzKG5vZGUtPm9yaWdpbi5zZW1hbnRp
Yywgc3RhdHVzKSksCisgICAgICAgICAgICAgICAgICAgICAgICBiYXNlVmFsdWUpOworICAgICAg
ICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKHN0YXR1
cy5udW1WYXJpYW50cygpID09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgYWRkRmlsdGVyU3Rh
dHVzKCk7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRHZXRCeU9mZnNldChpbmRleEluQmxvY2ss
IG5vZGUsIGJhc2VWYWx1ZSwgc3RhdHVzWzBdLCBpZGVudGlmaWVyTnVtYmVyKTsKICAgICAgICAg
ICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpA
QCAtNTY2LDYgKzU3NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaWYgKCFpc0ZUTCht
X2dyYXBoLm1fcGxhbi5tb2RlKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgYWRkRmlsdGVyU3RhdHVzKCk7CiAgICAgICAgICAg
ICAgICAgTXVsdGlHZXRCeU9mZnNldERhdGEqIGRhdGEgPSBtX2dyYXBoLm1fbXVsdGlHZXRCeU9m
ZnNldERhdGEuYWRkKCk7CiAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBHZXRCeUlkVmFyaWFu
dCYgdmFyaWFudCA6IHN0YXR1cy52YXJpYW50cygpKSB7CiAgICAgICAgICAgICAgICAgICAgIGRh
dGEtPmNhc2VzLmFwcGVuZCgKQEAgLTYzOSw2ICs2NDgsMTEgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICBpZiAoIWFsbEdvb2QpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisg
ICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIEZpbHRlclB1dEJ5SWRT
dGF0dXMsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGgu
bV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkUHV0QnlJZFN0YXR1cyhub2RlLT5vcmlnaW4uc2Vt
YW50aWMsIHN0YXR1cykpLAorICAgICAgICAgICAgICAgICAgICBiYXNlVmFsdWUpOworICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChzdGF0dXMubnVtVmFyaWFudHMoKSA9PSAx
KSB7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRQdXRCeU9mZnNldChpbmRleEluQmxvY2ssIG5v
ZGUsIGJhc2VWYWx1ZSwgc3RhdHVzWzBdLCBpZGVudGlmaWVyTnVtYmVyKTsKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0Mu
Y3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMiw2ICszMTIsOSBAQCBib29sIGRvZXNHQyhH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBBdG9taWNzWG9yOgogICAgIGNhc2Ug
QXRvbWljc0lzTG9ja0ZyZWU6CiAgICAgY2FzZSBNYXRjaFN0cnVjdHVyZToKKyAgICBjYXNlIEZp
bHRlckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICBj
YXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNh
c2UgUHVzaFdpdGhTY29wZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzOCw2ICsyMTM4LDkg
QEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRHbG9iYWxUaGlzOgogICAgICAgICBjYXNlIEV4
dHJhY3RWYWx1ZUZyb21XZWFrTWFwR2V0OgogICAgICAgICBjYXNlIENQVUludHJpbnNpYzoKKyAg
ICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJHZXRC
eUlkU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgICAg
ICBicmVhazsKICNlbHNlCiAgICAgICAgIGRlZmF1bHQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1Niw2ICszNTYsMTIg
QEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdAogICAgICAgICBvdXQu
cHJpbnQoY29tbWEsICJpZ25vcmVMYXN0SW5kZXhJc1dyaXRhYmxlID0gIiwgbm9kZS0+aWdub3Jl
TGFzdEluZGV4SXNXcml0YWJsZSgpKTsKICAgICBpZiAobm9kZS0+aXNDb25zdGFudCgpKQogICAg
ICAgICBvdXQucHJpbnQoY29tbWEsIHBvaW50ZXJEdW1wSW5Db250ZXh0KG5vZGUtPmNvbnN0YW50
KCksIGNvbnRleHQpKTsKKyAgICBpZiAobm9kZS0+aGFzQ2FsbExpbmtTdGF0dXMoKSkKKyAgICAg
ICAgb3V0LnByaW50KGNvbW1hLCAqbm9kZS0+Y2FsbExpbmtTdGF0dXMoKSk7CisgICAgaWYgKG5v
ZGUtPmhhc0dldEJ5SWRTdGF0dXMoKSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAqbm9kZS0+
Z2V0QnlJZFN0YXR1cygpKTsKKyAgICBpZiAobm9kZS0+aGFzUHV0QnlJZFN0YXR1cygpKQorICAg
ICAgICBvdXQucHJpbnQoY29tbWEsICpub2RlLT5wdXRCeUlkU3RhdHVzKCkpOwogICAgIGlmIChu
b2RlLT5pc0p1bXAoKSkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiVDoiLCAqbm9kZS0+dGFy
Z2V0QmxvY2soKSk7CiAgICAgaWYgKG5vZGUtPmlzQnJhbmNoKCkpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMjMyMjI3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE4OCw2ICsxODgsOCBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRXhjZXB0
aW9uSGFuZGxlCiAKIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0J1ZmZl
cikKIHsKKyAgICBtX2ppdENvZGUtPmNvbW1vbi5yZWNvcmRlZFN0YXR1c2VzID0gV1RGTW92ZSht
X2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKTsKKyAgICAKICAgICAvLyBMaW5rIHRoZSBj
b2RlLCBwb3B1bGF0ZSBkYXRhIGluIENvZGVCbG9jayBkYXRhIHN0cnVjdHVyZXMuCiAgICAgbV9q
aXRDb2RlLT5jb21tb24uZnJhbWVSZWdpc3RlckNvdW50ID0gbV9ncmFwaC5mcmFtZVJlZ2lzdGVy
Q291bnQoKTsKICAgICBtX2ppdENvZGUtPmNvbW1vbi5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JF
eGl0ID0gbV9ncmFwaC5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0KCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwMSw2ICsxMDEsOSBAQCBFeGl0TW9kZSBtYXlFeGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5v
ZGUqCiAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVk
UmVzdWx0OgogICAgIGNhc2UgTnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseToKKyAgICBjYXNl
IEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKKyAg
ICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBT
dHJDYXQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMjMy
MjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI3NjksNiArMjc2OSwzOSBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChvcCgpID09
IFRocm93U3RhdGljRXJyb3IpOwogICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8dWludDMyX3Q+
KCk7CiAgICAgfQorICAgIAorICAgIGJvb2wgaGFzQ2FsbExpbmtTdGF0dXMoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG9wKCkgPT0gRmlsdGVyQ2FsbExpbmtTdGF0dXM7CisgICAgfQorICAgIAor
ICAgIENhbGxMaW5rU3RhdHVzKiBjYWxsTGlua1N0YXR1cygpCisgICAgeworICAgICAgICBBU1NF
UlQoaGFzQ2FsbExpbmtTdGF0dXMoKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mby5hczxDYWxs
TGlua1N0YXR1cyo+KCk7CisgICAgfQorICAgIAorICAgIGJvb2wgaGFzR2V0QnlJZFN0YXR1cygp
CisgICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBGaWx0ZXJHZXRCeUlkU3RhdHVzOworICAg
IH0KKyAgICAKKyAgICBHZXRCeUlkU3RhdHVzKiBnZXRCeUlkU3RhdHVzKCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChoYXNHZXRCeUlkU3RhdHVzKCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm8u
YXM8R2V0QnlJZFN0YXR1cyo+KCk7CisgICAgfQorICAgIAorICAgIGJvb2wgaGFzUHV0QnlJZFN0
YXR1cygpCisgICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBGaWx0ZXJQdXRCeUlkU3RhdHVz
OworICAgIH0KKyAgICAKKyAgICBQdXRCeUlkU3RhdHVzKiBwdXRCeUlkU3RhdHVzKCkKKyAgICB7
CisgICAgICAgIEFTU0VSVChoYXNQdXRCeUlkU3RhdHVzKCkpOworICAgICAgICByZXR1cm4gbV9v
cEluZm8uYXM8UHV0QnlJZFN0YXR1cyo+KCk7CisgICAgfQogCiAgICAgdm9pZCBkdW1wQ2hpbGRy
ZW4oUHJpbnRTdHJlYW0mIG91dCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5NCwxMSArMzk0LDggQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEdldEFyZ3VtZW50LCBO
b2RlUmVzdWx0SlMpIFwKICAgICBcCiAgICAgbWFjcm8oTmV3RnVuY3Rpb24sIE5vZGVSZXN1bHRK
UykgXAotICAgIFwKICAgICBtYWNybyhOZXdHZW5lcmF0b3JGdW5jdGlvbiwgTm9kZVJlc3VsdEpT
KSBcCi0gICAgXAogICAgIG1hY3JvKE5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24sIE5vZGVSZXN1
bHRKUykgXAotICAgIFwKICAgICBtYWNybyhOZXdBc3luY0Z1bmN0aW9uLCBOb2RlUmVzdWx0SlMp
IFwKICAgICBcCiAgICAgLyogQmxvY2sgdGVybWluYWxzLiAqL1wKQEAgLTQ3NSw2ICs0NzIsMTEg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIFwKICAgICAvKiBVc2VkIGZv
ciAkdm0gcGVyZm9ybWFuY2UgZGVidWdnaW5nICovIFwKICAgICBtYWNybyhDUFVJbnRyaW5zaWMs
IE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBcCisgICAgLyogVXNlZCB0
byBwcm92aWRlIGZlZWRiYWNrIHRvIHRoZSBJQyBwcm9maWxlci4gKi8gXAorICAgIG1hY3JvKEZp
bHRlckNhbGxMaW5rU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oRmlsdGVy
R2V0QnlJZFN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEZpbHRlclB1dEJ5
SWRTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKIAogCiAvLyBUaGlzIGVudW0gZ2VuZXJhdGVz
IGEgbW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIGlkIGZvciBhbGwgTm9kZSB0eXBlcywKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdEJhc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdEJhc2UuY3BwCShyZXZpc2lv
biAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRCYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC00MiwxMSArNDIsMTcgQEAgdm9pZCBPU1JFeGl0QmFzZTo6
Y29uc2lkZXJBZGRpbmdBc0ZyZXF1ZQogICAgICAgICBiYXNlbGluZUNvZGVCbG9ja0Zvck9yaWdp
bkFuZEJhc2VsaW5lQ29kZUJsb2NrKAogICAgICAgICAgICAgbV9jb2RlT3JpZ2luRm9yRXhpdFBy
b2ZpbGUsIHByb2ZpbGVkQ29kZUJsb2NrKTsKICAgICBpZiAoc291cmNlUHJvZmlsZWRDb2RlQmxv
Y2spIHsKKyAgICAgICAgRXhpdGluZ0lubGluZUtpbmQgaW5saW5lS2luZDsKKyAgICAgICAgaWYg
KG1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlLmlubGluZUNhbGxGcmFtZSkKKyAgICAgICAgICAg
IGlubGluZUtpbmQgPSBFeGl0RnJvbUlubGluZWQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGlubGluZUtpbmQgPSBFeGl0RnJvbU5vdElubGluZWQ7CisgICAgICAgIAogICAgICAgICBGcmVx
dWVudEV4aXRTaXRlIHNpdGU7CiAgICAgICAgIGlmIChtX3dhc0hvaXN0ZWQpCi0gICAgICAgICAg
ICBzaXRlID0gRnJlcXVlbnRFeGl0U2l0ZShIb2lzdGluZ0ZhaWxlZCwgaml0VHlwZSk7CisgICAg
ICAgICAgICBzaXRlID0gRnJlcXVlbnRFeGl0U2l0ZShIb2lzdGluZ0ZhaWxlZCwgaml0VHlwZSwg
aW5saW5lS2luZCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNpdGUgPSBGcmVxdWVudEV4
aXRTaXRlKG1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlLmJ5dGVjb2RlSW5kZXgsIG1fa2luZCwg
aml0VHlwZSk7CisgICAgICAgICAgICBzaXRlID0gRnJlcXVlbnRFeGl0U2l0ZShtX2NvZGVPcmln
aW5Gb3JFeGl0UHJvZmlsZS5ieXRlY29kZUluZGV4LCBtX2tpbmQsIGppdFR5cGUsIGlubGluZUtp
bmQpOwogICAgICAgICBFeGl0UHJvZmlsZTo6YWRkKHNvdXJjZVByb2ZpbGVkQ29kZUJsb2NrLCBz
aXRlKTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJ
KHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTYzMyw2ICs2MzMsOCBAQCB2b2lkIFBsYW46OmNoZWNrTGl2
ZW5lc3NBbmRWaXNpdENoaWxkcmVuCiAgICAgY2xlYW5NdXN0SGFuZGxlVmFsdWVzSWZOZWNlc3Nh
cnkoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtdXN0SGFuZGxlVmFsdWVzLnNpemUoKTsgaS0t
OykKICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChtdXN0SGFuZGxlVmFsdWVzW2ld
KTsKKyAgICAKKyAgICByZWNvcmRlZFN0YXR1c2VzLm1hcmtJZkNoZWFwKHZpc2l0b3IpOwogCiAg
ICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxvY2spOwogICAgIHZpc2l0b3IuYXBw
ZW5kVW5iYXJyaWVyZWQoY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKTsKQEAgLTY0OSw2ICs2NTEs
MTEgQEAgdm9pZCBQbGFuOjpjaGVja0xpdmVuZXNzQW5kVmlzaXRDaGlsZHJlbgogICAgIHRyYW5z
aXRpb25zLnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiB9CiAKK3ZvaWQgUGxhbjo6ZmluYWxpemVJ
bkdDKCkKK3sKKyAgICByZWNvcmRlZFN0YXR1c2VzLmZpbmFsaXplKCk7Cit9CisKIGJvb2wgUGxh
bjo6aXNLbm93blRvQmVMaXZlRHVyaW5nR0MoKQogewogICAgIGlmIChzdGFnZSA9PSBDYW5jZWxs
ZWQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaAkocmV2aXNpb24gMjMyMjI3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNr
LmgiCiAjaW5jbHVkZSAiT3BlcmFuZHMuaCIKICNpbmNsdWRlICJQcm9maWxlckNvbXBpbGF0aW9u
LmgiCisjaW5jbHVkZSAiUmVjb3JkZWRTdGF0dXNlcy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKQEAgLTcyLDYgKzcz
LDcgQEAgc3RydWN0IFBsYW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZQogICAgIHZvaWQg
aXRlcmF0ZUNvZGVCbG9ja3NGb3JHQyhjb25zdCBGdW5jJik7CiAgICAgdm9pZCBjaGVja0xpdmVu
ZXNzQW5kVmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOwogICAgIGJvb2wgaXNLbm93blRvQmVM
aXZlRHVyaW5nR0MoKTsKKyAgICB2b2lkIGZpbmFsaXplSW5HQygpOwogICAgIHZvaWQgY2FuY2Vs
KCk7CiAKICAgICBib29sIGNhblRpZXJVcEFuZE9TUkVudGVyKCkgY29uc3QgeyByZXR1cm4gIXRp
ZXJVcEFuZE9TUkVudGVyQnl0ZWNvZGVzLmlzRW1wdHkoKTsgfQpAQCAtMTA0LDYgKzEwNiw3IEBA
IHN0cnVjdCBQbGFuIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGUKICAgICBEZXNpcmVkSWRl
bnRpZmllcnMgaWRlbnRpZmllcnM7CiAgICAgRGVzaXJlZFdlYWtSZWZlcmVuY2VzIHdlYWtSZWZl
cmVuY2VzOwogICAgIERlc2lyZWRUcmFuc2l0aW9ucyB0cmFuc2l0aW9uczsKKyAgICBSZWNvcmRl
ZFN0YXR1c2VzIHJlY29yZGVkU3RhdHVzZXM7CiAgICAgCiAgICAgYm9vbCB3aWxsVHJ5VG9UaWVy
VXAgeyBmYWxzZSB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjMy
MjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMDYsNiArMTIwNiw5IEBAIHByaXZhdGU6
CiAgICAgICAgIGNhc2UgSW5pdGlhbGl6ZUVudHJ5cG9pbnRBcmd1bWVudHM6CiAgICAgICAgIGNh
c2UgV2Vha1NldEFkZDoKICAgICAgICAgY2FzZSBXZWFrTWFwU2V0OgorICAgICAgICBjYXNlIEZp
bHRlckNhbGxMaW5rU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0dXM6Cisg
ICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgCiAgICAgICAgIC8vIFRoaXMgZ2V0cyBpZ25vcmVkIGJlY2F1c2UgaXQgb25seSBw
cmV0ZW5kcyB0byBwcm9kdWNlIGEgdmFsdWUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3
OCw2ICs0NzgsMTMgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAog
ICAgICAgICAvLyBhbHJlYWR5IGZvcmNlIHRoZXNlIHRoaW5ncyB0byBiZSBvcmRlcmVkIHByZWNp
c2VseS4gSSdtIGp1c3Qgbm90IGNvbmZpZGVudCBlbm91Z2ggaW4gbXkKICAgICAgICAgLy8gZWZm
ZWN0IGJhc2VkIG1lbW9yeSBtb2RlbCB0byByZWx5IHNvbGVseSBvbiB0aGF0IHJpZ2h0IG5vdy4K
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICBjYXNlIEZpbHRlckNhbGxMaW5r
U3RhdHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlclB1
dEJ5SWRTdGF0dXM6CisgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdGhlc2UgdG8gYmUgbW92ZWQg
YW55d2hlcmUgb3RoZXIgdGhhbiB3aGVyZSB3ZSBwdXQgdGhlbSwgc2luY2Ugd2Ugd2FudCB0aGVt
CisgICAgICAgIC8vIHRvIGNhcHR1cmUgInByb2ZpbGluZyIgYXQgdGhlIHBvaW50IGluIGNvbnRy
b2wgZmxvdyBoZXJlIHRoZSB1c2VyIHB1dCB0aGVtLgorICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBjYXNlIEdldEJ5VmFsOgogICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAzMyw2
ICs0MDMzLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICBjYXNlIENoZWNrU3RydWN0dXJlT3JFbXB0eToKICAgICAgICAgREZHX0NSQVNIKG1faml0Lmdy
YXBoKCksIG5vZGUsICJDaGVja1N0cnVjdHVyZU9yRW1wdHkgb25seSB1c2VkIGluIDY0LWJpdCBE
RkciKTsKICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtT
dGF0dXM6CisgICAgY2FzZSBGaWx0ZXJHZXRCeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyUHV0
QnlJZFN0YXR1czoKKyAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIExhc3ROb2RlVHlwZToKICAg
ICBjYXNlIFBoaToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYy
Niw2ICs0NjI2LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoK
KyAgICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3Rh
dHVzOgorICAgICAgICBicmVhazsKKwogI2Vsc2UgLy8gRU5BQkxFKEZUTF9KSVQpCiAgICAgY2Fz
ZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAkocmV2aXNpb24gMjMy
MjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM5Myw4ICszOTMsMTAgQEAgdm9pZCBXb3JrbGlzdDo6cmVtb3ZlRGVhZFBs
YW5zKFZNJiB2bSkKICAgICAgICAgICAgIFBsYW4qIHBsYW4gPSBpdGVyLT52YWx1ZS5nZXQoKTsK
ICAgICAgICAgICAgIGlmIChwbGFuLT52bSAhPSAmdm0pCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICBpZiAocGxhbi0+aXNLbm93blRvQmVMaXZlRHVyaW5nR0MoKSkKKyAg
ICAgICAgICAgIGlmIChwbGFuLT5pc0tub3duVG9CZUxpdmVEdXJpbmdHQygpKSB7CisgICAgICAg
ICAgICAgICAgcGxhbi0+ZmluYWxpemVJbkdDKCk7CiAgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChwbGFuLT5zdGFnZSAh
PSBQbGFuOjpDYW5jZWxsZWQpOyAvLyBTaG91bGQgbm90IGJlIGNhbmNlbGxlZCwgeWV0LgogICAg
ICAgICAgICAgQVNTRVJUKCFkZWFkUGxhbktleXMuY29udGFpbnMocGxhbi0+a2V5KCkpKTsKICAg
ICAgICAgICAgIGRlYWRQbGFuS2V5cy5hZGQocGxhbi0+a2V5KCkpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgJ
KHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw4IEBAIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNybyhEaXJlY3RBcmd1bWVudHNfbWlu
Q2FwYWNpdHksIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZNaW5DYXBhY2l0eSgpKSBcCiAgICAg
bWFjcm8oRGlyZWN0QXJndW1lbnRzX21hcHBlZEFyZ3VtZW50cywgRGlyZWN0QXJndW1lbnRzOjpv
ZmZzZXRPZk1hcHBlZEFyZ3VtZW50cygpKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX21v
ZGlmaWVkQXJndW1lbnRzRGVzY3JpcHRvciwgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZk1vZGlm
aWVkQXJndW1lbnRzRGVzY3JpcHRvcigpKSBcCisgICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9h
bGxvY2F0b3IsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2Zp
bGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZkFsbG9jYXRvcigpKSBcCisg
ICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9zdHJ1Y3R1cmUsIEZ1bmN0aW9uUmFyZURhdGE6Om9m
ZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxl
OjpvZmZzZXRPZlN0cnVjdHVyZSgpKSBcCiAgICAgbWFjcm8oR2V0dGVyU2V0dGVyX2dldHRlciwg
R2V0dGVyU2V0dGVyOjpvZmZzZXRPZkdldHRlcigpKSBcCiAgICAgbWFjcm8oR2V0dGVyU2V0dGVy
X3NldHRlciwgR2V0dGVyU2V0dGVyOjpvZmZzZXRPZlNldHRlcigpKSBcCiAgICAgbWFjcm8oSlNB
cnJheUJ1ZmZlclZpZXdfbGVuZ3RoLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgo
KSkgXApAQCAtMTEyLDEwICsxMTQsMTAgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwg
ewogICAgIG1hY3JvKFN0cmluZ0ltcGxfbGVuZ3RoLCBTdHJpbmdJbXBsOjpsZW5ndGhNZW1vcnlP
ZmZzZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVyZV9jbGFzc0luZm8sIFN0cnVjdHVyZTo6Y2xh
c3NJbmZvT2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmU6Omdsb2JhbE9iamVjdE9mZnNldCgpKSBcCisgICAgbWFjcm8oU3RydWN0dXJlX2luZGV4
aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnksIFN0cnVjdHVyZTo6aW5kZXhpbmdNb2RlSW5jbHVkaW5n
SGlzdG9yeU9mZnNldCgpKSBcCisgICAgbWFjcm8oU3RydWN0dXJlX2lubGluZUNhcGFjaXR5LCBT
dHJ1Y3R1cmU6OmlubGluZUNhcGFjaXR5T2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVf
cHJvdG90eXBlLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpKSBcCiAgICAgbWFjcm8oU3Ry
dWN0dXJlX3N0cnVjdHVyZUlELCBTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KCkpIFwKLSAg
ICBtYWNybyhTdHJ1Y3R1cmVfaW5saW5lQ2FwYWNpdHksIFN0cnVjdHVyZTo6aW5saW5lQ2FwYWNp
dHlPZmZzZXQoKSkgXAotICAgIG1hY3JvKFN0cnVjdHVyZV9pbmRleGluZ01vZGVJbmNsdWRpbmdI
aXN0b3J5LCBTdHJ1Y3R1cmU6OmluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnlPZmZzZXQoKSkg
XAogICAgIG1hY3JvKEhhc2hNYXBJbXBsX2NhcGFjaXR5LCBIYXNoTWFwSW1wbDxIYXNoTWFwQnVj
a2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46Om9mZnNldE9mQ2FwYWNpdHkoKSkgXAogICAgIG1h
Y3JvKEhhc2hNYXBJbXBsX2J1ZmZlciwgIEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1h
cEJ1Y2tldERhdGFLZXk+Pjo6b2Zmc2V0T2ZCdWZmZXIoKSkgXAogICAgIG1hY3JvKEhhc2hNYXBJ
bXBsX2hlYWQsICBIYXNoTWFwSW1wbDxIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5
Pj46Om9mZnNldE9mSGVhZCgpKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1MSw2
ICszNTEsMTAgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAg
IGNhc2UgUHV0QnlWYWxEaXJlY3Q6CiAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgIGNh
c2UgTWF0Y2hTdHJ1Y3R1cmU6CisgICAgY2FzZSBDcmVhdGVUaGlzOgorICAgIGNhc2UgRmlsdGVy
Q2FsbExpbmtTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJHZXRCeUlkU3RhdHVzOgorICAgIGNhc2Ug
RmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgLy8gVGhlc2UgYXJlIE9LLgogICAgICAgICBi
cmVhazsKIApAQCAtMzYyLDcgKzM2Niw2IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29t
cGlsZShOb2RlKiAKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIElkZW50aXR5V2l0aFByb2Zp
bGU6Ci0gICAgY2FzZSBDcmVhdGVUaGlzOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAg
ICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJl
dHVybjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzkxLDYgKzM5MSw4IEBAIHB1Ymxp
YzoKIAogICAgICAgICAvLyBXZSBwdXQgdGhlIGJsb2NrcyBpbnRvIHRoZSBCMyBwcm9jZWR1cmUg
aW4gYSBzdXBlciB3ZWlyZCBvcmRlci4gTm93IHdlIHJlb3JkZXIgdGhlbS4KICAgICAgICAgbV9v
dXQuYXBwbHlCbG9ja09yZGVyKCk7CisgICAgICAgIAorICAgICAgICBtX3N0YXRlLmppdENvZGUt
PmNvbW1vbi5yZWNvcmRlZFN0YXR1c2VzID0gV1RGTW92ZShtX2dyYXBoLm1fcGxhbi5yZWNvcmRl
ZFN0YXR1c2VzKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC04NDcsNiArODQ5LDkgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBOZXdBcnJheVdpdGhTcHJlYWQ6CiAgICAgICAgICAgICBjb21waWxl
TmV3QXJyYXlXaXRoU3ByZWFkKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBD
cmVhdGVUaGlzOgorICAgICAgICAgICAgY29tcGlsZUNyZWF0ZVRoaXMoKTsKKyAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFNwcmVhZDoKICAgICAgICAgICAgIGNvbXBpbGVTcHJlYWQo
KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTMxMiw2ICsxMzE3LDkgQEAgcHJpdmF0ZToKICAg
ICAgICAgY2FzZSBCb3R0b21WYWx1ZToKICAgICAgICAgY2FzZSBLaWxsU3RhY2s6CiAgICAgICAg
IGNhc2UgSW5pdGlhbGl6ZUVudHJ5cG9pbnRBcmd1bWVudHM6CisgICAgICAgIGNhc2UgRmlsdGVy
Q2FsbExpbmtTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICAg
ICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCAiVW5yZWNv
Z25pemVkIG5vZGUgaW4gRlRMIGJhY2tlbmQiKTsKQEAgLTU2NjIsNiArNTY3MCw0MCBAQCBwcml2
YXRlOgogCiAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKICAgICB9CisgICAgCisgICAgdm9p
ZCBjb21waWxlQ3JlYXRlVGhpcygpCisgICAgeworICAgICAgICBMVmFsdWUgY2FsbGVlID0gbG93
Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKKworICAgICAgICBMQmFzaWNCbG9jayBpc0Z1bmN0aW9u
QmxvY2sgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBoYXNSYXJlRGF0
YSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRoID0gbV9v
dXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQu
bmV3QmxvY2soKTsKKworICAgICAgICBtX291dC5icmFuY2goaXNGdW5jdGlvbihjYWxsZWUsIHBy
b3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkpLCB1c3VhbGx5KGlzRnVuY3Rpb25CbG9jayksIHJh
cmVseShzbG93UGF0aCkpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQu
YXBwZW5kVG8oaXNGdW5jdGlvbkJsb2NrLCBoYXNSYXJlRGF0YSk7CisgICAgICAgIExWYWx1ZSBy
YXJlRGF0YSA9IG1fb3V0LmxvYWRQdHIoY2FsbGVlLCBtX2hlYXBzLkpTRnVuY3Rpb25fcmFyZURh
dGEpOworICAgICAgICBtX291dC5icmFuY2gobV9vdXQuaXNaZXJvNjQocmFyZURhdGEpLCByYXJl
bHkoc2xvd1BhdGgpLCB1c3VhbGx5KGhhc1JhcmVEYXRhKSk7CisKKyAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oaGFzUmFyZURhdGEsIHNsb3dQYXRoKTsKKyAgICAgICAgTFZhbHVlIGFsbG9jYXRvciA9
IG1fb3V0LmxvYWRQdHIocmFyZURhdGEsIG1faGVhcHMuRnVuY3Rpb25SYXJlRGF0YV9hbGxvY2F0
b3IpOworICAgICAgICBMVmFsdWUgc3RydWN0dXJlID0gbV9vdXQubG9hZFB0cihyYXJlRGF0YSwg
bV9oZWFwcy5GdW5jdGlvblJhcmVEYXRhX3N0cnVjdHVyZSk7CisgICAgICAgIExWYWx1ZSBidXR0
ZXJmbHkgPSBtX291dC5jb25zdEludFB0cigwKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFz
dFJlc3VsdCA9IG1fb3V0LmFuY2hvcihhbGxvY2F0ZU9iamVjdChhbGxvY2F0b3IsIHN0cnVjdHVy
ZSwgYnV0dGVyZmx5LCBzbG93UGF0aCkpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlv
bik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgsIGNvbnRpbnVhdGlvbik7Cisg
ICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKAor
ICAgICAgICAgICAgSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25DcmVhdGVUaGlzKSwg
bV9jYWxsRnJhbWUsIGNhbGxlZSwgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPmlubGluZUNhcGFj
aXR5KCkpKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBt
X291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgTFZhbHVlIHJl
c3VsdCA9IG1fb3V0LnBoaShJbnQ2NCwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCk7CisKKyAgICAg
ICAgbXV0YXRvckZlbmNlKCk7CisgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKKyAgICB9CiAK
ICAgICB2b2lkIGNvbXBpbGVTcHJlYWQoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjc1LDYgKzI3NSw3
IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW4KICAgICB2KHVuc2ln
bmVkLCBtYXhBY2Nlc3NWYXJpYW50TGlzdFNpemUsIDgsIE5vcm1hbCwgbnVsbHB0cikgXAogICAg
IHYoYm9vbCwgdXNlUG9seXZhcmlhbnREZXZpcnR1YWxpemF0aW9uLCB0cnVlLCBOb3JtYWwsIG51
bGxwdHIpIFwKICAgICB2KGJvb2wsIHVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcsIHRydWUs
IE5vcm1hbCwgbnVsbHB0cikgXAorICAgIHYodW5zaWduZWQsIG1heFBvbHltb3JwaGljQWNjZXNz
SW5saW5pbmdMaXN0U2l6ZSwgMywgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihib29sLCB1c2VQ
b2x5bW9ycGhpY0NhbGxJbmxpbmluZywgdHJ1ZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihi
b29sLCB1c2VQb2x5bW9ycGhpY0NhbGxJbmxpbmluZ0Zvck5vblN0dWJTdGF0dXMsIGZhbHNlLCBO
b3JtYWwsIG51bGxwdHIpIFwKICAgICB2KHVuc2lnbmVkLCBtYXhQb2x5bW9ycGhpY0NhbGxWYXJp
YW50TGlzdFNpemUsIDE1LCBOb3JtYWwsIG51bGxwdHIpIFwKQEAgLTMyMiw5ICszMjMsNiBAQCBj
b25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3NlbWJseVN0cmVhbWluCiAgICAgXAogICAgIHYodW5z
aWduZWQsIG1heGltdW1WYXJhcmdzRm9ySW5saW5pbmcsIDEwMCwgTm9ybWFsLCBudWxscHRyKSBc
CiAgICAgXAotICAgIHYoYm9vbCwgdXNlUG9seXZhcmlhbnRDYWxsSW5saW5pbmcsIHRydWUsIE5v
cm1hbCwgbnVsbHB0cikgXAotICAgIHYoYm9vbCwgdXNlUG9seXZhcmlhbnRCeUlkSW5saW5pbmcs
IHRydWUsIE5vcm1hbCwgbnVsbHB0cikgXAotICAgIFwKICAgICB2KGJvb2wsIHVzZU1heGltYWxG
bHVzaEluc2VydGlvblBoYXNlLCBmYWxzZSwgTm9ybWFsLCAiU2V0dGluZyB0byB0cnVlIGFsbG93
cyB0aGUgREZHJ3MgTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UgdG8gcnVuLiIpIFwKICAgICBc
CiAgICAgdih1bnNpZ25lZCwgbWF4aW11bUJpbmFyeVN0cmluZ1N3aXRjaENhc2VMZW5ndGgsIDUw
LCBOb3JtYWwsIG51bGxwdHIpIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341703</attachid>
            <date>2018-05-31 16:41:06 -0700</date>
            <delta_ts>2018-05-31 20:53:05 -0700</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>147519</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIzMjIyNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNDQwLDYgKzQ0MCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUEKICAgICBieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgKICAgICBieXRlY29k
ZS9FeGVjdXRpb25Db3VudGVyLmgKICAgICBieXRlY29kZS9FeGl0S2luZC5oCisgICAgYnl0ZWNv
ZGUvRXhpdGluZ0lubGluZUtpbmQuaAogICAgIGJ5dGVjb2RlL0V4aXRpbmdKSVRUeXBlLmgKICAg
ICBieXRlY29kZS9FeHByZXNzaW9uUmFuZ2VJbmZvLmgKICAgICBieXRlY29kZS9IYW5kbGVySW5m
by5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyMzIyMjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIx
MiwxMyArMjEyLDE3IEBAIGJ5dGVjb2RlL0RpcmVjdEV2YWxDb2RlQ2FjaGUuY3BwCiBieXRlY29k
ZS9FdmFsQ29kZUJsb2NrLmNwcAogYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5j
cHAKIGJ5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIuY3BwCitieXRlY29kZS9FeGl0RmxhZy5jcHAK
IGJ5dGVjb2RlL0V4aXRLaW5kLmNwcAorYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuY3BwCiBi
eXRlY29kZS9FeGl0aW5nSklUVHlwZS5jcHAKIGJ5dGVjb2RlL0Z1bGxDb2RlT3JpZ2luLmNwcAog
Ynl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suY3BwCiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNw
cAogYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCiBieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlLmNwcAorYnl0ZWNvZGUvSUNTdGF0dXNNYXAuY3BwCitieXRlY29kZS9JQ1N0YXR1c1V0
aWxzLmNwcAogYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcAogYnl0ZWNvZGUvSW5saW5lQ2FsbEZy
YW1lLmNwcAogYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lU2V0LmNwcApAQCAtMjQ1LDYgKzI0OSw3
IEBAIGJ5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwCiBieXRlY29kZS9QdXRCeUlkRmxh
Z3MuY3BwCiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAogYnl0ZWNvZGUvUHV0QnlJZFZhcmlh
bnQuY3BwCitieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAogYnl0ZWNvZGUvUmVkdWNlV2hp
dGVzcGFjZS5jcHAKIGJ5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmNwcAogYnl0ZWNvZGUvU3BlY3Vs
YXRlZFR5cGUuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI5Nyw2ICsyOTcsMTEgQEAKIAkJ
MEY0MjZBNDkxNDYwQ0JCNzAwMTMxRjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0MjZBNDYxNDYwQ0JBQjAwMTMx
RjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGNDI2QTRCMTQ2MENENkUwMDEzMUY4RiAvKiBEYXRhRm9ybWF0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQyNkE0
QTE0NjBDRDZCMDAxMzFGOEYgLyogRGF0YUZvcm1hdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDMxNzM4MTQ2QkFDNjkwMDdFMzg5MCAvKiBM
aXN0YWJsZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ0QTdCMDIw
QkY2ODYyMDAyMkIxNzEgLyogRXhpdEZsYWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDRBN0FFMjBCRjY4NUYwMDIyQjE3MSAvKiBFeGl0RmxhZy5o
ICovOyB9OworCQkwRjQ0QTdCMTIwQkY2OEM5MDAyMkIxNzEgLyogRXhpdGluZ0lubGluZUtpbmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDRBN0E3
MjBCRjY4NUQwMDIyQjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDRBN0IyMjBCRjY4Q0UwMDIyQjE3
MSAvKiBJQ1N0YXR1c01hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0NEE3QUYyMEJGNjg1RjAwMjJCMTcxIC8qIElDU3RhdHVzTWFwLmggKi87IH07
CisJCTBGNDRBN0IzMjBCRjY4RDEwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ0QTdBQTIwQkY2ODVF
MDAyMkIxNzEgLyogUmVjb3JkZWRTdGF0dXNlcy5oICovOyB9OworCQkwRjQ0QTdCNDIwQkY2OEQ5
MDAyMkIxNzEgLyogVGVybWluYXRlZENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDRBN0E4MjBCRjY4NUUwMDIyQjE3MSAvKiBUZXJt
aW5hdGVkQ29kZU9yaWdpbi5oICovOyB9OwogCQkwRjQ1NzAzOTFCRTQ0QzkxMDA2MkE2MjkgLyog
QWlyRWxpbWluYXRlRGVhZENvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNDU3MDM3MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFk
Q29kZS5oICovOyB9OwogCQkwRjQ1NzAzRDFCRTQ1RjBBMDA2MkE2MjkgLyogQWlyUmVwb3J0VXNl
ZFJlZ2lzdGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY0NTcwM0IxQkU0NUYwQTAwNjJBNjI5IC8qIEFpclJlcG9ydFVzZWRSZWdpc3RlcnMuaCAq
LzsgfTsKIAkJMEY0NTcwNDExQkU1ODRDQTAwNjJBNjI5IC8qIEIzVGltaW5nU2NvcGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDU3MDNGMUJFNTg0
Q0EwMDYyQTYyOSAvKiBCM1RpbWluZ1Njb3BlLmggKi87IH07CkBAIC0yMjg3LDYgKzIyOTIsMTYg
QEAKIAkJMEY0MjZBNEExNDYwQ0Q2QjAwMTMxRjhGIC8qIERhdGFGb3JtYXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YUZvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjQyQjNDMDIwMUVCNTA5MDAzNTcwMzEgLyogQWxsb2NhdG9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFsbG9jYXRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJs
ZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGlzdGFibGVIYW5k
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDRBN0E3MjBCRjY4NUQwMDIy
QjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBFeGl0aW5nSW5saW5lS2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjQ0QTdBODIwQkY2ODVFMDAyMkIxNzEgLyogVGVybWluYXRlZENvZGVPcmlnaW4uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVybWluYXRlZENvZGVPcmlnaW4uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NEE3QTkyMEJGNjg1RTAwMjJCMTcxIC8qIEV4aXRG
bGFnLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4aXRGbGFnLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcx
IC8qIFJlY29yZGVkU3RhdHVzZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVjb3JkZWRTdGF0dXNlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ0QTdB
QjIwQkY2ODVFMDAyMkIxNzEgLyogSUNTdGF0dXNNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSUNTdGF0dXNNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjQ0QTdBQzIwQkY2ODVGMDAyMkIxNzEgLyogRXhpdGluZ0lubGluZUtpbmQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXhpdGluZ0lubGluZUtpbmQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ0QTdBRDIwQkY2ODVGMDAyMkIx
NzEgLyogUmVjb3JkZWRTdGF0dXNlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZWNvcmRlZFN0YXR1c2VzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY0NEE3QUUyMEJGNjg1RjAwMjJCMTcxIC8qIEV4aXRGbGFnLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEV4aXRGbGFnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGNDRBN0FGMjBCRjY4NUYwMDIyQjE3MSAvKiBJQ1N0YXR1c01hcC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJQ1N0YXR1c01hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjQ0QTdCNTIwQzBCRTNGMDAyMkIxNzEgLyogSUNTdGF0dXNVdGlscy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJQ1N0YXR1c1V0aWxzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NTcwMzYxQkU0NEM5MTAwNjJBNjI5IC8q
IEFpckVsaW1pbmF0ZURlYWRDb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEFpckVsaW1pbmF0ZURlYWRDb2RlLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJFbGltaW5h
dGVEZWFkQ29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDU3MDM3MUJF
NDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBBaXJFbGltaW5hdGVEZWFkQ29kZS5oOyBwYXRoID0gYjMvYWlyL0Fp
ckVsaW1pbmF0ZURlYWRDb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDU3
MDNBMUJFNDVGMEEwMDYyQTYyOSAvKiBBaXJSZXBvcnRVc2VkUmVnaXN0ZXJzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpclJlcG9ydFVzZWRSZWdpc3RlcnMuY3Bw
OyBwYXRoID0gYjMvYWlyL0FpclJlcG9ydFVzZWRSZWdpc3RlcnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzY1OCw2ICs3NjczLDEwIEBACiAJCQkJMEY2MEZFOEUxRkZDMzZG
RDAwMDMzMjBBIC8qIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCAqLywKIAkJCQkwRjU2QTFE
NDE1MDAxQ0YyMDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5jcHAgKi8sCiAJCQkJMEY1NkEx
RDExNTAwMEYzMTAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNvdW50ZXIuaCAqLywKKwkJCQkwRjQ0QTdB
OTIwQkY2ODVFMDAyMkIxNzEgLyogRXhpdEZsYWcuY3BwICovLAorCQkJCTBGNDRBN0FFMjBCRjY4
NUYwMDIyQjE3MSAvKiBFeGl0RmxhZy5oICovLAorCQkJCTBGNDRBN0FDMjBCRjY4NUYwMDIyQjE3
MSAvKiBFeGl0aW5nSW5saW5lS2luZC5jcHAgKi8sCisJCQkJMEY0NEE3QTcyMEJGNjg1RDAwMjJC
MTcxIC8qIEV4aXRpbmdJbmxpbmVLaW5kLmggKi8sCiAJCQkJMEYwMzMyQkYxOEFERkFFMTAwNUY5
NzlBIC8qIEV4aXRpbmdKSVRUeXBlLmNwcCAqLywKIAkJCQkwRjNBQzc1MzE4OEU1RUM4MDAzMjAy
OUYgLyogRXhpdGluZ0pJVFR5cGUuaCAqLywKIAkJCQkwRkIxMDU4MjE2NzU0ODBDMDBGOEFCNkUg
LyogRXhpdEtpbmQuY3BwICovLApAQCAtNzY3NCw2ICs3NjkzLDkgQEAKIAkJCQkwRjAzMzJDMjE4
QjAxNzYzMDA1Rjk3OUEgLyogR2V0QnlJZFZhcmlhbnQuaCAqLywKIAkJCQkxNEFEOTEwODFEQ0E5
Mjk0MDAxNEY5RkUgLyogR2xvYmFsQ29kZUJsb2NrLmggKi8sCiAJCQkJMEYwQjgzQTgxNEJDRjU1
RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi8sCisJCQkJMEY0NEE3QUIyMEJGNjg1RTAwMjJC
MTcxIC8qIElDU3RhdHVzTWFwLmNwcCAqLywKKwkJCQkwRjQ0QTdBRjIwQkY2ODVGMDAyMkIxNzEg
LyogSUNTdGF0dXNNYXAuaCAqLywKKwkJCQkwRjQ0QTdCNTIwQzBCRTNGMDAyMkIxNzEgLyogSUNT
dGF0dXNVdGlscy5jcHAgKi8sCiAJCQkJMEZCMzk5QkQyMEFGNkIzODAwMTdFMjEzIC8qIElDU3Rh
dHVzVXRpbHMuaCAqLywKIAkJCQk3OTA1QkI2NjFEMTIwNTBFMDAxOUZFNTcgLyogSW5saW5lQWNj
ZXNzLmNwcCAqLywKIAkJCQk3OTA1QkI2NzFEMTIwNTBFMDAxOUZFNTcgLyogSW5saW5lQWNjZXNz
LmggKi8sCkBAIC03NzMwLDYgKzc3NTIsOCBAQAogCQkJCTBGOTNCNEE3MThCOTJDNEQwMDE3OEEz
RiAvKiBQdXRCeUlkVmFyaWFudC5jcHAgKi8sCiAJCQkJMEY5M0I0QTgxOEI5MkM0RDAwMTc4QTNG
IC8qIFB1dEJ5SWRWYXJpYW50LmggKi8sCiAJCQkJMEY5RkM4QzExNEUxQjVGQjAwRDUyQUUwIC8q
IFB1dEtpbmQuaCAqLywKKwkJCQkwRjQ0QTdBRDIwQkY2ODVGMDAyMkIxNzEgLyogUmVjb3JkZWRT
dGF0dXNlcy5jcHAgKi8sCisJCQkJMEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcxIC8qIFJlY29yZGVk
U3RhdHVzZXMuaCAqLywKIAkJCQkwRkY2MEFCRjE2NzQwRjgxMDAwMjk3NzkgLyogUmVkdWNlV2hp
dGVzcGFjZS5jcHAgKi8sCiAJCQkJMEZGNjBBQzAxNjc0MEY4MTAwMDI5Nzc5IC8qIFJlZHVjZVdo
aXRlc3BhY2UuaCAqLywKIAkJCQkwRjU1NDFBRjE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBv
aW50ZXIuY3BwICovLApAQCAtNzc0NCw2ICs3NzY4LDcgQEAKIAkJCQlCQ0NGMEQwNzBFRjBBQUI5
MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1YkluZm8uaCAqLywKIAkJCQkwRjRBMzhGNzFDOEUxM0RG
MDAxOTAzMTggLyogU3VwZXJTYW1wbGVyLmNwcCAqLywKIAkJCQkwRjRBMzhGODFDOEUxM0RGMDAx
OTAzMTggLyogU3VwZXJTYW1wbGVyLmggKi8sCisJCQkJMEY0NEE3QTgyMEJGNjg1RTAwMjJCMTcx
IC8qIFRlcm1pbmF0ZWRDb2RlT3JpZ2luLmggKi8sCiAJCQkJMEYyRDRERTUxOTgzMkRBQzAwN0Q0
QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgKi8sCiAJCQkJMEYyRDRERTYxOTgzMkRBQzAwN0Q0QjE5
IC8qIFRvVGhpc1N0YXR1cy5oICovLAogCQkJCTBGOTUyQUJBMUI0ODdBNzcwMEMzNjdDNSAvKiBU
cmFja2VkUmVmZXJlbmNlcy5jcHAgKi8sCkBAIC04NDAxLDYgKzg0MjYsNyBAQAogCQkJCTUzRDQ0
NERDMURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUzNDFGQzcyMURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJDNjNCMjFFNjBBRTQ3MDBDMTM4MzkgLyogQjNXaWR0
aC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NEE3QjIyMEJGNjhDRTAwMjJCMTcxIC8qIElDU3Rh
dHVzTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MjY3OEY4RjFBMDMxMDA5MDA2QTMwNkQgLyog
QmFzaWNCbG9ja0xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDdCODNBQzBFNkRCOEM5
MDA0Nzc1QTQgLyogQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg2OTc2RTVGMUZBM0U4QkMwMEU3QzRFMSAvKiBCaWdJbnRDb25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8sCkBAIC04NjIwLDYgKzg2NDYsNyBAQAogCQkJCTg2RUM5REM2MTMyOERGODIwMDJC
MkFENyAvKiBERkdHZW5lcmF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQzlEQzgx
MzI4REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJGQ0NG
QTE4QTYwMDcwMDAxQTI3RjggLyogREZHR3JhcGhTYWZlcG9pbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGNDRBN0IxMjBCRjY4QzkwMDIyQjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZCMTc2NjExOTZCOEY5RTAwOTEwNTJBIC8qIERGR0hlYXBMb2NhdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDODQxNjkxQkE4QzMyMTAwNjE4MzdEIC8qIERGR0lu
ZmVycmVkVHlwZUNoZWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxNEUyMTE4MTI1NzBCMDA5
QjZCNEQgLyogREZHSW5saW5lQ2FjaGVXcmFwcGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTg3NzAs
NiArODc5Nyw3IEBACiAJCQkJQTdBOEFGMzgxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0MzJBcnJh
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzkxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0
NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NDMxN0VBOUY1OTAwQUJCMjE3IC8q
IEZQUkluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDRBN0IzMjBCRjY4RDEwMDIyQjE3MSAv
KiBSZWNvcmRlZFN0YXR1c2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzRFREJGNzFEQjVGRkM5
MDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU1MTNBNjFE
NUE2ODJDMDBDMzJCRDggLyogRnJlZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjU4NUUx
MUVFMDgwNUEwMDk1MTc2RCAvKiBGcmVlTGlzdElubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAt
OTExOSw2ICs5MTQ3LDcgQEAKIAkJCQk3MDEzQ0E4QzFCNDkxQTk0MDBDQUU2MTMgLyogSlNKb2Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0xleGlj
YWxFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjMwRTE2RjVDRDAwQjM0
NDYwIC8qIEpTTG9jay5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NEE3QjAyMEJGNjg2MjAwMjJC
MTcxIC8qIEV4aXRGbGFnLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjVENzA5QzE2REU5OUY0MDBG
Q0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBNEJCN0YzMThB
NDExNzkwMDhBMEZDRCAvKiBKU01hbmFnZWRWYWx1ZUludGVybmFsLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNzAwODc0MjE3Q0JFOEVCMDBDM0U2NDMgLyogSlNNYXAuaCBpbiBIZWFkZXJzICovLApA
QCAtOTQzNSw2ICs5NDY0LDcgQEAKIAkJCQlBNzI5OURBMjE3RDEyODQ4MDA1RjVGRjkgLyogU2V0
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVFOTg0MTFBODg2NUI3MDA3NTRFOTMg
LyogU2V0dXBWYXJhcmdzRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCURDMTdFODE4MUM5Qzkx
RDkwMDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ0QTdC
NDIwQkY2OEQ5MDAyMkIxNzEgLyogVGVybWluYXRlZENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICov
LAogCQkJCURDMTdFODE5MUM5QzkxREIwMDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzMDIyRDMxRTNENzNBNTAwQkFDNDkzIC8qIFNpZ2lsbENy
YXNoQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNEQ4Qzc4MUZDQTNDRkEwMDFEMzJB
QyAvKiBTaW1wbGVNYXJraW5nQ29uc3RyYWludC5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCShyZXZpc2lvbiAyMzIyMjcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2NiwxMiArMjY2LDYgQEAgaW5saW5lIHVuc2lnbmVkIGdldEJ5VmFsSW5mb0J5
dGVjb2RlSW5kZQogICAgIHJldHVybiBpbmZvLT5ieXRlY29kZUluZGV4OwogfQogCi10eXBlZGVm
IEhhc2hNYXA8Q29kZU9yaWdpbiwgQnlWYWxJbmZvKiwgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFz
aD4gQnlWYWxJbmZvTWFwOwotCi0jZWxzZSAvLyBFTkFCTEUoSklUKQotCi10eXBlZGVmIEhhc2hN
YXA8aW50LCB2b2lkKj4gQnlWYWxJbmZvTWFwOwotCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVEdW1wZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTQyNyw3ICs0MjcsNyBAQCBzdGF0aWMgdm9pZCBkdW1wQ2hhaW4oUHJpbnRTdHJlYW0mIG91
dCwgCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgotdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9j
az46OnByaW50R2V0QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlv
biwgY29uc3QgU3R1YkluZm9NYXAmIG1hcCkKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpw
cmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNv
bnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rp
b24gPSBpbnN0cnVjdGlvbnNCZWdpbigpICsgbG9jYXRpb247CiAKQEAgLTQ0Nyw3ICs0NDcsNyBA
QCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRHZXRCeUlkCiAgICAgfQogCiAjaWYg
RU5BQkxFKEpJVCkKLSAgICBpZiAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJQdHIgPSBtYXAuZ2V0
KENvZGVPcmlnaW4obG9jYXRpb24pKSkgeworICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YlB0ciA9IHN0YXR1c01hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpLnN0dWJJbmZvKSB7CiAg
ICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9ICpzdHViUHRyOwogICAgICAgICBp
ZiAoc3R1YkluZm8ucmVzZXRCeUdDKQogICAgICAgICAgICAgb3V0LnByaW50KCIgKFJlc2V0IEJ5
IEdDKSIpOwpAQCAtNDg4LDEyICs0ODgsMTIgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46
OnByaW50R2V0QnlJZAogICAgICAgICBvdXQucHJpbnRmKCIpIik7CiAgICAgfQogI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0obWFwKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdHVzTWFwKTsKICNlbmRp
ZgogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+
OjpwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24s
IGNvbnN0IFN0dWJJbmZvTWFwJiBtYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJp
bnRQdXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25z
dCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQogewogICAgIGNvbnN0IGF1dG8qIGluc3RydWN0aW9u
ID0gaW5zdHJ1Y3Rpb25zQmVnaW4oKSArIGxvY2F0aW9uOwogCkBAIC01MjEsNyArNTIxLDcgQEAg
dm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50UHV0QnlJZAogICAgIH0KIAogI2lmIEVO
QUJMRShKSVQpCi0gICAgaWYgKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViUHRyID0gbWFwLmdldChD
b2RlT3JpZ2luKGxvY2F0aW9uKSkpIHsKKyAgICBpZiAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJQ
dHIgPSBzdGF0dXNNYXAuZ2V0KENvZGVPcmlnaW4obG9jYXRpb24pKS5zdHViSW5mbykgewogICAg
ICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSAqc3R1YlB0cjsKICAgICAgICAgaWYg
KHN0dWJJbmZvLnJlc2V0QnlHQykKICAgICAgICAgICAgIG91dC5wcmludCgiIChSZXNldCBCeSBH
QykiKTsKQEAgLTU0NywxMiArNTQ3LDEyIEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpw
cmludFB1dEJ5SWQKICAgICAgICAgb3V0LnByaW50ZigiKSIpOwogICAgIH0KICNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKG1hcCk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXR1c01hcCk7CiAjZW5kaWYK
IH0KIAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6
cHJpbnRJbkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNv
bnN0IFN0dWJJbmZvTWFwJiBtYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRJ
bkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IElD
U3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb24gPSBp
bnN0cnVjdGlvbnNCZWdpbigpICsgbG9jYXRpb247CiAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lk
IEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRJbkJ5SWRDCiAgICAgVU5VU0VEX1BBUkFNKGlk
ZW50KTsgLy8gdGVsbCB0aGUgY29tcGlsZXIgdG8gc2h1dCB1cCBpbiBjZXJ0YWluIHBsYXRmb3Jt
IGNvbmZpZ3VyYXRpb25zLgogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJQdHIgPSBtYXAuZ2V0KENvZGVPcmlnaW4obG9jYXRpb24pKSkgeworICAgIGlm
IChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YlB0ciA9IHN0YXR1c01hcC5nZXQoQ29kZU9yaWdpbihs
b2NhdGlvbikpLnN0dWJJbmZvKSB7CiAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
byA9ICpzdHViUHRyOwogICAgICAgICBpZiAoc3R1YkluZm8ucmVzZXRCeUdDKQogICAgICAgICAg
ICAgb3V0LnByaW50KCIgKFJlc2V0IEJ5IEdDKSIpOwpAQCAtNjAwLDI2ICs2MDAsMjYgQEAgdm9p
ZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50SW5CeUlkQwogICAgIH0KICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKG91dCk7Ci0gICAgVU5VU0VEX1BBUkFNKG1hcCk7CisgICAgVU5VU0VEX1BB
UkFNKHN0YXR1c01hcCk7CiAjZW5kaWYKIH0KIAogI2lmIEVOQUJMRShKSVQpCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQ2FsbExpbmtT
dGF0dXMoUHJpbnRTdHJlYW0mLCB1bnNpZ25lZCwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJikKK3Zv
aWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQ2FsbExpbmtTdGF0dXMoUHJpbnRTdHJlYW0m
LCB1bnNpZ25lZCwgY29uc3QgSUNTdGF0dXNNYXAmKQogewogfQogCiB0ZW1wbGF0ZTw+Ci12b2lk
IEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBDYWxsTGlua1N0YXR1cyhQcmludFN0cmVh
bSYgb3V0LCB1bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBtYXApCit2
b2lkIEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBDYWxsTGlua1N0YXR1cyhQcmludFN0
cmVhbSYgb3V0LCB1bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01h
cCkKIHsKICAgICBpZiAoYmxvY2soKS0+aml0VHlwZSgpICE9IEpJVENvZGU6OkZUTEpJVCkKLSAg
ICAgICAgb3V0LnByaW50KCIgc3RhdHVzKCIsIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKGJs
b2NrKCksIGxvY2F0aW9uLCBtYXApLCAiKSIpOworICAgICAgICBvdXQucHJpbnQoIiBzdGF0dXMo
IiwgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoYmxvY2soKSwgbG9jYXRpb24sIHN0YXR1c01h
cCksICIpIik7CiB9CiAjZW5kaWYKIAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVj
b2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0
aW9uLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgY2hhciog
b3AsIENhY2hlRHVtcE1vZGUgY2FjaGVEdW1wTW9kZSwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGlu
ZywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBtYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2Nr
Pjo6cHJpbnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCB0eXBl
bmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgY2hhciogb3AsIENhY2hlRHVtcE1v
ZGUgY2FjaGVEdW1wTW9kZSwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZywgY29uc3QgSUNTdGF0
dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBpbnQgZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAg
ICAgaW50IGZ1bmMgPSAoKytpdCktPnUub3BlcmFuZDsKQEAgLTYzOCw3ICs2MzgsNyBAQCB2b2lk
IEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRDYWxsT3AoCiAgICAgICAgICAgICAgICAgb3V0
LnByaW50ZigiIGxsaW50KCVwKSIsIG9iamVjdCk7CiAgICAgICAgIH0KICNpZiBFTkFCTEUoSklU
KQotICAgICAgICBpZiAoQ2FsbExpbmtJbmZvKiBpbmZvID0gbWFwLmdldChDb2RlT3JpZ2luKGxv
Y2F0aW9uKSkpIHsKKyAgICAgICAgaWYgKENhbGxMaW5rSW5mbyogaW5mbyA9IHN0YXR1c01hcC5n
ZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpLmNhbGxMaW5rSW5mbykgewogICAgICAgICAgICAgaWYg
KGluZm8tPmhhdmVMYXN0U2VlbkNhbGxlZSgpKSB7CiAgICAgICAgICAgICAgICAgSlNPYmplY3Qq
IG9iamVjdCA9IGluZm8tPmxhc3RTZWVuQ2FsbGVlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGF1
dG8qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4oKnZtKCksIG9iamVjdCkp
CkBAIC02NDgsOSArNjQ4LDkgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50Q2Fs
bE9wKAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgZHVtcENhbGxMaW5rU3Rh
dHVzKG91dCwgbG9jYXRpb24sIG1hcCk7CisgICAgICAgIGR1bXBDYWxsTGlua1N0YXR1cyhvdXQs
IGxvY2F0aW9uLCBzdGF0dXNNYXApOwogI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKG1hcCk7
CisgICAgICAgIFVOVVNFRF9QQVJBTShzdGF0dXNNYXApOwogI2VuZGlmCiAgICAgfQogICAgICsr
aXQ7CkBAIC02NzgsNyArNjc4LDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50
TG9jYXRpbwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8
QmxvY2s+OjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQmxv
Y2s6Okluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9u
KiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiBzdHViSW5mb3MsIGNvbnN0IENhbGxMaW5rSW5mb01h
cCYgY2FsbExpbmtJbmZvcykKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNv
ZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiBi
ZWdpbiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3Rh
dHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgaW50IGxvY2F0aW9uID0gaXQgLSBiZWdpbjsKICAg
ICBib29sIGhhc1ByaW50ZWRQcm9maWxpbmcgPSBmYWxzZTsKQEAgLTEwNzEsNyArMTA3MSw3IEBA
IHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgaW50IGlk
MCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBs
b2NhdGlvbiwgaXQsICJpbl9ieV9pZCIpOwogICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVz
IiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBpZE5h
bWUoaWQwLCBpZGVudGlmaWVyKGlkMCkpLmRhdGEoKSk7Ci0gICAgICAgIHByaW50SW5CeUlkQ2Fj
aGVTdGF0dXMob3V0LCBsb2NhdGlvbiwgc3R1YkluZm9zKTsKKyAgICAgICAgcHJpbnRJbkJ5SWRD
YWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdGF0dXNNYXApOwogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgY2FzZSBvcF9pbl9ieV92YWw6IHsKQEAgLTEwOTUsNyArMTA5NSw3IEBAIHZvaWQg
Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiZ2V0X2J5X2lkX2RpcmVjdCIpOwogICAgICAgICBv
dXQucHJpbnRmKCIlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShyMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBpZGVudGlmaWVyKGlkMCkpLmRhdGEoKSk7CiAg
ICAgICAgIGl0ICs9IDI7IC8vIEluY3JlbWVudCB1cCB0byB0aGUgdmFsdWUgcHJvZmlsZXIuCi0g
ICAgICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0dWJJbmZvcyk7
CisgICAgICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0YXR1c01h
cCk7CiAgICAgICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmls
aW5nKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTEwNCw3ICsxMTA0LDcgQEAgdm9pZCBC
eXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZQogICAgIGNhc2Ugb3BfZ2V0X2J5X2lk
X3Vuc2V0OgogICAgIGNhc2Ugb3BfZ2V0X2FycmF5X2xlbmd0aDogewogICAgICAgICBwcmludEdl
dEJ5SWRPcChvdXQsIGxvY2F0aW9uLCBpdCk7Ci0gICAgICAgIHByaW50R2V0QnlJZENhY2hlU3Rh
dHVzKG91dCwgbG9jYXRpb24sIHN0dWJJbmZvcyk7CisgICAgICAgIHByaW50R2V0QnlJZENhY2hl
U3RhdHVzKG91dCwgbG9jYXRpb24sIHN0YXR1c01hcCk7CiAgICAgICAgIGR1bXBWYWx1ZVByb2Zp
bGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQpAQCAtMTEzMCw3ICsxMTMwLDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBC
eXRlY29kZQogICAgIH0KICAgICBjYXNlIG9wX3B1dF9ieV9pZDogewogICAgICAgICBwcmludFB1
dEJ5SWRPcChvdXQsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZCIpOwotICAgICAgICBwcmludFB1
dEJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdHViSW5mb3MpOworICAgICAgICBwcmlu
dFB1dEJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdGF0dXNNYXApOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBvcF9wdXRfYnlfaWRfd2l0aF90aGlzOiB7CkBAIC0xNDc2
LDE1ICsxNDc2LDE1IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3BfY2FsbDogewotICAgICAgICBwcmlu
dENhbGxPcChvdXQsIGxvY2F0aW9uLCBpdCwgImNhbGwiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVk
UHJvZmlsaW5nLCBjYWxsTGlua0luZm9zKTsKKyAgICAgICAgcHJpbnRDYWxsT3Aob3V0LCBsb2Nh
dGlvbiwgaXQsICJjYWxsIiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgc3RhdHVz
TWFwKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3BfdGFpbF9jYWxsOiB7Ci0g
ICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAidGFpbF9jYWxsIiwgRHVtcENh
Y2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgY2FsbExpbmtJbmZvcyk7CisgICAgICAgIHByaW50
Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAidGFpbF9jYWxsIiwgRHVtcENhY2hlcywgaGFzUHJp
bnRlZFByb2ZpbGluZywgc3RhdHVzTWFwKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNh
c2Ugb3BfY2FsbF9ldmFsOiB7Ci0gICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0
LCAiY2FsbF9ldmFsIiwgRG9udER1bXBDYWNoZXMsIGhhc1ByaW50ZWRQcm9maWxpbmcsIGNhbGxM
aW5rSW5mb3MpOworICAgICAgICBwcmludENhbGxPcChvdXQsIGxvY2F0aW9uLCBpdCwgImNhbGxf
ZXZhbCIsIERvbnREdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmlsaW5nLCBzdGF0dXNNYXApOwog
ICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTE1MjMsNyArMTUyMyw3IEBAIHZvaWQgQnl0ZWNv
ZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IGNhc2Ugb3BfY29uc3RydWN0OiB7Ci0gICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24s
IGl0LCAiY29uc3RydWN0IiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgY2FsbExp
bmtJbmZvcyk7CisgICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAiY29uc3Ry
dWN0IiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgc3RhdHVzTWFwKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3Bfc3RyY2F0OiB7CkBAIC0xNzc4LDEwICsxNzc4
LDEwIEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKIH0KIAogdGVt
cGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJ5dGVj
b2RlKEJsb2NrKiBibG9jaywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQmxvY2s6
Okluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiYg
aXQsIGNvbnN0IFN0dWJJbmZvTWFwJiBzdHViSW5mb3MsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYg
Y2FsbExpbmtJbmZvcykKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUo
QmxvY2sqIGJsb2NrLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5z
dHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwg
Y29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBCeXRlY29kZUR1bXBlciBkdW1w
ZXIoYmxvY2ssIGJlZ2luKTsKLSAgICBkdW1wZXIuZHVtcEJ5dGVjb2RlKG91dCwgYmVnaW4sIGl0
LCBzdHViSW5mb3MsIGNhbGxMaW5rSW5mb3MpOworICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0
LCBiZWdpbiwgaXQsIHN0YXR1c01hcCk7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgpAQCAt
MTg5MCw3ICsxODkwLDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBTdHJpbmdT
dwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+
OjpkdW1wQmxvY2soQmxvY2sqIGJsb2NrLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJ
bnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgU3R1Yklu
Zm9NYXAmIHN0dWJJbmZvcywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBjYWxsTGlua0luZm9zKQor
dm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCbG9jayhCbG9jayogYmxvY2ssIGNvbnN0
IHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBQcmlu
dFN0cmVhbSYgb3V0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQogewogICAgIHNpemVf
dCBpbnN0cnVjdGlvbkNvdW50ID0gMDsKIApAQCAtMTkxMCw3ICsxOTEwLDcgQEAgdm9pZCBCeXRl
Y29kZUR1bXBlcjxCbG9jaz46OmR1bXBCbG9jayhCbAogICAgIGNvbnN0IGF1dG8qIGVuZCA9IGlu
c3RydWN0aW9ucy5lbmQoKTsKICAgICBCeXRlY29kZUR1bXBlcjxCbG9jaz4gZHVtcGVyKGJsb2Nr
LCBiZWdpbik7CiAgICAgZm9yIChjb25zdCBhdXRvKiBpdCA9IGJlZ2luOyBpdCAhPSBlbmQ7ICsr
aXQpCi0gICAgICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0LCBiZWdpbiwgaXQsIHN0dWJJbmZv
cywgY2FsbExpbmtJbmZvcyk7CisgICAgICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0LCBiZWdp
biwgaXQsIHN0YXR1c01hcCk7CiAKICAgICBkdW1wZXIuZHVtcElkZW50aWZpZXJzKG91dCk7CiAg
ICAgZHVtcGVyLmR1bXBDb25zdGFudHMob3V0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1
enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjYsNiArMjcsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDYWxsTGlua0lu
Zm8uaCIKKyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJ
bmZvLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzcsOCArMzksOCBAQCBjbGFzcyBCeXRlY29k
ZUR1bXBlciB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rp
b24gSW5zdHJ1Y3Rpb247CiAKLSAgICBzdGF0aWMgdm9pZCBkdW1wQnl0ZWNvZGUoQmxvY2sqLCBQ
cmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0
aW9uKiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiA9IFN0dWJJbmZvTWFwKCksIGNvbnN0IENhbGxM
aW5rSW5mb01hcCYgPSBDYWxsTGlua0luZm9NYXAoKSk7Ci0gICAgc3RhdGljIHZvaWQgZHVtcEJs
b2NrKEJsb2NrKiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiwg
UHJpbnRTdHJlYW0mIG91dCwgY29uc3QgU3R1YkluZm9NYXAmID0gU3R1YkluZm9NYXAoKSwgY29u
c3QgQ2FsbExpbmtJbmZvTWFwJiA9IENhbGxMaW5rSW5mb01hcCgpKTsKKyAgICBzdGF0aWMgdm9p
ZCBkdW1wQnl0ZWNvZGUoQmxvY2sqLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlv
biogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0
dXNNYXAgPSBJQ1N0YXR1c01hcCgpKTsKKyAgICBzdGF0aWMgdm9pZCBkdW1wQmxvY2soQmxvY2sq
LCBjb25zdCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmLCBQcmludFN0cmVh
bSYgb3V0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwID0gSUNTdGF0dXNNYXAoKSk7CiAK
IHByaXZhdGU6CiAgICAgQnl0ZWNvZGVEdW1wZXIoQmxvY2sqIGJsb2NrLCBjb25zdCBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4pCkBAIC02OSwxNCArNzEsMTQgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHByaW50Q29uZGl0aW9uYWxKdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3Ry
dWN0aW9uKiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgaW50IGxvY2F0aW9uLCBjb25zdCBjaGFy
KiBvcCk7CiAgICAgdm9pZCBwcmludENvbXBhcmVKdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0
IEluc3RydWN0aW9uKiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgaW50IGxvY2F0aW9uLCBjb25z
dCBjaGFyKiBvcCk7CiAgICAgdm9pZCBwcmludEdldEJ5SWRPcChQcmludFN0cmVhbSYgb3V0LCBp
bnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQpOwotICAgIHZvaWQgcHJpbnRHZXRC
eUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBTdHVi
SW5mb01hcCYpOwotICAgIHZvaWQgcHJpbnRQdXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0m
IG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBTdHViSW5mb01hcCYpOwotICAgIHZvaWQgcHJpbnRJ
bkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IFN0
dWJJbmZvTWFwJik7CisgICAgdm9pZCBwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVh
bSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IElDU3RhdHVzTWFwJik7CisgICAgdm9pZCBwcmlu
dFB1dEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0
IElDU3RhdHVzTWFwJik7CisgICAgdm9pZCBwcmludEluQnlJZENhY2hlU3RhdHVzKFByaW50U3Ry
ZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmKTsKICAgICBlbnVtIENh
Y2hlRHVtcE1vZGUgeyBEdW1wQ2FjaGVzLCBEb250RHVtcENhY2hlcyB9OwotICAgIHZvaWQgcHJp
bnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlv
biomIGl0LCBjb25zdCBjaGFyKiBvcCwgQ2FjaGVEdW1wTW9kZSwgYm9vbCYgaGFzUHJpbnRlZFBy
b2ZpbGluZywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJik7CisgICAgdm9pZCBwcmludENhbGxPcChQ
cmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNv
bnN0IGNoYXIqIG9wLCBDYWNoZUR1bXBNb2RlLCBib29sJiBoYXNQcmludGVkUHJvZmlsaW5nLCBj
b25zdCBJQ1N0YXR1c01hcCYpOwogICAgIHZvaWQgcHJpbnRQdXRCeUlkT3AoUHJpbnRTdHJlYW0m
IG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBv
cCk7CiAgICAgdm9pZCBwcmludExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQoUHJpbnRTdHJl
YW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFy
KiBvcCwgaW50IG9wZXJhbmQpOwotICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBv
dXQsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29u
c3QgU3R1YkluZm9NYXAmLCBjb25zdCBDYWxsTGlua0luZm9NYXAmKTsKKyAgICB2b2lkIGR1bXBC
eXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0
IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJik7CiAKICAgICB2b2lkIGR1bXBW
YWx1ZVByb2ZpbGluZyhQcmludFN0cmVhbSYsIGNvbnN0IEluc3RydWN0aW9uKiYsIGJvb2wmIGhh
c1ByaW50ZWRQcm9maWxpbmcpOwogICAgIHZvaWQgZHVtcEFycmF5UHJvZmlsaW5nKFByaW50U3Ry
ZWFtJiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZyk7CkBA
IC04NSw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCogYWN0dWFsUG9pbnRlckZvcihTcGVj
aWFsOjpQb2ludGVyKSBjb25zdDsKIAogI2lmIEVOQUJMRShKSVQpCi0gICAgdm9pZCBkdW1wQ2Fs
bExpbmtTdGF0dXMoUHJpbnRTdHJlYW0mLCB1bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgQ2FsbExp
bmtJbmZvTWFwJik7CisgICAgdm9pZCBkdW1wQ2FsbExpbmtTdGF0dXMoUHJpbnRTdHJlYW0mLCB1
bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmKTsKICNlbmRpZgogCiAgICAgQmxv
Y2sqIG1fYmxvY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExp
bmtJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rSW5mby5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1MiwxMiArMzUyLDYg
QEAgaW5saW5lIENvZGVPcmlnaW4gZ2V0Q2FsbExpbmtJbmZvQ29kZU9yaQogICAgIHJldHVybiBj
YWxsTGlua0luZm8uY29kZU9yaWdpbigpOwogfQogCi10eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdp
biwgQ2FsbExpbmtJbmZvKiwgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFzaD4gQ2FsbExpbmtJbmZv
TWFwOwotCi0jZWxzZSAvLyBFTkFCTEUoSklUKQotCi10eXBlZGVmIEhhc2hNYXA8aW50LCB2b2lk
Kj4gQ2FsbExpbmtJbmZvTWFwOwotCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtT
dGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua1N0YXR1cy5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcg
Kzc3LDggQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcgogfQogCiBD
YWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKLSAgICBDb2RlQmxvY2sq
IHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIGNvbnN0IENhbGxMaW5rSW5m
b01hcCYgbWFwKQorICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCwgY29uc3QgSUNTdGF0dXNNYXAmIG1hcCwKKyAgICBFeGl0U2l0ZURhdGEgZXhpdFNp
dGVEYXRhKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jay0+
bV9sb2NrKTsKICAgICAKQEAgLTg1LDkgKzg2LDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtT
dGF0dXM6OmNvbXB1dGVGbwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICAgICBV
TlVTRURfUEFSQU0obWFwKTsKICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBFeGl0U2l0ZURhdGEg
ZXhpdFNpdGVEYXRhID0gY29tcHV0ZUV4aXRTaXRlRGF0YShwcm9maWxlZEJsb2NrLCBieXRlY29k
ZUluZGV4KTsKLSAgICAKLSAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IG1hcC5nZXQo
Q29kZU9yaWdpbihieXRlY29kZUluZGV4KSk7CisgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0lu
Zm8gPSBtYXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkpLmNhbGxMaW5rSW5mbzsKICAg
ICBpZiAoIWNhbGxMaW5rSW5mbykgewogICAgICAgICBpZiAoZXhpdFNpdGVEYXRhLnRha2VzU2xv
d1BhdGgpCiAgICAgICAgICAgICByZXR1cm4gdGFrZXNTbG93UGF0aCgpOwpAQCAtMTAwLDYgKzk5
LDEyIEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm8KICNlbmRpZgog
fQogCitDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKKyAgICBDb2Rl
QmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIGNvbnN0IElDU3Rh
dHVzTWFwJiBtYXApCit7CisgICAgcmV0dXJuIGNvbXB1dGVGb3IocHJvZmlsZWRCbG9jaywgYnl0
ZWNvZGVJbmRleCwgbWFwLCBjb21wdXRlRXhpdFNpdGVEYXRhKHByb2ZpbGVkQmxvY2ssIGJ5dGVj
b2RlSW5kZXgpKTsKK30KKwogQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0YSBDYWxsTGlua1N0
YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YShDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YTsKQEAg
LTEwNywxMSArMTEyLDIxIEBAIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgQ2FsbExpbmtT
dGEKICAgICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gcHJvZmlsZWRCbG9jay0+dW5s
aW5rZWRDb2RlQmxvY2soKTsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9j
ay0+bV9sb2NrKTsKIAotICAgIGV4aXRTaXRlRGF0YS50YWtlc1Nsb3dQYXRoID0KLSAgICAgICAg
Y29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRl
Y29kZUluZGV4LCBCYWRUeXBlKSkKLSAgICAgICAgfHwgY29kZUJsb2NrLT5oYXNFeGl0U2l0ZShs
b2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRFeGVjdXRhYmxl
KSk7Ci0gICAgZXhpdFNpdGVEYXRhLmJhZEZ1bmN0aW9uID0KLSAgICAgICAgY29kZUJsb2NrLT5o
YXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBC
YWRDZWxsKSk7CisgICAgYXV0byB0YWtlc1Nsb3dQYXRoID0gWyZdIChFeGl0aW5nSW5saW5lS2lu
ZCBpbmxpbmVLaW5kKSAtPiBFeGl0RmxhZyB7CisgICAgICAgIHJldHVybiBFeGl0RmxhZygKKyAg
ICAgICAgICAgIGNvZGVCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhp
dFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkVHlwZSwgRXhpdEZyb21Bbnl0aGluZywgaW5saW5lS2lu
ZCkpCisgICAgICAgICAgICB8fCBjb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpG
cmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZEV4ZWN1dGFibGUsIEV4aXRGcm9tQW55
dGhpbmcsIGlubGluZUtpbmQpKSwKKyAgICAgICAgICAgIGlubGluZUtpbmQpOworICAgIH07Cisg
ICAgCisgICAgYXV0byBiYWRGdW5jdGlvbiA9IFsmXSAoRXhpdGluZ0lubGluZUtpbmQgaW5saW5l
S2luZCkgLT4gRXhpdEZsYWcgeworICAgICAgICByZXR1cm4gRXhpdEZsYWcoY29kZUJsb2NrLT5o
YXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBC
YWRDZWxsLCBFeGl0RnJvbUFueXRoaW5nLCBpbmxpbmVLaW5kKSksIGlubGluZUtpbmQpOworICAg
IH07CisgICAgCisgICAgZXhpdFNpdGVEYXRhLnRha2VzU2xvd1BhdGggfD0gdGFrZXNTbG93UGF0
aChFeGl0RnJvbU5vdElubGluZWQpOworICAgIGV4aXRTaXRlRGF0YS50YWtlc1Nsb3dQYXRoIHw9
IHRha2VzU2xvd1BhdGgoRXhpdEZyb21JbmxpbmVkKTsKKyAgICBleGl0U2l0ZURhdGEuYmFkRnVu
Y3Rpb24gfD0gYmFkRnVuY3Rpb24oRXhpdEZyb21Ob3RJbmxpbmVkKTsKKyAgICBleGl0U2l0ZURh
dGEuYmFkRnVuY3Rpb24gfD0gYmFkRnVuY3Rpb24oRXhpdEZyb21JbmxpbmVkKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29k
ZUluZGV4KTsKQEAgLTIyNyw4MyArMjQyLDU0IEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3Rh
dHVzOjpjb21wdXRlRnIKIAogQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVG
b3IoCiAgICAgY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIENvZGVCbG9jayogcHJv
ZmlsZWRCbG9jaywgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sCi0gICAgRXhpdFNpdGVEYXRh
IGV4aXRTaXRlRGF0YSkKKyAgICBFeGl0U2l0ZURhdGEgZXhpdFNpdGVEYXRhLCBFeGl0aW5nSW5s
aW5lS2luZCBpbmxpbmVLaW5kKQogewogICAgIENhbGxMaW5rU3RhdHVzIHJlc3VsdCA9IGNvbXB1
dGVGb3IobG9ja2VyLCBwcm9maWxlZEJsb2NrLCBjYWxsTGlua0luZm8pOwotICAgIGlmIChleGl0
U2l0ZURhdGEuYmFkRnVuY3Rpb24pIHsKLSAgICAgICAgaWYgKHJlc3VsdC5pc0Jhc2VkT25TdHVi
KCkpIHsKKyAgICByZXN1bHQuYWNjb3VudEZvckV4aXRzKGV4aXRTaXRlRGF0YSwgaW5saW5lS2lu
ZCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZgorCit2b2lkIENhbGxMaW5rU3RhdHVz
OjphY2NvdW50Rm9yRXhpdHMoRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YSwgRXhpdGluZ0lubGlu
ZUtpbmQgaW5saW5lS2luZCkKK3sKKyAgICBpZiAoZXhpdFNpdGVEYXRhLmJhZEZ1bmN0aW9uLmlz
U2V0KGlubGluZUtpbmQpKSB7CisgICAgICAgIGlmIChpc0Jhc2VkT25TdHViKCkpIHsKICAgICAg
ICAgICAgIC8vIElmIHdlIGhhdmUgYSBwb2x5bW9ycGhpYyBzdHViLCB0aGVuIGhhdmluZyBhbiBl
eGl0IHNpdGUgaXMgbm90IHF1aXRlIHNvIHVzZWZ1bC4gSW4KICAgICAgICAgICAgIC8vIG1vc3Qg
Y2FzZXMsIHRoZSBpbmZvcm1hdGlvbiBpbiB0aGUgc3R1YiBoYXMgaGlnaGVyIGZpZGVsaXR5Lgot
ICAgICAgICAgICAgcmVzdWx0Lm1ha2VDbG9zdXJlQ2FsbCgpOworICAgICAgICAgICAgbWFrZUNs
b3N1cmVDYWxsKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBXZSBtaWdodCBu
b3QgaGF2ZSBhIHBvbHltb3JwaGljIHN0dWIgZm9yIGFueSBudW1iZXIgb2YgcmVhc29ucy4gV2hl
biB0aGlzIGhhcHBlbnMsIHdlCiAgICAgICAgICAgICAvLyBhcmUgaW4gbGVzcyBjZXJ0YWluIHRl
cnJpdG9yeSwgc28gZXhpdCBzaXRlcyBtZWFuIGEgbG90LgotICAgICAgICAgICAgcmVzdWx0Lm1f
Y291bGRUYWtlU2xvd1BhdGggPSB0cnVlOworICAgICAgICAgICAgbV9jb3VsZFRha2VTbG93UGF0
aCA9IHRydWU7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKGV4aXRTaXRlRGF0YS50YWtlc1Ns
b3dQYXRoKQotICAgICAgICByZXN1bHQubV9jb3VsZFRha2VTbG93UGF0aCA9IHRydWU7CiAgICAg
Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBpZiAoZXhpdFNpdGVEYXRhLnRha2VzU2xvd1BhdGgu
aXNTZXQoaW5saW5lS2luZCkpCisgICAgICAgIG1fY291bGRUYWtlU2xvd1BhdGggPSB0cnVlOwog
fQotI2VuZGlmCiAKLXZvaWQgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVERkdTdGF0dXNlcygKLSAg
ICBDb2RlQmxvY2sqIGRmZ0NvZGVCbG9jaywgQ2FsbExpbmtTdGF0dXM6OkNvbnRleHRNYXAmIG1h
cCkKK0NhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAorICAgIENvZGVC
bG9jayogcHJvZmlsZWRCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLAorICAgIGNvbnN0IElD
U3RhdHVzTWFwJiBiYXNlbGluZU1hcCwgY29uc3QgSUNTdGF0dXNDb250ZXh0U3RhY2smIG9wdGlt
aXplZFN0YWNrKQogewotI2lmIEVOQUJMRShERkdfSklUKQotICAgIFJFTEVBU0VfQVNTRVJUKGRm
Z0NvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCk7Ci0gICAgQ29kZUJsb2Nr
KiBiYXNlbGluZUNvZGVCbG9jayA9IGRmZ0NvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKTsKLSAgICBm
b3IgKGF1dG8gaXRlciA9IGRmZ0NvZGVCbG9jay0+Y2FsbExpbmtJbmZvc0JlZ2luKCk7ICEhaXRl
cjsgKytpdGVyKSB7Ci0gICAgICAgIENhbGxMaW5rSW5mbyYgaW5mbyA9ICoqaXRlcjsKLSAgICAg
ICAgaWYgKGluZm8uaXNEaXJlY3QoKSkgewotICAgICAgICAgICAgLy8gSWYgdGhlIERGRyB3YXMg
YWJsZSB0byBnZXQgYSBkaXJlY3QgY2FsbCB0aGVuIHByb2JhYmx5IHNvIHdpbGwgd2UuIEhvd2V2
ZXIsIHRoZXJlIGlzCi0gICAgICAgICAgICAvLyBhIHJlbW90ZSBjaGFuY2UgdGhhdCBpdCdzIGJh
ZCBuZXdzIHRvIGxvc2UgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCB0aGUgREZHIGRpZC4gV2UnZAot
ICAgICAgICAgICAgLy8gaWRlYWxseSBsaWtlIHRvIGp1c3Qga25vdyB0aGF0IHRoZSBERkcgaGFk
IGVtaXR0ZWQgYSBEaXJlY3RDYWxsLgotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0K
LSAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gaW5mby5jb2RlT3JpZ2luKCk7Ci0gICAg
ICAgIAotICAgICAgICAvLyBDaGVjayBpZiB3ZSBoYWQgYWxyZWFkeSBwcmV2aW91c2x5IG1hZGUg
YSB0ZXJyaWJsZSBtaXN0YWtlIGluIHRoZSBGVEwgZm9yIHRoaXMKLSAgICAgICAgLy8gY29kZSBv
cmlnaW4uIE5vdGUgdGhhdCB0aGlzIGlzIGFwcHJveGltYXRlIGJlY2F1c2Ugd2UgY291bGQgaGF2
ZSBhIG1vbm92YXJpYW50Ci0gICAgICAgIC8vIGlubGluZSBpbiB0aGUgRlRMIHRoYXQgZW5kZWQg
dXAgZmFpbGluZy4gV2Ugc2hvdWxkIGZpeCB0aGF0IGF0IHNvbWUgcG9pbnQgYnkKLSAgICAgICAg
Ly8gaGF2aW5nIGRhdGEgc3RydWN0dXJlcyB0byB0cmFjayB0aGUgY29udGV4dCBvZiBmcmVxdWVu
dCBleGl0cy4gVGhpcyBpcyBjdXJyZW50bHkKLSAgICAgICAgLy8gY2hhbGxlbmdpbmcgYmVjYXVz
ZSBpdCB3b3VsZCByZXF1aXJlIGNyZWF0aW5nIGEgQ29kZU9yaWdpbi1iYXNlZCBkYXRhYmFzZSBp
bgotICAgICAgICAvLyBiYXNlbGluZSBDb2RlQmxvY2tzLCBidXQgdGhvc2UgQ29kZUJsb2NrcyBk
b24ndCByZWFsbHkgaGF2ZSBhIHBsYWNlIHRvIHB1dCB0aGUKLSAgICAgICAgLy8gSW5saW5lQ2Fs
bEZyYW1lcy4KLSAgICAgICAgQ29kZUJsb2NrKiBjdXJyZW50QmFzZWxpbmUgPQotICAgICAgICAg
ICAgYmFzZWxpbmVDb2RlQmxvY2tGb3JPcmlnaW5BbmRCYXNlbGluZUNvZGVCbG9jayhjb2RlT3Jp
Z2luLCBiYXNlbGluZUNvZGVCbG9jayk7Ci0gICAgICAgIEV4aXRTaXRlRGF0YSBleGl0U2l0ZURh
dGEgPSBjb21wdXRlRXhpdFNpdGVEYXRhKGN1cnJlbnRCYXNlbGluZSwgY29kZU9yaWdpbi5ieXRl
Y29kZUluZGV4KTsKLSAgICAgICAgCi0gICAgICAgIHsKLSAgICAgICAgICAgIENvbmN1cnJlbnRK
U0xvY2tlciBsb2NrZXIoZGZnQ29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgbWFwLmFk
ZChpbmZvLmNvZGVPcmlnaW4oKSwgY29tcHV0ZUZvcihsb2NrZXIsIGRmZ0NvZGVCbG9jaywgaW5m
bywgZXhpdFNpdGVEYXRhKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShkZmdDb2RlQmxvY2spOwotI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorICAgIEV4aXRT
aXRlRGF0YSBleGl0U2l0ZURhdGEgPSBjb21wdXRlRXhpdFNpdGVEYXRhKHByb2ZpbGVkQmxvY2ss
IGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7CiAgICAgCi0gICAgaWYgKENhbGxMaW5rU3RhdHVz
SW50ZXJuYWw6OnZlcmJvc2UpIHsKLSAgICAgICAgZGF0YUxvZygiQ29udGV4dCBtYXA6XG4iKTsK
LSAgICAgICAgQ29udGV4dE1hcDo6aXRlcmF0b3IgaXRlciA9IG1hcC5iZWdpbigpOwotICAgICAg
ICBDb250ZXh0TWFwOjppdGVyYXRvciBlbmQgPSBtYXAuZW5kKCk7Ci0gICAgICAgIGZvciAoOyBp
dGVyICE9IGVuZDsgKytpdGVyKSB7Ci0gICAgICAgICAgICBkYXRhTG9nKCIgICAgIiwgaXRlci0+
a2V5LCAiOlxuIik7Ci0gICAgICAgICAgICBkYXRhTG9nKCIgICAgICAgICIsIGl0ZXItPnZhbHVl
LCAiXG4iKTsKKyAgICBmb3IgKGNvbnN0IElDU3RhdHVzQ29udGV4dCogY29udGV4dCA6IG9wdGlt
aXplZFN0YWNrKSB7CisgICAgICAgIElDU3RhdHVzIHN0YXR1cyA9IGNvbnRleHQtPmdldChjb2Rl
T3JpZ2luKTsKKyAgICAgICAgaWYgKHN0YXR1cy5jYWxsTGlua0luZm8pIHsKKyAgICAgICAgICAg
IENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29udGV4dC0+b3B0aW1pemVkQ29kZUJsb2NrLT5t
X2xvY2spOworICAgICAgICAgICAgQ2FsbExpbmtTdGF0dXMgcmVzdWx0ID0gY29tcHV0ZUZvcigK
KyAgICAgICAgICAgICAgICBsb2NrZXIsIGNvbnRleHQtPm9wdGltaXplZENvZGVCbG9jaywgKnN0
YXR1cy5jYWxsTGlua0luZm8sIGV4aXRTaXRlRGF0YSwKKyAgICAgICAgICAgICAgICBjb250ZXh0
LT5pbmxpbmVLaW5kKGNvZGVPcmlnaW4pKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
aWYgKHN0YXR1cy5jYWxsU3RhdHVzKQorICAgICAgICAgICAgcmV0dXJuICpzdGF0dXMuY2FsbFN0
YXR1czsKICAgICB9Ci19Ci0KLUNhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRl
Rm9yKAotICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
LAotICAgIGNvbnN0IENhbGxMaW5rSW5mb01hcCYgYmFzZWxpbmVNYXAsIGNvbnN0IENhbGxMaW5r
U3RhdHVzOjpDb250ZXh0TWFwJiBkZmdNYXApCi17Ci0gICAgYXV0byBpdGVyID0gZGZnTWFwLmZp
bmQoY29kZU9yaWdpbik7Ci0gICAgaWYgKGl0ZXIgIT0gZGZnTWFwLmVuZCgpKQotICAgICAgICBy
ZXR1cm4gaXRlci0+dmFsdWU7CiAgICAgCi0gICAgcmV0dXJuIGNvbXB1dGVGb3IocHJvZmlsZWRC
bG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBiYXNlbGluZU1hcCk7CisgICAgcmV0dXJu
IGNvbXB1dGVGb3IocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBiYXNl
bGluZU1hcCwgZXhpdFNpdGVEYXRhKTsKIH0KIAogdm9pZCBDYWxsTGlua1N0YXR1czo6c2V0UHJv
dmVuQ29uc3RhbnRDYWxsZWUoQ2FsbFZhcmlhbnQgdmFyaWFudCkKQEAgLTMyNyw2ICszMTMsMjQg
QEAgdm9pZCBDYWxsTGlua1N0YXR1czo6bWFrZUNsb3N1cmVDYWxsKCkKICAgICBtX3ZhcmlhbnRz
ID0gZGVzcGVjaWZpZWRWYXJpYW50TGlzdChtX3ZhcmlhbnRzKTsKIH0KIAorYm9vbCBDYWxsTGlu
a1N0YXR1czo6ZmluYWxpemUoKQoreworICAgIGZvciAoQ2FsbFZhcmlhbnQmIHZhcmlhbnQgOiBt
X3ZhcmlhbnRzKSB7CisgICAgICAgIGlmICghdmFyaWFudC5maW5hbGl6ZSgpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDYWxs
TGlua1N0YXR1czo6ZmlsdGVyKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBtX3Zhcmlh
bnRzLnJlbW92ZUFsbE1hdGNoaW5nKAorICAgICAgICBbJl0gKENhbGxWYXJpYW50JiB2YXJpYW50
KSAtPiBib29sIHsKKyAgICAgICAgICAgIHZhcmlhbnQuZmlsdGVyKHZtLCB2YWx1ZSk7CisgICAg
ICAgICAgICByZXR1cm4gIXZhcmlhbnQ7CisgICAgICAgIH0pOworfQorCiB2b2lkIENhbGxMaW5r
U3RhdHVzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgaWYgKCFpc1NldCgp
KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtT
dGF0dXMuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxMaW5rU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAKICNp
bmNsdWRlICJDYWxsVmFyaWFudC5oIgogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRl
ICJDb25jdXJyZW50SlNMb2NrLmgiCisjaW5jbHVkZSAiRXhpdEZsYWcuaCIKKyNpbmNsdWRlICJJ
Q1N0YXR1c01hcC5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7
CkBAIC02MCwzOSArNjIsMzMgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAgCi0gICAgc3Rh
dGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoCi0gICAgICAgIENvZGVCbG9jayosIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYpOwotCiAgICAgc3RydWN0
IEV4aXRTaXRlRGF0YSB7Ci0gICAgICAgIGJvb2wgdGFrZXNTbG93UGF0aCB7IGZhbHNlIH07Ci0g
ICAgICAgIGJvb2wgYmFkRnVuY3Rpb24geyBmYWxzZSB9OworICAgICAgICBFeGl0RmxhZyB0YWtl
c1Nsb3dQYXRoOworICAgICAgICBFeGl0RmxhZyBiYWRGdW5jdGlvbjsKICAgICB9OwogICAgIHN0
YXRpYyBFeGl0U2l0ZURhdGEgY29tcHV0ZUV4aXRTaXRlRGF0YShDb2RlQmxvY2sqLCB1bnNpZ25l
ZCBieXRlY29kZUluZGV4KTsKICAgICAKKyAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0
ZUZvcihDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBjb25zdCBJQ1N0YXR1c01h
cCYsIEV4aXRTaXRlRGF0YSk7CisgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3Io
Q29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgY29uc3QgSUNTdGF0dXNNYXAmKTsK
KwogI2lmIEVOQUJMRShKSVQpCiAgICAgLy8gQ29tcHV0ZXMgdGhlIHN0YXR1cyBhc3N1bWluZyB0
aGF0IHdlIG5ldmVyIHRvb2sgc2xvdyBwYXRoIGFuZCBuZXZlciBwcmV2aW91c2x5CiAgICAgLy8g
ZXhpdGVkLgogICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKGNvbnN0IENvbmN1
cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayosIENhbGxMaW5rSW5mbyYpOworICAgIAorICAgIC8v
IENvbXB1dGVzIHRoZSBzdGF0dXMgYWNjb3VudGluZyBmb3IgZXhpdHMuCiAgICAgc3RhdGljIENh
bGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoCi0gICAgICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tl
ciYsIENvZGVCbG9jayosIENhbGxMaW5rSW5mbyYsIEV4aXRTaXRlRGF0YSk7CisgICAgICAgIGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayosIENhbGxMaW5rSW5mbyYsIEV4aXRT
aXRlRGF0YSwgRXhpdGluZ0lubGluZUtpbmQgPSBFeGl0RnJvbUFueUlubGluZUtpbmQpOwogI2Vu
ZGlmCiAgICAgCi0gICAgdHlwZWRlZiBIYXNoTWFwPENvZGVPcmlnaW4sIENhbGxMaW5rU3RhdHVz
LCBDb2RlT3JpZ2luQXBwcm94aW1hdGVIYXNoPiBDb250ZXh0TWFwOwotICAgIAotICAgIC8vIENv
bXB1dGVzIGFsbCBvZiB0aGUgc3RhdHVzZXMgb2YgdGhlIERGRyBjb2RlIGJsb2NrLiBEb2Vzbid0
IGluY2x1ZGUgc3RhdHVzZXMgdGhhdCBoYWQKLSAgICAvLyBubyBpbmZvcm1hdGlvbi4gQ3VycmVu
dGx5IHdlIHVzZSB0aGlzIHdoZW4gY29tcGlsaW5nIEZUTCBjb2RlLCB0byBlbmFibGUgcG9seXZh
cmlhbnQKLSAgICAvLyBpbmxpbmluZy4KLSAgICBzdGF0aWMgdm9pZCBjb21wdXRlREZHU3RhdHVz
ZXMoQ29kZUJsb2NrKiBkZmdDb2RlQmxvY2ssIENvbnRleHRNYXAmKTsKLSAgICAKLSAgICAvLyBI
ZWxwZXIgdGhhdCBmaXJzdCBjb25zdWx0cyB0aGUgQ29udGV4dE1hcCBhbmQgdGhlbiBkb2VzIGNv
bXB1dGVGb3IoKS4KICAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcigKLSAgICAg
ICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiwgY29uc3Qg
Q29udGV4dE1hcCYpOworICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBjb25zdCBJQ1N0
YXR1c01hcCYsIGNvbnN0IElDU3RhdHVzQ29udGV4dFN0YWNrJik7CiAgICAgCiAgICAgdm9pZCBz
ZXRQcm92ZW5Db25zdGFudENhbGxlZShDYWxsVmFyaWFudCk7CiAgICAgCiAgICAgYm9vbCBpc1Nl
dCgpIGNvbnN0IHsgcmV0dXJuICFtX3ZhcmlhbnRzLmlzRW1wdHkoKSB8fCBtX2NvdWxkVGFrZVNs
b3dQYXRoOyB9CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNT
ZXQoKTsgfQorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBpc1Nl
dCgpOyB9CiAgICAgCiAgICAgYm9vbCBjb3VsZFRha2VTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fY291bGRUYWtlU2xvd1BhdGg7IH0KICAgICAKQEAgLTExMCw2ICsxMDYsMTAgQEAgcHVibGlj
OgogICAgIAogICAgIHVuc2lnbmVkIG1heE51bUFyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1f
bWF4TnVtQXJndW1lbnRzOyB9CiAgICAgCisgICAgYm9vbCBmaW5hbGl6ZSgpOworICAgIAorICAg
IHZvaWQgZmlsdGVyKFZNJiwgSlNWYWx1ZSk7CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3Ry
ZWFtJikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgpAQCAtMTIxLDYgKzEyMSw4IEBAIHByaXZhdGU6
CiAgICAgICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENhbGxMaW5rSW5mbyYpOwogI2Vu
ZGlmCiAgICAgCisgICAgdm9pZCBhY2NvdW50Rm9yRXhpdHMoRXhpdFNpdGVEYXRhLCBFeGl0aW5n
SW5saW5lS2luZCk7CisgICAgCiAgICAgQ2FsbFZhcmlhbnRMaXN0IG1fdmFyaWFudHM7CiAgICAg
Ym9vbCBtX2NvdWxkVGFrZVNsb3dQYXRoIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNQcm92ZWQg
eyBmYWxzZSB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJp
YW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bFZhcmlhbnQuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbFZhcmlhbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDYgKzMxLDM1
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitib29sIENhbGxWYXJpYW50OjpmaW5hbGl6ZSgpCit7
CisgICAgaWYgKG1fY2FsbGVlICYmICFIZWFwOjppc01hcmtlZChtX2NhbGxlZSkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDYWxsVmFyaWFudDo6
ZmlsdGVyKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAoISp0aGlzKQorICAgICAg
ICByZXR1cm47CisgICAgCisgICAgaWYgKCFpc0Nsb3N1cmVDYWxsKCkpIHsKKyAgICAgICAgaWYg
KG5vbkV4ZWN1dGFibGVDYWxsZWUoKSAhPSB2YWx1ZSkKKyAgICAgICAgICAgICp0aGlzID0gQ2Fs
bFZhcmlhbnQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoSlNGdW5j
dGlvbiogZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgdmFsdWUpKSB7
CisgICAgICAgIGlmIChmdW5jdGlvbi0+ZXhlY3V0YWJsZSgpID09IGV4ZWN1dGFibGUoKSkKKyAg
ICAgICAgICAgICp0aGlzID0gQ2FsbFZhcmlhbnQoZnVuY3Rpb24pOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICAqdGhpcyA9IENhbGxWYXJpYW50KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgCisgICAgKnRoaXMgPSBDYWxsVmFyaWFudCgpOworfQorCiB2b2lkIENhbGxWYXJpYW50
OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgaWYgKCEqdGhpcykgewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgJKHJldmlz
aW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgIHsKICAg
ICB9CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsZWU7
IH0KKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2NhbGxl
ZTsgfQogICAgIAogICAgIC8vIElmIHRoaXMgdmFyaWFudCByZWZlcnMgdG8gYSBmdW5jdGlvbiwg
Y2hhbmdlIGl0IHRvIHJlZmVyIHRvIGl0cyBleGVjdXRhYmxlLgogICAgIEFMV0FZU19JTkxJTkUg
Q2FsbFZhcmlhbnQgZGVzcGVjaWZpZWRDbG9zdXJlKCkgY29uc3QKQEAgLTEzNiw2ICsxMzYsMTAg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCisgICAgYm9v
bCBmaW5hbGl6ZSgpOworICAgIAorICAgIHZvaWQgZmlsdGVyKFZNJiwgSlNWYWx1ZSk7CisgICAg
CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OwogICAgIAogICAgIGJvb2wg
aXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMzgsMjQgKzIzOCwyMCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKCkKIAogdm9p
ZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0KQogewotICAgIFN0dWJJ
bmZvTWFwIHN0dWJJbmZvczsKLSAgICBDYWxsTGlua0luZm9NYXAgY2FsbExpbmtJbmZvczsKLSAg
ICBnZXRTdHViSW5mb01hcChzdHViSW5mb3MpOwotICAgIGdldENhbGxMaW5rSW5mb01hcChjYWxs
TGlua0luZm9zKTsKLSAgICBCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wQmxvY2sodGhp
cywgaW5zdHJ1Y3Rpb25zKCksIG91dCwgc3R1YkluZm9zLCBjYWxsTGlua0luZm9zKTsKKyAgICBJ
Q1N0YXR1c01hcCBzdGF0dXNNYXA7CisgICAgZ2V0SUNTdGF0dXNNYXAoc3RhdHVzTWFwKTsKKyAg
ICBCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wQmxvY2sodGhpcywgaW5zdHJ1Y3Rpb25z
KCksIG91dCwgc3RhdHVzTWFwKTsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQ
cmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0
aW9uKiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiBzdHViSW5mb3MsIGNvbnN0IENhbGxMaW5rSW5m
b01hcCYgY2FsbExpbmtJbmZvcykKK3ZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRT
dHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlvbiom
IGl0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQogewotICAgIEJ5dGVjb2RlRHVtcGVy
PENvZGVCbG9jaz46OmR1bXBCeXRlY29kZSh0aGlzLCBvdXQsIGJlZ2luLCBpdCwgc3R1YkluZm9z
LCBjYWxsTGlua0luZm9zKTsKKyAgICBCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wQnl0
ZWNvZGUodGhpcywgb3V0LCBiZWdpbiwgaXQsIHN0YXR1c01hcCk7CiB9CiAKLXZvaWQgQ29kZUJs
b2NrOjpkdW1wQnl0ZWNvZGUoCi0gICAgUHJpbnRTdHJlYW0mIG91dCwgdW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQsCi0gICAgY29uc3QgU3R1YkluZm9NYXAmIHN0dWJJbmZvcywgY29uc3QgQ2FsbExp
bmtJbmZvTWFwJiBjYWxsTGlua0luZm9zKQordm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQ
cmludFN0cmVhbSYgb3V0LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgSUNTdGF0dXNN
YXAmIHN0YXR1c01hcCkKIHsKICAgICBjb25zdCBJbnN0cnVjdGlvbiogaXQgPSAmaW5zdHJ1Y3Rp
b25zKClbYnl0ZWNvZGVPZmZzZXRdOwotICAgIGR1bXBCeXRlY29kZShvdXQsIGluc3RydWN0aW9u
cygpLmJlZ2luKCksIGl0LCBzdHViSW5mb3MsIGNhbGxMaW5rSW5mb3MpOworICAgIGR1bXBCeXRl
Y29kZShvdXQsIGluc3RydWN0aW9ucygpLmJlZ2luKCksIGl0LCBzdGF0dXNNYXApOwogfQogCiAj
ZGVmaW5lIEZPUl9FQUNIX01FTUJFUl9WRUNUT1IobWFjcm8pIFwKQEAgLTExNjYsNiArMTE2Miw5
IEBAIHZvaWQgQ29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhjb24KICNpZiBFTkFCTEUo
REZHX0pJVCkKICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpIHsK
ICAgICAgICAgREZHOjpDb21tb25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENvZGUtPmRmZ0NvbW1v
bigpOworICAgICAgICAKKyAgICAgICAgZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLm1hcmtJ
ZkNoZWFwKHZpc2l0b3IpOworICAgICAgICAKICAgICAgICAgZm9yIChhdXRvJiB3ZWFrUmVmZXJl
bmNlIDogZGZnQ29tbW9uLT53ZWFrU3RydWN0dXJlUmVmZXJlbmNlcykKICAgICAgICAgICAgIHdl
YWtSZWZlcmVuY2UtPm1hcmtJZkNoZWFwKHZpc2l0b3IpOwogCkBAIC0xMzk3LDU3ICsxMzk2LDQz
IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICAgICAgICAgZmlu
YWxpemVCYXNlbGluZUpJVElubGluZUNhY2hlcygpOwogI2VuZGlmCiAKLSAgICBWTTo6U3BhY2VB
bmRGaW5hbGl6ZXJTZXQ6OmZpbmFsaXplclNldEZvcigqc3Vic3BhY2UoKSkucmVtb3ZlKHRoaXMp
OwotfQotCi12b2lkIENvZGVCbG9jazo6Z2V0U3R1YkluZm9NYXAoY29uc3QgQ29uY3VycmVudEpT
TG9ja2VyJiwgU3R1YkluZm9NYXAmIHJlc3VsdCkKLXsKLSNpZiBFTkFCTEUoSklUKQotICAgIGlm
IChKSVRDb2RlOjppc0pJVChqaXRUeXBlKCkpKQotICAgICAgICB0b0hhc2hNYXAobV9zdHViSW5m
b3MsIGdldFN0cnVjdHVyZVN0dWJJbmZvQ29kZU9yaWdpbiwgcmVzdWx0KTsKLSNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKHJlc3VsdCk7Ci0jZW5kaWYKLX0KLQotdm9pZCBDb2RlQmxvY2s6OmdldFN0
dWJJbmZvTWFwKFN0dWJJbmZvTWFwJiByZXN1bHQpCi17Ci0gICAgQ29uY3VycmVudEpTTG9ja2Vy
IGxvY2tlcihtX2xvY2spOwotICAgIGdldFN0dWJJbmZvTWFwKGxvY2tlciwgcmVzdWx0KTsKLX0K
LQotdm9pZCBDb2RlQmxvY2s6OmdldENhbGxMaW5rSW5mb01hcChjb25zdCBDb25jdXJyZW50SlNM
b2NrZXImLCBDYWxsTGlua0luZm9NYXAmIHJlc3VsdCkKLXsKLSNpZiBFTkFCTEUoSklUKQotICAg
IGlmIChKSVRDb2RlOjppc0pJVChqaXRUeXBlKCkpKQotICAgICAgICB0b0hhc2hNYXAobV9jYWxs
TGlua0luZm9zLCBnZXRDYWxsTGlua0luZm9Db2RlT3JpZ2luLCByZXN1bHQpOwotI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKLSNlbmRpZgotfQorICAgIGlmIChKSVRDb2RlOjppc09w
dGltaXppbmdKSVQoaml0VHlwZSgpKSkgeworICAgICAgICBERkc6OkNvbW1vbkRhdGEqIGRmZ0Nv
bW1vbiA9IG1faml0Q29kZS0+ZGZnQ29tbW9uKCk7CisgICAgICAgIGRmZ0NvbW1vbi0+cmVjb3Jk
ZWRTdGF0dXNlcy5maW5hbGl6ZSgpOworICAgIH0KIAotdm9pZCBDb2RlQmxvY2s6OmdldENhbGxM
aW5rSW5mb01hcChDYWxsTGlua0luZm9NYXAmIHJlc3VsdCkKLXsKLSAgICBDb25jdXJyZW50SlNM
b2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgZ2V0Q2FsbExpbmtJbmZvTWFwKGxvY2tlciwgcmVz
dWx0KTsKKyAgICBWTTo6U3BhY2VBbmRGaW5hbGl6ZXJTZXQ6OmZpbmFsaXplclNldEZvcigqc3Vi
c3BhY2UoKSkucmVtb3ZlKHRoaXMpOwogfQogCi12b2lkIENvZGVCbG9jazo6Z2V0QnlWYWxJbmZv
TWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5VmFsSW5mb01hcCYgcmVzdWx0KQordm9p
ZCBDb2RlQmxvY2s6OmdldElDU3RhdHVzTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIElD
U3RhdHVzTWFwJiByZXN1bHQpCiB7CiAjaWYgRU5BQkxFKEpJVCkKICAgICBpZiAoSklUQ29kZTo6
aXNKSVQoaml0VHlwZSgpKSkgewotICAgICAgICBmb3IgKGF1dG8qIGJ5VmFsSW5mbyA6IG1fYnlW
YWxJbmZvcykKLSAgICAgICAgICAgIHJlc3VsdC5hZGQoQ29kZU9yaWdpbihieVZhbEluZm8tPmJ5
dGVjb2RlSW5kZXgpLCBieVZhbEluZm8pOworICAgICAgICBmb3IgKFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViSW5mbyA6IG1fc3R1YkluZm9zKQorICAgICAgICAgICAgcmVzdWx0LmFkZChzdHViSW5m
by0+Y29kZU9yaWdpbiwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLnN0dWJJbmZvID0gc3R1
YkluZm87CisgICAgICAgIGZvciAoQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gOiBtX2NhbGxM
aW5rSW5mb3MpCisgICAgICAgICAgICByZXN1bHQuYWRkKGNhbGxMaW5rSW5mby0+Y29kZU9yaWdp
bigpLCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUuY2FsbExpbmtJbmZvID0gY2FsbExpbmtJ
bmZvOworICAgICAgICBmb3IgKEJ5VmFsSW5mbyogYnlWYWxJbmZvIDogbV9ieVZhbEluZm9zKQor
ICAgICAgICAgICAgcmVzdWx0LmFkZChDb2RlT3JpZ2luKGJ5VmFsSW5mby0+Ynl0ZWNvZGVJbmRl
eCksIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52YWx1ZS5ieVZhbEluZm8gPSBieVZhbEluZm87Cisg
ICAgICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0VHlwZSgpKSkgeworICAgICAg
ICAgICAgREZHOjpDb21tb25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENvZGUtPmRmZ0NvbW1vbigp
OworICAgICAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1
c2VzLmNhbGxzKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQocGFpci5maXJzdCwgSUNTdGF0
dXMoKSkuaXRlcmF0b3ItPnZhbHVlLmNhbGxTdGF0dXMgPSBwYWlyLnNlY29uZC5nZXQoKTsKKyAg
ICAgICAgICAgIGZvciAoYXV0byYgcGFpciA6IGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5n
ZXRzKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQocGFpci5maXJzdCwgSUNTdGF0dXMoKSku
aXRlcmF0b3ItPnZhbHVlLmdldFN0YXR1cyA9IHBhaXIuc2Vjb25kLmdldCgpOworICAgICAgICAg
ICAgZm9yIChhdXRvJiBwYWlyIDogZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLnB1dHMpCisg
ICAgICAgICAgICAgICAgcmVzdWx0LmFkZChwYWlyLmZpcnN0LCBJQ1N0YXR1cygpKS5pdGVyYXRv
ci0+dmFsdWUucHV0U3RhdHVzID0gcGFpci5zZWNvbmQuZ2V0KCk7CisgICAgICAgIH0KICAgICB9
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShyZXN1bHQpOwogI2VuZGlmCiB9CiAKLXZvaWQgQ29k
ZUJsb2NrOjpnZXRCeVZhbEluZm9NYXAoQnlWYWxJbmZvTWFwJiByZXN1bHQpCit2b2lkIENvZGVC
bG9jazo6Z2V0SUNTdGF0dXNNYXAoSUNTdGF0dXNNYXAmIHJlc3VsdCkKIHsKICAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgZ2V0QnlWYWxJbmZvTWFwKGxvY2tlciwg
cmVzdWx0KTsKKyAgICBnZXRJQ1N0YXR1c01hcChsb2NrZXIsIHJlc3VsdCk7CiB9CiAKICNpZiBF
TkFCTEUoSklUKQpAQCAtMTUxNCw3ICsxNDk5LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnJlc2V0SklU
RGF0YSgpCiAgICAgCiAgICAgLy8gV2UgY2FuIGNsZWFyIHRoZXNlIGJlY2F1c2Ugbm8gb3RoZXIg
dGhyZWFkIHdpbGwgaGF2ZSByZWZlcmVuY2VzIHRvIGFueSBzdHViIGluZm9zLCBjYWxsCiAgICAg
Ly8gbGluayBpbmZvcywgb3IgYnkgdmFsIGluZm9zIGlmIHdlIGRvbid0IGhhdmUgSklUIGNvZGUu
IEF0dGVtcHRzIHRvIHF1ZXJ5IHRoZXNlIGRhdGEKLSAgICAvLyBzdHJ1Y3R1cmVzIHVzaW5nIHRo
ZSBjb25jdXJyZW50IEFQSSAoZ2V0U3R1YkluZm9NYXAgYW5kIGZyaWVuZHMpIHdpbGwgcmV0dXJu
IG5vdGhpbmcgaWYgd2UKKyAgICAvLyBzdHJ1Y3R1cmVzIHVzaW5nIHRoZSBjb25jdXJyZW50IEFQ
SSAoZ2V0SUNTdGF0dXNNYXAgYW5kIGZyaWVuZHMpIHdpbGwgcmV0dXJuIG5vdGhpbmcgaWYgd2UK
ICAgICAvLyBkb24ndCBoYXZlIEpJVCBjb2RlLgogICAgIG1fc3R1YkluZm9zLmNsZWFyKCk7CiAg
ICAgbV9jYWxsTGlua0luZm9zLmNsZWFyKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1
LDcgQEAKICNpbmNsdWRlICJFeHByZXNzaW9uUmFuZ2VJbmZvLmgiCiAjaW5jbHVkZSAiRnVuY3Rp
b25FeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiSGFuZGxlckluZm8uaCIKKyNpbmNsdWRlICJJQ1N0
YXR1c01hcC5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5o
IgogI2luY2x1ZGUgIkpJVENvZGVNYXAuaCIKQEAgLTk2LDggKzk3LDYgQEAgZW51bSBjbGFzcyBB
Y2Nlc3NUeXBlIDogaW50OF90OwogCiBzdHJ1Y3QgQXJpdGhQcm9maWxlOwogCi10eXBlZGVmIEhh
c2hNYXA8Q29kZU9yaWdpbiwgU3RydWN0dXJlU3R1YkluZm8qLCBDb2RlT3JpZ2luQXBwcm94aW1h
dGVIYXNoPiBTdHViSW5mb01hcDsKLQogZW51bSBSZW9wdGltaXphdGlvbk1vZGUgeyBEb250Q291
bnRSZW9wdGltaXphdGlvbiwgQ291bnRSZW9wdGltaXphdGlvbiB9OwogCiBjbGFzcyBDb2RlQmxv
Y2sgOiBwdWJsaWMgSlNDZWxsIHsKQEAgLTE5Niw4ICsxOTUsOCBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGR1bXBCeXRlY29kZSgpOwogICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJik7
Ci0gICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rp
b24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBTdHViSW5mb01hcCYgPSBT
dHViSW5mb01hcCgpLCBjb25zdCBDYWxsTGlua0luZm9NYXAmID0gQ2FsbExpbmtJbmZvTWFwKCkp
OwotICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0LCBjb25zdCBTdHViSW5mb01hcCYgPSBTdHViSW5mb01hcCgpLCBjb25zdCBDYWxs
TGlua0luZm9NYXAmID0gQ2FsbExpbmtJbmZvTWFwKCkpOworICAgIHZvaWQgZHVtcEJ5dGVjb2Rl
KFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1
Y3Rpb24qJiBpdCwgY29uc3QgSUNTdGF0dXNNYXAmID0gSUNTdGF0dXNNYXAoKSk7CisgICAgdm9p
ZCBkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQs
IGNvbnN0IElDU3RhdHVzTWFwJiA9IElDU3RhdHVzTWFwKCkpOwogCiAgICAgdm9pZCBkdW1wRXhj
ZXB0aW9uSGFuZGxlcnMoUHJpbnRTdHJlYW0mKTsKICAgICB2b2lkIHByaW50U3RydWN0dXJlcyhQ
cmludFN0cmVhbSYsIGNvbnN0IEluc3RydWN0aW9uKik7CkBAIC0yMzcsMTQgKzIzNiw4IEBAIHB1
YmxpYzoKIAogICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5dGVjb2RlT2Zmc2V0RnJvbUNh
bGxTaXRlSW5kZXgoQ2FsbFNpdGVJbmRleCk7CiAKLSAgICB2b2lkIGdldFN0dWJJbmZvTWFwKGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFN0dWJJbmZvTWFwJiByZXN1bHQpOwotICAgIHZvaWQg
Z2V0U3R1YkluZm9NYXAoU3R1YkluZm9NYXAmIHJlc3VsdCk7Ci0gICAgCi0gICAgdm9pZCBnZXRD
YWxsTGlua0luZm9NYXAoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ2FsbExpbmtJbmZvTWFw
JiByZXN1bHQpOwotICAgIHZvaWQgZ2V0Q2FsbExpbmtJbmZvTWFwKENhbGxMaW5rSW5mb01hcCYg
cmVzdWx0KTsKLQotICAgIHZvaWQgZ2V0QnlWYWxJbmZvTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xv
Y2tlciYsIEJ5VmFsSW5mb01hcCYgcmVzdWx0KTsKLSAgICB2b2lkIGdldEJ5VmFsSW5mb01hcChC
eVZhbEluZm9NYXAmIHJlc3VsdCk7CisgICAgdm9pZCBnZXRJQ1N0YXR1c01hcChjb25zdCBDb25j
dXJyZW50SlNMb2NrZXImLCBJQ1N0YXR1c01hcCYgcmVzdWx0KTsKKyAgICB2b2lkIGdldElDU3Rh
dHVzTWFwKElDU3RhdHVzTWFwJiByZXN1bHQpOwogICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAg
SklUQWRkSUMqIGFkZEpJVEFkZElDKEFyaXRoUHJvZmlsZSosIEluc3RydWN0aW9uKik7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCShyZXZp
c2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdp
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEyLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEyLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Niw3ICs0Niw3IEBAIHVuc2lnbmVkIENvZGVPcmln
aW46OmlubGluZURlcHRoKCkgY29uc3QKICAgICByZXR1cm4gaW5saW5lRGVwdGhGb3JDYWxsRnJh
bWUoaW5saW5lQ2FsbEZyYW1lKTsKIH0KIAotYm9vbCBDb2RlT3JpZ2luOjppc0FwcHJveGltYXRl
bHlFcXVhbFRvKGNvbnN0IENvZGVPcmlnaW4mIG90aGVyKSBjb25zdAorYm9vbCBDb2RlT3JpZ2lu
Ojppc0FwcHJveGltYXRlbHlFcXVhbFRvKGNvbnN0IENvZGVPcmlnaW4mIG90aGVyLCBDb2RlQmxv
Y2sqIHRlcm1pbmFsKSBjb25zdAogewogICAgIENvZGVPcmlnaW4gYSA9ICp0aGlzOwogICAgIENv
ZGVPcmlnaW4gYiA9IG90aGVyOwpAQCAtNjgsMTAgKzY4LDEzIEBAIGJvb2wgQ29kZU9yaWdpbjo6
aXNBcHByb3hpbWF0ZWx5RXF1YWxUbygKICAgICAgICAgaWYgKGEuYnl0ZWNvZGVJbmRleCAhPSBi
LmJ5dGVjb2RlSW5kZXgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAg
ICAgICBpZiAoKCEhYS5pbmxpbmVDYWxsRnJhbWUpICE9ICghIWIuaW5saW5lQ2FsbEZyYW1lKSkK
KyAgICAgICAgYm9vbCBhSGFzSW5saW5lQ2FsbEZyYW1lID0gISFhLmlubGluZUNhbGxGcmFtZQor
ICAgICAgICAgICAgJiYgYS5pbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLmdldCgp
ICE9IHRlcm1pbmFsOworICAgICAgICBib29sIGJIYXNJbmxpbmVDYWxsRnJhbWUgPSAhIWIuaW5s
aW5lQ2FsbEZyYW1lOworICAgICAgICBpZiAoYUhhc0lubGluZUNhbGxGcmFtZSAhPSBiSGFzSW5s
aW5lQ2FsbEZyYW1lKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKLSAgICAg
ICAgaWYgKCFhLmlubGluZUNhbGxGcmFtZSkKKyAgICAgICAgaWYgKCFhSGFzSW5saW5lQ2FsbEZy
YW1lKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIAogICAgICAgICBpZiAoYS5p
bmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLmdldCgpICE9IGIuaW5saW5lQ2FsbEZy
YW1lLT5iYXNlbGluZUNvZGVCbG9jay5nZXQoKSkKQEAgLTgyLDcgKzg1LDcgQEAgYm9vbCBDb2Rl
T3JpZ2luOjppc0FwcHJveGltYXRlbHlFcXVhbFRvKAogICAgIH0KIH0KIAotdW5zaWduZWQgQ29k
ZU9yaWdpbjo6YXBwcm94aW1hdGVIYXNoKCkgY29uc3QKK3Vuc2lnbmVkIENvZGVPcmlnaW46OmFw
cHJveGltYXRlSGFzaChDb2RlQmxvY2sqIHRlcm1pbmFsKSBjb25zdAogewogICAgIGlmICghaXNT
ZXQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC05Nyw2ICsxMDAsOSBAQCB1bnNpZ25lZCBDb2Rl
T3JpZ2luOjphcHByb3hpbWF0ZUhhc2goKSBjCiAgICAgICAgIGlmICghY29kZU9yaWdpbi5pbmxp
bmVDYWxsRnJhbWUpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAKKyAgICAg
ICAgaWYgKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay5nZXQo
KSA9PSB0ZXJtaW5hbCkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIAogICAg
ICAgICByZXN1bHQgKz0gV1RGOjpQdHJIYXNoPEpTQ2VsbCo+OjpoYXNoKGNvZGVPcmlnaW4uaW5s
aW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay5nZXQoKSk7CiAgICAgICAgIAogICAgICAg
ICBjb2RlT3JpZ2luID0gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmRpcmVjdENhbGxlcjsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAkocmV2
aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmln
aW4uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk0LDkgKzk0LDkgQEAgc3RydWN0IENvZGVPcmlnaW4g
ewogICAgIAogICAgIC8vIFRoaXMgY2hlY2tzIGlmIHRoZSB0d28gY29kZSBvcmlnaW5zIGNvcnJl
c3BvbmQgdG8gdGhlIHNhbWUgc3RhY2sgdHJhY2Ugc25pcHBldHMsCiAgICAgLy8gYnV0IGlnbm9y
ZSB3aGV0aGVyIHRoZSBJbmxpbmVDYWxsRnJhbWUncyBhcmUgaWRlbnRpY2FsLgotICAgIGJvb2wg
aXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhjb25zdCBDb2RlT3JpZ2luJiBvdGhlcikgY29uc3Q7Cisg
ICAgYm9vbCBpc0FwcHJveGltYXRlbHlFcXVhbFRvKGNvbnN0IENvZGVPcmlnaW4mIG90aGVyLCBD
b2RlQmxvY2sqIHRlcm1pbmFsID0gbnVsbHB0cikgY29uc3Q7CiAgICAgCi0gICAgdW5zaWduZWQg
YXBwcm94aW1hdGVIYXNoKCkgY29uc3Q7CisgICAgdW5zaWduZWQgYXBwcm94aW1hdGVIYXNoKENv
ZGVCbG9jayogdGVybWluYWwgPSBudWxscHRyKSBjb25zdDsKIAogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBGdW5jdGlvbj4KICAgICB2b2lkIHdhbGtVcElubGluZVN0YWNrKGNvbnN0IEZ1bmN0aW9u
Jik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0
UHJvZmlsZS5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDggKzQzLDEw
IEBAIEV4aXRQcm9maWxlOjp+RXhpdFByb2ZpbGUoKSB7IH0KIAogYm9vbCBFeGl0UHJvZmlsZTo6
YWRkKENvZGVCbG9jayogb3duZXIsIGNvbnN0IEZyZXF1ZW50RXhpdFNpdGUmIHNpdGUpCiB7Cisg
ICAgUkVMRUFTRV9BU1NFUlQoc2l0ZS5qaXRUeXBlKCkgIT0gRXhpdEZyb21Bbnl0aGluZyk7Cisg
ICAgUkVMRUFTRV9BU1NFUlQoc2l0ZS5pbmxpbmVLaW5kKCkgIT0gRXhpdEZyb21BbnlJbmxpbmVL
aW5kKTsKKwogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIob3duZXItPnVubGlua2VkQ29k
ZUJsb2NrKCktPm1fbG9jayk7Ci0gICAgQVNTRVJUKHNpdGUuaml0VHlwZSgpICE9IEV4aXRGcm9t
QW55dGhpbmcpOwogCiAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChvd25lciwgImZyZXF1ZW50RXhp
dCIsIChzaXRlKSk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
REZHRXhpdFByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTQsIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJDb25jdXJyZW50SlNMb2NrLmgiCiAjaW5j
bHVkZSAiRXhpdEtpbmQuaCIKKyNpbmNsdWRlICJFeGl0aW5nSW5saW5lS2luZC5oIgogI2luY2x1
ZGUgIkV4aXRpbmdKSVRUeXBlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CkBAIC00MSw2ICs0Miw3IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX2J5
dGVjb2RlT2Zmc2V0KDApIC8vIDAgPSBlbXB0eSB2YWx1ZQogICAgICAgICAsIG1fa2luZChFeGl0
S2luZFVuc2V0KQogICAgICAgICAsIG1faml0VHlwZShFeGl0RnJvbUFueXRoaW5nKQorICAgICAg
ICAsIG1faW5saW5lS2luZChFeGl0RnJvbUFueUlubGluZUtpbmQpCiAgICAgewogICAgIH0KICAg
ICAKQEAgLTQ4LDEzICs1MCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9ieXRlY29kZU9mZnNl
dCgxKSAvLyAxID0gZGVsZXRlZCB2YWx1ZQogICAgICAgICAsIG1fa2luZChFeGl0S2luZFVuc2V0
KQogICAgICAgICAsIG1faml0VHlwZShFeGl0RnJvbUFueXRoaW5nKQorICAgICAgICAsIG1faW5s
aW5lS2luZChFeGl0RnJvbUFueUlubGluZUtpbmQpCiAgICAgewogICAgIH0KICAgICAKLSAgICBl
eHBsaWNpdCBGcmVxdWVudEV4aXRTaXRlKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBFeGl0S2lu
ZCBraW5kLCBFeGl0aW5nSklUVHlwZSBqaXRUeXBlID0gRXhpdEZyb21Bbnl0aGluZykKKyAgICBl
eHBsaWNpdCBGcmVxdWVudEV4aXRTaXRlKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBFeGl0S2lu
ZCBraW5kLCBFeGl0aW5nSklUVHlwZSBqaXRUeXBlID0gRXhpdEZyb21Bbnl0aGluZywgRXhpdGlu
Z0lubGluZUtpbmQgaW5saW5lS2luZCA9IEV4aXRGcm9tQW55SW5saW5lS2luZCkKICAgICAgICAg
OiBtX2J5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICAsIG1fa2luZChraW5k
KQogICAgICAgICAsIG1faml0VHlwZShqaXRUeXBlKQorICAgICAgICAsIG1faW5saW5lS2luZChp
bmxpbmVLaW5kKQogICAgIHsKICAgICAgICAgaWYgKG1fa2luZCA9PSBBcmd1bWVudHNFc2NhcGVk
KSB7CiAgICAgICAgICAgICAvLyBDb3VudCB0aGlzIG9uZSBnbG9iYWxseS4gSXQgZG9lc24ndCBt
YXR0ZXIgd2hlcmUgaW4gdGhlIGNvZGUgYmxvY2sgdGhlIGFyZ3VtZW50cyBleGNhcGVkOwpAQCAt
NjUsMTAgKzY5LDExIEBAIHB1YmxpYzoKICAgICAKICAgICAvLyBVc2UgdGhpcyBjb25zdHJ1Y3Rv
ciBpZiB5b3Ugd2lzaCBmb3IgdGhlIGV4aXQgc2l0ZSB0byBiZSBjb3VudGVkIGdsb2JhbGx5IHdp
dGhpbiBpdHMKICAgICAvLyBjb2RlIGJsb2NrLgotICAgIGV4cGxpY2l0IEZyZXF1ZW50RXhpdFNp
dGUoRXhpdEtpbmQga2luZCwgRXhpdGluZ0pJVFR5cGUgaml0VHlwZSA9IEV4aXRGcm9tQW55dGhp
bmcpCisgICAgZXhwbGljaXQgRnJlcXVlbnRFeGl0U2l0ZShFeGl0S2luZCBraW5kLCBFeGl0aW5n
SklUVHlwZSBqaXRUeXBlID0gRXhpdEZyb21Bbnl0aGluZywgRXhpdGluZ0lubGluZUtpbmQgaW5s
aW5lS2luZCA9IEV4aXRGcm9tQW55SW5saW5lS2luZCkKICAgICAgICAgOiBtX2J5dGVjb2RlT2Zm
c2V0KDApCiAgICAgICAgICwgbV9raW5kKGtpbmQpCiAgICAgICAgICwgbV9qaXRUeXBlKGppdFR5
cGUpCisgICAgICAgICwgbV9pbmxpbmVLaW5kKGlubGluZUtpbmQpCiAgICAgewogICAgIH0KICAg
ICAKQEAgLTgxLDcgKzg2LDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fYnl0
ZWNvZGVPZmZzZXQgPT0gb3RoZXIubV9ieXRlY29kZU9mZnNldAogICAgICAgICAgICAgJiYgbV9r
aW5kID09IG90aGVyLm1fa2luZAotICAgICAgICAgICAgJiYgbV9qaXRUeXBlID09IG90aGVyLm1f
aml0VHlwZTsKKyAgICAgICAgICAgICYmIG1faml0VHlwZSA9PSBvdGhlci5tX2ppdFR5cGUKKyAg
ICAgICAgICAgICYmIG1faW5saW5lS2luZCA9PSBvdGhlci5tX2lubGluZUtpbmQ7CiAgICAgfQog
ICAgIAogICAgIGJvb2wgc3Vic3VtZXMoY29uc3QgRnJlcXVlbnRFeGl0U2l0ZSYgb3RoZXIpIGNv
bnN0CkBAIC05MCwxOSArOTYsMjQgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICBpZiAobV9raW5kICE9IG90aGVyLm1fa2luZCkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgaWYgKG1faml0VHlwZSA9PSBFeGl0RnJvbUFueXRoaW5nKQotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIHJldHVybiBtX2ppdFR5cGUgPT0gb3RoZXIu
bV9qaXRUeXBlOworICAgICAgICBpZiAobV9qaXRUeXBlICE9IEV4aXRGcm9tQW55dGhpbmcKKyAg
ICAgICAgICAgICYmIG1faml0VHlwZSAhPSBvdGhlci5tX2ppdFR5cGUpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChtX2lubGluZUtpbmQgIT0gRXhpdEZyb21BbnlJbmxp
bmVLaW5kCisgICAgICAgICAgICAmJiBtX2lubGluZUtpbmQgIT0gb3RoZXIubV9pbmxpbmVLaW5k
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAgICAgCiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4g
V1RGOjppbnRIYXNoKG1fYnl0ZWNvZGVPZmZzZXQpICsgbV9raW5kICsgc3RhdGljX2Nhc3Q8c3Rk
Ojp1bmRlcmx5aW5nX3R5cGVfdDxFeGl0aW5nSklUVHlwZT4+KG1faml0VHlwZSkgKiA3OworICAg
ICAgICByZXR1cm4gV1RGOjppbnRIYXNoKG1fYnl0ZWNvZGVPZmZzZXQpICsgbV9raW5kICsgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG1faml0VHlwZSkgKiA3ICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG1faW5saW5lS2luZCkgKiAxMTsKICAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2J5dGVjb2RlT2Zmc2V0OyB9CiAgICAgRXhpdEtpbmQg
a2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQogICAgIEV4aXRpbmdKSVRUeXBlIGppdFR5
cGUoKSBjb25zdCB7IHJldHVybiBtX2ppdFR5cGU7IH0KKyAgICBFeGl0aW5nSW5saW5lS2luZCBp
bmxpbmVLaW5kKCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVLaW5kOyB9CiAgICAgCiAgICAgRnJl
cXVlbnRFeGl0U2l0ZSB3aXRoSklUVHlwZShFeGl0aW5nSklUVHlwZSBqaXRUeXBlKSBjb25zdAog
ICAgIHsKQEAgLTExMSw2ICsxMjIsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KIAorICAgIEZyZXF1ZW50RXhpdFNpdGUgd2l0aElubGluZUtpbmQoRXhpdGluZ0lu
bGluZUtpbmQgaW5saW5lS2luZCkgY29uc3QKKyAgICB7CisgICAgICAgIEZyZXF1ZW50RXhpdFNp
dGUgcmVzdWx0ID0gKnRoaXM7CisgICAgICAgIHJlc3VsdC5tX2lubGluZUtpbmQgPSBpbmxpbmVL
aW5kOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwogICAgIGJvb2wgaXNIYXNoVGFi
bGVEZWxldGVkVmFsdWUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBF
eGl0S2luZFVuc2V0ICYmIG1fYnl0ZWNvZGVPZmZzZXQ7CkBAIC0xMjIsNiArMTQwLDcgQEAgcHJp
dmF0ZToKICAgICB1bnNpZ25lZCBtX2J5dGVjb2RlT2Zmc2V0OwogICAgIEV4aXRLaW5kIG1fa2lu
ZDsKICAgICBFeGl0aW5nSklUVHlwZSBtX2ppdFR5cGU7CisgICAgRXhpdGluZ0lubGluZUtpbmQg
bV9pbmxpbmVLaW5kOwogfTsKIAogc3RydWN0IEZyZXF1ZW50RXhpdFNpdGVIYXNoIHsKQEAgLTE5
MiwxMCArMjExLDEwIEBAIHB1YmxpYzoKICAgICBib29sIGhhc0V4aXRTaXRlKGNvbnN0IEZyZXF1
ZW50RXhpdFNpdGUmIHNpdGUpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoc2l0ZS5qaXRUeXBl
KCkgPT0gRXhpdEZyb21Bbnl0aGluZykgewotICAgICAgICAgICAgcmV0dXJuIGhhc0V4aXRTaXRl
KHNpdGUud2l0aEpJVFR5cGUoRXhpdEZyb21ERkcpKQotICAgICAgICAgICAgICAgIHx8IGhhc0V4
aXRTaXRlKHNpdGUud2l0aEpJVFR5cGUoRXhpdEZyb21GVEwpKTsKKyAgICAgICAgICAgIHJldHVy
biBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0pJVFR5cGUoc2l0ZS53aXRoSklUVHlwZShFeGl0RnJv
bURGRykpCisgICAgICAgICAgICAgICAgfHwgaGFzRXhpdFNpdGVXaXRoU3BlY2lmaWNKSVRUeXBl
KHNpdGUud2l0aEpJVFR5cGUoRXhpdEZyb21GVEwpKTsKICAgICAgICAgfQotICAgICAgICByZXR1
cm4gbV9mcmVxdWVudEV4aXRTaXRlcy5maW5kKHNpdGUpICE9IG1fZnJlcXVlbnRFeGl0U2l0ZXMu
ZW5kKCk7CisgICAgICAgIHJldHVybiBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0pJVFR5cGUoc2l0
ZSk7CiAgICAgfQogICAgIAogICAgIGJvb2wgaGFzRXhpdFNpdGUoRXhpdEtpbmQga2luZCkgY29u
c3QKQEAgLTIwOCw2ICsyMjcsMjAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gaGFzRXhpdFNp
dGUoRnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBraW5kKSk7CiAgICAgfQogcHJpdmF0
ZToKKyAgICBib29sIGhhc0V4aXRTaXRlV2l0aFNwZWNpZmljSklUVHlwZShjb25zdCBGcmVxdWVu
dEV4aXRTaXRlJiBzaXRlKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKHNpdGUuaW5saW5lS2lu
ZCgpID09IEV4aXRGcm9tQW55SW5saW5lS2luZCkgeworICAgICAgICAgICAgcmV0dXJuIGhhc0V4
aXRTaXRlV2l0aFNwZWNpZmljSW5saW5lS2luZChzaXRlLndpdGhJbmxpbmVLaW5kKEV4aXRGcm9t
Tm90SW5saW5lZCkpCisgICAgICAgICAgICAgICAgfHwgaGFzRXhpdFNpdGVXaXRoU3BlY2lmaWNJ
bmxpbmVLaW5kKHNpdGUud2l0aElubGluZUtpbmQoRXhpdEZyb21JbmxpbmVkKSk7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIGhhc0V4aXRTaXRlV2l0aFNwZWNpZmljSW5saW5lS2luZChzaXRl
KTsKKyAgICB9CisgICAgCisgICAgYm9vbCBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0lubGluZUtp
bmQoY29uc3QgRnJlcXVlbnRFeGl0U2l0ZSYgc2l0ZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2ZyZXF1ZW50RXhpdFNpdGVzLmZpbmQoc2l0ZSkgIT0gbV9mcmVxdWVudEV4aXRTaXRl
cy5lbmQoKTsKKyAgICB9CisgICAgCiAgICAgSGFzaFNldDxGcmVxdWVudEV4aXRTaXRlPiBtX2Zy
ZXF1ZW50RXhpdFNpdGVzOwogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0V4aXRGbGFnLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRXhpdEZsYWcuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGl0RmxhZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiRXhpdEZsYWcuaCIKKworI2luY2x1ZGUgPHd0Zi9Db21tYVBy
aW50ZXIuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgRXhpdEZsYWc6OmR1bXAoUHJpbnRT
dHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBpZiAoIW1fYml0cykgeworICAgICAgICBvdXQucHJp
bnQoImZhbHNlIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgQ29tbWFQcmlu
dGVyIGNvbW1hKCJ8Iik7CisgICAgaWYgKGlzU2V0KEV4aXRGcm9tTm90SW5saW5lZCkpCisgICAg
ICAgIG91dC5wcmludChjb21tYSwgIm5vdElubGluZWQiKTsKKyAgICBpZiAoaXNTZXQoRXhpdEZy
b21JbmxpbmVkKSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiaW5saW5lZCIpOworfQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V4aXRGbGFnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V4aXRGbGFnLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0V4aXRGbGFnLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJFeGl0aW5nSW5saW5lS2luZC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3Mg
RXhpdEZsYWcgeworcHVibGljOgorICAgIEV4aXRGbGFnKCkgeyB9CisgICAgCisgICAgRXhpdEZs
YWcoYm9vbCB2YWx1ZSwgRXhpdGluZ0lubGluZUtpbmQgaW5saW5lS2luZCkKKyAgICB7CisgICAg
ICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgICAgICBz
d2l0Y2ggKGlubGluZUtpbmQpIHsKKyAgICAgICAgY2FzZSBFeGl0RnJvbUFueUlubGluZUtpbmQ6
CisgICAgICAgICAgICBtX2JpdHMgPSB0cnVlTm90SW5saW5lZCB8IHRydWVJbmxpbmVkOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRXhpdEZyb21Ob3RJbmxpbmVkOgorICAgICAg
ICAgICAgbV9iaXRzID0gdHJ1ZU5vdElubGluZWQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBFeGl0RnJvbUlubGluZWQ6CisgICAgICAgICAgICBtX2JpdHMgPSB0cnVlSW5saW5l
ZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIEV4aXRG
bGFnIG9wZXJhdG9yfChjb25zdCBFeGl0RmxhZyYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAg
ICBFeGl0RmxhZyByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5tX2JpdHMgPSBtX2JpdHMgfCBvdGhl
ci5tX2JpdHM7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIEV4aXRG
bGFnJiBvcGVyYXRvcnw9KGNvbnN0IEV4aXRGbGFnJiBvdGhlcikKKyAgICB7CisgICAgICAgICp0
aGlzID0gKnRoaXMgfCBvdGhlcjsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKyAgICAK
KyAgICBFeGl0RmxhZyBvcGVyYXRvciYoY29uc3QgRXhpdEZsYWcmIG90aGVyKSBjb25zdAorICAg
IHsKKyAgICAgICAgRXhpdEZsYWcgcmVzdWx0OworICAgICAgICByZXN1bHQubV9iaXRzID0gbV9i
aXRzICYgb3RoZXIubV9iaXRzOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAK
KyAgICBFeGl0RmxhZyYgb3BlcmF0b3ImPShjb25zdCBFeGl0RmxhZyYgb3RoZXIpCisgICAgewor
ICAgICAgICAqdGhpcyA9ICp0aGlzICYgb3RoZXI7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAg
ICB9CisgICAgCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gISFtX2JpdHM7CisgICAgfQorICAgIAorICAgIGJvb2wgaXNTZXQoRXhpdGlu
Z0lubGluZUtpbmQgaW5saW5lS2luZCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhISgq
dGhpcyAmIEV4aXRGbGFnKHRydWUsIGlubGluZUtpbmQpKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisgICAgCitwcml2YXRlOgorICAgIHN0YXRpYyBj
b25zdGV4cHIgdWludDhfdCB0cnVlTm90SW5saW5lZCA9IDE7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciB1aW50OF90IHRydWVJbmxpbmVkID0gMjsKKyAgICAKKyAgICB1aW50OF90IG1fYml0cyB7IDAg
fTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0aW5nSW5saW5lS2luZC5jcHAJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRpbmdJbmxpbmVLaW5kLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJF
eGl0aW5nSW5saW5lS2luZC5oIgorCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKK25h
bWVzcGFjZSBXVEYgeworCit1c2luZyBuYW1lc3BhY2UgSlNDOworCit2b2lkIHByaW50SW50ZXJu
YWwoUHJpbnRTdHJlYW0mIG91dCwgRXhpdGluZ0lubGluZUtpbmQgdHlwZSkKK3sKKyAgICBzd2l0
Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEV4aXRGcm9tQW55SW5saW5lS2luZDoKKyAgICAgICAgb3V0
LnByaW50KCJGcm9tQW55SW5saW5lS2luZCIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBF
eGl0RnJvbU5vdElubGluZWQ6CisgICAgICAgIG91dC5wcmludCgiRnJvbU5vdElubGluZWQiKTsK
KyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRXhpdEZyb21JbmxpbmVkOgorICAgICAgICBvdXQu
cHJpbnQoIkZyb21JbmxpbmVkIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0aW5nSW5saW5lS2luZC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0aW5nSW5saW5lS2lu
ZC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0
aW5nSW5saW5lS2luZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25h
bWVzcGFjZSBKU0MgeworCitlbnVtIEV4aXRpbmdJbmxpbmVLaW5kIDogdWludDhfdCB7CisgICAg
RXhpdEZyb21BbnlJbmxpbmVLaW5kLAorICAgIEV4aXRGcm9tTm90SW5saW5lZCwKKyAgICBFeGl0
RnJvbUlubGluZWQsCit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7
CisKK2NsYXNzIFByaW50U3RyZWFtOwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwg
SlNDOjpFeGl0aW5nSW5saW5lS2luZCk7CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNw
cAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxNiArNTEsNiBAQCBib29sIEdl
dEJ5SWRTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3QgCiAgICAgcmV0dXJuIGFwcGVuZElDU3Rh
dHVzVmFyaWFudChtX3ZhcmlhbnRzLCB2YXJpYW50KTsKIH0KIAotI2lmIEVOQUJMRShERkdfSklU
KQotYm9vbCBHZXRCeUlkU3RhdHVzOjpoYXNFeGl0U2l0ZShDb2RlQmxvY2sqIHByb2ZpbGVkQmxv
Y2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCi17Ci0gICAgVW5saW5rZWRDb2RlQmxvY2sqIHVu
bGlua2VkQ29kZUJsb2NrID0gcHJvZmlsZWRCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKTsKLSAg
ICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHVubGlua2VkQ29kZUJsb2NrLT5tX2xvY2spOwot
ICAgIHJldHVybiB1bmxpbmtlZENvZGVCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZy
ZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkQ2FjaGUpKQotICAgICAgICB8fCB1bmxp
bmtlZENvZGVCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUo
Ynl0ZWNvZGVJbmRleCwgQmFkQ29uc3RhbnRDYWNoZSkpOwotfQotI2VuZGlmCi0KIEdldEJ5SWRT
dGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2ZpbGVk
QmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7
CiAgICAgVk0mIHZtID0gKnByb2ZpbGVkQmxvY2stPnZtKCk7CkBAIC0xMDUsNyArOTUsNyBAQCBH
ZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tCiAgICAgfQogfQogCi1HZXRC
eUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJs
b2NrLCBTdHViSW5mb01hcCYgbWFwLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3Ry
aW5nSW1wbCogdWlkKQorR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENv
ZGVCbG9jayogcHJvZmlsZWRCbG9jaywgSUNTdGF0dXNNYXAmIG1hcCwgdW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgRXhpdEZsYWcgZGlkRXhpdCwgQ2FsbExp
bmtTdGF0dXM6OkV4aXRTaXRlRGF0YSBjYWxsRXhpdFNpdGVEYXRhKQogewogICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKIApAQCAtMTEzLDEyICsx
MDMsMTEgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogCiAjaWYg
RU5BQkxFKERGR19KSVQpCiAgICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4
aXRTaXRlRmVlZGJhY2soCi0gICAgICAgIGxvY2tlciwgcHJvZmlsZWRCbG9jaywgbWFwLmdldChD
b2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgpKSwgdWlkLAotICAgICAgICBDYWxsTGlua1N0YXR1czo6
Y29tcHV0ZUV4aXRTaXRlRGF0YShwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4KSk7CisgICAg
ICAgIGxvY2tlciwgcHJvZmlsZWRCbG9jaywgbWFwLmdldChDb2RlT3JpZ2luKGJ5dGVjb2RlSW5k
ZXgpKS5zdHViSW5mbywgdWlkLAorICAgICAgICBjYWxsRXhpdFNpdGVEYXRhKTsKICAgICAKLSAg
ICBpZiAoIXJlc3VsdC50YWtlc1Nsb3dQYXRoKCkKLSAgICAgICAgJiYgaGFzRXhpdFNpdGUocHJv
ZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCkpCi0gICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVz
KHJlc3VsdC5tYWtlc0NhbGxzKCkgPyBNYWtlc0NhbGxzIDogVGFrZXNTbG93UGF0aCwgdHJ1ZSk7
CisgICAgaWYgKGRpZEV4aXQpCisgICAgICAgIHJldHVybiByZXN1bHQuc2xvd1ZlcnNpb24oKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG1hcCk7CiAjZW5kaWYKQEAgLTEzNiw4ICsxMjUsOCBA
QCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTCiAgICAgICAgIGxvY2tl
ciwgcHJvZmlsZWRCbG9jaywgc3R1YkluZm8sIHVpZCwKICAgICAgICAgQ2FsbExpbmtTdGF0dXM6
OmNvbXB1dGVFeGl0U2l0ZURhdGEocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUlu
ZGV4KSk7CiAKLSAgICBpZiAoIXJlc3VsdC50YWtlc1Nsb3dQYXRoKCkgJiYgR2V0QnlJZFN0YXR1
czo6aGFzRXhpdFNpdGUocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KSkK
LSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMocmVzdWx0Lm1ha2VzQ2FsbHMoKSA/IEdldEJ5
SWRTdGF0dXM6Ok1ha2VzQ2FsbHMgOiBHZXRCeUlkU3RhdHVzOjpUYWtlc1Nsb3dQYXRoLCB0cnVl
KTsKKyAgICBpZiAoIXJlc3VsdC50YWtlc1Nsb3dQYXRoKCkgJiYgaGFzQmFkQ2FjaGVFeGl0U2l0
ZShwcm9maWxlZEJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpKQorICAgICAgICByZXR1
cm4gcmVzdWx0LnNsb3dWZXJzaW9uKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KICNlbmRpZiAv
LyBFTkFCTEUoREZHX0pJVCkKQEAgLTMxNCw0MCArMzAzLDMyIEBAIEdldEJ5SWRTdGF0dXMgR2V0
QnlJZFN0YXR1czo6Y29tcHV0ZUZvclMKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCiBHZXRCeUlk
U3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgQ29kZUJsb2NrKiBwcm9maWxl
ZEJsb2NrLCBDb2RlQmxvY2sqIGRmZ0Jsb2NrLCBTdHViSW5mb01hcCYgYmFzZWxpbmVNYXAsCi0g
ICAgU3R1YkluZm9NYXAmIGRmZ01hcCwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBVbmlxdWVkU3Ry
aW5nSW1wbCogdWlkKQorICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgSUNTdGF0dXNNYXAm
IGJhc2VsaW5lTWFwLAorICAgIElDU3RhdHVzQ29udGV4dFN0YWNrJiBpY0NvbnRleHRTdGFjaywg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogewotI2lmIEVO
QUJMRShERkdfSklUKQotICAgIGlmIChkZmdCbG9jaykgewotICAgICAgICBDYWxsTGlua1N0YXR1
czo6RXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YTsKLSAgICAgICAgewotICAgICAgICAgICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcihwcm9maWxlZEJsb2NrLT5tX2xvY2spOwotICAgICAgICAg
ICAgZXhpdFNpdGVEYXRhID0gQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVFeGl0U2l0ZURhdGEoCi0g
ICAgICAgICAgICAgICAgcHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsK
LSAgICAgICAgfQorICAgIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgY2FsbEV4aXRTaXRl
RGF0YSA9CisgICAgICAgIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKHByb2Zp
bGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7CisgICAgRXhpdEZsYWcgZGlkRXhp
dCA9IGhhc0JhZENhY2hlRXhpdFNpdGUocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29k
ZUluZGV4KTsKKyAgICAKKyAgICBmb3IgKElDU3RhdHVzQ29udGV4dCogY29udGV4dCA6IGljQ29u
dGV4dFN0YWNrKSB7CisgICAgICAgIElDU3RhdHVzIHN0YXR1cyA9IGNvbnRleHQtPmdldChjb2Rl
T3JpZ2luKTsKICAgICAgICAgCi0gICAgICAgIEdldEJ5SWRTdGF0dXMgcmVzdWx0OwotICAgICAg
ICB7Ci0gICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGRmZ0Jsb2NrLT5tX2xv
Y2spOwotICAgICAgICAgICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRT
aXRlRmVlZGJhY2soCi0gICAgICAgICAgICAgICAgbG9ja2VyLCBkZmdCbG9jaywgZGZnTWFwLmdl
dChjb2RlT3JpZ2luKSwgdWlkLCBleGl0U2l0ZURhdGEpOworICAgICAgICBpZiAoc3RhdHVzLnN0
dWJJbmZvKSB7CisgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvbnRleHQt
Pm9wdGltaXplZENvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgIEdldEJ5SWRTdGF0dXMg
cmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCisgICAg
ICAgICAgICAgICAgbG9ja2VyLCBjb250ZXh0LT5vcHRpbWl6ZWRDb2RlQmxvY2ssIHN0YXR1cy5z
dHViSW5mbywgdWlkLCBjYWxsRXhpdFNpdGVEYXRhKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQu
aXNTZXQoKSkgeworICAgICAgICAgICAgICAgIGlmIChkaWRFeGl0LmlzU2V0KGNvbnRleHQtPmlu
bGluZUtpbmQoY29kZU9yaWdpbikpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
LnNsb3dWZXJzaW9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQotCi0gICAgICAgIGlmIChyZXN1bHQudGFrZXNTbG93UGF0aCgpKQot
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAKLSAgICAgICAgaWYgKGhhc0V4aXRTaXRl
KHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkpCi0gICAgICAgICAgICBy
ZXR1cm4gR2V0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCB0cnVlKTsKICAgICAgICAgCi0gICAg
ICAgIGlmIChyZXN1bHQuaXNTZXQoKSkKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
ICAgIGlmIChzdGF0dXMuZ2V0U3RhdHVzKQorICAgICAgICAgICAgcmV0dXJuICpzdGF0dXMuZ2V0
U3RhdHVzOwogICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGRmZ0Jsb2NrKTsKLSAgICBV
TlVTRURfUEFSQU0oZGZnTWFwKTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIGNvbXB1dGVGb3IocHJv
ZmlsZWRCbG9jaywgYmFzZWxpbmVNYXAsIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgdWlkKTsK
KyAgICAgICAgCisgICAgcmV0dXJuIGNvbXB1dGVGb3IocHJvZmlsZWRCbG9jaywgYmFzZWxpbmVN
YXAsIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgdWlkLCBkaWRFeGl0LCBjYWxsRXhpdFNpdGVE
YXRhKTsKIH0KIAogR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKGNvbnN0
IFN0cnVjdHVyZVNldCYgc2V0LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQpAQCAtNDE0LDYgKzM5
NSwxMSBAQCBib29sIEdldEJ5SWRTdGF0dXM6Om1ha2VzQ2FsbHMoKSBjb25zdAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAorR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpzbG93VmVyc2lvbigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMobWFrZXNDYWxscygpID8gTWFrZXND
YWxscyA6IFRha2VzU2xvd1BhdGgsIHdhc1NlZW5JbkpJVCgpKTsKK30KKwogdm9pZCBHZXRCeUlk
U3RhdHVzOjpmaWx0ZXIoY29uc3QgU3RydWN0dXJlU2V0JiBzZXQpCiB7CiAgICAgaWYgKG1fc3Rh
dGUgIT0gU2ltcGxlKQpAQCAtNDIzLDYgKzQwOSwyNSBAQCB2b2lkIEdldEJ5SWRTdGF0dXM6OmZp
bHRlcihjb25zdCBTdHJ1Y3R1CiAgICAgICAgIG1fc3RhdGUgPSBOb0luZm9ybWF0aW9uOwogfQog
Cit2b2lkIEdldEJ5SWRTdGF0dXM6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQor
eworICAgIGZvciAoR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKQorICAgICAg
ICB2YXJpYW50Lm1hcmtJZkNoZWFwKHZpc2l0b3IpOworfQorCitib29sIEdldEJ5SWRTdGF0dXM6
OmZpbmFsaXplKCkKK3sKKyAgICBmb3IgKEdldEJ5SWRWYXJpYW50JiB2YXJpYW50IDogbV92YXJp
YW50cykgeworICAgICAgICBpZiAoIXZhcmlhbnQuZmluYWxpemUoKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0ICYmICFI
ZWFwOjppc01hcmtlZChtX21vZHVsZU5hbWVzcGFjZU9iamVjdCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAobV9tb2R1bGVFbnZpcm9ubWVudCAmJiAhSGVhcDo6aXNNYXJrZWQobV9t
b2R1bGVFbnZpcm9ubWVudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwogdm9pZCBHZXRCeUlkU3RhdHVzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0
CiB7CiAgICAgb3V0LnByaW50KCIoIik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDcgKzI4LDkgQEAKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgogI2luY2x1ZGUgIkNv
ZGVPcmlnaW4uaCIKICNpbmNsdWRlICJDb25jdXJyZW50SlNMb2NrLmgiCisjaW5jbHVkZSAiRXhp
dEZsYWcuaCIKICNpbmNsdWRlICJHZXRCeUlkVmFyaWFudC5oIgorI2luY2x1ZGUgIklDU3RhdHVz
TWFwLmgiCiAjaW5jbHVkZSAiU2NvcGVPZmZzZXQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00
MCw4ICs0Miw2IEBAIGNsYXNzIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OwogY2xhc3MgTW9kdWxl
TmFtZXNwYWNlQWNjZXNzQ2FzZTsKIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOwogCi10eXBlZGVm
IEhhc2hNYXA8Q29kZU9yaWdpbiwgU3RydWN0dXJlU3R1YkluZm8qLCBDb2RlT3JpZ2luQXBwcm94
aW1hdGVIYXNoPiBTdHViSW5mb01hcDsKLQogY2xhc3MgR2V0QnlJZFN0YXR1cyB7CiBwdWJsaWM6
CiAgICAgZW51bSBTdGF0ZSB7CkBAIC04MSwxMCArODEsMTAgQEAgcHVibGljOgogICAgICAgICBt
X3ZhcmlhbnRzLmFwcGVuZCh2YXJpYW50KTsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIEdldEJ5
SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCBTdHViSW5mb01hcCYsIHVuc2lnbmVkIGJ5
dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOworICAgIHN0YXRpYyBHZXRCeUlk
U3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgSUNTdGF0dXNNYXAmLCB1bnNpZ25lZCBieXRl
Y29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBFeGl0RmxhZywgQ2FsbExpbmtTdGF0
dXM6OkV4aXRTaXRlRGF0YSk7CiAgICAgc3RhdGljIEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihj
b25zdCBTdHJ1Y3R1cmVTZXQmLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKICAgICAKLSAgICBz
dGF0aWMgR2V0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywg
Q29kZUJsb2NrKiBkZmdCbG9jaywgU3R1YkluZm9NYXAmIGJhc2VsaW5lTWFwLCBTdHViSW5mb01h
cCYgZGZnTWFwLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKKyAgICBzdGF0
aWMgR2V0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNT
dGF0dXNNYXAmIGJhc2VsaW5lTWFwLCBJQ1N0YXR1c0NvbnRleHRTdGFjayYgZGZnQ29udGV4dFN0
YWNrLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKIAogI2lmIEVOQUJMRShE
RkdfSklUKQogICAgIHN0YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mbyhjb25z
dCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIFN0cnVjdHVy
ZVN0dWJJbmZvKiwgQ29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7CkBAIC0xMDYs
NiArMTA2LDggQEAgcHVibGljOgogICAgIGJvb2wgdGFrZXNTbG93UGF0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGUgPT0gVGFrZXNTbG93UGF0aCB8fCBtX3N0YXRlID09IE1ha2VzQ2FsbHMgfHwg
bV9zdGF0ZSA9PSBDdXN0b20gfHwgbV9zdGF0ZSA9PSBNb2R1bGVOYW1lc3BhY2U7IH0KICAgICBi
b29sIG1ha2VzQ2FsbHMoKSBjb25zdDsKICAgICAKKyAgICBHZXRCeUlkU3RhdHVzIHNsb3dWZXJz
aW9uKCkgY29uc3Q7CisgICAgCiAgICAgYm9vbCB3YXNTZWVuSW5KSVQoKSBjb25zdCB7IHJldHVy
biBtX3dhc1NlZW5JbkpJVDsgfQogICAgIAogICAgIC8vIEF0dGVtcHRzIHRvIHJlZHVjZSB0aGUg
c2V0IG9mIHZhcmlhbnRzIHRvIGZpdCB0aGUgZ2l2ZW4gc3RydWN0dXJlIHNldC4gVGhpcyBtYXkg
YmUgYXBwcm94aW1hdGUuCkBAIC0xMTUsMTIgKzExNywxMiBAQCBwdWJsaWM6CiAgICAgSlNNb2R1
bGVFbnZpcm9ubWVudCogbW9kdWxlRW52aXJvbm1lbnQoKSBjb25zdCB7IHJldHVybiBtX21vZHVs
ZUVudmlyb25tZW50OyB9CiAgICAgU2NvcGVPZmZzZXQgc2NvcGVPZmZzZXQoKSBjb25zdCB7IHJl
dHVybiBtX3Njb3BlT2Zmc2V0OyB9CiAgICAgCisgICAgdm9pZCBtYXJrSWZDaGVhcChTbG90Vmlz
aXRvciYpOworICAgIGJvb2wgZmluYWxpemUoKTsgLy8gUmV0dXJuIHRydWUgaWYgdGhpcyBnZXRz
IHRvIGxpdmUuCisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAg
CiBwcml2YXRlOgotI2lmIEVOQUJMRShERkdfSklUKQotICAgIHN0YXRpYyBib29sIGhhc0V4aXRT
aXRlKENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwotI2VuZGlmCiAjaWYgRU5B
QkxFKEpJVCkKICAgICBHZXRCeUlkU3RhdHVzKGNvbnN0IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nh
c2UmKTsKICAgICBzdGF0aWMgR2V0QnlJZFN0YXR1cyBjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0
RXhpdFNpdGVGZWVkYmFjaygKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9H
ZXRCeUlkVmFyaWFudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTM1LDYgKzEzNSwyNCBAQCBib29sIEdldEJ5SWRWYXJpYW50OjphdHRlbXB0VG9NZXJnZShj
b25zCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgR2V0QnlJZFZhcmlhbnQ6Om1hcmtJZkNo
ZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIG1fc3RydWN0dXJlU2V0Lm1hcmtJZkNo
ZWFwKHZpc2l0b3IpOworfQorCitib29sIEdldEJ5SWRWYXJpYW50OjpmaW5hbGl6ZSgpCit7Cisg
ICAgaWYgKCFtX3N0cnVjdHVyZVNldC5pc1N0aWxsQWxpdmUoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmICghbV9jb25kaXRpb25TZXQuYXJlU3RpbGxMaXZlKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAobV9jYWxsTGlua1N0YXR1cyAmJiAhbV9jYWxsTGlua1N0YXR1
cy0+ZmluYWxpemUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2ludHJpbnNp
Y0Z1bmN0aW9uICYmICFIZWFwOjppc01hcmtlZChtX2ludHJpbnNpY0Z1bmN0aW9uKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIEdldEJ5SWRWYXJp
YW50OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgZHVtcEluQ29udGV4dChv
dXQsIDApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJp
YW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5
SWRWYXJpYW50LmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9HZXRCeUlkVmFyaWFudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw2ICs3Myw5IEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgYXR0ZW1wdFRvTWVyZ2UoY29uc3QgR2V0QnlJZFZhcmlhbnQm
IG90aGVyKTsKICAgICAKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7CisgICAg
Ym9vbCBmaW5hbGl6ZSgpOworICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0
OwogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0KikgY29u
c3Q7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNN
YXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0
YXR1c01hcC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0lDU3RhdHVzTWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgorCisjaW5jbHVkZSAiSW5saW5lQ2FsbEZy
YW1lLmgiCisjaW5jbHVkZSAiVGVybWluYXRlZENvZGVPcmlnaW4uaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK0lDU3RhdHVzIElDU3RhdHVzQ29udGV4dDo6Z2V0KENvZGVPcmlnaW4gY29kZU9yaWdp
bikgY29uc3QKK3sKKyAgICByZXR1cm4gbWFwLmdldDxUZXJtaW5hdGVkQ29kZU9yaWdpbkhhc2hU
cmFuc2xhdG9yPigKKyAgICAgICAgVGVybWluYXRlZENvZGVPcmlnaW4oY29kZU9yaWdpbiwgYmFz
ZWxpbmVDb2RlQmxvY2spKTsKK30KKworYm9vbCBJQ1N0YXR1c0NvbnRleHQ6OmlzSW5saW5lZChD
b2RlT3JpZ2luIGNvZGVPcmlnaW4pIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvZGVPcmlnaW4uaW5s
aW5lQ2FsbEZyYW1lICYmIGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVC
bG9jay5nZXQoKSAhPSBiYXNlbGluZUNvZGVCbG9jazsKK30KKworRXhpdGluZ0lubGluZUtpbmQg
SUNTdGF0dXNDb250ZXh0OjppbmxpbmVLaW5kKENvZGVPcmlnaW4gY29kZU9yaWdpbikgY29uc3QK
K3sKKyAgICByZXR1cm4gaXNJbmxpbmVkKGNvZGVPcmlnaW4pID8gRXhpdEZyb21JbmxpbmVkIDog
RXhpdEZyb21Ob3RJbmxpbmVkOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFwLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFwLmgJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFwLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIK
KyNpbmNsdWRlICJFeGl0aW5nSW5saW5lS2luZC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBDYWxsTGlua0luZm87CitjbGFzcyBDYWxsTGlu
a1N0YXR1czsKK2NsYXNzIENvZGVCbG9jazsKK2NsYXNzIEdldEJ5SWRTdGF0dXM7CitjbGFzcyBQ
dXRCeUlkU3RhdHVzOworY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CitzdHJ1Y3QgQnlWYWxJbmZv
OworCitzdHJ1Y3QgSUNTdGF0dXMgeworICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyB7
IG51bGxwdHIgfTsKKyAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyB7IG51bGxwdHIgfTsK
KyAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyB7IG51bGxwdHIgfTsKKyAgICBDYWxsTGlua1N0YXR1
cyogY2FsbFN0YXR1cyB7IG51bGxwdHIgfTsKKyAgICBHZXRCeUlkU3RhdHVzKiBnZXRTdGF0dXMg
eyBudWxscHRyIH07CisgICAgUHV0QnlJZFN0YXR1cyogcHV0U3RhdHVzIHsgbnVsbHB0ciB9Owor
fTsKKwordHlwZWRlZiBIYXNoTWFwPENvZGVPcmlnaW4sIElDU3RhdHVzLCBDb2RlT3JpZ2luQXBw
cm94aW1hdGVIYXNoPiBJQ1N0YXR1c01hcDsKKworc3RydWN0IElDU3RhdHVzQ29udGV4dCB7Cisg
ICAgSUNTdGF0dXMgZ2V0KENvZGVPcmlnaW4pIGNvbnN0OworICAgIGJvb2wgaXNJbmxpbmVkKENv
ZGVPcmlnaW4pIGNvbnN0OworICAgIEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQoQ29kZU9y
aWdpbikgY29uc3Q7CisgICAgCisgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayB7IG51
bGxwdHIgfTsKKyAgICBDb2RlQmxvY2sqIG9wdGltaXplZENvZGVCbG9jayB7IG51bGxwdHIgfTsK
KyAgICBJQ1N0YXR1c01hcCBtYXA7Cit9OworCit0eXBlZGVmIFZlY3RvcjxJQ1N0YXR1c0NvbnRl
eHQqLCA4PiBJQ1N0YXR1c0NvbnRleHRTdGFjazsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c1V0aWxzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNVdGlscy5j
cHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3Rh
dHVzVXRpbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIklDU3RhdHVzVXRpbHMuaCIKKworI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2lu
Y2x1ZGUgIkV4aXRGbGFnLmgiCisjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK0V4aXRGbGFnIGhhc0JhZENhY2hlRXhpdFNpdGUoQ29kZUJsb2NrKiBw
cm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQoreworI2lmIEVOQUJMRShERkdf
SklUKQorICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IHByb2ZpbGVk
QmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCk7CisgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cih1bmxpbmtlZENvZGVCbG9jay0+bV9sb2NrKTsKKyAgICBhdXRvIGV4aXRGbGFnID0gWyZdIChF
eGl0S2luZCBleGl0S2luZCkgLT4gRXhpdEZsYWcgeworICAgICAgICBhdXRvIHdpdGhJbmxpbmVk
ID0gWyZdIChFeGl0aW5nSW5saW5lS2luZCBpbmxpbmVLaW5kKSAtPiBFeGl0RmxhZyB7CisgICAg
ICAgICAgICByZXR1cm4gRXhpdEZsYWcodW5saW5rZWRDb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxv
Y2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIGV4aXRLaW5kLCBFeGl0
RnJvbUFueXRoaW5nLCBpbmxpbmVLaW5kKSksIGlubGluZUtpbmQpOworICAgICAgICB9OworICAg
ICAgICByZXR1cm4gd2l0aElubGluZWQoRXhpdEZyb21Ob3RJbmxpbmVkKSB8IHdpdGhJbmxpbmVk
KEV4aXRGcm9tSW5saW5lZCk7CisgICAgfTsKKyAgICByZXR1cm4gZXhpdEZsYWcoQmFkQ2FjaGUp
IHwgZXhpdEZsYWcoQmFkQ29uc3RhbnRDYWNoZSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShw
cm9maWxlZEJsb2NrKTsKKyAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CisgICAgcmV0
dXJuIEV4aXRGbGFnKCk7CisjZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c1V0aWxzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzVXRpbHMuaAkocmV2
aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVz
VXRpbHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UK
IAorI2luY2x1ZGUgIkV4aXRGbGFnLmgiCisKIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBWYXJpYW50VmVjdG9yVHlwZSwgdHlwZW5hbWUgVmFyaWFudFR5cGU+CkBAIC01OSw1
ICs2MSw3IEBAIHZvaWQgZmlsdGVySUNTdGF0dXNWYXJpYW50cyhWYXJpYW50VmVjdG8KICAgICAg
ICAgfSk7CiB9CiAKK0V4aXRGbGFnIGhhc0JhZENhY2hlRXhpdFNpdGUoQ29kZUJsb2NrKiBwcm9m
aWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKwogfSAvLyBuYW1lc3BhY2UgSlND
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3ND
aGFpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5
UHJvdG9BY2Nlc3NDaGFpbi5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAt
MjksNiArMjksNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgSlNDZWxsOwogY2xhc3Mg
SlNHbG9iYWxPYmplY3Q7CiBjbGFzcyBKU09iamVjdDsKIGNsYXNzIFByb3BlcnR5U2xvdDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5j
cHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvbXBsZXhHZXRTdGF0dXMuaCIKICNpbmNsdWRl
ICJHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmgiCisjaW5jbHVkZSAiSUNTdGF0dXNVdGlscy5oIgog
I2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCkBAIC01NSwxMiArNTYsOSBAQCBib29sIFB1dEJ5SWRT
dGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3QgCiB9CiAKICNpZiBFTkFCTEUoREZHX0pJVCkKLWJv
b2wgUHV0QnlJZFN0YXR1czo6aGFzRXhpdFNpdGUoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1
bnNpZ25lZCBieXRlY29kZUluZGV4KQorRXhpdEZsYWcgUHV0QnlJZFN0YXR1czo6aGFzRXhpdFNp
dGUoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQogewot
ICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IHByb2ZpbGVkQmxvY2st
PnVubGlua2VkQ29kZUJsb2NrKCk7Ci0gICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcih1bmxp
bmtlZENvZGVCbG9jay0+bV9sb2NrKTsKLSAgICByZXR1cm4gdW5saW5rZWRDb2RlQmxvY2stPmhh
c0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJh
ZENhY2hlKSkKLSAgICAgICAgfHwgdW5saW5rZWRDb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tl
ciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZENvbnN0YW50Q2FjaGUp
KTsKKyAgICByZXR1cm4gaGFzQmFkQ2FjaGVFeGl0U2l0ZShwcm9maWxlZEJsb2NrLCBieXRlY29k
ZUluZGV4KTsKIH0KICNlbmRpZgogCkBAIC0xMTAsNyArMTA4LDcgQEAgUHV0QnlJZFN0YXR1cyBQ
dXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbQogICAgICAgICBzdHJ1Y3R1cmUsIG5ld1N0cnVjdHVy
ZSwgY29uZGl0aW9uU2V0LCBvZmZzZXQsIG5ld1N0cnVjdHVyZS0+aW5mZXJyZWRUeXBlRGVzY3Jp
cHRvckZvcih1aWQpKTsKIH0KIAotUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRl
Rm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgU3R1YkluZm9NYXAmIG1hcCwgdW5zaWduZWQg
Ynl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK1B1dEJ5SWRTdGF0dXMgUHV0
QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIElDU3RhdHVz
TWFwJiBtYXAsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQs
IEV4aXRGbGFnIGRpZEV4aXQsIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgY2FsbEV4aXRT
aXRlRGF0YSkKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHByb2ZpbGVkQmxvY2st
Pm1fbG9jayk7CiAgICAgCkBAIC0xMTgsMTMgKzExNiwxMiBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5
SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwog
ICAgIFVOVVNFRF9QQVJBTSh1aWQpOwogI2lmIEVOQUJMRShERkdfSklUKQotICAgIGlmIChoYXNF
eGl0U2l0ZShwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4KSkKKyAgICBpZiAoZGlkRXhpdCkK
ICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCk7CiAgICAgCi0gICAg
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvID0gbWFwLmdldChDb2RlT3JpZ2luKGJ5dGVjb2Rl
SW5kZXgpKTsKKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gPSBtYXAuZ2V0KENvZGVP
cmlnaW4oYnl0ZWNvZGVJbmRleCkpLnN0dWJJbmZvOwogICAgIFB1dEJ5SWRTdGF0dXMgcmVzdWx0
ID0gY29tcHV0ZUZvclN0dWJJbmZvKAotICAgICAgICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssIHN0
dWJJbmZvLCB1aWQsCi0gICAgICAgIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRh
KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpKTsKKyAgICAgICAgbG9ja2VyLCBwcm9maWxl
ZEJsb2NrLCBzdHViSW5mbywgdWlkLCBjYWxsRXhpdFNpdGVEYXRhKTsKICAgICBpZiAoIXJlc3Vs
dCkKICAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNv
ZGVJbmRleCwgdWlkKTsKICAgICAKQEAgLTI2NCwzOCArMjYxLDMxIEBAIFB1dEJ5SWRTdGF0dXMg
UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclMKIH0KICNlbmRpZgogCi1QdXRCeUlkU3RhdHVzIFB1
dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBDb2RlQmxv
Y2sqIGRmZ0Jsb2NrLCBTdHViSW5mb01hcCYgYmFzZWxpbmVNYXAsIFN0dWJJbmZvTWFwJiBkZmdN
YXAsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK1B1dEJ5
SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIGJhc2VsaW5lQmxv
Y2ssIElDU3RhdHVzTWFwJiBiYXNlbGluZU1hcCwgSUNTdGF0dXNDb250ZXh0U3RhY2smIGNvbnRl
eHRTdGFjaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQog
ewotI2lmIEVOQUJMRShERkdfSklUKQotICAgIGlmIChkZmdCbG9jaykgewotICAgICAgICBpZiAo
aGFzRXhpdFNpdGUoYmFzZWxpbmVCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KSkKLSAg
ICAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgpOwotICAgICAgICBD
YWxsTGlua1N0YXR1czo6RXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YTsKLSAgICAgICAgewotICAg
ICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihiYXNlbGluZUJsb2NrLT5tX2xvY2sp
OwotICAgICAgICAgICAgZXhpdFNpdGVEYXRhID0gQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVFeGl0
U2l0ZURhdGEoCi0gICAgICAgICAgICAgICAgYmFzZWxpbmVCbG9jaywgY29kZU9yaWdpbi5ieXRl
Y29kZUluZGV4KTsKLSAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgIFB1dEJ5SWRTdGF0
dXMgcmVzdWx0OwotICAgICAgICB7Ci0gICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9j
a2VyKGRmZ0Jsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0
dWJJbmZvKAotICAgICAgICAgICAgICAgIGxvY2tlciwgZGZnQmxvY2ssIGRmZ01hcC5nZXQoY29k
ZU9yaWdpbiksIHVpZCwgZXhpdFNpdGVEYXRhKTsKKyAgICBDYWxsTGlua1N0YXR1czo6RXhpdFNp
dGVEYXRhIGNhbGxFeGl0U2l0ZURhdGEgPQorICAgICAgICBDYWxsTGlua1N0YXR1czo6Y29tcHV0
ZUV4aXRTaXRlRGF0YShiYXNlbGluZUJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpOwor
ICAgIEV4aXRGbGFnIGRpZEV4aXQgPSBoYXNFeGl0U2l0ZShiYXNlbGluZUJsb2NrLCBjb2RlT3Jp
Z2luLmJ5dGVjb2RlSW5kZXgpOworICAgIAorICAgIGZvciAoSUNTdGF0dXNDb250ZXh0KiBjb250
ZXh0IDogY29udGV4dFN0YWNrKSB7CisgICAgICAgIElDU3RhdHVzIHN0YXR1cyA9IGNvbnRleHQt
PmdldChjb2RlT3JpZ2luKTsKKyAgICAgICAgCisgICAgICAgIGlmIChzdGF0dXMuc3R1YkluZm8p
IHsKKyAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29udGV4dC0+b3B0aW1p
emVkQ29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgUHV0QnlJZFN0YXR1cyByZXN1bHQg
PSBjb21wdXRlRm9yU3R1YkluZm8oCisgICAgICAgICAgICAgICAgbG9ja2VyLCBjb250ZXh0LT5v
cHRpbWl6ZWRDb2RlQmxvY2ssIHN0YXR1cy5zdHViSW5mbywgdWlkLCBjYWxsRXhpdFNpdGVEYXRh
KTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQuaXNTZXQoKSkgeworICAgICAgICAgICAgICAgIGlm
IChkaWRFeGl0LmlzU2V0KGNvbnRleHQtPmlubGluZUtpbmQoY29kZU9yaWdpbikpKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnNsb3dWZXJzaW9uKCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKLSAg
ICAgICAgLy8gV2UgdXNlIFRha2VzU2xvd1BhdGggaW4gc29tZSBjYXNlcyB3aGVyZSB0aGUgc3R1
YiB3YXMgdW5zZXQuIFRoYXQncyB3ZWlyZCBhbmQKLSAgICAgICAgLy8gaXQgd291bGQgYmUgYmV0
dGVyIG5vdCB0byBkbyB0aGF0LiBCdXQgaXQgbWVhbnMgdGhhdCB3ZSBoYXZlIHRvIGRlZmVuZAot
ICAgICAgICAvLyBvdXJzZWx2ZXMgaGVyZS4KLSAgICAgICAgaWYgKHJlc3VsdC5pc1NpbXBsZSgp
KQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShkZmdCbG9jayk7Ci0gICAgVU5VU0VEX1BBUkFNKGRmZ01hcCk7Ci0jZW5kaWYKKyAgICAg
ICAgaWYgKHN0YXR1cy5wdXRTdGF0dXMpCisgICAgICAgICAgICByZXR1cm4gKnN0YXR1cy5wdXRT
dGF0dXM7CisgICAgfQogCi0gICAgcmV0dXJuIGNvbXB1dGVGb3IoYmFzZWxpbmVCbG9jaywgYmFz
ZWxpbmVNYXAsIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgdWlkKTsKKyAgICByZXR1cm4gY29t
cHV0ZUZvcihiYXNlbGluZUJsb2NrLCBiYXNlbGluZU1hcCwgY29kZU9yaWdpbi5ieXRlY29kZUlu
ZGV4LCB1aWQsIGRpZEV4aXQsIGNhbGxFeGl0U2l0ZURhdGEpOwogfQogCiBQdXRCeUlkU3RhdHVz
IFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Y29uc3QgU3RydWN0dXJlU2V0JiBzZXQsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIGJvb2wgaXNE
aXJlY3QpCkBAIC0zOTgsNiArMzg4LDM1IEBAIGJvb2wgUHV0QnlJZFN0YXR1czo6bWFrZXNDYWxs
cygpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitQdXRCeUlkU3RhdHVzIFB1dEJ5SWRT
dGF0dXM6OnNsb3dWZXJzaW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyht
YWtlc0NhbGxzKCkgPyBNYWtlc0NhbGxzIDogVGFrZXNTbG93UGF0aCk7Cit9CisKK3ZvaWQgUHV0
QnlJZFN0YXR1czo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgZm9y
IChQdXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IG1fdmFyaWFudHMpCisgICAgICAgIHZhcmlhbnQu
bWFya0lmQ2hlYXAodmlzaXRvcik7Cit9CisKK2Jvb2wgUHV0QnlJZFN0YXR1czo6ZmluYWxpemUo
KQoreworICAgIGZvciAoUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKSB7Cisg
ICAgICAgIGlmICghdmFyaWFudC5maW5hbGl6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBQdXRCeUlkU3RhdHVzOjpmaWx0
ZXIoY29uc3QgU3RydWN0dXJlU2V0JiBzZXQpCit7CisgICAgaWYgKG1fc3RhdGUgIT0gU2ltcGxl
KQorICAgICAgICByZXR1cm47CisgICAgZmlsdGVySUNTdGF0dXNWYXJpYW50cyhtX3ZhcmlhbnRz
LCBzZXQpOworICAgIGlmIChtX3ZhcmlhbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgbV9zdGF0ZSA9
IE5vSW5mb3JtYXRpb247Cit9CisKIHZvaWQgUHV0QnlJZFN0YXR1czo6ZHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdAogewogICAgIHN3aXRjaCAobV9zdGF0ZSkgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCShyZXZpc2lvbiAyMzIy
MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkNhbGxMaW5rU3RhdHVzLmgiCisjaW5jbHVkZSAiRXhpdEZsYWcuaCIKKyNpbmNsdWRlICJJQ1N0
YXR1c01hcC5oIgogI2luY2x1ZGUgIlB1dEJ5SWRWYXJpYW50LmgiCiAKIG5hbWVzcGFjZSBKU0Mg
ewpAQCAtNjksMTAgKzcxLDEwIEBAIHB1YmxpYzoKICAgICAgICAgbV92YXJpYW50cy5hcHBlbmQo
dmFyaWFudCk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVG
b3IoQ29kZUJsb2NrKiwgU3R1YkluZm9NYXAmLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkKTsKKyAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9y
KENvZGVCbG9jayosIElDU3RhdHVzTWFwJiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgVW5pcXVl
ZFN0cmluZ0ltcGwqIHVpZCwgRXhpdEZsYWcsIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEp
OwogICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoSlNHbG9iYWxPYmplY3QqLCBj
b25zdCBTdHJ1Y3R1cmVTZXQmLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBib29sIGlzRGlyZWN0
KTsKICAgICAKLSAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayog
YmFzZWxpbmVCbG9jaywgQ29kZUJsb2NrKiBkZmdCbG9jaywgU3R1YkluZm9NYXAmIGJhc2VsaW5l
TWFwLCBTdHViSW5mb01hcCYgZGZnTWFwLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCog
dWlkKTsKKyAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayogYmFz
ZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAmIGJhc2VsaW5lTWFwLCBJQ1N0YXR1c0NvbnRleHRTdGFj
ayYgY29udGV4dFN0YWNrLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKIAog
I2lmIEVOQUJMRShKSVQpCiAgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvclN0dWJJ
bmZvKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywg
U3RydWN0dXJlU3R1YkluZm8qLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsK
QEAgLTg1LDE3ICs4NywyMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1NpbXBsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGUgPT0gU2ltcGxlOyB9CiAgICAgYm9vbCB0YWtlc1Nsb3dQYXRoKCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBUYWtlc1Nsb3dQYXRoIHx8IG1fc3RhdGUgPT0gTWFrZXND
YWxsczsgfQogICAgIGJvb2wgbWFrZXNDYWxscygpIGNvbnN0OworICAgIFB1dEJ5SWRTdGF0dXMg
c2xvd1ZlcnNpb24oKSBjb25zdDsKICAgICAKICAgICBzaXplX3QgbnVtVmFyaWFudHMoKSBjb25z
dCB7IHJldHVybiBtX3ZhcmlhbnRzLnNpemUoKTsgfQogICAgIGNvbnN0IFZlY3RvcjxQdXRCeUlk
VmFyaWFudCwgMT4mIHZhcmlhbnRzKCkgY29uc3QgeyByZXR1cm4gbV92YXJpYW50czsgfQogICAg
IGNvbnN0IFB1dEJ5SWRWYXJpYW50JiBhdChzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1f
dmFyaWFudHNbaW5kZXhdOyB9CiAgICAgY29uc3QgUHV0QnlJZFZhcmlhbnQmIG9wZXJhdG9yW10o
c2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBhdChpbmRleCk7IH0KICAgICAKKyAgICB2b2lk
IG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7CisgICAgYm9vbCBmaW5hbGl6ZSgpOworICAgIHZv
aWQgZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYpOworICAgIAogICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYpIGNvbnN0OwogICAgIAogcHJpdmF0ZToKICNpZiBFTkFCTEUoREZHX0pJVCkKLSAg
ICBzdGF0aWMgYm9vbCBoYXNFeGl0U2l0ZShDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUlu
ZGV4KTsKKyAgICBzdGF0aWMgRXhpdEZsYWcgaGFzRXhpdFNpdGUoQ29kZUJsb2NrKiwgdW5zaWdu
ZWQgYnl0ZWNvZGVJbmRleCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoSklUKQogICAgIHN0YXRpYyBQ
dXRCeUlkU3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mbygKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcAkocmV2aXNpb24gMjMyMjI3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQs
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yMDYsNiArMjA2LDI2IEBAIGJvb2wgUHV0QnlJZFZhcmlhbnQ6
OmF0dGVtcHRUb01lcmdlVHJhbnMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBQdXRCeUlk
VmFyaWFudDo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgbV9vbGRT
dHJ1Y3R1cmUubWFya0lmQ2hlYXAodmlzaXRvcik7CisgICAgaWYgKG1fbmV3U3RydWN0dXJlKQor
ICAgICAgICBtX25ld1N0cnVjdHVyZS0+bWFya0lmQ2hlYXAodmlzaXRvcik7Cit9CisKK2Jvb2wg
UHV0QnlJZFZhcmlhbnQ6OmZpbmFsaXplKCkKK3sKKyAgICBpZiAoIW1fb2xkU3RydWN0dXJlLmlz
U3RpbGxBbGl2ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fbmV3U3RydWN0
dXJlICYmICFIZWFwOjppc01hcmtlZChtX25ld1N0cnVjdHVyZSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoIW1fY29uZGl0aW9uU2V0LmFyZVN0aWxsTGl2ZSgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fY2FsbExpbmtTdGF0dXMgJiYgIW1fY2FsbExpbmtTdGF0
dXMtPmZpbmFsaXplKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwogdm9pZCBQdXRCeUlkVmFyaWFudDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAog
ewogICAgIGR1bXBJbkNvbnRleHQob3V0LCAwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC03MywxNyArNzMsMTcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9vbGRT
dHJ1Y3R1cmU7CiAgICAgfQogICAgIAotICAgIGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJl
U2V0KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdHJ1Y3R1cmUoKTsKLSAgICB9Ci0g
ICAgCiAgICAgY29uc3QgU3RydWN0dXJlU2V0JiBvbGRTdHJ1Y3R1cmUoKSBjb25zdAogICAgIHsK
ICAgICAgICAgQVNTRVJUKGtpbmQoKSA9PSBUcmFuc2l0aW9uIHx8IGtpbmQoKSA9PSBSZXBsYWNl
IHx8IGtpbmQoKSA9PSBTZXR0ZXIpOwogICAgICAgICByZXR1cm4gbV9vbGRTdHJ1Y3R1cmU7CiAg
ICAgfQogICAgIAorICAgIGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0KCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBvbGRTdHJ1Y3R1cmUoKTsKKyAgICB9CisgICAgCiAgICAg
U3RydWN0dXJlU2V0JiBvbGRTdHJ1Y3R1cmUoKQogICAgIHsKICAgICAgICAgQVNTRVJUKGtpbmQo
KSA9PSBUcmFuc2l0aW9uIHx8IGtpbmQoKSA9PSBSZXBsYWNlIHx8IGtpbmQoKSA9PSBTZXR0ZXIp
OwpAQCAtMTI5LDYgKzEyOSw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgYXR0ZW1wdFRvTWVyZ2Uo
Y29uc3QgUHV0QnlJZFZhcmlhbnQmIG90aGVyKTsKICAgICAKKyAgICB2b2lkIG1hcmtJZkNoZWFw
KFNsb3RWaXNpdG9yJik7CisgICAgYm9vbCBmaW5hbGl6ZSgpOworICAgIAogICAgIHZvaWQgZHVt
cChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVh
bSYsIER1bXBDb250ZXh0KikgY29uc3Q7CiAKQEAgLTEzNyw3ICsxNDAsNyBAQCBwcml2YXRlOgog
ICAgIAogICAgIEtpbmQgbV9raW5kOwogICAgIFN0cnVjdHVyZVNldCBtX29sZFN0cnVjdHVyZTsK
LSAgICBTdHJ1Y3R1cmUqIG1fbmV3U3RydWN0dXJlOworICAgIFN0cnVjdHVyZSogbV9uZXdTdHJ1
Y3R1cmUgeyBudWxscHRyIH07CiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgbV9jb25k
aXRpb25TZXQ7CiAgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAgICAgSW5mZXJyZWRUeXBl
OjpEZXNjcmlwdG9yIG1fcmVxdWlyZWRUeXBlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVjb3Jk
ZWRTdGF0dXNlcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworUmVjb3JkZWRTdGF0dXNlcyYgUmVj
b3JkZWRTdGF0dXNlczo6b3BlcmF0b3I9KFJlY29yZGVkU3RhdHVzZXMmJiBvdGhlcikKK3sKKyAg
ICBjYWxscyA9IFdURk1vdmUob3RoZXIuY2FsbHMpOworICAgIGdldHMgPSBXVEZNb3ZlKG90aGVy
LmdldHMpOworICAgIHB1dHMgPSBXVEZNb3ZlKG90aGVyLnB1dHMpOworICAgIHNocmlua1RvRml0
KCk7CisgICAgcmV0dXJuICp0aGlzOworfQorCitSZWNvcmRlZFN0YXR1c2VzOjpSZWNvcmRlZFN0
YXR1c2VzKFJlY29yZGVkU3RhdHVzZXMmJiBvdGhlcikKK3sKKyAgICAqdGhpcyA9IFdURk1vdmUo
b3RoZXIpOworfQorCitDYWxsTGlua1N0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkQ2FsbExp
bmtTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgY29uc3QgQ2FsbExpbmtTdGF0
dXMmIHN0YXR1cykKK3sKKyAgICBhdXRvIHN0YXR1c1B0ciA9IHN0ZDo6bWFrZV91bmlxdWU8Q2Fs
bExpbmtTdGF0dXM+KHN0YXR1cyk7CisgICAgQ2FsbExpbmtTdGF0dXMqIHJlc3VsdCA9IHN0YXR1
c1B0ci5nZXQoKTsKKyAgICBjYWxscy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY29kZU9yaWdpbiwg
V1RGTW92ZShzdGF0dXNQdHIpKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworR2V0QnlJZFN0
YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkR2V0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2lu
JiBjb2RlT3JpZ2luLCBjb25zdCBHZXRCeUlkU3RhdHVzJiBzdGF0dXMpCit7CisgICAgYXV0byBz
dGF0dXNQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPEdldEJ5SWRTdGF0dXM+KHN0YXR1cyk7CisgICAg
R2V0QnlJZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOworICAgIGdldHMuYXBwZW5k
KHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3RhdHVzUHRyKSkpOworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisgICAgCitQdXRCeUlkU3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjph
ZGRQdXRCeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0IFB1dEJ5
SWRTdGF0dXMmIHN0YXR1cykKK3sKKyAgICBhdXRvIHN0YXR1c1B0ciA9IHN0ZDo6bWFrZV91bmlx
dWU8UHV0QnlJZFN0YXR1cz4oc3RhdHVzKTsKKyAgICBQdXRCeUlkU3RhdHVzKiByZXN1bHQgPSBz
dGF0dXNQdHIuZ2V0KCk7CisgICAgcHV0cy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY29kZU9yaWdp
biwgV1RGTW92ZShzdGF0dXNQdHIpKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBS
ZWNvcmRlZFN0YXR1c2VzOjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYgc2xvdFZpc2l0b3IpCit7
CisgICAgZm9yIChhdXRvJiBwYWlyIDogZ2V0cykKKyAgICAgICAgcGFpci5zZWNvbmQtPm1hcmtJ
ZkNoZWFwKHNsb3RWaXNpdG9yKTsKKyAgICBmb3IgKGF1dG8mIHBhaXIgOiBwdXRzKQorICAgICAg
ICBwYWlyLnNlY29uZC0+bWFya0lmQ2hlYXAoc2xvdFZpc2l0b3IpOworfQorCit2b2lkIFJlY29y
ZGVkU3RhdHVzZXM6OmZpbmFsaXplKCkKK3sKKyAgICBhdXRvIGZpbmFsaXplID0gW10gKGF1dG8m
IHZlY3RvcikgeworICAgICAgICB2ZWN0b3IucmVtb3ZlQWxsTWF0Y2hpbmcoCisgICAgICAgICAg
ICBbJl0gKGF1dG8mIHBhaXIpIC0+IGJvb2wgeworICAgICAgICAgICAgICAgIHJldHVybiAhcGFp
ci5zZWNvbmQtPmZpbmFsaXplKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgdmVjdG9yLnNo
cmlua1RvRml0KCk7CisgICAgfTsKKyAgICBmaW5hbGl6ZShjYWxscyk7CisgICAgZmluYWxpemUo
Z2V0cyk7CisgICAgZmluYWxpemUocHV0cyk7Cit9CisKK3ZvaWQgUmVjb3JkZWRTdGF0dXNlczo6
c2hyaW5rVG9GaXQoKQoreworICAgIGNhbGxzLnNocmlua1RvRml0KCk7CisgICAgZ2V0cy5zaHJp
bmtUb0ZpdCgpOworICAgIHB1dHMuc2hyaW5rVG9GaXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1
c2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29y
ZGVkU3RhdHVzZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgorI2luY2x1ZGUgIkdldEJ5SWRTdGF0
dXMuaCIKKyNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitz
dHJ1Y3QgUmVjb3JkZWRTdGF0dXNlcyB7CisgICAgUmVjb3JkZWRTdGF0dXNlcygpIHsgfQorICAg
IAorICAgIFJlY29yZGVkU3RhdHVzZXMmIG9wZXJhdG9yPShjb25zdCBSZWNvcmRlZFN0YXR1c2Vz
JiBvdGhlcikgPSBkZWxldGU7CisgICAgCisgICAgUmVjb3JkZWRTdGF0dXNlcyYgb3BlcmF0b3I9
KFJlY29yZGVkU3RhdHVzZXMmJiBvdGhlcik7CisgICAgCisgICAgUmVjb3JkZWRTdGF0dXNlcyhj
b25zdCBSZWNvcmRlZFN0YXR1c2VzJiBvdGhlcikgPSBkZWxldGU7CisgICAgCisgICAgUmVjb3Jk
ZWRTdGF0dXNlcyhSZWNvcmRlZFN0YXR1c2VzJiYgb3RoZXIpOworICAgIAorICAgIENhbGxMaW5r
U3RhdHVzKiBhZGRDYWxsTGlua1N0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29uc3QgQ2FsbExp
bmtTdGF0dXMmKTsKKyAgICBHZXRCeUlkU3RhdHVzKiBhZGRHZXRCeUlkU3RhdHVzKGNvbnN0IENv
ZGVPcmlnaW4mLCBjb25zdCBHZXRCeUlkU3RhdHVzJik7CisgICAgUHV0QnlJZFN0YXR1cyogYWRk
UHV0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29uc3QgUHV0QnlJZFN0YXR1cyYpOwor
ICAgIAorICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHNsb3RWaXNpdG9yKTsKKyAg
ICAKKyAgICB2b2lkIGZpbmFsaXplKCk7CisgICAgCisgICAgdm9pZCBzaHJpbmtUb0ZpdCgpOwor
ICAgIAorICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29kZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPENh
bGxMaW5rU3RhdHVzPj4+IGNhbGxzOworICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29kZU9yaWdpbiwg
c3RkOjp1bmlxdWVfcHRyPEdldEJ5SWRTdGF0dXM+Pj4gZ2V0czsKKyAgICBWZWN0b3I8c3RkOjpw
YWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxQdXRCeUlkU3RhdHVzPj4+IHB1dHM7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1N0cnVjdHVyZVNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTMxLDYgKzMxLDIxIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCit2b2lkIFN0cnVjdHVy
ZVNldDo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZpc2l0b3IpIGNvbnN0Cit7CisgICAgZm9y
IChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6ICp0aGlzKQorICAgICAgICBzdHJ1Y3R1cmUtPm1hcmtJ
ZkNoZWFwKHZpc2l0b3IpOworfQorCitib29sIFN0cnVjdHVyZVNldDo6aXNTdGlsbEFsaXZlKCkg
Y29uc3QKK3sKKyAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogKnRoaXMpIHsKKyAgICAg
ICAgaWYgKCFIZWFwOjppc01hcmtlZChzdHJ1Y3R1cmUpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBTdHJ1Y3R1cmVTZXQ6OmR1
bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRleHQpIGNvbnN0
CiB7CiAgICAgQ29tbWFQcmludGVyIGNvbW1hOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1N0cnVjdHVyZVNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMy0yMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNTgsNiArNTgsOSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gb25s
eUVudHJ5KCk7CiAgICAgfQorCisgICAgdm9pZCBtYXJrSWZDaGVhcChTbG90VmlzaXRvciYpIGNv
bnN0OworICAgIGJvb2wgaXNTdGlsbEFsaXZlKCkgY29uc3Q7CiAgICAgCiAgICAgdm9pZCBkdW1w
SW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25zdDsKICAgICB2b2lkIGR1
bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9UZXJtaW5hdGVkQ29kZU9yaWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9UZXJtaW5hdGVkQ29kZU9yaWdpbi5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9UZXJtaW5hdGVkQ29kZU9yaWdpbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBKU0MgeworCitz
dHJ1Y3QgVGVybWluYXRlZENvZGVPcmlnaW4geworICAgIFRlcm1pbmF0ZWRDb2RlT3JpZ2luKCkg
eyB9CisgICAgCisgICAgVGVybWluYXRlZENvZGVPcmlnaW4oY29uc3QgQ29kZU9yaWdpbiYgY29k
ZU9yaWdpbiwgQ29kZUJsb2NrKiB0ZXJtaW5hbCkKKyAgICAgICAgOiBjb2RlT3JpZ2luKGNvZGVP
cmlnaW4pCisgICAgICAgICwgdGVybWluYWwodGVybWluYWwpCisgICAgeworICAgIH0KKyAgICAK
KyAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW47CisgICAgQ29kZUJsb2NrKiB0ZXJtaW5hbCB7IG51
bGxwdHIgfTsKK307CisKK3N0cnVjdCBUZXJtaW5hdGVkQ29kZU9yaWdpbkhhc2hUcmFuc2xhdG9y
IHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBUZXJtaW5hdGVkQ29kZU9yaWdpbiYg
dmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gdmFsdWUuY29kZU9yaWdpbi5hcHByb3hpbWF0
ZUhhc2godmFsdWUudGVybWluYWwpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgYm9vbCBlcXVh
bChjb25zdCBDb2RlT3JpZ2luJiBhLCBjb25zdCBUZXJtaW5hdGVkQ29kZU9yaWdpbiYgYikKKyAg
ICB7CisgICAgICAgIHJldHVybiBiLmNvZGVPcmlnaW4uaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhh
LCBiLnRlcm1pbmFsKTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNDk5LDYgKzM0OTksMjUgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3Rh
dGVUeQogICAgIGNhc2UgWm9tYmllSGludDoKICAgICBjYXNlIEV4aXRPSzoKICAgICAgICAgYnJl
YWs7CisgICAgICAgIAorICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgICAgIGlm
IChKU1ZhbHVlIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV92YWx1ZSkKKyAgICAg
ICAgICAgIG5vZGUtPmNhbGxMaW5rU3RhdHVzKCkuZmlsdGVyKG1fdm0sIHZhbHVlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgICAgIAorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czogeworICAg
ICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICBpZiAodmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkKKyAgICAgICAgICAgIG5vZGUt
PmdldEJ5SWRTdGF0dXMoKS5maWx0ZXIobV92YWx1ZS5tX3N0cnVjdHVyZS50b1N0cnVjdHVyZVNl
dCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAgICAKKyAgICBjYXNlIEZpbHRlclB1
dEJ5SWRTdGF0dXM6IHsKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5v
ZGUtPmNoaWxkMigpKTsKKyAgICAgICAgaWYgKHZhbHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkp
CisgICAgICAgICAgICBub2RlLT5wdXRCeUlkU3RhdHVzKCkuZmlsdGVyKG1fdmFsdWUubV9zdHJ1
Y3R1cmUudG9TdHJ1Y3R1cmVTZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAgIGNh
c2UgQ2hlY2tUeXBlSW5mb0ZsYWdzOiB7CiAgICAgICAgIGNvbnN0IEFic3RyYWN0VmFsdWUmIGFi
c3RyYWN0VmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAyMzIy
MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTA4Miw5ICsxMDgyLDggQEAgcHJpdmF0ZToKICAgICAgICAgLy8g
Y29kZSBibG9jayBoYWQgZ2F0aGVyZWQuCiAgICAgICAgIExhenlPcGVyYW5kVmFsdWVQcm9maWxl
UGFyc2VyIG1fbGF6eU9wZXJhbmRzOwogICAgICAgICAKLSAgICAgICAgQ2FsbExpbmtJbmZvTWFw
IG1fY2FsbExpbmtJbmZvczsKLSAgICAgICAgU3R1YkluZm9NYXAgbV9zdHViSW5mb3M7Ci0gICAg
ICAgIEJ5VmFsSW5mb01hcCBtX2J5VmFsSW5mb3M7CisgICAgICAgIElDU3RhdHVzTWFwIG1fYmFz
ZWxpbmVNYXA7CisgICAgICAgIElDU3RhdHVzQ29udGV4dCBtX29wdGltaXplZENvbnRleHQ7CiAg
ICAgICAgIAogICAgICAgICAvLyBQb2ludGVycyB0byB0aGUgYXJndW1lbnQgcG9zaXRpb24gdHJh
Y2tlcnMgZm9yIHRoaXMgc2xpY2Ugb2YgY29kZS4KICAgICAgICAgVmVjdG9yPEFyZ3VtZW50UG9z
aXRpb24qPiBtX2FyZ3VtZW50UG9zaXRpb25zOwpAQCAtMTEwMiwxMCArMTEwMSw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWU6OktpbmQsCiAgICAgICAgICAgICBCYXNp
Y0Jsb2NrKiBjb250aW51YXRpb25CbG9jayk7CiAgICAgICAgIAotICAgICAgICB+SW5saW5lU3Rh
Y2tFbnRyeSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1fYnl0ZUNvZGVQYXJzZXItPm1faW5s
aW5lU3RhY2tUb3AgPSBtX2NhbGxlcjsKLSAgICAgICAgfQorICAgICAgICB+SW5saW5lU3RhY2tF
bnRyeSgpOwogICAgICAgICAKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlbWFwT3BlcmFuZChW
aXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkgY29uc3QKICAgICAgICAgewpAQCAtMTEyMCw2ICsxMTE2
LDggQEAgcHJpdmF0ZToKICAgICAKICAgICBJbmxpbmVTdGFja0VudHJ5KiBtX2lubGluZVN0YWNr
VG9wOwogICAgIAorICAgIElDU3RhdHVzQ29udGV4dFN0YWNrIG1faWNDb250ZXh0U3RhY2s7Cisg
ICAgCiAgICAgc3RydWN0IERlbGF5ZWRTZXRMb2NhbCB7CiAgICAgICAgIENvZGVPcmlnaW4gbV9v
cmlnaW47CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBtX29wZXJhbmQ7CkBAIC0xMTQ2LDEwICsx
MTQ0LDYgQEAgcHJpdmF0ZToKICAgICAKICAgICBWZWN0b3I8RGVsYXllZFNldExvY2FsLCAyPiBt
X3NldExvY2FsUXVldWU7CiAKLSAgICBDb2RlQmxvY2sqIG1fZGZnQ29kZUJsb2NrOwotICAgIENh
bGxMaW5rU3RhdHVzOjpDb250ZXh0TWFwIG1fY2FsbENvbnRleHRNYXA7Ci0gICAgU3R1YkluZm9N
YXAgbV9kZmdTdHViSW5mb3M7Ci0gICAgCiAgICAgSW5zdHJ1Y3Rpb24qIG1fY3VycmVudEluc3Ry
dWN0aW9uOwogICAgIGJvb2wgbV9oYXNEZWJ1Z2dlckVuYWJsZWQ7CiB9OwpAQCAtMTIxNCw3ICsx
MjA4LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFycwogCiAgICAg
Q2FsbExpbmtTdGF0dXMgY2FsbExpbmtTdGF0dXMgPSBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZv
cigKICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBjdXJyZW50Q29k
ZU9yaWdpbigpLAotICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxMaW5rSW5mb3MsIG1f
Y2FsbENvbnRleHRNYXApOworICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFw
LCBtX2ljQ29udGV4dFN0YWNrKTsKIAogICAgIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kID0g
SW5saW5lQ2FsbEZyYW1lOjpraW5kRm9yKGNhbGxNb2RlKTsKIApAQCAtMTI0Miw2ICsxMjM2LDgg
QEAgQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFycwogICAgIC8vIElmIHdl
IGhhdmUgcHJvZmlsaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgY2FsbCwgYW5kIGl0IGRpZCBu
b3QgYmVoYXZlIHRvbyBwb2x5bW9ycGhpY2FsbHksCiAgICAgLy8gd2UgbWF5IGJlIGFibGUgdG8g
aW5saW5lIGl0LCBvciBpbiB0aGUgY2FzZSBvZiByZWN1cnNpdmUgdGFpbCBjYWxscyB0dXJuIGl0
IGludG8gYSBqdW1wLgogICAgIGlmIChjYWxsTGlua1N0YXR1cy5jYW5PcHRpbWl6ZSgpKSB7Cisg
ICAgICAgIGFkZFRvR3JhcGgoRmlsdGVyQ2FsbExpbmtTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1f
cGxhbnMucmVjb3JkZWRTdGF0dXNlcy5hZGRDYWxsTGlua1N0YXR1cyhjdXJyZW50Q29kZU9yaWdp
bigpLCBjYWxsTGlua1N0YXR1cykpLCBjYWxsVGFyZ2V0KTsKKyAgICAgICAgCiAgICAgICAgIFZp
cnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgw
LCByZWdpc3Rlck9mZnNldCk7CiAgICAgICAgIGF1dG8gb3B0aW1pemF0aW9uUmVzdWx0ID0gaGFu
ZGxlSW5saW5pbmcoY2FsbFRhcmdldCwgcmVzdWx0LCBjYWxsTGlua1N0YXR1cywgcmVnaXN0ZXJP
ZmZzZXQsIHRoaXNBcmd1bWVudCwKICAgICAgICAgICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzLCBtX2N1cnJlbnRJbmRleCArIGluc3RydWN0aW9uU2l6ZSwgb3AsIGtpbmQsIHByZWRpY3Rp
b24pOwpAQCAtMTI3OSwxMiArMTI3NSwxNCBAQCBCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkg
Qnl0ZUNvZGVQYXJzCiAgICAgCiAgICAgQ2FsbExpbmtTdGF0dXMgY2FsbExpbmtTdGF0dXMgPSBD
YWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLCBjdXJyZW50Q29kZU9yaWdpbigpLAotICAgICAgICBtX2lubGluZVN0YWNr
VG9wLT5tX2NhbGxMaW5rSW5mb3MsIG1fY2FsbENvbnRleHRNYXApOworICAgICAgICBtX2lubGlu
ZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrKTsKICAgICByZWZpbmVT
dGF0aWNhbGx5KGNhbGxMaW5rU3RhdHVzLCBjYWxsVGFyZ2V0KTsKICAgICAKICAgICBWRVJCT1NF
X0xPRygiICAgIFZhcmFyZ3MgY2FsbCBsaW5rIHN0YXR1cyBhdCAiLCBjdXJyZW50Q29kZU9yaWdp
bigpLCAiOiAiLCBjYWxsTGlua1N0YXR1cywgIlxuIik7CiAgICAgCiAgICAgaWYgKGNhbGxMaW5r
U3RhdHVzLmNhbk9wdGltaXplKCkpIHsKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJDYWxsTGlu
a1N0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFucy5yZWNvcmRlZFN0YXR1c2VzLmFkZENhbGxM
aW5rU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIGNhbGxMaW5rU3RhdHVzKSksIGNhbGxUYXJn
ZXQpOworICAgICAgICAKICAgICAgICAgaWYgKGhhbmRsZVZhcmFyZ3NJbmxpbmluZyhjYWxsVGFy
Z2V0LCByZXN1bHQsCiAgICAgICAgICAgICBjYWxsTGlua1N0YXR1cywgZmlyc3RGcmVlUmVnLCBW
aXJ0dWFsUmVnaXN0ZXIodGhpc1JlZyksIFZpcnR1YWxSZWdpc3Rlcihhcmd1bWVudHMpLAogICAg
ICAgICAgICAgZmlyc3RWYXJBcmdPZmZzZXQsIG9wLApAQCAtMzMxOCw5ICszMzE2LDEyIEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVEdldHRlcigKICAgICBpZiAoIWNoZWNrKHZh
cmlhbnQuY29uZGl0aW9uU2V0KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYWRkVG9H
cmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHZhcmlh
bnQuc3RydWN0dXJlU2V0KCkpKSwgdGhpc05vZGUpOwotCisgICAgCiAgICAgLy8gV2UgZG8gbm90
IG5lZWQgdG8gZW1pdCBDaGVja0NlbGwgdGhpbmd5IGhlcmUuIFdoZW4gdGhlIGN1c3RvbSBhY2Nl
c3NvciBpcyByZXBsYWNlZCB0byBkaWZmZXJlbnQgb25lLCBTdHJ1Y3R1cmUgdHJhbnNpdGlvbiBv
Y2N1cnMuCiAgICAgYWRkVG9HcmFwaChDaGVja1N1YkNsYXNzLCBPcEluZm8oZG9tQXR0cmlidXRl
LmNsYXNzSW5mbyksIHRoaXNOb2RlKTsKKyAgICAKKyAgICBib29sIHdhc1NlZW5JbkpJVCA9IHRy
dWU7CisgICAgYWRkVG9HcmFwaChGaWx0ZXJHZXRCeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5t
X3BsYW4ucmVjb3JkZWRTdGF0dXNlcy5hZGRHZXRCeUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2lu
KCksIEdldEJ5SWRTdGF0dXMoR2V0QnlJZFN0YXR1czo6Q3VzdG9tLCB3YXNTZWVuSW5KSVQsIHZh
cmlhbnQpKSksIHRoaXNOb2RlKTsKIAogICAgIENhbGxET01HZXR0ZXJEYXRhKiBjYWxsRE9NR2V0
dGVyRGF0YSA9IG1fZ3JhcGgubV9jYWxsRE9NR2V0dGVyRGF0YS5hZGQoKTsKICAgICBjYWxsRE9N
R2V0dGVyRGF0YS0+Y3VzdG9tQWNjZXNzb3JHZXR0ZXIgPSB2YXJpYW50LmN1c3RvbUFjY2Vzc29y
R2V0dGVyKCk7CkBAIC0zMzUyLDYgKzMzNTMsOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVNb2R1bGVOYW1lc3BhCiAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUu
aGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENlbGwpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgYWRkVG9HcmFwaChDaGVja0NlbGwsIE9wSW5mbyhtX2dyYXBoLmZyZWV6ZShnZXRC
eUlkLm1vZHVsZU5hbWVzcGFjZU9iamVjdCgpKSksIEVkZ2UoYmFzZSwgQ2VsbFVzZSkpOworICAg
IAorICAgIGFkZFRvR3JhcGgoRmlsdGVyR2V0QnlJZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9w
bGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkR2V0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigp
LCBnZXRCeUlkKSksIGJhc2UpOwogCiAgICAgLy8gSWRlYWxseSB3ZSB3b3VsZG4ndCBoYXZlIHRv
IGRvIHRoaXMgUGhhbnRvbS4gQnV0OgogICAgIC8vCkBAIC00MDA3LDE0ICs0MDEwLDI1IEBAIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgCisgICAgLy8gRklYTUU6IElmIHdlIHVzZSB0aGUgR2V0QnlJZFN0YXR1cyBmb3IgYW55
dGhpbmcgdGhlbiB3ZSBzaG91bGQgcmVjb3JkIGl0IGFuZCBpbnNlcnQgYSBub2RlCisgICAgLy8g
YWZ0ZXIgZXZlcnl0aGluZyBlbHNlIChsaWtlIHRoZSBHZXRCeU9mZnNldCBvciB3aGF0ZXZlcikg
dGhhdCB3aWxsIGZpbHRlciB0aGUgcmVjb3JkZWQKKyAgICAvLyBHZXRCeUlkU3RhdHVzLiBUaGF0
IG1lYW5zIHRoYXQgdGhlIGNvbnN0YW50IGZvbGRlciBhbHNvIG5lZWRzIHRvIGRvIHRoZSBzYW1l
IQorICAgIAogICAgIGlmIChnZXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgPiAxKSB7CiAgICAg
ICAgIGlmIChnZXRCeUlkU3RhdHVzLm1ha2VzQ2FsbHMoKSB8fCAhaXNGVEwobV9ncmFwaC5tX3Bs
YW4ubW9kZSkKLSAgICAgICAgICAgIHx8ICFPcHRpb25zOjp1c2VQb2x5bW9ycGhpY0FjY2Vzc0lu
bGluaW5nKCkpIHsKKyAgICAgICAgICAgIHx8ICFPcHRpb25zOjp1c2VQb2x5bW9ycGhpY0FjY2Vz
c0lubGluaW5nKCkKKyAgICAgICAgICAgIHx8IGdldEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSA+
IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZSgpKSB7CisgICAg
ICAgICAgICBpZiAoZmFsc2UgJiYgZ2V0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpID4gT3B0aW9u
czo6bWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplKCkpIHsKKyAgICAgICAgICAg
ICAgICBkYXRhTG9nKCJBdCAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiXG4iKTsKKyAgICAgICAg
ICAgICAgICBkYXRhTG9nKCJHaXZpbmcgdXAgb246ICIsIGdldEJ5SWRTdGF0dXMsICJcbiIpOwor
ICAgICAgICAgICAgfQogICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihkZXN0aW5hdGlv
bk9wZXJhbmQpLAogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoZ2V0QnlJZCwgT3BJbmZvKGlk
ZW50aWZpZXJOdW1iZXIpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJH
ZXRCeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcy5hZGRH
ZXRCeUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIGdldEJ5SWRTdGF0dXMpKSwgYmFzZSk7
CisgICAgICAgIAogICAgICAgICBWZWN0b3I8TXVsdGlHZXRCeU9mZnNldENhc2UsIDI+IGNhc2Vz
OwogICAgICAgICAKICAgICAgICAgLy8gMSkgRW1pdCBwcm90b3R5cGUgc3RydWN0dXJlIGNoZWNr
cyBmb3IgYWxsIGNoYWlucy4gVGhpcyBjb3VsZCBzb3J0IG9mIG1heWJlIG5vdCBiZQpAQCAtNDA1
NiwxMCArNDA3MCwxMiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAg
ICAgICAgICAgYWRkVG9HcmFwaChNdWx0aUdldEJ5T2Zmc2V0LCBPcEluZm8oZGF0YSksIE9wSW5m
byhwcmVkaWN0aW9uKSwgYmFzZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgYWRk
VG9HcmFwaChGaWx0ZXJHZXRCeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3Jk
ZWRTdGF0dXNlcy5hZGRHZXRCeUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIGdldEJ5SWRT
dGF0dXMpKSwgYmFzZSk7CiAgICAgCiAgICAgQVNTRVJUKGdldEJ5SWRTdGF0dXMubnVtVmFyaWFu
dHMoKSA9PSAxKTsKICAgICBHZXRCeUlkVmFyaWFudCB2YXJpYW50ID0gZ2V0QnlJZFN0YXR1c1sw
XTsKLSAgICAgICAgICAgICAgICAKKyAgICAKICAgICBOb2RlKiBsb2FkZWRWYWx1ZSA9IGxvYWQo
cHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFyaWFudCk7CiAgICAgaWYgKCFs
b2FkZWRWYWx1ZSkgewogICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGRlc3RpbmF0aW9uT3Bl
cmFuZCksCkBAIC00MTUwLDcgKzQxNjYsMTAgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
UHV0QnlJZCgKICAgICAKICAgICBpZiAocHV0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpID4gMSkg
ewogICAgICAgICBpZiAoIWlzRlRMKG1fZ3JhcGgubV9wbGFuLm1vZGUpIHx8IHB1dEJ5SWRTdGF0
dXMubWFrZXNDYWxscygpCi0gICAgICAgICAgICB8fCAhT3B0aW9uczo6dXNlUG9seW1vcnBoaWNB
Y2Nlc3NJbmxpbmluZygpKSB7CisgICAgICAgICAgICB8fCAhT3B0aW9uczo6dXNlUG9seW1vcnBo
aWNBY2Nlc3NJbmxpbmluZygpCisgICAgICAgICAgICB8fCBwdXRCeUlkU3RhdHVzLm51bVZhcmlh
bnRzKCkgPiBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemUoKSkg
eworICAgICAgICAgICAgaWYgKGZhbHNlICYmIHB1dEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSA+
IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZSgpKQorICAgICAg
ICAgICAgICAgIGRhdGFMb2coIkdpdmluZyB1cCBvbjogIiwgcHV0QnlJZFN0YXR1cywgIlxuIik7
CiAgICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwg
cHV0QnlJZFN0YXR1cywgaXNEaXJlY3QpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CkBAIC00MTY4LDYgKzQxODcsOCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlk
KAogICAgICAgICAKICAgICAgICAgaWYgKFVOTElLRUxZKG1fZ3JhcGguY29tcGlsYXRpb24oKSkp
CiAgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9uKCktPm5vdGljZUlubGluZWRQdXRCeUlk
KCk7CisgICAgICAgIAorICAgICAgICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE9w
SW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFkZFB1dEJ5SWRTdGF0dXMoY3Vy
cmVudENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0YXR1cykpLCBiYXNlKTsKIAogICAgICAgICBmb3Ig
KGNvbnN0IFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50IDogcHV0QnlJZFN0YXR1cy52YXJpYW50cygp
KSB7CiAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVySW5mZXJyZWRUeXBlKHZhcmlhbnQucmVx
dWlyZWRUeXBlKCkpOwpAQCAtNDE4OSw2ICs0MjEwLDggQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlUHV0QnlJZCgKICAgICAKICAgICBzd2l0Y2ggKHZhcmlhbnQua2luZCgpKSB7CiAgICAg
Y2FzZSBQdXRCeUlkVmFyaWFudDo6UmVwbGFjZTogeworICAgICAgICBhZGRUb0dyYXBoKEZpbHRl
clB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFk
ZFB1dEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0YXR1cykpLCBiYXNl
KTsKKyAgICAgICAgCiAgICAgICAgIHN0b3JlKGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIHZhcmlh
bnQsIHZhbHVlKTsKICAgICAgICAgaWYgKFVOTElLRUxZKG1fZ3JhcGguY29tcGlsYXRpb24oKSkp
CiAgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9uKCktPm5vdGljZUlubGluZWRQdXRCeUlk
KCk7CkBAIC00MTk2LDYgKzQyMTksOCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRC
eUlkKAogICAgIH0KICAgICAKICAgICBjYXNlIFB1dEJ5SWRWYXJpYW50OjpUcmFuc2l0aW9uOiB7
CisgICAgICAgIGFkZFRvR3JhcGgoRmlsdGVyUHV0QnlJZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgu
bV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkUHV0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdp
bigpLCBwdXRCeUlkU3RhdHVzKSksIGJhc2UpOworICAgICAgICAKICAgICAgICAgYWRkVG9HcmFw
aChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQu
b2xkU3RydWN0dXJlKCkpKSwgYmFzZSk7CiAgICAgICAgIGlmICghY2hlY2sodmFyaWFudC5jb25k
aXRpb25TZXQoKSkpIHsKICAgICAgICAgICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXJO
dW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCk7CkBAIC00MjYzLDYgKzQyODgs
OCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgIH0KICAgICAgICAg
CiAgICAgY2FzZSBQdXRCeUlkVmFyaWFudDo6U2V0dGVyOiB7CisgICAgICAgIGFkZFRvR3JhcGgo
RmlsdGVyUHV0QnlJZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVz
ZXMuYWRkUHV0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBwdXRCeUlkU3RhdHVzKSks
IGJhc2UpOworICAgICAgICAKICAgICAgICAgTm9kZSogbG9hZGVkVmFsdWUgPSBsb2FkKFNwZWND
ZWxsT3RoZXIsIGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIHZhcmlhbnQpOwogICAgICAgICBpZiAo
IWxvYWRlZFZhbHVlKSB7CiAgICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVy
TnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QpOwpAQCAtNTAyNCw3ICs1MDUx
LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAg
ICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IDA7CiAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3By
b2ZpbGVkQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICAgICAgQnlWYWxJbmZvKiBieVZhbElu
Zm8gPSBtX2lubGluZVN0YWNrVG9wLT5tX2J5VmFsSW5mb3MuZ2V0KENvZGVPcmlnaW4oY3VycmVu
dENvZGVPcmlnaW4oKS5ieXRlY29kZUluZGV4KSk7CisgICAgICAgICAgICAgICAgQnlWYWxJbmZv
KiBieVZhbEluZm8gPSBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLmdldChDb2RlT3Jp
Z2luKGN1cnJlbnRDb2RlT3JpZ2luKCkuYnl0ZWNvZGVJbmRleCkpLmJ5VmFsSW5mbzsKICAgICAg
ICAgICAgICAgICAvLyBGSVhNRTogV2hlbiB0aGUgYnl0ZWNvZGUgaXMgbm90IGNvbXBpbGVkIGlu
IHRoZSBiYXNlbGluZSBKSVQsIGJ5VmFsSW5mbyBiZWNvbWVzIG51bGwuCiAgICAgICAgICAgICAg
ICAgLy8gQXQgdGhhdCB0aW1lLCB0aGVyZSBpcyBubyBpbmZvcm1hdGlvbi4KICAgICAgICAgICAg
ICAgICBpZiAoYnlWYWxJbmZvCkBAIC01MDkzLDcgKzUxMjAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgUHV0QnlJZFN0YXR1cyBw
dXRCeUlkU3RhdHVzOwogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2st
Pm1fbG9jayk7Ci0gICAgICAgICAgICAgICAgICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9p
bmxpbmVTdGFja1RvcC0+bV9ieVZhbEluZm9zLmdldChDb2RlT3JpZ2luKGN1cnJlbnRDb2RlT3Jp
Z2luKCkuYnl0ZWNvZGVJbmRleCkpOworICAgICAgICAgICAgICAgICAgICBCeVZhbEluZm8qIGJ5
VmFsSW5mbyA9IG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAuZ2V0KENvZGVPcmlnaW4o
Y3VycmVudENvZGVPcmlnaW4oKS5ieXRlY29kZUluZGV4KSkuYnlWYWxJbmZvOwogICAgICAgICAg
ICAgICAgICAgICAvLyBGSVhNRTogV2hlbiB0aGUgYnl0ZWNvZGUgaXMgbm90IGNvbXBpbGVkIGlu
IHRoZSBiYXNlbGluZSBKSVQsIGJ5VmFsSW5mbyBiZWNvbWVzIG51bGwuCiAgICAgICAgICAgICAg
ICAgICAgIC8vIEF0IHRoYXQgdGltZSwgdGhlcmUgaXMgbm8gaW5mb3JtYXRpb24uCiAgICAgICAg
ICAgICAgICAgICAgIGlmIChieVZhbEluZm8gCkBAIC01MTk5LDggKzUyMjYsOCBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBoLmlkZW50aWZpZXJzKClbaWRlbnRp
Zmllck51bWJlcl07CiAgICAgICAgICAgICBHZXRCeUlkU3RhdHVzIGdldEJ5SWRTdGF0dXMgPSBH
ZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAotICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tU
b3AtPm1fcHJvZmlsZWRCbG9jaywgbV9kZmdDb2RlQmxvY2ssCi0gICAgICAgICAgICAgICAgbV9p
bmxpbmVTdGFja1RvcC0+bV9zdHViSW5mb3MsIG1fZGZnU3R1YkluZm9zLAorICAgICAgICAgICAg
ICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAgICAgICAgICBt
X2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrLAogICAgICAg
ICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCksIHVpZCk7CiAKICAgICAgICAgICAgIEFjY2Vz
c1R5cGUgdHlwZSA9IEFjY2Vzc1R5cGU6OkdldDsKQEAgLTUyNDMsOCArNTI3MCw4IEBAIHZvaWQg
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIGJvb2wgZGly
ZWN0ID0gY3VycmVudEluc3RydWN0aW9uWzhdLnUucHV0QnlJZEZsYWdzICYgUHV0QnlJZElzRGly
ZWN0OwogCiAgICAgICAgICAgICBQdXRCeUlkU3RhdHVzIHB1dEJ5SWRTdGF0dXMgPSBQdXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKAotICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1f
cHJvZmlsZWRCbG9jaywgbV9kZmdDb2RlQmxvY2ssCi0gICAgICAgICAgICAgICAgbV9pbmxpbmVT
dGFja1RvcC0+bV9zdHViSW5mb3MsIG1fZGZnU3R1YkluZm9zLAorICAgICAgICAgICAgICAgIG1f
aW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAgICAgICAgICBtX2lubGlu
ZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrLAogICAgICAgICAgICAg
ICAgIGN1cnJlbnRDb2RlT3JpZ2luKCksIG1fZ3JhcGguaWRlbnRpZmllcnMoKVtpZGVudGlmaWVy
TnVtYmVyXSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGhhbmRsZVB1dEJ5SWQoYmFzZSwg
aWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGRpcmVjdCk7CkBAIC02NjAz
LDEyICs2NjMwLDIwIEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmUK
ICAgICAgICAgLy8gV2UgZG8gdGhpcyB3aGlsZSBob2xkaW5nIHRoZSBsb2NrIGJlY2F1c2Ugd2Ug
d2FudCB0byBlbmNvdXJhZ2UgU3RydWN0dXJlU3R1YkluZm8ncwogICAgICAgICAvLyB0byBiZSBw
b3RlbnRpYWxseSBhZGRlZCB0byBvcGVyYXRpb25zIGFuZCBiZWNhdXNlIHRoZSBwcm9maWxlZCBi
bG9jayBjb3VsZCBiZSBpbiB0aGUKICAgICAgICAgLy8gbWlkZGxlIG9mIExMSW50LT5KSVQgdGll
ci11cCBpbiB3aGljaCBjYXNlIHdlIHdvdWxkIGJlIGFkZGluZyB0aGUgaW5mbydzIHJpZ2h0IG5v
dy4KLSAgICAgICAgaWYgKG1fcHJvZmlsZWRCbG9jay0+aGFzQmFzZWxpbmVKSVRQcm9maWxpbmco
KSkgewotICAgICAgICAgICAgbV9wcm9maWxlZEJsb2NrLT5nZXRTdHViSW5mb01hcChsb2NrZXIs
IG1fc3R1YkluZm9zKTsKLSAgICAgICAgICAgIG1fcHJvZmlsZWRCbG9jay0+Z2V0Q2FsbExpbmtJ
bmZvTWFwKGxvY2tlciwgbV9jYWxsTGlua0luZm9zKTsKLSAgICAgICAgICAgIG1fcHJvZmlsZWRC
bG9jay0+Z2V0QnlWYWxJbmZvTWFwKGxvY2tlciwgbV9ieVZhbEluZm9zKTsKKyAgICAgICAgaWYg
KG1fcHJvZmlsZWRCbG9jay0+aGFzQmFzZWxpbmVKSVRQcm9maWxpbmcoKSkKKyAgICAgICAgICAg
IG1fcHJvZmlsZWRCbG9jay0+Z2V0SUNTdGF0dXNNYXAobG9ja2VyLCBtX2Jhc2VsaW5lTWFwKTsK
KyAgICB9CisgICAgCisgICAgbV9vcHRpbWl6ZWRDb250ZXh0LmJhc2VsaW5lQ29kZUJsb2NrID0g
bV9wcm9maWxlZEJsb2NrOworICAgIGlmIChPcHRpb25zOjp1c2VQb2x5dmFyaWFudERldmlydHVh
bGl6YXRpb24oKSkgeworICAgICAgICBDb2RlQmxvY2sqIG9wdGltaXplZEJsb2NrID0gbV9wcm9m
aWxlZEJsb2NrLT5yZXBsYWNlbWVudCgpOworICAgICAgICBtX29wdGltaXplZENvbnRleHQub3B0
aW1pemVkQ29kZUJsb2NrID0gb3B0aW1pemVkQmxvY2s7CisgICAgICAgIGlmIChvcHRpbWl6ZWRC
bG9jaykgeworICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihvcHRpbWl6ZWRC
bG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgIG9wdGltaXplZEJsb2NrLT5nZXRJQ1N0YXR1c01h
cChsb2NrZXIsIG1fb3B0aW1pemVkQ29udGV4dC5tYXApOwogICAgICAgICB9CiAgICAgfQorICAg
IG1faWNDb250ZXh0U3RhY2suYXBwZW5kKCZtX29wdGltaXplZENvbnRleHQpOwogICAgIAogICAg
IGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1dpdGhGaXh1cCA9IHN0ZDo6bWF4PGludD4o
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsK
IApAQCAtNjY3Myw2ICs2NzA4LDEzIEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5
OjpJbmxpbmUKICAgICBieXRlQ29kZVBhcnNlci0+bV9pbmxpbmVTdGFja1RvcCA9IHRoaXM7CiB9
CiAKK0J5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5Ojp+SW5saW5lU3RhY2tFbnRyeSgp
Cit7CisgICAgbV9ieXRlQ29kZVBhcnNlci0+bV9pbmxpbmVTdGFja1RvcCA9IG1fY2FsbGVyOwor
ICAgIFJFTEVBU0VfQVNTRVJUKG1fYnl0ZUNvZGVQYXJzZXItPm1faWNDb250ZXh0U3RhY2subGFz
dCgpID09ICZtX29wdGltaXplZENvbnRleHQpOworICAgIG1fYnl0ZUNvZGVQYXJzZXItPm1faWND
b250ZXh0U3RhY2sucmVtb3ZlTGFzdCgpOworfQorCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUNvZGVCbG9jaygpCiB7CiAgICAgY2xlYXJDYWNoZXMoKTsKQEAgLTY3NjksMTUgKzY4MTEsNiBA
QCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAgICAgCiAgICAgVkVSQk9TRV9MT0coIlBh
cnNpbmcgIiwgKm1fY29kZUJsb2NrLCAiXG4iKTsKICAgICAKLSAgICBtX2RmZ0NvZGVCbG9jayA9
IG1fZ3JhcGgubV9wbGFuLnByb2ZpbGVkREZHQ29kZUJsb2NrOwotICAgIGlmIChpc0ZUTChtX2dy
YXBoLm1fcGxhbi5tb2RlKSAmJiBtX2RmZ0NvZGVCbG9jawotICAgICAgICAmJiBPcHRpb25zOjp1
c2VQb2x5dmFyaWFudERldmlydHVhbGl6YXRpb24oKSkgewotICAgICAgICBpZiAoT3B0aW9uczo6
dXNlUG9seXZhcmlhbnRDYWxsSW5saW5pbmcoKSkKLSAgICAgICAgICAgIENhbGxMaW5rU3RhdHVz
Ojpjb21wdXRlREZHU3RhdHVzZXMobV9kZmdDb2RlQmxvY2ssIG1fY2FsbENvbnRleHRNYXApOwot
ICAgICAgICBpZiAoT3B0aW9uczo6dXNlUG9seXZhcmlhbnRCeUlkSW5saW5pbmcoKSkKLSAgICAg
ICAgICAgIG1fZGZnQ29kZUJsb2NrLT5nZXRTdHViSW5mb01hcChtX2RmZ1N0dWJJbmZvcyk7Ci0g
ICAgfQotICAgIAogICAgIElubGluZVN0YWNrRW50cnkgaW5saW5lU3RhY2tFbnRyeSgKICAgICAg
ICAgdGhpcywgbV9jb2RlQmxvY2ssIG1fcHJvZmlsZWRCbG9jaywgMCwgVmlydHVhbFJlZ2lzdGVy
KCksIFZpcnR1YWxSZWdpc3RlcigpLAogICAgICAgICBtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVy
cygpLCBJbmxpbmVDYWxsRnJhbWU6OkNhbGwsIG51bGxwdHIpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NDYsNiArNDQ2LDkgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQog
ICAgIGNhc2UgUHJvZmlsZUNvbnRyb2xGbG93OgogICAgIGNhc2UgUHV0SGludDoKICAgICBjYXNl
IEluaXRpYWxpemVFbnRyeXBvaW50QXJndW1lbnRzOgorICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtT
dGF0dXM6CisgICAgY2FzZSBGaWx0ZXJHZXRCeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyUHV0
QnlJZFN0YXR1czoKICAgICAgICAgd3JpdGUoU2lkZVN0YXRlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0
U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcnNFeGl0U3RhdGUuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUs
NiArNzUsOSBAQCBib29sIGNsb2JiZXJzRXhpdFN0YXRlKEdyYXBoJiBncmFwaCwgTm9kCiAgICAg
Y2FzZSBGZW5jZWRTdG9yZUJhcnJpZXI6CiAgICAgY2FzZSBBbGxvY2F0ZVByb3BlcnR5U3RvcmFn
ZToKICAgICBjYXNlIFJlYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CisgICAgY2FzZSBGaWx0ZXJD
YWxsTGlua1N0YXR1czoKKyAgICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0dXM6CisgICAgY2FzZSBG
aWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICAvLyBUaGVzZSBkbyBjbG9iYmVyIG1lbW9yeSwg
YnV0IG5vdGhpbmcgdGhhdCBpcyBvYnNlcnZhYmxlLiBJdCBtYXkgYmUgbmljZSB0byBzZXBhcmF0
ZSB0aGUKICAgICAgICAgLy8gaGVhcHMgaW50byB0aG9zZSB0aGF0IGFyZSBvYnNlcnZhYmxlIGFu
ZCB0aG9zZSB0aGF0IGFyZW4ndCwgYnV0IHdlIGRvbid0IGRvIHRoYXQgcmlnaHQgbm93LgogICAg
ICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
ODQ0MApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmgJKHJl
dmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0
YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSW5saW5lQ2Fs
bEZyYW1lU2V0LmgiCiAjaW5jbHVkZSAiSlNDYXN0LmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJDb21w
aWxhdGlvbi5oIgorI2luY2x1ZGUgIlJlY29yZGVkU3RhdHVzZXMuaCIKICNpbmNsdWRlIDx3dGYv
QmFnLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKQEAgLTEyNSw2ICsxMjYsNyBA
QCBwdWJsaWM6CiAgICAgQmFnPENvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludD4gd2F0Y2hw
b2ludHM7CiAgICAgQmFnPEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludD4gYWRhcHRpdmVTdHJ1
Y3R1cmVXYXRjaHBvaW50czsKICAgICBCYWc8QWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVX
YXRjaHBvaW50PiBhZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRzOworICAg
IFJlY29yZGVkU3RhdHVzZXMgcmVjb3JkZWRTdGF0dXNlczsKICAgICBWZWN0b3I8SnVtcFJlcGxh
Y2VtZW50PiBqdW1wUmVwbGFjZW1lbnRzOwogICAgIAogICAgIFNjcmF0Y2hCdWZmZXIqIGNhdGNo
T1NSRW50cnlCdWZmZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0
YW50Rm9sZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU1Nyw3ICs1NTcsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICBhdXRvIGFkZEZpbHRlclN0YXR1cyA9IFsmXSAoKSB7CisgICAgICAgICAgICAgICAgICAgIG1f
aW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgICAgICBpbmRleElu
QmxvY2ssIFNwZWNOb25lLCBGaWx0ZXJHZXRCeUlkU3RhdHVzLCBub2RlLT5vcmlnaW4sCisgICAg
ICAgICAgICAgICAgICAgICAgICBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNl
cy5hZGRHZXRCeUlkU3RhdHVzKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgc3RhdHVzKSksCisgICAg
ICAgICAgICAgICAgICAgICAgICBiYXNlVmFsdWUpOworICAgICAgICAgICAgICAgIH07CisgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cy5udW1WYXJpYW50cygpID09
IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgYWRkRmlsdGVyU3RhdHVzKCk7CiAgICAgICAgICAg
ICAgICAgICAgIGVtaXRHZXRCeU9mZnNldChpbmRleEluQmxvY2ssIG5vZGUsIGJhc2VWYWx1ZSwg
c3RhdHVzWzBdLCBpZGVudGlmaWVyTnVtYmVyKTsKICAgICAgICAgICAgICAgICAgICAgY2hhbmdl
ZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTY2LDYgKzU3NCw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaWYgKCFpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2Rl
KSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgYWRkRmlsdGVyU3RhdHVzKCk7CiAgICAgICAgICAgICAgICAgTXVsdGlHZXRCeU9m
ZnNldERhdGEqIGRhdGEgPSBtX2dyYXBoLm1fbXVsdGlHZXRCeU9mZnNldERhdGEuYWRkKCk7CiAg
ICAgICAgICAgICAgICAgZm9yIChjb25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IHN0YXR1
cy52YXJpYW50cygpKSB7CiAgICAgICAgICAgICAgICAgICAgIGRhdGEtPmNhc2VzLmFwcGVuZCgK
QEAgLTYzOSw2ICs2NDgsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAoIWFsbEdv
b2QpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAg
IGluZGV4SW5CbG9jaywgU3BlY05vbmUsIEZpbHRlclB1dEJ5SWRTdGF0dXMsIG5vZGUtPm9yaWdp
biwKKyAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3Rh
dHVzZXMuYWRkUHV0QnlJZFN0YXR1cyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIHN0YXR1cykpLAor
ICAgICAgICAgICAgICAgICAgICBiYXNlVmFsdWUpOworICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIGlmIChzdGF0dXMubnVtVmFyaWFudHMoKSA9PSAxKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGVtaXRQdXRCeU9mZnNldChpbmRleEluQmxvY2ssIG5vZGUsIGJhc2VWYWx1ZSwgc3Rh
dHVzWzBdLCBpZGVudGlmaWVyTnVtYmVyKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZpc2lvbiAyMzIy
MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMxMiw2ICszMTIsOSBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBBdG9taWNzWG9yOgogICAgIGNhc2UgQXRvbWljc0lzTG9ja0ZyZWU6
CiAgICAgY2FzZSBNYXRjaFN0cnVjdHVyZToKKyAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVz
OgorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlclB1dEJ5SWRT
dGF0dXM6CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNhc2UgUHVzaFdpdGhTY29wZToK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2
aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzOCw2ICsyMTM4LDkgQEAgcHJpdmF0ZToKICAgICAg
ICAgY2FzZSBHZXRHbG9iYWxUaGlzOgogICAgICAgICBjYXNlIEV4dHJhY3RWYWx1ZUZyb21XZWFr
TWFwR2V0OgogICAgICAgICBjYXNlIENQVUludHJpbnNpYzoKKyAgICAgICAgY2FzZSBGaWx0ZXJD
YWxsTGlua1N0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJHZXRCeUlkU3RhdHVzOgorICAgICAg
ICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgICAgICBicmVhazsKICNlbHNlCiAg
ICAgICAgIGRlZmF1bHQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNw
cAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1Niw2ICszNTYsMTIgQEAgdm9pZCBHcmFwaDo6ZHVt
cChQcmludFN0cmVhbSYgb3V0LCBjb25zdAogICAgICAgICBvdXQucHJpbnQoY29tbWEsICJpZ25v
cmVMYXN0SW5kZXhJc1dyaXRhYmxlID0gIiwgbm9kZS0+aWdub3JlTGFzdEluZGV4SXNXcml0YWJs
ZSgpKTsKICAgICBpZiAobm9kZS0+aXNDb25zdGFudCgpKQogICAgICAgICBvdXQucHJpbnQoY29t
bWEsIHBvaW50ZXJEdW1wSW5Db250ZXh0KG5vZGUtPmNvbnN0YW50KCksIGNvbnRleHQpKTsKKyAg
ICBpZiAobm9kZS0+aGFzQ2FsbExpbmtTdGF0dXMoKSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1h
LCAqbm9kZS0+Y2FsbExpbmtTdGF0dXMoKSk7CisgICAgaWYgKG5vZGUtPmhhc0dldEJ5SWRTdGF0
dXMoKSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAqbm9kZS0+Z2V0QnlJZFN0YXR1cygpKTsK
KyAgICBpZiAobm9kZS0+aGFzUHV0QnlJZFN0YXR1cygpKQorICAgICAgICBvdXQucHJpbnQoY29t
bWEsICpub2RlLT5wdXRCeUlkU3RhdHVzKCkpOwogICAgIGlmIChub2RlLT5pc0p1bXAoKSkKICAg
ICAgICAgb3V0LnByaW50KGNvbW1hLCAiVDoiLCAqbm9kZS0+dGFyZ2V0QmxvY2soKSk7CiAgICAg
aWYgKG5vZGUtPmlzQnJhbmNoKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OCw2ICsx
ODgsOCBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRXhjZXB0aW9uSGFuZGxlCiAKIHZvaWQg
SklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKIHsKKyAgICBtX2ppdENv
ZGUtPmNvbW1vbi5yZWNvcmRlZFN0YXR1c2VzID0gV1RGTW92ZShtX2dyYXBoLm1fcGxhbi5yZWNv
cmRlZFN0YXR1c2VzKTsKKyAgICAKICAgICAvLyBMaW5rIHRoZSBjb2RlLCBwb3B1bGF0ZSBkYXRh
IGluIENvZGVCbG9jayBkYXRhIHN0cnVjdHVyZXMuCiAgICAgbV9qaXRDb2RlLT5jb21tb24uZnJh
bWVSZWdpc3RlckNvdW50ID0gbV9ncmFwaC5mcmFtZVJlZ2lzdGVyQ291bnQoKTsKICAgICBtX2pp
dENvZGUtPmNvbW1vbi5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0ID0gbV9ncmFwaC5yZXF1
aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR01heUV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTWF5RXhpdC5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw2ICsxMDEsOSBA
QCBFeGl0TW9kZSBtYXlFeGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5vZGUqCiAgICAgY2FzZSBQdXRD
bG9zdXJlVmFyOgogICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OgogICAgIGNhc2Ug
TnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseToKKyAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3Rh
dHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlclB1dEJ5
SWRTdGF0dXM6CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTdHJDYXQ6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3NjksNiArMjc2
OSwzOSBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChvcCgpID09IFRocm93U3RhdGljRXJyb3Ip
OwogICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8dWludDMyX3Q+KCk7CiAgICAgfQorICAgIAor
ICAgIGJvb2wgaGFzQ2FsbExpbmtTdGF0dXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkg
PT0gRmlsdGVyQ2FsbExpbmtTdGF0dXM7CisgICAgfQorICAgIAorICAgIENhbGxMaW5rU3RhdHVz
KiBjYWxsTGlua1N0YXR1cygpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzQ2FsbExpbmtTdGF0
dXMoKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mby5hczxDYWxsTGlua1N0YXR1cyo+KCk7Cisg
ICAgfQorICAgIAorICAgIGJvb2wgaGFzR2V0QnlJZFN0YXR1cygpCisgICAgeworICAgICAgICBy
ZXR1cm4gb3AoKSA9PSBGaWx0ZXJHZXRCeUlkU3RhdHVzOworICAgIH0KKyAgICAKKyAgICBHZXRC
eUlkU3RhdHVzKiBnZXRCeUlkU3RhdHVzKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNHZXRC
eUlkU3RhdHVzKCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8R2V0QnlJZFN0YXR1cyo+
KCk7CisgICAgfQorICAgIAorICAgIGJvb2wgaGFzUHV0QnlJZFN0YXR1cygpCisgICAgeworICAg
ICAgICByZXR1cm4gb3AoKSA9PSBGaWx0ZXJQdXRCeUlkU3RhdHVzOworICAgIH0KKyAgICAKKyAg
ICBQdXRCeUlkU3RhdHVzKiBwdXRCeUlkU3RhdHVzKCkKKyAgICB7CisgICAgICAgIEFTU0VSVCho
YXNQdXRCeUlkU3RhdHVzKCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8UHV0QnlJZFN0
YXR1cyo+KCk7CisgICAgfQogCiAgICAgdm9pZCBkdW1wQ2hpbGRyZW4oUHJpbnRTdHJlYW0mIG91
dCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShy
ZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5NCwxMSArMzk0LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBERkcgewogICAgIG1hY3JvKEdldEFyZ3VtZW50LCBOb2RlUmVzdWx0SlMpIFwKICAg
ICBcCiAgICAgbWFjcm8oTmV3RnVuY3Rpb24sIE5vZGVSZXN1bHRKUykgXAotICAgIFwKICAgICBt
YWNybyhOZXdHZW5lcmF0b3JGdW5jdGlvbiwgTm9kZVJlc3VsdEpTKSBcCi0gICAgXAogICAgIG1h
Y3JvKE5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24sIE5vZGVSZXN1bHRKUykgXAotICAgIFwKICAg
ICBtYWNybyhOZXdBc3luY0Z1bmN0aW9uLCBOb2RlUmVzdWx0SlMpIFwKICAgICBcCiAgICAgLyog
QmxvY2sgdGVybWluYWxzLiAqL1wKQEAgLTQ3NSw2ICs0NzIsMTEgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgewogICAgIFwKICAgICAvKiBVc2VkIGZvciAkdm0gcGVyZm9ybWFuY2Ug
ZGVidWdnaW5nICovIFwKICAgICBtYWNybyhDUFVJbnRyaW5zaWMsIE5vZGVSZXN1bHRKUyB8IE5v
ZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBcCisgICAgLyogVXNlZCB0byBwcm92aWRlIGZlZWRiYWNr
IHRvIHRoZSBJQyBwcm9maWxlci4gKi8gXAorICAgIG1hY3JvKEZpbHRlckNhbGxMaW5rU3RhdHVz
LCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oRmlsdGVyR2V0QnlJZFN0YXR1cywgTm9k
ZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE5vZGVNdXN0
R2VuZXJhdGUpIFwKIAogCiAvLyBUaGlzIGVudW0gZ2VuZXJhdGVzIGEgbW9ub3RvbmljYWxseSBp
bmNyZWFzaW5nIGlkIGZvciBhbGwgTm9kZSB0eXBlcywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdEJhc2UuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRCYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC00MiwxMSArNDIsMTcgQEAgdm9pZCBPU1JFeGl0QmFzZTo6Y29uc2lkZXJBZGRpbmdBc0Zy
ZXF1ZQogICAgICAgICBiYXNlbGluZUNvZGVCbG9ja0Zvck9yaWdpbkFuZEJhc2VsaW5lQ29kZUJs
b2NrKAogICAgICAgICAgICAgbV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGUsIHByb2ZpbGVkQ29k
ZUJsb2NrKTsKICAgICBpZiAoc291cmNlUHJvZmlsZWRDb2RlQmxvY2spIHsKKyAgICAgICAgRXhp
dGluZ0lubGluZUtpbmQgaW5saW5lS2luZDsKKyAgICAgICAgaWYgKG1fY29kZU9yaWdpbkZvckV4
aXRQcm9maWxlLmlubGluZUNhbGxGcmFtZSkKKyAgICAgICAgICAgIGlubGluZUtpbmQgPSBFeGl0
RnJvbUlubGluZWQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlubGluZUtpbmQgPSBFeGl0
RnJvbU5vdElubGluZWQ7CisgICAgICAgIAogICAgICAgICBGcmVxdWVudEV4aXRTaXRlIHNpdGU7
CiAgICAgICAgIGlmIChtX3dhc0hvaXN0ZWQpCi0gICAgICAgICAgICBzaXRlID0gRnJlcXVlbnRF
eGl0U2l0ZShIb2lzdGluZ0ZhaWxlZCwgaml0VHlwZSk7CisgICAgICAgICAgICBzaXRlID0gRnJl
cXVlbnRFeGl0U2l0ZShIb2lzdGluZ0ZhaWxlZCwgaml0VHlwZSwgaW5saW5lS2luZCk7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHNpdGUgPSBGcmVxdWVudEV4aXRTaXRlKG1fY29kZU9yaWdp
bkZvckV4aXRQcm9maWxlLmJ5dGVjb2RlSW5kZXgsIG1fa2luZCwgaml0VHlwZSk7CisgICAgICAg
ICAgICBzaXRlID0gRnJlcXVlbnRFeGl0U2l0ZShtX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZS5i
eXRlY29kZUluZGV4LCBtX2tpbmQsIGppdFR5cGUsIGlubGluZUtpbmQpOwogICAgICAgICBFeGl0
UHJvZmlsZTo6YWRkKHNvdXJjZVByb2ZpbGVkQ29kZUJsb2NrLCBzaXRlKTsKICAgICB9CiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHJldmlzaW9uIDIzMjIyNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYzMyw2ICs2MzMsOCBAQCB2b2lkIFBsYW46OmNoZWNrTGl2ZW5lc3NBbmRWaXNpdENoaWxk
cmVuCiAgICAgY2xlYW5NdXN0SGFuZGxlVmFsdWVzSWZOZWNlc3NhcnkoKTsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBtdXN0SGFuZGxlVmFsdWVzLnNpemUoKTsgaS0tOykKICAgICAgICAgdmlzaXRv
ci5hcHBlbmRVbmJhcnJpZXJlZChtdXN0SGFuZGxlVmFsdWVzW2ldKTsKKyAgICAKKyAgICByZWNv
cmRlZFN0YXR1c2VzLm1hcmtJZkNoZWFwKHZpc2l0b3IpOwogCiAgICAgdmlzaXRvci5hcHBlbmRV
bmJhcnJpZXJlZChjb2RlQmxvY2spOwogICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQoY29k
ZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKTsKQEAgLTY0OSw2ICs2NTEsMTEgQEAgdm9pZCBQbGFuOjpj
aGVja0xpdmVuZXNzQW5kVmlzaXRDaGlsZHJlbgogICAgIHRyYW5zaXRpb25zLnZpc2l0Q2hpbGRy
ZW4odmlzaXRvcik7CiB9CiAKK3ZvaWQgUGxhbjo6ZmluYWxpemVJbkdDKCkKK3sKKyAgICByZWNv
cmRlZFN0YXR1c2VzLmZpbmFsaXplKCk7Cit9CisKIGJvb2wgUGxhbjo6aXNLbm93blRvQmVMaXZl
RHVyaW5nR0MoKQogewogICAgIGlmIChzdGFnZSA9PSBDYW5jZWxsZWQpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1BsYW4uaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiw2ICszNiw3IEBA
CiAjaW5jbHVkZSAiRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiT3Bl
cmFuZHMuaCIKICNpbmNsdWRlICJQcm9maWxlckNvbXBpbGF0aW9uLmgiCisjaW5jbHVkZSAiUmVj
b3JkZWRTdGF0dXNlcy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKQEAgLTcyLDYgKzczLDcgQEAgc3RydWN0IFBsYW4g
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZQogICAgIHZvaWQgaXRlcmF0ZUNvZGVCbG9ja3NG
b3JHQyhjb25zdCBGdW5jJik7CiAgICAgdm9pZCBjaGVja0xpdmVuZXNzQW5kVmlzaXRDaGlsZHJl
bihTbG90VmlzaXRvciYpOwogICAgIGJvb2wgaXNLbm93blRvQmVMaXZlRHVyaW5nR0MoKTsKKyAg
ICB2b2lkIGZpbmFsaXplSW5HQygpOwogICAgIHZvaWQgY2FuY2VsKCk7CiAKICAgICBib29sIGNh
blRpZXJVcEFuZE9TUkVudGVyKCkgY29uc3QgeyByZXR1cm4gIXRpZXJVcEFuZE9TUkVudGVyQnl0
ZWNvZGVzLmlzRW1wdHkoKTsgfQpAQCAtMTA0LDYgKzEwNiw3IEBAIHN0cnVjdCBQbGFuIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGUKICAgICBEZXNpcmVkSWRlbnRpZmllcnMgaWRlbnRpZmll
cnM7CiAgICAgRGVzaXJlZFdlYWtSZWZlcmVuY2VzIHdlYWtSZWZlcmVuY2VzOwogICAgIERlc2ly
ZWRUcmFuc2l0aW9ucyB0cmFuc2l0aW9uczsKKyAgICBSZWNvcmRlZFN0YXR1c2VzIHJlY29yZGVk
U3RhdHVzZXM7CiAgICAgCiAgICAgYm9vbCB3aWxsVHJ5VG9UaWVyVXAgeyBmYWxzZSB9OwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEyMDYsNiArMTIwNiw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSW5p
dGlhbGl6ZUVudHJ5cG9pbnRBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgV2Vha1NldEFkZDoKICAg
ICAgICAgY2FzZSBXZWFrTWFwU2V0OgorICAgICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVz
OgorICAgICAgICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVy
UHV0QnlJZFN0YXR1czoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAg
IC8vIFRoaXMgZ2V0cyBpZ25vcmVkIGJlY2F1c2UgaXQgb25seSBwcmV0ZW5kcyB0byBwcm9kdWNl
IGEgdmFsdWUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3OCw2ICs0NzgsMTMgQEAgYm9v
bCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgICAgICAvLyBhbHJlYWR5
IGZvcmNlIHRoZXNlIHRoaW5ncyB0byBiZSBvcmRlcmVkIHByZWNpc2VseS4gSSdtIGp1c3Qgbm90
IGNvbmZpZGVudCBlbm91Z2ggaW4gbXkKICAgICAgICAgLy8gZWZmZWN0IGJhc2VkIG1lbW9yeSBt
b2RlbCB0byByZWx5IHNvbGVseSBvbiB0aGF0IHJpZ2h0IG5vdy4KICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAKKyAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2Ug
RmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CisgICAg
ICAgIC8vIFdlIGRvbid0IHdhbnQgdGhlc2UgdG8gYmUgbW92ZWQgYW55d2hlcmUgb3RoZXIgdGhh
biB3aGVyZSB3ZSBwdXQgdGhlbSwgc2luY2Ugd2Ugd2FudCB0aGVtCisgICAgICAgIC8vIHRvIGNh
cHR1cmUgInByb2ZpbGluZyIgYXQgdGhlIHBvaW50IGluIGNvbnRyb2wgZmxvdyBoZXJlIHRoZSB1
c2VyIHB1dCB0aGVtLgorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjYXNlIEdldEJ5VmFs
OgogICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2
aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAzMyw2ICs0MDMzLDExIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIENoZWNrU3RydWN0
dXJlT3JFbXB0eToKICAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG5vZGUsICJDaGVj
a1N0cnVjdHVyZU9yRW1wdHkgb25seSB1c2VkIGluIDY0LWJpdCBERkciKTsKICAgICAgICAgYnJl
YWs7CisgICAgICAgIAorICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgY2FzZSBG
aWx0ZXJHZXRCeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKKyAgICAg
ICAgYnJlYWs7CiAKICAgICBjYXNlIExhc3ROb2RlVHlwZToKICAgICBjYXNlIFBoaToKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYyNiw2ICs0NjI2LDExIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCisgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICBjYXNlIEZpbHRlckdl
dEJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgorICAgICAgICBicmVh
azsKKwogI2Vsc2UgLy8gRU5BQkxFKEZUTF9KSVQpCiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9v
cDoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5Myw4
ICszOTMsMTAgQEAgdm9pZCBXb3JrbGlzdDo6cmVtb3ZlRGVhZFBsYW5zKFZNJiB2bSkKICAgICAg
ICAgICAgIFBsYW4qIHBsYW4gPSBpdGVyLT52YWx1ZS5nZXQoKTsKICAgICAgICAgICAgIGlmIChw
bGFuLT52bSAhPSAmdm0pCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBp
ZiAocGxhbi0+aXNLbm93blRvQmVMaXZlRHVyaW5nR0MoKSkKKyAgICAgICAgICAgIGlmIChwbGFu
LT5pc0tub3duVG9CZUxpdmVEdXJpbmdHQygpKSB7CisgICAgICAgICAgICAgICAgcGxhbi0+Zmlu
YWxpemVJbkdDKCk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChwbGFuLT5zdGFnZSAhPSBQbGFuOjpDYW5jZWxsZWQp
OyAvLyBTaG91bGQgbm90IGJlIGNhbmNlbGxlZCwgeWV0LgogICAgICAgICAgICAgQVNTRVJUKCFk
ZWFkUGxhbktleXMuY29udGFpbnMocGxhbi0+a2V5KCkpKTsKICAgICAgICAgICAgIGRlYWRQbGFu
S2V5cy5hZGQocGxhbi0+a2V5KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgJKHJldmlzaW9uIDIzMjIyNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgRlRMIHsKICAgICBtYWNybyhEaXJlY3RBcmd1bWVudHNfbWluQ2FwYWNpdHksIERpcmVjdEFy
Z3VtZW50czo6b2Zmc2V0T2ZNaW5DYXBhY2l0eSgpKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1l
bnRzX21hcHBlZEFyZ3VtZW50cywgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZk1hcHBlZEFyZ3Vt
ZW50cygpKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX21vZGlmaWVkQXJndW1lbnRzRGVz
Y3JpcHRvciwgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZk1vZGlmaWVkQXJndW1lbnRzRGVzY3Jp
cHRvcigpKSBcCisgICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9hbGxvY2F0b3IsIEZ1bmN0aW9u
UmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9j
YXRpb25Qcm9maWxlOjpvZmZzZXRPZkFsbG9jYXRvcigpKSBcCisgICAgbWFjcm8oRnVuY3Rpb25S
YXJlRGF0YV9zdHJ1Y3R1cmUsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZlN0cnVjdHVy
ZSgpKSBcCiAgICAgbWFjcm8oR2V0dGVyU2V0dGVyX2dldHRlciwgR2V0dGVyU2V0dGVyOjpvZmZz
ZXRPZkdldHRlcigpKSBcCiAgICAgbWFjcm8oR2V0dGVyU2V0dGVyX3NldHRlciwgR2V0dGVyU2V0
dGVyOjpvZmZzZXRPZlNldHRlcigpKSBcCiAgICAgbWFjcm8oSlNBcnJheUJ1ZmZlclZpZXdfbGVu
Z3RoLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkgXApAQCAtMTEyLDEwICsx
MTQsMTAgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3JvKFN0cmlu
Z0ltcGxfbGVuZ3RoLCBTdHJpbmdJbXBsOjpsZW5ndGhNZW1vcnlPZmZzZXQoKSkgXAogICAgIG1h
Y3JvKFN0cnVjdHVyZV9jbGFzc0luZm8sIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpIFwK
ICAgICBtYWNybyhTdHJ1Y3R1cmVfZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVj
dE9mZnNldCgpKSBcCisgICAgbWFjcm8oU3RydWN0dXJlX2luZGV4aW5nTW9kZUluY2x1ZGluZ0hp
c3RvcnksIFN0cnVjdHVyZTo6aW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeU9mZnNldCgpKSBc
CisgICAgbWFjcm8oU3RydWN0dXJlX2lubGluZUNhcGFjaXR5LCBTdHJ1Y3R1cmU6OmlubGluZUNh
cGFjaXR5T2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfcHJvdG90eXBlLCBTdHJ1Y3R1
cmU6OnByb3RvdHlwZU9mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlX3N0cnVjdHVyZUlE
LCBTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KCkpIFwKLSAgICBtYWNybyhTdHJ1Y3R1cmVf
aW5saW5lQ2FwYWNpdHksIFN0cnVjdHVyZTo6aW5saW5lQ2FwYWNpdHlPZmZzZXQoKSkgXAotICAg
IG1hY3JvKFN0cnVjdHVyZV9pbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5LCBTdHJ1Y3R1cmU6
OmluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnlPZmZzZXQoKSkgXAogICAgIG1hY3JvKEhhc2hN
YXBJbXBsX2NhcGFjaXR5LCBIYXNoTWFwSW1wbDxIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXRE
YXRhS2V5Pj46Om9mZnNldE9mQ2FwYWNpdHkoKSkgXAogICAgIG1hY3JvKEhhc2hNYXBJbXBsX2J1
ZmZlciwgIEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+Pjo6
b2Zmc2V0T2ZCdWZmZXIoKSkgXAogICAgIG1hY3JvKEhhc2hNYXBJbXBsX2hlYWQsICBIYXNoTWFw
SW1wbDxIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46Om9mZnNldE9mSGVhZCgp
KSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1MSw2ICszNTEsMTAgQEAgaW5saW5l
IENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgUHV0QnlWYWxEaXJl
Y3Q6CiAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgIGNhc2UgTWF0Y2hTdHJ1Y3R1cmU6
CisgICAgY2FzZSBDcmVhdGVUaGlzOgorICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6Cisg
ICAgY2FzZSBGaWx0ZXJHZXRCeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1
czoKICAgICAgICAgLy8gVGhlc2UgYXJlIE9LLgogICAgICAgICBicmVhazsKIApAQCAtMzYyLDcg
KzM2Niw2IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICAg
ICAgYnJlYWs7CiAKICAgICBjYXNlIElkZW50aXR5V2l0aFByb2ZpbGU6Ci0gICAgY2FzZSBDcmVh
dGVUaGlzOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJV
cEFuZE9TUkVudGVyOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIz
MjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzkxLDYgKzM5MSw4IEBAIHB1YmxpYzoKIAogICAgICAgICAvLyBX
ZSBwdXQgdGhlIGJsb2NrcyBpbnRvIHRoZSBCMyBwcm9jZWR1cmUgaW4gYSBzdXBlciB3ZWlyZCBv
cmRlci4gTm93IHdlIHJlb3JkZXIgdGhlbS4KICAgICAgICAgbV9vdXQuYXBwbHlCbG9ja09yZGVy
KCk7CisgICAgICAgIAorICAgICAgICBtX3N0YXRlLmppdENvZGUtPmNvbW1vbi5yZWNvcmRlZFN0
YXR1c2VzID0gV1RGTW92ZShtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKTsKICAgICB9
CiAKIHByaXZhdGU6CkBAIC04NDcsNiArODQ5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBO
ZXdBcnJheVdpdGhTcHJlYWQ6CiAgICAgICAgICAgICBjb21waWxlTmV3QXJyYXlXaXRoU3ByZWFk
KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDcmVhdGVUaGlzOgorICAgICAg
ICAgICAgY29tcGlsZUNyZWF0ZVRoaXMoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIFNwcmVhZDoKICAgICAgICAgICAgIGNvbXBpbGVTcHJlYWQoKTsKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMTMxMiw2ICsxMzE3LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBCb3R0b21W
YWx1ZToKICAgICAgICAgY2FzZSBLaWxsU3RhY2s6CiAgICAgICAgIGNhc2UgSW5pdGlhbGl6ZUVu
dHJ5cG9pbnRBcmd1bWVudHM6CisgICAgICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6Cisg
ICAgICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJQdXRC
eUlkU3RhdHVzOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCAiVW5yZWNvZ25pemVkIG5vZGUgaW4gRlRM
IGJhY2tlbmQiKTsKQEAgLTU2NjIsNiArNTY3MCw0MCBAQCBwcml2YXRlOgogCiAgICAgICAgIHNl
dEpTVmFsdWUocmVzdWx0KTsKICAgICB9CisgICAgCisgICAgdm9pZCBjb21waWxlQ3JlYXRlVGhp
cygpCisgICAgeworICAgICAgICBMVmFsdWUgY2FsbGVlID0gbG93Q2VsbChtX25vZGUtPmNoaWxk
MSgpKTsKKworICAgICAgICBMQmFzaWNCbG9jayBpc0Z1bmN0aW9uQmxvY2sgPSBtX291dC5uZXdC
bG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBoYXNSYXJlRGF0YSA9IG1fb3V0Lm5ld0Jsb2Nr
KCk7CisgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRoID0gbV9vdXQubmV3QmxvY2soKTsKKyAg
ICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKKworICAg
ICAgICBtX291dC5icmFuY2goaXNGdW5jdGlvbihjYWxsZWUsIHByb3ZlblR5cGUobV9ub2RlLT5j
aGlsZDEoKSkpLCB1c3VhbGx5KGlzRnVuY3Rpb25CbG9jayksIHJhcmVseShzbG93UGF0aCkpOwor
CisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaXNGdW5jdGlv
bkJsb2NrLCBoYXNSYXJlRGF0YSk7CisgICAgICAgIExWYWx1ZSByYXJlRGF0YSA9IG1fb3V0Lmxv
YWRQdHIoY2FsbGVlLCBtX2hlYXBzLkpTRnVuY3Rpb25fcmFyZURhdGEpOworICAgICAgICBtX291
dC5icmFuY2gobV9vdXQuaXNaZXJvNjQocmFyZURhdGEpLCByYXJlbHkoc2xvd1BhdGgpLCB1c3Vh
bGx5KGhhc1JhcmVEYXRhKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaGFzUmFyZURhdGEs
IHNsb3dQYXRoKTsKKyAgICAgICAgTFZhbHVlIGFsbG9jYXRvciA9IG1fb3V0LmxvYWRQdHIocmFy
ZURhdGEsIG1faGVhcHMuRnVuY3Rpb25SYXJlRGF0YV9hbGxvY2F0b3IpOworICAgICAgICBMVmFs
dWUgc3RydWN0dXJlID0gbV9vdXQubG9hZFB0cihyYXJlRGF0YSwgbV9oZWFwcy5GdW5jdGlvblJh
cmVEYXRhX3N0cnVjdHVyZSk7CisgICAgICAgIExWYWx1ZSBidXR0ZXJmbHkgPSBtX291dC5jb25z
dEludFB0cigwKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFu
Y2hvcihhbGxvY2F0ZU9iamVjdChhbGxvY2F0b3IsIHN0cnVjdHVyZSwgYnV0dGVyZmx5LCBzbG93
UGF0aCkpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9v
dXQuYXBwZW5kVG8oc2xvd1BhdGgsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIFZhbHVlRnJvbUJs
b2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKAorICAgICAgICAgICAgSW50NjQs
IG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25DcmVhdGVUaGlzKSwgbV9jYWxsRnJhbWUsIGNhbGxl
ZSwgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPmlubGluZUNhcGFjaXR5KCkpKSk7CisgICAgICAg
IG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250
aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LnBoaShJ
bnQ2NCwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCk7CisKKyAgICAgICAgbXV0YXRvckZlbmNlKCk7
CisgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKKyAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVT
cHJlYWQoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
LmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjc1LDYgKzI3NSw3IEBAIGNvbnN0ZXhwciBib29s
IGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW4KICAgICB2KHVuc2lnbmVkLCBtYXhBY2Nlc3NWYXJp
YW50TGlzdFNpemUsIDgsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwgdXNlUG9seXZh
cmlhbnREZXZpcnR1YWxpemF0aW9uLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KGJv
b2wsIHVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcsIHRydWUsIE5vcm1hbCwgbnVsbHB0cikg
XAorICAgIHYodW5zaWduZWQsIG1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZSwg
MywgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihib29sLCB1c2VQb2x5bW9ycGhpY0NhbGxJbmxp
bmluZywgdHJ1ZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihib29sLCB1c2VQb2x5bW9ycGhp
Y0NhbGxJbmxpbmluZ0Zvck5vblN0dWJTdGF0dXMsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwK
ICAgICB2KHVuc2lnbmVkLCBtYXhQb2x5bW9ycGhpY0NhbGxWYXJpYW50TGlzdFNpemUsIDE1LCBO
b3JtYWwsIG51bGxwdHIpIFwKQEAgLTMyMiw5ICszMjMsNiBAQCBjb25zdGV4cHIgYm9vbCBlbmFi
bGVXZWJBc3NlbWJseVN0cmVhbWluCiAgICAgXAogICAgIHYodW5zaWduZWQsIG1heGltdW1WYXJh
cmdzRm9ySW5saW5pbmcsIDEwMCwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgXAotICAgIHYoYm9v
bCwgdXNlUG9seXZhcmlhbnRDYWxsSW5saW5pbmcsIHRydWUsIE5vcm1hbCwgbnVsbHB0cikgXAot
ICAgIHYoYm9vbCwgdXNlUG9seXZhcmlhbnRCeUlkSW5saW5pbmcsIHRydWUsIE5vcm1hbCwgbnVs
bHB0cikgXAotICAgIFwKICAgICB2KGJvb2wsIHVzZU1heGltYWxGbHVzaEluc2VydGlvblBoYXNl
LCBmYWxzZSwgTm9ybWFsLCAiU2V0dGluZyB0byB0cnVlIGFsbG93cyB0aGUgREZHJ3MgTWF4aW1h
bEZsdXNoSW5zZXJ0aW9uUGhhc2UgdG8gcnVuLiIpIFwKICAgICBcCiAgICAgdih1bnNpZ25lZCwg
bWF4aW11bUJpbmFyeVN0cmluZ1N3aXRjaENhc2VMZW5ndGgsIDUwLCBOb3JtYWwsIG51bGxwdHIp
IFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341728</attachid>
            <date>2018-05-31 20:53:05 -0700</date>
            <delta_ts>2018-06-01 12:35:53 -0700</delta_ts>
            <desc>wow it compiles!</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>151812</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIzMjIyNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNDQwLDYgKzQ0MCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUEKICAgICBieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgKICAgICBieXRlY29k
ZS9FeGVjdXRpb25Db3VudGVyLmgKICAgICBieXRlY29kZS9FeGl0S2luZC5oCisgICAgYnl0ZWNv
ZGUvRXhpdGluZ0lubGluZUtpbmQuaAogICAgIGJ5dGVjb2RlL0V4aXRpbmdKSVRUeXBlLmgKICAg
ICBieXRlY29kZS9FeHByZXNzaW9uUmFuZ2VJbmZvLmgKICAgICBieXRlY29kZS9IYW5kbGVySW5m
by5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyMzIyMjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIx
MiwxMyArMjEyLDE3IEBAIGJ5dGVjb2RlL0RpcmVjdEV2YWxDb2RlQ2FjaGUuY3BwCiBieXRlY29k
ZS9FdmFsQ29kZUJsb2NrLmNwcAogYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5j
cHAKIGJ5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIuY3BwCitieXRlY29kZS9FeGl0RmxhZy5jcHAK
IGJ5dGVjb2RlL0V4aXRLaW5kLmNwcAorYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuY3BwCiBi
eXRlY29kZS9FeGl0aW5nSklUVHlwZS5jcHAKIGJ5dGVjb2RlL0Z1bGxDb2RlT3JpZ2luLmNwcAog
Ynl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suY3BwCiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNw
cAogYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCiBieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlLmNwcAorYnl0ZWNvZGUvSUNTdGF0dXNNYXAuY3BwCitieXRlY29kZS9JQ1N0YXR1c1V0
aWxzLmNwcAogYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcAogYnl0ZWNvZGUvSW5saW5lQ2FsbEZy
YW1lLmNwcAogYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lU2V0LmNwcApAQCAtMjQ1LDYgKzI0OSw3
IEBAIGJ5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwCiBieXRlY29kZS9QdXRCeUlkRmxh
Z3MuY3BwCiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAogYnl0ZWNvZGUvUHV0QnlJZFZhcmlh
bnQuY3BwCitieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAogYnl0ZWNvZGUvUmVkdWNlV2hp
dGVzcGFjZS5jcHAKIGJ5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmNwcAogYnl0ZWNvZGUvU3BlY3Vs
YXRlZFR5cGUuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI5Nyw2ICsyOTcsMTEgQEAKIAkJ
MEY0MjZBNDkxNDYwQ0JCNzAwMTMxRjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0MjZBNDYxNDYwQ0JBQjAwMTMx
RjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGNDI2QTRCMTQ2MENENkUwMDEzMUY4RiAvKiBEYXRhRm9ybWF0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQyNkE0
QTE0NjBDRDZCMDAxMzFGOEYgLyogRGF0YUZvcm1hdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDMxNzM4MTQ2QkFDNjkwMDdFMzg5MCAvKiBM
aXN0YWJsZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ0QTdCMDIw
QkY2ODYyMDAyMkIxNzEgLyogRXhpdEZsYWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDRBN0FFMjBCRjY4NUYwMDIyQjE3MSAvKiBFeGl0RmxhZy5o
ICovOyB9OworCQkwRjQ0QTdCMTIwQkY2OEM5MDAyMkIxNzEgLyogRXhpdGluZ0lubGluZUtpbmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDRBN0E3
MjBCRjY4NUQwMDIyQjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDRBN0IyMjBCRjY4Q0UwMDIyQjE3
MSAvKiBJQ1N0YXR1c01hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0NEE3QUYyMEJGNjg1RjAwMjJCMTcxIC8qIElDU3RhdHVzTWFwLmggKi87IH07
CisJCTBGNDRBN0IzMjBCRjY4RDEwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ0QTdBQTIwQkY2ODVF
MDAyMkIxNzEgLyogUmVjb3JkZWRTdGF0dXNlcy5oICovOyB9OworCQkwRjQ0QTdCNDIwQkY2OEQ5
MDAyMkIxNzEgLyogVGVybWluYXRlZENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDRBN0E4MjBCRjY4NUUwMDIyQjE3MSAvKiBUZXJt
aW5hdGVkQ29kZU9yaWdpbi5oICovOyB9OwogCQkwRjQ1NzAzOTFCRTQ0QzkxMDA2MkE2MjkgLyog
QWlyRWxpbWluYXRlRGVhZENvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNDU3MDM3MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFk
Q29kZS5oICovOyB9OwogCQkwRjQ1NzAzRDFCRTQ1RjBBMDA2MkE2MjkgLyogQWlyUmVwb3J0VXNl
ZFJlZ2lzdGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY0NTcwM0IxQkU0NUYwQTAwNjJBNjI5IC8qIEFpclJlcG9ydFVzZWRSZWdpc3RlcnMuaCAq
LzsgfTsKIAkJMEY0NTcwNDExQkU1ODRDQTAwNjJBNjI5IC8qIEIzVGltaW5nU2NvcGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDU3MDNGMUJFNTg0
Q0EwMDYyQTYyOSAvKiBCM1RpbWluZ1Njb3BlLmggKi87IH07CkBAIC0yMjg3LDYgKzIyOTIsMTYg
QEAKIAkJMEY0MjZBNEExNDYwQ0Q2QjAwMTMxRjhGIC8qIERhdGFGb3JtYXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YUZvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjQyQjNDMDIwMUVCNTA5MDAzNTcwMzEgLyogQWxsb2NhdG9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFsbG9jYXRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJs
ZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGlzdGFibGVIYW5k
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDRBN0E3MjBCRjY4NUQwMDIy
QjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBFeGl0aW5nSW5saW5lS2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjQ0QTdBODIwQkY2ODVFMDAyMkIxNzEgLyogVGVybWluYXRlZENvZGVPcmlnaW4uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVybWluYXRlZENvZGVPcmlnaW4uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NEE3QTkyMEJGNjg1RTAwMjJCMTcxIC8qIEV4aXRG
bGFnLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4aXRGbGFnLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcx
IC8qIFJlY29yZGVkU3RhdHVzZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVjb3JkZWRTdGF0dXNlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ0QTdB
QjIwQkY2ODVFMDAyMkIxNzEgLyogSUNTdGF0dXNNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSUNTdGF0dXNNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjQ0QTdBQzIwQkY2ODVGMDAyMkIxNzEgLyogRXhpdGluZ0lubGluZUtpbmQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXhpdGluZ0lubGluZUtpbmQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ0QTdBRDIwQkY2ODVGMDAyMkIx
NzEgLyogUmVjb3JkZWRTdGF0dXNlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZWNvcmRlZFN0YXR1c2VzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY0NEE3QUUyMEJGNjg1RjAwMjJCMTcxIC8qIEV4aXRGbGFnLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEV4aXRGbGFnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGNDRBN0FGMjBCRjY4NUYwMDIyQjE3MSAvKiBJQ1N0YXR1c01hcC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJQ1N0YXR1c01hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjQ0QTdCNTIwQzBCRTNGMDAyMkIxNzEgLyogSUNTdGF0dXNVdGlscy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJQ1N0YXR1c1V0aWxzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NTcwMzYxQkU0NEM5MTAwNjJBNjI5IC8q
IEFpckVsaW1pbmF0ZURlYWRDb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEFpckVsaW1pbmF0ZURlYWRDb2RlLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJFbGltaW5h
dGVEZWFkQ29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDU3MDM3MUJF
NDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBBaXJFbGltaW5hdGVEZWFkQ29kZS5oOyBwYXRoID0gYjMvYWlyL0Fp
ckVsaW1pbmF0ZURlYWRDb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDU3
MDNBMUJFNDVGMEEwMDYyQTYyOSAvKiBBaXJSZXBvcnRVc2VkUmVnaXN0ZXJzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpclJlcG9ydFVzZWRSZWdpc3RlcnMuY3Bw
OyBwYXRoID0gYjMvYWlyL0FpclJlcG9ydFVzZWRSZWdpc3RlcnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzY1OCw2ICs3NjczLDEwIEBACiAJCQkJMEY2MEZFOEUxRkZDMzZG
RDAwMDMzMjBBIC8qIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCAqLywKIAkJCQkwRjU2QTFE
NDE1MDAxQ0YyMDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5jcHAgKi8sCiAJCQkJMEY1NkEx
RDExNTAwMEYzMTAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNvdW50ZXIuaCAqLywKKwkJCQkwRjQ0QTdB
OTIwQkY2ODVFMDAyMkIxNzEgLyogRXhpdEZsYWcuY3BwICovLAorCQkJCTBGNDRBN0FFMjBCRjY4
NUYwMDIyQjE3MSAvKiBFeGl0RmxhZy5oICovLAorCQkJCTBGNDRBN0FDMjBCRjY4NUYwMDIyQjE3
MSAvKiBFeGl0aW5nSW5saW5lS2luZC5jcHAgKi8sCisJCQkJMEY0NEE3QTcyMEJGNjg1RDAwMjJC
MTcxIC8qIEV4aXRpbmdJbmxpbmVLaW5kLmggKi8sCiAJCQkJMEYwMzMyQkYxOEFERkFFMTAwNUY5
NzlBIC8qIEV4aXRpbmdKSVRUeXBlLmNwcCAqLywKIAkJCQkwRjNBQzc1MzE4OEU1RUM4MDAzMjAy
OUYgLyogRXhpdGluZ0pJVFR5cGUuaCAqLywKIAkJCQkwRkIxMDU4MjE2NzU0ODBDMDBGOEFCNkUg
LyogRXhpdEtpbmQuY3BwICovLApAQCAtNzY3NCw2ICs3NjkzLDkgQEAKIAkJCQkwRjAzMzJDMjE4
QjAxNzYzMDA1Rjk3OUEgLyogR2V0QnlJZFZhcmlhbnQuaCAqLywKIAkJCQkxNEFEOTEwODFEQ0E5
Mjk0MDAxNEY5RkUgLyogR2xvYmFsQ29kZUJsb2NrLmggKi8sCiAJCQkJMEYwQjgzQTgxNEJDRjU1
RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi8sCisJCQkJMEY0NEE3QUIyMEJGNjg1RTAwMjJC
MTcxIC8qIElDU3RhdHVzTWFwLmNwcCAqLywKKwkJCQkwRjQ0QTdBRjIwQkY2ODVGMDAyMkIxNzEg
LyogSUNTdGF0dXNNYXAuaCAqLywKKwkJCQkwRjQ0QTdCNTIwQzBCRTNGMDAyMkIxNzEgLyogSUNT
dGF0dXNVdGlscy5jcHAgKi8sCiAJCQkJMEZCMzk5QkQyMEFGNkIzODAwMTdFMjEzIC8qIElDU3Rh
dHVzVXRpbHMuaCAqLywKIAkJCQk3OTA1QkI2NjFEMTIwNTBFMDAxOUZFNTcgLyogSW5saW5lQWNj
ZXNzLmNwcCAqLywKIAkJCQk3OTA1QkI2NzFEMTIwNTBFMDAxOUZFNTcgLyogSW5saW5lQWNjZXNz
LmggKi8sCkBAIC03NzMwLDYgKzc3NTIsOCBAQAogCQkJCTBGOTNCNEE3MThCOTJDNEQwMDE3OEEz
RiAvKiBQdXRCeUlkVmFyaWFudC5jcHAgKi8sCiAJCQkJMEY5M0I0QTgxOEI5MkM0RDAwMTc4QTNG
IC8qIFB1dEJ5SWRWYXJpYW50LmggKi8sCiAJCQkJMEY5RkM4QzExNEUxQjVGQjAwRDUyQUUwIC8q
IFB1dEtpbmQuaCAqLywKKwkJCQkwRjQ0QTdBRDIwQkY2ODVGMDAyMkIxNzEgLyogUmVjb3JkZWRT
dGF0dXNlcy5jcHAgKi8sCisJCQkJMEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcxIC8qIFJlY29yZGVk
U3RhdHVzZXMuaCAqLywKIAkJCQkwRkY2MEFCRjE2NzQwRjgxMDAwMjk3NzkgLyogUmVkdWNlV2hp
dGVzcGFjZS5jcHAgKi8sCiAJCQkJMEZGNjBBQzAxNjc0MEY4MTAwMDI5Nzc5IC8qIFJlZHVjZVdo
aXRlc3BhY2UuaCAqLywKIAkJCQkwRjU1NDFBRjE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBv
aW50ZXIuY3BwICovLApAQCAtNzc0NCw2ICs3NzY4LDcgQEAKIAkJCQlCQ0NGMEQwNzBFRjBBQUI5
MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1YkluZm8uaCAqLywKIAkJCQkwRjRBMzhGNzFDOEUxM0RG
MDAxOTAzMTggLyogU3VwZXJTYW1wbGVyLmNwcCAqLywKIAkJCQkwRjRBMzhGODFDOEUxM0RGMDAx
OTAzMTggLyogU3VwZXJTYW1wbGVyLmggKi8sCisJCQkJMEY0NEE3QTgyMEJGNjg1RTAwMjJCMTcx
IC8qIFRlcm1pbmF0ZWRDb2RlT3JpZ2luLmggKi8sCiAJCQkJMEYyRDRERTUxOTgzMkRBQzAwN0Q0
QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgKi8sCiAJCQkJMEYyRDRERTYxOTgzMkRBQzAwN0Q0QjE5
IC8qIFRvVGhpc1N0YXR1cy5oICovLAogCQkJCTBGOTUyQUJBMUI0ODdBNzcwMEMzNjdDNSAvKiBU
cmFja2VkUmVmZXJlbmNlcy5jcHAgKi8sCkBAIC04NDAxLDYgKzg0MjYsNyBAQAogCQkJCTUzRDQ0
NERDMURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUzNDFGQzcyMURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJDNjNCMjFFNjBBRTQ3MDBDMTM4MzkgLyogQjNXaWR0
aC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NEE3QjIyMEJGNjhDRTAwMjJCMTcxIC8qIElDU3Rh
dHVzTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MjY3OEY4RjFBMDMxMDA5MDA2QTMwNkQgLyog
QmFzaWNCbG9ja0xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDdCODNBQzBFNkRCOEM5
MDA0Nzc1QTQgLyogQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg2OTc2RTVGMUZBM0U4QkMwMEU3QzRFMSAvKiBCaWdJbnRDb25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8sCkBAIC04NjIwLDYgKzg2NDYsNyBAQAogCQkJCTg2RUM5REM2MTMyOERGODIwMDJC
MkFENyAvKiBERkdHZW5lcmF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQzlEQzgx
MzI4REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJGQ0NG
QTE4QTYwMDcwMDAxQTI3RjggLyogREZHR3JhcGhTYWZlcG9pbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGNDRBN0IxMjBCRjY4QzkwMDIyQjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZCMTc2NjExOTZCOEY5RTAwOTEwNTJBIC8qIERGR0hlYXBMb2NhdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDODQxNjkxQkE4QzMyMTAwNjE4MzdEIC8qIERGR0lu
ZmVycmVkVHlwZUNoZWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxNEUyMTE4MTI1NzBCMDA5
QjZCNEQgLyogREZHSW5saW5lQ2FjaGVXcmFwcGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTg3NzAs
NiArODc5Nyw3IEBACiAJCQkJQTdBOEFGMzgxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0MzJBcnJh
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzkxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0
NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NDMxN0VBOUY1OTAwQUJCMjE3IC8q
IEZQUkluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDRBN0IzMjBCRjY4RDEwMDIyQjE3MSAv
KiBSZWNvcmRlZFN0YXR1c2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzRFREJGNzFEQjVGRkM5
MDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU1MTNBNjFE
NUE2ODJDMDBDMzJCRDggLyogRnJlZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjU4NUUx
MUVFMDgwNUEwMDk1MTc2RCAvKiBGcmVlTGlzdElubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAt
OTExOSw2ICs5MTQ3LDcgQEAKIAkJCQk3MDEzQ0E4QzFCNDkxQTk0MDBDQUU2MTMgLyogSlNKb2Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0xleGlj
YWxFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjMwRTE2RjVDRDAwQjM0
NDYwIC8qIEpTTG9jay5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NEE3QjAyMEJGNjg2MjAwMjJC
MTcxIC8qIEV4aXRGbGFnLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjVENzA5QzE2REU5OUY0MDBG
Q0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBNEJCN0YzMThB
NDExNzkwMDhBMEZDRCAvKiBKU01hbmFnZWRWYWx1ZUludGVybmFsLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNzAwODc0MjE3Q0JFOEVCMDBDM0U2NDMgLyogSlNNYXAuaCBpbiBIZWFkZXJzICovLApA
QCAtOTQzNSw2ICs5NDY0LDcgQEAKIAkJCQlBNzI5OURBMjE3RDEyODQ4MDA1RjVGRjkgLyogU2V0
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVFOTg0MTFBODg2NUI3MDA3NTRFOTMg
LyogU2V0dXBWYXJhcmdzRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCURDMTdFODE4MUM5Qzkx
RDkwMDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ0QTdC
NDIwQkY2OEQ5MDAyMkIxNzEgLyogVGVybWluYXRlZENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICov
LAogCQkJCURDMTdFODE5MUM5QzkxREIwMDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzMDIyRDMxRTNENzNBNTAwQkFDNDkzIC8qIFNpZ2lsbENy
YXNoQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNEQ4Qzc4MUZDQTNDRkEwMDFEMzJB
QyAvKiBTaW1wbGVNYXJraW5nQ29uc3RyYWludC5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCShyZXZpc2lvbiAyMzIyMjcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2NiwxMiArMjY2LDYgQEAgaW5saW5lIHVuc2lnbmVkIGdldEJ5VmFsSW5mb0J5
dGVjb2RlSW5kZQogICAgIHJldHVybiBpbmZvLT5ieXRlY29kZUluZGV4OwogfQogCi10eXBlZGVm
IEhhc2hNYXA8Q29kZU9yaWdpbiwgQnlWYWxJbmZvKiwgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFz
aD4gQnlWYWxJbmZvTWFwOwotCi0jZWxzZSAvLyBFTkFCTEUoSklUKQotCi10eXBlZGVmIEhhc2hN
YXA8aW50LCB2b2lkKj4gQnlWYWxJbmZvTWFwOwotCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVEdW1wZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTQyNyw3ICs0MjcsNyBAQCBzdGF0aWMgdm9pZCBkdW1wQ2hhaW4oUHJpbnRTdHJlYW0mIG91
dCwgCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgotdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9j
az46OnByaW50R2V0QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlv
biwgY29uc3QgU3R1YkluZm9NYXAmIG1hcCkKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpw
cmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNv
bnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rp
b24gPSBpbnN0cnVjdGlvbnNCZWdpbigpICsgbG9jYXRpb247CiAKQEAgLTQ0Nyw3ICs0NDcsNyBA
QCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRHZXRCeUlkCiAgICAgfQogCiAjaWYg
RU5BQkxFKEpJVCkKLSAgICBpZiAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJQdHIgPSBtYXAuZ2V0
KENvZGVPcmlnaW4obG9jYXRpb24pKSkgeworICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YlB0ciA9IHN0YXR1c01hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpLnN0dWJJbmZvKSB7CiAg
ICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9ICpzdHViUHRyOwogICAgICAgICBp
ZiAoc3R1YkluZm8ucmVzZXRCeUdDKQogICAgICAgICAgICAgb3V0LnByaW50KCIgKFJlc2V0IEJ5
IEdDKSIpOwpAQCAtNDg4LDEyICs0ODgsMTIgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46
OnByaW50R2V0QnlJZAogICAgICAgICBvdXQucHJpbnRmKCIpIik7CiAgICAgfQogI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0obWFwKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdHVzTWFwKTsKICNlbmRp
ZgogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+
OjpwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24s
IGNvbnN0IFN0dWJJbmZvTWFwJiBtYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJp
bnRQdXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25z
dCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQogewogICAgIGNvbnN0IGF1dG8qIGluc3RydWN0aW9u
ID0gaW5zdHJ1Y3Rpb25zQmVnaW4oKSArIGxvY2F0aW9uOwogCkBAIC01MjEsNyArNTIxLDcgQEAg
dm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50UHV0QnlJZAogICAgIH0KIAogI2lmIEVO
QUJMRShKSVQpCi0gICAgaWYgKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViUHRyID0gbWFwLmdldChD
b2RlT3JpZ2luKGxvY2F0aW9uKSkpIHsKKyAgICBpZiAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJQ
dHIgPSBzdGF0dXNNYXAuZ2V0KENvZGVPcmlnaW4obG9jYXRpb24pKS5zdHViSW5mbykgewogICAg
ICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSAqc3R1YlB0cjsKICAgICAgICAgaWYg
KHN0dWJJbmZvLnJlc2V0QnlHQykKICAgICAgICAgICAgIG91dC5wcmludCgiIChSZXNldCBCeSBH
QykiKTsKQEAgLTU0NywxMiArNTQ3LDEyIEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpw
cmludFB1dEJ5SWQKICAgICAgICAgb3V0LnByaW50ZigiKSIpOwogICAgIH0KICNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKG1hcCk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXR1c01hcCk7CiAjZW5kaWYK
IH0KIAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6
cHJpbnRJbkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNv
bnN0IFN0dWJJbmZvTWFwJiBtYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRJ
bkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IElD
U3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb24gPSBp
bnN0cnVjdGlvbnNCZWdpbigpICsgbG9jYXRpb247CiAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lk
IEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRJbkJ5SWRDCiAgICAgVU5VU0VEX1BBUkFNKGlk
ZW50KTsgLy8gdGVsbCB0aGUgY29tcGlsZXIgdG8gc2h1dCB1cCBpbiBjZXJ0YWluIHBsYXRmb3Jt
IGNvbmZpZ3VyYXRpb25zLgogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJQdHIgPSBtYXAuZ2V0KENvZGVPcmlnaW4obG9jYXRpb24pKSkgeworICAgIGlm
IChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YlB0ciA9IHN0YXR1c01hcC5nZXQoQ29kZU9yaWdpbihs
b2NhdGlvbikpLnN0dWJJbmZvKSB7CiAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
byA9ICpzdHViUHRyOwogICAgICAgICBpZiAoc3R1YkluZm8ucmVzZXRCeUdDKQogICAgICAgICAg
ICAgb3V0LnByaW50KCIgKFJlc2V0IEJ5IEdDKSIpOwpAQCAtNjAwLDI2ICs2MDAsMjYgQEAgdm9p
ZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50SW5CeUlkQwogICAgIH0KICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKG91dCk7Ci0gICAgVU5VU0VEX1BBUkFNKG1hcCk7CisgICAgVU5VU0VEX1BB
UkFNKHN0YXR1c01hcCk7CiAjZW5kaWYKIH0KIAogI2lmIEVOQUJMRShKSVQpCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQ2FsbExpbmtT
dGF0dXMoUHJpbnRTdHJlYW0mLCB1bnNpZ25lZCwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJikKK3Zv
aWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQ2FsbExpbmtTdGF0dXMoUHJpbnRTdHJlYW0m
LCB1bnNpZ25lZCwgY29uc3QgSUNTdGF0dXNNYXAmKQogewogfQogCiB0ZW1wbGF0ZTw+Ci12b2lk
IEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBDYWxsTGlua1N0YXR1cyhQcmludFN0cmVh
bSYgb3V0LCB1bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBtYXApCit2
b2lkIEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBDYWxsTGlua1N0YXR1cyhQcmludFN0
cmVhbSYgb3V0LCB1bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01h
cCkKIHsKICAgICBpZiAoYmxvY2soKS0+aml0VHlwZSgpICE9IEpJVENvZGU6OkZUTEpJVCkKLSAg
ICAgICAgb3V0LnByaW50KCIgc3RhdHVzKCIsIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKGJs
b2NrKCksIGxvY2F0aW9uLCBtYXApLCAiKSIpOworICAgICAgICBvdXQucHJpbnQoIiBzdGF0dXMo
IiwgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoYmxvY2soKSwgbG9jYXRpb24sIHN0YXR1c01h
cCksICIpIik7CiB9CiAjZW5kaWYKIAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVj
b2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0
aW9uLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgY2hhciog
b3AsIENhY2hlRHVtcE1vZGUgY2FjaGVEdW1wTW9kZSwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGlu
ZywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBtYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2Nr
Pjo6cHJpbnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCB0eXBl
bmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgY2hhciogb3AsIENhY2hlRHVtcE1v
ZGUgY2FjaGVEdW1wTW9kZSwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZywgY29uc3QgSUNTdGF0
dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBpbnQgZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAg
ICAgaW50IGZ1bmMgPSAoKytpdCktPnUub3BlcmFuZDsKQEAgLTYzOCw3ICs2MzgsNyBAQCB2b2lk
IEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRDYWxsT3AoCiAgICAgICAgICAgICAgICAgb3V0
LnByaW50ZigiIGxsaW50KCVwKSIsIG9iamVjdCk7CiAgICAgICAgIH0KICNpZiBFTkFCTEUoSklU
KQotICAgICAgICBpZiAoQ2FsbExpbmtJbmZvKiBpbmZvID0gbWFwLmdldChDb2RlT3JpZ2luKGxv
Y2F0aW9uKSkpIHsKKyAgICAgICAgaWYgKENhbGxMaW5rSW5mbyogaW5mbyA9IHN0YXR1c01hcC5n
ZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpLmNhbGxMaW5rSW5mbykgewogICAgICAgICAgICAgaWYg
KGluZm8tPmhhdmVMYXN0U2VlbkNhbGxlZSgpKSB7CiAgICAgICAgICAgICAgICAgSlNPYmplY3Qq
IG9iamVjdCA9IGluZm8tPmxhc3RTZWVuQ2FsbGVlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGF1
dG8qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4oKnZtKCksIG9iamVjdCkp
CkBAIC02NDgsOSArNjQ4LDkgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50Q2Fs
bE9wKAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgZHVtcENhbGxMaW5rU3Rh
dHVzKG91dCwgbG9jYXRpb24sIG1hcCk7CisgICAgICAgIGR1bXBDYWxsTGlua1N0YXR1cyhvdXQs
IGxvY2F0aW9uLCBzdGF0dXNNYXApOwogI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKG1hcCk7
CisgICAgICAgIFVOVVNFRF9QQVJBTShzdGF0dXNNYXApOwogI2VuZGlmCiAgICAgfQogICAgICsr
aXQ7CkBAIC02NzgsNyArNjc4LDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50
TG9jYXRpbwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8
QmxvY2s+OjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQmxv
Y2s6Okluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9u
KiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiBzdHViSW5mb3MsIGNvbnN0IENhbGxMaW5rSW5mb01h
cCYgY2FsbExpbmtJbmZvcykKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNv
ZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiBi
ZWdpbiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3Rh
dHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgaW50IGxvY2F0aW9uID0gaXQgLSBiZWdpbjsKICAg
ICBib29sIGhhc1ByaW50ZWRQcm9maWxpbmcgPSBmYWxzZTsKQEAgLTEwNzEsNyArMTA3MSw3IEBA
IHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgaW50IGlk
MCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBs
b2NhdGlvbiwgaXQsICJpbl9ieV9pZCIpOwogICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVz
IiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBpZE5h
bWUoaWQwLCBpZGVudGlmaWVyKGlkMCkpLmRhdGEoKSk7Ci0gICAgICAgIHByaW50SW5CeUlkQ2Fj
aGVTdGF0dXMob3V0LCBsb2NhdGlvbiwgc3R1YkluZm9zKTsKKyAgICAgICAgcHJpbnRJbkJ5SWRD
YWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdGF0dXNNYXApOwogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgY2FzZSBvcF9pbl9ieV92YWw6IHsKQEAgLTEwOTUsNyArMTA5NSw3IEBAIHZvaWQg
Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiZ2V0X2J5X2lkX2RpcmVjdCIpOwogICAgICAgICBv
dXQucHJpbnRmKCIlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShyMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBpZGVudGlmaWVyKGlkMCkpLmRhdGEoKSk7CiAg
ICAgICAgIGl0ICs9IDI7IC8vIEluY3JlbWVudCB1cCB0byB0aGUgdmFsdWUgcHJvZmlsZXIuCi0g
ICAgICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0dWJJbmZvcyk7
CisgICAgICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0YXR1c01h
cCk7CiAgICAgICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmls
aW5nKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTEwNCw3ICsxMTA0LDcgQEAgdm9pZCBC
eXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZQogICAgIGNhc2Ugb3BfZ2V0X2J5X2lk
X3Vuc2V0OgogICAgIGNhc2Ugb3BfZ2V0X2FycmF5X2xlbmd0aDogewogICAgICAgICBwcmludEdl
dEJ5SWRPcChvdXQsIGxvY2F0aW9uLCBpdCk7Ci0gICAgICAgIHByaW50R2V0QnlJZENhY2hlU3Rh
dHVzKG91dCwgbG9jYXRpb24sIHN0dWJJbmZvcyk7CisgICAgICAgIHByaW50R2V0QnlJZENhY2hl
U3RhdHVzKG91dCwgbG9jYXRpb24sIHN0YXR1c01hcCk7CiAgICAgICAgIGR1bXBWYWx1ZVByb2Zp
bGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQpAQCAtMTEzMCw3ICsxMTMwLDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBC
eXRlY29kZQogICAgIH0KICAgICBjYXNlIG9wX3B1dF9ieV9pZDogewogICAgICAgICBwcmludFB1
dEJ5SWRPcChvdXQsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZCIpOwotICAgICAgICBwcmludFB1
dEJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdHViSW5mb3MpOworICAgICAgICBwcmlu
dFB1dEJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdGF0dXNNYXApOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBvcF9wdXRfYnlfaWRfd2l0aF90aGlzOiB7CkBAIC0xNDc2
LDE1ICsxNDc2LDE1IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3BfY2FsbDogewotICAgICAgICBwcmlu
dENhbGxPcChvdXQsIGxvY2F0aW9uLCBpdCwgImNhbGwiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVk
UHJvZmlsaW5nLCBjYWxsTGlua0luZm9zKTsKKyAgICAgICAgcHJpbnRDYWxsT3Aob3V0LCBsb2Nh
dGlvbiwgaXQsICJjYWxsIiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgc3RhdHVz
TWFwKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3BfdGFpbF9jYWxsOiB7Ci0g
ICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAidGFpbF9jYWxsIiwgRHVtcENh
Y2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgY2FsbExpbmtJbmZvcyk7CisgICAgICAgIHByaW50
Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAidGFpbF9jYWxsIiwgRHVtcENhY2hlcywgaGFzUHJp
bnRlZFByb2ZpbGluZywgc3RhdHVzTWFwKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNh
c2Ugb3BfY2FsbF9ldmFsOiB7Ci0gICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0
LCAiY2FsbF9ldmFsIiwgRG9udER1bXBDYWNoZXMsIGhhc1ByaW50ZWRQcm9maWxpbmcsIGNhbGxM
aW5rSW5mb3MpOworICAgICAgICBwcmludENhbGxPcChvdXQsIGxvY2F0aW9uLCBpdCwgImNhbGxf
ZXZhbCIsIERvbnREdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmlsaW5nLCBzdGF0dXNNYXApOwog
ICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTE1MjMsNyArMTUyMyw3IEBAIHZvaWQgQnl0ZWNv
ZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IGNhc2Ugb3BfY29uc3RydWN0OiB7Ci0gICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24s
IGl0LCAiY29uc3RydWN0IiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgY2FsbExp
bmtJbmZvcyk7CisgICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAiY29uc3Ry
dWN0IiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgc3RhdHVzTWFwKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3Bfc3RyY2F0OiB7CkBAIC0xNzc4LDEwICsxNzc4
LDEwIEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKIH0KIAogdGVt
cGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJ5dGVj
b2RlKEJsb2NrKiBibG9jaywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQmxvY2s6
Okluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiYg
aXQsIGNvbnN0IFN0dWJJbmZvTWFwJiBzdHViSW5mb3MsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYg
Y2FsbExpbmtJbmZvcykKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUo
QmxvY2sqIGJsb2NrLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5z
dHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwg
Y29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBCeXRlY29kZUR1bXBlciBkdW1w
ZXIoYmxvY2ssIGJlZ2luKTsKLSAgICBkdW1wZXIuZHVtcEJ5dGVjb2RlKG91dCwgYmVnaW4sIGl0
LCBzdHViSW5mb3MsIGNhbGxMaW5rSW5mb3MpOworICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0
LCBiZWdpbiwgaXQsIHN0YXR1c01hcCk7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgpAQCAt
MTg5MCw3ICsxODkwLDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBTdHJpbmdT
dwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+
OjpkdW1wQmxvY2soQmxvY2sqIGJsb2NrLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJ
bnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgU3R1Yklu
Zm9NYXAmIHN0dWJJbmZvcywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBjYWxsTGlua0luZm9zKQor
dm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCbG9jayhCbG9jayogYmxvY2ssIGNvbnN0
IHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBQcmlu
dFN0cmVhbSYgb3V0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQogewogICAgIHNpemVf
dCBpbnN0cnVjdGlvbkNvdW50ID0gMDsKIApAQCAtMTkxMCw3ICsxOTEwLDcgQEAgdm9pZCBCeXRl
Y29kZUR1bXBlcjxCbG9jaz46OmR1bXBCbG9jayhCbAogICAgIGNvbnN0IGF1dG8qIGVuZCA9IGlu
c3RydWN0aW9ucy5lbmQoKTsKICAgICBCeXRlY29kZUR1bXBlcjxCbG9jaz4gZHVtcGVyKGJsb2Nr
LCBiZWdpbik7CiAgICAgZm9yIChjb25zdCBhdXRvKiBpdCA9IGJlZ2luOyBpdCAhPSBlbmQ7ICsr
aXQpCi0gICAgICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0LCBiZWdpbiwgaXQsIHN0dWJJbmZv
cywgY2FsbExpbmtJbmZvcyk7CisgICAgICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0LCBiZWdp
biwgaXQsIHN0YXR1c01hcCk7CiAKICAgICBkdW1wZXIuZHVtcElkZW50aWZpZXJzKG91dCk7CiAg
ICAgZHVtcGVyLmR1bXBDb25zdGFudHMob3V0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1
enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjYsNiArMjcsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDYWxsTGlua0lu
Zm8uaCIKKyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJ
bmZvLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzcsOCArMzksOCBAQCBjbGFzcyBCeXRlY29k
ZUR1bXBlciB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rp
b24gSW5zdHJ1Y3Rpb247CiAKLSAgICBzdGF0aWMgdm9pZCBkdW1wQnl0ZWNvZGUoQmxvY2sqLCBQ
cmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0
aW9uKiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiA9IFN0dWJJbmZvTWFwKCksIGNvbnN0IENhbGxM
aW5rSW5mb01hcCYgPSBDYWxsTGlua0luZm9NYXAoKSk7Ci0gICAgc3RhdGljIHZvaWQgZHVtcEJs
b2NrKEJsb2NrKiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiwg
UHJpbnRTdHJlYW0mIG91dCwgY29uc3QgU3R1YkluZm9NYXAmID0gU3R1YkluZm9NYXAoKSwgY29u
c3QgQ2FsbExpbmtJbmZvTWFwJiA9IENhbGxMaW5rSW5mb01hcCgpKTsKKyAgICBzdGF0aWMgdm9p
ZCBkdW1wQnl0ZWNvZGUoQmxvY2sqLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlv
biogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0
dXNNYXAgPSBJQ1N0YXR1c01hcCgpKTsKKyAgICBzdGF0aWMgdm9pZCBkdW1wQmxvY2soQmxvY2sq
LCBjb25zdCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmLCBQcmludFN0cmVh
bSYgb3V0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwID0gSUNTdGF0dXNNYXAoKSk7CiAK
IHByaXZhdGU6CiAgICAgQnl0ZWNvZGVEdW1wZXIoQmxvY2sqIGJsb2NrLCBjb25zdCBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4pCkBAIC02OSwxNCArNzEsMTQgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHByaW50Q29uZGl0aW9uYWxKdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3Ry
dWN0aW9uKiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgaW50IGxvY2F0aW9uLCBjb25zdCBjaGFy
KiBvcCk7CiAgICAgdm9pZCBwcmludENvbXBhcmVKdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0
IEluc3RydWN0aW9uKiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgaW50IGxvY2F0aW9uLCBjb25z
dCBjaGFyKiBvcCk7CiAgICAgdm9pZCBwcmludEdldEJ5SWRPcChQcmludFN0cmVhbSYgb3V0LCBp
bnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQpOwotICAgIHZvaWQgcHJpbnRHZXRC
eUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBTdHVi
SW5mb01hcCYpOwotICAgIHZvaWQgcHJpbnRQdXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0m
IG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBTdHViSW5mb01hcCYpOwotICAgIHZvaWQgcHJpbnRJ
bkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IFN0
dWJJbmZvTWFwJik7CisgICAgdm9pZCBwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVh
bSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IElDU3RhdHVzTWFwJik7CisgICAgdm9pZCBwcmlu
dFB1dEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0
IElDU3RhdHVzTWFwJik7CisgICAgdm9pZCBwcmludEluQnlJZENhY2hlU3RhdHVzKFByaW50U3Ry
ZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmKTsKICAgICBlbnVtIENh
Y2hlRHVtcE1vZGUgeyBEdW1wQ2FjaGVzLCBEb250RHVtcENhY2hlcyB9OwotICAgIHZvaWQgcHJp
bnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlv
biomIGl0LCBjb25zdCBjaGFyKiBvcCwgQ2FjaGVEdW1wTW9kZSwgYm9vbCYgaGFzUHJpbnRlZFBy
b2ZpbGluZywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJik7CisgICAgdm9pZCBwcmludENhbGxPcChQ
cmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNv
bnN0IGNoYXIqIG9wLCBDYWNoZUR1bXBNb2RlLCBib29sJiBoYXNQcmludGVkUHJvZmlsaW5nLCBj
b25zdCBJQ1N0YXR1c01hcCYpOwogICAgIHZvaWQgcHJpbnRQdXRCeUlkT3AoUHJpbnRTdHJlYW0m
IG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBv
cCk7CiAgICAgdm9pZCBwcmludExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQoUHJpbnRTdHJl
YW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFy
KiBvcCwgaW50IG9wZXJhbmQpOwotICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBv
dXQsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29u
c3QgU3R1YkluZm9NYXAmLCBjb25zdCBDYWxsTGlua0luZm9NYXAmKTsKKyAgICB2b2lkIGR1bXBC
eXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0
IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJik7CiAKICAgICB2b2lkIGR1bXBW
YWx1ZVByb2ZpbGluZyhQcmludFN0cmVhbSYsIGNvbnN0IEluc3RydWN0aW9uKiYsIGJvb2wmIGhh
c1ByaW50ZWRQcm9maWxpbmcpOwogICAgIHZvaWQgZHVtcEFycmF5UHJvZmlsaW5nKFByaW50U3Ry
ZWFtJiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZyk7CkBA
IC04NSw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCogYWN0dWFsUG9pbnRlckZvcihTcGVj
aWFsOjpQb2ludGVyKSBjb25zdDsKIAogI2lmIEVOQUJMRShKSVQpCi0gICAgdm9pZCBkdW1wQ2Fs
bExpbmtTdGF0dXMoUHJpbnRTdHJlYW0mLCB1bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgQ2FsbExp
bmtJbmZvTWFwJik7CisgICAgdm9pZCBkdW1wQ2FsbExpbmtTdGF0dXMoUHJpbnRTdHJlYW0mLCB1
bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmKTsKICNlbmRpZgogCiAgICAgQmxv
Y2sqIG1fYmxvY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExp
bmtJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rSW5mby5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1MiwxMiArMzUyLDYg
QEAgaW5saW5lIENvZGVPcmlnaW4gZ2V0Q2FsbExpbmtJbmZvQ29kZU9yaQogICAgIHJldHVybiBj
YWxsTGlua0luZm8uY29kZU9yaWdpbigpOwogfQogCi10eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdp
biwgQ2FsbExpbmtJbmZvKiwgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFzaD4gQ2FsbExpbmtJbmZv
TWFwOwotCi0jZWxzZSAvLyBFTkFCTEUoSklUKQotCi10eXBlZGVmIEhhc2hNYXA8aW50LCB2b2lk
Kj4gQ2FsbExpbmtJbmZvTWFwOwotCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtT
dGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua1N0YXR1cy5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcg
Kzc3LDggQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcgogfQogCiBD
YWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKLSAgICBDb2RlQmxvY2sq
IHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIGNvbnN0IENhbGxMaW5rSW5m
b01hcCYgbWFwKQorICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCwgY29uc3QgSUNTdGF0dXNNYXAmIG1hcCwKKyAgICBFeGl0U2l0ZURhdGEgZXhpdFNp
dGVEYXRhKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jay0+
bV9sb2NrKTsKICAgICAKQEAgLTg1LDkgKzg2LDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtT
dGF0dXM6OmNvbXB1dGVGbwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICAgICBV
TlVTRURfUEFSQU0obWFwKTsKICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBFeGl0U2l0ZURhdGEg
ZXhpdFNpdGVEYXRhID0gY29tcHV0ZUV4aXRTaXRlRGF0YShwcm9maWxlZEJsb2NrLCBieXRlY29k
ZUluZGV4KTsKLSAgICAKLSAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IG1hcC5nZXQo
Q29kZU9yaWdpbihieXRlY29kZUluZGV4KSk7CisgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0lu
Zm8gPSBtYXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkpLmNhbGxMaW5rSW5mbzsKICAg
ICBpZiAoIWNhbGxMaW5rSW5mbykgewogICAgICAgICBpZiAoZXhpdFNpdGVEYXRhLnRha2VzU2xv
d1BhdGgpCiAgICAgICAgICAgICByZXR1cm4gdGFrZXNTbG93UGF0aCgpOwpAQCAtMTAwLDYgKzk5
LDEyIEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm8KICNlbmRpZgog
fQogCitDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKKyAgICBDb2Rl
QmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIGNvbnN0IElDU3Rh
dHVzTWFwJiBtYXApCit7CisgICAgcmV0dXJuIGNvbXB1dGVGb3IocHJvZmlsZWRCbG9jaywgYnl0
ZWNvZGVJbmRleCwgbWFwLCBjb21wdXRlRXhpdFNpdGVEYXRhKHByb2ZpbGVkQmxvY2ssIGJ5dGVj
b2RlSW5kZXgpKTsKK30KKwogQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0YSBDYWxsTGlua1N0
YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YShDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YTsKQEAg
LTEwNywxMSArMTEyLDIxIEBAIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgQ2FsbExpbmtT
dGEKICAgICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gcHJvZmlsZWRCbG9jay0+dW5s
aW5rZWRDb2RlQmxvY2soKTsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9j
ay0+bV9sb2NrKTsKIAotICAgIGV4aXRTaXRlRGF0YS50YWtlc1Nsb3dQYXRoID0KLSAgICAgICAg
Y29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRl
Y29kZUluZGV4LCBCYWRUeXBlKSkKLSAgICAgICAgfHwgY29kZUJsb2NrLT5oYXNFeGl0U2l0ZShs
b2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRFeGVjdXRhYmxl
KSk7Ci0gICAgZXhpdFNpdGVEYXRhLmJhZEZ1bmN0aW9uID0KLSAgICAgICAgY29kZUJsb2NrLT5o
YXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBC
YWRDZWxsKSk7CisgICAgYXV0byB0YWtlc1Nsb3dQYXRoID0gWyZdIChFeGl0aW5nSW5saW5lS2lu
ZCBpbmxpbmVLaW5kKSAtPiBFeGl0RmxhZyB7CisgICAgICAgIHJldHVybiBFeGl0RmxhZygKKyAg
ICAgICAgICAgIGNvZGVCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhp
dFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkVHlwZSwgRXhpdEZyb21Bbnl0aGluZywgaW5saW5lS2lu
ZCkpCisgICAgICAgICAgICB8fCBjb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpG
cmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZEV4ZWN1dGFibGUsIEV4aXRGcm9tQW55
dGhpbmcsIGlubGluZUtpbmQpKSwKKyAgICAgICAgICAgIGlubGluZUtpbmQpOworICAgIH07Cisg
ICAgCisgICAgYXV0byBiYWRGdW5jdGlvbiA9IFsmXSAoRXhpdGluZ0lubGluZUtpbmQgaW5saW5l
S2luZCkgLT4gRXhpdEZsYWcgeworICAgICAgICByZXR1cm4gRXhpdEZsYWcoY29kZUJsb2NrLT5o
YXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBC
YWRDZWxsLCBFeGl0RnJvbUFueXRoaW5nLCBpbmxpbmVLaW5kKSksIGlubGluZUtpbmQpOworICAg
IH07CisgICAgCisgICAgZXhpdFNpdGVEYXRhLnRha2VzU2xvd1BhdGggfD0gdGFrZXNTbG93UGF0
aChFeGl0RnJvbU5vdElubGluZWQpOworICAgIGV4aXRTaXRlRGF0YS50YWtlc1Nsb3dQYXRoIHw9
IHRha2VzU2xvd1BhdGgoRXhpdEZyb21JbmxpbmVkKTsKKyAgICBleGl0U2l0ZURhdGEuYmFkRnVu
Y3Rpb24gfD0gYmFkRnVuY3Rpb24oRXhpdEZyb21Ob3RJbmxpbmVkKTsKKyAgICBleGl0U2l0ZURh
dGEuYmFkRnVuY3Rpb24gfD0gYmFkRnVuY3Rpb24oRXhpdEZyb21JbmxpbmVkKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29k
ZUluZGV4KTsKQEAgLTIyNyw4MyArMjQyLDU0IEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3Rh
dHVzOjpjb21wdXRlRnIKIAogQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVG
b3IoCiAgICAgY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIENvZGVCbG9jayogcHJv
ZmlsZWRCbG9jaywgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sCi0gICAgRXhpdFNpdGVEYXRh
IGV4aXRTaXRlRGF0YSkKKyAgICBFeGl0U2l0ZURhdGEgZXhpdFNpdGVEYXRhLCBFeGl0aW5nSW5s
aW5lS2luZCBpbmxpbmVLaW5kKQogewogICAgIENhbGxMaW5rU3RhdHVzIHJlc3VsdCA9IGNvbXB1
dGVGb3IobG9ja2VyLCBwcm9maWxlZEJsb2NrLCBjYWxsTGlua0luZm8pOwotICAgIGlmIChleGl0
U2l0ZURhdGEuYmFkRnVuY3Rpb24pIHsKLSAgICAgICAgaWYgKHJlc3VsdC5pc0Jhc2VkT25TdHVi
KCkpIHsKKyAgICByZXN1bHQuYWNjb3VudEZvckV4aXRzKGV4aXRTaXRlRGF0YSwgaW5saW5lS2lu
ZCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZgorCit2b2lkIENhbGxMaW5rU3RhdHVz
OjphY2NvdW50Rm9yRXhpdHMoRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YSwgRXhpdGluZ0lubGlu
ZUtpbmQgaW5saW5lS2luZCkKK3sKKyAgICBpZiAoZXhpdFNpdGVEYXRhLmJhZEZ1bmN0aW9uLmlz
U2V0KGlubGluZUtpbmQpKSB7CisgICAgICAgIGlmIChpc0Jhc2VkT25TdHViKCkpIHsKICAgICAg
ICAgICAgIC8vIElmIHdlIGhhdmUgYSBwb2x5bW9ycGhpYyBzdHViLCB0aGVuIGhhdmluZyBhbiBl
eGl0IHNpdGUgaXMgbm90IHF1aXRlIHNvIHVzZWZ1bC4gSW4KICAgICAgICAgICAgIC8vIG1vc3Qg
Y2FzZXMsIHRoZSBpbmZvcm1hdGlvbiBpbiB0aGUgc3R1YiBoYXMgaGlnaGVyIGZpZGVsaXR5Lgot
ICAgICAgICAgICAgcmVzdWx0Lm1ha2VDbG9zdXJlQ2FsbCgpOworICAgICAgICAgICAgbWFrZUNs
b3N1cmVDYWxsKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBXZSBtaWdodCBu
b3QgaGF2ZSBhIHBvbHltb3JwaGljIHN0dWIgZm9yIGFueSBudW1iZXIgb2YgcmVhc29ucy4gV2hl
biB0aGlzIGhhcHBlbnMsIHdlCiAgICAgICAgICAgICAvLyBhcmUgaW4gbGVzcyBjZXJ0YWluIHRl
cnJpdG9yeSwgc28gZXhpdCBzaXRlcyBtZWFuIGEgbG90LgotICAgICAgICAgICAgcmVzdWx0Lm1f
Y291bGRUYWtlU2xvd1BhdGggPSB0cnVlOworICAgICAgICAgICAgbV9jb3VsZFRha2VTbG93UGF0
aCA9IHRydWU7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKGV4aXRTaXRlRGF0YS50YWtlc1Ns
b3dQYXRoKQotICAgICAgICByZXN1bHQubV9jb3VsZFRha2VTbG93UGF0aCA9IHRydWU7CiAgICAg
Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBpZiAoZXhpdFNpdGVEYXRhLnRha2VzU2xvd1BhdGgu
aXNTZXQoaW5saW5lS2luZCkpCisgICAgICAgIG1fY291bGRUYWtlU2xvd1BhdGggPSB0cnVlOwog
fQotI2VuZGlmCiAKLXZvaWQgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVERkdTdGF0dXNlcygKLSAg
ICBDb2RlQmxvY2sqIGRmZ0NvZGVCbG9jaywgQ2FsbExpbmtTdGF0dXM6OkNvbnRleHRNYXAmIG1h
cCkKK0NhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAorICAgIENvZGVC
bG9jayogcHJvZmlsZWRCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLAorICAgIGNvbnN0IElD
U3RhdHVzTWFwJiBiYXNlbGluZU1hcCwgY29uc3QgSUNTdGF0dXNDb250ZXh0U3RhY2smIG9wdGlt
aXplZFN0YWNrKQogewotI2lmIEVOQUJMRShERkdfSklUKQotICAgIFJFTEVBU0VfQVNTRVJUKGRm
Z0NvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCk7Ci0gICAgQ29kZUJsb2Nr
KiBiYXNlbGluZUNvZGVCbG9jayA9IGRmZ0NvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKTsKLSAgICBm
b3IgKGF1dG8gaXRlciA9IGRmZ0NvZGVCbG9jay0+Y2FsbExpbmtJbmZvc0JlZ2luKCk7ICEhaXRl
cjsgKytpdGVyKSB7Ci0gICAgICAgIENhbGxMaW5rSW5mbyYgaW5mbyA9ICoqaXRlcjsKLSAgICAg
ICAgaWYgKGluZm8uaXNEaXJlY3QoKSkgewotICAgICAgICAgICAgLy8gSWYgdGhlIERGRyB3YXMg
YWJsZSB0byBnZXQgYSBkaXJlY3QgY2FsbCB0aGVuIHByb2JhYmx5IHNvIHdpbGwgd2UuIEhvd2V2
ZXIsIHRoZXJlIGlzCi0gICAgICAgICAgICAvLyBhIHJlbW90ZSBjaGFuY2UgdGhhdCBpdCdzIGJh
ZCBuZXdzIHRvIGxvc2UgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCB0aGUgREZHIGRpZC4gV2UnZAot
ICAgICAgICAgICAgLy8gaWRlYWxseSBsaWtlIHRvIGp1c3Qga25vdyB0aGF0IHRoZSBERkcgaGFk
IGVtaXR0ZWQgYSBEaXJlY3RDYWxsLgotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0K
LSAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gaW5mby5jb2RlT3JpZ2luKCk7Ci0gICAg
ICAgIAotICAgICAgICAvLyBDaGVjayBpZiB3ZSBoYWQgYWxyZWFkeSBwcmV2aW91c2x5IG1hZGUg
YSB0ZXJyaWJsZSBtaXN0YWtlIGluIHRoZSBGVEwgZm9yIHRoaXMKLSAgICAgICAgLy8gY29kZSBv
cmlnaW4uIE5vdGUgdGhhdCB0aGlzIGlzIGFwcHJveGltYXRlIGJlY2F1c2Ugd2UgY291bGQgaGF2
ZSBhIG1vbm92YXJpYW50Ci0gICAgICAgIC8vIGlubGluZSBpbiB0aGUgRlRMIHRoYXQgZW5kZWQg
dXAgZmFpbGluZy4gV2Ugc2hvdWxkIGZpeCB0aGF0IGF0IHNvbWUgcG9pbnQgYnkKLSAgICAgICAg
Ly8gaGF2aW5nIGRhdGEgc3RydWN0dXJlcyB0byB0cmFjayB0aGUgY29udGV4dCBvZiBmcmVxdWVu
dCBleGl0cy4gVGhpcyBpcyBjdXJyZW50bHkKLSAgICAgICAgLy8gY2hhbGxlbmdpbmcgYmVjYXVz
ZSBpdCB3b3VsZCByZXF1aXJlIGNyZWF0aW5nIGEgQ29kZU9yaWdpbi1iYXNlZCBkYXRhYmFzZSBp
bgotICAgICAgICAvLyBiYXNlbGluZSBDb2RlQmxvY2tzLCBidXQgdGhvc2UgQ29kZUJsb2NrcyBk
b24ndCByZWFsbHkgaGF2ZSBhIHBsYWNlIHRvIHB1dCB0aGUKLSAgICAgICAgLy8gSW5saW5lQ2Fs
bEZyYW1lcy4KLSAgICAgICAgQ29kZUJsb2NrKiBjdXJyZW50QmFzZWxpbmUgPQotICAgICAgICAg
ICAgYmFzZWxpbmVDb2RlQmxvY2tGb3JPcmlnaW5BbmRCYXNlbGluZUNvZGVCbG9jayhjb2RlT3Jp
Z2luLCBiYXNlbGluZUNvZGVCbG9jayk7Ci0gICAgICAgIEV4aXRTaXRlRGF0YSBleGl0U2l0ZURh
dGEgPSBjb21wdXRlRXhpdFNpdGVEYXRhKGN1cnJlbnRCYXNlbGluZSwgY29kZU9yaWdpbi5ieXRl
Y29kZUluZGV4KTsKLSAgICAgICAgCi0gICAgICAgIHsKLSAgICAgICAgICAgIENvbmN1cnJlbnRK
U0xvY2tlciBsb2NrZXIoZGZnQ29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgbWFwLmFk
ZChpbmZvLmNvZGVPcmlnaW4oKSwgY29tcHV0ZUZvcihsb2NrZXIsIGRmZ0NvZGVCbG9jaywgaW5m
bywgZXhpdFNpdGVEYXRhKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShkZmdDb2RlQmxvY2spOwotI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQorICAgIEV4aXRT
aXRlRGF0YSBleGl0U2l0ZURhdGEgPSBjb21wdXRlRXhpdFNpdGVEYXRhKHByb2ZpbGVkQmxvY2ss
IGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7CiAgICAgCi0gICAgaWYgKENhbGxMaW5rU3RhdHVz
SW50ZXJuYWw6OnZlcmJvc2UpIHsKLSAgICAgICAgZGF0YUxvZygiQ29udGV4dCBtYXA6XG4iKTsK
LSAgICAgICAgQ29udGV4dE1hcDo6aXRlcmF0b3IgaXRlciA9IG1hcC5iZWdpbigpOwotICAgICAg
ICBDb250ZXh0TWFwOjppdGVyYXRvciBlbmQgPSBtYXAuZW5kKCk7Ci0gICAgICAgIGZvciAoOyBp
dGVyICE9IGVuZDsgKytpdGVyKSB7Ci0gICAgICAgICAgICBkYXRhTG9nKCIgICAgIiwgaXRlci0+
a2V5LCAiOlxuIik7Ci0gICAgICAgICAgICBkYXRhTG9nKCIgICAgICAgICIsIGl0ZXItPnZhbHVl
LCAiXG4iKTsKKyAgICBmb3IgKGNvbnN0IElDU3RhdHVzQ29udGV4dCogY29udGV4dCA6IG9wdGlt
aXplZFN0YWNrKSB7CisgICAgICAgIElDU3RhdHVzIHN0YXR1cyA9IGNvbnRleHQtPmdldChjb2Rl
T3JpZ2luKTsKKyAgICAgICAgaWYgKHN0YXR1cy5jYWxsTGlua0luZm8pIHsKKyAgICAgICAgICAg
IENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29udGV4dC0+b3B0aW1pemVkQ29kZUJsb2NrLT5t
X2xvY2spOworICAgICAgICAgICAgQ2FsbExpbmtTdGF0dXMgcmVzdWx0ID0gY29tcHV0ZUZvcigK
KyAgICAgICAgICAgICAgICBsb2NrZXIsIGNvbnRleHQtPm9wdGltaXplZENvZGVCbG9jaywgKnN0
YXR1cy5jYWxsTGlua0luZm8sIGV4aXRTaXRlRGF0YSwKKyAgICAgICAgICAgICAgICBjb250ZXh0
LT5pbmxpbmVLaW5kKGNvZGVPcmlnaW4pKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
aWYgKHN0YXR1cy5jYWxsU3RhdHVzKQorICAgICAgICAgICAgcmV0dXJuICpzdGF0dXMuY2FsbFN0
YXR1czsKICAgICB9Ci19Ci0KLUNhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRl
Rm9yKAotICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2lu
LAotICAgIGNvbnN0IENhbGxMaW5rSW5mb01hcCYgYmFzZWxpbmVNYXAsIGNvbnN0IENhbGxMaW5r
U3RhdHVzOjpDb250ZXh0TWFwJiBkZmdNYXApCi17Ci0gICAgYXV0byBpdGVyID0gZGZnTWFwLmZp
bmQoY29kZU9yaWdpbik7Ci0gICAgaWYgKGl0ZXIgIT0gZGZnTWFwLmVuZCgpKQotICAgICAgICBy
ZXR1cm4gaXRlci0+dmFsdWU7CiAgICAgCi0gICAgcmV0dXJuIGNvbXB1dGVGb3IocHJvZmlsZWRC
bG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBiYXNlbGluZU1hcCk7CisgICAgcmV0dXJu
IGNvbXB1dGVGb3IocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBiYXNl
bGluZU1hcCwgZXhpdFNpdGVEYXRhKTsKIH0KIAogdm9pZCBDYWxsTGlua1N0YXR1czo6c2V0UHJv
dmVuQ29uc3RhbnRDYWxsZWUoQ2FsbFZhcmlhbnQgdmFyaWFudCkKQEAgLTMyNyw2ICszMTMsMjQg
QEAgdm9pZCBDYWxsTGlua1N0YXR1czo6bWFrZUNsb3N1cmVDYWxsKCkKICAgICBtX3ZhcmlhbnRz
ID0gZGVzcGVjaWZpZWRWYXJpYW50TGlzdChtX3ZhcmlhbnRzKTsKIH0KIAorYm9vbCBDYWxsTGlu
a1N0YXR1czo6ZmluYWxpemUoKQoreworICAgIGZvciAoQ2FsbFZhcmlhbnQmIHZhcmlhbnQgOiBt
X3ZhcmlhbnRzKSB7CisgICAgICAgIGlmICghdmFyaWFudC5maW5hbGl6ZSgpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDYWxs
TGlua1N0YXR1czo6ZmlsdGVyKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBtX3Zhcmlh
bnRzLnJlbW92ZUFsbE1hdGNoaW5nKAorICAgICAgICBbJl0gKENhbGxWYXJpYW50JiB2YXJpYW50
KSAtPiBib29sIHsKKyAgICAgICAgICAgIHZhcmlhbnQuZmlsdGVyKHZtLCB2YWx1ZSk7CisgICAg
ICAgICAgICByZXR1cm4gIXZhcmlhbnQ7CisgICAgICAgIH0pOworfQorCiB2b2lkIENhbGxMaW5r
U3RhdHVzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgaWYgKCFpc1NldCgp
KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtT
dGF0dXMuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxMaW5rU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAKICNp
bmNsdWRlICJDYWxsVmFyaWFudC5oIgogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRl
ICJDb25jdXJyZW50SlNMb2NrLmgiCisjaW5jbHVkZSAiRXhpdEZsYWcuaCIKKyNpbmNsdWRlICJJ
Q1N0YXR1c01hcC5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7
CkBAIC02MCwzOSArNjIsMzMgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAgCi0gICAgc3Rh
dGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoCi0gICAgICAgIENvZGVCbG9jayosIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYpOwotCiAgICAgc3RydWN0
IEV4aXRTaXRlRGF0YSB7Ci0gICAgICAgIGJvb2wgdGFrZXNTbG93UGF0aCB7IGZhbHNlIH07Ci0g
ICAgICAgIGJvb2wgYmFkRnVuY3Rpb24geyBmYWxzZSB9OworICAgICAgICBFeGl0RmxhZyB0YWtl
c1Nsb3dQYXRoOworICAgICAgICBFeGl0RmxhZyBiYWRGdW5jdGlvbjsKICAgICB9OwogICAgIHN0
YXRpYyBFeGl0U2l0ZURhdGEgY29tcHV0ZUV4aXRTaXRlRGF0YShDb2RlQmxvY2sqLCB1bnNpZ25l
ZCBieXRlY29kZUluZGV4KTsKICAgICAKKyAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0
ZUZvcihDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBjb25zdCBJQ1N0YXR1c01h
cCYsIEV4aXRTaXRlRGF0YSk7CisgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3Io
Q29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgY29uc3QgSUNTdGF0dXNNYXAmKTsK
KwogI2lmIEVOQUJMRShKSVQpCiAgICAgLy8gQ29tcHV0ZXMgdGhlIHN0YXR1cyBhc3N1bWluZyB0
aGF0IHdlIG5ldmVyIHRvb2sgc2xvdyBwYXRoIGFuZCBuZXZlciBwcmV2aW91c2x5CiAgICAgLy8g
ZXhpdGVkLgogICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKGNvbnN0IENvbmN1
cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayosIENhbGxMaW5rSW5mbyYpOworICAgIAorICAgIC8v
IENvbXB1dGVzIHRoZSBzdGF0dXMgYWNjb3VudGluZyBmb3IgZXhpdHMuCiAgICAgc3RhdGljIENh
bGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoCi0gICAgICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tl
ciYsIENvZGVCbG9jayosIENhbGxMaW5rSW5mbyYsIEV4aXRTaXRlRGF0YSk7CisgICAgICAgIGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayosIENhbGxMaW5rSW5mbyYsIEV4aXRT
aXRlRGF0YSwgRXhpdGluZ0lubGluZUtpbmQgPSBFeGl0RnJvbUFueUlubGluZUtpbmQpOwogI2Vu
ZGlmCiAgICAgCi0gICAgdHlwZWRlZiBIYXNoTWFwPENvZGVPcmlnaW4sIENhbGxMaW5rU3RhdHVz
LCBDb2RlT3JpZ2luQXBwcm94aW1hdGVIYXNoPiBDb250ZXh0TWFwOwotICAgIAotICAgIC8vIENv
bXB1dGVzIGFsbCBvZiB0aGUgc3RhdHVzZXMgb2YgdGhlIERGRyBjb2RlIGJsb2NrLiBEb2Vzbid0
IGluY2x1ZGUgc3RhdHVzZXMgdGhhdCBoYWQKLSAgICAvLyBubyBpbmZvcm1hdGlvbi4gQ3VycmVu
dGx5IHdlIHVzZSB0aGlzIHdoZW4gY29tcGlsaW5nIEZUTCBjb2RlLCB0byBlbmFibGUgcG9seXZh
cmlhbnQKLSAgICAvLyBpbmxpbmluZy4KLSAgICBzdGF0aWMgdm9pZCBjb21wdXRlREZHU3RhdHVz
ZXMoQ29kZUJsb2NrKiBkZmdDb2RlQmxvY2ssIENvbnRleHRNYXAmKTsKLSAgICAKLSAgICAvLyBI
ZWxwZXIgdGhhdCBmaXJzdCBjb25zdWx0cyB0aGUgQ29udGV4dE1hcCBhbmQgdGhlbiBkb2VzIGNv
bXB1dGVGb3IoKS4KICAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcigKLSAgICAg
ICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiwgY29uc3Qg
Q29udGV4dE1hcCYpOworICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBjb25zdCBJQ1N0
YXR1c01hcCYsIGNvbnN0IElDU3RhdHVzQ29udGV4dFN0YWNrJik7CiAgICAgCiAgICAgdm9pZCBz
ZXRQcm92ZW5Db25zdGFudENhbGxlZShDYWxsVmFyaWFudCk7CiAgICAgCiAgICAgYm9vbCBpc1Nl
dCgpIGNvbnN0IHsgcmV0dXJuICFtX3ZhcmlhbnRzLmlzRW1wdHkoKSB8fCBtX2NvdWxkVGFrZVNs
b3dQYXRoOyB9CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNT
ZXQoKTsgfQorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBpc1Nl
dCgpOyB9CiAgICAgCiAgICAgYm9vbCBjb3VsZFRha2VTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fY291bGRUYWtlU2xvd1BhdGg7IH0KICAgICAKQEAgLTExMCw2ICsxMDYsMTAgQEAgcHVibGlj
OgogICAgIAogICAgIHVuc2lnbmVkIG1heE51bUFyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1f
bWF4TnVtQXJndW1lbnRzOyB9CiAgICAgCisgICAgYm9vbCBmaW5hbGl6ZSgpOworICAgIAorICAg
IHZvaWQgZmlsdGVyKFZNJiwgSlNWYWx1ZSk7CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3Ry
ZWFtJikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgpAQCAtMTIxLDYgKzEyMSw4IEBAIHByaXZhdGU6
CiAgICAgICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENhbGxMaW5rSW5mbyYpOwogI2Vu
ZGlmCiAgICAgCisgICAgdm9pZCBhY2NvdW50Rm9yRXhpdHMoRXhpdFNpdGVEYXRhLCBFeGl0aW5n
SW5saW5lS2luZCk7CisgICAgCiAgICAgQ2FsbFZhcmlhbnRMaXN0IG1fdmFyaWFudHM7CiAgICAg
Ym9vbCBtX2NvdWxkVGFrZVNsb3dQYXRoIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNQcm92ZWQg
eyBmYWxzZSB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJp
YW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bFZhcmlhbnQuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbFZhcmlhbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDYgKzMxLDM1
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitib29sIENhbGxWYXJpYW50OjpmaW5hbGl6ZSgpCit7
CisgICAgaWYgKG1fY2FsbGVlICYmICFIZWFwOjppc01hcmtlZChtX2NhbGxlZSkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDYWxsVmFyaWFudDo6
ZmlsdGVyKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAoISp0aGlzKQorICAgICAg
ICByZXR1cm47CisgICAgCisgICAgaWYgKCFpc0Nsb3N1cmVDYWxsKCkpIHsKKyAgICAgICAgaWYg
KG5vbkV4ZWN1dGFibGVDYWxsZWUoKSAhPSB2YWx1ZSkKKyAgICAgICAgICAgICp0aGlzID0gQ2Fs
bFZhcmlhbnQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoSlNGdW5j
dGlvbiogZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgdmFsdWUpKSB7
CisgICAgICAgIGlmIChmdW5jdGlvbi0+ZXhlY3V0YWJsZSgpID09IGV4ZWN1dGFibGUoKSkKKyAg
ICAgICAgICAgICp0aGlzID0gQ2FsbFZhcmlhbnQoZnVuY3Rpb24pOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICAqdGhpcyA9IENhbGxWYXJpYW50KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgCisgICAgKnRoaXMgPSBDYWxsVmFyaWFudCgpOworfQorCiB2b2lkIENhbGxWYXJpYW50
OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgaWYgKCEqdGhpcykgewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgJKHJldmlz
aW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgIHsKICAg
ICB9CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsZWU7
IH0KKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2NhbGxl
ZTsgfQogICAgIAogICAgIC8vIElmIHRoaXMgdmFyaWFudCByZWZlcnMgdG8gYSBmdW5jdGlvbiwg
Y2hhbmdlIGl0IHRvIHJlZmVyIHRvIGl0cyBleGVjdXRhYmxlLgogICAgIEFMV0FZU19JTkxJTkUg
Q2FsbFZhcmlhbnQgZGVzcGVjaWZpZWRDbG9zdXJlKCkgY29uc3QKQEAgLTEzNiw2ICsxMzYsMTAg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCisgICAgYm9v
bCBmaW5hbGl6ZSgpOworICAgIAorICAgIHZvaWQgZmlsdGVyKFZNJiwgSlNWYWx1ZSk7CisgICAg
CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OwogICAgIAogICAgIGJvb2wg
aXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMzgsMjQgKzIzOCwyMCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKCkKIAogdm9p
ZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0KQogewotICAgIFN0dWJJ
bmZvTWFwIHN0dWJJbmZvczsKLSAgICBDYWxsTGlua0luZm9NYXAgY2FsbExpbmtJbmZvczsKLSAg
ICBnZXRTdHViSW5mb01hcChzdHViSW5mb3MpOwotICAgIGdldENhbGxMaW5rSW5mb01hcChjYWxs
TGlua0luZm9zKTsKLSAgICBCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wQmxvY2sodGhp
cywgaW5zdHJ1Y3Rpb25zKCksIG91dCwgc3R1YkluZm9zLCBjYWxsTGlua0luZm9zKTsKKyAgICBJ
Q1N0YXR1c01hcCBzdGF0dXNNYXA7CisgICAgZ2V0SUNTdGF0dXNNYXAoc3RhdHVzTWFwKTsKKyAg
ICBCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wQmxvY2sodGhpcywgaW5zdHJ1Y3Rpb25z
KCksIG91dCwgc3RhdHVzTWFwKTsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQ
cmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0
aW9uKiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiBzdHViSW5mb3MsIGNvbnN0IENhbGxMaW5rSW5m
b01hcCYgY2FsbExpbmtJbmZvcykKK3ZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRT
dHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlvbiom
IGl0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQogewotICAgIEJ5dGVjb2RlRHVtcGVy
PENvZGVCbG9jaz46OmR1bXBCeXRlY29kZSh0aGlzLCBvdXQsIGJlZ2luLCBpdCwgc3R1YkluZm9z
LCBjYWxsTGlua0luZm9zKTsKKyAgICBCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wQnl0
ZWNvZGUodGhpcywgb3V0LCBiZWdpbiwgaXQsIHN0YXR1c01hcCk7CiB9CiAKLXZvaWQgQ29kZUJs
b2NrOjpkdW1wQnl0ZWNvZGUoCi0gICAgUHJpbnRTdHJlYW0mIG91dCwgdW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQsCi0gICAgY29uc3QgU3R1YkluZm9NYXAmIHN0dWJJbmZvcywgY29uc3QgQ2FsbExp
bmtJbmZvTWFwJiBjYWxsTGlua0luZm9zKQordm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQ
cmludFN0cmVhbSYgb3V0LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgSUNTdGF0dXNN
YXAmIHN0YXR1c01hcCkKIHsKICAgICBjb25zdCBJbnN0cnVjdGlvbiogaXQgPSAmaW5zdHJ1Y3Rp
b25zKClbYnl0ZWNvZGVPZmZzZXRdOwotICAgIGR1bXBCeXRlY29kZShvdXQsIGluc3RydWN0aW9u
cygpLmJlZ2luKCksIGl0LCBzdHViSW5mb3MsIGNhbGxMaW5rSW5mb3MpOworICAgIGR1bXBCeXRl
Y29kZShvdXQsIGluc3RydWN0aW9ucygpLmJlZ2luKCksIGl0LCBzdGF0dXNNYXApOwogfQogCiAj
ZGVmaW5lIEZPUl9FQUNIX01FTUJFUl9WRUNUT1IobWFjcm8pIFwKQEAgLTExNjYsNiArMTE2Miw5
IEBAIHZvaWQgQ29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhjb24KICNpZiBFTkFCTEUo
REZHX0pJVCkKICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpIHsK
ICAgICAgICAgREZHOjpDb21tb25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENvZGUtPmRmZ0NvbW1v
bigpOworICAgICAgICAKKyAgICAgICAgZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLm1hcmtJ
ZkNoZWFwKHZpc2l0b3IpOworICAgICAgICAKICAgICAgICAgZm9yIChhdXRvJiB3ZWFrUmVmZXJl
bmNlIDogZGZnQ29tbW9uLT53ZWFrU3RydWN0dXJlUmVmZXJlbmNlcykKICAgICAgICAgICAgIHdl
YWtSZWZlcmVuY2UtPm1hcmtJZkNoZWFwKHZpc2l0b3IpOwogCkBAIC0xMzk3LDU3ICsxMzk2LDQz
IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICAgICAgICAgZmlu
YWxpemVCYXNlbGluZUpJVElubGluZUNhY2hlcygpOwogI2VuZGlmCiAKLSAgICBWTTo6U3BhY2VB
bmRGaW5hbGl6ZXJTZXQ6OmZpbmFsaXplclNldEZvcigqc3Vic3BhY2UoKSkucmVtb3ZlKHRoaXMp
OwotfQotCi12b2lkIENvZGVCbG9jazo6Z2V0U3R1YkluZm9NYXAoY29uc3QgQ29uY3VycmVudEpT
TG9ja2VyJiwgU3R1YkluZm9NYXAmIHJlc3VsdCkKLXsKLSNpZiBFTkFCTEUoSklUKQotICAgIGlm
IChKSVRDb2RlOjppc0pJVChqaXRUeXBlKCkpKQotICAgICAgICB0b0hhc2hNYXAobV9zdHViSW5m
b3MsIGdldFN0cnVjdHVyZVN0dWJJbmZvQ29kZU9yaWdpbiwgcmVzdWx0KTsKLSNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKHJlc3VsdCk7Ci0jZW5kaWYKLX0KLQotdm9pZCBDb2RlQmxvY2s6OmdldFN0
dWJJbmZvTWFwKFN0dWJJbmZvTWFwJiByZXN1bHQpCi17Ci0gICAgQ29uY3VycmVudEpTTG9ja2Vy
IGxvY2tlcihtX2xvY2spOwotICAgIGdldFN0dWJJbmZvTWFwKGxvY2tlciwgcmVzdWx0KTsKLX0K
LQotdm9pZCBDb2RlQmxvY2s6OmdldENhbGxMaW5rSW5mb01hcChjb25zdCBDb25jdXJyZW50SlNM
b2NrZXImLCBDYWxsTGlua0luZm9NYXAmIHJlc3VsdCkKLXsKLSNpZiBFTkFCTEUoSklUKQotICAg
IGlmIChKSVRDb2RlOjppc0pJVChqaXRUeXBlKCkpKQotICAgICAgICB0b0hhc2hNYXAobV9jYWxs
TGlua0luZm9zLCBnZXRDYWxsTGlua0luZm9Db2RlT3JpZ2luLCByZXN1bHQpOwotI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKLSNlbmRpZgotfQorICAgIGlmIChKSVRDb2RlOjppc09w
dGltaXppbmdKSVQoaml0VHlwZSgpKSkgeworICAgICAgICBERkc6OkNvbW1vbkRhdGEqIGRmZ0Nv
bW1vbiA9IG1faml0Q29kZS0+ZGZnQ29tbW9uKCk7CisgICAgICAgIGRmZ0NvbW1vbi0+cmVjb3Jk
ZWRTdGF0dXNlcy5maW5hbGl6ZSgpOworICAgIH0KIAotdm9pZCBDb2RlQmxvY2s6OmdldENhbGxM
aW5rSW5mb01hcChDYWxsTGlua0luZm9NYXAmIHJlc3VsdCkKLXsKLSAgICBDb25jdXJyZW50SlNM
b2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgZ2V0Q2FsbExpbmtJbmZvTWFwKGxvY2tlciwgcmVz
dWx0KTsKKyAgICBWTTo6U3BhY2VBbmRGaW5hbGl6ZXJTZXQ6OmZpbmFsaXplclNldEZvcigqc3Vi
c3BhY2UoKSkucmVtb3ZlKHRoaXMpOwogfQogCi12b2lkIENvZGVCbG9jazo6Z2V0QnlWYWxJbmZv
TWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5VmFsSW5mb01hcCYgcmVzdWx0KQordm9p
ZCBDb2RlQmxvY2s6OmdldElDU3RhdHVzTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIElD
U3RhdHVzTWFwJiByZXN1bHQpCiB7CiAjaWYgRU5BQkxFKEpJVCkKICAgICBpZiAoSklUQ29kZTo6
aXNKSVQoaml0VHlwZSgpKSkgewotICAgICAgICBmb3IgKGF1dG8qIGJ5VmFsSW5mbyA6IG1fYnlW
YWxJbmZvcykKLSAgICAgICAgICAgIHJlc3VsdC5hZGQoQ29kZU9yaWdpbihieVZhbEluZm8tPmJ5
dGVjb2RlSW5kZXgpLCBieVZhbEluZm8pOworICAgICAgICBmb3IgKFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViSW5mbyA6IG1fc3R1YkluZm9zKQorICAgICAgICAgICAgcmVzdWx0LmFkZChzdHViSW5m
by0+Y29kZU9yaWdpbiwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLnN0dWJJbmZvID0gc3R1
YkluZm87CisgICAgICAgIGZvciAoQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gOiBtX2NhbGxM
aW5rSW5mb3MpCisgICAgICAgICAgICByZXN1bHQuYWRkKGNhbGxMaW5rSW5mby0+Y29kZU9yaWdp
bigpLCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUuY2FsbExpbmtJbmZvID0gY2FsbExpbmtJ
bmZvOworICAgICAgICBmb3IgKEJ5VmFsSW5mbyogYnlWYWxJbmZvIDogbV9ieVZhbEluZm9zKQor
ICAgICAgICAgICAgcmVzdWx0LmFkZChDb2RlT3JpZ2luKGJ5VmFsSW5mby0+Ynl0ZWNvZGVJbmRl
eCksIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52YWx1ZS5ieVZhbEluZm8gPSBieVZhbEluZm87Cisg
ICAgICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0VHlwZSgpKSkgeworICAgICAg
ICAgICAgREZHOjpDb21tb25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENvZGUtPmRmZ0NvbW1vbigp
OworICAgICAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1
c2VzLmNhbGxzKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQocGFpci5maXJzdCwgSUNTdGF0
dXMoKSkuaXRlcmF0b3ItPnZhbHVlLmNhbGxTdGF0dXMgPSBwYWlyLnNlY29uZC5nZXQoKTsKKyAg
ICAgICAgICAgIGZvciAoYXV0byYgcGFpciA6IGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5n
ZXRzKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQocGFpci5maXJzdCwgSUNTdGF0dXMoKSku
aXRlcmF0b3ItPnZhbHVlLmdldFN0YXR1cyA9IHBhaXIuc2Vjb25kLmdldCgpOworICAgICAgICAg
ICAgZm9yIChhdXRvJiBwYWlyIDogZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLnB1dHMpCisg
ICAgICAgICAgICAgICAgcmVzdWx0LmFkZChwYWlyLmZpcnN0LCBJQ1N0YXR1cygpKS5pdGVyYXRv
ci0+dmFsdWUucHV0U3RhdHVzID0gcGFpci5zZWNvbmQuZ2V0KCk7CisgICAgICAgIH0KICAgICB9
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShyZXN1bHQpOwogI2VuZGlmCiB9CiAKLXZvaWQgQ29k
ZUJsb2NrOjpnZXRCeVZhbEluZm9NYXAoQnlWYWxJbmZvTWFwJiByZXN1bHQpCit2b2lkIENvZGVC
bG9jazo6Z2V0SUNTdGF0dXNNYXAoSUNTdGF0dXNNYXAmIHJlc3VsdCkKIHsKICAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgZ2V0QnlWYWxJbmZvTWFwKGxvY2tlciwg
cmVzdWx0KTsKKyAgICBnZXRJQ1N0YXR1c01hcChsb2NrZXIsIHJlc3VsdCk7CiB9CiAKICNpZiBF
TkFCTEUoSklUKQpAQCAtMTUxNCw3ICsxNDk5LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnJlc2V0SklU
RGF0YSgpCiAgICAgCiAgICAgLy8gV2UgY2FuIGNsZWFyIHRoZXNlIGJlY2F1c2Ugbm8gb3RoZXIg
dGhyZWFkIHdpbGwgaGF2ZSByZWZlcmVuY2VzIHRvIGFueSBzdHViIGluZm9zLCBjYWxsCiAgICAg
Ly8gbGluayBpbmZvcywgb3IgYnkgdmFsIGluZm9zIGlmIHdlIGRvbid0IGhhdmUgSklUIGNvZGUu
IEF0dGVtcHRzIHRvIHF1ZXJ5IHRoZXNlIGRhdGEKLSAgICAvLyBzdHJ1Y3R1cmVzIHVzaW5nIHRo
ZSBjb25jdXJyZW50IEFQSSAoZ2V0U3R1YkluZm9NYXAgYW5kIGZyaWVuZHMpIHdpbGwgcmV0dXJu
IG5vdGhpbmcgaWYgd2UKKyAgICAvLyBzdHJ1Y3R1cmVzIHVzaW5nIHRoZSBjb25jdXJyZW50IEFQ
SSAoZ2V0SUNTdGF0dXNNYXAgYW5kIGZyaWVuZHMpIHdpbGwgcmV0dXJuIG5vdGhpbmcgaWYgd2UK
ICAgICAvLyBkb24ndCBoYXZlIEpJVCBjb2RlLgogICAgIG1fc3R1YkluZm9zLmNsZWFyKCk7CiAg
ICAgbV9jYWxsTGlua0luZm9zLmNsZWFyKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1
LDcgQEAKICNpbmNsdWRlICJFeHByZXNzaW9uUmFuZ2VJbmZvLmgiCiAjaW5jbHVkZSAiRnVuY3Rp
b25FeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiSGFuZGxlckluZm8uaCIKKyNpbmNsdWRlICJJQ1N0
YXR1c01hcC5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5o
IgogI2luY2x1ZGUgIkpJVENvZGVNYXAuaCIKQEAgLTk2LDggKzk3LDYgQEAgZW51bSBjbGFzcyBB
Y2Nlc3NUeXBlIDogaW50OF90OwogCiBzdHJ1Y3QgQXJpdGhQcm9maWxlOwogCi10eXBlZGVmIEhh
c2hNYXA8Q29kZU9yaWdpbiwgU3RydWN0dXJlU3R1YkluZm8qLCBDb2RlT3JpZ2luQXBwcm94aW1h
dGVIYXNoPiBTdHViSW5mb01hcDsKLQogZW51bSBSZW9wdGltaXphdGlvbk1vZGUgeyBEb250Q291
bnRSZW9wdGltaXphdGlvbiwgQ291bnRSZW9wdGltaXphdGlvbiB9OwogCiBjbGFzcyBDb2RlQmxv
Y2sgOiBwdWJsaWMgSlNDZWxsIHsKQEAgLTE5Niw4ICsxOTUsOCBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGR1bXBCeXRlY29kZSgpOwogICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJik7
Ci0gICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rp
b24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBTdHViSW5mb01hcCYgPSBT
dHViSW5mb01hcCgpLCBjb25zdCBDYWxsTGlua0luZm9NYXAmID0gQ2FsbExpbmtJbmZvTWFwKCkp
OwotICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0LCBjb25zdCBTdHViSW5mb01hcCYgPSBTdHViSW5mb01hcCgpLCBjb25zdCBDYWxs
TGlua0luZm9NYXAmID0gQ2FsbExpbmtJbmZvTWFwKCkpOworICAgIHZvaWQgZHVtcEJ5dGVjb2Rl
KFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1
Y3Rpb24qJiBpdCwgY29uc3QgSUNTdGF0dXNNYXAmID0gSUNTdGF0dXNNYXAoKSk7CisgICAgdm9p
ZCBkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQs
IGNvbnN0IElDU3RhdHVzTWFwJiA9IElDU3RhdHVzTWFwKCkpOwogCiAgICAgdm9pZCBkdW1wRXhj
ZXB0aW9uSGFuZGxlcnMoUHJpbnRTdHJlYW0mKTsKICAgICB2b2lkIHByaW50U3RydWN0dXJlcyhQ
cmludFN0cmVhbSYsIGNvbnN0IEluc3RydWN0aW9uKik7CkBAIC0yMzcsMTQgKzIzNiw4IEBAIHB1
YmxpYzoKIAogICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5dGVjb2RlT2Zmc2V0RnJvbUNh
bGxTaXRlSW5kZXgoQ2FsbFNpdGVJbmRleCk7CiAKLSAgICB2b2lkIGdldFN0dWJJbmZvTWFwKGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFN0dWJJbmZvTWFwJiByZXN1bHQpOwotICAgIHZvaWQg
Z2V0U3R1YkluZm9NYXAoU3R1YkluZm9NYXAmIHJlc3VsdCk7Ci0gICAgCi0gICAgdm9pZCBnZXRD
YWxsTGlua0luZm9NYXAoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ2FsbExpbmtJbmZvTWFw
JiByZXN1bHQpOwotICAgIHZvaWQgZ2V0Q2FsbExpbmtJbmZvTWFwKENhbGxMaW5rSW5mb01hcCYg
cmVzdWx0KTsKLQotICAgIHZvaWQgZ2V0QnlWYWxJbmZvTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xv
Y2tlciYsIEJ5VmFsSW5mb01hcCYgcmVzdWx0KTsKLSAgICB2b2lkIGdldEJ5VmFsSW5mb01hcChC
eVZhbEluZm9NYXAmIHJlc3VsdCk7CisgICAgdm9pZCBnZXRJQ1N0YXR1c01hcChjb25zdCBDb25j
dXJyZW50SlNMb2NrZXImLCBJQ1N0YXR1c01hcCYgcmVzdWx0KTsKKyAgICB2b2lkIGdldElDU3Rh
dHVzTWFwKElDU3RhdHVzTWFwJiByZXN1bHQpOwogICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAg
SklUQWRkSUMqIGFkZEpJVEFkZElDKEFyaXRoUHJvZmlsZSosIEluc3RydWN0aW9uKik7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCShyZXZp
c2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdp
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEyLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEyLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Niw3ICs0Niw3IEBAIHVuc2lnbmVkIENvZGVPcmln
aW46OmlubGluZURlcHRoKCkgY29uc3QKICAgICByZXR1cm4gaW5saW5lRGVwdGhGb3JDYWxsRnJh
bWUoaW5saW5lQ2FsbEZyYW1lKTsKIH0KIAotYm9vbCBDb2RlT3JpZ2luOjppc0FwcHJveGltYXRl
bHlFcXVhbFRvKGNvbnN0IENvZGVPcmlnaW4mIG90aGVyKSBjb25zdAorYm9vbCBDb2RlT3JpZ2lu
Ojppc0FwcHJveGltYXRlbHlFcXVhbFRvKGNvbnN0IENvZGVPcmlnaW4mIG90aGVyLCBDb2RlQmxv
Y2sqIHRlcm1pbmFsKSBjb25zdAogewogICAgIENvZGVPcmlnaW4gYSA9ICp0aGlzOwogICAgIENv
ZGVPcmlnaW4gYiA9IG90aGVyOwpAQCAtNjgsMTAgKzY4LDEzIEBAIGJvb2wgQ29kZU9yaWdpbjo6
aXNBcHByb3hpbWF0ZWx5RXF1YWxUbygKICAgICAgICAgaWYgKGEuYnl0ZWNvZGVJbmRleCAhPSBi
LmJ5dGVjb2RlSW5kZXgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAg
ICAgICBpZiAoKCEhYS5pbmxpbmVDYWxsRnJhbWUpICE9ICghIWIuaW5saW5lQ2FsbEZyYW1lKSkK
KyAgICAgICAgYm9vbCBhSGFzSW5saW5lQ2FsbEZyYW1lID0gISFhLmlubGluZUNhbGxGcmFtZQor
ICAgICAgICAgICAgJiYgYS5pbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLmdldCgp
ICE9IHRlcm1pbmFsOworICAgICAgICBib29sIGJIYXNJbmxpbmVDYWxsRnJhbWUgPSAhIWIuaW5s
aW5lQ2FsbEZyYW1lOworICAgICAgICBpZiAoYUhhc0lubGluZUNhbGxGcmFtZSAhPSBiSGFzSW5s
aW5lQ2FsbEZyYW1lKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKLSAgICAg
ICAgaWYgKCFhLmlubGluZUNhbGxGcmFtZSkKKyAgICAgICAgaWYgKCFhSGFzSW5saW5lQ2FsbEZy
YW1lKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIAogICAgICAgICBpZiAoYS5p
bmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLmdldCgpICE9IGIuaW5saW5lQ2FsbEZy
YW1lLT5iYXNlbGluZUNvZGVCbG9jay5nZXQoKSkKQEAgLTgyLDcgKzg1LDcgQEAgYm9vbCBDb2Rl
T3JpZ2luOjppc0FwcHJveGltYXRlbHlFcXVhbFRvKAogICAgIH0KIH0KIAotdW5zaWduZWQgQ29k
ZU9yaWdpbjo6YXBwcm94aW1hdGVIYXNoKCkgY29uc3QKK3Vuc2lnbmVkIENvZGVPcmlnaW46OmFw
cHJveGltYXRlSGFzaChDb2RlQmxvY2sqIHRlcm1pbmFsKSBjb25zdAogewogICAgIGlmICghaXNT
ZXQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC05Nyw2ICsxMDAsOSBAQCB1bnNpZ25lZCBDb2Rl
T3JpZ2luOjphcHByb3hpbWF0ZUhhc2goKSBjCiAgICAgICAgIGlmICghY29kZU9yaWdpbi5pbmxp
bmVDYWxsRnJhbWUpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAKKyAgICAg
ICAgaWYgKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay5nZXQo
KSA9PSB0ZXJtaW5hbCkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIAogICAg
ICAgICByZXN1bHQgKz0gV1RGOjpQdHJIYXNoPEpTQ2VsbCo+OjpoYXNoKGNvZGVPcmlnaW4uaW5s
aW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay5nZXQoKSk7CiAgICAgICAgIAogICAgICAg
ICBjb2RlT3JpZ2luID0gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmRpcmVjdENhbGxlcjsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAkocmV2
aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmln
aW4uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk0LDkgKzk0LDkgQEAgc3RydWN0IENvZGVPcmlnaW4g
ewogICAgIAogICAgIC8vIFRoaXMgY2hlY2tzIGlmIHRoZSB0d28gY29kZSBvcmlnaW5zIGNvcnJl
c3BvbmQgdG8gdGhlIHNhbWUgc3RhY2sgdHJhY2Ugc25pcHBldHMsCiAgICAgLy8gYnV0IGlnbm9y
ZSB3aGV0aGVyIHRoZSBJbmxpbmVDYWxsRnJhbWUncyBhcmUgaWRlbnRpY2FsLgotICAgIGJvb2wg
aXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhjb25zdCBDb2RlT3JpZ2luJiBvdGhlcikgY29uc3Q7Cisg
ICAgYm9vbCBpc0FwcHJveGltYXRlbHlFcXVhbFRvKGNvbnN0IENvZGVPcmlnaW4mIG90aGVyLCBD
b2RlQmxvY2sqIHRlcm1pbmFsID0gbnVsbHB0cikgY29uc3Q7CiAgICAgCi0gICAgdW5zaWduZWQg
YXBwcm94aW1hdGVIYXNoKCkgY29uc3Q7CisgICAgdW5zaWduZWQgYXBwcm94aW1hdGVIYXNoKENv
ZGVCbG9jayogdGVybWluYWwgPSBudWxscHRyKSBjb25zdDsKIAogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBGdW5jdGlvbj4KICAgICB2b2lkIHdhbGtVcElubGluZVN0YWNrKGNvbnN0IEZ1bmN0aW9u
Jik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0
UHJvZmlsZS5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDggKzQzLDEw
IEBAIEV4aXRQcm9maWxlOjp+RXhpdFByb2ZpbGUoKSB7IH0KIAogYm9vbCBFeGl0UHJvZmlsZTo6
YWRkKENvZGVCbG9jayogb3duZXIsIGNvbnN0IEZyZXF1ZW50RXhpdFNpdGUmIHNpdGUpCiB7Cisg
ICAgUkVMRUFTRV9BU1NFUlQoc2l0ZS5qaXRUeXBlKCkgIT0gRXhpdEZyb21Bbnl0aGluZyk7Cisg
ICAgUkVMRUFTRV9BU1NFUlQoc2l0ZS5pbmxpbmVLaW5kKCkgIT0gRXhpdEZyb21BbnlJbmxpbmVL
aW5kKTsKKwogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIob3duZXItPnVubGlua2VkQ29k
ZUJsb2NrKCktPm1fbG9jayk7Ci0gICAgQVNTRVJUKHNpdGUuaml0VHlwZSgpICE9IEV4aXRGcm9t
QW55dGhpbmcpOwogCiAgICAgQ09ERUJMT0NLX0xPR19FVkVOVChvd25lciwgImZyZXF1ZW50RXhp
dCIsIChzaXRlKSk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
REZHRXhpdFByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTQsIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJDb25jdXJyZW50SlNMb2NrLmgiCiAjaW5j
bHVkZSAiRXhpdEtpbmQuaCIKKyNpbmNsdWRlICJFeGl0aW5nSW5saW5lS2luZC5oIgogI2luY2x1
ZGUgIkV4aXRpbmdKSVRUeXBlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CkBAIC00MSw2ICs0Miw3IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX2J5
dGVjb2RlT2Zmc2V0KDApIC8vIDAgPSBlbXB0eSB2YWx1ZQogICAgICAgICAsIG1fa2luZChFeGl0
S2luZFVuc2V0KQogICAgICAgICAsIG1faml0VHlwZShFeGl0RnJvbUFueXRoaW5nKQorICAgICAg
ICAsIG1faW5saW5lS2luZChFeGl0RnJvbUFueUlubGluZUtpbmQpCiAgICAgewogICAgIH0KICAg
ICAKQEAgLTQ4LDEzICs1MCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9ieXRlY29kZU9mZnNl
dCgxKSAvLyAxID0gZGVsZXRlZCB2YWx1ZQogICAgICAgICAsIG1fa2luZChFeGl0S2luZFVuc2V0
KQogICAgICAgICAsIG1faml0VHlwZShFeGl0RnJvbUFueXRoaW5nKQorICAgICAgICAsIG1faW5s
aW5lS2luZChFeGl0RnJvbUFueUlubGluZUtpbmQpCiAgICAgewogICAgIH0KICAgICAKLSAgICBl
eHBsaWNpdCBGcmVxdWVudEV4aXRTaXRlKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBFeGl0S2lu
ZCBraW5kLCBFeGl0aW5nSklUVHlwZSBqaXRUeXBlID0gRXhpdEZyb21Bbnl0aGluZykKKyAgICBl
eHBsaWNpdCBGcmVxdWVudEV4aXRTaXRlKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBFeGl0S2lu
ZCBraW5kLCBFeGl0aW5nSklUVHlwZSBqaXRUeXBlID0gRXhpdEZyb21Bbnl0aGluZywgRXhpdGlu
Z0lubGluZUtpbmQgaW5saW5lS2luZCA9IEV4aXRGcm9tQW55SW5saW5lS2luZCkKICAgICAgICAg
OiBtX2J5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICAsIG1fa2luZChraW5k
KQogICAgICAgICAsIG1faml0VHlwZShqaXRUeXBlKQorICAgICAgICAsIG1faW5saW5lS2luZChp
bmxpbmVLaW5kKQogICAgIHsKICAgICAgICAgaWYgKG1fa2luZCA9PSBBcmd1bWVudHNFc2NhcGVk
KSB7CiAgICAgICAgICAgICAvLyBDb3VudCB0aGlzIG9uZSBnbG9iYWxseS4gSXQgZG9lc24ndCBt
YXR0ZXIgd2hlcmUgaW4gdGhlIGNvZGUgYmxvY2sgdGhlIGFyZ3VtZW50cyBleGNhcGVkOwpAQCAt
NjUsMTAgKzY5LDExIEBAIHB1YmxpYzoKICAgICAKICAgICAvLyBVc2UgdGhpcyBjb25zdHJ1Y3Rv
ciBpZiB5b3Ugd2lzaCBmb3IgdGhlIGV4aXQgc2l0ZSB0byBiZSBjb3VudGVkIGdsb2JhbGx5IHdp
dGhpbiBpdHMKICAgICAvLyBjb2RlIGJsb2NrLgotICAgIGV4cGxpY2l0IEZyZXF1ZW50RXhpdFNp
dGUoRXhpdEtpbmQga2luZCwgRXhpdGluZ0pJVFR5cGUgaml0VHlwZSA9IEV4aXRGcm9tQW55dGhp
bmcpCisgICAgZXhwbGljaXQgRnJlcXVlbnRFeGl0U2l0ZShFeGl0S2luZCBraW5kLCBFeGl0aW5n
SklUVHlwZSBqaXRUeXBlID0gRXhpdEZyb21Bbnl0aGluZywgRXhpdGluZ0lubGluZUtpbmQgaW5s
aW5lS2luZCA9IEV4aXRGcm9tQW55SW5saW5lS2luZCkKICAgICAgICAgOiBtX2J5dGVjb2RlT2Zm
c2V0KDApCiAgICAgICAgICwgbV9raW5kKGtpbmQpCiAgICAgICAgICwgbV9qaXRUeXBlKGppdFR5
cGUpCisgICAgICAgICwgbV9pbmxpbmVLaW5kKGlubGluZUtpbmQpCiAgICAgewogICAgIH0KICAg
ICAKQEAgLTgxLDcgKzg2LDggQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fYnl0
ZWNvZGVPZmZzZXQgPT0gb3RoZXIubV9ieXRlY29kZU9mZnNldAogICAgICAgICAgICAgJiYgbV9r
aW5kID09IG90aGVyLm1fa2luZAotICAgICAgICAgICAgJiYgbV9qaXRUeXBlID09IG90aGVyLm1f
aml0VHlwZTsKKyAgICAgICAgICAgICYmIG1faml0VHlwZSA9PSBvdGhlci5tX2ppdFR5cGUKKyAg
ICAgICAgICAgICYmIG1faW5saW5lS2luZCA9PSBvdGhlci5tX2lubGluZUtpbmQ7CiAgICAgfQog
ICAgIAogICAgIGJvb2wgc3Vic3VtZXMoY29uc3QgRnJlcXVlbnRFeGl0U2l0ZSYgb3RoZXIpIGNv
bnN0CkBAIC05MCwxOSArOTYsMjQgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICBpZiAobV9raW5kICE9IG90aGVyLm1fa2luZCkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgaWYgKG1faml0VHlwZSA9PSBFeGl0RnJvbUFueXRoaW5nKQotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIHJldHVybiBtX2ppdFR5cGUgPT0gb3RoZXIu
bV9qaXRUeXBlOworICAgICAgICBpZiAobV9qaXRUeXBlICE9IEV4aXRGcm9tQW55dGhpbmcKKyAg
ICAgICAgICAgICYmIG1faml0VHlwZSAhPSBvdGhlci5tX2ppdFR5cGUpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChtX2lubGluZUtpbmQgIT0gRXhpdEZyb21BbnlJbmxp
bmVLaW5kCisgICAgICAgICAgICAmJiBtX2lubGluZUtpbmQgIT0gb3RoZXIubV9pbmxpbmVLaW5k
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAgICAgCiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4g
V1RGOjppbnRIYXNoKG1fYnl0ZWNvZGVPZmZzZXQpICsgbV9raW5kICsgc3RhdGljX2Nhc3Q8c3Rk
Ojp1bmRlcmx5aW5nX3R5cGVfdDxFeGl0aW5nSklUVHlwZT4+KG1faml0VHlwZSkgKiA3OworICAg
ICAgICByZXR1cm4gV1RGOjppbnRIYXNoKG1fYnl0ZWNvZGVPZmZzZXQpICsgbV9raW5kICsgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG1faml0VHlwZSkgKiA3ICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG1faW5saW5lS2luZCkgKiAxMTsKICAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX2J5dGVjb2RlT2Zmc2V0OyB9CiAgICAgRXhpdEtpbmQg
a2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQogICAgIEV4aXRpbmdKSVRUeXBlIGppdFR5
cGUoKSBjb25zdCB7IHJldHVybiBtX2ppdFR5cGU7IH0KKyAgICBFeGl0aW5nSW5saW5lS2luZCBp
bmxpbmVLaW5kKCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVLaW5kOyB9CiAgICAgCiAgICAgRnJl
cXVlbnRFeGl0U2l0ZSB3aXRoSklUVHlwZShFeGl0aW5nSklUVHlwZSBqaXRUeXBlKSBjb25zdAog
ICAgIHsKQEAgLTExMSw2ICsxMjIsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KIAorICAgIEZyZXF1ZW50RXhpdFNpdGUgd2l0aElubGluZUtpbmQoRXhpdGluZ0lu
bGluZUtpbmQgaW5saW5lS2luZCkgY29uc3QKKyAgICB7CisgICAgICAgIEZyZXF1ZW50RXhpdFNp
dGUgcmVzdWx0ID0gKnRoaXM7CisgICAgICAgIHJlc3VsdC5tX2lubGluZUtpbmQgPSBpbmxpbmVL
aW5kOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwogICAgIGJvb2wgaXNIYXNoVGFi
bGVEZWxldGVkVmFsdWUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBF
eGl0S2luZFVuc2V0ICYmIG1fYnl0ZWNvZGVPZmZzZXQ7CkBAIC0xMjIsNiArMTQwLDcgQEAgcHJp
dmF0ZToKICAgICB1bnNpZ25lZCBtX2J5dGVjb2RlT2Zmc2V0OwogICAgIEV4aXRLaW5kIG1fa2lu
ZDsKICAgICBFeGl0aW5nSklUVHlwZSBtX2ppdFR5cGU7CisgICAgRXhpdGluZ0lubGluZUtpbmQg
bV9pbmxpbmVLaW5kOwogfTsKIAogc3RydWN0IEZyZXF1ZW50RXhpdFNpdGVIYXNoIHsKQEAgLTE5
MiwxMCArMjExLDEwIEBAIHB1YmxpYzoKICAgICBib29sIGhhc0V4aXRTaXRlKGNvbnN0IEZyZXF1
ZW50RXhpdFNpdGUmIHNpdGUpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoc2l0ZS5qaXRUeXBl
KCkgPT0gRXhpdEZyb21Bbnl0aGluZykgewotICAgICAgICAgICAgcmV0dXJuIGhhc0V4aXRTaXRl
KHNpdGUud2l0aEpJVFR5cGUoRXhpdEZyb21ERkcpKQotICAgICAgICAgICAgICAgIHx8IGhhc0V4
aXRTaXRlKHNpdGUud2l0aEpJVFR5cGUoRXhpdEZyb21GVEwpKTsKKyAgICAgICAgICAgIHJldHVy
biBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0pJVFR5cGUoc2l0ZS53aXRoSklUVHlwZShFeGl0RnJv
bURGRykpCisgICAgICAgICAgICAgICAgfHwgaGFzRXhpdFNpdGVXaXRoU3BlY2lmaWNKSVRUeXBl
KHNpdGUud2l0aEpJVFR5cGUoRXhpdEZyb21GVEwpKTsKICAgICAgICAgfQotICAgICAgICByZXR1
cm4gbV9mcmVxdWVudEV4aXRTaXRlcy5maW5kKHNpdGUpICE9IG1fZnJlcXVlbnRFeGl0U2l0ZXMu
ZW5kKCk7CisgICAgICAgIHJldHVybiBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0pJVFR5cGUoc2l0
ZSk7CiAgICAgfQogICAgIAogICAgIGJvb2wgaGFzRXhpdFNpdGUoRXhpdEtpbmQga2luZCkgY29u
c3QKQEAgLTIwOCw2ICsyMjcsMjAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gaGFzRXhpdFNp
dGUoRnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBraW5kKSk7CiAgICAgfQogcHJpdmF0
ZToKKyAgICBib29sIGhhc0V4aXRTaXRlV2l0aFNwZWNpZmljSklUVHlwZShjb25zdCBGcmVxdWVu
dEV4aXRTaXRlJiBzaXRlKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKHNpdGUuaW5saW5lS2lu
ZCgpID09IEV4aXRGcm9tQW55SW5saW5lS2luZCkgeworICAgICAgICAgICAgcmV0dXJuIGhhc0V4
aXRTaXRlV2l0aFNwZWNpZmljSW5saW5lS2luZChzaXRlLndpdGhJbmxpbmVLaW5kKEV4aXRGcm9t
Tm90SW5saW5lZCkpCisgICAgICAgICAgICAgICAgfHwgaGFzRXhpdFNpdGVXaXRoU3BlY2lmaWNJ
bmxpbmVLaW5kKHNpdGUud2l0aElubGluZUtpbmQoRXhpdEZyb21JbmxpbmVkKSk7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIGhhc0V4aXRTaXRlV2l0aFNwZWNpZmljSW5saW5lS2luZChzaXRl
KTsKKyAgICB9CisgICAgCisgICAgYm9vbCBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0lubGluZUtp
bmQoY29uc3QgRnJlcXVlbnRFeGl0U2l0ZSYgc2l0ZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2ZyZXF1ZW50RXhpdFNpdGVzLmZpbmQoc2l0ZSkgIT0gbV9mcmVxdWVudEV4aXRTaXRl
cy5lbmQoKTsKKyAgICB9CisgICAgCiAgICAgSGFzaFNldDxGcmVxdWVudEV4aXRTaXRlPiBtX2Zy
ZXF1ZW50RXhpdFNpdGVzOwogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0V4aXRGbGFnLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRXhpdEZsYWcuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGl0RmxhZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiRXhpdEZsYWcuaCIKKworI2luY2x1ZGUgPHd0Zi9Db21tYVBy
aW50ZXIuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgRXhpdEZsYWc6OmR1bXAoUHJpbnRT
dHJlYW0mIG91dCkgY29uc3QKK3sKKyAgICBpZiAoIW1fYml0cykgeworICAgICAgICBvdXQucHJp
bnQoImZhbHNlIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgQ29tbWFQcmlu
dGVyIGNvbW1hKCJ8Iik7CisgICAgaWYgKGlzU2V0KEV4aXRGcm9tTm90SW5saW5lZCkpCisgICAg
ICAgIG91dC5wcmludChjb21tYSwgIm5vdElubGluZWQiKTsKKyAgICBpZiAoaXNTZXQoRXhpdEZy
b21JbmxpbmVkKSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiaW5saW5lZCIpOworfQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V4aXRGbGFnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V4aXRGbGFnLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0V4aXRGbGFnLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJFeGl0aW5nSW5saW5lS2luZC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3Mg
RXhpdEZsYWcgeworcHVibGljOgorICAgIEV4aXRGbGFnKCkgeyB9CisgICAgCisgICAgRXhpdEZs
YWcoYm9vbCB2YWx1ZSwgRXhpdGluZ0lubGluZUtpbmQgaW5saW5lS2luZCkKKyAgICB7CisgICAg
ICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgICAgICBz
d2l0Y2ggKGlubGluZUtpbmQpIHsKKyAgICAgICAgY2FzZSBFeGl0RnJvbUFueUlubGluZUtpbmQ6
CisgICAgICAgICAgICBtX2JpdHMgPSB0cnVlTm90SW5saW5lZCB8IHRydWVJbmxpbmVkOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRXhpdEZyb21Ob3RJbmxpbmVkOgorICAgICAg
ICAgICAgbV9iaXRzID0gdHJ1ZU5vdElubGluZWQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBFeGl0RnJvbUlubGluZWQ6CisgICAgICAgICAgICBtX2JpdHMgPSB0cnVlSW5saW5l
ZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIEV4aXRG
bGFnIG9wZXJhdG9yfChjb25zdCBFeGl0RmxhZyYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAg
ICBFeGl0RmxhZyByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5tX2JpdHMgPSBtX2JpdHMgfCBvdGhl
ci5tX2JpdHM7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIEV4aXRG
bGFnJiBvcGVyYXRvcnw9KGNvbnN0IEV4aXRGbGFnJiBvdGhlcikKKyAgICB7CisgICAgICAgICp0
aGlzID0gKnRoaXMgfCBvdGhlcjsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKyAgICAK
KyAgICBFeGl0RmxhZyBvcGVyYXRvciYoY29uc3QgRXhpdEZsYWcmIG90aGVyKSBjb25zdAorICAg
IHsKKyAgICAgICAgRXhpdEZsYWcgcmVzdWx0OworICAgICAgICByZXN1bHQubV9iaXRzID0gbV9i
aXRzICYgb3RoZXIubV9iaXRzOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAK
KyAgICBFeGl0RmxhZyYgb3BlcmF0b3ImPShjb25zdCBFeGl0RmxhZyYgb3RoZXIpCisgICAgewor
ICAgICAgICAqdGhpcyA9ICp0aGlzICYgb3RoZXI7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAg
ICB9CisgICAgCisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gISFtX2JpdHM7CisgICAgfQorICAgIAorICAgIGJvb2wgaXNTZXQoRXhpdGlu
Z0lubGluZUtpbmQgaW5saW5lS2luZCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhISgq
dGhpcyAmIEV4aXRGbGFnKHRydWUsIGlubGluZUtpbmQpKTsKKyAgICB9CisgICAgCisgICAgdm9p
ZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisgICAgCitwcml2YXRlOgorICAgIHN0YXRpYyBj
b25zdGV4cHIgdWludDhfdCB0cnVlTm90SW5saW5lZCA9IDE7CisgICAgc3RhdGljIGNvbnN0ZXhw
ciB1aW50OF90IHRydWVJbmxpbmVkID0gMjsKKyAgICAKKyAgICB1aW50OF90IG1fYml0cyB7IDAg
fTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0aW5nSW5saW5lS2luZC5jcHAJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRpbmdJbmxpbmVLaW5kLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJF
eGl0aW5nSW5saW5lS2luZC5oIgorCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisKK25h
bWVzcGFjZSBXVEYgeworCit1c2luZyBuYW1lc3BhY2UgSlNDOworCit2b2lkIHByaW50SW50ZXJu
YWwoUHJpbnRTdHJlYW0mIG91dCwgRXhpdGluZ0lubGluZUtpbmQgdHlwZSkKK3sKKyAgICBzd2l0
Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEV4aXRGcm9tQW55SW5saW5lS2luZDoKKyAgICAgICAgb3V0
LnByaW50KCJGcm9tQW55SW5saW5lS2luZCIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBF
eGl0RnJvbU5vdElubGluZWQ6CisgICAgICAgIG91dC5wcmludCgiRnJvbU5vdElubGluZWQiKTsK
KyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRXhpdEZyb21JbmxpbmVkOgorICAgICAgICBvdXQu
cHJpbnQoIkZyb21JbmxpbmVkIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0aW5nSW5saW5lS2luZC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0aW5nSW5saW5lS2lu
ZC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0
aW5nSW5saW5lS2luZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25h
bWVzcGFjZSBKU0MgeworCitlbnVtIEV4aXRpbmdJbmxpbmVLaW5kIDogdWludDhfdCB7CisgICAg
RXhpdEZyb21BbnlJbmxpbmVLaW5kLAorICAgIEV4aXRGcm9tTm90SW5saW5lZCwKKyAgICBFeGl0
RnJvbUlubGluZWQsCit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdURiB7
CisKK2NsYXNzIFByaW50U3RyZWFtOwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiwg
SlNDOjpFeGl0aW5nSW5saW5lS2luZCk7CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNw
cAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxNiArNTEsNiBAQCBib29sIEdl
dEJ5SWRTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3QgCiAgICAgcmV0dXJuIGFwcGVuZElDU3Rh
dHVzVmFyaWFudChtX3ZhcmlhbnRzLCB2YXJpYW50KTsKIH0KIAotI2lmIEVOQUJMRShERkdfSklU
KQotYm9vbCBHZXRCeUlkU3RhdHVzOjpoYXNFeGl0U2l0ZShDb2RlQmxvY2sqIHByb2ZpbGVkQmxv
Y2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCi17Ci0gICAgVW5saW5rZWRDb2RlQmxvY2sqIHVu
bGlua2VkQ29kZUJsb2NrID0gcHJvZmlsZWRCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKTsKLSAg
ICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHVubGlua2VkQ29kZUJsb2NrLT5tX2xvY2spOwot
ICAgIHJldHVybiB1bmxpbmtlZENvZGVCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZy
ZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkQ2FjaGUpKQotICAgICAgICB8fCB1bmxp
bmtlZENvZGVCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUo
Ynl0ZWNvZGVJbmRleCwgQmFkQ29uc3RhbnRDYWNoZSkpOwotfQotI2VuZGlmCi0KIEdldEJ5SWRT
dGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2ZpbGVk
QmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7
CiAgICAgVk0mIHZtID0gKnByb2ZpbGVkQmxvY2stPnZtKCk7CkBAIC0xMDUsNyArOTUsNyBAQCBH
ZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tCiAgICAgfQogfQogCi1HZXRC
eUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJs
b2NrLCBTdHViSW5mb01hcCYgbWFwLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3Ry
aW5nSW1wbCogdWlkKQorR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENv
ZGVCbG9jayogcHJvZmlsZWRCbG9jaywgSUNTdGF0dXNNYXAmIG1hcCwgdW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgRXhpdEZsYWcgZGlkRXhpdCwgQ2FsbExp
bmtTdGF0dXM6OkV4aXRTaXRlRGF0YSBjYWxsRXhpdFNpdGVEYXRhKQogewogICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKIApAQCAtMTEzLDEyICsx
MDMsMTEgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogCiAjaWYg
RU5BQkxFKERGR19KSVQpCiAgICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4
aXRTaXRlRmVlZGJhY2soCi0gICAgICAgIGxvY2tlciwgcHJvZmlsZWRCbG9jaywgbWFwLmdldChD
b2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgpKSwgdWlkLAotICAgICAgICBDYWxsTGlua1N0YXR1czo6
Y29tcHV0ZUV4aXRTaXRlRGF0YShwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4KSk7CisgICAg
ICAgIGxvY2tlciwgcHJvZmlsZWRCbG9jaywgbWFwLmdldChDb2RlT3JpZ2luKGJ5dGVjb2RlSW5k
ZXgpKS5zdHViSW5mbywgdWlkLAorICAgICAgICBjYWxsRXhpdFNpdGVEYXRhKTsKICAgICAKLSAg
ICBpZiAoIXJlc3VsdC50YWtlc1Nsb3dQYXRoKCkKLSAgICAgICAgJiYgaGFzRXhpdFNpdGUocHJv
ZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCkpCi0gICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVz
KHJlc3VsdC5tYWtlc0NhbGxzKCkgPyBNYWtlc0NhbGxzIDogVGFrZXNTbG93UGF0aCwgdHJ1ZSk7
CisgICAgaWYgKGRpZEV4aXQpCisgICAgICAgIHJldHVybiByZXN1bHQuc2xvd1ZlcnNpb24oKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG1hcCk7CiAjZW5kaWYKQEAgLTEzNiw4ICsxMjUsOCBA
QCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTCiAgICAgICAgIGxvY2tl
ciwgcHJvZmlsZWRCbG9jaywgc3R1YkluZm8sIHVpZCwKICAgICAgICAgQ2FsbExpbmtTdGF0dXM6
OmNvbXB1dGVFeGl0U2l0ZURhdGEocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUlu
ZGV4KSk7CiAKLSAgICBpZiAoIXJlc3VsdC50YWtlc1Nsb3dQYXRoKCkgJiYgR2V0QnlJZFN0YXR1
czo6aGFzRXhpdFNpdGUocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KSkK
LSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMocmVzdWx0Lm1ha2VzQ2FsbHMoKSA/IEdldEJ5
SWRTdGF0dXM6Ok1ha2VzQ2FsbHMgOiBHZXRCeUlkU3RhdHVzOjpUYWtlc1Nsb3dQYXRoLCB0cnVl
KTsKKyAgICBpZiAoIXJlc3VsdC50YWtlc1Nsb3dQYXRoKCkgJiYgaGFzQmFkQ2FjaGVFeGl0U2l0
ZShwcm9maWxlZEJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpKQorICAgICAgICByZXR1
cm4gcmVzdWx0LnNsb3dWZXJzaW9uKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KICNlbmRpZiAv
LyBFTkFCTEUoREZHX0pJVCkKQEAgLTMxNCw0MCArMzAzLDMyIEBAIEdldEJ5SWRTdGF0dXMgR2V0
QnlJZFN0YXR1czo6Y29tcHV0ZUZvclMKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCiBHZXRCeUlk
U3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgQ29kZUJsb2NrKiBwcm9maWxl
ZEJsb2NrLCBDb2RlQmxvY2sqIGRmZ0Jsb2NrLCBTdHViSW5mb01hcCYgYmFzZWxpbmVNYXAsCi0g
ICAgU3R1YkluZm9NYXAmIGRmZ01hcCwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBVbmlxdWVkU3Ry
aW5nSW1wbCogdWlkKQorICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgSUNTdGF0dXNNYXAm
IGJhc2VsaW5lTWFwLAorICAgIElDU3RhdHVzQ29udGV4dFN0YWNrJiBpY0NvbnRleHRTdGFjaywg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogewotI2lmIEVO
QUJMRShERkdfSklUKQotICAgIGlmIChkZmdCbG9jaykgewotICAgICAgICBDYWxsTGlua1N0YXR1
czo6RXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YTsKLSAgICAgICAgewotICAgICAgICAgICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcihwcm9maWxlZEJsb2NrLT5tX2xvY2spOwotICAgICAgICAg
ICAgZXhpdFNpdGVEYXRhID0gQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVFeGl0U2l0ZURhdGEoCi0g
ICAgICAgICAgICAgICAgcHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsK
LSAgICAgICAgfQorICAgIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgY2FsbEV4aXRTaXRl
RGF0YSA9CisgICAgICAgIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKHByb2Zp
bGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7CisgICAgRXhpdEZsYWcgZGlkRXhp
dCA9IGhhc0JhZENhY2hlRXhpdFNpdGUocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29k
ZUluZGV4KTsKKyAgICAKKyAgICBmb3IgKElDU3RhdHVzQ29udGV4dCogY29udGV4dCA6IGljQ29u
dGV4dFN0YWNrKSB7CisgICAgICAgIElDU3RhdHVzIHN0YXR1cyA9IGNvbnRleHQtPmdldChjb2Rl
T3JpZ2luKTsKICAgICAgICAgCi0gICAgICAgIEdldEJ5SWRTdGF0dXMgcmVzdWx0OwotICAgICAg
ICB7Ci0gICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGRmZ0Jsb2NrLT5tX2xv
Y2spOwotICAgICAgICAgICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRT
aXRlRmVlZGJhY2soCi0gICAgICAgICAgICAgICAgbG9ja2VyLCBkZmdCbG9jaywgZGZnTWFwLmdl
dChjb2RlT3JpZ2luKSwgdWlkLCBleGl0U2l0ZURhdGEpOworICAgICAgICBpZiAoc3RhdHVzLnN0
dWJJbmZvKSB7CisgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvbnRleHQt
Pm9wdGltaXplZENvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgIEdldEJ5SWRTdGF0dXMg
cmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCisgICAg
ICAgICAgICAgICAgbG9ja2VyLCBjb250ZXh0LT5vcHRpbWl6ZWRDb2RlQmxvY2ssIHN0YXR1cy5z
dHViSW5mbywgdWlkLCBjYWxsRXhpdFNpdGVEYXRhKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQu
aXNTZXQoKSkgeworICAgICAgICAgICAgICAgIGlmIChkaWRFeGl0LmlzU2V0KGNvbnRleHQtPmlu
bGluZUtpbmQoY29kZU9yaWdpbikpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
LnNsb3dWZXJzaW9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQotCi0gICAgICAgIGlmIChyZXN1bHQudGFrZXNTbG93UGF0aCgpKQot
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAKLSAgICAgICAgaWYgKGhhc0V4aXRTaXRl
KHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkpCi0gICAgICAgICAgICBy
ZXR1cm4gR2V0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCB0cnVlKTsKICAgICAgICAgCi0gICAg
ICAgIGlmIChyZXN1bHQuaXNTZXQoKSkKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
ICAgIGlmIChzdGF0dXMuZ2V0U3RhdHVzKQorICAgICAgICAgICAgcmV0dXJuICpzdGF0dXMuZ2V0
U3RhdHVzOwogICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGRmZ0Jsb2NrKTsKLSAgICBV
TlVTRURfUEFSQU0oZGZnTWFwKTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIGNvbXB1dGVGb3IocHJv
ZmlsZWRCbG9jaywgYmFzZWxpbmVNYXAsIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgdWlkKTsK
KyAgICAgICAgCisgICAgcmV0dXJuIGNvbXB1dGVGb3IocHJvZmlsZWRCbG9jaywgYmFzZWxpbmVN
YXAsIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgdWlkLCBkaWRFeGl0LCBjYWxsRXhpdFNpdGVE
YXRhKTsKIH0KIAogR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKGNvbnN0
IFN0cnVjdHVyZVNldCYgc2V0LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQpAQCAtNDE0LDYgKzM5
NSwxMSBAQCBib29sIEdldEJ5SWRTdGF0dXM6Om1ha2VzQ2FsbHMoKSBjb25zdAogICAgIHJldHVy
biBmYWxzZTsKIH0KIAorR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpzbG93VmVyc2lvbigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMobWFrZXNDYWxscygpID8gTWFrZXND
YWxscyA6IFRha2VzU2xvd1BhdGgsIHdhc1NlZW5JbkpJVCgpKTsKK30KKwogdm9pZCBHZXRCeUlk
U3RhdHVzOjpmaWx0ZXIoY29uc3QgU3RydWN0dXJlU2V0JiBzZXQpCiB7CiAgICAgaWYgKG1fc3Rh
dGUgIT0gU2ltcGxlKQpAQCAtNDIzLDYgKzQwOSwyNSBAQCB2b2lkIEdldEJ5SWRTdGF0dXM6OmZp
bHRlcihjb25zdCBTdHJ1Y3R1CiAgICAgICAgIG1fc3RhdGUgPSBOb0luZm9ybWF0aW9uOwogfQog
Cit2b2lkIEdldEJ5SWRTdGF0dXM6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQor
eworICAgIGZvciAoR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKQorICAgICAg
ICB2YXJpYW50Lm1hcmtJZkNoZWFwKHZpc2l0b3IpOworfQorCitib29sIEdldEJ5SWRTdGF0dXM6
OmZpbmFsaXplKCkKK3sKKyAgICBmb3IgKEdldEJ5SWRWYXJpYW50JiB2YXJpYW50IDogbV92YXJp
YW50cykgeworICAgICAgICBpZiAoIXZhcmlhbnQuZmluYWxpemUoKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0ICYmICFI
ZWFwOjppc01hcmtlZChtX21vZHVsZU5hbWVzcGFjZU9iamVjdCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAobV9tb2R1bGVFbnZpcm9ubWVudCAmJiAhSGVhcDo6aXNNYXJrZWQobV9t
b2R1bGVFbnZpcm9ubWVudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwogdm9pZCBHZXRCeUlkU3RhdHVzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0
CiB7CiAgICAgb3V0LnByaW50KCIoIik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDcgKzI4LDkgQEAKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgogI2luY2x1ZGUgIkNv
ZGVPcmlnaW4uaCIKICNpbmNsdWRlICJDb25jdXJyZW50SlNMb2NrLmgiCisjaW5jbHVkZSAiRXhp
dEZsYWcuaCIKICNpbmNsdWRlICJHZXRCeUlkVmFyaWFudC5oIgorI2luY2x1ZGUgIklDU3RhdHVz
TWFwLmgiCiAjaW5jbHVkZSAiU2NvcGVPZmZzZXQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00
MCw4ICs0Miw2IEBAIGNsYXNzIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OwogY2xhc3MgTW9kdWxl
TmFtZXNwYWNlQWNjZXNzQ2FzZTsKIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOwogCi10eXBlZGVm
IEhhc2hNYXA8Q29kZU9yaWdpbiwgU3RydWN0dXJlU3R1YkluZm8qLCBDb2RlT3JpZ2luQXBwcm94
aW1hdGVIYXNoPiBTdHViSW5mb01hcDsKLQogY2xhc3MgR2V0QnlJZFN0YXR1cyB7CiBwdWJsaWM6
CiAgICAgZW51bSBTdGF0ZSB7CkBAIC04MSwxMCArODEsMTAgQEAgcHVibGljOgogICAgICAgICBt
X3ZhcmlhbnRzLmFwcGVuZCh2YXJpYW50KTsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIEdldEJ5
SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCBTdHViSW5mb01hcCYsIHVuc2lnbmVkIGJ5
dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOworICAgIHN0YXRpYyBHZXRCeUlk
U3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgSUNTdGF0dXNNYXAmLCB1bnNpZ25lZCBieXRl
Y29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBFeGl0RmxhZywgQ2FsbExpbmtTdGF0
dXM6OkV4aXRTaXRlRGF0YSk7CiAgICAgc3RhdGljIEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihj
b25zdCBTdHJ1Y3R1cmVTZXQmLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKICAgICAKLSAgICBz
dGF0aWMgR2V0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywg
Q29kZUJsb2NrKiBkZmdCbG9jaywgU3R1YkluZm9NYXAmIGJhc2VsaW5lTWFwLCBTdHViSW5mb01h
cCYgZGZnTWFwLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKKyAgICBzdGF0
aWMgR2V0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNT
dGF0dXNNYXAmIGJhc2VsaW5lTWFwLCBJQ1N0YXR1c0NvbnRleHRTdGFjayYgZGZnQ29udGV4dFN0
YWNrLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKIAogI2lmIEVOQUJMRShE
RkdfSklUKQogICAgIHN0YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mbyhjb25z
dCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIFN0cnVjdHVy
ZVN0dWJJbmZvKiwgQ29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7CkBAIC0xMDYs
NiArMTA2LDggQEAgcHVibGljOgogICAgIGJvb2wgdGFrZXNTbG93UGF0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3RhdGUgPT0gVGFrZXNTbG93UGF0aCB8fCBtX3N0YXRlID09IE1ha2VzQ2FsbHMgfHwg
bV9zdGF0ZSA9PSBDdXN0b20gfHwgbV9zdGF0ZSA9PSBNb2R1bGVOYW1lc3BhY2U7IH0KICAgICBi
b29sIG1ha2VzQ2FsbHMoKSBjb25zdDsKICAgICAKKyAgICBHZXRCeUlkU3RhdHVzIHNsb3dWZXJz
aW9uKCkgY29uc3Q7CisgICAgCiAgICAgYm9vbCB3YXNTZWVuSW5KSVQoKSBjb25zdCB7IHJldHVy
biBtX3dhc1NlZW5JbkpJVDsgfQogICAgIAogICAgIC8vIEF0dGVtcHRzIHRvIHJlZHVjZSB0aGUg
c2V0IG9mIHZhcmlhbnRzIHRvIGZpdCB0aGUgZ2l2ZW4gc3RydWN0dXJlIHNldC4gVGhpcyBtYXkg
YmUgYXBwcm94aW1hdGUuCkBAIC0xMTUsMTIgKzExNywxMiBAQCBwdWJsaWM6CiAgICAgSlNNb2R1
bGVFbnZpcm9ubWVudCogbW9kdWxlRW52aXJvbm1lbnQoKSBjb25zdCB7IHJldHVybiBtX21vZHVs
ZUVudmlyb25tZW50OyB9CiAgICAgU2NvcGVPZmZzZXQgc2NvcGVPZmZzZXQoKSBjb25zdCB7IHJl
dHVybiBtX3Njb3BlT2Zmc2V0OyB9CiAgICAgCisgICAgdm9pZCBtYXJrSWZDaGVhcChTbG90Vmlz
aXRvciYpOworICAgIGJvb2wgZmluYWxpemUoKTsgLy8gUmV0dXJuIHRydWUgaWYgdGhpcyBnZXRz
IHRvIGxpdmUuCisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAg
CiBwcml2YXRlOgotI2lmIEVOQUJMRShERkdfSklUKQotICAgIHN0YXRpYyBib29sIGhhc0V4aXRT
aXRlKENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwotI2VuZGlmCiAjaWYgRU5B
QkxFKEpJVCkKICAgICBHZXRCeUlkU3RhdHVzKGNvbnN0IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nh
c2UmKTsKICAgICBzdGF0aWMgR2V0QnlJZFN0YXR1cyBjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0
RXhpdFNpdGVGZWVkYmFjaygKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9H
ZXRCeUlkVmFyaWFudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTM1LDYgKzEzNSwyNCBAQCBib29sIEdldEJ5SWRWYXJpYW50OjphdHRlbXB0VG9NZXJnZShj
b25zCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgR2V0QnlJZFZhcmlhbnQ6Om1hcmtJZkNo
ZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIG1fc3RydWN0dXJlU2V0Lm1hcmtJZkNo
ZWFwKHZpc2l0b3IpOworfQorCitib29sIEdldEJ5SWRWYXJpYW50OjpmaW5hbGl6ZSgpCit7Cisg
ICAgaWYgKCFtX3N0cnVjdHVyZVNldC5pc1N0aWxsQWxpdmUoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmICghbV9jb25kaXRpb25TZXQuYXJlU3RpbGxMaXZlKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAobV9jYWxsTGlua1N0YXR1cyAmJiAhbV9jYWxsTGlua1N0YXR1
cy0+ZmluYWxpemUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2ludHJpbnNp
Y0Z1bmN0aW9uICYmICFIZWFwOjppc01hcmtlZChtX2ludHJpbnNpY0Z1bmN0aW9uKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIEdldEJ5SWRWYXJp
YW50OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgZHVtcEluQ29udGV4dChv
dXQsIDApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJp
YW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5
SWRWYXJpYW50LmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9HZXRCeUlkVmFyaWFudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw2ICs3Myw5IEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgYXR0ZW1wdFRvTWVyZ2UoY29uc3QgR2V0QnlJZFZhcmlhbnQm
IG90aGVyKTsKICAgICAKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7CisgICAg
Ym9vbCBmaW5hbGl6ZSgpOworICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0
OwogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0KikgY29u
c3Q7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNN
YXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0
YXR1c01hcC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0lDU3RhdHVzTWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgorCisjaW5jbHVkZSAiSW5saW5lQ2FsbEZy
YW1lLmgiCisjaW5jbHVkZSAiVGVybWluYXRlZENvZGVPcmlnaW4uaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK0lDU3RhdHVzIElDU3RhdHVzQ29udGV4dDo6Z2V0KENvZGVPcmlnaW4gY29kZU9yaWdp
bikgY29uc3QKK3sKKyAgICByZXR1cm4gbWFwLmdldDxUZXJtaW5hdGVkQ29kZU9yaWdpbkhhc2hU
cmFuc2xhdG9yPigKKyAgICAgICAgVGVybWluYXRlZENvZGVPcmlnaW4oY29kZU9yaWdpbiwgYmFz
ZWxpbmVDb2RlQmxvY2spKTsKK30KKworYm9vbCBJQ1N0YXR1c0NvbnRleHQ6OmlzSW5saW5lZChD
b2RlT3JpZ2luIGNvZGVPcmlnaW4pIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvZGVPcmlnaW4uaW5s
aW5lQ2FsbEZyYW1lICYmIGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVC
bG9jay5nZXQoKSAhPSBiYXNlbGluZUNvZGVCbG9jazsKK30KKworRXhpdGluZ0lubGluZUtpbmQg
SUNTdGF0dXNDb250ZXh0OjppbmxpbmVLaW5kKENvZGVPcmlnaW4gY29kZU9yaWdpbikgY29uc3QK
K3sKKyAgICByZXR1cm4gaXNJbmxpbmVkKGNvZGVPcmlnaW4pID8gRXhpdEZyb21JbmxpbmVkIDog
RXhpdEZyb21Ob3RJbmxpbmVkOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFwLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFwLmgJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFwLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIK
KyNpbmNsdWRlICJFeGl0aW5nSW5saW5lS2luZC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBDYWxsTGlua0luZm87CitjbGFzcyBDYWxsTGlu
a1N0YXR1czsKK2NsYXNzIENvZGVCbG9jazsKK2NsYXNzIEdldEJ5SWRTdGF0dXM7CitjbGFzcyBQ
dXRCeUlkU3RhdHVzOworY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CitzdHJ1Y3QgQnlWYWxJbmZv
OworCitzdHJ1Y3QgSUNTdGF0dXMgeworICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyB7
IG51bGxwdHIgfTsKKyAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyB7IG51bGxwdHIgfTsK
KyAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyB7IG51bGxwdHIgfTsKKyAgICBDYWxsTGlua1N0YXR1
cyogY2FsbFN0YXR1cyB7IG51bGxwdHIgfTsKKyAgICBHZXRCeUlkU3RhdHVzKiBnZXRTdGF0dXMg
eyBudWxscHRyIH07CisgICAgUHV0QnlJZFN0YXR1cyogcHV0U3RhdHVzIHsgbnVsbHB0ciB9Owor
fTsKKwordHlwZWRlZiBIYXNoTWFwPENvZGVPcmlnaW4sIElDU3RhdHVzLCBDb2RlT3JpZ2luQXBw
cm94aW1hdGVIYXNoPiBJQ1N0YXR1c01hcDsKKworc3RydWN0IElDU3RhdHVzQ29udGV4dCB7Cisg
ICAgSUNTdGF0dXMgZ2V0KENvZGVPcmlnaW4pIGNvbnN0OworICAgIGJvb2wgaXNJbmxpbmVkKENv
ZGVPcmlnaW4pIGNvbnN0OworICAgIEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQoQ29kZU9y
aWdpbikgY29uc3Q7CisgICAgCisgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayB7IG51
bGxwdHIgfTsKKyAgICBDb2RlQmxvY2sqIG9wdGltaXplZENvZGVCbG9jayB7IG51bGxwdHIgfTsK
KyAgICBJQ1N0YXR1c01hcCBtYXA7Cit9OworCit0eXBlZGVmIFZlY3RvcjxJQ1N0YXR1c0NvbnRl
eHQqLCA4PiBJQ1N0YXR1c0NvbnRleHRTdGFjazsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c1V0aWxzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNVdGlscy5j
cHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3Rh
dHVzVXRpbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIklDU3RhdHVzVXRpbHMuaCIKKworI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2lu
Y2x1ZGUgIkV4aXRGbGFnLmgiCisjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK0V4aXRGbGFnIGhhc0JhZENhY2hlRXhpdFNpdGUoQ29kZUJsb2NrKiBw
cm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQoreworI2lmIEVOQUJMRShERkdf
SklUKQorICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IHByb2ZpbGVk
QmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCk7CisgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cih1bmxpbmtlZENvZGVCbG9jay0+bV9sb2NrKTsKKyAgICBhdXRvIGV4aXRGbGFnID0gWyZdIChF
eGl0S2luZCBleGl0S2luZCkgLT4gRXhpdEZsYWcgeworICAgICAgICBhdXRvIHdpdGhJbmxpbmVk
ID0gWyZdIChFeGl0aW5nSW5saW5lS2luZCBpbmxpbmVLaW5kKSAtPiBFeGl0RmxhZyB7CisgICAg
ICAgICAgICByZXR1cm4gRXhpdEZsYWcodW5saW5rZWRDb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxv
Y2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIGV4aXRLaW5kLCBFeGl0
RnJvbUFueXRoaW5nLCBpbmxpbmVLaW5kKSksIGlubGluZUtpbmQpOworICAgICAgICB9OworICAg
ICAgICByZXR1cm4gd2l0aElubGluZWQoRXhpdEZyb21Ob3RJbmxpbmVkKSB8IHdpdGhJbmxpbmVk
KEV4aXRGcm9tSW5saW5lZCk7CisgICAgfTsKKyAgICByZXR1cm4gZXhpdEZsYWcoQmFkQ2FjaGUp
IHwgZXhpdEZsYWcoQmFkQ29uc3RhbnRDYWNoZSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShw
cm9maWxlZEJsb2NrKTsKKyAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CisgICAgcmV0
dXJuIEV4aXRGbGFnKCk7CisjZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c1V0aWxzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzVXRpbHMuaAkocmV2
aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVz
VXRpbHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UK
IAorI2luY2x1ZGUgIkV4aXRGbGFnLmgiCisKIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBWYXJpYW50VmVjdG9yVHlwZSwgdHlwZW5hbWUgVmFyaWFudFR5cGU+CkBAIC01OSw1
ICs2MSw3IEBAIHZvaWQgZmlsdGVySUNTdGF0dXNWYXJpYW50cyhWYXJpYW50VmVjdG8KICAgICAg
ICAgfSk7CiB9CiAKK0V4aXRGbGFnIGhhc0JhZENhY2hlRXhpdFNpdGUoQ29kZUJsb2NrKiBwcm9m
aWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKwogfSAvLyBuYW1lc3BhY2UgSlND
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mU3RhdHVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFu
Y2VPZlN0YXR1cy5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbnN0YW5jZU9mU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksMTMg
KzM5LDEzIEBAIHZvaWQgSW5zdGFuY2VPZlN0YXR1czo6YXBwZW5kVmFyaWFudChjb24KIH0KIAog
SW5zdGFuY2VPZlN0YXR1cyBJbnN0YW5jZU9mU3RhdHVzOjpjb21wdXRlRm9yKAotICAgIENvZGVC
bG9jayogY29kZUJsb2NrLCBTdHViSW5mb01hcCYgaW5mb01hcCwgdW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCkKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSUNTdGF0dXNNYXAmIGluZm9NYXAsIHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihj
b2RlQmxvY2stPm1fbG9jayk7CiAgICAgCiAgICAgSW5zdGFuY2VPZlN0YXR1cyByZXN1bHQ7CiAj
aWYgRU5BQkxFKERGR19KSVQpCi0gICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvKGxvY2tl
ciwgaW5mb01hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4KSkpOworICAgIHJlc3VsdCA9
IGNvbXB1dGVGb3JTdHViSW5mbyhsb2NrZXIsIGluZm9NYXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNv
ZGVJbmRleCkpLnN0dWJJbmZvKTsKIAogICAgIGlmICghcmVzdWx0LnRha2VzU2xvd1BhdGgoKSkg
ewogICAgICAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBjb2RlQmxv
Y2stPnVubGlua2VkQ29kZUJsb2NrKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mU3RhdHVzLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mU3RhdHVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNs
dWRlICJDb25jdXJyZW50SlNMb2NrLmgiCisjaW5jbHVkZSAiSUNTdGF0dXNNYXAuaCIKICNpbmNs
dWRlICJJbnN0YW5jZU9mVmFyaWFudC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTM1LDggKzM2
LDYgQEAgY2xhc3MgQWNjZXNzQ2FzZTsKIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIFN0cnVjdHVy
ZVN0dWJJbmZvOwogCi10eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdpbiwgU3RydWN0dXJlU3R1Yklu
Zm8qLCBDb2RlT3JpZ2luQXBwcm94aW1hdGVIYXNoPiBTdHViSW5mb01hcDsKLQogY2xhc3MgSW5z
dGFuY2VPZlN0YXR1cyB7CiBwdWJsaWM6CiAgICAgZW51bSBTdGF0ZSB7CkBAIC02MSw3ICs2MCw3
IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKHN0YXRlID09IE5vSW5mb3JtYXRpb24gfHwgc3Rh
dGUgPT0gVGFrZXNTbG93UGF0aCk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBJbnN0YW5jZU9m
U3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgU3R1YkluZm9NYXAmLCB1bnNpZ25lZCBieXRl
Y29kZUluZGV4KTsKKyAgICBzdGF0aWMgSW5zdGFuY2VPZlN0YXR1cyBjb21wdXRlRm9yKENvZGVC
bG9jayosIElDU3RhdHVzTWFwJiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CiAgICAgCiAjaWYg
RU5BQkxFKERGR19KSVQpCiAgICAgc3RhdGljIEluc3RhbmNlT2ZTdGF0dXMgY29tcHV0ZUZvclN0
dWJJbmZvKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFN0cnVjdHVyZVN0dWJJbmZvKik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seVByb3Rv
QWNjZXNzQ2hhaW4uaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYg
KzI5LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEpTQ2VsbDsKIGNsYXNzIEpTR2xv
YmFsT2JqZWN0OwogY2xhc3MgSlNPYmplY3Q7CiBjbGFzcyBQcm9wZXJ0eVNsb3Q7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCShy
ZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJ
ZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJD
b2RlQmxvY2suaCIKICNpbmNsdWRlICJDb21wbGV4R2V0U3RhdHVzLmgiCiAjaW5jbHVkZSAiR2V0
dGVyU2V0dGVyQWNjZXNzQ2FzZS5oIgorI2luY2x1ZGUgIklDU3RhdHVzVXRpbHMuaCIKICNpbmNs
dWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgpAQCAtNTUsMTIgKzU2LDkgQEAgYm9vbCBQdXRCeUlkU3RhdHVz
OjphcHBlbmRWYXJpYW50KGNvbnN0IAogfQogCiAjaWYgRU5BQkxFKERGR19KSVQpCi1ib29sIFB1
dEJ5SWRTdGF0dXM6Omhhc0V4aXRTaXRlKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWdu
ZWQgYnl0ZWNvZGVJbmRleCkKK0V4aXRGbGFnIFB1dEJ5SWRTdGF0dXM6Omhhc0V4aXRTaXRlKENv
ZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKIHsKLSAgICBV
bmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBwcm9maWxlZEJsb2NrLT51bmxp
bmtlZENvZGVCbG9jaygpOwotICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIodW5saW5rZWRD
b2RlQmxvY2stPm1fbG9jayk7Ci0gICAgcmV0dXJuIHVubGlua2VkQ29kZUJsb2NrLT5oYXNFeGl0
U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRDYWNo
ZSkpCi0gICAgICAgIHx8IHVubGlua2VkQ29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERG
Rzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRDb25zdGFudENhY2hlKSk7Cisg
ICAgcmV0dXJuIGhhc0JhZENhY2hlRXhpdFNpdGUocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRl
eCk7CiB9CiAjZW5kaWYKIApAQCAtMTEwLDcgKzEwOCw3IEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJ
ZFN0YXR1czo6Y29tcHV0ZUZyb20KICAgICAgICAgc3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUsIGNv
bmRpdGlvblNldCwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUtPmluZmVycmVkVHlwZURlc2NyaXB0b3JG
b3IodWlkKSk7CiB9CiAKLVB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihD
b2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIFN0dWJJbmZvTWFwJiBtYXAsIHVuc2lnbmVkIGJ5dGVj
b2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitQdXRCeUlkU3RhdHVzIFB1dEJ5SWRT
dGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBJQ1N0YXR1c01hcCYg
bWFwLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBFeGl0
RmxhZyBkaWRFeGl0LCBDYWxsTGlua1N0YXR1czo6RXhpdFNpdGVEYXRhIGNhbGxFeGl0U2l0ZURh
dGEpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihwcm9maWxlZEJsb2NrLT5tX2xv
Y2spOwogICAgIApAQCAtMTE4LDEzICsxMTYsMTIgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3Rh
dHVzOjpjb21wdXRlRm9yKAogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICAgICBV
TlVTRURfUEFSQU0odWlkKTsKICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBpZiAoaGFzRXhpdFNp
dGUocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCkpCisgICAgaWYgKGRpZEV4aXQpCiAgICAg
ICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgpOwogICAgIAotICAgIFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbyA9IG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4
KSk7CisgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvID0gbWFwLmdldChDb2RlT3JpZ2lu
KGJ5dGVjb2RlSW5kZXgpKS5zdHViSW5mbzsKICAgICBQdXRCeUlkU3RhdHVzIHJlc3VsdCA9IGNv
bXB1dGVGb3JTdHViSW5mbygKLSAgICAgICAgbG9ja2VyLCBwcm9maWxlZEJsb2NrLCBzdHViSW5m
bywgdWlkLAotICAgICAgICBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YShwcm9m
aWxlZEJsb2NrLCBieXRlY29kZUluZGV4KSk7CisgICAgICAgIGxvY2tlciwgcHJvZmlsZWRCbG9j
aywgc3R1YkluZm8sIHVpZCwgY2FsbEV4aXRTaXRlRGF0YSk7CiAgICAgaWYgKCFyZXN1bHQpCiAg
ICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5k
ZXgsIHVpZCk7CiAgICAgCkBAIC0yNjQsMzggKzI2MSwzMSBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5
SWRTdGF0dXM6OmNvbXB1dGVGb3JTCiB9CiAjZW5kaWYKIAotUHV0QnlJZFN0YXR1cyBQdXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgQ29kZUJsb2NrKiBk
ZmdCbG9jaywgU3R1YkluZm9NYXAmIGJhc2VsaW5lTWFwLCBTdHViSW5mb01hcCYgZGZnTWFwLCBD
b2RlT3JpZ2luIGNvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitQdXRCeUlkU3Rh
dHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJ
Q1N0YXR1c01hcCYgYmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4dFN0YWNrJiBjb250ZXh0U3Rh
Y2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKLSNp
ZiBFTkFCTEUoREZHX0pJVCkKLSAgICBpZiAoZGZnQmxvY2spIHsKLSAgICAgICAgaWYgKGhhc0V4
aXRTaXRlKGJhc2VsaW5lQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkpCi0gICAgICAg
ICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKLSAgICAgICAgQ2FsbExp
bmtTdGF0dXM6OkV4aXRTaXRlRGF0YSBleGl0U2l0ZURhdGE7Ci0gICAgICAgIHsKLSAgICAgICAg
ICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoYmFzZWxpbmVCbG9jay0+bV9sb2NrKTsKLSAg
ICAgICAgICAgIGV4aXRTaXRlRGF0YSA9IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVE
YXRhKAotICAgICAgICAgICAgICAgIGJhc2VsaW5lQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJ
bmRleCk7Ci0gICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICBQdXRCeUlkU3RhdHVzIHJl
c3VsdDsKLSAgICAgICAgewotICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihk
ZmdCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5m
bygKLSAgICAgICAgICAgICAgICBsb2NrZXIsIGRmZ0Jsb2NrLCBkZmdNYXAuZ2V0KGNvZGVPcmln
aW4pLCB1aWQsIGV4aXRTaXRlRGF0YSk7CisgICAgQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0
YSBjYWxsRXhpdFNpdGVEYXRhID0KKyAgICAgICAgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVFeGl0
U2l0ZURhdGEoYmFzZWxpbmVCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsKKyAgICBF
eGl0RmxhZyBkaWRFeGl0ID0gaGFzRXhpdFNpdGUoYmFzZWxpbmVCbG9jaywgY29kZU9yaWdpbi5i
eXRlY29kZUluZGV4KTsKKyAgICAKKyAgICBmb3IgKElDU3RhdHVzQ29udGV4dCogY29udGV4dCA6
IGNvbnRleHRTdGFjaykgeworICAgICAgICBJQ1N0YXR1cyBzdGF0dXMgPSBjb250ZXh0LT5nZXQo
Y29kZU9yaWdpbik7CisgICAgICAgIAorICAgICAgICBpZiAoc3RhdHVzLnN0dWJJbmZvKSB7Cisg
ICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvbnRleHQtPm9wdGltaXplZENv
ZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgIFB1dEJ5SWRTdGF0dXMgcmVzdWx0ID0gY29t
cHV0ZUZvclN0dWJJbmZvKAorICAgICAgICAgICAgICAgIGxvY2tlciwgY29udGV4dC0+b3B0aW1p
emVkQ29kZUJsb2NrLCBzdGF0dXMuc3R1YkluZm8sIHVpZCwgY2FsbEV4aXRTaXRlRGF0YSk7Cisg
ICAgICAgICAgICBpZiAocmVzdWx0LmlzU2V0KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZGlk
RXhpdC5pc1NldChjb250ZXh0LT5pbmxpbmVLaW5kKGNvZGVPcmlnaW4pKSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdC5zbG93VmVyc2lvbigpOworICAgICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAg
IC8vIFdlIHVzZSBUYWtlc1Nsb3dQYXRoIGluIHNvbWUgY2FzZXMgd2hlcmUgdGhlIHN0dWIgd2Fz
IHVuc2V0LiBUaGF0J3Mgd2VpcmQgYW5kCi0gICAgICAgIC8vIGl0IHdvdWxkIGJlIGJldHRlciBu
b3QgdG8gZG8gdGhhdC4gQnV0IGl0IG1lYW5zIHRoYXQgd2UgaGF2ZSB0byBkZWZlbmQKLSAgICAg
ICAgLy8gb3Vyc2VsdmVzIGhlcmUuCi0gICAgICAgIGlmIChyZXN1bHQuaXNTaW1wbGUoKSkKLSAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
ZGZnQmxvY2spOwotICAgIFVOVVNFRF9QQVJBTShkZmdNYXApOwotI2VuZGlmCisgICAgICAgIGlm
IChzdGF0dXMucHV0U3RhdHVzKQorICAgICAgICAgICAgcmV0dXJuICpzdGF0dXMucHV0U3RhdHVz
OworICAgIH0KIAotICAgIHJldHVybiBjb21wdXRlRm9yKGJhc2VsaW5lQmxvY2ssIGJhc2VsaW5l
TWFwLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIHVpZCk7CisgICAgcmV0dXJuIGNvbXB1dGVG
b3IoYmFzZWxpbmVCbG9jaywgYmFzZWxpbmVNYXAsIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwg
dWlkLCBkaWRFeGl0LCBjYWxsRXhpdFNpdGVEYXRhKTsKIH0KIAogUHV0QnlJZFN0YXR1cyBQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IFN0cnVjdHVyZVNldCYgc2V0LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBib29sIGlzRGlyZWN0
KQpAQCAtMzk4LDYgKzM4OCwzNSBAQCBib29sIFB1dEJ5SWRTdGF0dXM6Om1ha2VzQ2FsbHMoKSBj
b25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVz
OjpzbG93VmVyc2lvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMobWFrZXND
YWxscygpID8gTWFrZXNDYWxscyA6IFRha2VzU2xvd1BhdGgpOworfQorCit2b2lkIFB1dEJ5SWRT
dGF0dXM6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGZvciAoUHV0
QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKQorICAgICAgICB2YXJpYW50Lm1hcmtJ
ZkNoZWFwKHZpc2l0b3IpOworfQorCitib29sIFB1dEJ5SWRTdGF0dXM6OmZpbmFsaXplKCkKK3sK
KyAgICBmb3IgKFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykgeworICAgICAg
ICBpZiAoIXZhcmlhbnQuZmluYWxpemUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUHV0QnlJZFN0YXR1czo6ZmlsdGVyKGNv
bnN0IFN0cnVjdHVyZVNldCYgc2V0KQoreworICAgIGlmIChtX3N0YXRlICE9IFNpbXBsZSkKKyAg
ICAgICAgcmV0dXJuOworICAgIGZpbHRlcklDU3RhdHVzVmFyaWFudHMobV92YXJpYW50cywgc2V0
KTsKKyAgICBpZiAobV92YXJpYW50cy5pc0VtcHR5KCkpCisgICAgICAgIG1fc3RhdGUgPSBOb0lu
Zm9ybWF0aW9uOworfQorCiB2b2lkIFB1dEJ5SWRTdGF0dXM6OmR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAkocmV2aXNpb24gMjMyMjI3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDYWxs
TGlua1N0YXR1cy5oIgorI2luY2x1ZGUgIkV4aXRGbGFnLmgiCisjaW5jbHVkZSAiSUNTdGF0dXNN
YXAuaCIKICNpbmNsdWRlICJQdXRCeUlkVmFyaWFudC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAg
LTY5LDEwICs3MSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIG1fdmFyaWFudHMuYXBwZW5kKHZhcmlh
bnQpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENv
ZGVCbG9jayosIFN0dWJJbmZvTWFwJiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0
cmluZ0ltcGwqIHVpZCk7CisgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2Rl
QmxvY2sqLCBJQ1N0YXR1c01hcCYsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJp
bmdJbXBsKiB1aWQsIEV4aXRGbGFnLCBDYWxsTGlua1N0YXR1czo6RXhpdFNpdGVEYXRhKTsKICAg
ICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKEpTR2xvYmFsT2JqZWN0KiwgY29uc3Qg
U3RydWN0dXJlU2V0JiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgYm9vbCBpc0RpcmVjdCk7CiAg
ICAgCi0gICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqIGJhc2Vs
aW5lQmxvY2ssIENvZGVCbG9jayogZGZnQmxvY2ssIFN0dWJJbmZvTWFwJiBiYXNlbGluZU1hcCwg
U3R1YkluZm9NYXAmIGRmZ01hcCwgQ29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7
CisgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqIGJhc2VsaW5l
QmxvY2ssIElDU3RhdHVzTWFwJiBiYXNlbGluZU1hcCwgSUNTdGF0dXNDb250ZXh0U3RhY2smIGNv
bnRleHRTdGFjaywgQ29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7CiAKICNpZiBF
TkFCTEUoSklUKQogICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mbyhj
b25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIFN0cnVj
dHVyZVN0dWJJbmZvKiwgQ29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7CkBAIC04
NSwxNyArODcsMjIgQEAgcHVibGljOgogICAgIGJvb2wgaXNTaW1wbGUoKSBjb25zdCB7IHJldHVy
biBtX3N0YXRlID09IFNpbXBsZTsgfQogICAgIGJvb2wgdGFrZXNTbG93UGF0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGUgPT0gVGFrZXNTbG93UGF0aCB8fCBtX3N0YXRlID09IE1ha2VzQ2FsbHM7
IH0KICAgICBib29sIG1ha2VzQ2FsbHMoKSBjb25zdDsKKyAgICBQdXRCeUlkU3RhdHVzIHNsb3dW
ZXJzaW9uKCkgY29uc3Q7CiAgICAgCiAgICAgc2l6ZV90IG51bVZhcmlhbnRzKCkgY29uc3QgeyBy
ZXR1cm4gbV92YXJpYW50cy5zaXplKCk7IH0KICAgICBjb25zdCBWZWN0b3I8UHV0QnlJZFZhcmlh
bnQsIDE+JiB2YXJpYW50cygpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFudHM7IH0KICAgICBjb25z
dCBQdXRCeUlkVmFyaWFudCYgYXQoc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBtX3Zhcmlh
bnRzW2luZGV4XTsgfQogICAgIGNvbnN0IFB1dEJ5SWRWYXJpYW50JiBvcGVyYXRvcltdKHNpemVf
dCBpbmRleCkgY29uc3QgeyByZXR1cm4gYXQoaW5kZXgpOyB9CiAgICAgCisgICAgdm9pZCBtYXJr
SWZDaGVhcChTbG90VmlzaXRvciYpOworICAgIGJvb2wgZmluYWxpemUoKTsKKyAgICB2b2lkIGZp
bHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmKTsKKyAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mKSBjb25zdDsKICAgICAKIHByaXZhdGU6CiAjaWYgRU5BQkxFKERGR19KSVQpCi0gICAgc3Rh
dGljIGJvb2wgaGFzRXhpdFNpdGUoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7
CisgICAgc3RhdGljIEV4aXRGbGFnIGhhc0V4aXRTaXRlKENvZGVCbG9jayosIHVuc2lnbmVkIGJ5
dGVjb2RlSW5kZXgpOwogI2VuZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICBzdGF0aWMgUHV0QnlJ
ZFN0YXR1cyBjb21wdXRlRm9yU3R1YkluZm8oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjA2LDYgKzIwNiwyNiBAQCBib29sIFB1dEJ5SWRWYXJpYW50OjphdHRl
bXB0VG9NZXJnZVRyYW5zCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgUHV0QnlJZFZhcmlh
bnQ6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIG1fb2xkU3RydWN0
dXJlLm1hcmtJZkNoZWFwKHZpc2l0b3IpOworICAgIGlmIChtX25ld1N0cnVjdHVyZSkKKyAgICAg
ICAgbV9uZXdTdHJ1Y3R1cmUtPm1hcmtJZkNoZWFwKHZpc2l0b3IpOworfQorCitib29sIFB1dEJ5
SWRWYXJpYW50OjpmaW5hbGl6ZSgpCit7CisgICAgaWYgKCFtX29sZFN0cnVjdHVyZS5pc1N0aWxs
QWxpdmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX25ld1N0cnVjdHVyZSAm
JiAhSGVhcDo6aXNNYXJrZWQobV9uZXdTdHJ1Y3R1cmUpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKCFtX2NvbmRpdGlvblNldC5hcmVTdGlsbExpdmUoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmIChtX2NhbGxMaW5rU3RhdHVzICYmICFtX2NhbGxMaW5rU3RhdHVzLT5m
aW5hbGl6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
IHZvaWQgUHV0QnlJZFZhcmlhbnQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAg
ICBkdW1wSW5Db250ZXh0KG91dCwgMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHV0QnlJZFZhcmlhbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNzMsMTcgKzczLDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fb2xkU3RydWN0
dXJlOwogICAgIH0KICAgICAKLSAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCgp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gc3RydWN0dXJlKCk7Ci0gICAgfQotICAgIAog
ICAgIGNvbnN0IFN0cnVjdHVyZVNldCYgb2xkU3RydWN0dXJlKCkgY29uc3QKICAgICB7CiAgICAg
ICAgIEFTU0VSVChraW5kKCkgPT0gVHJhbnNpdGlvbiB8fCBraW5kKCkgPT0gUmVwbGFjZSB8fCBr
aW5kKCkgPT0gU2V0dGVyKTsKICAgICAgICAgcmV0dXJuIG1fb2xkU3RydWN0dXJlOwogICAgIH0K
ICAgICAKKyAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCgpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gb2xkU3RydWN0dXJlKCk7CisgICAgfQorICAgIAogICAgIFN0cnVj
dHVyZVNldCYgb2xkU3RydWN0dXJlKCkKICAgICB7CiAgICAgICAgIEFTU0VSVChraW5kKCkgPT0g
VHJhbnNpdGlvbiB8fCBraW5kKCkgPT0gUmVwbGFjZSB8fCBraW5kKCkgPT0gU2V0dGVyKTsKQEAg
LTEyOSw2ICsxMjksOSBAQCBwdWJsaWM6CiAKICAgICBib29sIGF0dGVtcHRUb01lcmdlKGNvbnN0
IFB1dEJ5SWRWYXJpYW50JiBvdGhlcik7CiAgICAgCisgICAgdm9pZCBtYXJrSWZDaGVhcChTbG90
VmlzaXRvciYpOworICAgIGJvb2wgZmluYWxpemUoKTsKKyAgICAKICAgICB2b2lkIGR1bXAoUHJp
bnRTdHJlYW0mKSBjb25zdDsKICAgICB2b2lkIGR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mLCBE
dW1wQ29udGV4dCopIGNvbnN0OwogCkBAIC0xMzcsNyArMTQwLDcgQEAgcHJpdmF0ZToKICAgICAK
ICAgICBLaW5kIG1fa2luZDsKICAgICBTdHJ1Y3R1cmVTZXQgbV9vbGRTdHJ1Y3R1cmU7Ci0gICAg
U3RydWN0dXJlKiBtX25ld1N0cnVjdHVyZTsKKyAgICBTdHJ1Y3R1cmUqIG1fbmV3U3RydWN0dXJl
IHsgbnVsbHB0ciB9OwogICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uU2V0IG1fY29uZGl0aW9u
U2V0OwogICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0OwogICAgIEluZmVycmVkVHlwZTo6RGVz
Y3JpcHRvciBtX3JlcXVpcmVkVHlwZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZWNvcmRlZFN0
YXR1c2VzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitSZWNvcmRlZFN0YXR1c2VzJiBSZWNvcmRl
ZFN0YXR1c2VzOjpvcGVyYXRvcj0oUmVjb3JkZWRTdGF0dXNlcyYmIG90aGVyKQoreworICAgIGNh
bGxzID0gV1RGTW92ZShvdGhlci5jYWxscyk7CisgICAgZ2V0cyA9IFdURk1vdmUob3RoZXIuZ2V0
cyk7CisgICAgcHV0cyA9IFdURk1vdmUob3RoZXIucHV0cyk7CisgICAgc2hyaW5rVG9GaXQoKTsK
KyAgICByZXR1cm4gKnRoaXM7Cit9CisKK1JlY29yZGVkU3RhdHVzZXM6OlJlY29yZGVkU3RhdHVz
ZXMoUmVjb3JkZWRTdGF0dXNlcyYmIG90aGVyKQoreworICAgICp0aGlzID0gV1RGTW92ZShvdGhl
cik7Cit9CisKK0NhbGxMaW5rU3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRDYWxsTGlua1N0
YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBjb25zdCBDYWxsTGlua1N0YXR1cyYg
c3RhdHVzKQoreworICAgIGF1dG8gc3RhdHVzUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxDYWxsTGlu
a1N0YXR1cz4oc3RhdHVzKTsKKyAgICBDYWxsTGlua1N0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRy
LmdldCgpOworICAgIGNhbGxzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihjb2RlT3JpZ2luLCBXVEZN
b3ZlKHN0YXR1c1B0cikpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitHZXRCeUlkU3RhdHVz
KiBSZWNvcmRlZFN0YXR1c2VzOjphZGRHZXRCeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNv
ZGVPcmlnaW4sIGNvbnN0IEdldEJ5SWRTdGF0dXMmIHN0YXR1cykKK3sKKyAgICBhdXRvIHN0YXR1
c1B0ciA9IHN0ZDo6bWFrZV91bmlxdWU8R2V0QnlJZFN0YXR1cz4oc3RhdHVzKTsKKyAgICBHZXRC
eUlkU3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7CisgICAgZ2V0cy5hcHBlbmQoc3Rk
OjptYWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShzdGF0dXNQdHIpKSk7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKyAgICAKK1B1dEJ5SWRTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZFB1
dEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgY29uc3QgUHV0QnlJZFN0
YXR1cyYgc3RhdHVzKQoreworICAgIGF1dG8gc3RhdHVzUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxQ
dXRCeUlkU3RhdHVzPihzdGF0dXMpOworICAgIFB1dEJ5SWRTdGF0dXMqIHJlc3VsdCA9IHN0YXR1
c1B0ci5nZXQoKTsKKyAgICBwdXRzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihjb2RlT3JpZ2luLCBX
VEZNb3ZlKHN0YXR1c1B0cikpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIFJlY29y
ZGVkU3RhdHVzZXM6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiBzbG90VmlzaXRvcikKK3sKKyAg
ICBmb3IgKGF1dG8mIHBhaXIgOiBnZXRzKQorICAgICAgICBwYWlyLnNlY29uZC0+bWFya0lmQ2hl
YXAoc2xvdFZpc2l0b3IpOworICAgIGZvciAoYXV0byYgcGFpciA6IHB1dHMpCisgICAgICAgIHBh
aXIuc2Vjb25kLT5tYXJrSWZDaGVhcChzbG90VmlzaXRvcik7Cit9CisKK3ZvaWQgUmVjb3JkZWRT
dGF0dXNlczo6ZmluYWxpemVXaXRob3V0RGVsZXRpbmcoKQoreworICAgIGF1dG8gZmluYWxpemUg
PSBbXSAoYXV0byYgdmVjdG9yKSB7CisgICAgICAgIGZvciAoYXV0byYgcGFpciA6IHZlY3Rvcikg
eworICAgICAgICAgICAgaWYgKCFwYWlyLnNlY29uZC0+ZmluYWxpemUoKSkKKyAgICAgICAgICAg
ICAgICBwYWlyLnNlY29uZCA9IHsgfTsKKyAgICAgICAgfQorICAgIH07CisgICAgZm9yRWFjaFZl
Y3RvcihmaW5hbGl6ZSk7Cit9CisKK3ZvaWQgUmVjb3JkZWRTdGF0dXNlczo6ZmluYWxpemUoKQor
eworICAgIGF1dG8gZmluYWxpemUgPSBbXSAoYXV0byYgdmVjdG9yKSB7CisgICAgICAgIHZlY3Rv
ci5yZW1vdmVBbGxNYXRjaGluZygKKyAgICAgICAgICAgIFsmXSAoYXV0byYgcGFpcikgLT4gYm9v
bCB7CisgICAgICAgICAgICAgICAgcmV0dXJuICEqcGFpci5zZWNvbmQgfHwgIXBhaXIuc2Vjb25k
LT5maW5hbGl6ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIHZlY3Rvci5zaHJpbmtUb0Zp
dCgpOworICAgIH07CisgICAgZm9yRWFjaFZlY3RvcihmaW5hbGl6ZSk7Cit9CisKK3ZvaWQgUmVj
b3JkZWRTdGF0dXNlczo6c2hyaW5rVG9GaXQoKQoreworICAgIGZvckVhY2hWZWN0b3IoW10gKGF1
dG8mIHZlY3RvcikgeyB2ZWN0b3Iuc2hyaW5rVG9GaXQoKTsgfSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRT
dGF0dXNlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9S
ZWNvcmRlZFN0YXR1c2VzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIKKyNpbmNsdWRlICJHZXRCeUlk
U3RhdHVzLmgiCisjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgorCituYW1lc3BhY2UgSlNDIHsK
Kworc3RydWN0IFJlY29yZGVkU3RhdHVzZXMgeworICAgIFJlY29yZGVkU3RhdHVzZXMoKSB7IH0K
KyAgICAKKyAgICBSZWNvcmRlZFN0YXR1c2VzJiBvcGVyYXRvcj0oY29uc3QgUmVjb3JkZWRTdGF0
dXNlcyYgb3RoZXIpID0gZGVsZXRlOworICAgIAorICAgIFJlY29yZGVkU3RhdHVzZXMmIG9wZXJh
dG9yPShSZWNvcmRlZFN0YXR1c2VzJiYgb3RoZXIpOworICAgIAorICAgIFJlY29yZGVkU3RhdHVz
ZXMoY29uc3QgUmVjb3JkZWRTdGF0dXNlcyYgb3RoZXIpID0gZGVsZXRlOworICAgIAorICAgIFJl
Y29yZGVkU3RhdHVzZXMoUmVjb3JkZWRTdGF0dXNlcyYmIG90aGVyKTsKKyAgICAKKyAgICBDYWxs
TGlua1N0YXR1cyogYWRkQ2FsbExpbmtTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0IENh
bGxMaW5rU3RhdHVzJik7CisgICAgR2V0QnlJZFN0YXR1cyogYWRkR2V0QnlJZFN0YXR1cyhjb25z
dCBDb2RlT3JpZ2luJiwgY29uc3QgR2V0QnlJZFN0YXR1cyYpOworICAgIFB1dEJ5SWRTdGF0dXMq
IGFkZFB1dEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0IFB1dEJ5SWRTdGF0dXMm
KTsKKyAgICAKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiBzbG90VmlzaXRvcik7
CisgICAgCisgICAgdm9pZCBmaW5hbGl6ZVdpdGhvdXREZWxldGluZygpOworICAgIHZvaWQgZmlu
YWxpemUoKTsKKyAgICAKKyAgICB2b2lkIHNocmlua1RvRml0KCk7CisgICAgCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZvckVhY2hWZWN0b3IoY29uc3QgRnVuYyYgZnVu
YykKKyAgICB7CisgICAgICAgIGZ1bmMoY2FsbHMpOworICAgICAgICBmdW5jKGdldHMpOworICAg
ICAgICBmdW5jKHB1dHMpOworICAgIH0KKyAgICAKKyAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVP
cmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxDYWxsTGlua1N0YXR1cz4+PiBjYWxsczsKKyAgICBWZWN0
b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxHZXRCeUlkU3RhdHVzPj4+
IGdldHM7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8
UHV0QnlJZFN0YXR1cz4+PiBwdXRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuY3BwCShy
ZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0
dXJlU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw2ICszMSwyMSBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAordm9pZCBTdHJ1Y3R1cmVTZXQ6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2
aXNpdG9yKSBjb25zdAoreworICAgIGZvciAoU3RydWN0dXJlKiBzdHJ1Y3R1cmUgOiAqdGhpcykK
KyAgICAgICAgc3RydWN0dXJlLT5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKK30KKworYm9vbCBTdHJ1
Y3R1cmVTZXQ6OmlzU3RpbGxBbGl2ZSgpIGNvbnN0Cit7CisgICAgZm9yIChTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA6ICp0aGlzKSB7CisgICAgICAgIGlmICghSGVhcDo6aXNNYXJrZWQoc3RydWN0dXJl
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9
CisKIHZvaWQgU3RydWN0dXJlU2V0OjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1
bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAogewogICAgIENvbW1hUHJpbnRlciBjb21tYTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmgJKHJl
dmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1
cmVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEsIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU4LDYgKzU4LDkgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgcmV0dXJuIG9ubHlFbnRyeSgpOwogICAgIH0KKworICAgIHZvaWQgbWFy
a0lmQ2hlYXAoU2xvdFZpc2l0b3ImKSBjb25zdDsKKyAgICBib29sIGlzU3RpbGxBbGl2ZSgpIGNv
bnN0OwogICAgIAogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250
ZXh0KikgY29uc3Q7CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVGVybWluYXRlZENvZGVPcmlnaW4uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVGVybWluYXRlZENvZGVP
cmlnaW4uaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VGVybWluYXRlZENvZGVPcmlnaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25j
ZQorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IFRlcm1pbmF0ZWRDb2RlT3JpZ2luIHsKKyAg
ICBUZXJtaW5hdGVkQ29kZU9yaWdpbigpIHsgfQorICAgIAorICAgIFRlcm1pbmF0ZWRDb2RlT3Jp
Z2luKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIENvZGVCbG9jayogdGVybWluYWwpCisg
ICAgICAgIDogY29kZU9yaWdpbihjb2RlT3JpZ2luKQorICAgICAgICAsIHRlcm1pbmFsKHRlcm1p
bmFsKQorICAgIHsKKyAgICB9CisgICAgCisgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luOworICAg
IENvZGVCbG9jayogdGVybWluYWwgeyBudWxscHRyIH07Cit9OworCitzdHJ1Y3QgVGVybWluYXRl
ZENvZGVPcmlnaW5IYXNoVHJhbnNsYXRvciB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29u
c3QgVGVybWluYXRlZENvZGVPcmlnaW4mIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZh
bHVlLmNvZGVPcmlnaW4uYXBwcm94aW1hdGVIYXNoKHZhbHVlLnRlcm1pbmFsKTsKKyAgICB9Cisg
ICAgCisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgQ29kZU9yaWdpbiYgYSwgY29uc3QgVGVy
bWluYXRlZENvZGVPcmlnaW4mIGIpCisgICAgeworICAgICAgICByZXR1cm4gYi5jb2RlT3JpZ2lu
LmlzQXBwcm94aW1hdGVseUVxdWFsVG8oYSwgYi50ZXJtaW5hbCk7CisgICAgfQorfTsKKworfSAv
LyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDIzMjIy
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzQ5OSw2ICszNDk5LDI1IEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICBjYXNlIFpvbWJpZUhpbnQ6CiAgICAg
Y2FzZSBFeGl0T0s6CiAgICAgICAgIGJyZWFrOworICAgICAgICAKKyAgICBjYXNlIEZpbHRlckNh
bGxMaW5rU3RhdHVzOgorICAgICAgICBpZiAoSlNWYWx1ZSB2YWx1ZSA9IGZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpLm1fdmFsdWUpCisgICAgICAgICAgICBub2RlLT5jYWxsTGlua1N0YXR1cygpLT5m
aWx0ZXIobV92bSwgdmFsdWUpOworICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgY2FzZSBG
aWx0ZXJHZXRCeUlkU3RhdHVzOiB7CisgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gZm9y
Tm9kZShub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc0Zp
bml0ZSgpKQorICAgICAgICAgICAgbm9kZS0+Z2V0QnlJZFN0YXR1cygpLT5maWx0ZXIodmFsdWUu
bV9zdHJ1Y3R1cmUudG9TdHJ1Y3R1cmVTZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICAgICAgCisgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOiB7CisgICAgICAgIEFic3RyYWN0
VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIGlmICh2YWx1
ZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKQorICAgICAgICAgICAgbm9kZS0+cHV0QnlJZFN0YXR1
cygpLT5maWx0ZXIodmFsdWUubV9zdHJ1Y3R1cmUudG9TdHJ1Y3R1cmVTZXQoKSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KIAogICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0ZsYWdzOiB7CiAgICAgICAg
IGNvbnN0IEFic3RyYWN0VmFsdWUmIGFic3RyYWN0VmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA4Miw5ICsxMDgyLDgg
QEAgcHJpdmF0ZToKICAgICAgICAgLy8gY29kZSBibG9jayBoYWQgZ2F0aGVyZWQuCiAgICAgICAg
IExhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyIG1fbGF6eU9wZXJhbmRzOwogICAgICAgICAK
LSAgICAgICAgQ2FsbExpbmtJbmZvTWFwIG1fY2FsbExpbmtJbmZvczsKLSAgICAgICAgU3R1Yklu
Zm9NYXAgbV9zdHViSW5mb3M7Ci0gICAgICAgIEJ5VmFsSW5mb01hcCBtX2J5VmFsSW5mb3M7Cisg
ICAgICAgIElDU3RhdHVzTWFwIG1fYmFzZWxpbmVNYXA7CisgICAgICAgIElDU3RhdHVzQ29udGV4
dCBtX29wdGltaXplZENvbnRleHQ7CiAgICAgICAgIAogICAgICAgICAvLyBQb2ludGVycyB0byB0
aGUgYXJndW1lbnQgcG9zaXRpb24gdHJhY2tlcnMgZm9yIHRoaXMgc2xpY2Ugb2YgY29kZS4KICAg
ICAgICAgVmVjdG9yPEFyZ3VtZW50UG9zaXRpb24qPiBtX2FyZ3VtZW50UG9zaXRpb25zOwpAQCAt
MTEwMiwxMCArMTEwMSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWU6
OktpbmQsCiAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBjb250aW51YXRpb25CbG9jayk7CiAgICAg
ICAgIAotICAgICAgICB+SW5saW5lU3RhY2tFbnRyeSgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IG1fYnl0ZUNvZGVQYXJzZXItPm1faW5saW5lU3RhY2tUb3AgPSBtX2NhbGxlcjsKLSAgICAgICAg
fQorICAgICAgICB+SW5saW5lU3RhY2tFbnRyeSgpOwogICAgICAgICAKICAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIHJlbWFwT3BlcmFuZChWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkgY29uc3QKICAg
ICAgICAgewpAQCAtMTEyMCw2ICsxMTE2LDggQEAgcHJpdmF0ZToKICAgICAKICAgICBJbmxpbmVT
dGFja0VudHJ5KiBtX2lubGluZVN0YWNrVG9wOwogICAgIAorICAgIElDU3RhdHVzQ29udGV4dFN0
YWNrIG1faWNDb250ZXh0U3RhY2s7CisgICAgCiAgICAgc3RydWN0IERlbGF5ZWRTZXRMb2NhbCB7
CiAgICAgICAgIENvZGVPcmlnaW4gbV9vcmlnaW47CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBt
X29wZXJhbmQ7CkBAIC0xMTQ2LDEwICsxMTQ0LDYgQEAgcHJpdmF0ZToKICAgICAKICAgICBWZWN0
b3I8RGVsYXllZFNldExvY2FsLCAyPiBtX3NldExvY2FsUXVldWU7CiAKLSAgICBDb2RlQmxvY2sq
IG1fZGZnQ29kZUJsb2NrOwotICAgIENhbGxMaW5rU3RhdHVzOjpDb250ZXh0TWFwIG1fY2FsbENv
bnRleHRNYXA7Ci0gICAgU3R1YkluZm9NYXAgbV9kZmdTdHViSW5mb3M7Ci0gICAgCiAgICAgSW5z
dHJ1Y3Rpb24qIG1fY3VycmVudEluc3RydWN0aW9uOwogICAgIGJvb2wgbV9oYXNEZWJ1Z2dlckVu
YWJsZWQ7CiB9OwpAQCAtMTIxNCw3ICsxMjA4LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFs
aXR5IEJ5dGVDb2RlUGFycwogCiAgICAgQ2FsbExpbmtTdGF0dXMgY2FsbExpbmtTdGF0dXMgPSBD
YWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLCBjdXJyZW50Q29kZU9yaWdpbigpLAotICAgICAgICBtX2lubGluZVN0YWNr
VG9wLT5tX2NhbGxMaW5rSW5mb3MsIG1fY2FsbENvbnRleHRNYXApOworICAgICAgICBtX2lubGlu
ZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrKTsKIAogICAgIElubGlu
ZUNhbGxGcmFtZTo6S2luZCBraW5kID0gSW5saW5lQ2FsbEZyYW1lOjpraW5kRm9yKGNhbGxNb2Rl
KTsKIApAQCAtMTI0Miw2ICsxMjM2LDggQEAgQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5
dGVDb2RlUGFycwogICAgIC8vIElmIHdlIGhhdmUgcHJvZmlsaW5nIGluZm9ybWF0aW9uIGFib3V0
IHRoaXMgY2FsbCwgYW5kIGl0IGRpZCBub3QgYmVoYXZlIHRvbyBwb2x5bW9ycGhpY2FsbHksCiAg
ICAgLy8gd2UgbWF5IGJlIGFibGUgdG8gaW5saW5lIGl0LCBvciBpbiB0aGUgY2FzZSBvZiByZWN1
cnNpdmUgdGFpbCBjYWxscyB0dXJuIGl0IGludG8gYSBqdW1wLgogICAgIGlmIChjYWxsTGlua1N0
YXR1cy5jYW5PcHRpbWl6ZSgpKSB7CisgICAgICAgIGFkZFRvR3JhcGgoRmlsdGVyQ2FsbExpbmtT
dGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFkZENhbGxMaW5r
U3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIGNhbGxMaW5rU3RhdHVzKSksIGNhbGxUYXJnZXQp
OworICAgICAgICAKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCA9IHZpcnR1
YWxSZWdpc3RlckZvckFyZ3VtZW50KDAsIHJlZ2lzdGVyT2Zmc2V0KTsKICAgICAgICAgYXV0byBv
cHRpbWl6YXRpb25SZXN1bHQgPSBoYW5kbGVJbmxpbmluZyhjYWxsVGFyZ2V0LCByZXN1bHQsIGNh
bGxMaW5rU3RhdHVzLCByZWdpc3Rlck9mZnNldCwgdGhpc0FyZ3VtZW50LAogICAgICAgICAgICAg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIG1fY3VycmVudEluZGV4ICsgaW5zdHJ1Y3Rpb25T
aXplLCBvcCwga2luZCwgcHJlZGljdGlvbik7CkBAIC0xMjc5LDEyICsxMjc1LDE0IEBAIEJ5dGVD
b2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnMKICAgICAKICAgICBDYWxsTGlua1N0
YXR1cyBjYWxsTGlua1N0YXR1cyA9IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAg
ICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIGN1cnJlbnRDb2RlT3JpZ2luKCks
Ci0gICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fY2FsbExpbmtJbmZvcywgbV9jYWxsQ29udGV4
dE1hcCk7CisgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250
ZXh0U3RhY2spOwogICAgIHJlZmluZVN0YXRpY2FsbHkoY2FsbExpbmtTdGF0dXMsIGNhbGxUYXJn
ZXQpOwogICAgIAogICAgIFZFUkJPU0VfTE9HKCIgICAgVmFyYXJncyBjYWxsIGxpbmsgc3RhdHVz
IGF0ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICI6ICIsIGNhbGxMaW5rU3RhdHVzLCAiXG4iKTsK
ICAgICAKICAgICBpZiAoY2FsbExpbmtTdGF0dXMuY2FuT3B0aW1pemUoKSkgeworICAgICAgICBh
ZGRUb0dyYXBoKEZpbHRlckNhbGxMaW5rU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVj
b3JkZWRTdGF0dXNlcy5hZGRDYWxsTGlua1N0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBjYWxs
TGlua1N0YXR1cykpLCBjYWxsVGFyZ2V0KTsKKyAgICAgICAgCiAgICAgICAgIGlmIChoYW5kbGVW
YXJhcmdzSW5saW5pbmcoY2FsbFRhcmdldCwgcmVzdWx0LAogICAgICAgICAgICAgY2FsbExpbmtT
dGF0dXMsIGZpcnN0RnJlZVJlZywgVmlydHVhbFJlZ2lzdGVyKHRoaXNSZWcpLCBWaXJ0dWFsUmVn
aXN0ZXIoYXJndW1lbnRzKSwKICAgICAgICAgICAgIGZpcnN0VmFyQXJnT2Zmc2V0LCBvcCwKQEAg
LTMzMTgsOSArMzMxNiwxMiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRHZXR0
ZXIoCiAgICAgaWYgKCFjaGVjayh2YXJpYW50LmNvbmRpdGlvblNldCgpKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBo
LmFkZFN0cnVjdHVyZVNldCh2YXJpYW50LnN0cnVjdHVyZVNldCgpKSksIHRoaXNOb2RlKTsKLQor
ICAgIAogICAgIC8vIFdlIGRvIG5vdCBuZWVkIHRvIGVtaXQgQ2hlY2tDZWxsIHRoaW5neSBoZXJl
LiBXaGVuIHRoZSBjdXN0b20gYWNjZXNzb3IgaXMgcmVwbGFjZWQgdG8gZGlmZmVyZW50IG9uZSwg
U3RydWN0dXJlIHRyYW5zaXRpb24gb2NjdXJzLgogICAgIGFkZFRvR3JhcGgoQ2hlY2tTdWJDbGFz
cywgT3BJbmZvKGRvbUF0dHJpYnV0ZS5jbGFzc0luZm8pLCB0aGlzTm9kZSk7CisgICAgCisgICAg
Ym9vbCB3YXNTZWVuSW5KSVQgPSB0cnVlOworICAgIGFkZFRvR3JhcGgoRmlsdGVyR2V0QnlJZFN0
YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkR2V0QnlJZFN0
YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBHZXRCeUlkU3RhdHVzKEdldEJ5SWRTdGF0dXM6OkN1
c3RvbSwgd2FzU2VlbkluSklULCB2YXJpYW50KSkpLCB0aGlzTm9kZSk7CiAKICAgICBDYWxsRE9N
R2V0dGVyRGF0YSogY2FsbERPTUdldHRlckRhdGEgPSBtX2dyYXBoLm1fY2FsbERPTUdldHRlckRh
dGEuYWRkKCk7CiAgICAgY2FsbERPTUdldHRlckRhdGEtPmN1c3RvbUFjY2Vzc29yR2V0dGVyID0g
dmFyaWFudC5jdXN0b21BY2Nlc3NvckdldHRlcigpOwpAQCAtMzM1Miw2ICszMzUzLDggQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTW9kdWxlTmFtZXNwYQogICAgIGlmIChtX2lubGluZVN0
YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDZWxs
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGFkZFRvR3JhcGgoQ2hlY2tDZWxsLCBPcElu
Zm8obV9ncmFwaC5mcmVlemUoZ2V0QnlJZC5tb2R1bGVOYW1lc3BhY2VPYmplY3QoKSkpLCBFZGdl
KGJhc2UsIENlbGxVc2UpKTsKKyAgICAKKyAgICBhZGRUb0dyYXBoKEZpbHRlckdldEJ5SWRTdGF0
dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFkZEdldEJ5SWRTdGF0
dXMoY3VycmVudENvZGVPcmlnaW4oKSwgZ2V0QnlJZCkpLCBiYXNlKTsKIAogICAgIC8vIElkZWFs
bHkgd2Ugd291bGRuJ3QgaGF2ZSB0byBkbyB0aGlzIFBoYW50b20uIEJ1dDoKICAgICAvLwpAQCAt
NDAwNywxNCArNDAxMCwyNSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAorICAgIC8vIEZJWE1FOiBJZiB3ZSB1c2UgdGhl
IEdldEJ5SWRTdGF0dXMgZm9yIGFueXRoaW5nIHRoZW4gd2Ugc2hvdWxkIHJlY29yZCBpdCBhbmQg
aW5zZXJ0IGEgbm9kZQorICAgIC8vIGFmdGVyIGV2ZXJ5dGhpbmcgZWxzZSAobGlrZSB0aGUgR2V0
QnlPZmZzZXQgb3Igd2hhdGV2ZXIpIHRoYXQgd2lsbCBmaWx0ZXIgdGhlIHJlY29yZGVkCisgICAg
Ly8gR2V0QnlJZFN0YXR1cy4gVGhhdCBtZWFucyB0aGF0IHRoZSBjb25zdGFudCBmb2xkZXIgYWxz
byBuZWVkcyB0byBkbyB0aGUgc2FtZSEKKyAgICAKICAgICBpZiAoZ2V0QnlJZFN0YXR1cy5udW1W
YXJpYW50cygpID4gMSkgewogICAgICAgICBpZiAoZ2V0QnlJZFN0YXR1cy5tYWtlc0NhbGxzKCkg
fHwgIWlzRlRMKG1fZ3JhcGgubV9wbGFuLm1vZGUpCi0gICAgICAgICAgICB8fCAhT3B0aW9uczo6
dXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZygpKSB7CisgICAgICAgICAgICB8fCAhT3B0aW9u
czo6dXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZygpCisgICAgICAgICAgICB8fCBnZXRCeUlk
U3RhdHVzLm51bVZhcmlhbnRzKCkgPiBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGlu
aW5nTGlzdFNpemUoKSkgeworICAgICAgICAgICAgaWYgKGZhbHNlICYmIGdldEJ5SWRTdGF0dXMu
bnVtVmFyaWFudHMoKSA+IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0
U2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgZGF0YUxvZygiQXQgIiwgY3VycmVudENvZGVPcmln
aW4oKSwgIlxuIik7CisgICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2aW5nIHVwIG9uOiAiLCBn
ZXRCeUlkU3RhdHVzLCAiXG4iKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHNldChWaXJ0
dWFsUmVnaXN0ZXIoZGVzdGluYXRpb25PcGVyYW5kKSwKICAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKGdldEJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSwgT3BJbmZvKHByZWRpY3Rpb24p
LCBiYXNlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCisgICAg
ICAgIGFkZFRvR3JhcGgoRmlsdGVyR2V0QnlJZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFu
LnJlY29yZGVkU3RhdHVzZXMuYWRkR2V0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBn
ZXRCeUlkU3RhdHVzKSksIGJhc2UpOworICAgICAgICAKICAgICAgICAgVmVjdG9yPE11bHRpR2V0
QnlPZmZzZXRDYXNlLCAyPiBjYXNlczsKICAgICAgICAgCiAgICAgICAgIC8vIDEpIEVtaXQgcHJv
dG90eXBlIHN0cnVjdHVyZSBjaGVja3MgZm9yIGFsbCBjaGFpbnMuIFRoaXMgY291bGQgc29ydCBv
ZiBtYXliZSBub3QgYmUKQEAgLTQwNTYsMTAgKzQwNzAsMTIgQEAgdm9pZCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlR2V0QnlJZCgKICAgICAgICAgICAgIGFkZFRvR3JhcGgoTXVsdGlHZXRCeU9mZnNl
dCwgT3BJbmZvKGRhdGEpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KKworICAgIGFkZFRvR3JhcGgoRmlsdGVyR2V0QnlJZFN0YXR1cywgT3BJbmZv
KG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkR2V0QnlJZFN0YXR1cyhjdXJyZW50
Q29kZU9yaWdpbigpLCBnZXRCeUlkU3RhdHVzKSksIGJhc2UpOwogICAgIAogICAgIEFTU0VSVChn
ZXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgPT0gMSk7CiAgICAgR2V0QnlJZFZhcmlhbnQgdmFy
aWFudCA9IGdldEJ5SWRTdGF0dXNbMF07Ci0gICAgICAgICAgICAgICAgCisgICAgCiAgICAgTm9k
ZSogbG9hZGVkVmFsdWUgPSBsb2FkKHByZWRpY3Rpb24sIGJhc2UsIGlkZW50aWZpZXJOdW1iZXIs
IHZhcmlhbnQpOwogICAgIGlmICghbG9hZGVkVmFsdWUpIHsKICAgICAgICAgc2V0KFZpcnR1YWxS
ZWdpc3RlcihkZXN0aW5hdGlvbk9wZXJhbmQpLApAQCAtNDE1MCw3ICs0MTY2LDEwIEBAIHZvaWQg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgCiAgICAgaWYgKHB1dEJ5SWRTdGF0
dXMubnVtVmFyaWFudHMoKSA+IDEpIHsKICAgICAgICAgaWYgKCFpc0ZUTChtX2dyYXBoLm1fcGxh
bi5tb2RlKSB8fCBwdXRCeUlkU3RhdHVzLm1ha2VzQ2FsbHMoKQotICAgICAgICAgICAgfHwgIU9w
dGlvbnM6OnVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcoKSkgeworICAgICAgICAgICAgfHwg
IU9wdGlvbnM6OnVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcoKQorICAgICAgICAgICAgfHwg
cHV0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpID4gT3B0aW9uczo6bWF4UG9seW1vcnBoaWNBY2Nl
c3NJbmxpbmluZ0xpc3RTaXplKCkpIHsKKyAgICAgICAgICAgIGlmIChmYWxzZSAmJiBwdXRCeUlk
U3RhdHVzLm51bVZhcmlhbnRzKCkgPiBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGlu
aW5nTGlzdFNpemUoKSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJHaXZpbmcgdXAgb246ICIs
IHB1dEJ5SWRTdGF0dXMsICJcbiIpOwogICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRl
bnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0KTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNDE2OCw2ICs0MTg3LDggQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICAgICAgCiAgICAgICAgIGlmIChVTkxJS0VMWSht
X2dyYXBoLmNvbXBpbGF0aW9uKCkpKQogICAgICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigp
LT5ub3RpY2VJbmxpbmVkUHV0QnlJZCgpOworICAgICAgICAKKyAgICAgICAgYWRkVG9HcmFwaChG
aWx0ZXJQdXRCeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNl
cy5hZGRQdXRCeUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIHB1dEJ5SWRTdGF0dXMpKSwg
YmFzZSk7CiAKICAgICAgICAgZm9yIChjb25zdCBQdXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IHB1
dEJ5SWRTdGF0dXMudmFyaWFudHMoKSkgewogICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3Rlcklu
ZmVycmVkVHlwZSh2YXJpYW50LnJlcXVpcmVkVHlwZSgpKTsKQEAgLTQxODksNiArNDIxMCw4IEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgCiAgICAgc3dpdGNoICh2
YXJpYW50LmtpbmQoKSkgewogICAgIGNhc2UgUHV0QnlJZFZhcmlhbnQ6OlJlcGxhY2U6IHsKKyAg
ICAgICAgYWRkVG9HcmFwaChGaWx0ZXJQdXRCeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3Bs
YW4ucmVjb3JkZWRTdGF0dXNlcy5hZGRQdXRCeUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCks
IHB1dEJ5SWRTdGF0dXMpKSwgYmFzZSk7CisgICAgICAgIAogICAgICAgICBzdG9yZShiYXNlLCBp
ZGVudGlmaWVyTnVtYmVyLCB2YXJpYW50LCB2YWx1ZSk7CiAgICAgICAgIGlmIChVTkxJS0VMWSht
X2dyYXBoLmNvbXBpbGF0aW9uKCkpKQogICAgICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigp
LT5ub3RpY2VJbmxpbmVkUHV0QnlJZCgpOwpAQCAtNDE5Niw2ICs0MjE5LDggQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICB9CiAgICAgCiAgICAgY2FzZSBQdXRCeUlk
VmFyaWFudDo6VHJhbnNpdGlvbjogeworICAgICAgICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRT
dGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFkZFB1dEJ5SWRT
dGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0YXR1cykpLCBiYXNlKTsKKyAgICAg
ICAgCiAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFk
ZFN0cnVjdHVyZVNldCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSksIGJhc2UpOwogICAgICAgICBp
ZiAoIWNoZWNrKHZhcmlhbnQuY29uZGl0aW9uU2V0KCkpKSB7CiAgICAgICAgICAgICBlbWl0UHV0
QnlJZChiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJl
Y3QpOwpAQCAtNDI2Myw2ICs0Mjg4LDggQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0
QnlJZCgKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgUHV0QnlJZFZhcmlhbnQ6OlNldHRlcjog
eworICAgICAgICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBo
Lm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFkZFB1dEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmln
aW4oKSwgcHV0QnlJZFN0YXR1cykpLCBiYXNlKTsKKyAgICAgICAgCiAgICAgICAgIE5vZGUqIGxv
YWRlZFZhbHVlID0gbG9hZChTcGVjQ2VsbE90aGVyLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2
YXJpYW50KTsKICAgICAgICAgaWYgKCFsb2FkZWRWYWx1ZSkgewogICAgICAgICAgICAgZW1pdFB1
dEJ5SWQoYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGly
ZWN0KTsKQEAgLTQ3OTEsNyArNDgxOCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQKICAgICAgICAgICAgIGF1dG8mIGJ5dGVjb2RlID0gKnJlaW50ZXJwcmV0X2Nh
c3Q8T3BJbnN0YW5jZW9mKj4oY3VycmVudEluc3RydWN0aW9uKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgSW5zdGFuY2VPZlN0YXR1cyBzdGF0dXMgPSBJbnN0YW5jZU9mU3RhdHVzOjpjb21w
dXRlRm9yKAotICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9j
aywgbV9pbmxpbmVTdGFja1RvcC0+bV9zdHViSW5mb3MsCisgICAgICAgICAgICAgICAgbV9pbmxp
bmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5l
TWFwLAogICAgICAgICAgICAgICAgIG1fY3VycmVudEluZGV4KTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgTm9kZSogdmFsdWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLnZhbHVl
KCkpKTsKQEAgLTUwMjQsNyArNTA1MSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQKICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSAwOwog
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIo
bV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAg
ICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9pbmxpbmVTdGFja1RvcC0+bV9ieVZhbEluZm9z
LmdldChDb2RlT3JpZ2luKGN1cnJlbnRDb2RlT3JpZ2luKCkuYnl0ZWNvZGVJbmRleCkpOworICAg
ICAgICAgICAgICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9pbmxpbmVTdGFja1RvcC0+bV9i
YXNlbGluZU1hcC5nZXQoQ29kZU9yaWdpbihjdXJyZW50Q29kZU9yaWdpbigpLmJ5dGVjb2RlSW5k
ZXgpKS5ieVZhbEluZm87CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdoZW4gdGhlIGJ5dGVj
b2RlIGlzIG5vdCBjb21waWxlZCBpbiB0aGUgYmFzZWxpbmUgSklULCBieVZhbEluZm8gYmVjb21l
cyBudWxsLgogICAgICAgICAgICAgICAgIC8vIEF0IHRoYXQgdGltZSwgdGhlcmUgaXMgbm8gaW5m
b3JtYXRpb24uCiAgICAgICAgICAgICAgICAgaWYgKGJ5VmFsSW5mbwpAQCAtNTA5Myw3ICs1MTIw
LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAg
ICAgICAgIFB1dEJ5SWRTdGF0dXMgcHV0QnlJZFN0YXR1czsKICAgICAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFj
a1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgICAgICAgICBCeVZh
bEluZm8qIGJ5VmFsSW5mbyA9IG1faW5saW5lU3RhY2tUb3AtPm1fYnlWYWxJbmZvcy5nZXQoQ29k
ZU9yaWdpbihjdXJyZW50Q29kZU9yaWdpbigpLmJ5dGVjb2RlSW5kZXgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2Vs
aW5lTWFwLmdldChDb2RlT3JpZ2luKGN1cnJlbnRDb2RlT3JpZ2luKCkuYnl0ZWNvZGVJbmRleCkp
LmJ5VmFsSW5mbzsKICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdoZW4gdGhlIGJ5dGVj
b2RlIGlzIG5vdCBjb21waWxlZCBpbiB0aGUgYmFzZWxpbmUgSklULCBieVZhbEluZm8gYmVjb21l
cyBudWxsLgogICAgICAgICAgICAgICAgICAgICAvLyBBdCB0aGF0IHRpbWUsIHRoZXJlIGlzIG5v
IGluZm9ybWF0aW9uLgogICAgICAgICAgICAgICAgICAgICBpZiAoYnlWYWxJbmZvIApAQCAtNTE5
OSw4ICs1MjI2LDggQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFw
aC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdOwogICAgICAgICAgICAgR2V0QnlJZFN0
YXR1cyBnZXRCeUlkU3RhdHVzID0gR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKLSAgICAgICAg
ICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIG1fZGZnQ29kZUJsb2Nr
LAotICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fc3R1YkluZm9zLCBtX2RmZ1N0
dWJJbmZvcywKKyAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxv
Y2ssCisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwgbV9p
Y0NvbnRleHRTdGFjaywKICAgICAgICAgICAgICAgICBjdXJyZW50Q29kZU9yaWdpbigpLCB1aWQp
OwogCiAgICAgICAgICAgICBBY2Nlc3NUeXBlIHR5cGUgPSBBY2Nlc3NUeXBlOjpHZXQ7CkBAIC01
MjQzLDggKzUyNzAsOCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVk
CiAgICAgICAgICAgICBib29sIGRpcmVjdCA9IGN1cnJlbnRJbnN0cnVjdGlvbls4XS51LnB1dEJ5
SWRGbGFncyAmIFB1dEJ5SWRJc0RpcmVjdDsKIAogICAgICAgICAgICAgUHV0QnlJZFN0YXR1cyBw
dXRCeUlkU3RhdHVzID0gUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKLSAgICAgICAgICAgICAg
ICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIG1fZGZnQ29kZUJsb2NrLAotICAg
ICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fc3R1YkluZm9zLCBtX2RmZ1N0dWJJbmZv
cywKKyAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssCisg
ICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRl
eHRTdGFjaywKICAgICAgICAgICAgICAgICBjdXJyZW50Q29kZU9yaWdpbigpLCBtX2dyYXBoLmlk
ZW50aWZpZXJzKClbaWRlbnRpZmllck51bWJlcl0pOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBoYW5kbGVQdXRCeUlkKGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3Rh
dHVzLCBkaXJlY3QpOwpAQCAtNjYwMywxMiArNjYzMCwyMCBAQCBCeXRlQ29kZVBhcnNlcjo6SW5s
aW5lU3RhY2tFbnRyeTo6SW5saW5lCiAgICAgICAgIC8vIFdlIGRvIHRoaXMgd2hpbGUgaG9sZGlu
ZyB0aGUgbG9jayBiZWNhdXNlIHdlIHdhbnQgdG8gZW5jb3VyYWdlIFN0cnVjdHVyZVN0dWJJbmZv
J3MKICAgICAgICAgLy8gdG8gYmUgcG90ZW50aWFsbHkgYWRkZWQgdG8gb3BlcmF0aW9ucyBhbmQg
YmVjYXVzZSB0aGUgcHJvZmlsZWQgYmxvY2sgY291bGQgYmUgaW4gdGhlCiAgICAgICAgIC8vIG1p
ZGRsZSBvZiBMTEludC0+SklUIHRpZXItdXAgaW4gd2hpY2ggY2FzZSB3ZSB3b3VsZCBiZSBhZGRp
bmcgdGhlIGluZm8ncyByaWdodCBub3cuCi0gICAgICAgIGlmIChtX3Byb2ZpbGVkQmxvY2stPmhh
c0Jhc2VsaW5lSklUUHJvZmlsaW5nKCkpIHsKLSAgICAgICAgICAgIG1fcHJvZmlsZWRCbG9jay0+
Z2V0U3R1YkluZm9NYXAobG9ja2VyLCBtX3N0dWJJbmZvcyk7Ci0gICAgICAgICAgICBtX3Byb2Zp
bGVkQmxvY2stPmdldENhbGxMaW5rSW5mb01hcChsb2NrZXIsIG1fY2FsbExpbmtJbmZvcyk7Ci0g
ICAgICAgICAgICBtX3Byb2ZpbGVkQmxvY2stPmdldEJ5VmFsSW5mb01hcChsb2NrZXIsIG1fYnlW
YWxJbmZvcyk7CisgICAgICAgIGlmIChtX3Byb2ZpbGVkQmxvY2stPmhhc0Jhc2VsaW5lSklUUHJv
ZmlsaW5nKCkpCisgICAgICAgICAgICBtX3Byb2ZpbGVkQmxvY2stPmdldElDU3RhdHVzTWFwKGxv
Y2tlciwgbV9iYXNlbGluZU1hcCk7CisgICAgfQorICAgIAorICAgIG1fb3B0aW1pemVkQ29udGV4
dC5iYXNlbGluZUNvZGVCbG9jayA9IG1fcHJvZmlsZWRCbG9jazsKKyAgICBpZiAoT3B0aW9uczo6
dXNlUG9seXZhcmlhbnREZXZpcnR1YWxpemF0aW9uKCkpIHsKKyAgICAgICAgQ29kZUJsb2NrKiBv
cHRpbWl6ZWRCbG9jayA9IG1fcHJvZmlsZWRCbG9jay0+cmVwbGFjZW1lbnQoKTsKKyAgICAgICAg
bV9vcHRpbWl6ZWRDb250ZXh0Lm9wdGltaXplZENvZGVCbG9jayA9IG9wdGltaXplZEJsb2NrOwor
ICAgICAgICBpZiAob3B0aW1pemVkQmxvY2spIHsKKyAgICAgICAgICAgIENvbmN1cnJlbnRKU0xv
Y2tlciBsb2NrZXIob3B0aW1pemVkQmxvY2stPm1fbG9jayk7CisgICAgICAgICAgICBvcHRpbWl6
ZWRCbG9jay0+Z2V0SUNTdGF0dXNNYXAobG9ja2VyLCBtX29wdGltaXplZENvbnRleHQubWFwKTsK
ICAgICAgICAgfQogICAgIH0KKyAgICBieXRlQ29kZVBhcnNlci0+bV9pY0NvbnRleHRTdGFjay5h
cHBlbmQoJm1fb3B0aW1pemVkQ29udGV4dCk7CiAgICAgCiAgICAgaW50IGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzV2l0aEZpeHVwID0gc3RkOjptYXg8aW50Pihhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcywgY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOwogCkBAIC02NjczLDYgKzY3MDgs
MTMgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZQogICAgIGJ5dGVD
b2RlUGFyc2VyLT5tX2lubGluZVN0YWNrVG9wID0gdGhpczsKIH0KIAorQnl0ZUNvZGVQYXJzZXI6
OklubGluZVN0YWNrRW50cnk6On5JbmxpbmVTdGFja0VudHJ5KCkKK3sKKyAgICBtX2J5dGVDb2Rl
UGFyc2VyLT5tX2lubGluZVN0YWNrVG9wID0gbV9jYWxsZXI7CisgICAgUkVMRUFTRV9BU1NFUlQo
bV9ieXRlQ29kZVBhcnNlci0+bV9pY0NvbnRleHRTdGFjay5sYXN0KCkgPT0gJm1fb3B0aW1pemVk
Q29udGV4dCk7CisgICAgbV9ieXRlQ29kZVBhcnNlci0+bV9pY0NvbnRleHRTdGFjay5yZW1vdmVM
YXN0KCk7Cit9CisKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2NrKCkKIHsKICAg
ICBjbGVhckNhY2hlcygpOwpAQCAtNjc2OSwxNSArNjgxMSw2IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlKCkKICAgICAKICAgICBWRVJCT1NFX0xPRygiUGFyc2luZyAiLCAqbV9jb2RlQmxv
Y2ssICJcbiIpOwogICAgIAotICAgIG1fZGZnQ29kZUJsb2NrID0gbV9ncmFwaC5tX3BsYW4ucHJv
ZmlsZWRERkdDb2RlQmxvY2s7Ci0gICAgaWYgKGlzRlRMKG1fZ3JhcGgubV9wbGFuLm1vZGUpICYm
IG1fZGZnQ29kZUJsb2NrCi0gICAgICAgICYmIE9wdGlvbnM6OnVzZVBvbHl2YXJpYW50RGV2aXJ0
dWFsaXphdGlvbigpKSB7Ci0gICAgICAgIGlmIChPcHRpb25zOjp1c2VQb2x5dmFyaWFudENhbGxJ
bmxpbmluZygpKQotICAgICAgICAgICAgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVERkdTdGF0dXNl
cyhtX2RmZ0NvZGVCbG9jaywgbV9jYWxsQ29udGV4dE1hcCk7Ci0gICAgICAgIGlmIChPcHRpb25z
Ojp1c2VQb2x5dmFyaWFudEJ5SWRJbmxpbmluZygpKQotICAgICAgICAgICAgbV9kZmdDb2RlQmxv
Y2stPmdldFN0dWJJbmZvTWFwKG1fZGZnU3R1YkluZm9zKTsKLSAgICB9Ci0gICAgCiAgICAgSW5s
aW5lU3RhY2tFbnRyeSBpbmxpbmVTdGFja0VudHJ5KAogICAgICAgICB0aGlzLCBtX2NvZGVCbG9j
aywgbV9wcm9maWxlZEJsb2NrLCAwLCBWaXJ0dWFsUmVnaXN0ZXIoKSwgVmlydHVhbFJlZ2lzdGVy
KCksCiAgICAgICAgIG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIElubGluZUNhbGxGcmFt
ZTo6Q2FsbCwgbnVsbHB0cik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0Niw2ICs0NDYsOSBAQCB2b2lk
IGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAgY2FzZSBQcm9maWxlQ29u
dHJvbEZsb3c6CiAgICAgY2FzZSBQdXRIaW50OgogICAgIGNhc2UgSW5pdGlhbGl6ZUVudHJ5cG9p
bnRBcmd1bWVudHM6CisgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICBjYXNlIEZp
bHRlckdldEJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAg
ICB3cml0ZShTaWRlU3RhdGUpOwogICAgICAgICByZXR1cm47CiAgICAgICAgIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAJ
KHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJl
cnNFeGl0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3NSw5IEBAIGJvb2wgY2xv
YmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBoLCBOb2QKICAgICBjYXNlIEZlbmNlZFN0b3JlQmFy
cmllcjoKICAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlTdG9yYWdlOgogICAgIGNhc2UgUmVhbGxv
Y2F0ZVByb3BlcnR5U3RvcmFnZToKKyAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAg
IGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6
CiAgICAgICAgIC8vIFRoZXNlIGRvIGNsb2JiZXIgbWVtb3J5LCBidXQgbm90aGluZyB0aGF0IGlz
IG9ic2VydmFibGUuIEl0IG1heSBiZSBuaWNlIHRvIHNlcGFyYXRlIHRoZQogICAgICAgICAvLyBo
ZWFwcyBpbnRvIHRob3NlIHRoYXQgYXJlIG9ic2VydmFibGUgYW5kIHRob3NlIHRoYXQgYXJlbid0
LCBidXQgd2UgZG9uJ3QgZG8gdGhhdCByaWdodCBub3cuCiAgICAgICAgIC8vIEZJWE1FOiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NDQwCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuaAkocmV2aXNpb24gMjMyMjI3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJJbmxpbmVDYWxsRnJhbWVTZXQuaCIKICNpbmNs
dWRlICJKU0Nhc3QuaCIKICNpbmNsdWRlICJQcm9maWxlckNvbXBpbGF0aW9uLmgiCisjaW5jbHVk
ZSAiUmVjb3JkZWRTdGF0dXNlcy5oIgogI2luY2x1ZGUgPHd0Zi9CYWcuaD4KICNpbmNsdWRlIDx3
dGYvTm9uY29weWFibGUuaD4KIApAQCAtMTI1LDYgKzEyNiw3IEBAIHB1YmxpYzoKICAgICBCYWc8
Q29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50PiB3YXRjaHBvaW50czsKICAgICBCYWc8QWRh
cHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50PiBhZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnRzOwog
ICAgIEJhZzxBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQ+IGFkYXB0aXZl
SW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludHM7CisgICAgUmVjb3JkZWRTdGF0dXNlcyBy
ZWNvcmRlZFN0YXR1c2VzOwogICAgIFZlY3RvcjxKdW1wUmVwbGFjZW1lbnQ+IGp1bXBSZXBsYWNl
bWVudHM7CiAgICAgCiAgICAgU2NyYXRjaEJ1ZmZlciogY2F0Y2hPU1JFbnRyeUJ1ZmZlcjsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTU3LDcg
KzU1NywxNSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGF1dG8gYWRkRmlsdGVyU3Rh
dHVzID0gWyZdICgpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0
Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIEZp
bHRlckdldEJ5SWRTdGF0dXMsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
IE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFkZEdldEJ5SWRTdGF0dXMo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBzdGF0dXMpKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IEVkZ2UoY2hpbGQpKTsKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIGlmIChzdGF0dXMubnVtVmFyaWFudHMoKSA9PSAxKSB7CisgICAgICAgICAg
ICAgICAgICAgIGFkZEZpbHRlclN0YXR1cygpOwogICAgICAgICAgICAgICAgICAgICBlbWl0R2V0
QnlPZmZzZXQoaW5kZXhJbkJsb2NrLCBub2RlLCBiYXNlVmFsdWUsIHN0YXR1c1swXSwgaWRlbnRp
Zmllck51bWJlcik7CiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKQEAgLTU2Niw2ICs1NzQsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIGlmICghaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkpCiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGFkZEZpbHRl
clN0YXR1cygpOwogICAgICAgICAgICAgICAgIE11bHRpR2V0QnlPZmZzZXREYXRhKiBkYXRhID0g
bV9ncmFwaC5tX211bHRpR2V0QnlPZmZzZXREYXRhLmFkZCgpOwogICAgICAgICAgICAgICAgIGZv
ciAoY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBzdGF0dXMudmFyaWFudHMoKSkgewog
ICAgICAgICAgICAgICAgICAgICBkYXRhLT5jYXNlcy5hcHBlbmQoCkBAIC02MzksNiArNjQ4LDEx
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaWYgKCFhbGxHb29kKQogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBtX2luc2Vy
dGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNw
ZWNOb25lLCBGaWx0ZXJQdXRCeUlkU3RhdHVzLCBub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAg
ICAgICAgIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFkZFB1dEJ5SWRT
dGF0dXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBzdGF0dXMpKSwKKyAgICAgICAgICAgICAgICAg
ICAgRWRnZShjaGlsZCkpOworICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChz
dGF0dXMubnVtVmFyaWFudHMoKSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRQdXRC
eU9mZnNldChpbmRleEluQmxvY2ssIG5vZGUsIGJhc2VWYWx1ZSwgc3RhdHVzWzBdLCBpZGVudGlm
aWVyTnVtYmVyKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMiw2
ICszMTIsOSBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2Fz
ZSBBdG9taWNzWG9yOgogICAgIGNhc2UgQXRvbWljc0lzTG9ja0ZyZWU6CiAgICAgY2FzZSBNYXRj
aFN0cnVjdHVyZToKKyAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmls
dGVyR2V0QnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGNhc2UgUHVzaFdpdGhTY29wZToKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMjMyMjI3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjEzOCw2ICsyMTM4LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRHbG9i
YWxUaGlzOgogICAgICAgICBjYXNlIEV4dHJhY3RWYWx1ZUZyb21XZWFrTWFwR2V0OgogICAgICAg
ICBjYXNlIENQVUludHJpbnNpYzoKKyAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoK
KyAgICAgICAgY2FzZSBGaWx0ZXJHZXRCeUlkU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlclB1
dEJ5SWRTdGF0dXM6CiAgICAgICAgICAgICBicmVhazsKICNlbHNlCiAgICAgICAgIGRlZmF1bHQ6
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMjMy
MjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM1Niw2ICszNTYsMTIgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYg
b3V0LCBjb25zdAogICAgICAgICBvdXQucHJpbnQoY29tbWEsICJpZ25vcmVMYXN0SW5kZXhJc1dy
aXRhYmxlID0gIiwgbm9kZS0+aWdub3JlTGFzdEluZGV4SXNXcml0YWJsZSgpKTsKICAgICBpZiAo
bm9kZS0+aXNDb25zdGFudCgpKQogICAgICAgICBvdXQucHJpbnQoY29tbWEsIHBvaW50ZXJEdW1w
SW5Db250ZXh0KG5vZGUtPmNvbnN0YW50KCksIGNvbnRleHQpKTsKKyAgICBpZiAobm9kZS0+aGFz
Q2FsbExpbmtTdGF0dXMoKSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAqbm9kZS0+Y2FsbExp
bmtTdGF0dXMoKSk7CisgICAgaWYgKG5vZGUtPmhhc0dldEJ5SWRTdGF0dXMoKSkKKyAgICAgICAg
b3V0LnByaW50KGNvbW1hLCAqbm9kZS0+Z2V0QnlJZFN0YXR1cygpKTsKKyAgICBpZiAobm9kZS0+
aGFzUHV0QnlJZFN0YXR1cygpKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICpub2RlLT5wdXRC
eUlkU3RhdHVzKCkpOwogICAgIGlmIChub2RlLT5pc0p1bXAoKSkKICAgICAgICAgb3V0LnByaW50
KGNvbW1hLCAiVDoiLCAqbm9kZS0+dGFyZ2V0QmxvY2soKSk7CiAgICAgaWYgKG5vZGUtPmlzQnJh
bmNoKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OCw2ICsxODgsOCBAQCB2b2lkIEpJ
VENvbXBpbGVyOjpjb21waWxlRXhjZXB0aW9uSGFuZGxlCiAKIHZvaWQgSklUQ29tcGlsZXI6Omxp
bmsoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKIHsKKyAgICBtX2ppdENvZGUtPmNvbW1vbi5yZWNv
cmRlZFN0YXR1c2VzID0gV1RGTW92ZShtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKTsK
KyAgICAKICAgICAvLyBMaW5rIHRoZSBjb2RlLCBwb3B1bGF0ZSBkYXRhIGluIENvZGVCbG9jayBk
YXRhIHN0cnVjdHVyZXMuCiAgICAgbV9qaXRDb2RlLT5jb21tb24uZnJhbWVSZWdpc3RlckNvdW50
ID0gbV9ncmFwaC5mcmFtZVJlZ2lzdGVyQ291bnQoKTsKICAgICBtX2ppdENvZGUtPmNvbW1vbi5y
ZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0ID0gbV9ncmFwaC5yZXF1aXJlZFJlZ2lzdGVyQ291
bnRGb3JFeGl0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5j
cHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5
RXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw2ICsxMDEsOSBAQCBFeGl0TW9kZSBtYXlF
eGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5vZGUqCiAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgogICAg
IGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OgogICAgIGNhc2UgTnVrZVN0cnVjdHVyZUFu
ZFNldEJ1dHRlcmZseToKKyAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2Ug
RmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAg
ICAgIGJyZWFrOwogCiAgICAgY2FzZSBTdHJDYXQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3NjksNiArMjc2OSwzOSBAQCBwdWJsaWM6
CiAgICAgICAgIEFTU0VSVChvcCgpID09IFRocm93U3RhdGljRXJyb3IpOwogICAgICAgICByZXR1
cm4gbV9vcEluZm8uYXM8dWludDMyX3Q+KCk7CiAgICAgfQorICAgIAorICAgIGJvb2wgaGFzQ2Fs
bExpbmtTdGF0dXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0gRmlsdGVyQ2FsbExp
bmtTdGF0dXM7CisgICAgfQorICAgIAorICAgIENhbGxMaW5rU3RhdHVzKiBjYWxsTGlua1N0YXR1
cygpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzQ2FsbExpbmtTdGF0dXMoKSk7CisgICAgICAg
IHJldHVybiBtX29wSW5mby5hczxDYWxsTGlua1N0YXR1cyo+KCk7CisgICAgfQorICAgIAorICAg
IGJvb2wgaGFzR2V0QnlJZFN0YXR1cygpCisgICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBG
aWx0ZXJHZXRCeUlkU3RhdHVzOworICAgIH0KKyAgICAKKyAgICBHZXRCeUlkU3RhdHVzKiBnZXRC
eUlkU3RhdHVzKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNHZXRCeUlkU3RhdHVzKCkpOwor
ICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8R2V0QnlJZFN0YXR1cyo+KCk7CisgICAgfQorICAg
IAorICAgIGJvb2wgaGFzUHV0QnlJZFN0YXR1cygpCisgICAgeworICAgICAgICByZXR1cm4gb3Ao
KSA9PSBGaWx0ZXJQdXRCeUlkU3RhdHVzOworICAgIH0KKyAgICAKKyAgICBQdXRCeUlkU3RhdHVz
KiBwdXRCeUlkU3RhdHVzKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNQdXRCeUlkU3RhdHVz
KCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8UHV0QnlJZFN0YXR1cyo+KCk7CisgICAg
fQogCiAgICAgdm9pZCBkdW1wQ2hpbGRyZW4oUHJpbnRTdHJlYW0mIG91dCkKICAgICB7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAyMzIyMjcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM5NCwxMSArMzk0LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewog
ICAgIG1hY3JvKEdldEFyZ3VtZW50LCBOb2RlUmVzdWx0SlMpIFwKICAgICBcCiAgICAgbWFjcm8o
TmV3RnVuY3Rpb24sIE5vZGVSZXN1bHRKUykgXAotICAgIFwKICAgICBtYWNybyhOZXdHZW5lcmF0
b3JGdW5jdGlvbiwgTm9kZVJlc3VsdEpTKSBcCi0gICAgXAogICAgIG1hY3JvKE5ld0FzeW5jR2Vu
ZXJhdG9yRnVuY3Rpb24sIE5vZGVSZXN1bHRKUykgXAotICAgIFwKICAgICBtYWNybyhOZXdBc3lu
Y0Z1bmN0aW9uLCBOb2RlUmVzdWx0SlMpIFwKICAgICBcCiAgICAgLyogQmxvY2sgdGVybWluYWxz
LiAqL1wKQEAgLTQ3NSw2ICs0NzIsMTEgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewogICAgIFwKICAgICAvKiBVc2VkIGZvciAkdm0gcGVyZm9ybWFuY2UgZGVidWdnaW5nICovIFwK
ICAgICBtYWNybyhDUFVJbnRyaW5zaWMsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUp
IFwKKyAgICBcCisgICAgLyogVXNlZCB0byBwcm92aWRlIGZlZWRiYWNrIHRvIHRoZSBJQyBwcm9m
aWxlci4gKi8gXAorICAgIG1hY3JvKEZpbHRlckNhbGxMaW5rU3RhdHVzLCBOb2RlTXVzdEdlbmVy
YXRlKSBcCisgICAgbWFjcm8oRmlsdGVyR2V0QnlJZFN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkg
XAorICAgIG1hY3JvKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKIAog
CiAvLyBUaGlzIGVudW0gZ2VuZXJhdGVzIGEgbW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIGlkIGZv
ciBhbGwgTm9kZSB0eXBlcywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdEJhc2UuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXRCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MiwxMSArNDIs
MTcgQEAgdm9pZCBPU1JFeGl0QmFzZTo6Y29uc2lkZXJBZGRpbmdBc0ZyZXF1ZQogICAgICAgICBi
YXNlbGluZUNvZGVCbG9ja0Zvck9yaWdpbkFuZEJhc2VsaW5lQ29kZUJsb2NrKAogICAgICAgICAg
ICAgbV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGUsIHByb2ZpbGVkQ29kZUJsb2NrKTsKICAgICBp
ZiAoc291cmNlUHJvZmlsZWRDb2RlQmxvY2spIHsKKyAgICAgICAgRXhpdGluZ0lubGluZUtpbmQg
aW5saW5lS2luZDsKKyAgICAgICAgaWYgKG1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlLmlubGlu
ZUNhbGxGcmFtZSkKKyAgICAgICAgICAgIGlubGluZUtpbmQgPSBFeGl0RnJvbUlubGluZWQ7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlubGluZUtpbmQgPSBFeGl0RnJvbU5vdElubGluZWQ7
CisgICAgICAgIAogICAgICAgICBGcmVxdWVudEV4aXRTaXRlIHNpdGU7CiAgICAgICAgIGlmICht
X3dhc0hvaXN0ZWQpCi0gICAgICAgICAgICBzaXRlID0gRnJlcXVlbnRFeGl0U2l0ZShIb2lzdGlu
Z0ZhaWxlZCwgaml0VHlwZSk7CisgICAgICAgICAgICBzaXRlID0gRnJlcXVlbnRFeGl0U2l0ZShI
b2lzdGluZ0ZhaWxlZCwgaml0VHlwZSwgaW5saW5lS2luZCk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHNpdGUgPSBGcmVxdWVudEV4aXRTaXRlKG1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxl
LmJ5dGVjb2RlSW5kZXgsIG1fa2luZCwgaml0VHlwZSk7CisgICAgICAgICAgICBzaXRlID0gRnJl
cXVlbnRFeGl0U2l0ZShtX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZS5ieXRlY29kZUluZGV4LCBt
X2tpbmQsIGppdFR5cGUsIGlubGluZUtpbmQpOwogICAgICAgICBFeGl0UHJvZmlsZTo6YWRkKHNv
dXJjZVByb2ZpbGVkQ29kZUJsb2NrLCBzaXRlKTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUGxhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzMyw2ICs2MzMs
OCBAQCB2b2lkIFBsYW46OmNoZWNrTGl2ZW5lc3NBbmRWaXNpdENoaWxkcmVuCiAgICAgY2xlYW5N
dXN0SGFuZGxlVmFsdWVzSWZOZWNlc3NhcnkoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtdXN0
SGFuZGxlVmFsdWVzLnNpemUoKTsgaS0tOykKICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJp
ZXJlZChtdXN0SGFuZGxlVmFsdWVzW2ldKTsKKyAgICAKKyAgICByZWNvcmRlZFN0YXR1c2VzLm1h
cmtJZkNoZWFwKHZpc2l0b3IpOwogCiAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChjb2Rl
QmxvY2spOwogICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQoY29kZUJsb2NrLT5hbHRlcm5h
dGl2ZSgpKTsKQEAgLTY0OSw2ICs2NTEsMTEgQEAgdm9pZCBQbGFuOjpjaGVja0xpdmVuZXNzQW5k
VmlzaXRDaGlsZHJlbgogICAgIHRyYW5zaXRpb25zLnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiB9
CiAKK3ZvaWQgUGxhbjo6ZmluYWxpemVJbkdDKCkKK3sKKyAgICByZWNvcmRlZFN0YXR1c2VzLmZp
bmFsaXplV2l0aG91dERlbGV0aW5nKCk7Cit9CisKIGJvb2wgUGxhbjo6aXNLbm93blRvQmVMaXZl
RHVyaW5nR0MoKQogewogICAgIGlmIChzdGFnZSA9PSBDYW5jZWxsZWQpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1BsYW4uaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiw2ICszNiw3IEBA
CiAjaW5jbHVkZSAiRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiT3Bl
cmFuZHMuaCIKICNpbmNsdWRlICJQcm9maWxlckNvbXBpbGF0aW9uLmgiCisjaW5jbHVkZSAiUmVj
b3JkZWRTdGF0dXNlcy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CiAKQEAgLTcyLDYgKzczLDcgQEAgc3RydWN0IFBsYW4g
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZQogICAgIHZvaWQgaXRlcmF0ZUNvZGVCbG9ja3NG
b3JHQyhjb25zdCBGdW5jJik7CiAgICAgdm9pZCBjaGVja0xpdmVuZXNzQW5kVmlzaXRDaGlsZHJl
bihTbG90VmlzaXRvciYpOwogICAgIGJvb2wgaXNLbm93blRvQmVMaXZlRHVyaW5nR0MoKTsKKyAg
ICB2b2lkIGZpbmFsaXplSW5HQygpOwogICAgIHZvaWQgY2FuY2VsKCk7CiAKICAgICBib29sIGNh
blRpZXJVcEFuZE9TUkVudGVyKCkgY29uc3QgeyByZXR1cm4gIXRpZXJVcEFuZE9TUkVudGVyQnl0
ZWNvZGVzLmlzRW1wdHkoKTsgfQpAQCAtMTA0LDYgKzEwNiw3IEBAIHN0cnVjdCBQbGFuIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGUKICAgICBEZXNpcmVkSWRlbnRpZmllcnMgaWRlbnRpZmll
cnM7CiAgICAgRGVzaXJlZFdlYWtSZWZlcmVuY2VzIHdlYWtSZWZlcmVuY2VzOwogICAgIERlc2ly
ZWRUcmFuc2l0aW9ucyB0cmFuc2l0aW9uczsKKyAgICBSZWNvcmRlZFN0YXR1c2VzIHJlY29yZGVk
U3RhdHVzZXM7CiAgICAgCiAgICAgYm9vbCB3aWxsVHJ5VG9UaWVyVXAgeyBmYWxzZSB9OwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEyMDYsNiArMTIwNiw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSW5p
dGlhbGl6ZUVudHJ5cG9pbnRBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgV2Vha1NldEFkZDoKICAg
ICAgICAgY2FzZSBXZWFrTWFwU2V0OgorICAgICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVz
OgorICAgICAgICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVy
UHV0QnlJZFN0YXR1czoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAg
IC8vIFRoaXMgZ2V0cyBpZ25vcmVkIGJlY2F1c2UgaXQgb25seSBwcmV0ZW5kcyB0byBwcm9kdWNl
IGEgdmFsdWUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3OCw2ICs0NzgsMTMgQEAgYm9v
bCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgICAgICAvLyBhbHJlYWR5
IGZvcmNlIHRoZXNlIHRoaW5ncyB0byBiZSBvcmRlcmVkIHByZWNpc2VseS4gSSdtIGp1c3Qgbm90
IGNvbmZpZGVudCBlbm91Z2ggaW4gbXkKICAgICAgICAgLy8gZWZmZWN0IGJhc2VkIG1lbW9yeSBt
b2RlbCB0byByZWx5IHNvbGVseSBvbiB0aGF0IHJpZ2h0IG5vdy4KICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAKKyAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2Ug
RmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CisgICAg
ICAgIC8vIFdlIGRvbid0IHdhbnQgdGhlc2UgdG8gYmUgbW92ZWQgYW55d2hlcmUgb3RoZXIgdGhh
biB3aGVyZSB3ZSBwdXQgdGhlbSwgc2luY2Ugd2Ugd2FudCB0aGVtCisgICAgICAgIC8vIHRvIGNh
cHR1cmUgInByb2ZpbGluZyIgYXQgdGhlIHBvaW50IGluIGNvbnRyb2wgZmxvdyBoZXJlIHRoZSB1
c2VyIHB1dCB0aGVtLgorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjYXNlIEdldEJ5VmFs
OgogICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2
aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAzMyw2ICs0MDMzLDExIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIENoZWNrU3RydWN0
dXJlT3JFbXB0eToKICAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG5vZGUsICJDaGVj
a1N0cnVjdHVyZU9yRW1wdHkgb25seSB1c2VkIGluIDY0LWJpdCBERkciKTsKICAgICAgICAgYnJl
YWs7CisgICAgICAgIAorICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgY2FzZSBG
aWx0ZXJHZXRCeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKKyAgICAg
ICAgYnJlYWs7CiAKICAgICBjYXNlIExhc3ROb2RlVHlwZToKICAgICBjYXNlIFBoaToKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYyNiw2ICs0NjI2LDExIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCisgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICBjYXNlIEZpbHRlckdl
dEJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgorICAgICAgICBicmVh
azsKKwogI2Vsc2UgLy8gRU5BQkxFKEZUTF9KSVQpCiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9v
cDoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5Myw4
ICszOTMsMTAgQEAgdm9pZCBXb3JrbGlzdDo6cmVtb3ZlRGVhZFBsYW5zKFZNJiB2bSkKICAgICAg
ICAgICAgIFBsYW4qIHBsYW4gPSBpdGVyLT52YWx1ZS5nZXQoKTsKICAgICAgICAgICAgIGlmIChw
bGFuLT52bSAhPSAmdm0pCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBp
ZiAocGxhbi0+aXNLbm93blRvQmVMaXZlRHVyaW5nR0MoKSkKKyAgICAgICAgICAgIGlmIChwbGFu
LT5pc0tub3duVG9CZUxpdmVEdXJpbmdHQygpKSB7CisgICAgICAgICAgICAgICAgcGxhbi0+Zmlu
YWxpemVJbkdDKCk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChwbGFuLT5zdGFnZSAhPSBQbGFuOjpDYW5jZWxsZWQp
OyAvLyBTaG91bGQgbm90IGJlIGNhbmNlbGxlZCwgeWV0LgogICAgICAgICAgICAgQVNTRVJUKCFk
ZWFkUGxhbktleXMuY29udGFpbnMocGxhbi0+a2V5KCkpKTsKICAgICAgICAgICAgIGRlYWRQbGFu
S2V5cy5hZGQocGxhbi0+a2V5KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgJKHJldmlzaW9uIDIzMjIyNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgRlRMIHsKICAgICBtYWNybyhEaXJlY3RBcmd1bWVudHNfbWluQ2FwYWNpdHksIERpcmVjdEFy
Z3VtZW50czo6b2Zmc2V0T2ZNaW5DYXBhY2l0eSgpKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1l
bnRzX21hcHBlZEFyZ3VtZW50cywgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZk1hcHBlZEFyZ3Vt
ZW50cygpKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX21vZGlmaWVkQXJndW1lbnRzRGVz
Y3JpcHRvciwgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZk1vZGlmaWVkQXJndW1lbnRzRGVzY3Jp
cHRvcigpKSBcCisgICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9hbGxvY2F0b3IsIEZ1bmN0aW9u
UmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9j
YXRpb25Qcm9maWxlOjpvZmZzZXRPZkFsbG9jYXRvcigpKSBcCisgICAgbWFjcm8oRnVuY3Rpb25S
YXJlRGF0YV9zdHJ1Y3R1cmUsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZlN0cnVjdHVy
ZSgpKSBcCiAgICAgbWFjcm8oR2V0dGVyU2V0dGVyX2dldHRlciwgR2V0dGVyU2V0dGVyOjpvZmZz
ZXRPZkdldHRlcigpKSBcCiAgICAgbWFjcm8oR2V0dGVyU2V0dGVyX3NldHRlciwgR2V0dGVyU2V0
dGVyOjpvZmZzZXRPZlNldHRlcigpKSBcCiAgICAgbWFjcm8oSlNBcnJheUJ1ZmZlclZpZXdfbGVu
Z3RoLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkgXApAQCAtMTEyLDEwICsx
MTQsMTAgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3JvKFN0cmlu
Z0ltcGxfbGVuZ3RoLCBTdHJpbmdJbXBsOjpsZW5ndGhNZW1vcnlPZmZzZXQoKSkgXAogICAgIG1h
Y3JvKFN0cnVjdHVyZV9jbGFzc0luZm8sIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpIFwK
ICAgICBtYWNybyhTdHJ1Y3R1cmVfZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVj
dE9mZnNldCgpKSBcCisgICAgbWFjcm8oU3RydWN0dXJlX2luZGV4aW5nTW9kZUluY2x1ZGluZ0hp
c3RvcnksIFN0cnVjdHVyZTo6aW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeU9mZnNldCgpKSBc
CisgICAgbWFjcm8oU3RydWN0dXJlX2lubGluZUNhcGFjaXR5LCBTdHJ1Y3R1cmU6OmlubGluZUNh
cGFjaXR5T2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfcHJvdG90eXBlLCBTdHJ1Y3R1
cmU6OnByb3RvdHlwZU9mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlX3N0cnVjdHVyZUlE
LCBTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KCkpIFwKLSAgICBtYWNybyhTdHJ1Y3R1cmVf
aW5saW5lQ2FwYWNpdHksIFN0cnVjdHVyZTo6aW5saW5lQ2FwYWNpdHlPZmZzZXQoKSkgXAotICAg
IG1hY3JvKFN0cnVjdHVyZV9pbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5LCBTdHJ1Y3R1cmU6
OmluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnlPZmZzZXQoKSkgXAogICAgIG1hY3JvKEhhc2hN
YXBJbXBsX2NhcGFjaXR5LCBIYXNoTWFwSW1wbDxIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXRE
YXRhS2V5Pj46Om9mZnNldE9mQ2FwYWNpdHkoKSkgXAogICAgIG1hY3JvKEhhc2hNYXBJbXBsX2J1
ZmZlciwgIEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+Pjo6
b2Zmc2V0T2ZCdWZmZXIoKSkgXAogICAgIG1hY3JvKEhhc2hNYXBJbXBsX2hlYWQsICBIYXNoTWFw
SW1wbDxIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46Om9mZnNldE9mSGVhZCgp
KSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1MSw2ICszNTEsMTAgQEAgaW5saW5l
IENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgUHV0QnlWYWxEaXJl
Y3Q6CiAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgIGNhc2UgTWF0Y2hTdHJ1Y3R1cmU6
CisgICAgY2FzZSBDcmVhdGVUaGlzOgorICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6Cisg
ICAgY2FzZSBGaWx0ZXJHZXRCeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1
czoKICAgICAgICAgLy8gVGhlc2UgYXJlIE9LLgogICAgICAgICBicmVhazsKIApAQCAtMzYyLDcg
KzM2Niw2IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICAg
ICAgYnJlYWs7CiAKICAgICBjYXNlIElkZW50aXR5V2l0aFByb2ZpbGU6Ci0gICAgY2FzZSBDcmVh
dGVUaGlzOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJV
cEFuZE9TUkVudGVyOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIz
MjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzkxLDYgKzM5MSw4IEBAIHB1YmxpYzoKIAogICAgICAgICAvLyBX
ZSBwdXQgdGhlIGJsb2NrcyBpbnRvIHRoZSBCMyBwcm9jZWR1cmUgaW4gYSBzdXBlciB3ZWlyZCBv
cmRlci4gTm93IHdlIHJlb3JkZXIgdGhlbS4KICAgICAgICAgbV9vdXQuYXBwbHlCbG9ja09yZGVy
KCk7CisgICAgICAgIAorICAgICAgICBtX2Z0bFN0YXRlLmppdENvZGUtPmNvbW1vbi5yZWNvcmRl
ZFN0YXR1c2VzID0gV1RGTW92ZShtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzKTsKICAg
ICB9CiAKIHByaXZhdGU6CkBAIC04NDcsNiArODQ5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2Fz
ZSBOZXdBcnJheVdpdGhTcHJlYWQ6CiAgICAgICAgICAgICBjb21waWxlTmV3QXJyYXlXaXRoU3By
ZWFkKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDcmVhdGVUaGlzOgorICAg
ICAgICAgICAgY29tcGlsZUNyZWF0ZVRoaXMoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIFNwcmVhZDoKICAgICAgICAgICAgIGNvbXBpbGVTcHJlYWQoKTsKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMTMxMiw2ICsxMzE3LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBCb3R0
b21WYWx1ZToKICAgICAgICAgY2FzZSBLaWxsU3RhY2s6CiAgICAgICAgIGNhc2UgSW5pdGlhbGl6
ZUVudHJ5cG9pbnRBcmd1bWVudHM6CisgICAgICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6
CisgICAgICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJQ
dXRCeUlkU3RhdHVzOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCAiVW5yZWNvZ25pemVkIG5vZGUgaW4g
RlRMIGJhY2tlbmQiKTsKQEAgLTU2NjIsNiArNTY3MCw0MCBAQCBwcml2YXRlOgogCiAgICAgICAg
IHNldEpTVmFsdWUocmVzdWx0KTsKICAgICB9CisgICAgCisgICAgdm9pZCBjb21waWxlQ3JlYXRl
VGhpcygpCisgICAgeworICAgICAgICBMVmFsdWUgY2FsbGVlID0gbG93Q2VsbChtX25vZGUtPmNo
aWxkMSgpKTsKKworICAgICAgICBMQmFzaWNCbG9jayBpc0Z1bmN0aW9uQmxvY2sgPSBtX291dC5u
ZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBoYXNSYXJlRGF0YSA9IG1fb3V0Lm5ld0Js
b2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRoID0gbV9vdXQubmV3QmxvY2soKTsK
KyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKKwor
ICAgICAgICBtX291dC5icmFuY2goaXNGdW5jdGlvbihjYWxsZWUsIHByb3ZlblR5cGUobV9ub2Rl
LT5jaGlsZDEoKSkpLCB1c3VhbGx5KGlzRnVuY3Rpb25CbG9jayksIHJhcmVseShzbG93UGF0aCkp
OworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaXNGdW5j
dGlvbkJsb2NrLCBoYXNSYXJlRGF0YSk7CisgICAgICAgIExWYWx1ZSByYXJlRGF0YSA9IG1fb3V0
LmxvYWRQdHIoY2FsbGVlLCBtX2hlYXBzLkpTRnVuY3Rpb25fcmFyZURhdGEpOworICAgICAgICBt
X291dC5icmFuY2gobV9vdXQuaXNaZXJvNjQocmFyZURhdGEpLCByYXJlbHkoc2xvd1BhdGgpLCB1
c3VhbGx5KGhhc1JhcmVEYXRhKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaGFzUmFyZURh
dGEsIHNsb3dQYXRoKTsKKyAgICAgICAgTFZhbHVlIGFsbG9jYXRvciA9IG1fb3V0LmxvYWRQdHIo
cmFyZURhdGEsIG1faGVhcHMuRnVuY3Rpb25SYXJlRGF0YV9hbGxvY2F0b3IpOworICAgICAgICBM
VmFsdWUgc3RydWN0dXJlID0gbV9vdXQubG9hZFB0cihyYXJlRGF0YSwgbV9oZWFwcy5GdW5jdGlv
blJhcmVEYXRhX3N0cnVjdHVyZSk7CisgICAgICAgIExWYWx1ZSBidXR0ZXJmbHkgPSBtX291dC5j
b25zdEludFB0cigwKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0
LmFuY2hvcihhbGxvY2F0ZU9iamVjdChhbGxvY2F0b3IsIHN0cnVjdHVyZSwgYnV0dGVyZmx5LCBz
bG93UGF0aCkpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAg
bV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIFZhbHVlRnJv
bUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKAorICAgICAgICAgICAgSW50
NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25DcmVhdGVUaGlzKSwgbV9jYWxsRnJhbWUsIGNh
bGxlZSwgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPmlubGluZUNhcGFjaXR5KCkpKSk7CisgICAg
ICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhj
b250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LnBo
aShJbnQ2NCwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCk7CisKKyAgICAgICAgbXV0YXRvckZlbmNl
KCk7CisgICAgICAgIHNldEpTVmFsdWUocmVzdWx0KTsKKyAgICB9CiAKICAgICB2b2lkIGNvbXBp
bGVTcHJlYWQoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Q
cm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuY3BwCShyZXZpc2lvbiAy
MzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29k
ZVNlcXVlbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTItMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ5LDEyICs0OSwxMiBAQCBCeXRlY29k
ZVNlcXVlbmNlOjpCeXRlY29kZVNlcXVlbmNlKENvZGVCCiAgICAgICAgIG1faGVhZGVyLmFwcGVu
ZChvdXQudG9DU3RyaW5nKCkpOwogICAgIH0KICAgICAKLSAgICBTdHViSW5mb01hcCBzdHViSW5m
b3M7Ci0gICAgY29kZUJsb2NrLT5nZXRTdHViSW5mb01hcChzdHViSW5mb3MpOworICAgIElDU3Rh
dHVzTWFwIHN0YXR1c01hcDsKKyAgICBjb2RlQmxvY2stPmdldElDU3RhdHVzTWFwKHN0YXR1c01h
cCk7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gMDsgYnl0ZWNvZGVJ
bmRleCA8IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOykgewogICAgICAgICBvdXQu
cmVzZXQoKTsKLSAgICAgICAgY29kZUJsb2NrLT5kdW1wQnl0ZWNvZGUob3V0LCBieXRlY29kZUlu
ZGV4LCBzdHViSW5mb3MpOworICAgICAgICBjb2RlQmxvY2stPmR1bXBCeXRlY29kZShvdXQsIGJ5
dGVjb2RlSW5kZXgsIHN0YXR1c01hcCk7CiAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gSW50
ZXJwcmV0ZXI6OmdldE9wY29kZUlEKGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVJ
bmRleF0udS5vcGNvZGUpOwogICAgICAgICBtX3NlcXVlbmNlLmFwcGVuZChCeXRlY29kZShieXRl
Y29kZUluZGV4LCBvcGNvZGVJRCwgb3V0LnRvQ1N0cmluZygpKSk7CiAgICAgICAgIGJ5dGVjb2Rl
SW5kZXggKz0gb3Bjb2RlTGVuZ3RoKG9wY29kZUlEKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjc1LDYgKzI3NSw3
IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW4KICAgICB2KHVuc2ln
bmVkLCBtYXhBY2Nlc3NWYXJpYW50TGlzdFNpemUsIDgsIE5vcm1hbCwgbnVsbHB0cikgXAogICAg
IHYoYm9vbCwgdXNlUG9seXZhcmlhbnREZXZpcnR1YWxpemF0aW9uLCB0cnVlLCBOb3JtYWwsIG51
bGxwdHIpIFwKICAgICB2KGJvb2wsIHVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcsIHRydWUs
IE5vcm1hbCwgbnVsbHB0cikgXAorICAgIHYodW5zaWduZWQsIG1heFBvbHltb3JwaGljQWNjZXNz
SW5saW5pbmdMaXN0U2l6ZSwgOCwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihib29sLCB1c2VQ
b2x5bW9ycGhpY0NhbGxJbmxpbmluZywgdHJ1ZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihi
b29sLCB1c2VQb2x5bW9ycGhpY0NhbGxJbmxpbmluZ0Zvck5vblN0dWJTdGF0dXMsIGZhbHNlLCBO
b3JtYWwsIG51bGxwdHIpIFwKICAgICB2KHVuc2lnbmVkLCBtYXhQb2x5bW9ycGhpY0NhbGxWYXJp
YW50TGlzdFNpemUsIDE1LCBOb3JtYWwsIG51bGxwdHIpIFwKQEAgLTMyMiw5ICszMjMsNiBAQCBj
b25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3NlbWJseVN0cmVhbWluCiAgICAgXAogICAgIHYodW5z
aWduZWQsIG1heGltdW1WYXJhcmdzRm9ySW5saW5pbmcsIDEwMCwgTm9ybWFsLCBudWxscHRyKSBc
CiAgICAgXAotICAgIHYoYm9vbCwgdXNlUG9seXZhcmlhbnRDYWxsSW5saW5pbmcsIHRydWUsIE5v
cm1hbCwgbnVsbHB0cikgXAotICAgIHYoYm9vbCwgdXNlUG9seXZhcmlhbnRCeUlkSW5saW5pbmcs
IHRydWUsIE5vcm1hbCwgbnVsbHB0cikgXAotICAgIFwKICAgICB2KGJvb2wsIHVzZU1heGltYWxG
bHVzaEluc2VydGlvblBoYXNlLCBmYWxzZSwgTm9ybWFsLCAiU2V0dGluZyB0byB0cnVlIGFsbG93
cyB0aGUgREZHJ3MgTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UgdG8gcnVuLiIpIFwKICAgICBc
CiAgICAgdih1bnNpZ25lZCwgbWF4aW11bUJpbmFyeVN0cmluZ1N3aXRjaENhc2VMZW5ndGgsIDUw
LCBOb3JtYWwsIG51bGxwdHIpIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341779</attachid>
            <date>2018-06-01 12:35:53 -0700</date>
            <delta_ts>2018-06-01 16:57:41 -0700</delta_ts>
            <desc>recursive polyvariant profiling appears to work</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>156349</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIzMjIyNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNDQwLDYgKzQ0MCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUEKICAgICBieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgKICAgICBieXRlY29k
ZS9FeGVjdXRpb25Db3VudGVyLmgKICAgICBieXRlY29kZS9FeGl0S2luZC5oCisgICAgYnl0ZWNv
ZGUvRXhpdGluZ0lubGluZUtpbmQuaAogICAgIGJ5dGVjb2RlL0V4aXRpbmdKSVRUeXBlLmgKICAg
ICBieXRlY29kZS9FeHByZXNzaW9uUmFuZ2VJbmZvLmgKICAgICBieXRlY29kZS9IYW5kbGVySW5m
by5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyMzIyMjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIx
MiwxMyArMjEyLDE3IEBAIGJ5dGVjb2RlL0RpcmVjdEV2YWxDb2RlQ2FjaGUuY3BwCiBieXRlY29k
ZS9FdmFsQ29kZUJsb2NrLmNwcAogYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5j
cHAKIGJ5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIuY3BwCitieXRlY29kZS9FeGl0RmxhZy5jcHAK
IGJ5dGVjb2RlL0V4aXRLaW5kLmNwcAorYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuY3BwCiBi
eXRlY29kZS9FeGl0aW5nSklUVHlwZS5jcHAKIGJ5dGVjb2RlL0Z1bGxDb2RlT3JpZ2luLmNwcAog
Ynl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suY3BwCiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNw
cAogYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCiBieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlLmNwcAorYnl0ZWNvZGUvSUNTdGF0dXNNYXAuY3BwCitieXRlY29kZS9JQ1N0YXR1c1V0
aWxzLmNwcAogYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcAogYnl0ZWNvZGUvSW5saW5lQ2FsbEZy
YW1lLmNwcAogYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lU2V0LmNwcApAQCAtMjQ1LDYgKzI0OSw3
IEBAIGJ5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwCiBieXRlY29kZS9QdXRCeUlkRmxh
Z3MuY3BwCiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAogYnl0ZWNvZGUvUHV0QnlJZFZhcmlh
bnQuY3BwCitieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAogYnl0ZWNvZGUvUmVkdWNlV2hp
dGVzcGFjZS5jcHAKIGJ5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmNwcAogYnl0ZWNvZGUvU3BlY3Vs
YXRlZFR5cGUuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI5Nyw2ICsyOTcsMTEgQEAKIAkJ
MEY0MjZBNDkxNDYwQ0JCNzAwMTMxRjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0MjZBNDYxNDYwQ0JBQjAwMTMx
RjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGNDI2QTRCMTQ2MENENkUwMDEzMUY4RiAvKiBEYXRhRm9ybWF0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQyNkE0
QTE0NjBDRDZCMDAxMzFGOEYgLyogRGF0YUZvcm1hdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDMxNzM4MTQ2QkFDNjkwMDdFMzg5MCAvKiBM
aXN0YWJsZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ0QTdCMDIw
QkY2ODYyMDAyMkIxNzEgLyogRXhpdEZsYWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDRBN0FFMjBCRjY4NUYwMDIyQjE3MSAvKiBFeGl0RmxhZy5o
ICovOyB9OworCQkwRjQ0QTdCMTIwQkY2OEM5MDAyMkIxNzEgLyogRXhpdGluZ0lubGluZUtpbmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDRBN0E3
MjBCRjY4NUQwMDIyQjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDRBN0IyMjBCRjY4Q0UwMDIyQjE3
MSAvKiBJQ1N0YXR1c01hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0NEE3QUYyMEJGNjg1RjAwMjJCMTcxIC8qIElDU3RhdHVzTWFwLmggKi87IH07
CisJCTBGNDRBN0IzMjBCRjY4RDEwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ0QTdBQTIwQkY2ODVF
MDAyMkIxNzEgLyogUmVjb3JkZWRTdGF0dXNlcy5oICovOyB9OworCQkwRjQ0QTdCNDIwQkY2OEQ5
MDAyMkIxNzEgLyogVGVybWluYXRlZENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDRBN0E4MjBCRjY4NUUwMDIyQjE3MSAvKiBUZXJt
aW5hdGVkQ29kZU9yaWdpbi5oICovOyB9OwogCQkwRjQ1NzAzOTFCRTQ0QzkxMDA2MkE2MjkgLyog
QWlyRWxpbWluYXRlRGVhZENvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNDU3MDM3MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFk
Q29kZS5oICovOyB9OwogCQkwRjQ1NzAzRDFCRTQ1RjBBMDA2MkE2MjkgLyogQWlyUmVwb3J0VXNl
ZFJlZ2lzdGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY0NTcwM0IxQkU0NUYwQTAwNjJBNjI5IC8qIEFpclJlcG9ydFVzZWRSZWdpc3RlcnMuaCAq
LzsgfTsKIAkJMEY0NTcwNDExQkU1ODRDQTAwNjJBNjI5IC8qIEIzVGltaW5nU2NvcGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDU3MDNGMUJFNTg0
Q0EwMDYyQTYyOSAvKiBCM1RpbWluZ1Njb3BlLmggKi87IH07CkBAIC0yMjg3LDYgKzIyOTIsMTYg
QEAKIAkJMEY0MjZBNEExNDYwQ0Q2QjAwMTMxRjhGIC8qIERhdGFGb3JtYXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YUZvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjQyQjNDMDIwMUVCNTA5MDAzNTcwMzEgLyogQWxsb2NhdG9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFsbG9jYXRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJs
ZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGlzdGFibGVIYW5k
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDRBN0E3MjBCRjY4NUQwMDIy
QjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBFeGl0aW5nSW5saW5lS2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjQ0QTdBODIwQkY2ODVFMDAyMkIxNzEgLyogVGVybWluYXRlZENvZGVPcmlnaW4uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVybWluYXRlZENvZGVPcmlnaW4uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NEE3QTkyMEJGNjg1RTAwMjJCMTcxIC8qIEV4aXRG
bGFnLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4aXRGbGFnLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcx
IC8qIFJlY29yZGVkU3RhdHVzZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVjb3JkZWRTdGF0dXNlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ0QTdB
QjIwQkY2ODVFMDAyMkIxNzEgLyogSUNTdGF0dXNNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSUNTdGF0dXNNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjQ0QTdBQzIwQkY2ODVGMDAyMkIxNzEgLyogRXhpdGluZ0lubGluZUtpbmQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXhpdGluZ0lubGluZUtpbmQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ0QTdBRDIwQkY2ODVGMDAyMkIx
NzEgLyogUmVjb3JkZWRTdGF0dXNlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZWNvcmRlZFN0YXR1c2VzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY0NEE3QUUyMEJGNjg1RjAwMjJCMTcxIC8qIEV4aXRGbGFnLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEV4aXRGbGFnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGNDRBN0FGMjBCRjY4NUYwMDIyQjE3MSAvKiBJQ1N0YXR1c01hcC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJQ1N0YXR1c01hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjQ0QTdCNTIwQzBCRTNGMDAyMkIxNzEgLyogSUNTdGF0dXNVdGlscy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJQ1N0YXR1c1V0aWxzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NTcwMzYxQkU0NEM5MTAwNjJBNjI5IC8q
IEFpckVsaW1pbmF0ZURlYWRDb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEFpckVsaW1pbmF0ZURlYWRDb2RlLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJFbGltaW5h
dGVEZWFkQ29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDU3MDM3MUJF
NDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBBaXJFbGltaW5hdGVEZWFkQ29kZS5oOyBwYXRoID0gYjMvYWlyL0Fp
ckVsaW1pbmF0ZURlYWRDb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDU3
MDNBMUJFNDVGMEEwMDYyQTYyOSAvKiBBaXJSZXBvcnRVc2VkUmVnaXN0ZXJzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpclJlcG9ydFVzZWRSZWdpc3RlcnMuY3Bw
OyBwYXRoID0gYjMvYWlyL0FpclJlcG9ydFVzZWRSZWdpc3RlcnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzY1OCw2ICs3NjczLDEwIEBACiAJCQkJMEY2MEZFOEUxRkZDMzZG
RDAwMDMzMjBBIC8qIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCAqLywKIAkJCQkwRjU2QTFE
NDE1MDAxQ0YyMDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5jcHAgKi8sCiAJCQkJMEY1NkEx
RDExNTAwMEYzMTAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNvdW50ZXIuaCAqLywKKwkJCQkwRjQ0QTdB
OTIwQkY2ODVFMDAyMkIxNzEgLyogRXhpdEZsYWcuY3BwICovLAorCQkJCTBGNDRBN0FFMjBCRjY4
NUYwMDIyQjE3MSAvKiBFeGl0RmxhZy5oICovLAorCQkJCTBGNDRBN0FDMjBCRjY4NUYwMDIyQjE3
MSAvKiBFeGl0aW5nSW5saW5lS2luZC5jcHAgKi8sCisJCQkJMEY0NEE3QTcyMEJGNjg1RDAwMjJC
MTcxIC8qIEV4aXRpbmdJbmxpbmVLaW5kLmggKi8sCiAJCQkJMEYwMzMyQkYxOEFERkFFMTAwNUY5
NzlBIC8qIEV4aXRpbmdKSVRUeXBlLmNwcCAqLywKIAkJCQkwRjNBQzc1MzE4OEU1RUM4MDAzMjAy
OUYgLyogRXhpdGluZ0pJVFR5cGUuaCAqLywKIAkJCQkwRkIxMDU4MjE2NzU0ODBDMDBGOEFCNkUg
LyogRXhpdEtpbmQuY3BwICovLApAQCAtNzY3NCw2ICs3NjkzLDkgQEAKIAkJCQkwRjAzMzJDMjE4
QjAxNzYzMDA1Rjk3OUEgLyogR2V0QnlJZFZhcmlhbnQuaCAqLywKIAkJCQkxNEFEOTEwODFEQ0E5
Mjk0MDAxNEY5RkUgLyogR2xvYmFsQ29kZUJsb2NrLmggKi8sCiAJCQkJMEYwQjgzQTgxNEJDRjU1
RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi8sCisJCQkJMEY0NEE3QUIyMEJGNjg1RTAwMjJC
MTcxIC8qIElDU3RhdHVzTWFwLmNwcCAqLywKKwkJCQkwRjQ0QTdBRjIwQkY2ODVGMDAyMkIxNzEg
LyogSUNTdGF0dXNNYXAuaCAqLywKKwkJCQkwRjQ0QTdCNTIwQzBCRTNGMDAyMkIxNzEgLyogSUNT
dGF0dXNVdGlscy5jcHAgKi8sCiAJCQkJMEZCMzk5QkQyMEFGNkIzODAwMTdFMjEzIC8qIElDU3Rh
dHVzVXRpbHMuaCAqLywKIAkJCQk3OTA1QkI2NjFEMTIwNTBFMDAxOUZFNTcgLyogSW5saW5lQWNj
ZXNzLmNwcCAqLywKIAkJCQk3OTA1QkI2NzFEMTIwNTBFMDAxOUZFNTcgLyogSW5saW5lQWNjZXNz
LmggKi8sCkBAIC03NzMwLDYgKzc3NTIsOCBAQAogCQkJCTBGOTNCNEE3MThCOTJDNEQwMDE3OEEz
RiAvKiBQdXRCeUlkVmFyaWFudC5jcHAgKi8sCiAJCQkJMEY5M0I0QTgxOEI5MkM0RDAwMTc4QTNG
IC8qIFB1dEJ5SWRWYXJpYW50LmggKi8sCiAJCQkJMEY5RkM4QzExNEUxQjVGQjAwRDUyQUUwIC8q
IFB1dEtpbmQuaCAqLywKKwkJCQkwRjQ0QTdBRDIwQkY2ODVGMDAyMkIxNzEgLyogUmVjb3JkZWRT
dGF0dXNlcy5jcHAgKi8sCisJCQkJMEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcxIC8qIFJlY29yZGVk
U3RhdHVzZXMuaCAqLywKIAkJCQkwRkY2MEFCRjE2NzQwRjgxMDAwMjk3NzkgLyogUmVkdWNlV2hp
dGVzcGFjZS5jcHAgKi8sCiAJCQkJMEZGNjBBQzAxNjc0MEY4MTAwMDI5Nzc5IC8qIFJlZHVjZVdo
aXRlc3BhY2UuaCAqLywKIAkJCQkwRjU1NDFBRjE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBv
aW50ZXIuY3BwICovLApAQCAtNzc0NCw2ICs3NzY4LDcgQEAKIAkJCQlCQ0NGMEQwNzBFRjBBQUI5
MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1YkluZm8uaCAqLywKIAkJCQkwRjRBMzhGNzFDOEUxM0RG
MDAxOTAzMTggLyogU3VwZXJTYW1wbGVyLmNwcCAqLywKIAkJCQkwRjRBMzhGODFDOEUxM0RGMDAx
OTAzMTggLyogU3VwZXJTYW1wbGVyLmggKi8sCisJCQkJMEY0NEE3QTgyMEJGNjg1RTAwMjJCMTcx
IC8qIFRlcm1pbmF0ZWRDb2RlT3JpZ2luLmggKi8sCiAJCQkJMEYyRDRERTUxOTgzMkRBQzAwN0Q0
QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgKi8sCiAJCQkJMEYyRDRERTYxOTgzMkRBQzAwN0Q0QjE5
IC8qIFRvVGhpc1N0YXR1cy5oICovLAogCQkJCTBGOTUyQUJBMUI0ODdBNzcwMEMzNjdDNSAvKiBU
cmFja2VkUmVmZXJlbmNlcy5jcHAgKi8sCkBAIC04NDAxLDYgKzg0MjYsNyBAQAogCQkJCTUzRDQ0
NERDMURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUzNDFGQzcyMURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJDNjNCMjFFNjBBRTQ3MDBDMTM4MzkgLyogQjNXaWR0
aC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NEE3QjIyMEJGNjhDRTAwMjJCMTcxIC8qIElDU3Rh
dHVzTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MjY3OEY4RjFBMDMxMDA5MDA2QTMwNkQgLyog
QmFzaWNCbG9ja0xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDdCODNBQzBFNkRCOEM5
MDA0Nzc1QTQgLyogQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg2OTc2RTVGMUZBM0U4QkMwMEU3QzRFMSAvKiBCaWdJbnRDb25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8sCkBAIC04NjIwLDYgKzg2NDYsNyBAQAogCQkJCTg2RUM5REM2MTMyOERGODIwMDJC
MkFENyAvKiBERkdHZW5lcmF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQzlEQzgx
MzI4REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJGQ0NG
QTE4QTYwMDcwMDAxQTI3RjggLyogREZHR3JhcGhTYWZlcG9pbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGNDRBN0IxMjBCRjY4QzkwMDIyQjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZCMTc2NjExOTZCOEY5RTAwOTEwNTJBIC8qIERGR0hlYXBMb2NhdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDODQxNjkxQkE4QzMyMTAwNjE4MzdEIC8qIERGR0lu
ZmVycmVkVHlwZUNoZWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxNEUyMTE4MTI1NzBCMDA5
QjZCNEQgLyogREZHSW5saW5lQ2FjaGVXcmFwcGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTg3NzAs
NiArODc5Nyw3IEBACiAJCQkJQTdBOEFGMzgxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0MzJBcnJh
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzkxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0
NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NDMxN0VBOUY1OTAwQUJCMjE3IC8q
IEZQUkluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDRBN0IzMjBCRjY4RDEwMDIyQjE3MSAv
KiBSZWNvcmRlZFN0YXR1c2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzRFREJGNzFEQjVGRkM5
MDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU1MTNBNjFE
NUE2ODJDMDBDMzJCRDggLyogRnJlZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjU4NUUx
MUVFMDgwNUEwMDk1MTc2RCAvKiBGcmVlTGlzdElubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAt
OTExOSw2ICs5MTQ3LDcgQEAKIAkJCQk3MDEzQ0E4QzFCNDkxQTk0MDBDQUU2MTMgLyogSlNKb2Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0xleGlj
YWxFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjMwRTE2RjVDRDAwQjM0
NDYwIC8qIEpTTG9jay5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NEE3QjAyMEJGNjg2MjAwMjJC
MTcxIC8qIEV4aXRGbGFnLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjVENzA5QzE2REU5OUY0MDBG
Q0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBNEJCN0YzMThB
NDExNzkwMDhBMEZDRCAvKiBKU01hbmFnZWRWYWx1ZUludGVybmFsLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNzAwODc0MjE3Q0JFOEVCMDBDM0U2NDMgLyogSlNNYXAuaCBpbiBIZWFkZXJzICovLApA
QCAtOTQzNSw2ICs5NDY0LDcgQEAKIAkJCQlBNzI5OURBMjE3RDEyODQ4MDA1RjVGRjkgLyogU2V0
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVFOTg0MTFBODg2NUI3MDA3NTRFOTMg
LyogU2V0dXBWYXJhcmdzRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCURDMTdFODE4MUM5Qzkx
RDkwMDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ0QTdC
NDIwQkY2OEQ5MDAyMkIxNzEgLyogVGVybWluYXRlZENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICov
LAogCQkJCURDMTdFODE5MUM5QzkxREIwMDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzMDIyRDMxRTNENzNBNTAwQkFDNDkzIC8qIFNpZ2lsbENy
YXNoQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNEQ4Qzc4MUZDQTNDRkEwMDFEMzJB
QyAvKiBTaW1wbGVNYXJraW5nQ29uc3RyYWludC5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCShyZXZpc2lvbiAyMzIyMjcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2NiwxMiArMjY2LDYgQEAgaW5saW5lIHVuc2lnbmVkIGdldEJ5VmFsSW5mb0J5
dGVjb2RlSW5kZQogICAgIHJldHVybiBpbmZvLT5ieXRlY29kZUluZGV4OwogfQogCi10eXBlZGVm
IEhhc2hNYXA8Q29kZU9yaWdpbiwgQnlWYWxJbmZvKiwgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFz
aD4gQnlWYWxJbmZvTWFwOwotCi0jZWxzZSAvLyBFTkFCTEUoSklUKQotCi10eXBlZGVmIEhhc2hN
YXA8aW50LCB2b2lkKj4gQnlWYWxJbmZvTWFwOwotCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVEdW1wZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTQyNyw3ICs0MjcsNyBAQCBzdGF0aWMgdm9pZCBkdW1wQ2hhaW4oUHJpbnRTdHJlYW0mIG91
dCwgCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgotdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9j
az46OnByaW50R2V0QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlv
biwgY29uc3QgU3R1YkluZm9NYXAmIG1hcCkKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpw
cmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNv
bnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rp
b24gPSBpbnN0cnVjdGlvbnNCZWdpbigpICsgbG9jYXRpb247CiAKQEAgLTQ0Nyw3ICs0NDcsNyBA
QCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRHZXRCeUlkCiAgICAgfQogCiAjaWYg
RU5BQkxFKEpJVCkKLSAgICBpZiAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJQdHIgPSBtYXAuZ2V0
KENvZGVPcmlnaW4obG9jYXRpb24pKSkgeworICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YlB0ciA9IHN0YXR1c01hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpLnN0dWJJbmZvKSB7CiAg
ICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9ICpzdHViUHRyOwogICAgICAgICBp
ZiAoc3R1YkluZm8ucmVzZXRCeUdDKQogICAgICAgICAgICAgb3V0LnByaW50KCIgKFJlc2V0IEJ5
IEdDKSIpOwpAQCAtNDg4LDEyICs0ODgsMTIgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46
OnByaW50R2V0QnlJZAogICAgICAgICBvdXQucHJpbnRmKCIpIik7CiAgICAgfQogI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0obWFwKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdHVzTWFwKTsKICNlbmRp
ZgogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+
OjpwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24s
IGNvbnN0IFN0dWJJbmZvTWFwJiBtYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJp
bnRQdXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25z
dCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQogewogICAgIGNvbnN0IGF1dG8qIGluc3RydWN0aW9u
ID0gaW5zdHJ1Y3Rpb25zQmVnaW4oKSArIGxvY2F0aW9uOwogCkBAIC01MjEsNyArNTIxLDcgQEAg
dm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50UHV0QnlJZAogICAgIH0KIAogI2lmIEVO
QUJMRShKSVQpCi0gICAgaWYgKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViUHRyID0gbWFwLmdldChD
b2RlT3JpZ2luKGxvY2F0aW9uKSkpIHsKKyAgICBpZiAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJQ
dHIgPSBzdGF0dXNNYXAuZ2V0KENvZGVPcmlnaW4obG9jYXRpb24pKS5zdHViSW5mbykgewogICAg
ICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSAqc3R1YlB0cjsKICAgICAgICAgaWYg
KHN0dWJJbmZvLnJlc2V0QnlHQykKICAgICAgICAgICAgIG91dC5wcmludCgiIChSZXNldCBCeSBH
QykiKTsKQEAgLTU0NywxMiArNTQ3LDEyIEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpw
cmludFB1dEJ5SWQKICAgICAgICAgb3V0LnByaW50ZigiKSIpOwogICAgIH0KICNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKG1hcCk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXR1c01hcCk7CiAjZW5kaWYK
IH0KIAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6
cHJpbnRJbkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNv
bnN0IFN0dWJJbmZvTWFwJiBtYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRJ
bkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IElD
U3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb24gPSBp
bnN0cnVjdGlvbnNCZWdpbigpICsgbG9jYXRpb247CiAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lk
IEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRJbkJ5SWRDCiAgICAgVU5VU0VEX1BBUkFNKGlk
ZW50KTsgLy8gdGVsbCB0aGUgY29tcGlsZXIgdG8gc2h1dCB1cCBpbiBjZXJ0YWluIHBsYXRmb3Jt
IGNvbmZpZ3VyYXRpb25zLgogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJQdHIgPSBtYXAuZ2V0KENvZGVPcmlnaW4obG9jYXRpb24pKSkgeworICAgIGlm
IChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YlB0ciA9IHN0YXR1c01hcC5nZXQoQ29kZU9yaWdpbihs
b2NhdGlvbikpLnN0dWJJbmZvKSB7CiAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
byA9ICpzdHViUHRyOwogICAgICAgICBpZiAoc3R1YkluZm8ucmVzZXRCeUdDKQogICAgICAgICAg
ICAgb3V0LnByaW50KCIgKFJlc2V0IEJ5IEdDKSIpOwpAQCAtNjAwLDI2ICs2MDAsMjYgQEAgdm9p
ZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50SW5CeUlkQwogICAgIH0KICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKG91dCk7Ci0gICAgVU5VU0VEX1BBUkFNKG1hcCk7CisgICAgVU5VU0VEX1BB
UkFNKHN0YXR1c01hcCk7CiAjZW5kaWYKIH0KIAogI2lmIEVOQUJMRShKSVQpCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQ2FsbExpbmtT
dGF0dXMoUHJpbnRTdHJlYW0mLCB1bnNpZ25lZCwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJikKK3Zv
aWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQ2FsbExpbmtTdGF0dXMoUHJpbnRTdHJlYW0m
LCB1bnNpZ25lZCwgY29uc3QgSUNTdGF0dXNNYXAmKQogewogfQogCiB0ZW1wbGF0ZTw+Ci12b2lk
IEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBDYWxsTGlua1N0YXR1cyhQcmludFN0cmVh
bSYgb3V0LCB1bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBtYXApCit2
b2lkIEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBDYWxsTGlua1N0YXR1cyhQcmludFN0
cmVhbSYgb3V0LCB1bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01h
cCkKIHsKICAgICBpZiAoYmxvY2soKS0+aml0VHlwZSgpICE9IEpJVENvZGU6OkZUTEpJVCkKLSAg
ICAgICAgb3V0LnByaW50KCIgc3RhdHVzKCIsIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKGJs
b2NrKCksIGxvY2F0aW9uLCBtYXApLCAiKSIpOworICAgICAgICBvdXQucHJpbnQoIiBzdGF0dXMo
IiwgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoYmxvY2soKSwgbG9jYXRpb24sIHN0YXR1c01h
cCksICIpIik7CiB9CiAjZW5kaWYKIAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVj
b2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0
aW9uLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgY2hhciog
b3AsIENhY2hlRHVtcE1vZGUgY2FjaGVEdW1wTW9kZSwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGlu
ZywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBtYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2Nr
Pjo6cHJpbnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCB0eXBl
bmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgY2hhciogb3AsIENhY2hlRHVtcE1v
ZGUgY2FjaGVEdW1wTW9kZSwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZywgY29uc3QgSUNTdGF0
dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBpbnQgZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAg
ICAgaW50IGZ1bmMgPSAoKytpdCktPnUub3BlcmFuZDsKQEAgLTYzOCw3ICs2MzgsNyBAQCB2b2lk
IEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRDYWxsT3AoCiAgICAgICAgICAgICAgICAgb3V0
LnByaW50ZigiIGxsaW50KCVwKSIsIG9iamVjdCk7CiAgICAgICAgIH0KICNpZiBFTkFCTEUoSklU
KQotICAgICAgICBpZiAoQ2FsbExpbmtJbmZvKiBpbmZvID0gbWFwLmdldChDb2RlT3JpZ2luKGxv
Y2F0aW9uKSkpIHsKKyAgICAgICAgaWYgKENhbGxMaW5rSW5mbyogaW5mbyA9IHN0YXR1c01hcC5n
ZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpLmNhbGxMaW5rSW5mbykgewogICAgICAgICAgICAgaWYg
KGluZm8tPmhhdmVMYXN0U2VlbkNhbGxlZSgpKSB7CiAgICAgICAgICAgICAgICAgSlNPYmplY3Qq
IG9iamVjdCA9IGluZm8tPmxhc3RTZWVuQ2FsbGVlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGF1
dG8qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4oKnZtKCksIG9iamVjdCkp
CkBAIC02NDgsOSArNjQ4LDkgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50Q2Fs
bE9wKAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgZHVtcENhbGxMaW5rU3Rh
dHVzKG91dCwgbG9jYXRpb24sIG1hcCk7CisgICAgICAgIGR1bXBDYWxsTGlua1N0YXR1cyhvdXQs
IGxvY2F0aW9uLCBzdGF0dXNNYXApOwogI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKG1hcCk7
CisgICAgICAgIFVOVVNFRF9QQVJBTShzdGF0dXNNYXApOwogI2VuZGlmCiAgICAgfQogICAgICsr
aXQ7CkBAIC02NzgsNyArNjc4LDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50
TG9jYXRpbwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8
QmxvY2s+OjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQmxv
Y2s6Okluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9u
KiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiBzdHViSW5mb3MsIGNvbnN0IENhbGxMaW5rSW5mb01h
cCYgY2FsbExpbmtJbmZvcykKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNv
ZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiBi
ZWdpbiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3Rh
dHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgaW50IGxvY2F0aW9uID0gaXQgLSBiZWdpbjsKICAg
ICBib29sIGhhc1ByaW50ZWRQcm9maWxpbmcgPSBmYWxzZTsKQEAgLTEwNzEsNyArMTA3MSw3IEBA
IHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgaW50IGlk
MCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBs
b2NhdGlvbiwgaXQsICJpbl9ieV9pZCIpOwogICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVz
IiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBpZE5h
bWUoaWQwLCBpZGVudGlmaWVyKGlkMCkpLmRhdGEoKSk7Ci0gICAgICAgIHByaW50SW5CeUlkQ2Fj
aGVTdGF0dXMob3V0LCBsb2NhdGlvbiwgc3R1YkluZm9zKTsKKyAgICAgICAgcHJpbnRJbkJ5SWRD
YWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdGF0dXNNYXApOwogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgY2FzZSBvcF9pbl9ieV92YWw6IHsKQEAgLTEwOTUsNyArMTA5NSw3IEBAIHZvaWQg
Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiZ2V0X2J5X2lkX2RpcmVjdCIpOwogICAgICAgICBv
dXQucHJpbnRmKCIlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShyMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBpZGVudGlmaWVyKGlkMCkpLmRhdGEoKSk7CiAg
ICAgICAgIGl0ICs9IDI7IC8vIEluY3JlbWVudCB1cCB0byB0aGUgdmFsdWUgcHJvZmlsZXIuCi0g
ICAgICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0dWJJbmZvcyk7
CisgICAgICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0YXR1c01h
cCk7CiAgICAgICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmls
aW5nKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTEwNCw3ICsxMTA0LDcgQEAgdm9pZCBC
eXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZQogICAgIGNhc2Ugb3BfZ2V0X2J5X2lk
X3Vuc2V0OgogICAgIGNhc2Ugb3BfZ2V0X2FycmF5X2xlbmd0aDogewogICAgICAgICBwcmludEdl
dEJ5SWRPcChvdXQsIGxvY2F0aW9uLCBpdCk7Ci0gICAgICAgIHByaW50R2V0QnlJZENhY2hlU3Rh
dHVzKG91dCwgbG9jYXRpb24sIHN0dWJJbmZvcyk7CisgICAgICAgIHByaW50R2V0QnlJZENhY2hl
U3RhdHVzKG91dCwgbG9jYXRpb24sIHN0YXR1c01hcCk7CiAgICAgICAgIGR1bXBWYWx1ZVByb2Zp
bGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQpAQCAtMTEzMCw3ICsxMTMwLDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBC
eXRlY29kZQogICAgIH0KICAgICBjYXNlIG9wX3B1dF9ieV9pZDogewogICAgICAgICBwcmludFB1
dEJ5SWRPcChvdXQsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZCIpOwotICAgICAgICBwcmludFB1
dEJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdHViSW5mb3MpOworICAgICAgICBwcmlu
dFB1dEJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdGF0dXNNYXApOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBvcF9wdXRfYnlfaWRfd2l0aF90aGlzOiB7CkBAIC0xNDc2
LDE1ICsxNDc2LDE1IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3BfY2FsbDogewotICAgICAgICBwcmlu
dENhbGxPcChvdXQsIGxvY2F0aW9uLCBpdCwgImNhbGwiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVk
UHJvZmlsaW5nLCBjYWxsTGlua0luZm9zKTsKKyAgICAgICAgcHJpbnRDYWxsT3Aob3V0LCBsb2Nh
dGlvbiwgaXQsICJjYWxsIiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgc3RhdHVz
TWFwKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3BfdGFpbF9jYWxsOiB7Ci0g
ICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAidGFpbF9jYWxsIiwgRHVtcENh
Y2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgY2FsbExpbmtJbmZvcyk7CisgICAgICAgIHByaW50
Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAidGFpbF9jYWxsIiwgRHVtcENhY2hlcywgaGFzUHJp
bnRlZFByb2ZpbGluZywgc3RhdHVzTWFwKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNh
c2Ugb3BfY2FsbF9ldmFsOiB7Ci0gICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0
LCAiY2FsbF9ldmFsIiwgRG9udER1bXBDYWNoZXMsIGhhc1ByaW50ZWRQcm9maWxpbmcsIGNhbGxM
aW5rSW5mb3MpOworICAgICAgICBwcmludENhbGxPcChvdXQsIGxvY2F0aW9uLCBpdCwgImNhbGxf
ZXZhbCIsIERvbnREdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmlsaW5nLCBzdGF0dXNNYXApOwog
ICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTE1MjMsNyArMTUyMyw3IEBAIHZvaWQgQnl0ZWNv
ZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IGNhc2Ugb3BfY29uc3RydWN0OiB7Ci0gICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24s
IGl0LCAiY29uc3RydWN0IiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgY2FsbExp
bmtJbmZvcyk7CisgICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAiY29uc3Ry
dWN0IiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgc3RhdHVzTWFwKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3Bfc3RyY2F0OiB7CkBAIC0xNzc4LDEwICsxNzc4
LDEwIEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKIH0KIAogdGVt
cGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJ5dGVj
b2RlKEJsb2NrKiBibG9jaywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQmxvY2s6
Okluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiYg
aXQsIGNvbnN0IFN0dWJJbmZvTWFwJiBzdHViSW5mb3MsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYg
Y2FsbExpbmtJbmZvcykKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUo
QmxvY2sqIGJsb2NrLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5z
dHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwg
Y29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBCeXRlY29kZUR1bXBlciBkdW1w
ZXIoYmxvY2ssIGJlZ2luKTsKLSAgICBkdW1wZXIuZHVtcEJ5dGVjb2RlKG91dCwgYmVnaW4sIGl0
LCBzdHViSW5mb3MsIGNhbGxMaW5rSW5mb3MpOworICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0
LCBiZWdpbiwgaXQsIHN0YXR1c01hcCk7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgpAQCAt
MTg5MCw3ICsxODkwLDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBTdHJpbmdT
dwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+
OjpkdW1wQmxvY2soQmxvY2sqIGJsb2NrLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJ
bnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgU3R1Yklu
Zm9NYXAmIHN0dWJJbmZvcywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBjYWxsTGlua0luZm9zKQor
dm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCbG9jayhCbG9jayogYmxvY2ssIGNvbnN0
IHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBQcmlu
dFN0cmVhbSYgb3V0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQogewogICAgIHNpemVf
dCBpbnN0cnVjdGlvbkNvdW50ID0gMDsKIApAQCAtMTkxMCw3ICsxOTEwLDcgQEAgdm9pZCBCeXRl
Y29kZUR1bXBlcjxCbG9jaz46OmR1bXBCbG9jayhCbAogICAgIGNvbnN0IGF1dG8qIGVuZCA9IGlu
c3RydWN0aW9ucy5lbmQoKTsKICAgICBCeXRlY29kZUR1bXBlcjxCbG9jaz4gZHVtcGVyKGJsb2Nr
LCBiZWdpbik7CiAgICAgZm9yIChjb25zdCBhdXRvKiBpdCA9IGJlZ2luOyBpdCAhPSBlbmQ7ICsr
aXQpCi0gICAgICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0LCBiZWdpbiwgaXQsIHN0dWJJbmZv
cywgY2FsbExpbmtJbmZvcyk7CisgICAgICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0LCBiZWdp
biwgaXQsIHN0YXR1c01hcCk7CiAKICAgICBkdW1wZXIuZHVtcElkZW50aWZpZXJzKG91dCk7CiAg
ICAgZHVtcGVyLmR1bXBDb25zdGFudHMob3V0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1
enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjYsNiArMjcsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDYWxsTGlua0lu
Zm8uaCIKKyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJ
bmZvLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzcsOCArMzksOCBAQCBjbGFzcyBCeXRlY29k
ZUR1bXBlciB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rp
b24gSW5zdHJ1Y3Rpb247CiAKLSAgICBzdGF0aWMgdm9pZCBkdW1wQnl0ZWNvZGUoQmxvY2sqLCBQ
cmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0
aW9uKiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiA9IFN0dWJJbmZvTWFwKCksIGNvbnN0IENhbGxM
aW5rSW5mb01hcCYgPSBDYWxsTGlua0luZm9NYXAoKSk7Ci0gICAgc3RhdGljIHZvaWQgZHVtcEJs
b2NrKEJsb2NrKiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiwg
UHJpbnRTdHJlYW0mIG91dCwgY29uc3QgU3R1YkluZm9NYXAmID0gU3R1YkluZm9NYXAoKSwgY29u
c3QgQ2FsbExpbmtJbmZvTWFwJiA9IENhbGxMaW5rSW5mb01hcCgpKTsKKyAgICBzdGF0aWMgdm9p
ZCBkdW1wQnl0ZWNvZGUoQmxvY2sqLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlv
biogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0
dXNNYXAgPSBJQ1N0YXR1c01hcCgpKTsKKyAgICBzdGF0aWMgdm9pZCBkdW1wQmxvY2soQmxvY2sq
LCBjb25zdCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmLCBQcmludFN0cmVh
bSYgb3V0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwID0gSUNTdGF0dXNNYXAoKSk7CiAK
IHByaXZhdGU6CiAgICAgQnl0ZWNvZGVEdW1wZXIoQmxvY2sqIGJsb2NrLCBjb25zdCBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4pCkBAIC02OSwxNCArNzEsMTQgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHByaW50Q29uZGl0aW9uYWxKdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3Ry
dWN0aW9uKiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgaW50IGxvY2F0aW9uLCBjb25zdCBjaGFy
KiBvcCk7CiAgICAgdm9pZCBwcmludENvbXBhcmVKdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0
IEluc3RydWN0aW9uKiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgaW50IGxvY2F0aW9uLCBjb25z
dCBjaGFyKiBvcCk7CiAgICAgdm9pZCBwcmludEdldEJ5SWRPcChQcmludFN0cmVhbSYgb3V0LCBp
bnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQpOwotICAgIHZvaWQgcHJpbnRHZXRC
eUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBTdHVi
SW5mb01hcCYpOwotICAgIHZvaWQgcHJpbnRQdXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0m
IG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBTdHViSW5mb01hcCYpOwotICAgIHZvaWQgcHJpbnRJ
bkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IFN0
dWJJbmZvTWFwJik7CisgICAgdm9pZCBwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVh
bSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IElDU3RhdHVzTWFwJik7CisgICAgdm9pZCBwcmlu
dFB1dEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0
IElDU3RhdHVzTWFwJik7CisgICAgdm9pZCBwcmludEluQnlJZENhY2hlU3RhdHVzKFByaW50U3Ry
ZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmKTsKICAgICBlbnVtIENh
Y2hlRHVtcE1vZGUgeyBEdW1wQ2FjaGVzLCBEb250RHVtcENhY2hlcyB9OwotICAgIHZvaWQgcHJp
bnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlv
biomIGl0LCBjb25zdCBjaGFyKiBvcCwgQ2FjaGVEdW1wTW9kZSwgYm9vbCYgaGFzUHJpbnRlZFBy
b2ZpbGluZywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJik7CisgICAgdm9pZCBwcmludENhbGxPcChQ
cmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNv
bnN0IGNoYXIqIG9wLCBDYWNoZUR1bXBNb2RlLCBib29sJiBoYXNQcmludGVkUHJvZmlsaW5nLCBj
b25zdCBJQ1N0YXR1c01hcCYpOwogICAgIHZvaWQgcHJpbnRQdXRCeUlkT3AoUHJpbnRTdHJlYW0m
IG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBv
cCk7CiAgICAgdm9pZCBwcmludExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQoUHJpbnRTdHJl
YW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFy
KiBvcCwgaW50IG9wZXJhbmQpOwotICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBv
dXQsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29u
c3QgU3R1YkluZm9NYXAmLCBjb25zdCBDYWxsTGlua0luZm9NYXAmKTsKKyAgICB2b2lkIGR1bXBC
eXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0
IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJik7CiAKICAgICB2b2lkIGR1bXBW
YWx1ZVByb2ZpbGluZyhQcmludFN0cmVhbSYsIGNvbnN0IEluc3RydWN0aW9uKiYsIGJvb2wmIGhh
c1ByaW50ZWRQcm9maWxpbmcpOwogICAgIHZvaWQgZHVtcEFycmF5UHJvZmlsaW5nKFByaW50U3Ry
ZWFtJiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZyk7CkBA
IC04NSw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCogYWN0dWFsUG9pbnRlckZvcihTcGVj
aWFsOjpQb2ludGVyKSBjb25zdDsKIAogI2lmIEVOQUJMRShKSVQpCi0gICAgdm9pZCBkdW1wQ2Fs
bExpbmtTdGF0dXMoUHJpbnRTdHJlYW0mLCB1bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgQ2FsbExp
bmtJbmZvTWFwJik7CisgICAgdm9pZCBkdW1wQ2FsbExpbmtTdGF0dXMoUHJpbnRTdHJlYW0mLCB1
bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmKTsKICNlbmRpZgogCiAgICAgQmxv
Y2sqIG1fYmxvY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExp
bmtJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rSW5mby5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1MiwxMiArMzUyLDYg
QEAgaW5saW5lIENvZGVPcmlnaW4gZ2V0Q2FsbExpbmtJbmZvQ29kZU9yaQogICAgIHJldHVybiBj
YWxsTGlua0luZm8uY29kZU9yaWdpbigpOwogfQogCi10eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdp
biwgQ2FsbExpbmtJbmZvKiwgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFzaD4gQ2FsbExpbmtJbmZv
TWFwOwotCi0jZWxzZSAvLyBFTkFCTEUoSklUKQotCi10eXBlZGVmIEhhc2hNYXA8aW50LCB2b2lk
Kj4gQ2FsbExpbmtJbmZvTWFwOwotCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtT
dGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua1N0YXR1cy5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcg
Kzc3LDggQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcgogfQogCiBD
YWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKLSAgICBDb2RlQmxvY2sq
IHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIGNvbnN0IENhbGxMaW5rSW5m
b01hcCYgbWFwKQorICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCwgY29uc3QgSUNTdGF0dXNNYXAmIG1hcCwKKyAgICBFeGl0U2l0ZURhdGEgZXhpdFNp
dGVEYXRhKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jay0+
bV9sb2NrKTsKICAgICAKQEAgLTg1LDkgKzg2LDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtT
dGF0dXM6OmNvbXB1dGVGbwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICAgICBV
TlVTRURfUEFSQU0obWFwKTsKICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBFeGl0U2l0ZURhdGEg
ZXhpdFNpdGVEYXRhID0gY29tcHV0ZUV4aXRTaXRlRGF0YShwcm9maWxlZEJsb2NrLCBieXRlY29k
ZUluZGV4KTsKLSAgICAKLSAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IG1hcC5nZXQo
Q29kZU9yaWdpbihieXRlY29kZUluZGV4KSk7CisgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0lu
Zm8gPSBtYXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkpLmNhbGxMaW5rSW5mbzsKICAg
ICBpZiAoIWNhbGxMaW5rSW5mbykgewogICAgICAgICBpZiAoZXhpdFNpdGVEYXRhLnRha2VzU2xv
d1BhdGgpCiAgICAgICAgICAgICByZXR1cm4gdGFrZXNTbG93UGF0aCgpOwpAQCAtMTAwLDYgKzk5
LDEyIEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm8KICNlbmRpZgog
fQogCitDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKKyAgICBDb2Rl
QmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIGNvbnN0IElDU3Rh
dHVzTWFwJiBtYXApCit7CisgICAgcmV0dXJuIGNvbXB1dGVGb3IocHJvZmlsZWRCbG9jaywgYnl0
ZWNvZGVJbmRleCwgbWFwLCBjb21wdXRlRXhpdFNpdGVEYXRhKHByb2ZpbGVkQmxvY2ssIGJ5dGVj
b2RlSW5kZXgpKTsKK30KKwogQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0YSBDYWxsTGlua1N0
YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YShDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YTsKQEAg
LTEwNywxMSArMTEyLDIxIEBAIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgQ2FsbExpbmtT
dGEKICAgICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gcHJvZmlsZWRCbG9jay0+dW5s
aW5rZWRDb2RlQmxvY2soKTsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9j
ay0+bV9sb2NrKTsKIAotICAgIGV4aXRTaXRlRGF0YS50YWtlc1Nsb3dQYXRoID0KLSAgICAgICAg
Y29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRl
Y29kZUluZGV4LCBCYWRUeXBlKSkKLSAgICAgICAgfHwgY29kZUJsb2NrLT5oYXNFeGl0U2l0ZShs
b2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRFeGVjdXRhYmxl
KSk7Ci0gICAgZXhpdFNpdGVEYXRhLmJhZEZ1bmN0aW9uID0KLSAgICAgICAgY29kZUJsb2NrLT5o
YXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBC
YWRDZWxsKSk7CisgICAgYXV0byB0YWtlc1Nsb3dQYXRoID0gWyZdIChFeGl0aW5nSW5saW5lS2lu
ZCBpbmxpbmVLaW5kKSAtPiBFeGl0RmxhZyB7CisgICAgICAgIHJldHVybiBFeGl0RmxhZygKKyAg
ICAgICAgICAgIGNvZGVCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhp
dFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkVHlwZSwgRXhpdEZyb21Bbnl0aGluZywgaW5saW5lS2lu
ZCkpCisgICAgICAgICAgICB8fCBjb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpG
cmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZEV4ZWN1dGFibGUsIEV4aXRGcm9tQW55
dGhpbmcsIGlubGluZUtpbmQpKSwKKyAgICAgICAgICAgIGlubGluZUtpbmQpOworICAgIH07Cisg
ICAgCisgICAgYXV0byBiYWRGdW5jdGlvbiA9IFsmXSAoRXhpdGluZ0lubGluZUtpbmQgaW5saW5l
S2luZCkgLT4gRXhpdEZsYWcgeworICAgICAgICByZXR1cm4gRXhpdEZsYWcoY29kZUJsb2NrLT5o
YXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBC
YWRDZWxsLCBFeGl0RnJvbUFueXRoaW5nLCBpbmxpbmVLaW5kKSksIGlubGluZUtpbmQpOworICAg
IH07CisgICAgCisgICAgZXhpdFNpdGVEYXRhLnRha2VzU2xvd1BhdGggfD0gdGFrZXNTbG93UGF0
aChFeGl0RnJvbU5vdElubGluZWQpOworICAgIGV4aXRTaXRlRGF0YS50YWtlc1Nsb3dQYXRoIHw9
IHRha2VzU2xvd1BhdGgoRXhpdEZyb21JbmxpbmVkKTsKKyAgICBleGl0U2l0ZURhdGEuYmFkRnVu
Y3Rpb24gfD0gYmFkRnVuY3Rpb24oRXhpdEZyb21Ob3RJbmxpbmVkKTsKKyAgICBleGl0U2l0ZURh
dGEuYmFkRnVuY3Rpb24gfD0gYmFkRnVuY3Rpb24oRXhpdEZyb21JbmxpbmVkKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29k
ZUluZGV4KTsKQEAgLTEzNSw2ICsxNTAsMTAgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0
dXM6OmNvbXB1dGVGbwogQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9t
Q2FsbExpbmtJbmZvKAogICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENhbGxMaW5rSW5m
byYgY2FsbExpbmtJbmZvKQogeworICAgIC8vIFdlIGNhbm5vdCB0ZWxsIHlvdSBhbnl0aGluZyBh
Ym91dCBkaXJlY3QgY2FsbHMuCisgICAgaWYgKGNhbGxMaW5rSW5mby5pc0RpcmVjdCgpKQorICAg
ICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoKTsKKyAgICAKICAgICBpZiAoY2FsbExpbmtJbmZv
LmNsZWFyZWRCeUdDKCkpCiAgICAgICAgIHJldHVybiB0YWtlc1Nsb3dQYXRoKCk7CiAgICAgCkBA
IC0yMjcsODMgKzI0Niw2NiBAQCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0
ZUZyCiAKIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAogICAgIGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ss
IENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLAotICAgIEV4aXRTaXRlRGF0YSBleGl0U2l0ZURh
dGEpCisgICAgRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YSwgRXhpdGluZ0lubGluZUtpbmQgaW5s
aW5lS2luZCkKIHsKICAgICBDYWxsTGlua1N0YXR1cyByZXN1bHQgPSBjb21wdXRlRm9yKGxvY2tl
ciwgcHJvZmlsZWRCbG9jaywgY2FsbExpbmtJbmZvKTsKLSAgICBpZiAoZXhpdFNpdGVEYXRhLmJh
ZEZ1bmN0aW9uKSB7Ci0gICAgICAgIGlmIChyZXN1bHQuaXNCYXNlZE9uU3R1YigpKSB7CisgICAg
cmVzdWx0LmFjY291bnRGb3JFeGl0cyhleGl0U2l0ZURhdGEsIGlubGluZUtpbmQpOworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisjZW5kaWYKKwordm9pZCBDYWxsTGlua1N0YXR1czo6YWNjb3VudEZv
ckV4aXRzKEV4aXRTaXRlRGF0YSBleGl0U2l0ZURhdGEsIEV4aXRpbmdJbmxpbmVLaW5kIGlubGlu
ZUtpbmQpCit7CisgICAgaWYgKGV4aXRTaXRlRGF0YS5iYWRGdW5jdGlvbi5pc1NldChpbmxpbmVL
aW5kKSkgeworICAgICAgICBpZiAoaXNCYXNlZE9uU3R1YigpKSB7CiAgICAgICAgICAgICAvLyBJ
ZiB3ZSBoYXZlIGEgcG9seW1vcnBoaWMgc3R1YiwgdGhlbiBoYXZpbmcgYW4gZXhpdCBzaXRlIGlz
IG5vdCBxdWl0ZSBzbyB1c2VmdWwuIEluCiAgICAgICAgICAgICAvLyBtb3N0IGNhc2VzLCB0aGUg
aW5mb3JtYXRpb24gaW4gdGhlIHN0dWIgaGFzIGhpZ2hlciBmaWRlbGl0eS4KLSAgICAgICAgICAg
IHJlc3VsdC5tYWtlQ2xvc3VyZUNhbGwoKTsKKyAgICAgICAgICAgIG1ha2VDbG9zdXJlQ2FsbCgp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gV2UgbWlnaHQgbm90IGhhdmUgYSBw
b2x5bW9ycGhpYyBzdHViIGZvciBhbnkgbnVtYmVyIG9mIHJlYXNvbnMuIFdoZW4gdGhpcyBoYXBw
ZW5zLCB3ZQogICAgICAgICAgICAgLy8gYXJlIGluIGxlc3MgY2VydGFpbiB0ZXJyaXRvcnksIHNv
IGV4aXQgc2l0ZXMgbWVhbiBhIGxvdC4KLSAgICAgICAgICAgIHJlc3VsdC5tX2NvdWxkVGFrZVNs
b3dQYXRoID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fY291bGRUYWtlU2xvd1BhdGggPSB0cnVlOwog
ICAgICAgICB9CiAgICAgfQotICAgIGlmIChleGl0U2l0ZURhdGEudGFrZXNTbG93UGF0aCkKLSAg
ICAgICAgcmVzdWx0Lm1fY291bGRUYWtlU2xvd1BhdGggPSB0cnVlOwogICAgIAotICAgIHJldHVy
biByZXN1bHQ7CisgICAgaWYgKGV4aXRTaXRlRGF0YS50YWtlc1Nsb3dQYXRoLmlzU2V0KGlubGlu
ZUtpbmQpKQorICAgICAgICBtX2NvdWxkVGFrZVNsb3dQYXRoID0gdHJ1ZTsKIH0KLSNlbmRpZgog
Ci12b2lkIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlREZHU3RhdHVzZXMoCi0gICAgQ29kZUJsb2Nr
KiBkZmdDb2RlQmxvY2ssIENhbGxMaW5rU3RhdHVzOjpDb250ZXh0TWFwJiBtYXApCitDYWxsTGlu
a1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKKyAgICBDb2RlQmxvY2sqIHByb2Zp
bGVkQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwKKyAgICBjb25zdCBJQ1N0YXR1c01hcCYg
YmFzZWxpbmVNYXAsIGNvbnN0IElDU3RhdHVzQ29udGV4dFN0YWNrJiBvcHRpbWl6ZWRTdGFjaykK
IHsKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBSRUxFQVNFX0FTU0VSVChkZmdDb2RlQmxvY2st
PmppdFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpOwotICAgIENvZGVCbG9jayogYmFzZWxpbmVD
b2RlQmxvY2sgPSBkZmdDb2RlQmxvY2stPmFsdGVybmF0aXZlKCk7Ci0gICAgZm9yIChhdXRvIGl0
ZXIgPSBkZmdDb2RlQmxvY2stPmNhbGxMaW5rSW5mb3NCZWdpbigpOyAhIWl0ZXI7ICsraXRlcikg
ewotICAgICAgICBDYWxsTGlua0luZm8mIGluZm8gPSAqKml0ZXI7Ci0gICAgICAgIGlmIChpbmZv
LmlzRGlyZWN0KCkpIHsKLSAgICAgICAgICAgIC8vIElmIHRoZSBERkcgd2FzIGFibGUgdG8gZ2V0
IGEgZGlyZWN0IGNhbGwgdGhlbiBwcm9iYWJseSBzbyB3aWxsIHdlLiBIb3dldmVyLCB0aGVyZSBp
cwotICAgICAgICAgICAgLy8gYSByZW1vdGUgY2hhbmNlIHRoYXQgaXQncyBiYWQgbmV3cyB0byBs
b3NlIGluZm9ybWF0aW9uIGFib3V0IHdoYXQgdGhlIERGRyBkaWQuIFdlJ2QKLSAgICAgICAgICAg
IC8vIGlkZWFsbHkgbGlrZSB0byBqdXN0IGtub3cgdGhhdCB0aGUgREZHIGhhZCBlbWl0dGVkIGEg
RGlyZWN0Q2FsbC4KLSAgICAgICAgICAgIGNvbnRpbnVlOworICAgIGRhdGFMb2coIkZpZ3VyaW5n
IG91dCBjYWxsIHByb2ZpbGluZyBmb3IgIiwgY29kZU9yaWdpbiwgIlxuIik7CisgICAgRXhpdFNp
dGVEYXRhIGV4aXRTaXRlRGF0YSA9IGNvbXB1dGVFeGl0U2l0ZURhdGEocHJvZmlsZWRCbG9jaywg
Y29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsKKyAgICBkYXRhTG9nKCJ0YWtlc1Nsb3dQYXRoID0g
IiwgZXhpdFNpdGVEYXRhLnRha2VzU2xvd1BhdGgsICJcbiIpOworICAgIGRhdGFMb2coImJhZEZ1
bmN0aW9uID0gIiwgZXhpdFNpdGVEYXRhLmJhZEZ1bmN0aW9uLCAiXG4iKTsKKyAgICAKKyAgICBm
b3IgKGNvbnN0IElDU3RhdHVzQ29udGV4dCogY29udGV4dCA6IG9wdGltaXplZFN0YWNrKSB7Cisg
ICAgICAgIGRhdGFMb2coIkV4YW1pbmluZyBzdGF0dXMgaW4gIiwgcG9pbnRlckR1bXAoY29udGV4
dC0+b3B0aW1pemVkQ29kZUJsb2NrKSwgIlxuIik7CisgICAgICAgIElDU3RhdHVzIHN0YXR1cyA9
IGNvbnRleHQtPmdldChjb2RlT3JpZ2luKTsKKyAgICAgICAgaWYgKHN0YXR1cy5jYWxsTGlua0lu
Zm8pIHsKKyAgICAgICAgICAgIGRhdGFMb2coIkhhdmUgQ2FsbExpbmtJbmZvIHdpdGggQ29kZU9y
aWdpbiA9ICIsIHN0YXR1cy5jYWxsTGlua0luZm8tPmNvZGVPcmlnaW4oKSwgIlxuIik7CisgICAg
ICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvbnRleHQtPm9wdGltaXplZENvZGVC
bG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgIENhbGxMaW5rU3RhdHVzIHJlc3VsdCA9IGNvbXB1
dGVGb3IoCisgICAgICAgICAgICAgICAgbG9ja2VyLCBjb250ZXh0LT5vcHRpbWl6ZWRDb2RlQmxv
Y2ssICpzdGF0dXMuY2FsbExpbmtJbmZvLCBleGl0U2l0ZURhdGEsCisgICAgICAgICAgICAgICAg
Y29kZU9yaWdpbi5leGl0aW5nSW5saW5lS2luZCgpKTsKKyAgICAgICAgICAgIGRhdGFMb2coIkdv
dCByZXN1bHQ6ICIsIHJlc3VsdCwgIlxuIik7CisgICAgICAgICAgICBpZiAocmVzdWx0KQorICAg
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KLSAgICAgICAgQ29kZU9yaWdp
biBjb2RlT3JpZ2luID0gaW5mby5jb2RlT3JpZ2luKCk7CiAgICAgICAgIAotICAgICAgICAvLyBD
aGVjayBpZiB3ZSBoYWQgYWxyZWFkeSBwcmV2aW91c2x5IG1hZGUgYSB0ZXJyaWJsZSBtaXN0YWtl
IGluIHRoZSBGVEwgZm9yIHRoaXMKLSAgICAgICAgLy8gY29kZSBvcmlnaW4uIE5vdGUgdGhhdCB0
aGlzIGlzIGFwcHJveGltYXRlIGJlY2F1c2Ugd2UgY291bGQgaGF2ZSBhIG1vbm92YXJpYW50Ci0g
ICAgICAgIC8vIGlubGluZSBpbiB0aGUgRlRMIHRoYXQgZW5kZWQgdXAgZmFpbGluZy4gV2Ugc2hv
dWxkIGZpeCB0aGF0IGF0IHNvbWUgcG9pbnQgYnkKLSAgICAgICAgLy8gaGF2aW5nIGRhdGEgc3Ry
dWN0dXJlcyB0byB0cmFjayB0aGUgY29udGV4dCBvZiBmcmVxdWVudCBleGl0cy4gVGhpcyBpcyBj
dXJyZW50bHkKLSAgICAgICAgLy8gY2hhbGxlbmdpbmcgYmVjYXVzZSBpdCB3b3VsZCByZXF1aXJl
IGNyZWF0aW5nIGEgQ29kZU9yaWdpbi1iYXNlZCBkYXRhYmFzZSBpbgotICAgICAgICAvLyBiYXNl
bGluZSBDb2RlQmxvY2tzLCBidXQgdGhvc2UgQ29kZUJsb2NrcyBkb24ndCByZWFsbHkgaGF2ZSBh
IHBsYWNlIHRvIHB1dCB0aGUKLSAgICAgICAgLy8gSW5saW5lQ2FsbEZyYW1lcy4KLSAgICAgICAg
Q29kZUJsb2NrKiBjdXJyZW50QmFzZWxpbmUgPQotICAgICAgICAgICAgYmFzZWxpbmVDb2RlQmxv
Y2tGb3JPcmlnaW5BbmRCYXNlbGluZUNvZGVCbG9jayhjb2RlT3JpZ2luLCBiYXNlbGluZUNvZGVC
bG9jayk7Ci0gICAgICAgIEV4aXRTaXRlRGF0YSBleGl0U2l0ZURhdGEgPSBjb21wdXRlRXhpdFNp
dGVEYXRhKGN1cnJlbnRCYXNlbGluZSwgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsKLSAgICAg
ICAgCi0gICAgICAgIHsKLSAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoZGZn
Q29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgbWFwLmFkZChpbmZvLmNvZGVPcmlnaW4o
KSwgY29tcHV0ZUZvcihsb2NrZXIsIGRmZ0NvZGVCbG9jaywgaW5mbywgZXhpdFNpdGVEYXRhKSk7
Ci0gICAgICAgIH0KLSAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShkZmdDb2RlQmxvY2sp
OwotI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQotICAgIAotICAgIGlmIChDYWxsTGlua1N0YXR1
c0ludGVybmFsOjp2ZXJib3NlKSB7Ci0gICAgICAgIGRhdGFMb2coIkNvbnRleHQgbWFwOlxuIik7
Ci0gICAgICAgIENvbnRleHRNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtYXAuYmVnaW4oKTsKLSAgICAg
ICAgQ29udGV4dE1hcDo6aXRlcmF0b3IgZW5kID0gbWFwLmVuZCgpOwotICAgICAgICBmb3IgKDsg
aXRlciAhPSBlbmQ7ICsraXRlcikgewotICAgICAgICAgICAgZGF0YUxvZygiICAgICIsIGl0ZXIt
PmtleSwgIjpcbiIpOwotICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICAiLCBpdGVyLT52YWx1
ZSwgIlxuIik7CisgICAgICAgIGlmIChzdGF0dXMuY2FsbFN0YXR1cykgeworICAgICAgICAgICAg
Q2FsbExpbmtTdGF0dXMgcmVzdWx0ID0gKnN0YXR1cy5jYWxsU3RhdHVzOworICAgICAgICAgICAg
ZGF0YUxvZygiSGF2ZSBjYWxsU3RhdHVzOiAiLCByZXN1bHQsICJcbiIpOworICAgICAgICAgICAg
cmVzdWx0LmFjY291bnRGb3JFeGl0cyhleGl0U2l0ZURhdGEsIGNvZGVPcmlnaW4uZXhpdGluZ0lu
bGluZUtpbmQoKSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAg
fQotfQotCi1DYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKLSAgICBD
b2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwKLSAgICBjb25z
dCBDYWxsTGlua0luZm9NYXAmIGJhc2VsaW5lTWFwLCBjb25zdCBDYWxsTGlua1N0YXR1czo6Q29u
dGV4dE1hcCYgZGZnTWFwKQotewotICAgIGF1dG8gaXRlciA9IGRmZ01hcC5maW5kKGNvZGVPcmln
aW4pOwotICAgIGlmIChpdGVyICE9IGRmZ01hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGl0ZXIt
PnZhbHVlOwogICAgIAotICAgIHJldHVybiBjb21wdXRlRm9yKHByb2ZpbGVkQmxvY2ssIGNvZGVP
cmlnaW4uYnl0ZWNvZGVJbmRleCwgYmFzZWxpbmVNYXApOworICAgIENhbGxMaW5rU3RhdHVzIHJl
c3VsdCA9IGNvbXB1dGVGb3IocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4
LCBiYXNlbGluZU1hcCwgZXhpdFNpdGVEYXRhKTsKKyAgICBkYXRhTG9nKCJDb21wdXRlZCBmcm9t
IGJhc2VsaW5lOiAiLCByZXN1bHQsICJcbiIpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZv
aWQgQ2FsbExpbmtTdGF0dXM6OnNldFByb3ZlbkNvbnN0YW50Q2FsbGVlKENhbGxWYXJpYW50IHZh
cmlhbnQpCkBAIC0zMjcsNiArMzI5LDI0IEBAIHZvaWQgQ2FsbExpbmtTdGF0dXM6Om1ha2VDbG9z
dXJlQ2FsbCgpCiAgICAgbV92YXJpYW50cyA9IGRlc3BlY2lmaWVkVmFyaWFudExpc3QobV92YXJp
YW50cyk7CiB9CiAKK2Jvb2wgQ2FsbExpbmtTdGF0dXM6OmZpbmFsaXplKCkKK3sKKyAgICBmb3Ig
KENhbGxWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykgeworICAgICAgICBpZiAoIXZhcmlh
bnQuZmluYWxpemUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3ZvaWQgQ2FsbExpbmtTdGF0dXM6OmZpbHRlcihWTSYgdm0sIEpTVmFs
dWUgdmFsdWUpCit7CisgICAgbV92YXJpYW50cy5yZW1vdmVBbGxNYXRjaGluZygKKyAgICAgICAg
WyZdIChDYWxsVmFyaWFudCYgdmFyaWFudCkgLT4gYm9vbCB7CisgICAgICAgICAgICB2YXJpYW50
LmZpbHRlcih2bSwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuICF2YXJpYW50OworICAgICAg
ICB9KTsKK30KKwogdm9pZCBDYWxsTGlua1N0YXR1czo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBj
b25zdAogewogICAgIGlmICghaXNTZXQoKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVkZSAiQ2FsbFZhcmlhbnQuaCIKICNpbmNsdWRl
ICJDb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAiQ29uY3VycmVudEpTTG9jay5oIgorI2luY2x1ZGUg
IkV4aXRGbGFnLmgiCisjaW5jbHVkZSAiSUNTdGF0dXNNYXAuaCIKICNpbmNsdWRlICJKU0NKU1Zh
bHVlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNjAsMzkgKzYyLDMzIEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKAot
ICAgICAgICBDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBjb25zdCBDYWxsTGlu
a0luZm9NYXAmKTsKLQogICAgIHN0cnVjdCBFeGl0U2l0ZURhdGEgewotICAgICAgICBib29sIHRh
a2VzU2xvd1BhdGggeyBmYWxzZSB9OwotICAgICAgICBib29sIGJhZEZ1bmN0aW9uIHsgZmFsc2Ug
fTsKKyAgICAgICAgRXhpdEZsYWcgdGFrZXNTbG93UGF0aDsKKyAgICAgICAgRXhpdEZsYWcgYmFk
RnVuY3Rpb247CiAgICAgfTsKICAgICBzdGF0aWMgRXhpdFNpdGVEYXRhIGNvbXB1dGVFeGl0U2l0
ZURhdGEoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CiAgICAgCisgICAgc3Rh
dGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCwgY29uc3QgSUNTdGF0dXNNYXAmLCBFeGl0U2l0ZURhdGEpOworICAgIHN0YXRpYyBD
YWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5k
ZXgsIGNvbnN0IElDU3RhdHVzTWFwJik7CisKICNpZiBFTkFCTEUoSklUKQogICAgIC8vIENvbXB1
dGVzIHRoZSBzdGF0dXMgYXNzdW1pbmcgdGhhdCB3ZSBuZXZlciB0b29rIHNsb3cgcGF0aCBhbmQg
bmV2ZXIgcHJldmlvdXNseQogICAgIC8vIGV4aXRlZC4KICAgICBzdGF0aWMgQ2FsbExpbmtTdGF0
dXMgY29tcHV0ZUZvcihjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqLCBDYWxs
TGlua0luZm8mKTsKKyAgICAKKyAgICAvLyBDb21wdXRlcyB0aGUgc3RhdHVzIGFjY291bnRpbmcg
Zm9yIGV4aXRzLgogICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKAotICAgICAg
ICBjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sqLCBDYWxsTGlua0luZm8mLCBF
eGl0U2l0ZURhdGEpOworICAgICAgICBjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxv
Y2sqLCBDYWxsTGlua0luZm8mLCBFeGl0U2l0ZURhdGEsIEV4aXRpbmdJbmxpbmVLaW5kID0gRXhp
dEZyb21BbnlJbmxpbmVLaW5kKTsKICNlbmRpZgogICAgIAotICAgIHR5cGVkZWYgSGFzaE1hcDxD
b2RlT3JpZ2luLCBDYWxsTGlua1N0YXR1cywgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFzaD4gQ29u
dGV4dE1hcDsKLSAgICAKLSAgICAvLyBDb21wdXRlcyBhbGwgb2YgdGhlIHN0YXR1c2VzIG9mIHRo
ZSBERkcgY29kZSBibG9jay4gRG9lc24ndCBpbmNsdWRlIHN0YXR1c2VzIHRoYXQgaGFkCi0gICAg
Ly8gbm8gaW5mb3JtYXRpb24uIEN1cnJlbnRseSB3ZSB1c2UgdGhpcyB3aGVuIGNvbXBpbGluZyBG
VEwgY29kZSwgdG8gZW5hYmxlIHBvbHl2YXJpYW50Ci0gICAgLy8gaW5saW5pbmcuCi0gICAgc3Rh
dGljIHZvaWQgY29tcHV0ZURGR1N0YXR1c2VzKENvZGVCbG9jayogZGZnQ29kZUJsb2NrLCBDb250
ZXh0TWFwJik7Ci0gICAgCi0gICAgLy8gSGVscGVyIHRoYXQgZmlyc3QgY29uc3VsdHMgdGhlIENv
bnRleHRNYXAgYW5kIHRoZW4gZG9lcyBjb21wdXRlRm9yKCkuCiAgICAgc3RhdGljIENhbGxMaW5r
U3RhdHVzIGNvbXB1dGVGb3IoCi0gICAgICAgIENvZGVCbG9jayosIENvZGVPcmlnaW4sIGNvbnN0
IENhbGxMaW5rSW5mb01hcCYsIGNvbnN0IENvbnRleHRNYXAmKTsKKyAgICAgICAgQ29kZUJsb2Nr
KiwgQ29kZU9yaWdpbiwgY29uc3QgSUNTdGF0dXNNYXAmLCBjb25zdCBJQ1N0YXR1c0NvbnRleHRT
dGFjayYpOwogICAgIAogICAgIHZvaWQgc2V0UHJvdmVuQ29uc3RhbnRDYWxsZWUoQ2FsbFZhcmlh
bnQpOwogICAgIAogICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiAhbV92YXJpYW50cy5p
c0VtcHR5KCkgfHwgbV9jb3VsZFRha2VTbG93UGF0aDsgfQogICAgIAotICAgIGJvb2wgb3BlcmF0
b3IhKCkgY29uc3QgeyByZXR1cm4gIWlzU2V0KCk7IH0KKyAgICBleHBsaWNpdCBvcGVyYXRvciBi
b29sKCkgY29uc3QgeyByZXR1cm4gaXNTZXQoKTsgfQogICAgIAogICAgIGJvb2wgY291bGRUYWtl
U2xvd1BhdGgoKSBjb25zdCB7IHJldHVybiBtX2NvdWxkVGFrZVNsb3dQYXRoOyB9CiAgICAgCkBA
IC0xMTAsNiArMTA2LDEwIEBAIHB1YmxpYzoKICAgICAKICAgICB1bnNpZ25lZCBtYXhOdW1Bcmd1
bWVudHMoKSBjb25zdCB7IHJldHVybiBtX21heE51bUFyZ3VtZW50czsgfQogICAgIAorICAgIGJv
b2wgZmluYWxpemUoKTsKKyAgICAKKyAgICB2b2lkIGZpbHRlcihWTSYsIEpTVmFsdWUpOworICAg
IAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIAogcHJpdmF0ZToKQEAg
LTEyMSw2ICsxMjEsOCBAQCBwcml2YXRlOgogICAgICAgICBjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImLCBDYWxsTGlua0luZm8mKTsKICNlbmRpZgogICAgIAorICAgIHZvaWQgYWNjb3VudEZvckV4
aXRzKEV4aXRTaXRlRGF0YSwgRXhpdGluZ0lubGluZUtpbmQpOworICAgIAogICAgIENhbGxWYXJp
YW50TGlzdCBtX3ZhcmlhbnRzOwogICAgIGJvb2wgbV9jb3VsZFRha2VTbG93UGF0aCB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX2lzUHJvdmVkIHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmNwcAkocmV2aXNpb24gMjMyMjI3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zMSw2ICszMSwzNSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorYm9vbCBD
YWxsVmFyaWFudDo6ZmluYWxpemUoKQoreworICAgIGlmIChtX2NhbGxlZSAmJiAhSGVhcDo6aXNN
YXJrZWQobV9jYWxsZWUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3ZvaWQgQ2FsbFZhcmlhbnQ6OmZpbHRlcihWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCit7
CisgICAgaWYgKCEqdGhpcykKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmICghaXNDbG9z
dXJlQ2FsbCgpKSB7CisgICAgICAgIGlmIChub25FeGVjdXRhYmxlQ2FsbGVlKCkgIT0gdmFsdWUp
CisgICAgICAgICAgICAqdGhpcyA9IENhbGxWYXJpYW50KCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgCisgICAgaWYgKEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxK
U0Z1bmN0aW9uKj4odm0sIHZhbHVlKSkgeworICAgICAgICBpZiAoZnVuY3Rpb24tPmV4ZWN1dGFi
bGUoKSA9PSBleGVjdXRhYmxlKCkpCisgICAgICAgICAgICAqdGhpcyA9IENhbGxWYXJpYW50KGZ1
bmN0aW9uKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKnRoaXMgPSBDYWxsVmFyaWFudCgp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgICp0aGlzID0gQ2FsbFZhcmlhbnQo
KTsKK30KKwogdm9pZCBDYWxsVmFyaWFudDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAog
ewogICAgIGlmICghKnRoaXMpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsVmFyaWFudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9DYWxsVmFyaWFudC5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03MSw3ICs3
MSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogICAgIAotICAgIGJvb2wgb3BlcmF0b3IhKCkg
Y29uc3QgeyByZXR1cm4gIW1fY2FsbGVlOyB9CisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgp
IGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsZWU7IH0KICAgICAKICAgICAvLyBJZiB0aGlzIHZhcmlh
bnQgcmVmZXJzIHRvIGEgZnVuY3Rpb24sIGNoYW5nZSBpdCB0byByZWZlciB0byBpdHMgZXhlY3V0
YWJsZS4KICAgICBBTFdBWVNfSU5MSU5FIENhbGxWYXJpYW50IGRlc3BlY2lmaWVkQ2xvc3VyZSgp
IGNvbnN0CkBAIC0xMzYsNiArMTM2LDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogICAgIAorICAgIGJvb2wgZmluYWxpemUoKTsKKyAgICAKKyAgICB2b2lkIGZp
bHRlcihWTSYsIEpTVmFsdWUpOworICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0
KSBjb25zdDsKICAgICAKICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShy
ZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM4LDI0ICsyMzgsMjAgQEAgdm9pZCBDb2RlQmxv
Y2s6OmR1bXBCeXRlY29kZSgpCiAKIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRT
dHJlYW0mIG91dCkKIHsKLSAgICBTdHViSW5mb01hcCBzdHViSW5mb3M7Ci0gICAgQ2FsbExpbmtJ
bmZvTWFwIGNhbGxMaW5rSW5mb3M7Ci0gICAgZ2V0U3R1YkluZm9NYXAoc3R1YkluZm9zKTsKLSAg
ICBnZXRDYWxsTGlua0luZm9NYXAoY2FsbExpbmtJbmZvcyk7Ci0gICAgQnl0ZWNvZGVEdW1wZXI8
Q29kZUJsb2NrPjo6ZHVtcEJsb2NrKHRoaXMsIGluc3RydWN0aW9ucygpLCBvdXQsIHN0dWJJbmZv
cywgY2FsbExpbmtJbmZvcyk7CisgICAgSUNTdGF0dXNNYXAgc3RhdHVzTWFwOworICAgIGdldElD
U3RhdHVzTWFwKHN0YXR1c01hcCk7CisgICAgQnl0ZWNvZGVEdW1wZXI8Q29kZUJsb2NrPjo6ZHVt
cEJsb2NrKHRoaXMsIGluc3RydWN0aW9ucygpLCBvdXQsIHN0YXR1c01hcCk7CiB9CiAKLXZvaWQg
Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rp
b24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBTdHViSW5mb01hcCYgc3R1
YkluZm9zLCBjb25zdCBDYWxsTGlua0luZm9NYXAmIGNhbGxMaW5rSW5mb3MpCit2b2lkIENvZGVC
bG9jazo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiBi
ZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01h
cCkKIHsKLSAgICBCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wQnl0ZWNvZGUodGhpcywg
b3V0LCBiZWdpbiwgaXQsIHN0dWJJbmZvcywgY2FsbExpbmtJbmZvcyk7CisgICAgQnl0ZWNvZGVE
dW1wZXI8Q29kZUJsb2NrPjo6ZHVtcEJ5dGVjb2RlKHRoaXMsIG91dCwgYmVnaW4sIGl0LCBzdGF0
dXNNYXApOwogfQogCi12b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAotICAgIFByaW50U3Ry
ZWFtJiBvdXQsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LAotICAgIGNvbnN0IFN0dWJJbmZvTWFw
JiBzdHViSW5mb3MsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYgY2FsbExpbmtJbmZvcykKK3ZvaWQg
Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgdW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgY29uc3QgSW5z
dHJ1Y3Rpb24qIGl0ID0gJmluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0XTsKLSAgICBkdW1w
Qnl0ZWNvZGUob3V0LCBpbnN0cnVjdGlvbnMoKS5iZWdpbigpLCBpdCwgc3R1YkluZm9zLCBjYWxs
TGlua0luZm9zKTsKKyAgICBkdW1wQnl0ZWNvZGUob3V0LCBpbnN0cnVjdGlvbnMoKS5iZWdpbigp
LCBpdCwgc3RhdHVzTWFwKTsKIH0KIAogI2RlZmluZSBGT1JfRUFDSF9NRU1CRVJfVkVDVE9SKG1h
Y3JvKSBcCkBAIC0xMTY2LDYgKzExNjIsOSBAQCB2b2lkIENvZGVCbG9jazo6cHJvcGFnYXRlVHJh
bnNpdGlvbnMoY29uCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgaWYgKEpJVENvZGU6OmlzT3B0
aW1pemluZ0pJVChqaXRUeXBlKCkpKSB7CiAgICAgICAgIERGRzo6Q29tbW9uRGF0YSogZGZnQ29t
bW9uID0gbV9qaXRDb2RlLT5kZmdDb21tb24oKTsKKyAgICAgICAgCisgICAgICAgIGRmZ0NvbW1v
bi0+cmVjb3JkZWRTdGF0dXNlcy5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKKyAgICAgICAgCiAgICAg
ICAgIGZvciAoYXV0byYgd2Vha1JlZmVyZW5jZSA6IGRmZ0NvbW1vbi0+d2Vha1N0cnVjdHVyZVJl
ZmVyZW5jZXMpCiAgICAgICAgICAgICB3ZWFrUmVmZXJlbmNlLT5tYXJrSWZDaGVhcCh2aXNpdG9y
KTsKIApAQCAtMTM5Nyw1NyArMTM5Niw0MyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNv
bmRpdGlvbmFsbHkoCiAgICAgICAgIGZpbmFsaXplQmFzZWxpbmVKSVRJbmxpbmVDYWNoZXMoKTsK
ICNlbmRpZgogCi0gICAgVk06OlNwYWNlQW5kRmluYWxpemVyU2V0OjpmaW5hbGl6ZXJTZXRGb3Io
KnN1YnNwYWNlKCkpLnJlbW92ZSh0aGlzKTsKLX0KLQotdm9pZCBDb2RlQmxvY2s6OmdldFN0dWJJ
bmZvTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFN0dWJJbmZvTWFwJiByZXN1bHQpCi17
Ci0jaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoSklUQ29kZTo6aXNKSVQoaml0VHlwZSgpKSkKLSAg
ICAgICAgdG9IYXNoTWFwKG1fc3R1YkluZm9zLCBnZXRTdHJ1Y3R1cmVTdHViSW5mb0NvZGVPcmln
aW4sIHJlc3VsdCk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShyZXN1bHQpOwotI2VuZGlmCi19
Ci0KLXZvaWQgQ29kZUJsb2NrOjpnZXRTdHViSW5mb01hcChTdHViSW5mb01hcCYgcmVzdWx0KQot
ewotICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9sb2NrKTsKLSAgICBnZXRTdHViSW5m
b01hcChsb2NrZXIsIHJlc3VsdCk7Ci19Ci0KLXZvaWQgQ29kZUJsb2NrOjpnZXRDYWxsTGlua0lu
Zm9NYXAoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ2FsbExpbmtJbmZvTWFwJiByZXN1bHQp
Ci17Ci0jaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoSklUQ29kZTo6aXNKSVQoaml0VHlwZSgpKSkK
LSAgICAgICAgdG9IYXNoTWFwKG1fY2FsbExpbmtJbmZvcywgZ2V0Q2FsbExpbmtJbmZvQ29kZU9y
aWdpbiwgcmVzdWx0KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHJlc3VsdCk7Ci0jZW5kaWYK
LX0KKyAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpIHsKKyAgICAg
ICAgREZHOjpDb21tb25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENvZGUtPmRmZ0NvbW1vbigpOwor
ICAgICAgICBkZmdDb21tb24tPnJlY29yZGVkU3RhdHVzZXMuZmluYWxpemUoKTsKKyAgICB9CiAK
LXZvaWQgQ29kZUJsb2NrOjpnZXRDYWxsTGlua0luZm9NYXAoQ2FsbExpbmtJbmZvTWFwJiByZXN1
bHQpCi17Ci0gICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIGdldENh
bGxMaW5rSW5mb01hcChsb2NrZXIsIHJlc3VsdCk7CisgICAgVk06OlNwYWNlQW5kRmluYWxpemVy
U2V0OjpmaW5hbGl6ZXJTZXRGb3IoKnN1YnNwYWNlKCkpLnJlbW92ZSh0aGlzKTsKIH0KIAotdm9p
ZCBDb2RlQmxvY2s6OmdldEJ5VmFsSW5mb01hcChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBC
eVZhbEluZm9NYXAmIHJlc3VsdCkKK3ZvaWQgQ29kZUJsb2NrOjpnZXRJQ1N0YXR1c01hcChjb25z
dCBDb25jdXJyZW50SlNMb2NrZXImLCBJQ1N0YXR1c01hcCYgcmVzdWx0KQogewogI2lmIEVOQUJM
RShKSVQpCiAgICAgaWYgKEpJVENvZGU6OmlzSklUKGppdFR5cGUoKSkpIHsKLSAgICAgICAgZm9y
IChhdXRvKiBieVZhbEluZm8gOiBtX2J5VmFsSW5mb3MpCi0gICAgICAgICAgICByZXN1bHQuYWRk
KENvZGVPcmlnaW4oYnlWYWxJbmZvLT5ieXRlY29kZUluZGV4KSwgYnlWYWxJbmZvKTsKKyAgICAg
ICAgZm9yIChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gOiBtX3N0dWJJbmZvcykKKyAgICAg
ICAgICAgIHJlc3VsdC5hZGQoc3R1YkluZm8tPmNvZGVPcmlnaW4sIElDU3RhdHVzKCkpLml0ZXJh
dG9yLT52YWx1ZS5zdHViSW5mbyA9IHN0dWJJbmZvOworICAgICAgICBmb3IgKENhbGxMaW5rSW5m
byogY2FsbExpbmtJbmZvIDogbV9jYWxsTGlua0luZm9zKQorICAgICAgICAgICAgcmVzdWx0LmFk
ZChjYWxsTGlua0luZm8tPmNvZGVPcmlnaW4oKSwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVl
LmNhbGxMaW5rSW5mbyA9IGNhbGxMaW5rSW5mbzsKKyAgICAgICAgZm9yIChCeVZhbEluZm8qIGJ5
VmFsSW5mbyA6IG1fYnlWYWxJbmZvcykKKyAgICAgICAgICAgIHJlc3VsdC5hZGQoQ29kZU9yaWdp
bihieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXgpLCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUu
YnlWYWxJbmZvID0gYnlWYWxJbmZvOworICAgICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5n
SklUKGppdFR5cGUoKSkpIHsKKyAgICAgICAgICAgIERGRzo6Q29tbW9uRGF0YSogZGZnQ29tbW9u
ID0gbV9qaXRDb2RlLT5kZmdDb21tb24oKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcGFpciA6
IGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5jYWxscykKKyAgICAgICAgICAgICAgICByZXN1
bHQuYWRkKHBhaXIuZmlyc3QsIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52YWx1ZS5jYWxsU3RhdHVz
ID0gcGFpci5zZWNvbmQuZ2V0KCk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBkZmdD
b21tb24tPnJlY29yZGVkU3RhdHVzZXMuZ2V0cykKKyAgICAgICAgICAgICAgICByZXN1bHQuYWRk
KHBhaXIuZmlyc3QsIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52YWx1ZS5nZXRTdGF0dXMgPSBwYWly
LnNlY29uZC5nZXQoKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcGFpciA6IGRmZ0NvbW1vbi0+
cmVjb3JkZWRTdGF0dXNlcy5wdXRzKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQocGFpci5m
aXJzdCwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLnB1dFN0YXR1cyA9IHBhaXIuc2Vjb25k
LmdldCgpOworICAgICAgICB9CiAgICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocmVzdWx0
KTsKICNlbmRpZgogfQogCi12b2lkIENvZGVCbG9jazo6Z2V0QnlWYWxJbmZvTWFwKEJ5VmFsSW5m
b01hcCYgcmVzdWx0KQordm9pZCBDb2RlQmxvY2s6OmdldElDU3RhdHVzTWFwKElDU3RhdHVzTWFw
JiByZXN1bHQpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAg
IGdldEJ5VmFsSW5mb01hcChsb2NrZXIsIHJlc3VsdCk7CisgICAgZ2V0SUNTdGF0dXNNYXAobG9j
a2VyLCByZXN1bHQpOwogfQogCiAjaWYgRU5BQkxFKEpJVCkKQEAgLTE1MTQsNyArMTQ5OSw3IEBA
IHZvaWQgQ29kZUJsb2NrOjpyZXNldEpJVERhdGEoKQogICAgIAogICAgIC8vIFdlIGNhbiBjbGVh
ciB0aGVzZSBiZWNhdXNlIG5vIG90aGVyIHRocmVhZCB3aWxsIGhhdmUgcmVmZXJlbmNlcyB0byBh
bnkgc3R1YiBpbmZvcywgY2FsbAogICAgIC8vIGxpbmsgaW5mb3MsIG9yIGJ5IHZhbCBpbmZvcyBp
ZiB3ZSBkb24ndCBoYXZlIEpJVCBjb2RlLiBBdHRlbXB0cyB0byBxdWVyeSB0aGVzZSBkYXRhCi0g
ICAgLy8gc3RydWN0dXJlcyB1c2luZyB0aGUgY29uY3VycmVudCBBUEkgKGdldFN0dWJJbmZvTWFw
IGFuZCBmcmllbmRzKSB3aWxsIHJldHVybiBub3RoaW5nIGlmIHdlCisgICAgLy8gc3RydWN0dXJl
cyB1c2luZyB0aGUgY29uY3VycmVudCBBUEkgKGdldElDU3RhdHVzTWFwIGFuZCBmcmllbmRzKSB3
aWxsIHJldHVybiBub3RoaW5nIGlmIHdlCiAgICAgLy8gZG9uJ3QgaGF2ZSBKSVQgY29kZS4KICAg
ICBtX3N0dWJJbmZvcy5jbGVhcigpOwogICAgIG1fY2FsbExpbmtJbmZvcy5jbGVhcigpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24g
MjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiRXhwcmVzc2lvblJhbmdl
SW5mby5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uRXhlY3V0YWJsZS5oIgogI2luY2x1ZGUgIkhhbmRs
ZXJJbmZvLmgiCisjaW5jbHVkZSAiSUNTdGF0dXNNYXAuaCIKICNpbmNsdWRlICJJbnN0cnVjdGlv
bi5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKICNpbmNsdWRlICJKSVRDb2RlTWFwLmgiCkBAIC05
Niw4ICs5Nyw2IEBAIGVudW0gY2xhc3MgQWNjZXNzVHlwZSA6IGludDhfdDsKIAogc3RydWN0IEFy
aXRoUHJvZmlsZTsKIAotdHlwZWRlZiBIYXNoTWFwPENvZGVPcmlnaW4sIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFzaD4gU3R1YkluZm9NYXA7Ci0KIGVudW0gUmVv
cHRpbWl6YXRpb25Nb2RlIHsgRG9udENvdW50UmVvcHRpbWl6YXRpb24sIENvdW50UmVvcHRpbWl6
YXRpb24gfTsKIAogY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CkBAIC0xOTYsOCAr
MTk1LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBkdW1wQnl0ZWNvZGUoKTsKICAgICB2b2lkIGR1
bXBCeXRlY29kZShQcmludFN0cmVhbSYpOwotICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3Ry
ZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBp
dCwgY29uc3QgU3R1YkluZm9NYXAmID0gU3R1YkluZm9NYXAoKSwgY29uc3QgQ2FsbExpbmtJbmZv
TWFwJiA9IENhbGxMaW5rSW5mb01hcCgpKTsKLSAgICB2b2lkIGR1bXBCeXRlY29kZShQcmludFN0
cmVhbSYgb3V0LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgU3R1YkluZm9NYXAmID0g
U3R1YkluZm9NYXAoKSwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiA9IENhbGxMaW5rSW5mb01hcCgp
KTsKKyAgICB2b2lkIGR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVj
dGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJiA9
IElDU3RhdHVzTWFwKCkpOworICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQs
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBJQ1N0YXR1c01hcCYgPSBJQ1N0YXR1c01h
cCgpKTsKIAogICAgIHZvaWQgZHVtcEV4Y2VwdGlvbkhhbmRsZXJzKFByaW50U3RyZWFtJik7CiAg
ICAgdm9pZCBwcmludFN0cnVjdHVyZXMoUHJpbnRTdHJlYW0mLCBjb25zdCBJbnN0cnVjdGlvbiop
OwpAQCAtMjM3LDE0ICsyMzYsOCBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiBieXRlY29kZU9mZnNldEZyb21DYWxsU2l0ZUluZGV4KENhbGxTaXRlSW5kZXgpOwogCi0g
ICAgdm9pZCBnZXRTdHViSW5mb01hcChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBTdHViSW5m
b01hcCYgcmVzdWx0KTsKLSAgICB2b2lkIGdldFN0dWJJbmZvTWFwKFN0dWJJbmZvTWFwJiByZXN1
bHQpOwotICAgIAotICAgIHZvaWQgZ2V0Q2FsbExpbmtJbmZvTWFwKGNvbnN0IENvbmN1cnJlbnRK
U0xvY2tlciYsIENhbGxMaW5rSW5mb01hcCYgcmVzdWx0KTsKLSAgICB2b2lkIGdldENhbGxMaW5r
SW5mb01hcChDYWxsTGlua0luZm9NYXAmIHJlc3VsdCk7Ci0KLSAgICB2b2lkIGdldEJ5VmFsSW5m
b01hcChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBCeVZhbEluZm9NYXAmIHJlc3VsdCk7Ci0g
ICAgdm9pZCBnZXRCeVZhbEluZm9NYXAoQnlWYWxJbmZvTWFwJiByZXN1bHQpOworICAgIHZvaWQg
Z2V0SUNTdGF0dXNNYXAoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgSUNTdGF0dXNNYXAmIHJl
c3VsdCk7CisgICAgdm9pZCBnZXRJQ1N0YXR1c01hcChJQ1N0YXR1c01hcCYgcmVzdWx0KTsKICAg
ICAKICNpZiBFTkFCTEUoSklUKQogICAgIEpJVEFkZElDKiBhZGRKSVRBZGRJQyhBcml0aFByb2Zp
bGUqLCBJbnN0cnVjdGlvbiopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVPcmlnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlT3JpZ2luLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDYsNyAr
NDYsNyBAQCB1bnNpZ25lZCBDb2RlT3JpZ2luOjppbmxpbmVEZXB0aCgpIGNvbnN0CiAgICAgcmV0
dXJuIGlubGluZURlcHRoRm9yQ2FsbEZyYW1lKGlubGluZUNhbGxGcmFtZSk7CiB9CiAKLWJvb2wg
Q29kZU9yaWdpbjo6aXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhjb25zdCBDb2RlT3JpZ2luJiBvdGhl
cikgY29uc3QKK2Jvb2wgQ29kZU9yaWdpbjo6aXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhjb25zdCBD
b2RlT3JpZ2luJiBvdGhlciwgSW5saW5lQ2FsbEZyYW1lKiB0ZXJtaW5hbCkgY29uc3QKIHsKICAg
ICBDb2RlT3JpZ2luIGEgPSAqdGhpczsKICAgICBDb2RlT3JpZ2luIGIgPSBvdGhlcjsKQEAgLTY4
LDEwICs2OCwxMiBAQCBib29sIENvZGVPcmlnaW46OmlzQXBwcm94aW1hdGVseUVxdWFsVG8oCiAg
ICAgICAgIGlmIChhLmJ5dGVjb2RlSW5kZXggIT0gYi5ieXRlY29kZUluZGV4KQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKLSAgICAgICAgaWYgKCghIWEuaW5saW5lQ2FsbEZy
YW1lKSAhPSAoISFiLmlubGluZUNhbGxGcmFtZSkpCisgICAgICAgIGJvb2wgYUhhc0lubGluZUNh
bGxGcmFtZSA9ICEhYS5pbmxpbmVDYWxsRnJhbWUgJiYgYS5pbmxpbmVDYWxsRnJhbWUgIT0gdGVy
bWluYWw7CisgICAgICAgIGJvb2wgYkhhc0lubGluZUNhbGxGcmFtZSA9ICEhYi5pbmxpbmVDYWxs
RnJhbWU7CisgICAgICAgIGlmIChhSGFzSW5saW5lQ2FsbEZyYW1lICE9IGJIYXNJbmxpbmVDYWxs
RnJhbWUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgICAgICBpZiAo
IWEuaW5saW5lQ2FsbEZyYW1lKQorICAgICAgICBpZiAoIWFIYXNJbmxpbmVDYWxsRnJhbWUpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAgICAgIGlmIChhLmlubGluZUNh
bGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkgIT0gYi5pbmxpbmVDYWxsRnJhbWUtPmJh
c2VsaW5lQ29kZUJsb2NrLmdldCgpKQpAQCAtODIsNyArODQsNyBAQCBib29sIENvZGVPcmlnaW46
OmlzQXBwcm94aW1hdGVseUVxdWFsVG8oCiAgICAgfQogfQogCi11bnNpZ25lZCBDb2RlT3JpZ2lu
OjphcHByb3hpbWF0ZUhhc2goKSBjb25zdAordW5zaWduZWQgQ29kZU9yaWdpbjo6YXBwcm94aW1h
dGVIYXNoKElubGluZUNhbGxGcmFtZSogdGVybWluYWwpIGNvbnN0CiB7CiAgICAgaWYgKCFpc1Nl
dCgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTk3LDYgKzk5LDkgQEAgdW5zaWduZWQgQ29kZU9y
aWdpbjo6YXBwcm94aW1hdGVIYXNoKCkgYwogICAgICAgICBpZiAoIWNvZGVPcmlnaW4uaW5saW5l
Q2FsbEZyYW1lKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgCisgICAgICAg
IGlmIChjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSA9PSB0ZXJtaW5hbCkKKyAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgICAgIAogICAgICAgICByZXN1bHQgKz0gV1RGOjpQdHJIYXNo
PEpTQ2VsbCo+OjpoYXNoKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVC
bG9jay5nZXQoKSk7CiAgICAgICAgIAogICAgICAgICBjb2RlT3JpZ2luID0gY29kZU9yaWdpbi5p
bmxpbmVDYWxsRnJhbWUtPmRpcmVjdENhbGxlcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlT3JpZ2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2
LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29kZUJsb2NrSGFzaC5oIgor
I2luY2x1ZGUgIkV4aXRpbmdJbmxpbmVLaW5kLmgiCiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KQEAgLTg4
LDE1ICs4OSwyMCBAQCBzdHJ1Y3QgQ29kZU9yaWdpbiB7CiAgICAgCiAgICAgc3RhdGljIHVuc2ln
bmVkIGlubGluZURlcHRoRm9yQ2FsbEZyYW1lKElubGluZUNhbGxGcmFtZSopOwogICAgIAorICAg
IEV4aXRpbmdJbmxpbmVLaW5kIGV4aXRpbmdJbmxpbmVLaW5kKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBpbmxpbmVDYWxsRnJhbWUgPyBFeGl0RnJvbUlubGluZWQgOiBFeGl0RnJvbU5v
dElubGluZWQ7CisgICAgfQorICAgIAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgQ29kZU9yaWdpbiYgb3RoZXIpIGNvbnN0OwogICAgIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBDb2RlT3JpZ2luJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhp
cyA9PSBvdGhlcik7IH0KICAgICAKICAgICAvLyBUaGlzIGNoZWNrcyBpZiB0aGUgdHdvIGNvZGUg
b3JpZ2lucyBjb3JyZXNwb25kIHRvIHRoZSBzYW1lIHN0YWNrIHRyYWNlIHNuaXBwZXRzLAogICAg
IC8vIGJ1dCBpZ25vcmUgd2hldGhlciB0aGUgSW5saW5lQ2FsbEZyYW1lJ3MgYXJlIGlkZW50aWNh
bC4KLSAgICBib29sIGlzQXBwcm94aW1hdGVseUVxdWFsVG8oY29uc3QgQ29kZU9yaWdpbiYgb3Ro
ZXIpIGNvbnN0OworICAgIGJvb2wgaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhjb25zdCBDb2RlT3Jp
Z2luJiBvdGhlciwgSW5saW5lQ2FsbEZyYW1lKiB0ZXJtaW5hbCA9IG51bGxwdHIpIGNvbnN0Owog
ICAgIAotICAgIHVuc2lnbmVkIGFwcHJveGltYXRlSGFzaCgpIGNvbnN0OworICAgIHVuc2lnbmVk
IGFwcHJveGltYXRlSGFzaChJbmxpbmVDYWxsRnJhbWUqIHRlcm1pbmFsID0gbnVsbHB0cikgY29u
c3Q7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rpb24+CiAgICAgdm9pZCB3YWxrVXBJ
bmxpbmVTdGFjayhjb25zdCBGdW5jdGlvbiYpOwpAQCAtMTA2LDcgKzExMiw3IEBAIHN0cnVjdCBD
b2RlT3JpZ2luIHsKICAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXAoUHJpbnRT
dHJlYW0mKSBjb25zdDsKICAgICB2b2lkIGR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mLCBEdW1w
Q29udGV4dCopIGNvbnN0OwotCisgICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyBJbmxpbmVDYWxs
RnJhbWUqIGRlbGV0ZWRNYXJrZXIoKQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNwcAkocmV2aXNpb24gMjMyMjI3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAKIHZvaWQgRnJlcXVlbnRFeGl0U2l0ZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dAogewotICAgIG91dC5wcmludCgiYmMjIiwgbV9ieXRlY29kZU9mZnNldCwgIjogIiwgbV9raW5k
LCAiLyIsIG1faml0VHlwZSk7CisgICAgb3V0LnByaW50KCJiYyMiLCBtX2J5dGVjb2RlT2Zmc2V0
LCAiOiAiLCBtX2tpbmQsICIvIiwgbV9qaXRUeXBlLCAiLyIsIG1faW5saW5lS2luZCk7CiB9CiAK
IEV4aXRQcm9maWxlOjpFeGl0UHJvZmlsZSgpIHsgfQpAQCAtNDMsOCArNDMsMTAgQEAgRXhpdFBy
b2ZpbGU6On5FeGl0UHJvZmlsZSgpIHsgfQogCiBib29sIEV4aXRQcm9maWxlOjphZGQoQ29kZUJs
b2NrKiBvd25lciwgY29uc3QgRnJlcXVlbnRFeGl0U2l0ZSYgc2l0ZSkKIHsKKyAgICBSRUxFQVNF
X0FTU0VSVChzaXRlLmppdFR5cGUoKSAhPSBFeGl0RnJvbUFueXRoaW5nKTsKKyAgICBSRUxFQVNF
X0FTU0VSVChzaXRlLmlubGluZUtpbmQoKSAhPSBFeGl0RnJvbUFueUlubGluZUtpbmQpOworCiAg
ICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihvd25lci0+dW5saW5rZWRDb2RlQmxvY2soKS0+
bV9sb2NrKTsKLSAgICBBU1NFUlQoc2l0ZS5qaXRUeXBlKCkgIT0gRXhpdEZyb21Bbnl0aGluZyk7
CiAKICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKG93bmVyLCAiZnJlcXVlbnRFeGl0IiwgKHNpdGUp
KTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJv
ZmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdF
eGl0UHJvZmlsZS5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYg
KzI5LDcgQEAKIAogI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKICNpbmNsdWRlICJFeGl0
S2luZC5oIgorI2luY2x1ZGUgIkV4aXRpbmdJbmxpbmVLaW5kLmgiCiAjaW5jbHVkZSAiRXhpdGlu
Z0pJVFR5cGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KQEAgLTQxLDYgKzQyLDcgQEAgcHVibGljOgogICAgICAgICA6IG1fYnl0ZWNvZGVPZmZz
ZXQoMCkgLy8gMCA9IGVtcHR5IHZhbHVlCiAgICAgICAgICwgbV9raW5kKEV4aXRLaW5kVW5zZXQp
CiAgICAgICAgICwgbV9qaXRUeXBlKEV4aXRGcm9tQW55dGhpbmcpCisgICAgICAgICwgbV9pbmxp
bmVLaW5kKEV4aXRGcm9tQW55SW5saW5lS2luZCkKICAgICB7CiAgICAgfQogICAgIApAQCAtNDgs
MTMgKzUwLDE1IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX2J5dGVjb2RlT2Zmc2V0KDEpIC8vIDEg
PSBkZWxldGVkIHZhbHVlCiAgICAgICAgICwgbV9raW5kKEV4aXRLaW5kVW5zZXQpCiAgICAgICAg
ICwgbV9qaXRUeXBlKEV4aXRGcm9tQW55dGhpbmcpCisgICAgICAgICwgbV9pbmxpbmVLaW5kKEV4
aXRGcm9tQW55SW5saW5lS2luZCkKICAgICB7CiAgICAgfQogICAgIAotICAgIGV4cGxpY2l0IEZy
ZXF1ZW50RXhpdFNpdGUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEV4aXRLaW5kIGtpbmQsIEV4
aXRpbmdKSVRUeXBlIGppdFR5cGUgPSBFeGl0RnJvbUFueXRoaW5nKQorICAgIGV4cGxpY2l0IEZy
ZXF1ZW50RXhpdFNpdGUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEV4aXRLaW5kIGtpbmQsIEV4
aXRpbmdKSVRUeXBlIGppdFR5cGUgPSBFeGl0RnJvbUFueXRoaW5nLCBFeGl0aW5nSW5saW5lS2lu
ZCBpbmxpbmVLaW5kID0gRXhpdEZyb21BbnlJbmxpbmVLaW5kKQogICAgICAgICA6IG1fYnl0ZWNv
ZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgICwgbV9raW5kKGtpbmQpCiAgICAgICAg
ICwgbV9qaXRUeXBlKGppdFR5cGUpCisgICAgICAgICwgbV9pbmxpbmVLaW5kKGlubGluZUtpbmQp
CiAgICAgewogICAgICAgICBpZiAobV9raW5kID09IEFyZ3VtZW50c0VzY2FwZWQpIHsKICAgICAg
ICAgICAgIC8vIENvdW50IHRoaXMgb25lIGdsb2JhbGx5LiBJdCBkb2Vzbid0IG1hdHRlciB3aGVy
ZSBpbiB0aGUgY29kZSBibG9jayB0aGUgYXJndW1lbnRzIGV4Y2FwZWQ7CkBAIC02NSwxMCArNjks
MTEgQEAgcHVibGljOgogICAgIAogICAgIC8vIFVzZSB0aGlzIGNvbnN0cnVjdG9yIGlmIHlvdSB3
aXNoIGZvciB0aGUgZXhpdCBzaXRlIHRvIGJlIGNvdW50ZWQgZ2xvYmFsbHkgd2l0aGluIGl0cwog
ICAgIC8vIGNvZGUgYmxvY2suCi0gICAgZXhwbGljaXQgRnJlcXVlbnRFeGl0U2l0ZShFeGl0S2lu
ZCBraW5kLCBFeGl0aW5nSklUVHlwZSBqaXRUeXBlID0gRXhpdEZyb21Bbnl0aGluZykKKyAgICBl
eHBsaWNpdCBGcmVxdWVudEV4aXRTaXRlKEV4aXRLaW5kIGtpbmQsIEV4aXRpbmdKSVRUeXBlIGpp
dFR5cGUgPSBFeGl0RnJvbUFueXRoaW5nLCBFeGl0aW5nSW5saW5lS2luZCBpbmxpbmVLaW5kID0g
RXhpdEZyb21BbnlJbmxpbmVLaW5kKQogICAgICAgICA6IG1fYnl0ZWNvZGVPZmZzZXQoMCkKICAg
ICAgICAgLCBtX2tpbmQoa2luZCkKICAgICAgICAgLCBtX2ppdFR5cGUoaml0VHlwZSkKKyAgICAg
ICAgLCBtX2lubGluZUtpbmQoaW5saW5lS2luZCkKICAgICB7CiAgICAgfQogICAgIApAQCAtODEs
NyArODYsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV9ieXRlY29kZU9mZnNl
dCA9PSBvdGhlci5tX2J5dGVjb2RlT2Zmc2V0CiAgICAgICAgICAgICAmJiBtX2tpbmQgPT0gb3Ro
ZXIubV9raW5kCi0gICAgICAgICAgICAmJiBtX2ppdFR5cGUgPT0gb3RoZXIubV9qaXRUeXBlOwor
ICAgICAgICAgICAgJiYgbV9qaXRUeXBlID09IG90aGVyLm1faml0VHlwZQorICAgICAgICAgICAg
JiYgbV9pbmxpbmVLaW5kID09IG90aGVyLm1faW5saW5lS2luZDsKICAgICB9CiAgICAgCiAgICAg
Ym9vbCBzdWJzdW1lcyhjb25zdCBGcmVxdWVudEV4aXRTaXRlJiBvdGhlcikgY29uc3QKQEAgLTkw
LDE5ICs5NiwyNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IGlmIChtX2tpbmQgIT0gb3RoZXIubV9raW5kKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICBpZiAobV9qaXRUeXBlID09IEV4aXRGcm9tQW55dGhpbmcpCi0gICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIG1faml0VHlwZSA9PSBvdGhlci5tX2ppdFR5cGU7
CisgICAgICAgIGlmIChtX2ppdFR5cGUgIT0gRXhpdEZyb21Bbnl0aGluZworICAgICAgICAgICAg
JiYgbV9qaXRUeXBlICE9IG90aGVyLm1faml0VHlwZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgaWYgKG1faW5saW5lS2luZCAhPSBFeGl0RnJvbUFueUlubGluZUtpbmQKKyAg
ICAgICAgICAgICYmIG1faW5saW5lS2luZCAhPSBvdGhlci5tX2lubGluZUtpbmQpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKICAg
ICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6OmludEhh
c2gobV9ieXRlY29kZU9mZnNldCkgKyBtX2tpbmQgKyBzdGF0aWNfY2FzdDxzdGQ6OnVuZGVybHlp
bmdfdHlwZV90PEV4aXRpbmdKSVRUeXBlPj4obV9qaXRUeXBlKSAqIDc7CisgICAgICAgIHJldHVy
biBXVEY6OmludEhhc2gobV9ieXRlY29kZU9mZnNldCkgKyBtX2tpbmQgKyBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obV9qaXRUeXBlKSAqIDcgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9pbmxpbmVL
aW5kKSAqIDExOwogICAgIH0KICAgICAKICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCgpIGNv
bnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVPZmZzZXQ7IH0KICAgICBFeGl0S2luZCBraW5kKCkgY29u
c3QgeyByZXR1cm4gbV9raW5kOyB9CiAgICAgRXhpdGluZ0pJVFR5cGUgaml0VHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1faml0VHlwZTsgfQorICAgIEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQo
KSBjb25zdCB7IHJldHVybiBtX2lubGluZUtpbmQ7IH0KICAgICAKICAgICBGcmVxdWVudEV4aXRT
aXRlIHdpdGhKSVRUeXBlKEV4aXRpbmdKSVRUeXBlIGppdFR5cGUpIGNvbnN0CiAgICAgewpAQCAt
MTExLDYgKzEyMiwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQog
CisgICAgRnJlcXVlbnRFeGl0U2l0ZSB3aXRoSW5saW5lS2luZChFeGl0aW5nSW5saW5lS2luZCBp
bmxpbmVLaW5kKSBjb25zdAorICAgIHsKKyAgICAgICAgRnJlcXVlbnRFeGl0U2l0ZSByZXN1bHQg
PSAqdGhpczsKKyAgICAgICAgcmVzdWx0Lm1faW5saW5lS2luZCA9IGlubGluZUtpbmQ7CisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCiAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRW
YWx1ZSgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9raW5kID09IEV4aXRLaW5kVW5z
ZXQgJiYgbV9ieXRlY29kZU9mZnNldDsKQEAgLTEyMiw2ICsxNDAsNyBAQCBwcml2YXRlOgogICAg
IHVuc2lnbmVkIG1fYnl0ZWNvZGVPZmZzZXQ7CiAgICAgRXhpdEtpbmQgbV9raW5kOwogICAgIEV4
aXRpbmdKSVRUeXBlIG1faml0VHlwZTsKKyAgICBFeGl0aW5nSW5saW5lS2luZCBtX2lubGluZUtp
bmQ7CiB9OwogCiBzdHJ1Y3QgRnJlcXVlbnRFeGl0U2l0ZUhhc2ggewpAQCAtMTkyLDEwICsyMTEs
MTAgQEAgcHVibGljOgogICAgIGJvb2wgaGFzRXhpdFNpdGUoY29uc3QgRnJlcXVlbnRFeGl0U2l0
ZSYgc2l0ZSkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChzaXRlLmppdFR5cGUoKSA9PSBFeGl0
RnJvbUFueXRoaW5nKSB7Ci0gICAgICAgICAgICByZXR1cm4gaGFzRXhpdFNpdGUoc2l0ZS53aXRo
SklUVHlwZShFeGl0RnJvbURGRykpCi0gICAgICAgICAgICAgICAgfHwgaGFzRXhpdFNpdGUoc2l0
ZS53aXRoSklUVHlwZShFeGl0RnJvbUZUTCkpOworICAgICAgICAgICAgcmV0dXJuIGhhc0V4aXRT
aXRlV2l0aFNwZWNpZmljSklUVHlwZShzaXRlLndpdGhKSVRUeXBlKEV4aXRGcm9tREZHKSkKKyAg
ICAgICAgICAgICAgICB8fCBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0pJVFR5cGUoc2l0ZS53aXRo
SklUVHlwZShFeGl0RnJvbUZUTCkpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtX2ZyZXF1
ZW50RXhpdFNpdGVzLmZpbmQoc2l0ZSkgIT0gbV9mcmVxdWVudEV4aXRTaXRlcy5lbmQoKTsKKyAg
ICAgICAgcmV0dXJuIGhhc0V4aXRTaXRlV2l0aFNwZWNpZmljSklUVHlwZShzaXRlKTsKICAgICB9
CiAgICAgCiAgICAgYm9vbCBoYXNFeGl0U2l0ZShFeGl0S2luZCBraW5kKSBjb25zdApAQCAtMjA4
LDYgKzIyNywyMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBoYXNFeGl0U2l0ZShGcmVxdWVu
dEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIGtpbmQpKTsKICAgICB9CiBwcml2YXRlOgorICAgIGJv
b2wgaGFzRXhpdFNpdGVXaXRoU3BlY2lmaWNKSVRUeXBlKGNvbnN0IEZyZXF1ZW50RXhpdFNpdGUm
IHNpdGUpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoc2l0ZS5pbmxpbmVLaW5kKCkgPT0gRXhp
dEZyb21BbnlJbmxpbmVLaW5kKSB7CisgICAgICAgICAgICByZXR1cm4gaGFzRXhpdFNpdGVXaXRo
U3BlY2lmaWNJbmxpbmVLaW5kKHNpdGUud2l0aElubGluZUtpbmQoRXhpdEZyb21Ob3RJbmxpbmVk
KSkKKyAgICAgICAgICAgICAgICB8fCBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0lubGluZUtpbmQo
c2l0ZS53aXRoSW5saW5lS2luZChFeGl0RnJvbUlubGluZWQpKTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gaGFzRXhpdFNpdGVXaXRoU3BlY2lmaWNJbmxpbmVLaW5kKHNpdGUpOworICAgIH0K
KyAgICAKKyAgICBib29sIGhhc0V4aXRTaXRlV2l0aFNwZWNpZmljSW5saW5lS2luZChjb25zdCBG
cmVxdWVudEV4aXRTaXRlJiBzaXRlKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZnJl
cXVlbnRFeGl0U2l0ZXMuZmluZChzaXRlKSAhPSBtX2ZyZXF1ZW50RXhpdFNpdGVzLmVuZCgpOwor
ICAgIH0KKyAgICAKICAgICBIYXNoU2V0PEZyZXF1ZW50RXhpdFNpdGU+IG1fZnJlcXVlbnRFeGl0
U2l0ZXM7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEZs
YWcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0
RmxhZy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V4aXRGbGFnLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJFeGl0RmxhZy5oIgorCisjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgor
CituYW1lc3BhY2UgSlNDIHsKKwordm9pZCBFeGl0RmxhZzo6ZHVtcChQcmludFN0cmVhbSYgb3V0
KSBjb25zdAoreworICAgIGlmICghbV9iaXRzKSB7CisgICAgICAgIG91dC5wcmludCgiZmFsc2Ui
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBDb21tYVByaW50ZXIgY29tbWEo
InwiKTsKKyAgICBpZiAoaXNTZXQoRXhpdEZyb21Ob3RJbmxpbmVkKSkKKyAgICAgICAgb3V0LnBy
aW50KGNvbW1hLCAibm90SW5saW5lZCIpOworICAgIGlmIChpc1NldChFeGl0RnJvbUlubGluZWQp
KQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICJpbmxpbmVkIik7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEZsYWcu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEZsYWcu
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEZs
YWcuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwMCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkV4
aXRpbmdJbmxpbmVLaW5kLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBFeGl0RmxhZyB7
CitwdWJsaWM6CisgICAgRXhpdEZsYWcoKSB7IH0KKyAgICAKKyAgICBFeGl0RmxhZyhib29sIHZh
bHVlLCBFeGl0aW5nSW5saW5lS2luZCBpbmxpbmVLaW5kKQorICAgIHsKKyAgICAgICAgaWYgKCF2
YWx1ZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIHN3aXRjaCAoaW5s
aW5lS2luZCkgeworICAgICAgICBjYXNlIEV4aXRGcm9tQW55SW5saW5lS2luZDoKKyAgICAgICAg
ICAgIG1fYml0cyA9IHRydWVOb3RJbmxpbmVkIHwgdHJ1ZUlubGluZWQ7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBFeGl0RnJvbU5vdElubGluZWQ6CisgICAgICAgICAgICBtX2Jp
dHMgPSB0cnVlTm90SW5saW5lZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEV4
aXRGcm9tSW5saW5lZDoKKyAgICAgICAgICAgIG1fYml0cyA9IHRydWVJbmxpbmVkOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgRXhpdEZsYWcgb3BlcmF0
b3J8KGNvbnN0IEV4aXRGbGFnJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIEV4aXRGbGFn
IHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1fYml0cyA9IG1fYml0cyB8IG90aGVyLm1fYml0czsK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgRXhpdEZsYWcmIG9wZXJh
dG9yfD0oY29uc3QgRXhpdEZsYWcmIG90aGVyKQorICAgIHsKKyAgICAgICAgKnRoaXMgPSAqdGhp
cyB8IG90aGVyOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorICAgIAorICAgIEV4aXRG
bGFnIG9wZXJhdG9yJihjb25zdCBFeGl0RmxhZyYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAg
ICBFeGl0RmxhZyByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5tX2JpdHMgPSBtX2JpdHMgJiBvdGhl
ci5tX2JpdHM7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIEV4aXRG
bGFnJiBvcGVyYXRvciY9KGNvbnN0IEV4aXRGbGFnJiBvdGhlcikKKyAgICB7CisgICAgICAgICp0
aGlzID0gKnRoaXMgJiBvdGhlcjsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKyAgICAK
KyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biAhIW1fYml0czsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc1NldChFeGl0aW5nSW5saW5lS2lu
ZCBpbmxpbmVLaW5kKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEhKCp0aGlzICYgRXhp
dEZsYWcodHJ1ZSwgaW5saW5lS2luZCkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGR1bXAoUHJp
bnRTdHJlYW0mKSBjb25zdDsKKyAgICAKK3ByaXZhdGU6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1
aW50OF90IHRydWVOb3RJbmxpbmVkID0gMTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3Qg
dHJ1ZUlubGluZWQgPSAyOworICAgIAorICAgIHVpbnQ4X3QgbV9iaXRzIHsgMCB9OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9FeGl0aW5nSW5saW5lS2luZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0V4aXRpbmdJbmxpbmVLaW5kLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkV4aXRpbmdJbmxp
bmVLaW5kLmgiCisKKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdU
RiB7CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0
cmVhbSYgb3V0LCBFeGl0aW5nSW5saW5lS2luZCB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkg
eworICAgIGNhc2UgRXhpdEZyb21BbnlJbmxpbmVLaW5kOgorICAgICAgICBvdXQucHJpbnQoIkZy
b21BbnlJbmxpbmVLaW5kIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEV4aXRGcm9tTm90
SW5saW5lZDoKKyAgICAgICAgb3V0LnByaW50KCJGcm9tTm90SW5saW5lZCIpOworICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBFeGl0RnJvbUlubGluZWQ6CisgICAgICAgIG91dC5wcmludCgiRnJv
bUlubGluZWQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRpbmdJbmxpbmVLaW5kLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRpbmdJbmxpbmVLaW5kLmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRpbmdJbmxpbmVL
aW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIEpT
QyB7CisKK2VudW0gRXhpdGluZ0lubGluZUtpbmQgOiB1aW50OF90IHsKKyAgICBFeGl0RnJvbUFu
eUlubGluZUtpbmQsCisgICAgRXhpdEZyb21Ob3RJbmxpbmVkLAorICAgIEV4aXRGcm9tSW5saW5l
ZCwKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3Mg
UHJpbnRTdHJlYW07Cit2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mLCBKU0M6OkV4aXRp
bmdJbmxpbmVLaW5kKTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKworCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lv
biAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDE2ICs1MSw2IEBAIGJvb2wgR2V0QnlJZFN0YXR1
czo6YXBwZW5kVmFyaWFudChjb25zdCAKICAgICByZXR1cm4gYXBwZW5kSUNTdGF0dXNWYXJpYW50
KG1fdmFyaWFudHMsIHZhcmlhbnQpOwogfQogCi0jaWYgRU5BQkxFKERGR19KSVQpCi1ib29sIEdl
dEJ5SWRTdGF0dXM6Omhhc0V4aXRTaXRlKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWdu
ZWQgYnl0ZWNvZGVJbmRleCkKLXsKLSAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2Rl
QmxvY2sgPSBwcm9maWxlZEJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpOwotICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIodW5saW5rZWRDb2RlQmxvY2stPm1fbG9jayk7Ci0gICAgcmV0dXJu
IHVubGlua2VkQ29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0
U2l0ZShieXRlY29kZUluZGV4LCBCYWRDYWNoZSkpCi0gICAgICAgIHx8IHVubGlua2VkQ29kZUJs
b2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUlu
ZGV4LCBCYWRDb25zdGFudENhY2hlKSk7Ci19Ci0jZW5kaWYKLQogR2V0QnlJZFN0YXR1cyBHZXRC
eUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5z
aWduZWQgYnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBWTSYg
dm0gPSAqcHJvZmlsZWRCbG9jay0+dm0oKTsKQEAgLTEwNSw3ICs5NSw3IEBAIEdldEJ5SWRTdGF0
dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb20KICAgICB9CiB9CiAKLUdldEJ5SWRTdGF0dXMg
R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIFN0dWJJ
bmZvTWFwJiBtYXAsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQpCitHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBw
cm9maWxlZEJsb2NrLCBJQ1N0YXR1c01hcCYgbWFwLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBV
bmlxdWVkU3RyaW5nSW1wbCogdWlkLCBFeGl0RmxhZyBkaWRFeGl0LCBDYWxsTGlua1N0YXR1czo6
RXhpdFNpdGVEYXRhIGNhbGxFeGl0U2l0ZURhdGEpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2Vy
IGxvY2tlcihwcm9maWxlZEJsb2NrLT5tX2xvY2spOwogCkBAIC0xMTMsMTIgKzEwMywxMSBAQCBH
ZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAKICNpZiBFTkFCTEUoREZH
X0pJVCkKICAgICByZXN1bHQgPSBjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVk
YmFjaygKLSAgICAgICAgbG9ja2VyLCBwcm9maWxlZEJsb2NrLCBtYXAuZ2V0KENvZGVPcmlnaW4o
Ynl0ZWNvZGVJbmRleCkpLCB1aWQsCi0gICAgICAgIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhp
dFNpdGVEYXRhKHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpKTsKKyAgICAgICAgbG9ja2Vy
LCBwcm9maWxlZEJsb2NrLCBtYXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkpLnN0dWJJ
bmZvLCB1aWQsCisgICAgICAgIGNhbGxFeGl0U2l0ZURhdGEpOwogICAgIAotICAgIGlmICghcmVz
dWx0LnRha2VzU2xvd1BhdGgoKQotICAgICAgICAmJiBoYXNFeGl0U2l0ZShwcm9maWxlZEJsb2Nr
LCBieXRlY29kZUluZGV4KSkKLSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMocmVzdWx0Lm1h
a2VzQ2FsbHMoKSA/IE1ha2VzQ2FsbHMgOiBUYWtlc1Nsb3dQYXRoLCB0cnVlKTsKKyAgICBpZiAo
ZGlkRXhpdCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5zbG93VmVyc2lvbigpOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0obWFwKTsKICNlbmRpZgpAQCAtMTM2LDggKzEyNSw4IEBAIEdldEJ5SWRT
dGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclMKICAgICAgICAgbG9ja2VyLCBwcm9maWxl
ZEJsb2NrLCBzdHViSW5mbywgdWlkLAogICAgICAgICBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUV4
aXRTaXRlRGF0YShwcm9maWxlZEJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpKTsKIAot
ICAgIGlmICghcmVzdWx0LnRha2VzU2xvd1BhdGgoKSAmJiBHZXRCeUlkU3RhdHVzOjpoYXNFeGl0
U2l0ZShwcm9maWxlZEJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpKQotICAgICAgICBy
ZXR1cm4gR2V0QnlJZFN0YXR1cyhyZXN1bHQubWFrZXNDYWxscygpID8gR2V0QnlJZFN0YXR1czo6
TWFrZXNDYWxscyA6IEdldEJ5SWRTdGF0dXM6OlRha2VzU2xvd1BhdGgsIHRydWUpOworICAgIGlm
ICghcmVzdWx0LnRha2VzU2xvd1BhdGgoKSAmJiBoYXNCYWRDYWNoZUV4aXRTaXRlKHByb2ZpbGVk
QmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkpCisgICAgICAgIHJldHVybiByZXN1bHQu
c2xvd1ZlcnNpb24oKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogI2VuZGlmIC8vIEVOQUJMRShE
RkdfSklUKQpAQCAtMzE0LDQwICszMDMsMzUgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVz
Ojpjb21wdXRlRm9yUwogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKIEdldEJ5SWRTdGF0dXMgR2V0
QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKLSAgICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIENv
ZGVCbG9jayogZGZnQmxvY2ssIFN0dWJJbmZvTWFwJiBiYXNlbGluZU1hcCwKLSAgICBTdHViSW5m
b01hcCYgZGZnTWFwLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQpCisgICAgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBJQ1N0YXR1c01hcCYgYmFzZWxpbmVN
YXAsCisgICAgSUNTdGF0dXNDb250ZXh0U3RhY2smIGljQ29udGV4dFN0YWNrLCBDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7Ci0jaWYgRU5BQkxFKERGR19K
SVQpCi0gICAgaWYgKGRmZ0Jsb2NrKSB7Ci0gICAgICAgIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0
ZURhdGEgZXhpdFNpdGVEYXRhOwotICAgICAgICB7Ci0gICAgICAgICAgICBDb25jdXJyZW50SlNM
b2NrZXIgbG9ja2VyKHByb2ZpbGVkQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICBleGl0U2l0
ZURhdGEgPSBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YSgKLSAgICAgICAgICAg
ICAgICBwcm9maWxlZEJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpOwotICAgICAgICB9
Ci0gICAgICAgIAotICAgICAgICBHZXRCeUlkU3RhdHVzIHJlc3VsdDsKLSAgICAgICAgewotICAg
ICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihkZmdCbG9jay0+bV9sb2NrKTsKLSAg
ICAgICAgICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRi
YWNrKAotICAgICAgICAgICAgICAgIGxvY2tlciwgZGZnQmxvY2ssIGRmZ01hcC5nZXQoY29kZU9y
aWdpbiksIHVpZCwgZXhpdFNpdGVEYXRhKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChyZXN1
bHQudGFrZXNTbG93UGF0aCgpKQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICBDYWxs
TGlua1N0YXR1czo6RXhpdFNpdGVEYXRhIGNhbGxFeGl0U2l0ZURhdGEgPQorICAgICAgICBDYWxs
TGlua1N0YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YShwcm9maWxlZEJsb2NrLCBjb2RlT3JpZ2lu
LmJ5dGVjb2RlSW5kZXgpOworICAgIEV4aXRGbGFnIGRpZEV4aXQgPSBoYXNCYWRDYWNoZUV4aXRT
aXRlKHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7CiAgICAgCi0gICAg
ICAgIGlmIChoYXNFeGl0U2l0ZShwcm9maWxlZEJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5k
ZXgpKQotICAgICAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgdHJ1
ZSk7CisgICAgZm9yIChJQ1N0YXR1c0NvbnRleHQqIGNvbnRleHQgOiBpY0NvbnRleHRTdGFjaykg
eworICAgICAgICBJQ1N0YXR1cyBzdGF0dXMgPSBjb250ZXh0LT5nZXQoY29kZU9yaWdpbik7CiAg
ICAgICAgIAotICAgICAgICBpZiAocmVzdWx0LmlzU2V0KCkpCisgICAgICAgIGF1dG8gd2l0aEV4
aXRzID0gWyZdIChjb25zdCBHZXRCeUlkU3RhdHVzJiByZXN1bHQpIC0+IEdldEJ5SWRTdGF0dXMg
eworICAgICAgICAgICAgaWYgKGRpZEV4aXQuaXNTZXQoY29kZU9yaWdpbi5leGl0aW5nSW5saW5l
S2luZCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnNsb3dWZXJzaW9uKCk7CiAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFN
KGRmZ0Jsb2NrKTsKLSAgICBVTlVTRURfUEFSQU0oZGZnTWFwKTsKLSNlbmRpZgorICAgICAgICB9
OwogCi0gICAgcmV0dXJuIGNvbXB1dGVGb3IocHJvZmlsZWRCbG9jaywgYmFzZWxpbmVNYXAsIGNv
ZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgdWlkKTsKKyAgICAgICAgaWYgKHN0YXR1cy5zdHViSW5m
bykgeworICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb250ZXh0LT5vcHRp
bWl6ZWRDb2RlQmxvY2stPm1fbG9jayk7CisgICAgICAgICAgICBHZXRCeUlkU3RhdHVzIHJlc3Vs
dCA9IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAorICAgICAgICAg
ICAgICAgIGxvY2tlciwgY29udGV4dC0+b3B0aW1pemVkQ29kZUJsb2NrLCBzdGF0dXMuc3R1Yklu
Zm8sIHVpZCwgY2FsbEV4aXRTaXRlRGF0YSk7CisgICAgICAgICAgICBpZiAocmVzdWx0LmlzU2V0
KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhFeGl0cyhyZXN1bHQpOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBpZiAoc3RhdHVzLmdldFN0YXR1cykKKyAgICAgICAgICAgIHJl
dHVybiB3aXRoRXhpdHMoKnN0YXR1cy5nZXRTdGF0dXMpOworICAgIH0KKyAgICAgICAgCisgICAg
cmV0dXJuIGNvbXB1dGVGb3IocHJvZmlsZWRCbG9jaywgYmFzZWxpbmVNYXAsIGNvZGVPcmlnaW4u
Ynl0ZWNvZGVJbmRleCwgdWlkLCBkaWRFeGl0LCBjYWxsRXhpdFNpdGVEYXRhKTsKIH0KIAogR2V0
QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKGNvbnN0IFN0cnVjdHVyZVNldCYg
c2V0LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQpAQCAtNDE0LDYgKzM5OCwxMSBAQCBib29sIEdl
dEJ5SWRTdGF0dXM6Om1ha2VzQ2FsbHMoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAor
R2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpzbG93VmVyc2lvbigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIEdldEJ5SWRTdGF0dXMobWFrZXNDYWxscygpID8gTWFrZXNDYWxscyA6IFRha2VzU2xv
d1BhdGgsIHdhc1NlZW5JbkpJVCgpKTsKK30KKwogdm9pZCBHZXRCeUlkU3RhdHVzOjpmaWx0ZXIo
Y29uc3QgU3RydWN0dXJlU2V0JiBzZXQpCiB7CiAgICAgaWYgKG1fc3RhdGUgIT0gU2ltcGxlKQpA
QCAtNDIzLDYgKzQxMiwyNSBAQCB2b2lkIEdldEJ5SWRTdGF0dXM6OmZpbHRlcihjb25zdCBTdHJ1
Y3R1CiAgICAgICAgIG1fc3RhdGUgPSBOb0luZm9ybWF0aW9uOwogfQogCit2b2lkIEdldEJ5SWRT
dGF0dXM6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGZvciAoR2V0
QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKQorICAgICAgICB2YXJpYW50Lm1hcmtJ
ZkNoZWFwKHZpc2l0b3IpOworfQorCitib29sIEdldEJ5SWRTdGF0dXM6OmZpbmFsaXplKCkKK3sK
KyAgICBmb3IgKEdldEJ5SWRWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykgeworICAgICAg
ICBpZiAoIXZhcmlhbnQuZmluYWxpemUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgaWYgKG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0ICYmICFIZWFwOjppc01hcmtlZCht
X21vZHVsZU5hbWVzcGFjZU9iamVjdCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAo
bV9tb2R1bGVFbnZpcm9ubWVudCAmJiAhSGVhcDo6aXNNYXJrZWQobV9tb2R1bGVFbnZpcm9ubWVu
dCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBH
ZXRCeUlkU3RhdHVzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgb3V0LnBy
aW50KCIoIik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0
YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRC
eUlkU3RhdHVzLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDkgQEAK
ICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNp
bmNsdWRlICJDb25jdXJyZW50SlNMb2NrLmgiCisjaW5jbHVkZSAiRXhpdEZsYWcuaCIKICNpbmNs
dWRlICJHZXRCeUlkVmFyaWFudC5oIgorI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCiAjaW5jbHVk
ZSAiU2NvcGVPZmZzZXQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00MCw4ICs0Miw2IEBAIGNs
YXNzIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OwogY2xhc3MgTW9kdWxlTmFtZXNwYWNlQWNjZXNz
Q2FzZTsKIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOwogCi10eXBlZGVmIEhhc2hNYXA8Q29kZU9y
aWdpbiwgU3RydWN0dXJlU3R1YkluZm8qLCBDb2RlT3JpZ2luQXBwcm94aW1hdGVIYXNoPiBTdHVi
SW5mb01hcDsKLQogY2xhc3MgR2V0QnlJZFN0YXR1cyB7CiBwdWJsaWM6CiAgICAgZW51bSBTdGF0
ZSB7CkBAIC04MSwxMCArODEsMTAgQEAgcHVibGljOgogICAgICAgICBtX3ZhcmlhbnRzLmFwcGVu
ZCh2YXJpYW50KTsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIEdldEJ5SWRTdGF0dXMgY29tcHV0
ZUZvcihDb2RlQmxvY2sqLCBTdHViSW5mb01hcCYsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFVu
aXF1ZWRTdHJpbmdJbXBsKiB1aWQpOworICAgIHN0YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVG
b3IoQ29kZUJsb2NrKiwgSUNTdGF0dXNNYXAmLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkLCBFeGl0RmxhZywgQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0
YSk7CiAgICAgc3RhdGljIEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihjb25zdCBTdHJ1Y3R1cmVT
ZXQmLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKICAgICAKLSAgICBzdGF0aWMgR2V0QnlJZFN0
YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgQ29kZUJsb2NrKiBkZmdC
bG9jaywgU3R1YkluZm9NYXAmIGJhc2VsaW5lTWFwLCBTdHViSW5mb01hcCYgZGZnTWFwLCBDb2Rl
T3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKKyAgICBzdGF0aWMgR2V0QnlJZFN0YXR1
cyBjb21wdXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAmIGJhc2Vs
aW5lTWFwLCBJQ1N0YXR1c0NvbnRleHRTdGFjayYgZGZnQ29udGV4dFN0YWNrLCBDb2RlT3JpZ2lu
LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIHN0
YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mbyhjb25zdCBDb25jdXJyZW50SlNM
b2NrZXImLCBDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiwgQ29k
ZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7CkBAIC0xMDYsNiArMTA2LDggQEAgcHVi
bGljOgogICAgIGJvb2wgdGFrZXNTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0g
VGFrZXNTbG93UGF0aCB8fCBtX3N0YXRlID09IE1ha2VzQ2FsbHMgfHwgbV9zdGF0ZSA9PSBDdXN0
b20gfHwgbV9zdGF0ZSA9PSBNb2R1bGVOYW1lc3BhY2U7IH0KICAgICBib29sIG1ha2VzQ2FsbHMo
KSBjb25zdDsKICAgICAKKyAgICBHZXRCeUlkU3RhdHVzIHNsb3dWZXJzaW9uKCkgY29uc3Q7Cisg
ICAgCiAgICAgYm9vbCB3YXNTZWVuSW5KSVQoKSBjb25zdCB7IHJldHVybiBtX3dhc1NlZW5JbkpJ
VDsgfQogICAgIAogICAgIC8vIEF0dGVtcHRzIHRvIHJlZHVjZSB0aGUgc2V0IG9mIHZhcmlhbnRz
IHRvIGZpdCB0aGUgZ2l2ZW4gc3RydWN0dXJlIHNldC4gVGhpcyBtYXkgYmUgYXBwcm94aW1hdGUu
CkBAIC0xMTUsMTIgKzExNywxMiBAQCBwdWJsaWM6CiAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCog
bW9kdWxlRW52aXJvbm1lbnQoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZUVudmlyb25tZW50OyB9
CiAgICAgU2NvcGVPZmZzZXQgc2NvcGVPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3Njb3BlT2Zm
c2V0OyB9CiAgICAgCisgICAgdm9pZCBtYXJrSWZDaGVhcChTbG90VmlzaXRvciYpOworICAgIGJv
b2wgZmluYWxpemUoKTsgLy8gUmV0dXJuIHRydWUgaWYgdGhpcyBnZXRzIHRvIGxpdmUuCisgICAg
CiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgotI2lm
IEVOQUJMRShERkdfSklUKQotICAgIHN0YXRpYyBib29sIGhhc0V4aXRTaXRlKENvZGVCbG9jayos
IHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwotI2VuZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICBH
ZXRCeUlkU3RhdHVzKGNvbnN0IE1vZHVsZU5hbWVzcGFjZUFjY2Vzc0Nhc2UmKTsKICAgICBzdGF0
aWMgR2V0QnlJZFN0YXR1cyBjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFj
aygKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRW
YXJpYW50LmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM1LDYgKzEzNSwy
NCBAQCBib29sIEdldEJ5SWRWYXJpYW50OjphdHRlbXB0VG9NZXJnZShjb25zCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKK3ZvaWQgR2V0QnlJZFZhcmlhbnQ6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQoreworICAgIG1fc3RydWN0dXJlU2V0Lm1hcmtJZkNoZWFwKHZpc2l0b3IpOwor
fQorCitib29sIEdldEJ5SWRWYXJpYW50OjpmaW5hbGl6ZSgpCit7CisgICAgaWYgKCFtX3N0cnVj
dHVyZVNldC5pc1N0aWxsQWxpdmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICgh
bV9jb25kaXRpb25TZXQuYXJlU3RpbGxMaXZlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAobV9jYWxsTGlua1N0YXR1cyAmJiAhbV9jYWxsTGlua1N0YXR1cy0+ZmluYWxpemUoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2ludHJpbnNpY0Z1bmN0aW9uICYmICFI
ZWFwOjppc01hcmtlZChtX2ludHJpbnNpY0Z1bmN0aW9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIEdldEJ5SWRWYXJpYW50OjpkdW1wKFByaW50
U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgZHVtcEluQ29udGV4dChvdXQsIDApOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmgJKHJl
dmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlk
VmFyaWFudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw2ICs3Myw5IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgYXR0ZW1wdFRvTWVyZ2UoY29uc3QgR2V0QnlJZFZhcmlhbnQmIG90aGVyKTsKICAgICAK
KyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7CisgICAgYm9vbCBmaW5hbGl6ZSgp
OworICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIHZvaWQgZHVt
cEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0KikgY29uc3Q7CiAgICAgCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNNYXAuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5jcHAJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFw
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJJQ1N0YXR1c01hcC5oIgorCisjaW5jbHVkZSAiSW5saW5lQ2FsbEZyYW1lLmgiCisjaW5jbHVk
ZSAiVGVybWluYXRlZENvZGVPcmlnaW4uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0lDU3RhdHVz
IElDU3RhdHVzQ29udGV4dDo6Z2V0KENvZGVPcmlnaW4gY29kZU9yaWdpbikgY29uc3QKK3sKKyAg
ICByZXR1cm4gbWFwLmdldDxUZXJtaW5hdGVkQ29kZU9yaWdpbkhhc2hUcmFuc2xhdG9yPigKKyAg
ICAgICAgVGVybWluYXRlZENvZGVPcmlnaW4oY29kZU9yaWdpbiwgaW5saW5lQ2FsbEZyYW1lKSk7
Cit9CisKK2Jvb2wgSUNTdGF0dXNDb250ZXh0Ojppc0lubGluZWQoQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luKSBjb25zdAoreworICAgIHJldHVybiBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSAmJiBj
b2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSAhPSBpbmxpbmVDYWxsRnJhbWU7Cit9CisKK0V4aXRp
bmdJbmxpbmVLaW5kIElDU3RhdHVzQ29udGV4dDo6aW5saW5lS2luZChDb2RlT3JpZ2luIGNvZGVP
cmlnaW4pIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzSW5saW5lZChjb2RlT3JpZ2luKSA/IEV4aXRG
cm9tSW5saW5lZCA6IEV4aXRGcm9tTm90SW5saW5lZDsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5o
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1
c01hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJD
b2RlT3JpZ2luLmgiCisjaW5jbHVkZSAiRXhpdGluZ0lubGluZUtpbmQuaCIKKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQ2FsbExpbmtJbmZvOwor
Y2xhc3MgQ2FsbExpbmtTdGF0dXM7CitjbGFzcyBDb2RlQmxvY2s7CitjbGFzcyBHZXRCeUlkU3Rh
dHVzOworY2xhc3MgUHV0QnlJZFN0YXR1czsKK2NsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOworc3Ry
dWN0IEJ5VmFsSW5mbzsKKworc3RydWN0IElDU3RhdHVzIHsKKyAgICBTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8geyBudWxscHRyIH07CisgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8g
eyBudWxscHRyIH07CisgICAgQnlWYWxJbmZvKiBieVZhbEluZm8geyBudWxscHRyIH07CisgICAg
Q2FsbExpbmtTdGF0dXMqIGNhbGxTdGF0dXMgeyBudWxscHRyIH07CisgICAgR2V0QnlJZFN0YXR1
cyogZ2V0U3RhdHVzIHsgbnVsbHB0ciB9OworICAgIFB1dEJ5SWRTdGF0dXMqIHB1dFN0YXR1cyB7
IG51bGxwdHIgfTsKK307CisKK3R5cGVkZWYgSGFzaE1hcDxDb2RlT3JpZ2luLCBJQ1N0YXR1cywg
Q29kZU9yaWdpbkFwcHJveGltYXRlSGFzaD4gSUNTdGF0dXNNYXA7CisKK3N0cnVjdCBJQ1N0YXR1
c0NvbnRleHQgeworICAgIElDU3RhdHVzIGdldChDb2RlT3JpZ2luKSBjb25zdDsKKyAgICBib29s
IGlzSW5saW5lZChDb2RlT3JpZ2luKSBjb25zdDsKKyAgICBFeGl0aW5nSW5saW5lS2luZCBpbmxp
bmVLaW5kKENvZGVPcmlnaW4pIGNvbnN0OworICAgIAorICAgIElubGluZUNhbGxGcmFtZSogaW5s
aW5lQ2FsbEZyYW1lIHsgbnVsbHB0ciB9OworICAgIENvZGVCbG9jayogb3B0aW1pemVkQ29kZUJs
b2NrIHsgbnVsbHB0ciB9OworICAgIElDU3RhdHVzTWFwIG1hcDsKK307CisKK3R5cGVkZWYgVmVj
dG9yPElDU3RhdHVzQ29udGV4dCosIDg+IElDU3RhdHVzQ29udGV4dFN0YWNrOworCit9IC8vIG5h
bWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3Rh
dHVzVXRpbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9JQ1N0YXR1c1V0aWxzLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSUNTdGF0dXNVdGlscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSUNTdGF0dXNVdGlscy5oIgorCisjaW5jbHVkZSAi
Q29kZUJsb2NrLmgiCisjaW5jbHVkZSAiRXhpdEZsYWcuaCIKKyNpbmNsdWRlICJVbmxpbmtlZENv
ZGVCbG9jay5oIgorCituYW1lc3BhY2UgSlNDIHsKKworRXhpdEZsYWcgaGFzQmFkQ2FjaGVFeGl0
U2l0ZShDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCit7
CisjaWYgRU5BQkxFKERGR19KSVQpCisgICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29k
ZUJsb2NrID0gcHJvZmlsZWRCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKTsKKyAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKHVubGlua2VkQ29kZUJsb2NrLT5tX2xvY2spOworICAgIGF1dG8g
ZXhpdEZsYWcgPSBbJl0gKEV4aXRLaW5kIGV4aXRLaW5kKSAtPiBFeGl0RmxhZyB7CisgICAgICAg
IGF1dG8gd2l0aElubGluZWQgPSBbJl0gKEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQpIC0+
IEV4aXRGbGFnIHsKKyAgICAgICAgICAgIHJldHVybiBFeGl0RmxhZyh1bmxpbmtlZENvZGVCbG9j
ay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRl
eCwgZXhpdEtpbmQsIEV4aXRGcm9tQW55dGhpbmcsIGlubGluZUtpbmQpKSwgaW5saW5lS2luZCk7
CisgICAgICAgIH07CisgICAgICAgIHJldHVybiB3aXRoSW5saW5lZChFeGl0RnJvbU5vdElubGlu
ZWQpIHwgd2l0aElubGluZWQoRXhpdEZyb21JbmxpbmVkKTsKKyAgICB9OworICAgIHJldHVybiBl
eGl0RmxhZyhCYWRDYWNoZSkgfCBleGl0RmxhZyhCYWRDb25zdGFudENhY2hlKTsKKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOworICAgIFVOVVNFRF9QQVJBTShieXRlY29k
ZUluZGV4KTsKKyAgICByZXR1cm4gRXhpdEZsYWcoKTsKKyNlbmRpZgorfQorCit9IC8vIG5hbWVz
cGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVz
VXRpbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNT
dGF0dXNVdGlscy5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSUNTdGF0dXNVdGlscy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw4IEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRXhpdEZsYWcuaCIKKwogbmFtZXNwYWNlIEpT
QyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZhcmlhbnRWZWN0b3JUeXBlLCB0eXBlbmFtZSBWYXJp
YW50VHlwZT4KQEAgLTU5LDUgKzYxLDcgQEAgdm9pZCBmaWx0ZXJJQ1N0YXR1c1ZhcmlhbnRzKFZh
cmlhbnRWZWN0bwogICAgICAgICB9KTsKIH0KIAorRXhpdEZsYWcgaGFzQmFkQ2FjaGVFeGl0U2l0
ZShDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOworCiB9
IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0luc3RhbmNlT2ZTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbnN0YW5jZU9mU3RhdHVzLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSwxMyArMzksMTMgQEAgdm9pZCBJbnN0YW5jZU9mU3RhdHVzOjphcHBlbmRW
YXJpYW50KGNvbgogfQogCiBJbnN0YW5jZU9mU3RhdHVzIEluc3RhbmNlT2ZTdGF0dXM6OmNvbXB1
dGVGb3IoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0dWJJbmZvTWFwJiBpbmZvTWFwLCB1
bnNpZ25lZCBieXRlY29kZUluZGV4KQorICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBJQ1N0YXR1
c01hcCYgaW5mb01hcCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKIHsKICAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKICAgICAKICAgICBJbnN0YW5jZU9m
U3RhdHVzIHJlc3VsdDsKICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICByZXN1bHQgPSBjb21wdXRl
Rm9yU3R1YkluZm8obG9ja2VyLCBpbmZvTWFwLmdldChDb2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgp
KSk7CisgICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvKGxvY2tlciwgaW5mb01hcC5nZXQo
Q29kZU9yaWdpbihieXRlY29kZUluZGV4KSkuc3R1YkluZm8pOwogCiAgICAgaWYgKCFyZXN1bHQu
dGFrZXNTbG93UGF0aCgpKSB7CiAgICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENv
ZGVCbG9jayA9IGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mU3RhdHVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMuaAkocmV2aXNp
b24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZT
dGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQ29k
ZU9yaWdpbi5oIgogI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKKyNpbmNsdWRlICJJQ1N0
YXR1c01hcC5oIgogI2luY2x1ZGUgIkluc3RhbmNlT2ZWYXJpYW50LmgiCiAKIG5hbWVzcGFjZSBK
U0MgewpAQCAtMzUsOCArMzYsNiBAQCBjbGFzcyBBY2Nlc3NDYXNlOwogY2xhc3MgQ29kZUJsb2Nr
OwogY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CiAKLXR5cGVkZWYgSGFzaE1hcDxDb2RlT3JpZ2lu
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIENvZGVPcmlnaW5BcHByb3hpbWF0ZUhhc2g+IFN0dWJJbmZv
TWFwOwotCiBjbGFzcyBJbnN0YW5jZU9mU3RhdHVzIHsKIHB1YmxpYzoKICAgICBlbnVtIFN0YXRl
IHsKQEAgLTYxLDcgKzYwLDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoc3RhdGUgPT0gTm9J
bmZvcm1hdGlvbiB8fCBzdGF0ZSA9PSBUYWtlc1Nsb3dQYXRoKTsKICAgICB9CiAgICAgCi0gICAg
c3RhdGljIEluc3RhbmNlT2ZTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCBTdHViSW5mb01h
cCYsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOworICAgIHN0YXRpYyBJbnN0YW5jZU9mU3RhdHVz
IGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgSUNTdGF0dXNNYXAmLCB1bnNpZ25lZCBieXRlY29kZUlu
ZGV4KTsKICAgICAKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBzdGF0aWMgSW5zdGFuY2VPZlN0
YXR1cyBjb21wdXRlRm9yU3R1YkluZm8oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgU3RydWN0
dXJlU3R1YkluZm8qKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5
UHJvdG9BY2Nlc3NDaGFpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgSlND
ZWxsOwogY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiBjbGFzcyBKU09iamVjdDsKIGNsYXNzIFByb3Bl
cnR5U2xvdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3Rh
dHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjks
NyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvbXBsZXhHZXRTdGF0dXMu
aCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXJBY2Nlc3NDYXNlLmgiCisjaW5jbHVkZSAiSUNTdGF0
dXNVdGlscy5oIgogI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIkxvd0xldmVsSW50
ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCkBAIC01NSwxMiArNTYsOSBAQCBi
b29sIFB1dEJ5SWRTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uc3QgCiB9CiAKICNpZiBFTkFCTEUo
REZHX0pJVCkKLWJvb2wgUHV0QnlJZFN0YXR1czo6aGFzRXhpdFNpdGUoQ29kZUJsb2NrKiBwcm9m
aWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQorRXhpdEZsYWcgUHV0QnlJZFN0YXR1
czo6aGFzRXhpdFNpdGUoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29k
ZUluZGV4KQogewotICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IHBy
b2ZpbGVkQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCk7Ci0gICAgQ29uY3VycmVudEpTTG9ja2Vy
IGxvY2tlcih1bmxpbmtlZENvZGVCbG9jay0+bV9sb2NrKTsKLSAgICByZXR1cm4gdW5saW5rZWRD
b2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVj
b2RlSW5kZXgsIEJhZENhY2hlKSkKLSAgICAgICAgfHwgdW5saW5rZWRDb2RlQmxvY2stPmhhc0V4
aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZENv
bnN0YW50Q2FjaGUpKTsKKyAgICByZXR1cm4gaGFzQmFkQ2FjaGVFeGl0U2l0ZShwcm9maWxlZEJs
b2NrLCBieXRlY29kZUluZGV4KTsKIH0KICNlbmRpZgogCkBAIC0xMTAsNyArMTA4LDcgQEAgUHV0
QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbQogICAgICAgICBzdHJ1Y3R1cmUs
IG5ld1N0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBvZmZzZXQsIG5ld1N0cnVjdHVyZS0+aW5mZXJy
ZWRUeXBlRGVzY3JpcHRvckZvcih1aWQpKTsKIH0KIAotUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3Rh
dHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgU3R1YkluZm9NYXAmIG1h
cCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK1B1dEJ5
SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxv
Y2ssIElDU3RhdHVzTWFwJiBtYXAsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJp
bmdJbXBsKiB1aWQsIEV4aXRGbGFnIGRpZEV4aXQsIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURh
dGEgY2FsbEV4aXRTaXRlRGF0YSkKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHBy
b2ZpbGVkQmxvY2stPm1fbG9jayk7CiAgICAgCkBAIC0xMTgsMTMgKzExNiwxMiBAQCBQdXRCeUlk
U3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVj
b2RlSW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTSh1aWQpOwogI2lmIEVOQUJMRShERkdfSklUKQot
ICAgIGlmIChoYXNFeGl0U2l0ZShwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4KSkKKyAgICBp
ZiAoZGlkRXhpdCkKICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCk7
CiAgICAgCi0gICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvID0gbWFwLmdldChDb2RlT3Jp
Z2luKGJ5dGVjb2RlSW5kZXgpKTsKKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gPSBt
YXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkpLnN0dWJJbmZvOwogICAgIFB1dEJ5SWRT
dGF0dXMgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvKAotICAgICAgICBsb2NrZXIsIHByb2Zp
bGVkQmxvY2ssIHN0dWJJbmZvLCB1aWQsCi0gICAgICAgIENhbGxMaW5rU3RhdHVzOjpjb21wdXRl
RXhpdFNpdGVEYXRhKHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpKTsKKyAgICAgICAgbG9j
a2VyLCBwcm9maWxlZEJsb2NrLCBzdHViSW5mbywgdWlkLCBjYWxsRXhpdFNpdGVEYXRhKTsKICAg
ICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRC
bG9jaywgYnl0ZWNvZGVJbmRleCwgdWlkKTsKICAgICAKQEAgLTI2NCwzOCArMjYxLDM0IEBAIFB1
dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclMKIH0KICNlbmRpZgogCi1QdXRC
eUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJs
b2NrLCBDb2RlQmxvY2sqIGRmZ0Jsb2NrLCBTdHViSW5mb01hcCYgYmFzZWxpbmVNYXAsIFN0dWJJ
bmZvTWFwJiBkZmdNYXAsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwq
IHVpZCkKK1B1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sq
IGJhc2VsaW5lQmxvY2ssIElDU3RhdHVzTWFwJiBiYXNlbGluZU1hcCwgSUNTdGF0dXNDb250ZXh0
U3RhY2smIGNvbnRleHRTdGFjaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkKQogewotI2lmIEVOQUJMRShERkdfSklUKQotICAgIGlmIChkZmdCbG9jaykgewot
ICAgICAgICBpZiAoaGFzRXhpdFNpdGUoYmFzZWxpbmVCbG9jaywgY29kZU9yaWdpbi5ieXRlY29k
ZUluZGV4KSkKLSAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgp
OwotICAgICAgICBDYWxsTGlua1N0YXR1czo6RXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YTsKLSAg
ICAgICAgewotICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihiYXNlbGluZUJs
b2NrLT5tX2xvY2spOwotICAgICAgICAgICAgZXhpdFNpdGVEYXRhID0gQ2FsbExpbmtTdGF0dXM6
OmNvbXB1dGVFeGl0U2l0ZURhdGEoCi0gICAgICAgICAgICAgICAgYmFzZWxpbmVCbG9jaywgY29k
ZU9yaWdpbi5ieXRlY29kZUluZGV4KTsKLSAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAg
IFB1dEJ5SWRTdGF0dXMgcmVzdWx0OwotICAgICAgICB7Ci0gICAgICAgICAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKGRmZ0Jsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgcmVzdWx0ID0g
Y29tcHV0ZUZvclN0dWJJbmZvKAotICAgICAgICAgICAgICAgIGxvY2tlciwgZGZnQmxvY2ssIGRm
Z01hcC5nZXQoY29kZU9yaWdpbiksIHVpZCwgZXhpdFNpdGVEYXRhKTsKKyAgICBDYWxsTGlua1N0
YXR1czo6RXhpdFNpdGVEYXRhIGNhbGxFeGl0U2l0ZURhdGEgPQorICAgICAgICBDYWxsTGlua1N0
YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YShiYXNlbGluZUJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVj
b2RlSW5kZXgpOworICAgIEV4aXRGbGFnIGRpZEV4aXQgPSBoYXNFeGl0U2l0ZShiYXNlbGluZUJs
b2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpOworICAgIAorICAgIGZvciAoSUNTdGF0dXND
b250ZXh0KiBjb250ZXh0IDogY29udGV4dFN0YWNrKSB7CisgICAgICAgIElDU3RhdHVzIHN0YXR1
cyA9IGNvbnRleHQtPmdldChjb2RlT3JpZ2luKTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gd2l0
aEV4aXRzID0gWyZdIChjb25zdCBQdXRCeUlkU3RhdHVzJiByZXN1bHQpIC0+IFB1dEJ5SWRTdGF0
dXMgeworICAgICAgICAgICAgaWYgKGRpZEV4aXQuaXNTZXQoY29kZU9yaWdpbi5leGl0aW5nSW5s
aW5lS2luZCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnNsb3dWZXJzaW9uKCk7
CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9OworICAgICAgICAKKyAgICAg
ICAgaWYgKHN0YXR1cy5zdHViSW5mbykgeworICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2Vy
IGxvY2tlcihjb250ZXh0LT5vcHRpbWl6ZWRDb2RlQmxvY2stPm1fbG9jayk7CisgICAgICAgICAg
ICBQdXRCeUlkU3RhdHVzIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mbygKKyAgICAgICAgICAg
ICAgICBsb2NrZXIsIGNvbnRleHQtPm9wdGltaXplZENvZGVCbG9jaywgc3RhdHVzLnN0dWJJbmZv
LCB1aWQsIGNhbGxFeGl0U2l0ZURhdGEpOworICAgICAgICAgICAgaWYgKHJlc3VsdC5pc1NldCgp
KQorICAgICAgICAgICAgICAgIHJldHVybiB3aXRoRXhpdHMocmVzdWx0KTsKICAgICAgICAgfQog
ICAgICAgICAKLSAgICAgICAgLy8gV2UgdXNlIFRha2VzU2xvd1BhdGggaW4gc29tZSBjYXNlcyB3
aGVyZSB0aGUgc3R1YiB3YXMgdW5zZXQuIFRoYXQncyB3ZWlyZCBhbmQKLSAgICAgICAgLy8gaXQg
d291bGQgYmUgYmV0dGVyIG5vdCB0byBkbyB0aGF0LiBCdXQgaXQgbWVhbnMgdGhhdCB3ZSBoYXZl
IHRvIGRlZmVuZAotICAgICAgICAvLyBvdXJzZWx2ZXMgaGVyZS4KLSAgICAgICAgaWYgKHJlc3Vs
dC5pc1NpbXBsZSgpKQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgaWYgKHN0
YXR1cy5wdXRTdGF0dXMpCisgICAgICAgICAgICByZXR1cm4gd2l0aEV4aXRzKCpzdGF0dXMucHV0
U3RhdHVzKTsKICAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShkZmdCbG9jayk7Ci0gICAg
VU5VU0VEX1BBUkFNKGRmZ01hcCk7Ci0jZW5kaWYKIAotICAgIHJldHVybiBjb21wdXRlRm9yKGJh
c2VsaW5lQmxvY2ssIGJhc2VsaW5lTWFwLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIHVpZCk7
CisgICAgcmV0dXJuIGNvbXB1dGVGb3IoYmFzZWxpbmVCbG9jaywgYmFzZWxpbmVNYXAsIGNvZGVP
cmlnaW4uYnl0ZWNvZGVJbmRleCwgdWlkLCBkaWRFeGl0LCBjYWxsRXhpdFNpdGVEYXRhKTsKIH0K
IAogUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0LCBVbmlxdWVkU3RyaW5nSW1w
bCogdWlkLCBib29sIGlzRGlyZWN0KQpAQCAtMzk4LDYgKzM5MSwzNSBAQCBib29sIFB1dEJ5SWRT
dGF0dXM6Om1ha2VzQ2FsbHMoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorUHV0QnlJ
ZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpzbG93VmVyc2lvbigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IFB1dEJ5SWRTdGF0dXMobWFrZXNDYWxscygpID8gTWFrZXNDYWxscyA6IFRha2VzU2xvd1BhdGgp
OworfQorCit2b2lkIFB1dEJ5SWRTdGF0dXM6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQoreworICAgIGZvciAoUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKQor
ICAgICAgICB2YXJpYW50Lm1hcmtJZkNoZWFwKHZpc2l0b3IpOworfQorCitib29sIFB1dEJ5SWRT
dGF0dXM6OmZpbmFsaXplKCkKK3sKKyAgICBmb3IgKFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50IDog
bV92YXJpYW50cykgeworICAgICAgICBpZiAoIXZhcmlhbnQuZmluYWxpemUoKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUHV0
QnlJZFN0YXR1czo6ZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYgc2V0KQoreworICAgIGlmICht
X3N0YXRlICE9IFNpbXBsZSkKKyAgICAgICAgcmV0dXJuOworICAgIGZpbHRlcklDU3RhdHVzVmFy
aWFudHMobV92YXJpYW50cywgc2V0KTsKKyAgICBpZiAobV92YXJpYW50cy5pc0VtcHR5KCkpCisg
ICAgICAgIG1fc3RhdGUgPSBOb0luZm9ybWF0aW9uOworfQorCiB2b2lkIFB1dEJ5SWRTdGF0dXM6
OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1fc3RhdGUpIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMu
aAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1
dEJ5SWRTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgorI2luY2x1ZGUgIkV4aXRGbGFnLmgi
CisjaW5jbHVkZSAiSUNTdGF0dXNNYXAuaCIKICNpbmNsdWRlICJQdXRCeUlkVmFyaWFudC5oIgog
CiBuYW1lc3BhY2UgSlNDIHsKQEAgLTY5LDEwICs3MSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIG1f
dmFyaWFudHMuYXBwZW5kKHZhcmlhbnQpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgUHV0QnlJ
ZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIFN0dWJJbmZvTWFwJiwgdW5zaWduZWQgYnl0
ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7CisgICAgc3RhdGljIFB1dEJ5SWRT
dGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCBJQ1N0YXR1c01hcCYsIHVuc2lnbmVkIGJ5dGVj
b2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIEV4aXRGbGFnLCBDYWxsTGlua1N0YXR1
czo6RXhpdFNpdGVEYXRhKTsKICAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKEpT
R2xvYmFsT2JqZWN0KiwgY29uc3QgU3RydWN0dXJlU2V0JiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVp
ZCwgYm9vbCBpc0RpcmVjdCk7CiAgICAgCi0gICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0
ZUZvcihDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIENvZGVCbG9jayogZGZnQmxvY2ssIFN0dWJJ
bmZvTWFwJiBiYXNlbGluZU1hcCwgU3R1YkluZm9NYXAmIGRmZ01hcCwgQ29kZU9yaWdpbiwgVW5p
cXVlZFN0cmluZ0ltcGwqIHVpZCk7CisgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZv
cihDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIElDU3RhdHVzTWFwJiBiYXNlbGluZU1hcCwgSUNT
dGF0dXNDb250ZXh0U3RhY2smIGNvbnRleHRTdGFjaywgQ29kZU9yaWdpbiwgVW5pcXVlZFN0cmlu
Z0ltcGwqIHVpZCk7CiAKICNpZiBFTkFCTEUoSklUKQogICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVz
IGNvbXB1dGVGb3JTdHViSW5mbyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDb2RlQmxvY2sq
IGJhc2VsaW5lQmxvY2ssIFN0cnVjdHVyZVN0dWJJbmZvKiwgQ29kZU9yaWdpbiwgVW5pcXVlZFN0
cmluZ0ltcGwqIHVpZCk7CkBAIC04NSwxNyArODcsMjIgQEAgcHVibGljOgogICAgIGJvb2wgaXNT
aW1wbGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFNpbXBsZTsgfQogICAgIGJvb2wgdGFr
ZXNTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gVGFrZXNTbG93UGF0aCB8fCBt
X3N0YXRlID09IE1ha2VzQ2FsbHM7IH0KICAgICBib29sIG1ha2VzQ2FsbHMoKSBjb25zdDsKKyAg
ICBQdXRCeUlkU3RhdHVzIHNsb3dWZXJzaW9uKCkgY29uc3Q7CiAgICAgCiAgICAgc2l6ZV90IG51
bVZhcmlhbnRzKCkgY29uc3QgeyByZXR1cm4gbV92YXJpYW50cy5zaXplKCk7IH0KICAgICBjb25z
dCBWZWN0b3I8UHV0QnlJZFZhcmlhbnQsIDE+JiB2YXJpYW50cygpIGNvbnN0IHsgcmV0dXJuIG1f
dmFyaWFudHM7IH0KICAgICBjb25zdCBQdXRCeUlkVmFyaWFudCYgYXQoc2l6ZV90IGluZGV4KSBj
b25zdCB7IHJldHVybiBtX3ZhcmlhbnRzW2luZGV4XTsgfQogICAgIGNvbnN0IFB1dEJ5SWRWYXJp
YW50JiBvcGVyYXRvcltdKHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gYXQoaW5kZXgpOyB9
CiAgICAgCisgICAgdm9pZCBtYXJrSWZDaGVhcChTbG90VmlzaXRvciYpOworICAgIGJvb2wgZmlu
YWxpemUoKTsKKyAgICB2b2lkIGZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmKTsKKyAgICAKICAg
ICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKIHByaXZhdGU6CiAjaWYgRU5B
QkxFKERGR19KSVQpCi0gICAgc3RhdGljIGJvb2wgaGFzRXhpdFNpdGUoQ29kZUJsb2NrKiwgdW5z
aWduZWQgYnl0ZWNvZGVJbmRleCk7CisgICAgc3RhdGljIEV4aXRGbGFnIGhhc0V4aXRTaXRlKENv
ZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwogI2VuZGlmCiAjaWYgRU5BQkxFKEpJ
VCkKICAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yU3R1YkluZm8oCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAJ
KHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRC
eUlkVmFyaWFudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjA2LDYgKzIwNiwyNiBAQCBib29s
IFB1dEJ5SWRWYXJpYW50OjphdHRlbXB0VG9NZXJnZVRyYW5zCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKK3ZvaWQgUHV0QnlJZFZhcmlhbnQ6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQoreworICAgIG1fb2xkU3RydWN0dXJlLm1hcmtJZkNoZWFwKHZpc2l0b3IpOworICAgIGlmICht
X25ld1N0cnVjdHVyZSkKKyAgICAgICAgbV9uZXdTdHJ1Y3R1cmUtPm1hcmtJZkNoZWFwKHZpc2l0
b3IpOworfQorCitib29sIFB1dEJ5SWRWYXJpYW50OjpmaW5hbGl6ZSgpCit7CisgICAgaWYgKCFt
X29sZFN0cnVjdHVyZS5pc1N0aWxsQWxpdmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmIChtX25ld1N0cnVjdHVyZSAmJiAhSGVhcDo6aXNNYXJrZWQobV9uZXdTdHJ1Y3R1cmUpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX2NvbmRpdGlvblNldC5hcmVTdGlsbExp
dmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2NhbGxMaW5rU3RhdHVzICYm
ICFtX2NhbGxMaW5rU3RhdHVzLT5maW5hbGl6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgUHV0QnlJZFZhcmlhbnQ6OmR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3QKIHsKICAgICBkdW1wSW5Db250ZXh0KG91dCwgMCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuaAkocmV2aXNp
b24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJp
YW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzMsMTcgKzczLDE3IEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIG1fb2xkU3RydWN0dXJlOwogICAgIH0KICAgICAKLSAgICBjb25zdCBTdHJ1Y3R1
cmVTZXQmIHN0cnVjdHVyZVNldCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gc3RydWN0
dXJlKCk7Ci0gICAgfQotICAgIAogICAgIGNvbnN0IFN0cnVjdHVyZVNldCYgb2xkU3RydWN0dXJl
KCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChraW5kKCkgPT0gVHJhbnNpdGlvbiB8fCBr
aW5kKCkgPT0gUmVwbGFjZSB8fCBraW5kKCkgPT0gU2V0dGVyKTsKICAgICAgICAgcmV0dXJuIG1f
b2xkU3RydWN0dXJlOwogICAgIH0KICAgICAKKyAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVj
dHVyZVNldCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gb2xkU3RydWN0dXJlKCk7Cisg
ICAgfQorICAgIAogICAgIFN0cnVjdHVyZVNldCYgb2xkU3RydWN0dXJlKCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChraW5kKCkgPT0gVHJhbnNpdGlvbiB8fCBraW5kKCkgPT0gUmVwbGFjZSB8fCBr
aW5kKCkgPT0gU2V0dGVyKTsKQEAgLTEyOSw2ICsxMjksOSBAQCBwdWJsaWM6CiAKICAgICBib29s
IGF0dGVtcHRUb01lcmdlKGNvbnN0IFB1dEJ5SWRWYXJpYW50JiBvdGhlcik7CiAgICAgCisgICAg
dm9pZCBtYXJrSWZDaGVhcChTbG90VmlzaXRvciYpOworICAgIGJvb2wgZmluYWxpemUoKTsKKyAg
ICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICB2b2lkIGR1bXBJbkNv
bnRleHQoUHJpbnRTdHJlYW0mLCBEdW1wQ29udGV4dCopIGNvbnN0OwogCkBAIC0xMzcsNyArMTQw
LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBLaW5kIG1fa2luZDsKICAgICBTdHJ1Y3R1cmVTZXQg
bV9vbGRTdHJ1Y3R1cmU7Ci0gICAgU3RydWN0dXJlKiBtX25ld1N0cnVjdHVyZTsKKyAgICBTdHJ1
Y3R1cmUqIG1fbmV3U3RydWN0dXJlIHsgbnVsbHB0ciB9OwogICAgIE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uU2V0IG1fY29uZGl0aW9uU2V0OwogICAgIFByb3BlcnR5T2Zmc2V0IG1fb2Zmc2V0Owog
ICAgIEluZmVycmVkVHlwZTo6RGVzY3JpcHRvciBtX3JlcXVpcmVkVHlwZTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVk
U3RhdHVzZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJSZWNvcmRlZFN0YXR1c2VzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitSZWNv
cmRlZFN0YXR1c2VzJiBSZWNvcmRlZFN0YXR1c2VzOjpvcGVyYXRvcj0oUmVjb3JkZWRTdGF0dXNl
cyYmIG90aGVyKQoreworICAgIGNhbGxzID0gV1RGTW92ZShvdGhlci5jYWxscyk7CisgICAgZ2V0
cyA9IFdURk1vdmUob3RoZXIuZ2V0cyk7CisgICAgcHV0cyA9IFdURk1vdmUob3RoZXIucHV0cyk7
CisgICAgc2hyaW5rVG9GaXQoKTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK1JlY29yZGVkU3Rh
dHVzZXM6OlJlY29yZGVkU3RhdHVzZXMoUmVjb3JkZWRTdGF0dXNlcyYmIG90aGVyKQoreworICAg
ICp0aGlzID0gV1RGTW92ZShvdGhlcik7Cit9CisKK0NhbGxMaW5rU3RhdHVzKiBSZWNvcmRlZFN0
YXR1c2VzOjphZGRDYWxsTGlua1N0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBj
b25zdCBDYWxsTGlua1N0YXR1cyYgc3RhdHVzKQoreworICAgIGF1dG8gc3RhdHVzUHRyID0gc3Rk
OjptYWtlX3VuaXF1ZTxDYWxsTGlua1N0YXR1cz4oc3RhdHVzKTsKKyAgICBDYWxsTGlua1N0YXR1
cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOworICAgIGNhbGxzLmFwcGVuZChzdGQ6Om1ha2Vf
cGFpcihjb2RlT3JpZ2luLCBXVEZNb3ZlKHN0YXR1c1B0cikpKTsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCitHZXRCeUlkU3RhdHVzKiBSZWNvcmRlZFN0YXR1c2VzOjphZGRHZXRCeUlkU3RhdHVz
KGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0IEdldEJ5SWRTdGF0dXMmIHN0YXR1
cykKK3sKKyAgICBhdXRvIHN0YXR1c1B0ciA9IHN0ZDo6bWFrZV91bmlxdWU8R2V0QnlJZFN0YXR1
cz4oc3RhdHVzKTsKKyAgICBHZXRCeUlkU3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7
CisgICAgZ2V0cy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoY29kZU9yaWdpbiwgV1RGTW92ZShzdGF0
dXNQdHIpKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyAgICAKK1B1dEJ5SWRTdGF0dXMqIFJl
Y29yZGVkU3RhdHVzZXM6OmFkZFB1dEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9y
aWdpbiwgY29uc3QgUHV0QnlJZFN0YXR1cyYgc3RhdHVzKQoreworICAgIGF1dG8gc3RhdHVzUHRy
ID0gc3RkOjptYWtlX3VuaXF1ZTxQdXRCeUlkU3RhdHVzPihzdGF0dXMpOworICAgIFB1dEJ5SWRT
dGF0dXMqIHJlc3VsdCA9IHN0YXR1c1B0ci5nZXQoKTsKKyAgICBwdXRzLmFwcGVuZChzdGQ6Om1h
a2VfcGFpcihjb2RlT3JpZ2luLCBXVEZNb3ZlKHN0YXR1c1B0cikpKTsKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCit2b2lkIFJlY29yZGVkU3RhdHVzZXM6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9y
JiBzbG90VmlzaXRvcikKK3sKKyAgICBmb3IgKGF1dG8mIHBhaXIgOiBnZXRzKQorICAgICAgICBw
YWlyLnNlY29uZC0+bWFya0lmQ2hlYXAoc2xvdFZpc2l0b3IpOworICAgIGZvciAoYXV0byYgcGFp
ciA6IHB1dHMpCisgICAgICAgIHBhaXIuc2Vjb25kLT5tYXJrSWZDaGVhcChzbG90VmlzaXRvcik7
Cit9CisKK3ZvaWQgUmVjb3JkZWRTdGF0dXNlczo6ZmluYWxpemVXaXRob3V0RGVsZXRpbmcoKQor
eworICAgIGF1dG8gZmluYWxpemUgPSBbXSAoYXV0byYgdmVjdG9yKSB7CisgICAgICAgIGZvciAo
YXV0byYgcGFpciA6IHZlY3RvcikgeworICAgICAgICAgICAgaWYgKCFwYWlyLnNlY29uZC0+Zmlu
YWxpemUoKSkKKyAgICAgICAgICAgICAgICBwYWlyLnNlY29uZCA9IHsgfTsKKyAgICAgICAgfQor
ICAgIH07CisgICAgZm9yRWFjaFZlY3RvcihmaW5hbGl6ZSk7Cit9CisKK3ZvaWQgUmVjb3JkZWRT
dGF0dXNlczo6ZmluYWxpemUoKQoreworICAgIGF1dG8gZmluYWxpemUgPSBbXSAoYXV0byYgdmVj
dG9yKSB7CisgICAgICAgIHZlY3Rvci5yZW1vdmVBbGxNYXRjaGluZygKKyAgICAgICAgICAgIFsm
XSAoYXV0byYgcGFpcikgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgcmV0dXJuICEqcGFpci5z
ZWNvbmQgfHwgIXBhaXIuc2Vjb25kLT5maW5hbGl6ZSgpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIHZlY3Rvci5zaHJpbmtUb0ZpdCgpOworICAgIH07CisgICAgZm9yRWFjaFZlY3RvcihmaW5h
bGl6ZSk7Cit9CisKK3ZvaWQgUmVjb3JkZWRTdGF0dXNlczo6c2hyaW5rVG9GaXQoKQoreworICAg
IGZvckVhY2hWZWN0b3IoW10gKGF1dG8mIHZlY3RvcikgeyB2ZWN0b3Iuc2hyaW5rVG9GaXQoKTsg
fSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmgJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ2FsbExpbmtTdGF0dXMu
aCIKKyNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgiCisjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IFJlY29yZGVkU3RhdHVzZXMgeworICAgIFJl
Y29yZGVkU3RhdHVzZXMoKSB7IH0KKyAgICAKKyAgICBSZWNvcmRlZFN0YXR1c2VzJiBvcGVyYXRv
cj0oY29uc3QgUmVjb3JkZWRTdGF0dXNlcyYgb3RoZXIpID0gZGVsZXRlOworICAgIAorICAgIFJl
Y29yZGVkU3RhdHVzZXMmIG9wZXJhdG9yPShSZWNvcmRlZFN0YXR1c2VzJiYgb3RoZXIpOworICAg
IAorICAgIFJlY29yZGVkU3RhdHVzZXMoY29uc3QgUmVjb3JkZWRTdGF0dXNlcyYgb3RoZXIpID0g
ZGVsZXRlOworICAgIAorICAgIFJlY29yZGVkU3RhdHVzZXMoUmVjb3JkZWRTdGF0dXNlcyYmIG90
aGVyKTsKKyAgICAKKyAgICBDYWxsTGlua1N0YXR1cyogYWRkQ2FsbExpbmtTdGF0dXMoY29uc3Qg
Q29kZU9yaWdpbiYsIGNvbnN0IENhbGxMaW5rU3RhdHVzJik7CisgICAgR2V0QnlJZFN0YXR1cyog
YWRkR2V0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29uc3QgR2V0QnlJZFN0YXR1cyYp
OworICAgIFB1dEJ5SWRTdGF0dXMqIGFkZFB1dEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYs
IGNvbnN0IFB1dEJ5SWRTdGF0dXMmKTsKKyAgICAKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RW
aXNpdG9yJiBzbG90VmlzaXRvcik7CisgICAgCisgICAgdm9pZCBmaW5hbGl6ZVdpdGhvdXREZWxl
dGluZygpOworICAgIHZvaWQgZmluYWxpemUoKTsKKyAgICAKKyAgICB2b2lkIHNocmlua1RvRml0
KCk7CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZvckVhY2hW
ZWN0b3IoY29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIGZ1bmMoY2FsbHMpOworICAg
ICAgICBmdW5jKGdldHMpOworICAgICAgICBmdW5jKHB1dHMpOworICAgIH0KKyAgICAKKyAgICBW
ZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxDYWxsTGlua1N0YXR1
cz4+PiBjYWxsczsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVl
X3B0cjxHZXRCeUlkU3RhdHVzPj4+IGdldHM7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3Jp
Z2luLCBzdGQ6OnVuaXF1ZV9wdHI8UHV0QnlJZFN0YXR1cz4+PiBwdXRzOworfTsKKworfSAvLyBu
YW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1
Y3R1cmVTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTZXQuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw2
ICszMSwyMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAordm9pZCBTdHJ1Y3R1cmVTZXQ6Om1hcmtJ
ZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9yKSBjb25zdAoreworICAgIGZvciAoU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgOiAqdGhpcykKKyAgICAgICAgc3RydWN0dXJlLT5tYXJrSWZDaGVhcCh2aXNp
dG9yKTsKK30KKworYm9vbCBTdHJ1Y3R1cmVTZXQ6OmlzU3RpbGxBbGl2ZSgpIGNvbnN0Cit7Cisg
ICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6ICp0aGlzKSB7CisgICAgICAgIGlmICghSGVh
cDo6aXNNYXJrZWQoc3RydWN0dXJlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgU3RydWN0dXJlU2V0OjpkdW1wSW5Db250ZXh0
KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAogewogICAgIENv
bW1hUHJpbnRlciBjb21tYTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dHJ1Y3R1cmVTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3RydWN0dXJlU2V0LmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU4
LDYgKzU4LDkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG9ubHlFbnRyeSgpOwog
ICAgIH0KKworICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKSBjb25zdDsKKyAgICBi
b29sIGlzU3RpbGxBbGl2ZSgpIGNvbnN0OwogICAgIAogICAgIHZvaWQgZHVtcEluQ29udGV4dChQ
cmludFN0cmVhbSYsIER1bXBDb250ZXh0KikgY29uc3Q7CiAgICAgdm9pZCBkdW1wKFByaW50U3Ry
ZWFtJikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVGVybWlu
YXRlZENvZGVPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVGVybWluYXRlZENvZGVPcmlnaW4uaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVGVybWluYXRlZENvZGVPcmlnaW4uaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworc3RydWN0IElubGluZUNhbGxGcmFtZTsKKworc3RydWN0IFRlcm1pbmF0
ZWRDb2RlT3JpZ2luIHsKKyAgICBUZXJtaW5hdGVkQ29kZU9yaWdpbigpIHsgfQorICAgIAorICAg
IFRlcm1pbmF0ZWRDb2RlT3JpZ2luKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIElubGlu
ZUNhbGxGcmFtZSogdGVybWluYWwpCisgICAgICAgIDogY29kZU9yaWdpbihjb2RlT3JpZ2luKQor
ICAgICAgICAsIHRlcm1pbmFsKHRlcm1pbmFsKQorICAgIHsKKyAgICB9CisgICAgCisgICAgQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luOworICAgIElubGluZUNhbGxGcmFtZSogdGVybWluYWwgeyBudWxs
cHRyIH07Cit9OworCitzdHJ1Y3QgVGVybWluYXRlZENvZGVPcmlnaW5IYXNoVHJhbnNsYXRvciB7
CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVGVybWluYXRlZENvZGVPcmlnaW4mIHZh
bHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlLmNvZGVPcmlnaW4uYXBwcm94aW1hdGVI
YXNoKHZhbHVlLnRlcm1pbmFsKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIGJvb2wgZXF1YWwo
Y29uc3QgQ29kZU9yaWdpbiYgYSwgY29uc3QgVGVybWluYXRlZENvZGVPcmlnaW4mIGIpCisgICAg
eworICAgICAgICByZXR1cm4gYi5jb2RlT3JpZ2luLmlzQXBwcm94aW1hdGVseUVxdWFsVG8oYSwg
Yi50ZXJtaW5hbCk7CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MzQ5OSw2ICszNDk5LDI1IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHkKICAgICBjYXNlIFpvbWJpZUhpbnQ6CiAgICAgY2FzZSBFeGl0T0s6CiAgICAgICAgIGJyZWFr
OworICAgICAgICAKKyAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAgICAgICBpZiAo
SlNWYWx1ZSB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUpCisgICAgICAg
ICAgICBub2RlLT5jYWxsTGlua1N0YXR1cygpLT5maWx0ZXIobV92bSwgdmFsdWUpOworICAgICAg
ICBicmVhazsKKyAgICAgICAgCisgICAgY2FzZSBGaWx0ZXJHZXRCeUlkU3RhdHVzOiB7CisgICAg
ICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKQorICAgICAgICAgICAgbm9kZS0+
Z2V0QnlJZFN0YXR1cygpLT5maWx0ZXIodmFsdWUubV9zdHJ1Y3R1cmUudG9TdHJ1Y3R1cmVTZXQo
KSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBGaWx0ZXJQdXRC
eUlkU3RhdHVzOiB7CisgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2Rl
LT5jaGlsZDIoKSk7CisgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKQor
ICAgICAgICAgICAgbm9kZS0+cHV0QnlJZFN0YXR1cygpLT5maWx0ZXIodmFsdWUubV9zdHJ1Y3R1
cmUudG9TdHJ1Y3R1cmVTZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAgIGNhc2Ug
Q2hlY2tUeXBlSW5mb0ZsYWdzOiB7CiAgICAgICAgIGNvbnN0IEFic3RyYWN0VmFsdWUmIGFic3Ry
YWN0VmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAyMzIyMjcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTA4Miw5ICsxMDgyLDggQEAgcHJpdmF0ZToKICAgICAgICAgLy8gY29k
ZSBibG9jayBoYWQgZ2F0aGVyZWQuCiAgICAgICAgIExhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFy
c2VyIG1fbGF6eU9wZXJhbmRzOwogICAgICAgICAKLSAgICAgICAgQ2FsbExpbmtJbmZvTWFwIG1f
Y2FsbExpbmtJbmZvczsKLSAgICAgICAgU3R1YkluZm9NYXAgbV9zdHViSW5mb3M7Ci0gICAgICAg
IEJ5VmFsSW5mb01hcCBtX2J5VmFsSW5mb3M7CisgICAgICAgIElDU3RhdHVzTWFwIG1fYmFzZWxp
bmVNYXA7CisgICAgICAgIElDU3RhdHVzQ29udGV4dCBtX29wdGltaXplZENvbnRleHQ7CiAgICAg
ICAgIAogICAgICAgICAvLyBQb2ludGVycyB0byB0aGUgYXJndW1lbnQgcG9zaXRpb24gdHJhY2tl
cnMgZm9yIHRoaXMgc2xpY2Ugb2YgY29kZS4KICAgICAgICAgVmVjdG9yPEFyZ3VtZW50UG9zaXRp
b24qPiBtX2FyZ3VtZW50UG9zaXRpb25zOwpAQCAtMTEwMiwxMCArMTEwMSw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWU6OktpbmQsCiAgICAgICAgICAgICBCYXNpY0Js
b2NrKiBjb250aW51YXRpb25CbG9jayk7CiAgICAgICAgIAotICAgICAgICB+SW5saW5lU3RhY2tF
bnRyeSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1fYnl0ZUNvZGVQYXJzZXItPm1faW5saW5l
U3RhY2tUb3AgPSBtX2NhbGxlcjsKLSAgICAgICAgfQorICAgICAgICB+SW5saW5lU3RhY2tFbnRy
eSgpOwogICAgICAgICAKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlbWFwT3BlcmFuZChWaXJ0
dWFsUmVnaXN0ZXIgb3BlcmFuZCkgY29uc3QKICAgICAgICAgewpAQCAtMTEyMCw2ICsxMTE2LDgg
QEAgcHJpdmF0ZToKICAgICAKICAgICBJbmxpbmVTdGFja0VudHJ5KiBtX2lubGluZVN0YWNrVG9w
OwogICAgIAorICAgIElDU3RhdHVzQ29udGV4dFN0YWNrIG1faWNDb250ZXh0U3RhY2s7CisgICAg
CiAgICAgc3RydWN0IERlbGF5ZWRTZXRMb2NhbCB7CiAgICAgICAgIENvZGVPcmlnaW4gbV9vcmln
aW47CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBtX29wZXJhbmQ7CkBAIC0xMTQ2LDEwICsxMTQ0
LDYgQEAgcHJpdmF0ZToKICAgICAKICAgICBWZWN0b3I8RGVsYXllZFNldExvY2FsLCAyPiBtX3Nl
dExvY2FsUXVldWU7CiAKLSAgICBDb2RlQmxvY2sqIG1fZGZnQ29kZUJsb2NrOwotICAgIENhbGxM
aW5rU3RhdHVzOjpDb250ZXh0TWFwIG1fY2FsbENvbnRleHRNYXA7Ci0gICAgU3R1YkluZm9NYXAg
bV9kZmdTdHViSW5mb3M7Ci0gICAgCiAgICAgSW5zdHJ1Y3Rpb24qIG1fY3VycmVudEluc3RydWN0
aW9uOwogICAgIGJvb2wgbV9oYXNEZWJ1Z2dlckVuYWJsZWQ7CiB9OwpAQCAtMTIxNCw3ICsxMjA4
LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFycwogCiAgICAgQ2Fs
bExpbmtTdGF0dXMgY2FsbExpbmtTdGF0dXMgPSBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigK
ICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBjdXJyZW50Q29kZU9y
aWdpbigpLAotICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxMaW5rSW5mb3MsIG1fY2Fs
bENvbnRleHRNYXApOworICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBt
X2ljQ29udGV4dFN0YWNrKTsKIAogICAgIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5kID0gSW5s
aW5lQ2FsbEZyYW1lOjpraW5kRm9yKGNhbGxNb2RlKTsKIApAQCAtMTI0Miw2ICsxMjM2LDggQEAg
Qnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFycwogICAgIC8vIElmIHdlIGhh
dmUgcHJvZmlsaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgY2FsbCwgYW5kIGl0IGRpZCBub3Qg
YmVoYXZlIHRvbyBwb2x5bW9ycGhpY2FsbHksCiAgICAgLy8gd2UgbWF5IGJlIGFibGUgdG8gaW5s
aW5lIGl0LCBvciBpbiB0aGUgY2FzZSBvZiByZWN1cnNpdmUgdGFpbCBjYWxscyB0dXJuIGl0IGlu
dG8gYSBqdW1wLgogICAgIGlmIChjYWxsTGlua1N0YXR1cy5jYW5PcHRpbWl6ZSgpKSB7CisgICAg
ICAgIGFkZFRvR3JhcGgoRmlsdGVyQ2FsbExpbmtTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxh
bi5yZWNvcmRlZFN0YXR1c2VzLmFkZENhbGxMaW5rU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCks
IGNhbGxMaW5rU3RhdHVzKSksIGNhbGxUYXJnZXQpOworICAgICAgICAKICAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIHRoaXNBcmd1bWVudCA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDAsIHJl
Z2lzdGVyT2Zmc2V0KTsKICAgICAgICAgYXV0byBvcHRpbWl6YXRpb25SZXN1bHQgPSBoYW5kbGVJ
bmxpbmluZyhjYWxsVGFyZ2V0LCByZXN1bHQsIGNhbGxMaW5rU3RhdHVzLCByZWdpc3Rlck9mZnNl
dCwgdGhpc0FyZ3VtZW50LAogICAgICAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IG1fY3VycmVudEluZGV4ICsgaW5zdHJ1Y3Rpb25TaXplLCBvcCwga2luZCwgcHJlZGljdGlvbik7
CkBAIC0xMjc5LDEyICsxMjc1LDE0IEBAIEJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRl
Q29kZVBhcnMKICAgICAKICAgICBDYWxsTGlua1N0YXR1cyBjYWxsTGlua1N0YXR1cyA9IENhbGxM
aW5rU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2Zp
bGVkQmxvY2ssIGN1cnJlbnRDb2RlT3JpZ2luKCksCi0gICAgICAgIG1faW5saW5lU3RhY2tUb3At
Pm1fY2FsbExpbmtJbmZvcywgbV9jYWxsQ29udGV4dE1hcCk7CisgICAgICAgIG1faW5saW5lU3Rh
Y2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2spOwogICAgIHJlZmluZVN0YXRp
Y2FsbHkoY2FsbExpbmtTdGF0dXMsIGNhbGxUYXJnZXQpOwogICAgIAogICAgIFZFUkJPU0VfTE9H
KCIgICAgVmFyYXJncyBjYWxsIGxpbmsgc3RhdHVzIGF0ICIsIGN1cnJlbnRDb2RlT3JpZ2luKCks
ICI6ICIsIGNhbGxMaW5rU3RhdHVzLCAiXG4iKTsKICAgICAKICAgICBpZiAoY2FsbExpbmtTdGF0
dXMuY2FuT3B0aW1pemUoKSkgeworICAgICAgICBhZGRUb0dyYXBoKEZpbHRlckNhbGxMaW5rU3Rh
dHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcy5hZGRDYWxsTGlua1N0
YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBjYWxsTGlua1N0YXR1cykpLCBjYWxsVGFyZ2V0KTsK
KyAgICAgICAgCiAgICAgICAgIGlmIChoYW5kbGVWYXJhcmdzSW5saW5pbmcoY2FsbFRhcmdldCwg
cmVzdWx0LAogICAgICAgICAgICAgY2FsbExpbmtTdGF0dXMsIGZpcnN0RnJlZVJlZywgVmlydHVh
bFJlZ2lzdGVyKHRoaXNSZWcpLCBWaXJ0dWFsUmVnaXN0ZXIoYXJndW1lbnRzKSwKICAgICAgICAg
ICAgIGZpcnN0VmFyQXJnT2Zmc2V0LCBvcCwKQEAgLTMzMTgsOSArMzMxNiwxMiBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRHZXR0ZXIoCiAgICAgaWYgKCFjaGVjayh2YXJpYW50
LmNvbmRpdGlvblNldCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGFkZFRvR3JhcGgo
Q2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50LnN0
cnVjdHVyZVNldCgpKSksIHRoaXNOb2RlKTsKLQorICAgIAogICAgIC8vIFdlIGRvIG5vdCBuZWVk
IHRvIGVtaXQgQ2hlY2tDZWxsIHRoaW5neSBoZXJlLiBXaGVuIHRoZSBjdXN0b20gYWNjZXNzb3Ig
aXMgcmVwbGFjZWQgdG8gZGlmZmVyZW50IG9uZSwgU3RydWN0dXJlIHRyYW5zaXRpb24gb2NjdXJz
LgogICAgIGFkZFRvR3JhcGgoQ2hlY2tTdWJDbGFzcywgT3BJbmZvKGRvbUF0dHJpYnV0ZS5jbGFz
c0luZm8pLCB0aGlzTm9kZSk7CisgICAgCisgICAgYm9vbCB3YXNTZWVuSW5KSVQgPSB0cnVlOwor
ICAgIGFkZFRvR3JhcGgoRmlsdGVyR2V0QnlJZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFu
LnJlY29yZGVkU3RhdHVzZXMuYWRkR2V0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBH
ZXRCeUlkU3RhdHVzKEdldEJ5SWRTdGF0dXM6OkN1c3RvbSwgd2FzU2VlbkluSklULCB2YXJpYW50
KSkpLCB0aGlzTm9kZSk7CiAKICAgICBDYWxsRE9NR2V0dGVyRGF0YSogY2FsbERPTUdldHRlckRh
dGEgPSBtX2dyYXBoLm1fY2FsbERPTUdldHRlckRhdGEuYWRkKCk7CiAgICAgY2FsbERPTUdldHRl
ckRhdGEtPmN1c3RvbUFjY2Vzc29yR2V0dGVyID0gdmFyaWFudC5jdXN0b21BY2Nlc3NvckdldHRl
cigpOwpAQCAtMzM1Miw2ICszMzUzLDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTW9k
dWxlTmFtZXNwYQogICAgIGlmIChtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4
aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDZWxsKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGFkZFRvR3JhcGgoQ2hlY2tDZWxsLCBPcEluZm8obV9ncmFwaC5mcmVlemUoZ2V0QnlJZC5t
b2R1bGVOYW1lc3BhY2VPYmplY3QoKSkpLCBFZGdlKGJhc2UsIENlbGxVc2UpKTsKKyAgICAKKyAg
ICBhZGRUb0dyYXBoKEZpbHRlckdldEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5y
ZWNvcmRlZFN0YXR1c2VzLmFkZEdldEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgZ2V0
QnlJZCkpLCBiYXNlKTsKIAogICAgIC8vIElkZWFsbHkgd2Ugd291bGRuJ3QgaGF2ZSB0byBkbyB0
aGlzIFBoYW50b20uIEJ1dDoKICAgICAvLwpAQCAtNDAwNywxNCArNDAxMCwyNSBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IAorICAgIC8vIEZJWE1FOiBJZiB3ZSB1c2UgdGhlIEdldEJ5SWRTdGF0dXMgZm9yIGFueXRoaW5n
IHRoZW4gd2Ugc2hvdWxkIHJlY29yZCBpdCBhbmQgaW5zZXJ0IGEgbm9kZQorICAgIC8vIGFmdGVy
IGV2ZXJ5dGhpbmcgZWxzZSAobGlrZSB0aGUgR2V0QnlPZmZzZXQgb3Igd2hhdGV2ZXIpIHRoYXQg
d2lsbCBmaWx0ZXIgdGhlIHJlY29yZGVkCisgICAgLy8gR2V0QnlJZFN0YXR1cy4gVGhhdCBtZWFu
cyB0aGF0IHRoZSBjb25zdGFudCBmb2xkZXIgYWxzbyBuZWVkcyB0byBkbyB0aGUgc2FtZSEKKyAg
ICAKICAgICBpZiAoZ2V0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpID4gMSkgewogICAgICAgICBp
ZiAoZ2V0QnlJZFN0YXR1cy5tYWtlc0NhbGxzKCkgfHwgIWlzRlRMKG1fZ3JhcGgubV9wbGFuLm1v
ZGUpCi0gICAgICAgICAgICB8fCAhT3B0aW9uczo6dXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmlu
ZygpKSB7CisgICAgICAgICAgICB8fCAhT3B0aW9uczo6dXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxp
bmluZygpCisgICAgICAgICAgICB8fCBnZXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgPiBPcHRp
b25zOjptYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemUoKSkgeworICAgICAgICAg
ICAgaWYgKGZhbHNlICYmIGdldEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSA+IE9wdGlvbnM6Om1h
eFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZSgpKSB7CisgICAgICAgICAgICAgICAg
ZGF0YUxvZygiQXQgIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CisgICAgICAgICAgICAg
ICAgZGF0YUxvZygiR2l2aW5nIHVwIG9uOiAiLCBnZXRCeUlkU3RhdHVzLCAiXG4iKTsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoZGVzdGluYXRpb25PcGVy
YW5kKSwKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKGdldEJ5SWQsIE9wSW5mbyhpZGVudGlm
aWVyTnVtYmVyKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBiYXNlKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIGFkZFRvR3JhcGgoRmlsdGVyR2V0QnlJ
ZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkR2V0QnlJ
ZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBnZXRCeUlkU3RhdHVzKSksIGJhc2UpOworICAg
ICAgICAKICAgICAgICAgVmVjdG9yPE11bHRpR2V0QnlPZmZzZXRDYXNlLCAyPiBjYXNlczsKICAg
ICAgICAgCiAgICAgICAgIC8vIDEpIEVtaXQgcHJvdG90eXBlIHN0cnVjdHVyZSBjaGVja3MgZm9y
IGFsbCBjaGFpbnMuIFRoaXMgY291bGQgc29ydCBvZiBtYXliZSBub3QgYmUKQEAgLTQwNTYsMTAg
KzQwNzAsMTIgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoTXVsdGlHZXRCeU9mZnNldCwgT3BJbmZvKGRhdGEpLCBPcEluZm8ocHJl
ZGljdGlvbiksIGJhc2UpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGFkZFRvR3Jh
cGgoRmlsdGVyR2V0QnlJZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3Rh
dHVzZXMuYWRkR2V0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBnZXRCeUlkU3RhdHVz
KSksIGJhc2UpOwogICAgIAogICAgIEFTU0VSVChnZXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkg
PT0gMSk7CiAgICAgR2V0QnlJZFZhcmlhbnQgdmFyaWFudCA9IGdldEJ5SWRTdGF0dXNbMF07Ci0g
ICAgICAgICAgICAgICAgCisgICAgCiAgICAgTm9kZSogbG9hZGVkVmFsdWUgPSBsb2FkKHByZWRp
Y3Rpb24sIGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIHZhcmlhbnQpOwogICAgIGlmICghbG9hZGVk
VmFsdWUpIHsKICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihkZXN0aW5hdGlvbk9wZXJhbmQp
LApAQCAtNDE1MCw3ICs0MTY2LDEwIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5
SWQoCiAgICAgCiAgICAgaWYgKHB1dEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSA+IDEpIHsKICAg
ICAgICAgaWYgKCFpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSB8fCBwdXRCeUlkU3RhdHVzLm1h
a2VzQ2FsbHMoKQotICAgICAgICAgICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3JwaGljQWNjZXNz
SW5saW5pbmcoKSkgeworICAgICAgICAgICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3JwaGljQWNj
ZXNzSW5saW5pbmcoKQorICAgICAgICAgICAgfHwgcHV0QnlJZFN0YXR1cy5udW1WYXJpYW50cygp
ID4gT3B0aW9uczo6bWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplKCkpIHsKKyAg
ICAgICAgICAgIGlmIChmYWxzZSAmJiBwdXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgPiBPcHRp
b25zOjptYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemUoKSkKKyAgICAgICAgICAg
ICAgICBkYXRhTG9nKCJHaXZpbmcgdXAgb246ICIsIHB1dEJ5SWRTdGF0dXMsICJcbiIpOwogICAg
ICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5
SWRTdGF0dXMsIGlzRGlyZWN0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAt
NDE2OCw2ICs0MTg3LDggQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAg
ICAgICAgCiAgICAgICAgIGlmIChVTkxJS0VMWShtX2dyYXBoLmNvbXBpbGF0aW9uKCkpKQogICAg
ICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5ub3RpY2VJbmxpbmVkUHV0QnlJZCgpOwor
ICAgICAgICAKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJQdXRCeUlkU3RhdHVzLCBPcEluZm8o
bV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcy5hZGRQdXRCeUlkU3RhdHVzKGN1cnJlbnRD
b2RlT3JpZ2luKCksIHB1dEJ5SWRTdGF0dXMpKSwgYmFzZSk7CiAKICAgICAgICAgZm9yIChjb25z
dCBQdXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IHB1dEJ5SWRTdGF0dXMudmFyaWFudHMoKSkgewog
ICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlckluZmVycmVkVHlwZSh2YXJpYW50LnJlcXVpcmVk
VHlwZSgpKTsKQEAgLTQxODksNiArNDIxMCw4IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZVB1dEJ5SWQoCiAgICAgCiAgICAgc3dpdGNoICh2YXJpYW50LmtpbmQoKSkgewogICAgIGNhc2Ug
UHV0QnlJZFZhcmlhbnQ6OlJlcGxhY2U6IHsKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJQdXRC
eUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcy5hZGRQdXRC
eUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIHB1dEJ5SWRTdGF0dXMpKSwgYmFzZSk7Cisg
ICAgICAgIAogICAgICAgICBzdG9yZShiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YXJpYW50LCB2
YWx1ZSk7CiAgICAgICAgIGlmIChVTkxJS0VMWShtX2dyYXBoLmNvbXBpbGF0aW9uKCkpKQogICAg
ICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5ub3RpY2VJbmxpbmVkUHV0QnlJZCgpOwpA
QCAtNDE5Niw2ICs0MjE5LDggQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgK
ICAgICB9CiAgICAgCiAgICAgY2FzZSBQdXRCeUlkVmFyaWFudDo6VHJhbnNpdGlvbjogeworICAg
ICAgICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxh
bi5yZWNvcmRlZFN0YXR1c2VzLmFkZFB1dEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwg
cHV0QnlJZFN0YXR1cykpLCBiYXNlKTsKKyAgICAgICAgCiAgICAgICAgIGFkZFRvR3JhcGgoQ2hl
Y2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50Lm9sZFN0
cnVjdHVyZSgpKSksIGJhc2UpOwogICAgICAgICBpZiAoIWNoZWNrKHZhcmlhbnQuY29uZGl0aW9u
U2V0KCkpKSB7CiAgICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyTnVtYmVy
LCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QpOwpAQCAtNDI2Myw2ICs0Mjg4LDggQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICB9CiAgICAgICAgIAogICAg
IGNhc2UgUHV0QnlJZFZhcmlhbnQ6OlNldHRlcjogeworICAgICAgICBhZGRUb0dyYXBoKEZpbHRl
clB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFk
ZFB1dEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0YXR1cykpLCBiYXNl
KTsKKyAgICAgICAgCiAgICAgICAgIE5vZGUqIGxvYWRlZFZhbHVlID0gbG9hZChTcGVjQ2VsbE90
aGVyLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YXJpYW50KTsKICAgICAgICAgaWYgKCFsb2Fk
ZWRWYWx1ZSkgewogICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllck51bWJl
ciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0KTsKQEAgLTQ3OTEsNyArNDgxOCw3IEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIGF1
dG8mIGJ5dGVjb2RlID0gKnJlaW50ZXJwcmV0X2Nhc3Q8T3BJbnN0YW5jZW9mKj4oY3VycmVudElu
c3RydWN0aW9uKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgSW5zdGFuY2VPZlN0YXR1cyBz
dGF0dXMgPSBJbnN0YW5jZU9mU3RhdHVzOjpjb21wdXRlRm9yKAotICAgICAgICAgICAgICAgIG1f
aW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgbV9pbmxpbmVTdGFja1RvcC0+bV9zdHVi
SW5mb3MsCisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2Nr
LCBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLAogICAgICAgICAgICAgICAgIG1fY3Vy
cmVudEluZGV4KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgTm9kZSogdmFsdWUgPSBnZXQo
VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLnZhbHVlKCkpKTsKQEAgLTUwMjQsNyArNTA1MSw3IEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIHVu
c2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSAwOwogICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0g
bV9pbmxpbmVTdGFja1RvcC0+bV9ieVZhbEluZm9zLmdldChDb2RlT3JpZ2luKGN1cnJlbnRDb2Rl
T3JpZ2luKCkuYnl0ZWNvZGVJbmRleCkpOworICAgICAgICAgICAgICAgIEJ5VmFsSW5mbyogYnlW
YWxJbmZvID0gbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcC5nZXQoQ29kZU9yaWdpbihj
dXJyZW50Q29kZU9yaWdpbigpLmJ5dGVjb2RlSW5kZXgpKS5ieVZhbEluZm87CiAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IFdoZW4gdGhlIGJ5dGVjb2RlIGlzIG5vdCBjb21waWxlZCBpbiB0aGUg
YmFzZWxpbmUgSklULCBieVZhbEluZm8gYmVjb21lcyBudWxsLgogICAgICAgICAgICAgICAgIC8v
IEF0IHRoYXQgdGltZSwgdGhlcmUgaXMgbm8gaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAg
aWYgKGJ5VmFsSW5mbwpAQCAtNTA5Myw3ICs1MTIwLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIFB1dEJ5SWRTdGF0dXMgcHV0QnlJ
ZFN0YXR1czsKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX2xv
Y2spOwotICAgICAgICAgICAgICAgICAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IG1faW5saW5l
U3RhY2tUb3AtPm1fYnlWYWxJbmZvcy5nZXQoQ29kZU9yaWdpbihjdXJyZW50Q29kZU9yaWdpbigp
LmJ5dGVjb2RlSW5kZXgpKTsKKyAgICAgICAgICAgICAgICAgICAgQnlWYWxJbmZvKiBieVZhbElu
Zm8gPSBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLmdldChDb2RlT3JpZ2luKGN1cnJl
bnRDb2RlT3JpZ2luKCkuYnl0ZWNvZGVJbmRleCkpLmJ5VmFsSW5mbzsKICAgICAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IFdoZW4gdGhlIGJ5dGVjb2RlIGlzIG5vdCBjb21waWxlZCBpbiB0aGUg
YmFzZWxpbmUgSklULCBieVZhbEluZm8gYmVjb21lcyBudWxsLgogICAgICAgICAgICAgICAgICAg
ICAvLyBBdCB0aGF0IHRpbWUsIHRoZXJlIGlzIG5vIGluZm9ybWF0aW9uLgogICAgICAgICAgICAg
ICAgICAgICBpZiAoYnlWYWxJbmZvIApAQCAtNTE5OSw4ICs1MjI2LDggQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgCiAgICAgICAgICAgICBV
bmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJO
dW1iZXJdOwogICAgICAgICAgICAgR2V0QnlJZFN0YXR1cyBnZXRCeUlkU3RhdHVzID0gR2V0QnlJ
ZFN0YXR1czo6Y29tcHV0ZUZvcigKLSAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5t
X3Byb2ZpbGVkQmxvY2ssIG1fZGZnQ29kZUJsb2NrLAotICAgICAgICAgICAgICAgIG1faW5saW5l
U3RhY2tUb3AtPm1fc3R1YkluZm9zLCBtX2RmZ1N0dWJJbmZvcywKKyAgICAgICAgICAgICAgICBt
X2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssCisgICAgICAgICAgICAgICAgbV9pbmxp
bmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywKICAgICAgICAgICAg
ICAgICBjdXJyZW50Q29kZU9yaWdpbigpLCB1aWQpOwogCiAgICAgICAgICAgICBBY2Nlc3NUeXBl
IHR5cGUgPSBBY2Nlc3NUeXBlOjpHZXQ7CkBAIC01MjQzLDggKzUyNzAsOCBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBib29sIGRpcmVjdCA9
IGN1cnJlbnRJbnN0cnVjdGlvbls4XS51LnB1dEJ5SWRGbGFncyAmIFB1dEJ5SWRJc0RpcmVjdDsK
IAogICAgICAgICAgICAgUHV0QnlJZFN0YXR1cyBwdXRCeUlkU3RhdHVzID0gUHV0QnlJZFN0YXR1
czo6Y29tcHV0ZUZvcigKLSAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2Zp
bGVkQmxvY2ssIG1fZGZnQ29kZUJsb2NrLAotICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tU
b3AtPm1fc3R1YkluZm9zLCBtX2RmZ1N0dWJJbmZvcywKKyAgICAgICAgICAgICAgICBtX2lubGlu
ZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssCisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFj
a1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywKICAgICAgICAgICAgICAgICBj
dXJyZW50Q29kZU9yaWdpbigpLCBtX2dyYXBoLmlkZW50aWZpZXJzKClbaWRlbnRpZmllck51bWJl
cl0pOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBoYW5kbGVQdXRCeUlkKGJhc2UsIGlkZW50
aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBkaXJlY3QpOwpAQCAtNjYwMywxMiAr
NjYzMCwxOSBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lCiAgICAg
ICAgIC8vIFdlIGRvIHRoaXMgd2hpbGUgaG9sZGluZyB0aGUgbG9jayBiZWNhdXNlIHdlIHdhbnQg
dG8gZW5jb3VyYWdlIFN0cnVjdHVyZVN0dWJJbmZvJ3MKICAgICAgICAgLy8gdG8gYmUgcG90ZW50
aWFsbHkgYWRkZWQgdG8gb3BlcmF0aW9ucyBhbmQgYmVjYXVzZSB0aGUgcHJvZmlsZWQgYmxvY2sg
Y291bGQgYmUgaW4gdGhlCiAgICAgICAgIC8vIG1pZGRsZSBvZiBMTEludC0+SklUIHRpZXItdXAg
aW4gd2hpY2ggY2FzZSB3ZSB3b3VsZCBiZSBhZGRpbmcgdGhlIGluZm8ncyByaWdodCBub3cuCi0g
ICAgICAgIGlmIChtX3Byb2ZpbGVkQmxvY2stPmhhc0Jhc2VsaW5lSklUUHJvZmlsaW5nKCkpIHsK
LSAgICAgICAgICAgIG1fcHJvZmlsZWRCbG9jay0+Z2V0U3R1YkluZm9NYXAobG9ja2VyLCBtX3N0
dWJJbmZvcyk7Ci0gICAgICAgICAgICBtX3Byb2ZpbGVkQmxvY2stPmdldENhbGxMaW5rSW5mb01h
cChsb2NrZXIsIG1fY2FsbExpbmtJbmZvcyk7Ci0gICAgICAgICAgICBtX3Byb2ZpbGVkQmxvY2st
PmdldEJ5VmFsSW5mb01hcChsb2NrZXIsIG1fYnlWYWxJbmZvcyk7CisgICAgICAgIGlmIChtX3By
b2ZpbGVkQmxvY2stPmhhc0Jhc2VsaW5lSklUUHJvZmlsaW5nKCkpCisgICAgICAgICAgICBtX3By
b2ZpbGVkQmxvY2stPmdldElDU3RhdHVzTWFwKGxvY2tlciwgbV9iYXNlbGluZU1hcCk7CisgICAg
fQorICAgIAorICAgIGlmIChPcHRpb25zOjp1c2VQb2x5dmFyaWFudERldmlydHVhbGl6YXRpb24o
KSkgeworICAgICAgICBDb2RlQmxvY2sqIG9wdGltaXplZEJsb2NrID0gbV9wcm9maWxlZEJsb2Nr
LT5yZXBsYWNlbWVudCgpOworICAgICAgICBtX29wdGltaXplZENvbnRleHQub3B0aW1pemVkQ29k
ZUJsb2NrID0gb3B0aW1pemVkQmxvY2s7CisgICAgICAgIGlmIChvcHRpbWl6ZWRCbG9jaykgewor
ICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihvcHRpbWl6ZWRCbG9jay0+bV9s
b2NrKTsKKyAgICAgICAgICAgIG9wdGltaXplZEJsb2NrLT5nZXRJQ1N0YXR1c01hcChsb2NrZXIs
IG1fb3B0aW1pemVkQ29udGV4dC5tYXApOwogICAgICAgICB9CiAgICAgfQorICAgIGJ5dGVDb2Rl
UGFyc2VyLT5tX2ljQ29udGV4dFN0YWNrLmFwcGVuZCgmbV9vcHRpbWl6ZWRDb250ZXh0KTsKICAg
ICAKICAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNXaXRoRml4dXAgPSBzdGQ6Om1h
eDxpbnQ+KGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBjb2RlQmxvY2stPm51bVBhcmFtZXRl
cnMoKSk7CiAKQEAgLTY2MTgsNiArNjY1Miw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFj
a0VudHJ5OjpJbmxpbmUKICAgICAgICAgQVNTRVJUKGlubGluZUNhbGxGcmFtZVN0YXJ0LmlzVmFs
aWQoKSk7CiAgICAgICAgIAogICAgICAgICBtX2lubGluZUNhbGxGcmFtZSA9IGJ5dGVDb2RlUGFy
c2VyLT5tX2dyYXBoLm1fcGxhbi5pbmxpbmVDYWxsRnJhbWVzLT5hZGQoKTsKKyAgICAgICAgbV9v
cHRpbWl6ZWRDb250ZXh0LmlubGluZUNhbGxGcmFtZSA9IG1faW5saW5lQ2FsbEZyYW1lOwogCiAg
ICAgICAgIC8vIFRoZSBvd25lciBpcyB0aGUgbWFjaGluZSBjb2RlIGJsb2NrLCBhbmQgd2UgYWxy
ZWFkeSBoYXZlIGEgYmFycmllciBvbiB0aGF0IHdoZW4gdGhlCiAgICAgICAgIC8vIHBsYW4gZmlu
aXNoZXMuCkBAIC02NjczLDYgKzY3MDgsMTMgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNr
RW50cnk6OklubGluZQogICAgIGJ5dGVDb2RlUGFyc2VyLT5tX2lubGluZVN0YWNrVG9wID0gdGhp
czsKIH0KIAorQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6On5JbmxpbmVTdGFja0Vu
dHJ5KCkKK3sKKyAgICBtX2J5dGVDb2RlUGFyc2VyLT5tX2lubGluZVN0YWNrVG9wID0gbV9jYWxs
ZXI7CisgICAgUkVMRUFTRV9BU1NFUlQobV9ieXRlQ29kZVBhcnNlci0+bV9pY0NvbnRleHRTdGFj
ay5sYXN0KCkgPT0gJm1fb3B0aW1pemVkQ29udGV4dCk7CisgICAgbV9ieXRlQ29kZVBhcnNlci0+
bV9pY0NvbnRleHRTdGFjay5yZW1vdmVMYXN0KCk7Cit9CisKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQ29kZUJsb2NrKCkKIHsKICAgICBjbGVhckNhY2hlcygpOwpAQCAtNjc2OSwxNSArNjgx
MSw2IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlKCkKICAgICAKICAgICBWRVJCT1NFX0xP
RygiUGFyc2luZyAiLCAqbV9jb2RlQmxvY2ssICJcbiIpOwogICAgIAotICAgIG1fZGZnQ29kZUJs
b2NrID0gbV9ncmFwaC5tX3BsYW4ucHJvZmlsZWRERkdDb2RlQmxvY2s7Ci0gICAgaWYgKGlzRlRM
KG1fZ3JhcGgubV9wbGFuLm1vZGUpICYmIG1fZGZnQ29kZUJsb2NrCi0gICAgICAgICYmIE9wdGlv
bnM6OnVzZVBvbHl2YXJpYW50RGV2aXJ0dWFsaXphdGlvbigpKSB7Ci0gICAgICAgIGlmIChPcHRp
b25zOjp1c2VQb2x5dmFyaWFudENhbGxJbmxpbmluZygpKQotICAgICAgICAgICAgQ2FsbExpbmtT
dGF0dXM6OmNvbXB1dGVERkdTdGF0dXNlcyhtX2RmZ0NvZGVCbG9jaywgbV9jYWxsQ29udGV4dE1h
cCk7Ci0gICAgICAgIGlmIChPcHRpb25zOjp1c2VQb2x5dmFyaWFudEJ5SWRJbmxpbmluZygpKQot
ICAgICAgICAgICAgbV9kZmdDb2RlQmxvY2stPmdldFN0dWJJbmZvTWFwKG1fZGZnU3R1YkluZm9z
KTsKLSAgICB9Ci0gICAgCiAgICAgSW5saW5lU3RhY2tFbnRyeSBpbmxpbmVTdGFja0VudHJ5KAog
ICAgICAgICB0aGlzLCBtX2NvZGVCbG9jaywgbV9wcm9maWxlZEJsb2NrLCAwLCBWaXJ0dWFsUmVn
aXN0ZXIoKSwgVmlydHVhbFJlZ2lzdGVyKCksCiAgICAgICAgIG1fY29kZUJsb2NrLT5udW1QYXJh
bWV0ZXJzKCksIElubGluZUNhbGxGcmFtZTo6Q2FsbCwgbnVsbHB0cik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMjMyMjI3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ0Niw2ICs0NDYsOSBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlCiAgICAgY2FzZSBQcm9maWxlQ29udHJvbEZsb3c6CiAgICAgY2FzZSBQdXRIaW50OgogICAg
IGNhc2UgSW5pdGlhbGl6ZUVudHJ5cG9pbnRBcmd1bWVudHM6CisgICAgY2FzZSBGaWx0ZXJDYWxs
TGlua1N0YXR1czoKKyAgICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0
ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICB3cml0ZShTaWRlU3RhdGUpOwogICAgICAgICByZXR1
cm47CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
c0V4aXRTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03NSw2ICs3NSw5IEBAIGJvb2wgY2xvYmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBoLCBOb2QK
ICAgICBjYXNlIEZlbmNlZFN0b3JlQmFycmllcjoKICAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlT
dG9yYWdlOgogICAgIGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKKyAgICBjYXNlIEZp
bHRlckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICBj
YXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgIC8vIFRoZXNlIGRvIGNsb2JiZXIgbWVt
b3J5LCBidXQgbm90aGluZyB0aGF0IGlzIG9ic2VydmFibGUuIEl0IG1heSBiZSBuaWNlIHRvIHNl
cGFyYXRlIHRoZQogICAgICAgICAvLyBoZWFwcyBpbnRvIHRob3NlIHRoYXQgYXJlIG9ic2VydmFi
bGUgYW5kIHRob3NlIHRoYXQgYXJlbid0LCBidXQgd2UgZG9uJ3QgZG8gdGhhdCByaWdodCBub3cu
CiAgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ4NDQwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEu
aAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21t
b25EYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJJbmxp
bmVDYWxsRnJhbWVTZXQuaCIKICNpbmNsdWRlICJKU0Nhc3QuaCIKICNpbmNsdWRlICJQcm9maWxl
ckNvbXBpbGF0aW9uLmgiCisjaW5jbHVkZSAiUmVjb3JkZWRTdGF0dXNlcy5oIgogI2luY2x1ZGUg
PHd0Zi9CYWcuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIApAQCAtMTI1LDYgKzEy
Niw3IEBAIHB1YmxpYzoKICAgICBCYWc8Q29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50PiB3
YXRjaHBvaW50czsKICAgICBCYWc8QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50PiBhZGFwdGl2
ZVN0cnVjdHVyZVdhdGNocG9pbnRzOwogICAgIEJhZzxBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlW
YWx1ZVdhdGNocG9pbnQ+IGFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludHM7
CisgICAgUmVjb3JkZWRTdGF0dXNlcyByZWNvcmRlZFN0YXR1c2VzOwogICAgIFZlY3RvcjxKdW1w
UmVwbGFjZW1lbnQ+IGp1bXBSZXBsYWNlbWVudHM7CiAgICAgCiAgICAgU2NyYXRjaEJ1ZmZlciog
Y2F0Y2hPU1JFbnRyeUJ1ZmZlcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTU3LDcgKzU1NywxNSBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgIGF1dG8gYWRkRmlsdGVyU3RhdHVzID0gWyZdICgpIHsKKyAgICAgICAgICAgICAgICAg
ICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGlu
ZGV4SW5CbG9jaywgU3BlY05vbmUsIEZpbHRlckdldEJ5SWRTdGF0dXMsIG5vZGUtPm9yaWdpbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0
YXR1c2VzLmFkZEdldEJ5SWRTdGF0dXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBzdGF0dXMpKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2UoY2hpbGQpKTsKKyAgICAgICAgICAgICAgICB9
OworICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChzdGF0dXMubnVtVmFyaWFu
dHMoKSA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAgIGFkZEZpbHRlclN0YXR1cygpOwogICAg
ICAgICAgICAgICAgICAgICBlbWl0R2V0QnlPZmZzZXQoaW5kZXhJbkJsb2NrLCBub2RlLCBiYXNl
VmFsdWUsIHN0YXR1c1swXSwgaWRlbnRpZmllck51bWJlcik7CiAgICAgICAgICAgICAgICAgICAg
IGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTU2Niw2ICs1
NzQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGlmICghaXNGVEwobV9ncmFwaC5tX3Bs
YW4ubW9kZSkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgIGFkZEZpbHRlclN0YXR1cygpOwogICAgICAgICAgICAgICAgIE11bHRp
R2V0QnlPZmZzZXREYXRhKiBkYXRhID0gbV9ncmFwaC5tX211bHRpR2V0QnlPZmZzZXREYXRhLmFk
ZCgpOwogICAgICAgICAgICAgICAgIGZvciAoY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQg
OiBzdGF0dXMudmFyaWFudHMoKSkgewogICAgICAgICAgICAgICAgICAgICBkYXRhLT5jYXNlcy5h
cHBlbmQoCkBAIC02MzksNiArNjQ4LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaWYg
KCFhbGxHb29kKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAg
ICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBGaWx0ZXJQdXRCeUlkU3RhdHVzLCBub2Rl
LT5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNv
cmRlZFN0YXR1c2VzLmFkZFB1dEJ5SWRTdGF0dXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBzdGF0
dXMpKSwKKyAgICAgICAgICAgICAgICAgICAgRWRnZShjaGlsZCkpOworICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIGlmIChzdGF0dXMubnVtVmFyaWFudHMoKSA9PSAxKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGVtaXRQdXRCeU9mZnNldChpbmRleEluQmxvY2ssIG5vZGUsIGJhc2VW
YWx1ZSwgc3RhdHVzWzBdLCBpZGVudGlmaWVyTnVtYmVyKTsKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZp
c2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMxMiw2ICszMTIsOSBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBBdG9taWNzWG9yOgogICAgIGNhc2UgQXRvbWljc0lz
TG9ja0ZyZWU6CiAgICAgY2FzZSBNYXRjaFN0cnVjdHVyZToKKyAgICBjYXNlIEZpbHRlckNhbGxM
aW5rU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRl
clB1dEJ5SWRTdGF0dXM6CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNhc2UgUHVzaFdp
dGhTY29wZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzOCw2ICsyMTM4LDkgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBHZXRHbG9iYWxUaGlzOgogICAgICAgICBjYXNlIEV4dHJhY3RWYWx1
ZUZyb21XZWFrTWFwR2V0OgogICAgICAgICBjYXNlIENQVUludHJpbnNpYzoKKyAgICAgICAgY2Fz
ZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJHZXRCeUlkU3RhdHVz
OgorICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgICAgICBicmVhazsK
ICNlbHNlCiAgICAgICAgIGRlZmF1bHQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1Niw2ICszNTYsMTIgQEAgdm9pZCBH
cmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdAogICAgICAgICBvdXQucHJpbnQoY29t
bWEsICJpZ25vcmVMYXN0SW5kZXhJc1dyaXRhYmxlID0gIiwgbm9kZS0+aWdub3JlTGFzdEluZGV4
SXNXcml0YWJsZSgpKTsKICAgICBpZiAobm9kZS0+aXNDb25zdGFudCgpKQogICAgICAgICBvdXQu
cHJpbnQoY29tbWEsIHBvaW50ZXJEdW1wSW5Db250ZXh0KG5vZGUtPmNvbnN0YW50KCksIGNvbnRl
eHQpKTsKKyAgICBpZiAobm9kZS0+aGFzQ2FsbExpbmtTdGF0dXMoKSkKKyAgICAgICAgb3V0LnBy
aW50KGNvbW1hLCAqbm9kZS0+Y2FsbExpbmtTdGF0dXMoKSk7CisgICAgaWYgKG5vZGUtPmhhc0dl
dEJ5SWRTdGF0dXMoKSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAqbm9kZS0+Z2V0QnlJZFN0
YXR1cygpKTsKKyAgICBpZiAobm9kZS0+aGFzUHV0QnlJZFN0YXR1cygpKQorICAgICAgICBvdXQu
cHJpbnQoY29tbWEsICpub2RlLT5wdXRCeUlkU3RhdHVzKCkpOwogICAgIGlmIChub2RlLT5pc0p1
bXAoKSkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiVDoiLCAqbm9kZS0+dGFyZ2V0QmxvY2so
KSk7CiAgICAgaWYgKG5vZGUtPmlzQnJhbmNoKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE4OCw2ICsxODgsOCBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRXhjZXB0aW9uSGFuZGxl
CiAKIHZvaWQgSklUQ29tcGlsZXI6OmxpbmsoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKIHsKKyAg
ICBtX2ppdENvZGUtPmNvbW1vbi5yZWNvcmRlZFN0YXR1c2VzID0gV1RGTW92ZShtX2dyYXBoLm1f
cGxhbi5yZWNvcmRlZFN0YXR1c2VzKTsKKyAgICAKICAgICAvLyBMaW5rIHRoZSBjb2RlLCBwb3B1
bGF0ZSBkYXRhIGluIENvZGVCbG9jayBkYXRhIHN0cnVjdHVyZXMuCiAgICAgbV9qaXRDb2RlLT5j
b21tb24uZnJhbWVSZWdpc3RlckNvdW50ID0gbV9ncmFwaC5mcmFtZVJlZ2lzdGVyQ291bnQoKTsK
ICAgICBtX2ppdENvZGUtPmNvbW1vbi5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0ID0gbV9n
cmFwaC5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw2
ICsxMDEsOSBAQCBFeGl0TW9kZSBtYXlFeGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5vZGUqCiAgICAg
Y2FzZSBQdXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0Ogog
ICAgIGNhc2UgTnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseToKKyAgICBjYXNlIEZpbHRlckNh
bGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICBjYXNlIEZp
bHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTdHJDYXQ6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMjMyMjI3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
NjksNiArMjc2OSwzOSBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChvcCgpID09IFRocm93U3Rh
dGljRXJyb3IpOwogICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8dWludDMyX3Q+KCk7CiAgICAg
fQorICAgIAorICAgIGJvb2wgaGFzQ2FsbExpbmtTdGF0dXMoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG9wKCkgPT0gRmlsdGVyQ2FsbExpbmtTdGF0dXM7CisgICAgfQorICAgIAorICAgIENhbGxM
aW5rU3RhdHVzKiBjYWxsTGlua1N0YXR1cygpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzQ2Fs
bExpbmtTdGF0dXMoKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mby5hczxDYWxsTGlua1N0YXR1
cyo+KCk7CisgICAgfQorICAgIAorICAgIGJvb2wgaGFzR2V0QnlJZFN0YXR1cygpCisgICAgewor
ICAgICAgICByZXR1cm4gb3AoKSA9PSBGaWx0ZXJHZXRCeUlkU3RhdHVzOworICAgIH0KKyAgICAK
KyAgICBHZXRCeUlkU3RhdHVzKiBnZXRCeUlkU3RhdHVzKCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChoYXNHZXRCeUlkU3RhdHVzKCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8R2V0QnlJ
ZFN0YXR1cyo+KCk7CisgICAgfQorICAgIAorICAgIGJvb2wgaGFzUHV0QnlJZFN0YXR1cygpCisg
ICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBGaWx0ZXJQdXRCeUlkU3RhdHVzOworICAgIH0K
KyAgICAKKyAgICBQdXRCeUlkU3RhdHVzKiBwdXRCeUlkU3RhdHVzKCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChoYXNQdXRCeUlkU3RhdHVzKCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8
UHV0QnlJZFN0YXR1cyo+KCk7CisgICAgfQogCiAgICAgdm9pZCBkdW1wQ2hpbGRyZW4oUHJpbnRT
dHJlYW0mIG91dCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5NCwxMSArMzk0LDggQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEdldEFyZ3VtZW50LCBOb2RlUmVzdWx0
SlMpIFwKICAgICBcCiAgICAgbWFjcm8oTmV3RnVuY3Rpb24sIE5vZGVSZXN1bHRKUykgXAotICAg
IFwKICAgICBtYWNybyhOZXdHZW5lcmF0b3JGdW5jdGlvbiwgTm9kZVJlc3VsdEpTKSBcCi0gICAg
XAogICAgIG1hY3JvKE5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24sIE5vZGVSZXN1bHRKUykgXAot
ICAgIFwKICAgICBtYWNybyhOZXdBc3luY0Z1bmN0aW9uLCBOb2RlUmVzdWx0SlMpIFwKICAgICBc
CiAgICAgLyogQmxvY2sgdGVybWluYWxzLiAqL1wKQEAgLTQ3NSw2ICs0NzIsMTEgQEAgbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIFwKICAgICAvKiBVc2VkIGZvciAkdm0gcGVy
Zm9ybWFuY2UgZGVidWdnaW5nICovIFwKICAgICBtYWNybyhDUFVJbnRyaW5zaWMsIE5vZGVSZXN1
bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBcCisgICAgLyogVXNlZCB0byBwcm92aWRl
IGZlZWRiYWNrIHRvIHRoZSBJQyBwcm9maWxlci4gKi8gXAorICAgIG1hY3JvKEZpbHRlckNhbGxM
aW5rU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oRmlsdGVyR2V0QnlJZFN0
YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEZpbHRlclB1dEJ5SWRTdGF0dXMs
IE5vZGVNdXN0R2VuZXJhdGUpIFwKIAogCiAvLyBUaGlzIGVudW0gZ2VuZXJhdGVzIGEgbW9ub3Rv
bmljYWxseSBpbmNyZWFzaW5nIGlkIGZvciBhbGwgTm9kZSB0eXBlcywKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdEJhc2UuY3BwCShyZXZpc2lvbiAyMzIyMjcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRCYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC00MiwxMSArNDIsMTggQEAgdm9pZCBPU1JFeGl0QmFzZTo6Y29uc2lkZXJB
ZGRpbmdBc0ZyZXF1ZQogICAgICAgICBiYXNlbGluZUNvZGVCbG9ja0Zvck9yaWdpbkFuZEJhc2Vs
aW5lQ29kZUJsb2NrKAogICAgICAgICAgICAgbV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGUsIHBy
b2ZpbGVkQ29kZUJsb2NrKTsKICAgICBpZiAoc291cmNlUHJvZmlsZWRDb2RlQmxvY2spIHsKKyAg
ICAgICAgRXhpdGluZ0lubGluZUtpbmQgaW5saW5lS2luZDsKKyAgICAgICAgaWYgKG1fY29kZU9y
aWdpbkZvckV4aXRQcm9maWxlLmlubGluZUNhbGxGcmFtZSkKKyAgICAgICAgICAgIGlubGluZUtp
bmQgPSBFeGl0RnJvbUlubGluZWQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlubGluZUtp
bmQgPSBFeGl0RnJvbU5vdElubGluZWQ7CisgICAgICAgIAogICAgICAgICBGcmVxdWVudEV4aXRT
aXRlIHNpdGU7CiAgICAgICAgIGlmIChtX3dhc0hvaXN0ZWQpCi0gICAgICAgICAgICBzaXRlID0g
RnJlcXVlbnRFeGl0U2l0ZShIb2lzdGluZ0ZhaWxlZCwgaml0VHlwZSk7CisgICAgICAgICAgICBz
aXRlID0gRnJlcXVlbnRFeGl0U2l0ZShIb2lzdGluZ0ZhaWxlZCwgaml0VHlwZSwgaW5saW5lS2lu
ZCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNpdGUgPSBGcmVxdWVudEV4aXRTaXRlKG1f
Y29kZU9yaWdpbkZvckV4aXRQcm9maWxlLmJ5dGVjb2RlSW5kZXgsIG1fa2luZCwgaml0VHlwZSk7
CisgICAgICAgICAgICBzaXRlID0gRnJlcXVlbnRFeGl0U2l0ZShtX2NvZGVPcmlnaW5Gb3JFeGl0
UHJvZmlsZS5ieXRlY29kZUluZGV4LCBtX2tpbmQsIGppdFR5cGUsIGlubGluZUtpbmQpOworICAg
ICAgICBkYXRhTG9nKCJBZGRpbmcgZnJlcXVlbnQgZXhpdCBzaXRlOiAiLCBzaXRlLCAiXG4iKTsK
ICAgICAgICAgRXhpdFByb2ZpbGU6OmFkZChzb3VyY2VQcm9maWxlZENvZGVCbG9jaywgc2l0ZSk7
CiAgICAgfQogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCShyZXZp
c2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02MzMsNiArNjMzLDggQEAgdm9pZCBQbGFuOjpjaGVja0xpdmVuZXNz
QW5kVmlzaXRDaGlsZHJlbgogICAgIGNsZWFuTXVzdEhhbmRsZVZhbHVlc0lmTmVjZXNzYXJ5KCk7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbXVzdEhhbmRsZVZhbHVlcy5zaXplKCk7IGktLTspCiAg
ICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQobXVzdEhhbmRsZVZhbHVlc1tpXSk7Cisg
ICAgCisgICAgcmVjb3JkZWRTdGF0dXNlcy5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKIAogICAgIHZp
c2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQoY29kZUJsb2NrKTsKICAgICB2aXNpdG9yLmFwcGVuZFVu
YmFycmllcmVkKGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSk7CkBAIC02NDksNiArNjUxLDExIEBA
IHZvaWQgUGxhbjo6Y2hlY2tMaXZlbmVzc0FuZFZpc2l0Q2hpbGRyZW4KICAgICB0cmFuc2l0aW9u
cy52aXNpdENoaWxkcmVuKHZpc2l0b3IpOwogfQogCit2b2lkIFBsYW46OmZpbmFsaXplSW5HQygp
Cit7CisgICAgcmVjb3JkZWRTdGF0dXNlcy5maW5hbGl6ZVdpdGhvdXREZWxldGluZygpOworfQor
CiBib29sIFBsYW46OmlzS25vd25Ub0JlTGl2ZUR1cmluZ0dDKCkKIHsKICAgICBpZiAoc3RhZ2Ug
PT0gQ2FuY2VsbGVkKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmgJKHJldmlz
aW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkRlZmVycmVkQ29tcGlsYXRp
b25DYWxsYmFjay5oIgogI2luY2x1ZGUgIk9wZXJhbmRzLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJD
b21waWxhdGlvbi5oIgorI2luY2x1ZGUgIlJlY29yZGVkU3RhdHVzZXMuaCIKICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogCkBA
IC03Miw2ICs3Myw3IEBAIHN0cnVjdCBQbGFuIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGUK
ICAgICB2b2lkIGl0ZXJhdGVDb2RlQmxvY2tzRm9yR0MoY29uc3QgRnVuYyYpOwogICAgIHZvaWQg
Y2hlY2tMaXZlbmVzc0FuZFZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKICAgICBib29sIGlz
S25vd25Ub0JlTGl2ZUR1cmluZ0dDKCk7CisgICAgdm9pZCBmaW5hbGl6ZUluR0MoKTsKICAgICB2
b2lkIGNhbmNlbCgpOwogCiAgICAgYm9vbCBjYW5UaWVyVXBBbmRPU1JFbnRlcigpIGNvbnN0IHsg
cmV0dXJuICF0aWVyVXBBbmRPU1JFbnRlckJ5dGVjb2Rlcy5pc0VtcHR5KCk7IH0KQEAgLTEwNCw2
ICsxMDYsNyBAQCBzdHJ1Y3QgUGxhbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlCiAgICAg
RGVzaXJlZElkZW50aWZpZXJzIGlkZW50aWZpZXJzOwogICAgIERlc2lyZWRXZWFrUmVmZXJlbmNl
cyB3ZWFrUmVmZXJlbmNlczsKICAgICBEZXNpcmVkVHJhbnNpdGlvbnMgdHJhbnNpdGlvbnM7Cisg
ICAgUmVjb3JkZWRTdGF0dXNlcyByZWNvcmRlZFN0YXR1c2VzOwogICAgIAogICAgIGJvb2wgd2ls
bFRyeVRvVGllclVwIHsgZmFsc2UgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJl
dmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjA2LDYgKzEyMDYsOSBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIEluaXRpYWxpemVFbnRyeXBvaW50QXJndW1lbnRzOgog
ICAgICAgICBjYXNlIFdlYWtTZXRBZGQ6CiAgICAgICAgIGNhc2UgV2Vha01hcFNldDoKKyAgICAg
ICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJHZXRCeUlk
U3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIAogICAgICAgICAvLyBUaGlzIGdldHMgaWdub3JlZCBiZWNhdXNl
IGl0IG9ubHkgcHJldGVuZHMgdG8gcHJvZHVjZSBhIHZhbHVlLgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDIzMjIyNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NzgsNiArNDc4LDEzIEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRl
VHlwZSYgc3QKICAgICAgICAgLy8gYWxyZWFkeSBmb3JjZSB0aGVzZSB0aGluZ3MgdG8gYmUgb3Jk
ZXJlZCBwcmVjaXNlbHkuIEknbSBqdXN0IG5vdCBjb25maWRlbnQgZW5vdWdoIGluIG15CiAgICAg
ICAgIC8vIGVmZmVjdCBiYXNlZCBtZW1vcnkgbW9kZWwgdG8gcmVseSBzb2xlbHkgb24gdGhhdCBy
aWdodCBub3cuCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgY2FzZSBGaWx0
ZXJDYWxsTGlua1N0YXR1czoKKyAgICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0dXM6CisgICAgY2Fz
ZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgorICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRoZXNlIHRv
IGJlIG1vdmVkIGFueXdoZXJlIG90aGVyIHRoYW4gd2hlcmUgd2UgcHV0IHRoZW0sIHNpbmNlIHdl
IHdhbnQgdGhlbQorICAgICAgICAvLyB0byBjYXB0dXJlICJwcm9maWxpbmciIGF0IHRoZSBwb2lu
dCBpbiBjb250cm9sIGZsb3cgaGVyZSB0aGUgdXNlciBwdXQgdGhlbS4KKyAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgY2FzZSBHZXRCeVZhbDoKICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0
eVN0b3JhZ2U6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQwMzMsNiArNDAzMywxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZU9yRW1wdHk6CiAgICAgICAgIERGR19DUkFT
SChtX2ppdC5ncmFwaCgpLCBub2RlLCAiQ2hlY2tTdHJ1Y3R1cmVPckVtcHR5IG9ubHkgdXNlZCBp
biA2NC1iaXQgREZHIik7CiAgICAgICAgIGJyZWFrOworICAgICAgICAKKyAgICBjYXNlIEZpbHRl
ckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICBjYXNl
IEZpbHRlclB1dEJ5SWRTdGF0dXM6CisgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBMYXN0Tm9k
ZVR5cGU6CiAgICAgY2FzZSBQaGk6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ2MjYsNiArNDYyNiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgRmlsdGVyQ2FsbExp
bmtTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJHZXRCeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVy
UHV0QnlJZFN0YXR1czoKKyAgICAgICAgYnJlYWs7CisKICNlbHNlIC8vIEVOQUJMRShGVExfSklU
KQogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0
dXJuOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlv
blBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0
cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtODk4LDEwICs4OTgsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBUYWlsQ2Fs
bDogewogICAgICAgICAgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBudWxscHRyOwog
ICAgICAgICAgICAgRWRnZSBjYWxsZWUgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCk7
Ci0gICAgICAgICAgICBpZiAoSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWND
YXN0Q29uc3RhbnQ8SlNGdW5jdGlvbio+KHZtKCkpKQorICAgICAgICAgICAgQ2FsbFZhcmlhbnQg
Y2FsbFZhcmlhbnQ7CisgICAgICAgICAgICBpZiAoSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxs
ZWUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNGdW5jdGlvbio+KHZtKCkpKSB7CiAgICAgICAgICAg
ICAgICAgZXhlY3V0YWJsZSA9IGZ1bmN0aW9uLT5leGVjdXRhYmxlKCk7Ci0gICAgICAgICAgICBl
bHNlIGlmIChjYWxsZWUtPmlzRnVuY3Rpb25BbGxvY2F0aW9uKCkpCisgICAgICAgICAgICAgICAg
Y2FsbFZhcmlhbnQgPSBDYWxsVmFyaWFudChmdW5jdGlvbik7CisgICAgICAgICAgICB9IGVsc2Ug
aWYgKGNhbGxlZS0+aXNGdW5jdGlvbkFsbG9jYXRpb24oKSkgewogICAgICAgICAgICAgICAgIGV4
ZWN1dGFibGUgPSBjYWxsZWUtPmNhc3RPcGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCk7Cisg
ICAgICAgICAgICAgICAgY2FsbFZhcmlhbnQgPSBDYWxsVmFyaWFudChleGVjdXRhYmxlKTsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKCFleGVjdXRhYmxlKQog
ICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTE5LDYgKzkyMyw4IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgCisgICAgICAgICAgICBt
X2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFkZENhbGxMaW5rU3RhdHVzKG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljLCBDYWxsTGlua1N0YXR1cyhjYWxsVmFyaWFudCkpOworICAgICAgICAg
ICAgCiAgICAgICAgICAgICBtX25vZGUtPmNvbnZlcnRUb0RpcmVjdENhbGwobV9ncmFwaC5mcmVl
emUoZXhlY3V0YWJsZSkpOwogICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAg
ICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5j
cHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29y
a2xpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTMsOCArMzkzLDEwIEBAIHZvaWQgV29ya2xp
c3Q6OnJlbW92ZURlYWRQbGFucyhWTSYgdm0pCiAgICAgICAgICAgICBQbGFuKiBwbGFuID0gaXRl
ci0+dmFsdWUuZ2V0KCk7CiAgICAgICAgICAgICBpZiAocGxhbi0+dm0gIT0gJnZtKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKHBsYW4tPmlzS25vd25Ub0JlTGl2
ZUR1cmluZ0dDKCkpCisgICAgICAgICAgICBpZiAocGxhbi0+aXNLbm93blRvQmVMaXZlRHVyaW5n
R0MoKSkgeworICAgICAgICAgICAgICAgIHBsYW4tPmZpbmFsaXplSW5HQygpOwogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQogICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQocGxhbi0+c3RhZ2UgIT0gUGxhbjo6Q2FuY2VsbGVkKTsgLy8gU2hvdWxkIG5vdCBiZSBjYW5j
ZWxsZWQsIHlldC4KICAgICAgICAgICAgIEFTU0VSVCghZGVhZFBsYW5LZXlzLmNvbnRhaW5zKHBs
YW4tPmtleSgpKSk7CiAgICAgICAgICAgICBkZWFkUGxhbktleXMuYWRkKHBsYW4tPmtleSgpKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAkod29ya2luZyBjb3B5KQpAQCAtNTYs
NiArNTYsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8oRGly
ZWN0QXJndW1lbnRzX21pbkNhcGFjaXR5LCBEaXJlY3RBcmd1bWVudHM6Om9mZnNldE9mTWluQ2Fw
YWNpdHkoKSkgXAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19tYXBwZWRBcmd1bWVudHMsIERp
cmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZNYXBwZWRBcmd1bWVudHMoKSkgXAogICAgIG1hY3JvKERp
cmVjdEFyZ3VtZW50c19tb2RpZmllZEFyZ3VtZW50c0Rlc2NyaXB0b3IsIERpcmVjdEFyZ3VtZW50
czo6b2Zmc2V0T2ZNb2RpZmllZEFyZ3VtZW50c0Rlc2NyaXB0b3IoKSkgXAorICAgIG1hY3JvKEZ1
bmN0aW9uUmFyZURhdGFfYWxsb2NhdG9yLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVj
dEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZB
bGxvY2F0b3IoKSkgXAorICAgIG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFfc3RydWN0dXJlLCBGdW5j
dGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RB
bGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSkgXAogICAgIG1hY3JvKEdldHRl
clNldHRlcl9nZXR0ZXIsIEdldHRlclNldHRlcjo6b2Zmc2V0T2ZHZXR0ZXIoKSkgXAogICAgIG1h
Y3JvKEdldHRlclNldHRlcl9zZXR0ZXIsIEdldHRlclNldHRlcjo6b2Zmc2V0T2ZTZXR0ZXIoKSkg
XAogICAgIG1hY3JvKEpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCwgSlNBcnJheUJ1ZmZlclZpZXc6
Om9mZnNldE9mTGVuZ3RoKCkpIFwKQEAgLTExMiwxMCArMTE0LDEwIEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNybyhTdHJpbmdJbXBsX2xlbmd0aCwgU3RyaW5nSW1w
bDo6bGVuZ3RoTWVtb3J5T2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfY2xhc3NJbmZv
LCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlX2ds
b2JhbE9iamVjdCwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSkgXAorICAgIG1hY3Jv
KFN0cnVjdHVyZV9pbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5LCBTdHJ1Y3R1cmU6OmluZGV4
aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnlPZmZzZXQoKSkgXAorICAgIG1hY3JvKFN0cnVjdHVyZV9p
bmxpbmVDYXBhY2l0eSwgU3RydWN0dXJlOjppbmxpbmVDYXBhY2l0eU9mZnNldCgpKSBcCiAgICAg
bWFjcm8oU3RydWN0dXJlX3Byb3RvdHlwZSwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSkg
XAogICAgIG1hY3JvKFN0cnVjdHVyZV9zdHJ1Y3R1cmVJRCwgU3RydWN0dXJlOjpzdHJ1Y3R1cmVJ
RE9mZnNldCgpKSBcCi0gICAgbWFjcm8oU3RydWN0dXJlX2lubGluZUNhcGFjaXR5LCBTdHJ1Y3R1
cmU6OmlubGluZUNhcGFjaXR5T2Zmc2V0KCkpIFwKLSAgICBtYWNybyhTdHJ1Y3R1cmVfaW5kZXhp
bmdNb2RlSW5jbHVkaW5nSGlzdG9yeSwgU3RydWN0dXJlOjppbmRleGluZ01vZGVJbmNsdWRpbmdI
aXN0b3J5T2Zmc2V0KCkpIFwKICAgICBtYWNybyhIYXNoTWFwSW1wbF9jYXBhY2l0eSwgSGFzaE1h
cEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT4+OjpvZmZzZXRPZkNhcGFj
aXR5KCkpIFwKICAgICBtYWNybyhIYXNoTWFwSW1wbF9idWZmZXIsICBIYXNoTWFwSW1wbDxIYXNo
TWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46Om9mZnNldE9mQnVmZmVyKCkpIFwKICAg
ICBtYWNybyhIYXNoTWFwSW1wbF9oZWFkLCAgSGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNo
TWFwQnVja2V0RGF0YUtleT4+OjpvZmZzZXRPZkhlYWQoKSkgXApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMjMyMjI3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNTEsNiArMzUxLDEwIEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29t
cGlsZShOb2RlKiAKICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgIGNhc2UgUHV0QnlWYWxX
aXRoVGhpczoKICAgICBjYXNlIE1hdGNoU3RydWN0dXJlOgorICAgIGNhc2UgQ3JlYXRlVGhpczoK
KyAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0
YXR1czoKKyAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgIC8vIFRoZXNlIGFy
ZSBPSy4KICAgICAgICAgYnJlYWs7CiAKQEAgLTM2Miw3ICszNjYsNiBAQCBpbmxpbmUgQ2FwYWJp
bGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBJ
ZGVudGl0eVdpdGhQcm9maWxlOgotICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICBjYXNlIENoZWNr
VGllclVwSW5Mb29wOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKICAgICBjYXNl
IENoZWNrVGllclVwQXRSZXR1cm46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5MSw2
ICszOTEsOCBAQCBwdWJsaWM6CiAKICAgICAgICAgLy8gV2UgcHV0IHRoZSBibG9ja3MgaW50byB0
aGUgQjMgcHJvY2VkdXJlIGluIGEgc3VwZXIgd2VpcmQgb3JkZXIuIE5vdyB3ZSByZW9yZGVyIHRo
ZW0uCiAgICAgICAgIG1fb3V0LmFwcGx5QmxvY2tPcmRlcigpOworICAgICAgICAKKyAgICAgICAg
bV9mdGxTdGF0ZS5qaXRDb2RlLT5jb21tb24ucmVjb3JkZWRTdGF0dXNlcyA9IFdURk1vdmUobV9n
cmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcyk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtODQ3
LDYgKzg0OSw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgTmV3QXJyYXlXaXRoU3ByZWFkOgog
ICAgICAgICAgICAgY29tcGlsZU5ld0FycmF5V2l0aFNwcmVhZCgpOwogICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgQ3JlYXRlVGhpczoKKyAgICAgICAgICAgIGNvbXBpbGVDcmVhdGVU
aGlzKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTcHJlYWQ6CiAgICAgICAg
ICAgICBjb21waWxlU3ByZWFkKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEzMTIsNiArMTMx
Nyw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQm90dG9tVmFsdWU6CiAgICAgICAgIGNhc2Ug
S2lsbFN0YWNrOgogICAgICAgICBjYXNlIEluaXRpYWxpemVFbnRyeXBvaW50QXJndW1lbnRzOgor
ICAgICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlckdl
dEJ5SWRTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3Jh
cGgsIG1fbm9kZSwgIlVucmVjb2duaXplZCBub2RlIGluIEZUTCBiYWNrZW5kIik7CkBAIC01NjYy
LDYgKzU2NzAsNDAgQEAgcHJpdmF0ZToKIAogICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAg
ICAgfQorICAgIAorICAgIHZvaWQgY29tcGlsZUNyZWF0ZVRoaXMoKQorICAgIHsKKyAgICAgICAg
TFZhbHVlIGNhbGxlZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisKKyAgICAgICAgTEJh
c2ljQmxvY2sgaXNGdW5jdGlvbkJsb2NrID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJh
c2ljQmxvY2sgaGFzUmFyZURhdGEgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNC
bG9jayBzbG93UGF0aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNv
bnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlz
RnVuY3Rpb24oY2FsbGVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdXN1YWxseShp
c0Z1bmN0aW9uQmxvY2spLCByYXJlbHkoc2xvd1BhdGgpKTsKKworICAgICAgICBMQmFzaWNCbG9j
ayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzRnVuY3Rpb25CbG9jaywgaGFzUmFyZURhdGEp
OworICAgICAgICBMVmFsdWUgcmFyZURhdGEgPSBtX291dC5sb2FkUHRyKGNhbGxlZSwgbV9oZWFw
cy5KU0Z1bmN0aW9uX3JhcmVEYXRhKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmlzWmVy
bzY0KHJhcmVEYXRhKSwgcmFyZWx5KHNsb3dQYXRoKSwgdXN1YWxseShoYXNSYXJlRGF0YSkpOwor
CisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGhhc1JhcmVEYXRhLCBzbG93UGF0aCk7CisgICAgICAg
IExWYWx1ZSBhbGxvY2F0b3IgPSBtX291dC5sb2FkUHRyKHJhcmVEYXRhLCBtX2hlYXBzLkZ1bmN0
aW9uUmFyZURhdGFfYWxsb2NhdG9yKTsKKyAgICAgICAgTFZhbHVlIHN0cnVjdHVyZSA9IG1fb3V0
LmxvYWRQdHIocmFyZURhdGEsIG1faGVhcHMuRnVuY3Rpb25SYXJlRGF0YV9zdHJ1Y3R1cmUpOwor
ICAgICAgICBMVmFsdWUgYnV0dGVyZmx5ID0gbV9vdXQuY29uc3RJbnRQdHIoMCk7CisgICAgICAg
IFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoYWxsb2NhdGVPYmplY3Qo
YWxsb2NhdG9yLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSwgc2xvd1BhdGgpKTsKKyAgICAgICAgbV9v
dXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRo
LCBjb250aW51YXRpb24pOworICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9v
dXQuYW5jaG9yKHZtQ2FsbCgKKyAgICAgICAgICAgIEludDY0LCBtX291dC5vcGVyYXRpb24ob3Bl
cmF0aW9uQ3JlYXRlVGhpcyksIG1fY2FsbEZyYW1lLCBjYWxsZWUsIG1fb3V0LmNvbnN0SW50MzIo
bV9ub2RlLT5pbmxpbmVDYXBhY2l0eSgpKSkpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVh
dGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7
CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5waGkoSW50NjQsIGZhc3RSZXN1bHQsIHNs
b3dSZXN1bHQpOworCisgICAgICAgIG11dGF0b3JGZW5jZSgpOworICAgICAgICBzZXRKU1ZhbHVl
KHJlc3VsdCk7CisgICAgfQogCiAgICAgdm9pZCBjb21waWxlU3ByZWFkKCkKICAgICB7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmls
ZXJCeXRlY29kZVNlcXVlbmNlLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC00OSwxMiArNDksMTIgQEAgQnl0ZWNvZGVTZXF1ZW5jZTo6Qnl0ZWNvZGVTZXF1
ZW5jZShDb2RlQgogICAgICAgICBtX2hlYWRlci5hcHBlbmQob3V0LnRvQ1N0cmluZygpKTsKICAg
ICB9CiAgICAgCi0gICAgU3R1YkluZm9NYXAgc3R1YkluZm9zOwotICAgIGNvZGVCbG9jay0+Z2V0
U3R1YkluZm9NYXAoc3R1YkluZm9zKTsKKyAgICBJQ1N0YXR1c01hcCBzdGF0dXNNYXA7CisgICAg
Y29kZUJsb2NrLT5nZXRJQ1N0YXR1c01hcChzdGF0dXNNYXApOwogICAgIAogICAgIGZvciAodW5z
aWduZWQgYnl0ZWNvZGVJbmRleCA9IDA7IGJ5dGVjb2RlSW5kZXggPCBjb2RlQmxvY2stPmluc3Ry
dWN0aW9ucygpLnNpemUoKTspIHsKICAgICAgICAgb3V0LnJlc2V0KCk7Ci0gICAgICAgIGNvZGVC
bG9jay0+ZHVtcEJ5dGVjb2RlKG91dCwgYnl0ZWNvZGVJbmRleCwgc3R1YkluZm9zKTsKKyAgICAg
ICAgY29kZUJsb2NrLT5kdW1wQnl0ZWNvZGUob3V0LCBieXRlY29kZUluZGV4LCBzdGF0dXNNYXAp
OwogICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IEludGVycHJldGVyOjpnZXRPcGNvZGVJRChj
b2RlQmxvY2stPmluc3RydWN0aW9ucygpW2J5dGVjb2RlSW5kZXhdLnUub3Bjb2RlKTsKICAgICAg
ICAgbV9zZXF1ZW5jZS5hcHBlbmQoQnl0ZWNvZGUoYnl0ZWNvZGVJbmRleCwgb3Bjb2RlSUQsIG91
dC50b0NTdHJpbmcoKSkpOwogICAgICAgICBieXRlY29kZUluZGV4ICs9IG9wY29kZUxlbmd0aChv
cGNvZGVJRCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShy
ZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3NSw2ICsyNzUsNyBAQCBjb25zdGV4cHIgYm9vbCBlbmFi
bGVXZWJBc3NlbWJseVN0cmVhbWluCiAgICAgdih1bnNpZ25lZCwgbWF4QWNjZXNzVmFyaWFudExp
c3RTaXplLCA4LCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KGJvb2wsIHVzZVBvbHl2YXJpYW50
RGV2aXJ0dWFsaXphdGlvbiwgdHJ1ZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihib29sLCB1
c2VQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAg
ICB2KHVuc2lnbmVkLCBtYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemUsIDgsIE5v
cm1hbCwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwgdXNlUG9seW1vcnBoaWNDYWxsSW5saW5pbmcs
IHRydWUsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwgdXNlUG9seW1vcnBoaWNDYWxs
SW5saW5pbmdGb3JOb25TdHViU3RhdHVzLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAg
dih1bnNpZ25lZCwgbWF4UG9seW1vcnBoaWNDYWxsVmFyaWFudExpc3RTaXplLCAxNSwgTm9ybWFs
LCBudWxscHRyKSBcCkBAIC0zMjIsOSArMzIzLDYgQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2Vi
QXNzZW1ibHlTdHJlYW1pbgogICAgIFwKICAgICB2KHVuc2lnbmVkLCBtYXhpbXVtVmFyYXJnc0Zv
cklubGluaW5nLCAxMDAsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIFwKLSAgICB2KGJvb2wsIHVz
ZVBvbHl2YXJpYW50Q2FsbElubGluaW5nLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKLSAgICB2
KGJvb2wsIHVzZVBvbHl2YXJpYW50QnlJZElubGluaW5nLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIp
IFwKLSAgICBcCiAgICAgdihib29sLCB1c2VNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZSwgZmFs
c2UsIE5vcm1hbCwgIlNldHRpbmcgdG8gdHJ1ZSBhbGxvd3MgdGhlIERGRydzIE1heGltYWxGbHVz
aEluc2VydGlvblBoYXNlIHRvIHJ1bi4iKSBcCiAgICAgXAogICAgIHYodW5zaWduZWQsIG1heGlt
dW1CaW5hcnlTdHJpbmdTd2l0Y2hDYXNlTGVuZ3RoLCA1MCwgTm9ybWFsLCBudWxscHRyKSBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341807</attachid>
            <date>2018-06-01 16:57:41 -0700</date>
            <delta_ts>2018-06-01 17:53:06 -0700</delta_ts>
            <desc>more</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>156659</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIzMjIyNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNDQwLDYgKzQ0MCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUEKICAgICBieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgKICAgICBieXRlY29k
ZS9FeGVjdXRpb25Db3VudGVyLmgKICAgICBieXRlY29kZS9FeGl0S2luZC5oCisgICAgYnl0ZWNv
ZGUvRXhpdGluZ0lubGluZUtpbmQuaAogICAgIGJ5dGVjb2RlL0V4aXRpbmdKSVRUeXBlLmgKICAg
ICBieXRlY29kZS9FeHByZXNzaW9uUmFuZ2VJbmZvLmgKICAgICBieXRlY29kZS9IYW5kbGVySW5m
by5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyMzIyMjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIx
MiwxMyArMjEyLDE3IEBAIGJ5dGVjb2RlL0RpcmVjdEV2YWxDb2RlQ2FjaGUuY3BwCiBieXRlY29k
ZS9FdmFsQ29kZUJsb2NrLmNwcAogYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5j
cHAKIGJ5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIuY3BwCitieXRlY29kZS9FeGl0RmxhZy5jcHAK
IGJ5dGVjb2RlL0V4aXRLaW5kLmNwcAorYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuY3BwCiBi
eXRlY29kZS9FeGl0aW5nSklUVHlwZS5jcHAKIGJ5dGVjb2RlL0Z1bGxDb2RlT3JpZ2luLmNwcAog
Ynl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suY3BwCiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNw
cAogYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCiBieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlLmNwcAorYnl0ZWNvZGUvSUNTdGF0dXNNYXAuY3BwCitieXRlY29kZS9JQ1N0YXR1c1V0
aWxzLmNwcAogYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcAogYnl0ZWNvZGUvSW5saW5lQ2FsbEZy
YW1lLmNwcAogYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lU2V0LmNwcApAQCAtMjQ1LDYgKzI0OSw3
IEBAIGJ5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwCiBieXRlY29kZS9QdXRCeUlkRmxh
Z3MuY3BwCiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAogYnl0ZWNvZGUvUHV0QnlJZFZhcmlh
bnQuY3BwCitieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAogYnl0ZWNvZGUvUmVkdWNlV2hp
dGVzcGFjZS5jcHAKIGJ5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmNwcAogYnl0ZWNvZGUvU3BlY3Vs
YXRlZFR5cGUuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI5Nyw2ICsyOTcsMTEgQEAKIAkJ
MEY0MjZBNDkxNDYwQ0JCNzAwMTMxRjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0MjZBNDYxNDYwQ0JBQjAwMTMx
RjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGNDI2QTRCMTQ2MENENkUwMDEzMUY4RiAvKiBEYXRhRm9ybWF0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQyNkE0
QTE0NjBDRDZCMDAxMzFGOEYgLyogRGF0YUZvcm1hdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDMxNzM4MTQ2QkFDNjkwMDdFMzg5MCAvKiBM
aXN0YWJsZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ0QTdCMDIw
QkY2ODYyMDAyMkIxNzEgLyogRXhpdEZsYWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDRBN0FFMjBCRjY4NUYwMDIyQjE3MSAvKiBFeGl0RmxhZy5o
ICovOyB9OworCQkwRjQ0QTdCMTIwQkY2OEM5MDAyMkIxNzEgLyogRXhpdGluZ0lubGluZUtpbmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDRBN0E3
MjBCRjY4NUQwMDIyQjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDRBN0IyMjBCRjY4Q0UwMDIyQjE3
MSAvKiBJQ1N0YXR1c01hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0NEE3QUYyMEJGNjg1RjAwMjJCMTcxIC8qIElDU3RhdHVzTWFwLmggKi87IH07
CisJCTBGNDRBN0IzMjBCRjY4RDEwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ0QTdBQTIwQkY2ODVF
MDAyMkIxNzEgLyogUmVjb3JkZWRTdGF0dXNlcy5oICovOyB9OworCQkwRjQ0QTdCNDIwQkY2OEQ5
MDAyMkIxNzEgLyogVGVybWluYXRlZENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDRBN0E4MjBCRjY4NUUwMDIyQjE3MSAvKiBUZXJt
aW5hdGVkQ29kZU9yaWdpbi5oICovOyB9OwogCQkwRjQ1NzAzOTFCRTQ0QzkxMDA2MkE2MjkgLyog
QWlyRWxpbWluYXRlRGVhZENvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNDU3MDM3MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFk
Q29kZS5oICovOyB9OwogCQkwRjQ1NzAzRDFCRTQ1RjBBMDA2MkE2MjkgLyogQWlyUmVwb3J0VXNl
ZFJlZ2lzdGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY0NTcwM0IxQkU0NUYwQTAwNjJBNjI5IC8qIEFpclJlcG9ydFVzZWRSZWdpc3RlcnMuaCAq
LzsgfTsKIAkJMEY0NTcwNDExQkU1ODRDQTAwNjJBNjI5IC8qIEIzVGltaW5nU2NvcGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDU3MDNGMUJFNTg0
Q0EwMDYyQTYyOSAvKiBCM1RpbWluZ1Njb3BlLmggKi87IH07CkBAIC0yMjg3LDYgKzIyOTIsMTYg
QEAKIAkJMEY0MjZBNEExNDYwQ0Q2QjAwMTMxRjhGIC8qIERhdGFGb3JtYXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YUZvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjQyQjNDMDIwMUVCNTA5MDAzNTcwMzEgLyogQWxsb2NhdG9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFsbG9jYXRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJs
ZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGlzdGFibGVIYW5k
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDRBN0E3MjBCRjY4NUQwMDIy
QjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBFeGl0aW5nSW5saW5lS2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjQ0QTdBODIwQkY2ODVFMDAyMkIxNzEgLyogVGVybWluYXRlZENvZGVPcmlnaW4uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVybWluYXRlZENvZGVPcmlnaW4uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NEE3QTkyMEJGNjg1RTAwMjJCMTcxIC8qIEV4aXRG
bGFnLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4aXRGbGFnLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcx
IC8qIFJlY29yZGVkU3RhdHVzZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVjb3JkZWRTdGF0dXNlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ0QTdB
QjIwQkY2ODVFMDAyMkIxNzEgLyogSUNTdGF0dXNNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSUNTdGF0dXNNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjQ0QTdBQzIwQkY2ODVGMDAyMkIxNzEgLyogRXhpdGluZ0lubGluZUtpbmQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXhpdGluZ0lubGluZUtpbmQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ0QTdBRDIwQkY2ODVGMDAyMkIx
NzEgLyogUmVjb3JkZWRTdGF0dXNlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZWNvcmRlZFN0YXR1c2VzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY0NEE3QUUyMEJGNjg1RjAwMjJCMTcxIC8qIEV4aXRGbGFnLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEV4aXRGbGFnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGNDRBN0FGMjBCRjY4NUYwMDIyQjE3MSAvKiBJQ1N0YXR1c01hcC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJQ1N0YXR1c01hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjQ0QTdCNTIwQzBCRTNGMDAyMkIxNzEgLyogSUNTdGF0dXNVdGlscy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJQ1N0YXR1c1V0aWxzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NTcwMzYxQkU0NEM5MTAwNjJBNjI5IC8q
IEFpckVsaW1pbmF0ZURlYWRDb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEFpckVsaW1pbmF0ZURlYWRDb2RlLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJFbGltaW5h
dGVEZWFkQ29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDU3MDM3MUJF
NDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBBaXJFbGltaW5hdGVEZWFkQ29kZS5oOyBwYXRoID0gYjMvYWlyL0Fp
ckVsaW1pbmF0ZURlYWRDb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDU3
MDNBMUJFNDVGMEEwMDYyQTYyOSAvKiBBaXJSZXBvcnRVc2VkUmVnaXN0ZXJzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpclJlcG9ydFVzZWRSZWdpc3RlcnMuY3Bw
OyBwYXRoID0gYjMvYWlyL0FpclJlcG9ydFVzZWRSZWdpc3RlcnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzY1OCw2ICs3NjczLDEwIEBACiAJCQkJMEY2MEZFOEUxRkZDMzZG
RDAwMDMzMjBBIC8qIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCAqLywKIAkJCQkwRjU2QTFE
NDE1MDAxQ0YyMDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5jcHAgKi8sCiAJCQkJMEY1NkEx
RDExNTAwMEYzMTAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNvdW50ZXIuaCAqLywKKwkJCQkwRjQ0QTdB
OTIwQkY2ODVFMDAyMkIxNzEgLyogRXhpdEZsYWcuY3BwICovLAorCQkJCTBGNDRBN0FFMjBCRjY4
NUYwMDIyQjE3MSAvKiBFeGl0RmxhZy5oICovLAorCQkJCTBGNDRBN0FDMjBCRjY4NUYwMDIyQjE3
MSAvKiBFeGl0aW5nSW5saW5lS2luZC5jcHAgKi8sCisJCQkJMEY0NEE3QTcyMEJGNjg1RDAwMjJC
MTcxIC8qIEV4aXRpbmdJbmxpbmVLaW5kLmggKi8sCiAJCQkJMEYwMzMyQkYxOEFERkFFMTAwNUY5
NzlBIC8qIEV4aXRpbmdKSVRUeXBlLmNwcCAqLywKIAkJCQkwRjNBQzc1MzE4OEU1RUM4MDAzMjAy
OUYgLyogRXhpdGluZ0pJVFR5cGUuaCAqLywKIAkJCQkwRkIxMDU4MjE2NzU0ODBDMDBGOEFCNkUg
LyogRXhpdEtpbmQuY3BwICovLApAQCAtNzY3NCw2ICs3NjkzLDkgQEAKIAkJCQkwRjAzMzJDMjE4
QjAxNzYzMDA1Rjk3OUEgLyogR2V0QnlJZFZhcmlhbnQuaCAqLywKIAkJCQkxNEFEOTEwODFEQ0E5
Mjk0MDAxNEY5RkUgLyogR2xvYmFsQ29kZUJsb2NrLmggKi8sCiAJCQkJMEYwQjgzQTgxNEJDRjU1
RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi8sCisJCQkJMEY0NEE3QUIyMEJGNjg1RTAwMjJC
MTcxIC8qIElDU3RhdHVzTWFwLmNwcCAqLywKKwkJCQkwRjQ0QTdBRjIwQkY2ODVGMDAyMkIxNzEg
LyogSUNTdGF0dXNNYXAuaCAqLywKKwkJCQkwRjQ0QTdCNTIwQzBCRTNGMDAyMkIxNzEgLyogSUNT
dGF0dXNVdGlscy5jcHAgKi8sCiAJCQkJMEZCMzk5QkQyMEFGNkIzODAwMTdFMjEzIC8qIElDU3Rh
dHVzVXRpbHMuaCAqLywKIAkJCQk3OTA1QkI2NjFEMTIwNTBFMDAxOUZFNTcgLyogSW5saW5lQWNj
ZXNzLmNwcCAqLywKIAkJCQk3OTA1QkI2NzFEMTIwNTBFMDAxOUZFNTcgLyogSW5saW5lQWNjZXNz
LmggKi8sCkBAIC03NzMwLDYgKzc3NTIsOCBAQAogCQkJCTBGOTNCNEE3MThCOTJDNEQwMDE3OEEz
RiAvKiBQdXRCeUlkVmFyaWFudC5jcHAgKi8sCiAJCQkJMEY5M0I0QTgxOEI5MkM0RDAwMTc4QTNG
IC8qIFB1dEJ5SWRWYXJpYW50LmggKi8sCiAJCQkJMEY5RkM4QzExNEUxQjVGQjAwRDUyQUUwIC8q
IFB1dEtpbmQuaCAqLywKKwkJCQkwRjQ0QTdBRDIwQkY2ODVGMDAyMkIxNzEgLyogUmVjb3JkZWRT
dGF0dXNlcy5jcHAgKi8sCisJCQkJMEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcxIC8qIFJlY29yZGVk
U3RhdHVzZXMuaCAqLywKIAkJCQkwRkY2MEFCRjE2NzQwRjgxMDAwMjk3NzkgLyogUmVkdWNlV2hp
dGVzcGFjZS5jcHAgKi8sCiAJCQkJMEZGNjBBQzAxNjc0MEY4MTAwMDI5Nzc5IC8qIFJlZHVjZVdo
aXRlc3BhY2UuaCAqLywKIAkJCQkwRjU1NDFBRjE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBv
aW50ZXIuY3BwICovLApAQCAtNzc0NCw2ICs3NzY4LDcgQEAKIAkJCQlCQ0NGMEQwNzBFRjBBQUI5
MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1YkluZm8uaCAqLywKIAkJCQkwRjRBMzhGNzFDOEUxM0RG
MDAxOTAzMTggLyogU3VwZXJTYW1wbGVyLmNwcCAqLywKIAkJCQkwRjRBMzhGODFDOEUxM0RGMDAx
OTAzMTggLyogU3VwZXJTYW1wbGVyLmggKi8sCisJCQkJMEY0NEE3QTgyMEJGNjg1RTAwMjJCMTcx
IC8qIFRlcm1pbmF0ZWRDb2RlT3JpZ2luLmggKi8sCiAJCQkJMEYyRDRERTUxOTgzMkRBQzAwN0Q0
QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgKi8sCiAJCQkJMEYyRDRERTYxOTgzMkRBQzAwN0Q0QjE5
IC8qIFRvVGhpc1N0YXR1cy5oICovLAogCQkJCTBGOTUyQUJBMUI0ODdBNzcwMEMzNjdDNSAvKiBU
cmFja2VkUmVmZXJlbmNlcy5jcHAgKi8sCkBAIC04NDAxLDYgKzg0MjYsNyBAQAogCQkJCTUzRDQ0
NERDMURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUzNDFGQzcyMURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJDNjNCMjFFNjBBRTQ3MDBDMTM4MzkgLyogQjNXaWR0
aC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NEE3QjIyMEJGNjhDRTAwMjJCMTcxIC8qIElDU3Rh
dHVzTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MjY3OEY4RjFBMDMxMDA5MDA2QTMwNkQgLyog
QmFzaWNCbG9ja0xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDdCODNBQzBFNkRCOEM5
MDA0Nzc1QTQgLyogQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg2OTc2RTVGMUZBM0U4QkMwMEU3QzRFMSAvKiBCaWdJbnRDb25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8sCkBAIC04NjIwLDYgKzg2NDYsNyBAQAogCQkJCTg2RUM5REM2MTMyOERGODIwMDJC
MkFENyAvKiBERkdHZW5lcmF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQzlEQzgx
MzI4REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJGQ0NG
QTE4QTYwMDcwMDAxQTI3RjggLyogREZHR3JhcGhTYWZlcG9pbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGNDRBN0IxMjBCRjY4QzkwMDIyQjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZCMTc2NjExOTZCOEY5RTAwOTEwNTJBIC8qIERGR0hlYXBMb2NhdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDODQxNjkxQkE4QzMyMTAwNjE4MzdEIC8qIERGR0lu
ZmVycmVkVHlwZUNoZWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxNEUyMTE4MTI1NzBCMDA5
QjZCNEQgLyogREZHSW5saW5lQ2FjaGVXcmFwcGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTg3NzAs
NiArODc5Nyw3IEBACiAJCQkJQTdBOEFGMzgxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0MzJBcnJh
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzkxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0
NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NDMxN0VBOUY1OTAwQUJCMjE3IC8q
IEZQUkluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDRBN0IzMjBCRjY4RDEwMDIyQjE3MSAv
KiBSZWNvcmRlZFN0YXR1c2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzRFREJGNzFEQjVGRkM5
MDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU1MTNBNjFE
NUE2ODJDMDBDMzJCRDggLyogRnJlZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjU4NUUx
MUVFMDgwNUEwMDk1MTc2RCAvKiBGcmVlTGlzdElubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAt
OTExOSw2ICs5MTQ3LDcgQEAKIAkJCQk3MDEzQ0E4QzFCNDkxQTk0MDBDQUU2MTMgLyogSlNKb2Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0xleGlj
YWxFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjMwRTE2RjVDRDAwQjM0
NDYwIC8qIEpTTG9jay5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NEE3QjAyMEJGNjg2MjAwMjJC
MTcxIC8qIEV4aXRGbGFnLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjVENzA5QzE2REU5OUY0MDBG
Q0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBNEJCN0YzMThB
NDExNzkwMDhBMEZDRCAvKiBKU01hbmFnZWRWYWx1ZUludGVybmFsLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNzAwODc0MjE3Q0JFOEVCMDBDM0U2NDMgLyogSlNNYXAuaCBpbiBIZWFkZXJzICovLApA
QCAtOTQzNSw2ICs5NDY0LDcgQEAKIAkJCQlBNzI5OURBMjE3RDEyODQ4MDA1RjVGRjkgLyogU2V0
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVFOTg0MTFBODg2NUI3MDA3NTRFOTMg
LyogU2V0dXBWYXJhcmdzRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCURDMTdFODE4MUM5Qzkx
RDkwMDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ0QTdC
NDIwQkY2OEQ5MDAyMkIxNzEgLyogVGVybWluYXRlZENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICov
LAogCQkJCURDMTdFODE5MUM5QzkxREIwMDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzMDIyRDMxRTNENzNBNTAwQkFDNDkzIC8qIFNpZ2lsbENy
YXNoQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNEQ4Qzc4MUZDQTNDRkEwMDFEMzJB
QyAvKiBTaW1wbGVNYXJraW5nQ29uc3RyYWludC5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCShyZXZpc2lvbiAyMzIyMjcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2NiwxMiArMjY2LDYgQEAgaW5saW5lIHVuc2lnbmVkIGdldEJ5VmFsSW5mb0J5
dGVjb2RlSW5kZQogICAgIHJldHVybiBpbmZvLT5ieXRlY29kZUluZGV4OwogfQogCi10eXBlZGVm
IEhhc2hNYXA8Q29kZU9yaWdpbiwgQnlWYWxJbmZvKiwgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFz
aD4gQnlWYWxJbmZvTWFwOwotCi0jZWxzZSAvLyBFTkFCTEUoSklUKQotCi10eXBlZGVmIEhhc2hN
YXA8aW50LCB2b2lkKj4gQnlWYWxJbmZvTWFwOwotCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVEdW1wZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTQyNyw3ICs0MjcsNyBAQCBzdGF0aWMgdm9pZCBkdW1wQ2hhaW4oUHJpbnRTdHJlYW0mIG91
dCwgCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgotdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9j
az46OnByaW50R2V0QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlv
biwgY29uc3QgU3R1YkluZm9NYXAmIG1hcCkKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpw
cmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNv
bnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rp
b24gPSBpbnN0cnVjdGlvbnNCZWdpbigpICsgbG9jYXRpb247CiAKQEAgLTQ0Nyw3ICs0NDcsNyBA
QCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRHZXRCeUlkCiAgICAgfQogCiAjaWYg
RU5BQkxFKEpJVCkKLSAgICBpZiAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJQdHIgPSBtYXAuZ2V0
KENvZGVPcmlnaW4obG9jYXRpb24pKSkgeworICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YlB0ciA9IHN0YXR1c01hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpLnN0dWJJbmZvKSB7CiAg
ICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9ICpzdHViUHRyOwogICAgICAgICBp
ZiAoc3R1YkluZm8ucmVzZXRCeUdDKQogICAgICAgICAgICAgb3V0LnByaW50KCIgKFJlc2V0IEJ5
IEdDKSIpOwpAQCAtNDg4LDEyICs0ODgsMTIgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46
OnByaW50R2V0QnlJZAogICAgICAgICBvdXQucHJpbnRmKCIpIik7CiAgICAgfQogI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0obWFwKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdHVzTWFwKTsKICNlbmRp
ZgogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+
OjpwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24s
IGNvbnN0IFN0dWJJbmZvTWFwJiBtYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJp
bnRQdXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25z
dCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQogewogICAgIGNvbnN0IGF1dG8qIGluc3RydWN0aW9u
ID0gaW5zdHJ1Y3Rpb25zQmVnaW4oKSArIGxvY2F0aW9uOwogCkBAIC01MjEsNyArNTIxLDcgQEAg
dm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50UHV0QnlJZAogICAgIH0KIAogI2lmIEVO
QUJMRShKSVQpCi0gICAgaWYgKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViUHRyID0gbWFwLmdldChD
b2RlT3JpZ2luKGxvY2F0aW9uKSkpIHsKKyAgICBpZiAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJQ
dHIgPSBzdGF0dXNNYXAuZ2V0KENvZGVPcmlnaW4obG9jYXRpb24pKS5zdHViSW5mbykgewogICAg
ICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSAqc3R1YlB0cjsKICAgICAgICAgaWYg
KHN0dWJJbmZvLnJlc2V0QnlHQykKICAgICAgICAgICAgIG91dC5wcmludCgiIChSZXNldCBCeSBH
QykiKTsKQEAgLTU0NywxMiArNTQ3LDEyIEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpw
cmludFB1dEJ5SWQKICAgICAgICAgb3V0LnByaW50ZigiKSIpOwogICAgIH0KICNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKG1hcCk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXR1c01hcCk7CiAjZW5kaWYK
IH0KIAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6
cHJpbnRJbkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNv
bnN0IFN0dWJJbmZvTWFwJiBtYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRJ
bkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IElD
U3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb24gPSBp
bnN0cnVjdGlvbnNCZWdpbigpICsgbG9jYXRpb247CiAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lk
IEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRJbkJ5SWRDCiAgICAgVU5VU0VEX1BBUkFNKGlk
ZW50KTsgLy8gdGVsbCB0aGUgY29tcGlsZXIgdG8gc2h1dCB1cCBpbiBjZXJ0YWluIHBsYXRmb3Jt
IGNvbmZpZ3VyYXRpb25zLgogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJQdHIgPSBtYXAuZ2V0KENvZGVPcmlnaW4obG9jYXRpb24pKSkgeworICAgIGlm
IChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YlB0ciA9IHN0YXR1c01hcC5nZXQoQ29kZU9yaWdpbihs
b2NhdGlvbikpLnN0dWJJbmZvKSB7CiAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
byA9ICpzdHViUHRyOwogICAgICAgICBpZiAoc3R1YkluZm8ucmVzZXRCeUdDKQogICAgICAgICAg
ICAgb3V0LnByaW50KCIgKFJlc2V0IEJ5IEdDKSIpOwpAQCAtNjAwLDI2ICs2MDAsMjYgQEAgdm9p
ZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50SW5CeUlkQwogICAgIH0KICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKG91dCk7Ci0gICAgVU5VU0VEX1BBUkFNKG1hcCk7CisgICAgVU5VU0VEX1BB
UkFNKHN0YXR1c01hcCk7CiAjZW5kaWYKIH0KIAogI2lmIEVOQUJMRShKSVQpCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQ2FsbExpbmtT
dGF0dXMoUHJpbnRTdHJlYW0mLCB1bnNpZ25lZCwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJikKK3Zv
aWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQ2FsbExpbmtTdGF0dXMoUHJpbnRTdHJlYW0m
LCB1bnNpZ25lZCwgY29uc3QgSUNTdGF0dXNNYXAmKQogewogfQogCiB0ZW1wbGF0ZTw+Ci12b2lk
IEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBDYWxsTGlua1N0YXR1cyhQcmludFN0cmVh
bSYgb3V0LCB1bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBtYXApCit2
b2lkIEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBDYWxsTGlua1N0YXR1cyhQcmludFN0
cmVhbSYgb3V0LCB1bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01h
cCkKIHsKICAgICBpZiAoYmxvY2soKS0+aml0VHlwZSgpICE9IEpJVENvZGU6OkZUTEpJVCkKLSAg
ICAgICAgb3V0LnByaW50KCIgc3RhdHVzKCIsIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKGJs
b2NrKCksIGxvY2F0aW9uLCBtYXApLCAiKSIpOworICAgICAgICBvdXQucHJpbnQoIiBzdGF0dXMo
IiwgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoYmxvY2soKSwgbG9jYXRpb24sIHN0YXR1c01h
cCksICIpIik7CiB9CiAjZW5kaWYKIAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVj
b2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0
aW9uLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgY2hhciog
b3AsIENhY2hlRHVtcE1vZGUgY2FjaGVEdW1wTW9kZSwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGlu
ZywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBtYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2Nr
Pjo6cHJpbnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCB0eXBl
bmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgY2hhciogb3AsIENhY2hlRHVtcE1v
ZGUgY2FjaGVEdW1wTW9kZSwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZywgY29uc3QgSUNTdGF0
dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBpbnQgZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAg
ICAgaW50IGZ1bmMgPSAoKytpdCktPnUub3BlcmFuZDsKQEAgLTYzOCw3ICs2MzgsNyBAQCB2b2lk
IEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRDYWxsT3AoCiAgICAgICAgICAgICAgICAgb3V0
LnByaW50ZigiIGxsaW50KCVwKSIsIG9iamVjdCk7CiAgICAgICAgIH0KICNpZiBFTkFCTEUoSklU
KQotICAgICAgICBpZiAoQ2FsbExpbmtJbmZvKiBpbmZvID0gbWFwLmdldChDb2RlT3JpZ2luKGxv
Y2F0aW9uKSkpIHsKKyAgICAgICAgaWYgKENhbGxMaW5rSW5mbyogaW5mbyA9IHN0YXR1c01hcC5n
ZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpLmNhbGxMaW5rSW5mbykgewogICAgICAgICAgICAgaWYg
KGluZm8tPmhhdmVMYXN0U2VlbkNhbGxlZSgpKSB7CiAgICAgICAgICAgICAgICAgSlNPYmplY3Qq
IG9iamVjdCA9IGluZm8tPmxhc3RTZWVuQ2FsbGVlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGF1
dG8qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4oKnZtKCksIG9iamVjdCkp
CkBAIC02NDgsOSArNjQ4LDkgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50Q2Fs
bE9wKAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgZHVtcENhbGxMaW5rU3Rh
dHVzKG91dCwgbG9jYXRpb24sIG1hcCk7CisgICAgICAgIGR1bXBDYWxsTGlua1N0YXR1cyhvdXQs
IGxvY2F0aW9uLCBzdGF0dXNNYXApOwogI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKG1hcCk7
CisgICAgICAgIFVOVVNFRF9QQVJBTShzdGF0dXNNYXApOwogI2VuZGlmCiAgICAgfQogICAgICsr
aXQ7CkBAIC02NzgsNyArNjc4LDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50
TG9jYXRpbwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8
QmxvY2s+OjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQmxv
Y2s6Okluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9u
KiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiBzdHViSW5mb3MsIGNvbnN0IENhbGxMaW5rSW5mb01h
cCYgY2FsbExpbmtJbmZvcykKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNv
ZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiBi
ZWdpbiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3Rh
dHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgaW50IGxvY2F0aW9uID0gaXQgLSBiZWdpbjsKICAg
ICBib29sIGhhc1ByaW50ZWRQcm9maWxpbmcgPSBmYWxzZTsKQEAgLTEwNzEsNyArMTA3MSw3IEBA
IHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgaW50IGlk
MCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBs
b2NhdGlvbiwgaXQsICJpbl9ieV9pZCIpOwogICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVz
IiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBpZE5h
bWUoaWQwLCBpZGVudGlmaWVyKGlkMCkpLmRhdGEoKSk7Ci0gICAgICAgIHByaW50SW5CeUlkQ2Fj
aGVTdGF0dXMob3V0LCBsb2NhdGlvbiwgc3R1YkluZm9zKTsKKyAgICAgICAgcHJpbnRJbkJ5SWRD
YWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdGF0dXNNYXApOwogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgY2FzZSBvcF9pbl9ieV92YWw6IHsKQEAgLTEwOTUsNyArMTA5NSw3IEBAIHZvaWQg
Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiZ2V0X2J5X2lkX2RpcmVjdCIpOwogICAgICAgICBv
dXQucHJpbnRmKCIlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShyMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBpZGVudGlmaWVyKGlkMCkpLmRhdGEoKSk7CiAg
ICAgICAgIGl0ICs9IDI7IC8vIEluY3JlbWVudCB1cCB0byB0aGUgdmFsdWUgcHJvZmlsZXIuCi0g
ICAgICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0dWJJbmZvcyk7
CisgICAgICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0YXR1c01h
cCk7CiAgICAgICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmls
aW5nKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTEwNCw3ICsxMTA0LDcgQEAgdm9pZCBC
eXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZQogICAgIGNhc2Ugb3BfZ2V0X2J5X2lk
X3Vuc2V0OgogICAgIGNhc2Ugb3BfZ2V0X2FycmF5X2xlbmd0aDogewogICAgICAgICBwcmludEdl
dEJ5SWRPcChvdXQsIGxvY2F0aW9uLCBpdCk7Ci0gICAgICAgIHByaW50R2V0QnlJZENhY2hlU3Rh
dHVzKG91dCwgbG9jYXRpb24sIHN0dWJJbmZvcyk7CisgICAgICAgIHByaW50R2V0QnlJZENhY2hl
U3RhdHVzKG91dCwgbG9jYXRpb24sIHN0YXR1c01hcCk7CiAgICAgICAgIGR1bXBWYWx1ZVByb2Zp
bGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQpAQCAtMTEzMCw3ICsxMTMwLDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBC
eXRlY29kZQogICAgIH0KICAgICBjYXNlIG9wX3B1dF9ieV9pZDogewogICAgICAgICBwcmludFB1
dEJ5SWRPcChvdXQsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZCIpOwotICAgICAgICBwcmludFB1
dEJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdHViSW5mb3MpOworICAgICAgICBwcmlu
dFB1dEJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdGF0dXNNYXApOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBvcF9wdXRfYnlfaWRfd2l0aF90aGlzOiB7CkBAIC0xNDc2
LDE1ICsxNDc2LDE1IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3BfY2FsbDogewotICAgICAgICBwcmlu
dENhbGxPcChvdXQsIGxvY2F0aW9uLCBpdCwgImNhbGwiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVk
UHJvZmlsaW5nLCBjYWxsTGlua0luZm9zKTsKKyAgICAgICAgcHJpbnRDYWxsT3Aob3V0LCBsb2Nh
dGlvbiwgaXQsICJjYWxsIiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgc3RhdHVz
TWFwKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3BfdGFpbF9jYWxsOiB7Ci0g
ICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAidGFpbF9jYWxsIiwgRHVtcENh
Y2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgY2FsbExpbmtJbmZvcyk7CisgICAgICAgIHByaW50
Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAidGFpbF9jYWxsIiwgRHVtcENhY2hlcywgaGFzUHJp
bnRlZFByb2ZpbGluZywgc3RhdHVzTWFwKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNh
c2Ugb3BfY2FsbF9ldmFsOiB7Ci0gICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0
LCAiY2FsbF9ldmFsIiwgRG9udER1bXBDYWNoZXMsIGhhc1ByaW50ZWRQcm9maWxpbmcsIGNhbGxM
aW5rSW5mb3MpOworICAgICAgICBwcmludENhbGxPcChvdXQsIGxvY2F0aW9uLCBpdCwgImNhbGxf
ZXZhbCIsIERvbnREdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmlsaW5nLCBzdGF0dXNNYXApOwog
ICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTE1MjMsNyArMTUyMyw3IEBAIHZvaWQgQnl0ZWNv
ZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IGNhc2Ugb3BfY29uc3RydWN0OiB7Ci0gICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24s
IGl0LCAiY29uc3RydWN0IiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgY2FsbExp
bmtJbmZvcyk7CisgICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAiY29uc3Ry
dWN0IiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgc3RhdHVzTWFwKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3Bfc3RyY2F0OiB7CkBAIC0xNzc4LDEwICsxNzc4
LDEwIEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKIH0KIAogdGVt
cGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJ5dGVj
b2RlKEJsb2NrKiBibG9jaywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQmxvY2s6
Okluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiYg
aXQsIGNvbnN0IFN0dWJJbmZvTWFwJiBzdHViSW5mb3MsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYg
Y2FsbExpbmtJbmZvcykKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUo
QmxvY2sqIGJsb2NrLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5z
dHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwg
Y29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBCeXRlY29kZUR1bXBlciBkdW1w
ZXIoYmxvY2ssIGJlZ2luKTsKLSAgICBkdW1wZXIuZHVtcEJ5dGVjb2RlKG91dCwgYmVnaW4sIGl0
LCBzdHViSW5mb3MsIGNhbGxMaW5rSW5mb3MpOworICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0
LCBiZWdpbiwgaXQsIHN0YXR1c01hcCk7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgpAQCAt
MTg5MCw3ICsxODkwLDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBTdHJpbmdT
dwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+
OjpkdW1wQmxvY2soQmxvY2sqIGJsb2NrLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJ
bnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgU3R1Yklu
Zm9NYXAmIHN0dWJJbmZvcywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBjYWxsTGlua0luZm9zKQor
dm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCbG9jayhCbG9jayogYmxvY2ssIGNvbnN0
IHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBQcmlu
dFN0cmVhbSYgb3V0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQogewogICAgIHNpemVf
dCBpbnN0cnVjdGlvbkNvdW50ID0gMDsKIApAQCAtMTkxMCw3ICsxOTEwLDcgQEAgdm9pZCBCeXRl
Y29kZUR1bXBlcjxCbG9jaz46OmR1bXBCbG9jayhCbAogICAgIGNvbnN0IGF1dG8qIGVuZCA9IGlu
c3RydWN0aW9ucy5lbmQoKTsKICAgICBCeXRlY29kZUR1bXBlcjxCbG9jaz4gZHVtcGVyKGJsb2Nr
LCBiZWdpbik7CiAgICAgZm9yIChjb25zdCBhdXRvKiBpdCA9IGJlZ2luOyBpdCAhPSBlbmQ7ICsr
aXQpCi0gICAgICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0LCBiZWdpbiwgaXQsIHN0dWJJbmZv
cywgY2FsbExpbmtJbmZvcyk7CisgICAgICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0LCBiZWdp
biwgaXQsIHN0YXR1c01hcCk7CiAKICAgICBkdW1wZXIuZHVtcElkZW50aWZpZXJzKG91dCk7CiAg
ICAgZHVtcGVyLmR1bXBDb25zdGFudHMob3V0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1
enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjYsNiArMjcsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDYWxsTGlua0lu
Zm8uaCIKKyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJ
bmZvLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzcsOCArMzksOCBAQCBjbGFzcyBCeXRlY29k
ZUR1bXBlciB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rp
b24gSW5zdHJ1Y3Rpb247CiAKLSAgICBzdGF0aWMgdm9pZCBkdW1wQnl0ZWNvZGUoQmxvY2sqLCBQ
cmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0
aW9uKiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiA9IFN0dWJJbmZvTWFwKCksIGNvbnN0IENhbGxM
aW5rSW5mb01hcCYgPSBDYWxsTGlua0luZm9NYXAoKSk7Ci0gICAgc3RhdGljIHZvaWQgZHVtcEJs
b2NrKEJsb2NrKiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiwg
UHJpbnRTdHJlYW0mIG91dCwgY29uc3QgU3R1YkluZm9NYXAmID0gU3R1YkluZm9NYXAoKSwgY29u
c3QgQ2FsbExpbmtJbmZvTWFwJiA9IENhbGxMaW5rSW5mb01hcCgpKTsKKyAgICBzdGF0aWMgdm9p
ZCBkdW1wQnl0ZWNvZGUoQmxvY2sqLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlv
biogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0
dXNNYXAgPSBJQ1N0YXR1c01hcCgpKTsKKyAgICBzdGF0aWMgdm9pZCBkdW1wQmxvY2soQmxvY2sq
LCBjb25zdCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmLCBQcmludFN0cmVh
bSYgb3V0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwID0gSUNTdGF0dXNNYXAoKSk7CiAK
IHByaXZhdGU6CiAgICAgQnl0ZWNvZGVEdW1wZXIoQmxvY2sqIGJsb2NrLCBjb25zdCBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4pCkBAIC02OSwxNCArNzEsMTQgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHByaW50Q29uZGl0aW9uYWxKdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3Ry
dWN0aW9uKiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgaW50IGxvY2F0aW9uLCBjb25zdCBjaGFy
KiBvcCk7CiAgICAgdm9pZCBwcmludENvbXBhcmVKdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0
IEluc3RydWN0aW9uKiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgaW50IGxvY2F0aW9uLCBjb25z
dCBjaGFyKiBvcCk7CiAgICAgdm9pZCBwcmludEdldEJ5SWRPcChQcmludFN0cmVhbSYgb3V0LCBp
bnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQpOwotICAgIHZvaWQgcHJpbnRHZXRC
eUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBTdHVi
SW5mb01hcCYpOwotICAgIHZvaWQgcHJpbnRQdXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0m
IG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBTdHViSW5mb01hcCYpOwotICAgIHZvaWQgcHJpbnRJ
bkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IFN0
dWJJbmZvTWFwJik7CisgICAgdm9pZCBwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVh
bSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IElDU3RhdHVzTWFwJik7CisgICAgdm9pZCBwcmlu
dFB1dEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0
IElDU3RhdHVzTWFwJik7CisgICAgdm9pZCBwcmludEluQnlJZENhY2hlU3RhdHVzKFByaW50U3Ry
ZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmKTsKICAgICBlbnVtIENh
Y2hlRHVtcE1vZGUgeyBEdW1wQ2FjaGVzLCBEb250RHVtcENhY2hlcyB9OwotICAgIHZvaWQgcHJp
bnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlv
biomIGl0LCBjb25zdCBjaGFyKiBvcCwgQ2FjaGVEdW1wTW9kZSwgYm9vbCYgaGFzUHJpbnRlZFBy
b2ZpbGluZywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJik7CisgICAgdm9pZCBwcmludENhbGxPcChQ
cmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNv
bnN0IGNoYXIqIG9wLCBDYWNoZUR1bXBNb2RlLCBib29sJiBoYXNQcmludGVkUHJvZmlsaW5nLCBj
b25zdCBJQ1N0YXR1c01hcCYpOwogICAgIHZvaWQgcHJpbnRQdXRCeUlkT3AoUHJpbnRTdHJlYW0m
IG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBv
cCk7CiAgICAgdm9pZCBwcmludExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQoUHJpbnRTdHJl
YW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFy
KiBvcCwgaW50IG9wZXJhbmQpOwotICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBv
dXQsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29u
c3QgU3R1YkluZm9NYXAmLCBjb25zdCBDYWxsTGlua0luZm9NYXAmKTsKKyAgICB2b2lkIGR1bXBC
eXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0
IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJik7CiAKICAgICB2b2lkIGR1bXBW
YWx1ZVByb2ZpbGluZyhQcmludFN0cmVhbSYsIGNvbnN0IEluc3RydWN0aW9uKiYsIGJvb2wmIGhh
c1ByaW50ZWRQcm9maWxpbmcpOwogICAgIHZvaWQgZHVtcEFycmF5UHJvZmlsaW5nKFByaW50U3Ry
ZWFtJiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZyk7CkBA
IC04NSw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCogYWN0dWFsUG9pbnRlckZvcihTcGVj
aWFsOjpQb2ludGVyKSBjb25zdDsKIAogI2lmIEVOQUJMRShKSVQpCi0gICAgdm9pZCBkdW1wQ2Fs
bExpbmtTdGF0dXMoUHJpbnRTdHJlYW0mLCB1bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgQ2FsbExp
bmtJbmZvTWFwJik7CisgICAgdm9pZCBkdW1wQ2FsbExpbmtTdGF0dXMoUHJpbnRTdHJlYW0mLCB1
bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmKTsKICNlbmRpZgogCiAgICAgQmxv
Y2sqIG1fYmxvY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExp
bmtJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rSW5mby5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1MiwxMiArMzUyLDYg
QEAgaW5saW5lIENvZGVPcmlnaW4gZ2V0Q2FsbExpbmtJbmZvQ29kZU9yaQogICAgIHJldHVybiBj
YWxsTGlua0luZm8uY29kZU9yaWdpbigpOwogfQogCi10eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdp
biwgQ2FsbExpbmtJbmZvKiwgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFzaD4gQ2FsbExpbmtJbmZv
TWFwOwotCi0jZWxzZSAvLyBFTkFCTEUoSklUKQotCi10eXBlZGVmIEhhc2hNYXA8aW50LCB2b2lk
Kj4gQ2FsbExpbmtJbmZvTWFwOwotCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtT
dGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua1N0YXR1cy5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcg
Kzc3LDggQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcgogfQogCiBD
YWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKLSAgICBDb2RlQmxvY2sq
IHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIGNvbnN0IENhbGxMaW5rSW5m
b01hcCYgbWFwKQorICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCwgY29uc3QgSUNTdGF0dXNNYXAmIG1hcCwKKyAgICBFeGl0U2l0ZURhdGEgZXhpdFNp
dGVEYXRhKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jay0+
bV9sb2NrKTsKICAgICAKQEAgLTg1LDkgKzg2LDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtT
dGF0dXM6OmNvbXB1dGVGbwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICAgICBV
TlVTRURfUEFSQU0obWFwKTsKICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBFeGl0U2l0ZURhdGEg
ZXhpdFNpdGVEYXRhID0gY29tcHV0ZUV4aXRTaXRlRGF0YShwcm9maWxlZEJsb2NrLCBieXRlY29k
ZUluZGV4KTsKLSAgICAKLSAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IG1hcC5nZXQo
Q29kZU9yaWdpbihieXRlY29kZUluZGV4KSk7CisgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0lu
Zm8gPSBtYXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkpLmNhbGxMaW5rSW5mbzsKICAg
ICBpZiAoIWNhbGxMaW5rSW5mbykgewogICAgICAgICBpZiAoZXhpdFNpdGVEYXRhLnRha2VzU2xv
d1BhdGgpCiAgICAgICAgICAgICByZXR1cm4gdGFrZXNTbG93UGF0aCgpOwpAQCAtMTAwLDYgKzk5
LDEyIEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm8KICNlbmRpZgog
fQogCitDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKKyAgICBDb2Rl
QmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIGNvbnN0IElDU3Rh
dHVzTWFwJiBtYXApCit7CisgICAgcmV0dXJuIGNvbXB1dGVGb3IocHJvZmlsZWRCbG9jaywgYnl0
ZWNvZGVJbmRleCwgbWFwLCBjb21wdXRlRXhpdFNpdGVEYXRhKHByb2ZpbGVkQmxvY2ssIGJ5dGVj
b2RlSW5kZXgpKTsKK30KKwogQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0YSBDYWxsTGlua1N0
YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YShDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YTsKQEAg
LTEwNywxMSArMTEyLDIxIEBAIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgQ2FsbExpbmtT
dGEKICAgICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gcHJvZmlsZWRCbG9jay0+dW5s
aW5rZWRDb2RlQmxvY2soKTsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9j
ay0+bV9sb2NrKTsKIAotICAgIGV4aXRTaXRlRGF0YS50YWtlc1Nsb3dQYXRoID0KLSAgICAgICAg
Y29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRl
Y29kZUluZGV4LCBCYWRUeXBlKSkKLSAgICAgICAgfHwgY29kZUJsb2NrLT5oYXNFeGl0U2l0ZShs
b2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRFeGVjdXRhYmxl
KSk7Ci0gICAgZXhpdFNpdGVEYXRhLmJhZEZ1bmN0aW9uID0KLSAgICAgICAgY29kZUJsb2NrLT5o
YXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBC
YWRDZWxsKSk7CisgICAgYXV0byB0YWtlc1Nsb3dQYXRoID0gWyZdIChFeGl0aW5nSW5saW5lS2lu
ZCBpbmxpbmVLaW5kKSAtPiBFeGl0RmxhZyB7CisgICAgICAgIHJldHVybiBFeGl0RmxhZygKKyAg
ICAgICAgICAgIGNvZGVCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhp
dFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkVHlwZSwgRXhpdEZyb21Bbnl0aGluZywgaW5saW5lS2lu
ZCkpCisgICAgICAgICAgICB8fCBjb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpG
cmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZEV4ZWN1dGFibGUsIEV4aXRGcm9tQW55
dGhpbmcsIGlubGluZUtpbmQpKSwKKyAgICAgICAgICAgIGlubGluZUtpbmQpOworICAgIH07Cisg
ICAgCisgICAgYXV0byBiYWRGdW5jdGlvbiA9IFsmXSAoRXhpdGluZ0lubGluZUtpbmQgaW5saW5l
S2luZCkgLT4gRXhpdEZsYWcgeworICAgICAgICByZXR1cm4gRXhpdEZsYWcoY29kZUJsb2NrLT5o
YXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBC
YWRDZWxsLCBFeGl0RnJvbUFueXRoaW5nLCBpbmxpbmVLaW5kKSksIGlubGluZUtpbmQpOworICAg
IH07CisgICAgCisgICAgZXhpdFNpdGVEYXRhLnRha2VzU2xvd1BhdGggfD0gdGFrZXNTbG93UGF0
aChFeGl0RnJvbU5vdElubGluZWQpOworICAgIGV4aXRTaXRlRGF0YS50YWtlc1Nsb3dQYXRoIHw9
IHRha2VzU2xvd1BhdGgoRXhpdEZyb21JbmxpbmVkKTsKKyAgICBleGl0U2l0ZURhdGEuYmFkRnVu
Y3Rpb24gfD0gYmFkRnVuY3Rpb24oRXhpdEZyb21Ob3RJbmxpbmVkKTsKKyAgICBleGl0U2l0ZURh
dGEuYmFkRnVuY3Rpb24gfD0gYmFkRnVuY3Rpb24oRXhpdEZyb21JbmxpbmVkKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29k
ZUluZGV4KTsKQEAgLTEzNSw2ICsxNTAsMTAgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0
dXM6OmNvbXB1dGVGbwogQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9t
Q2FsbExpbmtJbmZvKAogICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENhbGxMaW5rSW5m
byYgY2FsbExpbmtJbmZvKQogeworICAgIC8vIFdlIGNhbm5vdCB0ZWxsIHlvdSBhbnl0aGluZyBh
Ym91dCBkaXJlY3QgY2FsbHMuCisgICAgaWYgKGNhbGxMaW5rSW5mby5pc0RpcmVjdCgpKQorICAg
ICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoKTsKKyAgICAKICAgICBpZiAoY2FsbExpbmtJbmZv
LmNsZWFyZWRCeUdDKCkpCiAgICAgICAgIHJldHVybiB0YWtlc1Nsb3dQYXRoKCk7CiAgICAgCkBA
IC0yMjcsODMgKzI0Niw3NCBAQCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0
ZUZyCiAKIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAogICAgIGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ss
IENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLAotICAgIEV4aXRTaXRlRGF0YSBleGl0U2l0ZURh
dGEpCisgICAgRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YSwgRXhpdGluZ0lubGluZUtpbmQgaW5s
aW5lS2luZCkKIHsKICAgICBDYWxsTGlua1N0YXR1cyByZXN1bHQgPSBjb21wdXRlRm9yKGxvY2tl
ciwgcHJvZmlsZWRCbG9jaywgY2FsbExpbmtJbmZvKTsKLSAgICBpZiAoZXhpdFNpdGVEYXRhLmJh
ZEZ1bmN0aW9uKSB7Ci0gICAgICAgIGlmIChyZXN1bHQuaXNCYXNlZE9uU3R1YigpKSB7CisgICAg
cmVzdWx0LmFjY291bnRGb3JFeGl0cyhleGl0U2l0ZURhdGEsIGlubGluZUtpbmQpOworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisjZW5kaWYKKwordm9pZCBDYWxsTGlua1N0YXR1czo6YWNjb3VudEZv
ckV4aXRzKEV4aXRTaXRlRGF0YSBleGl0U2l0ZURhdGEsIEV4aXRpbmdJbmxpbmVLaW5kIGlubGlu
ZUtpbmQpCit7CisgICAgaWYgKGV4aXRTaXRlRGF0YS5iYWRGdW5jdGlvbi5pc1NldChpbmxpbmVL
aW5kKSkgeworICAgICAgICBpZiAoaXNCYXNlZE9uU3R1YigpKSB7CiAgICAgICAgICAgICAvLyBJ
ZiB3ZSBoYXZlIGEgcG9seW1vcnBoaWMgc3R1YiwgdGhlbiBoYXZpbmcgYW4gZXhpdCBzaXRlIGlz
IG5vdCBxdWl0ZSBzbyB1c2VmdWwuIEluCiAgICAgICAgICAgICAvLyBtb3N0IGNhc2VzLCB0aGUg
aW5mb3JtYXRpb24gaW4gdGhlIHN0dWIgaGFzIGhpZ2hlciBmaWRlbGl0eS4KLSAgICAgICAgICAg
IHJlc3VsdC5tYWtlQ2xvc3VyZUNhbGwoKTsKKyAgICAgICAgICAgIG1ha2VDbG9zdXJlQ2FsbCgp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gV2UgbWlnaHQgbm90IGhhdmUgYSBw
b2x5bW9ycGhpYyBzdHViIGZvciBhbnkgbnVtYmVyIG9mIHJlYXNvbnMuIFdoZW4gdGhpcyBoYXBw
ZW5zLCB3ZQogICAgICAgICAgICAgLy8gYXJlIGluIGxlc3MgY2VydGFpbiB0ZXJyaXRvcnksIHNv
IGV4aXQgc2l0ZXMgbWVhbiBhIGxvdC4KLSAgICAgICAgICAgIHJlc3VsdC5tX2NvdWxkVGFrZVNs
b3dQYXRoID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fY291bGRUYWtlU2xvd1BhdGggPSB0cnVlOwog
ICAgICAgICB9CiAgICAgfQotICAgIGlmIChleGl0U2l0ZURhdGEudGFrZXNTbG93UGF0aCkKLSAg
ICAgICAgcmVzdWx0Lm1fY291bGRUYWtlU2xvd1BhdGggPSB0cnVlOwogICAgIAotICAgIHJldHVy
biByZXN1bHQ7CisgICAgaWYgKGV4aXRTaXRlRGF0YS50YWtlc1Nsb3dQYXRoLmlzU2V0KGlubGlu
ZUtpbmQpKQorICAgICAgICBtX2NvdWxkVGFrZVNsb3dQYXRoID0gdHJ1ZTsKIH0KLSNlbmRpZgog
Ci12b2lkIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlREZHU3RhdHVzZXMoCi0gICAgQ29kZUJsb2Nr
KiBkZmdDb2RlQmxvY2ssIENhbGxMaW5rU3RhdHVzOjpDb250ZXh0TWFwJiBtYXApCitDYWxsTGlu
a1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKKyAgICBDb2RlQmxvY2sqIHByb2Zp
bGVkQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwKKyAgICBjb25zdCBJQ1N0YXR1c01hcCYg
YmFzZWxpbmVNYXAsIGNvbnN0IElDU3RhdHVzQ29udGV4dFN0YWNrJiBvcHRpbWl6ZWRTdGFjaykK
IHsKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBSRUxFQVNFX0FTU0VSVChkZmdDb2RlQmxvY2st
PmppdFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpOwotICAgIENvZGVCbG9jayogYmFzZWxpbmVD
b2RlQmxvY2sgPSBkZmdDb2RlQmxvY2stPmFsdGVybmF0aXZlKCk7Ci0gICAgZm9yIChhdXRvIGl0
ZXIgPSBkZmdDb2RlQmxvY2stPmNhbGxMaW5rSW5mb3NCZWdpbigpOyAhIWl0ZXI7ICsraXRlcikg
ewotICAgICAgICBDYWxsTGlua0luZm8mIGluZm8gPSAqKml0ZXI7Ci0gICAgICAgIGlmIChpbmZv
LmlzRGlyZWN0KCkpIHsKLSAgICAgICAgICAgIC8vIElmIHRoZSBERkcgd2FzIGFibGUgdG8gZ2V0
IGEgZGlyZWN0IGNhbGwgdGhlbiBwcm9iYWJseSBzbyB3aWxsIHdlLiBIb3dldmVyLCB0aGVyZSBp
cwotICAgICAgICAgICAgLy8gYSByZW1vdGUgY2hhbmNlIHRoYXQgaXQncyBiYWQgbmV3cyB0byBs
b3NlIGluZm9ybWF0aW9uIGFib3V0IHdoYXQgdGhlIERGRyBkaWQuIFdlJ2QKLSAgICAgICAgICAg
IC8vIGlkZWFsbHkgbGlrZSB0byBqdXN0IGtub3cgdGhhdCB0aGUgREZHIGhhZCBlbWl0dGVkIGEg
RGlyZWN0Q2FsbC4KLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIENv
ZGVPcmlnaW4gY29kZU9yaWdpbiA9IGluZm8uY29kZU9yaWdpbigpOwotICAgICAgICAKLSAgICAg
ICAgLy8gQ2hlY2sgaWYgd2UgaGFkIGFscmVhZHkgcHJldmlvdXNseSBtYWRlIGEgdGVycmlibGUg
bWlzdGFrZSBpbiB0aGUgRlRMIGZvciB0aGlzCi0gICAgICAgIC8vIGNvZGUgb3JpZ2luLiBOb3Rl
IHRoYXQgdGhpcyBpcyBhcHByb3hpbWF0ZSBiZWNhdXNlIHdlIGNvdWxkIGhhdmUgYSBtb25vdmFy
aWFudAotICAgICAgICAvLyBpbmxpbmUgaW4gdGhlIEZUTCB0aGF0IGVuZGVkIHVwIGZhaWxpbmcu
IFdlIHNob3VsZCBmaXggdGhhdCBhdCBzb21lIHBvaW50IGJ5Ci0gICAgICAgIC8vIGhhdmluZyBk
YXRhIHN0cnVjdHVyZXMgdG8gdHJhY2sgdGhlIGNvbnRleHQgb2YgZnJlcXVlbnQgZXhpdHMuIFRo
aXMgaXMgY3VycmVudGx5Ci0gICAgICAgIC8vIGNoYWxsZW5naW5nIGJlY2F1c2UgaXQgd291bGQg
cmVxdWlyZSBjcmVhdGluZyBhIENvZGVPcmlnaW4tYmFzZWQgZGF0YWJhc2UgaW4KLSAgICAgICAg
Ly8gYmFzZWxpbmUgQ29kZUJsb2NrcywgYnV0IHRob3NlIENvZGVCbG9ja3MgZG9uJ3QgcmVhbGx5
IGhhdmUgYSBwbGFjZSB0byBwdXQgdGhlCi0gICAgICAgIC8vIElubGluZUNhbGxGcmFtZXMuCi0g
ICAgICAgIENvZGVCbG9jayogY3VycmVudEJhc2VsaW5lID0KLSAgICAgICAgICAgIGJhc2VsaW5l
Q29kZUJsb2NrRm9yT3JpZ2luQW5kQmFzZWxpbmVDb2RlQmxvY2soY29kZU9yaWdpbiwgYmFzZWxp
bmVDb2RlQmxvY2spOwotICAgICAgICBFeGl0U2l0ZURhdGEgZXhpdFNpdGVEYXRhID0gY29tcHV0
ZUV4aXRTaXRlRGF0YShjdXJyZW50QmFzZWxpbmUsIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7
Ci0gICAgICAgIAotICAgICAgICB7Ci0gICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9j
a2VyKGRmZ0NvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgIG1hcC5hZGQoaW5mby5jb2Rl
T3JpZ2luKCksIGNvbXB1dGVGb3IobG9ja2VyLCBkZmdDb2RlQmxvY2ssIGluZm8sIGV4aXRTaXRl
RGF0YSkpOwotICAgICAgICB9CisgICAgaWYgKENhbGxMaW5rU3RhdHVzSW50ZXJuYWw6OnZlcmJv
c2UpCisgICAgICAgIGRhdGFMb2coIkZpZ3VyaW5nIG91dCBjYWxsIHByb2ZpbGluZyBmb3IgIiwg
Y29kZU9yaWdpbiwgIlxuIik7CisgICAgRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YSA9IGNvbXB1
dGVFeGl0U2l0ZURhdGEocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsK
KyAgICBpZiAoQ2FsbExpbmtTdGF0dXNJbnRlcm5hbDo6dmVyYm9zZSkgeworICAgICAgICBkYXRh
TG9nKCJ0YWtlc1Nsb3dQYXRoID0gIiwgZXhpdFNpdGVEYXRhLnRha2VzU2xvd1BhdGgsICJcbiIp
OworICAgICAgICBkYXRhTG9nKCJiYWRGdW5jdGlvbiA9ICIsIGV4aXRTaXRlRGF0YS5iYWRGdW5j
dGlvbiwgIlxuIik7CiAgICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZGZnQ29kZUJsb2Nr
KTsKLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKICAgICAKLSAgICBpZiAoQ2FsbExpbmtTdGF0
dXNJbnRlcm5hbDo6dmVyYm9zZSkgewotICAgICAgICBkYXRhTG9nKCJDb250ZXh0IG1hcDpcbiIp
OwotICAgICAgICBDb250ZXh0TWFwOjppdGVyYXRvciBpdGVyID0gbWFwLmJlZ2luKCk7Ci0gICAg
ICAgIENvbnRleHRNYXA6Oml0ZXJhdG9yIGVuZCA9IG1hcC5lbmQoKTsKLSAgICAgICAgZm9yICg7
IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKLSAgICAgICAgICAgIGRhdGFMb2coIiAgICAiLCBpdGVy
LT5rZXksICI6XG4iKTsKLSAgICAgICAgICAgIGRhdGFMb2coIiAgICAgICAgIiwgaXRlci0+dmFs
dWUsICJcbiIpOworICAgIGZvciAoY29uc3QgSUNTdGF0dXNDb250ZXh0KiBjb250ZXh0IDogb3B0
aW1pemVkU3RhY2spIHsKKyAgICAgICAgaWYgKENhbGxMaW5rU3RhdHVzSW50ZXJuYWw6OnZlcmJv
c2UpCisgICAgICAgICAgICBkYXRhTG9nKCJFeGFtaW5pbmcgc3RhdHVzIGluICIsIHBvaW50ZXJE
dW1wKGNvbnRleHQtPm9wdGltaXplZENvZGVCbG9jayksICJcbiIpOworICAgICAgICBJQ1N0YXR1
cyBzdGF0dXMgPSBjb250ZXh0LT5nZXQoY29kZU9yaWdpbik7CisgICAgICAgIGlmIChzdGF0dXMu
Y2FsbExpbmtJbmZvKSB7CisgICAgICAgICAgICBpZiAoQ2FsbExpbmtTdGF0dXNJbnRlcm5hbDo6
dmVyYm9zZSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJIYXZlIENhbGxMaW5rSW5mbyB3aXRo
IENvZGVPcmlnaW4gPSAiLCBzdGF0dXMuY2FsbExpbmtJbmZvLT5jb2RlT3JpZ2luKCksICJcbiIp
OworICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb250ZXh0LT5vcHRpbWl6
ZWRDb2RlQmxvY2stPm1fbG9jayk7CisgICAgICAgICAgICBDYWxsTGlua1N0YXR1cyByZXN1bHQg
PSBjb21wdXRlRm9yKAorICAgICAgICAgICAgICAgIGxvY2tlciwgY29udGV4dC0+b3B0aW1pemVk
Q29kZUJsb2NrLCAqc3RhdHVzLmNhbGxMaW5rSW5mbywgZXhpdFNpdGVEYXRhLAorICAgICAgICAg
ICAgICAgIGNvZGVPcmlnaW4uZXhpdGluZ0lubGluZUtpbmQoKSk7CisgICAgICAgICAgICBpZiAo
Q2FsbExpbmtTdGF0dXNJbnRlcm5hbDo6dmVyYm9zZSkKKyAgICAgICAgICAgICAgICBkYXRhTG9n
KCJHb3QgcmVzdWx0OiAiLCByZXN1bHQsICJcbiIpOworICAgICAgICAgICAgaWYgKHJlc3VsdCkK
KyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBpZiAoc3RhdHVzLmNhbGxTdGF0dXMpIHsKKyAgICAgICAgICAgIENhbGxMaW5rU3RhdHVz
IHJlc3VsdCA9ICpzdGF0dXMuY2FsbFN0YXR1czsKKyAgICAgICAgICAgIGlmIChDYWxsTGlua1N0
YXR1c0ludGVybmFsOjp2ZXJib3NlKQorICAgICAgICAgICAgICAgIGRhdGFMb2coIkhhdmUgY2Fs
bFN0YXR1czogIiwgcmVzdWx0LCAiXG4iKTsKKyAgICAgICAgICAgIHJlc3VsdC5hY2NvdW50Rm9y
RXhpdHMoZXhpdFNpdGVEYXRhLCBjb2RlT3JpZ2luLmV4aXRpbmdJbmxpbmVLaW5kKCkpOworICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgIH0KLX0KLQotQ2FsbExpbmtT
dGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgQ29kZUJsb2NrKiBwcm9maWxl
ZEJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sCi0gICAgY29uc3QgQ2FsbExpbmtJbmZvTWFw
JiBiYXNlbGluZU1hcCwgY29uc3QgQ2FsbExpbmtTdGF0dXM6OkNvbnRleHRNYXAmIGRmZ01hcCkK
LXsKLSAgICBhdXRvIGl0ZXIgPSBkZmdNYXAuZmluZChjb2RlT3JpZ2luKTsKLSAgICBpZiAoaXRl
ciAhPSBkZmdNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiBpdGVyLT52YWx1ZTsKICAgICAKLSAg
ICByZXR1cm4gY29tcHV0ZUZvcihwcm9maWxlZEJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5k
ZXgsIGJhc2VsaW5lTWFwKTsKKyAgICBDYWxsTGlua1N0YXR1cyByZXN1bHQgPSBjb21wdXRlRm9y
KHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgYmFzZWxpbmVNYXAsIGV4
aXRTaXRlRGF0YSk7CisgICAgaWYgKENhbGxMaW5rU3RhdHVzSW50ZXJuYWw6OnZlcmJvc2UpCisg
ICAgICAgIGRhdGFMb2coIkNvbXB1dGVkIGZyb20gYmFzZWxpbmU6ICIsIHJlc3VsdCwgIlxuIik7
CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBDYWxsTGlua1N0YXR1czo6c2V0UHJvdmVu
Q29uc3RhbnRDYWxsZWUoQ2FsbFZhcmlhbnQgdmFyaWFudCkKQEAgLTMyNyw2ICszMzcsMjQgQEAg
dm9pZCBDYWxsTGlua1N0YXR1czo6bWFrZUNsb3N1cmVDYWxsKCkKICAgICBtX3ZhcmlhbnRzID0g
ZGVzcGVjaWZpZWRWYXJpYW50TGlzdChtX3ZhcmlhbnRzKTsKIH0KIAorYm9vbCBDYWxsTGlua1N0
YXR1czo6ZmluYWxpemUoKQoreworICAgIGZvciAoQ2FsbFZhcmlhbnQmIHZhcmlhbnQgOiBtX3Zh
cmlhbnRzKSB7CisgICAgICAgIGlmICghdmFyaWFudC5maW5hbGl6ZSgpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDYWxsTGlu
a1N0YXR1czo6ZmlsdGVyKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBtX3ZhcmlhbnRz
LnJlbW92ZUFsbE1hdGNoaW5nKAorICAgICAgICBbJl0gKENhbGxWYXJpYW50JiB2YXJpYW50KSAt
PiBib29sIHsKKyAgICAgICAgICAgIHZhcmlhbnQuZmlsdGVyKHZtLCB2YWx1ZSk7CisgICAgICAg
ICAgICByZXR1cm4gIXZhcmlhbnQ7CisgICAgICAgIH0pOworfQorCiB2b2lkIENhbGxMaW5rU3Rh
dHVzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgaWYgKCFpc1NldCgpKSB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0
dXMuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNs
dWRlICJDYWxsVmFyaWFudC5oIgogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJD
b25jdXJyZW50SlNMb2NrLmgiCisjaW5jbHVkZSAiRXhpdEZsYWcuaCIKKyNpbmNsdWRlICJJQ1N0
YXR1c01hcC5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBA
IC02MCwzOSArNjIsMzMgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAgCi0gICAgc3RhdGlj
IENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoCi0gICAgICAgIENvZGVCbG9jayosIHVuc2lnbmVk
IGJ5dGVjb2RlSW5kZXgsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYpOwotCiAgICAgc3RydWN0IEV4
aXRTaXRlRGF0YSB7Ci0gICAgICAgIGJvb2wgdGFrZXNTbG93UGF0aCB7IGZhbHNlIH07Ci0gICAg
ICAgIGJvb2wgYmFkRnVuY3Rpb24geyBmYWxzZSB9OworICAgICAgICBFeGl0RmxhZyB0YWtlc1Ns
b3dQYXRoOworICAgICAgICBFeGl0RmxhZyBiYWRGdW5jdGlvbjsKICAgICB9OwogICAgIHN0YXRp
YyBFeGl0U2l0ZURhdGEgY29tcHV0ZUV4aXRTaXRlRGF0YShDb2RlQmxvY2sqLCB1bnNpZ25lZCBi
eXRlY29kZUluZGV4KTsKICAgICAKKyAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZv
cihDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBjb25zdCBJQ1N0YXR1c01hcCYs
IEV4aXRTaXRlRGF0YSk7CisgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoQ29k
ZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgY29uc3QgSUNTdGF0dXNNYXAmKTsKKwog
I2lmIEVOQUJMRShKSVQpCiAgICAgLy8gQ29tcHV0ZXMgdGhlIHN0YXR1cyBhc3N1bWluZyB0aGF0
IHdlIG5ldmVyIHRvb2sgc2xvdyBwYXRoIGFuZCBuZXZlciBwcmV2aW91c2x5CiAgICAgLy8gZXhp
dGVkLgogICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYsIENvZGVCbG9jayosIENhbGxMaW5rSW5mbyYpOworICAgIAorICAgIC8vIENv
bXB1dGVzIHRoZSBzdGF0dXMgYWNjb3VudGluZyBmb3IgZXhpdHMuCiAgICAgc3RhdGljIENhbGxM
aW5rU3RhdHVzIGNvbXB1dGVGb3IoCi0gICAgICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYs
IENvZGVCbG9jayosIENhbGxMaW5rSW5mbyYsIEV4aXRTaXRlRGF0YSk7CisgICAgICAgIGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayosIENhbGxMaW5rSW5mbyYsIEV4aXRTaXRl
RGF0YSwgRXhpdGluZ0lubGluZUtpbmQgPSBFeGl0RnJvbUFueUlubGluZUtpbmQpOwogI2VuZGlm
CiAgICAgCi0gICAgdHlwZWRlZiBIYXNoTWFwPENvZGVPcmlnaW4sIENhbGxMaW5rU3RhdHVzLCBD
b2RlT3JpZ2luQXBwcm94aW1hdGVIYXNoPiBDb250ZXh0TWFwOwotICAgIAotICAgIC8vIENvbXB1
dGVzIGFsbCBvZiB0aGUgc3RhdHVzZXMgb2YgdGhlIERGRyBjb2RlIGJsb2NrLiBEb2Vzbid0IGlu
Y2x1ZGUgc3RhdHVzZXMgdGhhdCBoYWQKLSAgICAvLyBubyBpbmZvcm1hdGlvbi4gQ3VycmVudGx5
IHdlIHVzZSB0aGlzIHdoZW4gY29tcGlsaW5nIEZUTCBjb2RlLCB0byBlbmFibGUgcG9seXZhcmlh
bnQKLSAgICAvLyBpbmxpbmluZy4KLSAgICBzdGF0aWMgdm9pZCBjb21wdXRlREZHU3RhdHVzZXMo
Q29kZUJsb2NrKiBkZmdDb2RlQmxvY2ssIENvbnRleHRNYXAmKTsKLSAgICAKLSAgICAvLyBIZWxw
ZXIgdGhhdCBmaXJzdCBjb25zdWx0cyB0aGUgQ29udGV4dE1hcCBhbmQgdGhlbiBkb2VzIGNvbXB1
dGVGb3IoKS4KICAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcigKLSAgICAgICAg
Q29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiwgY29uc3QgQ29u
dGV4dE1hcCYpOworICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBjb25zdCBJQ1N0YXR1
c01hcCYsIGNvbnN0IElDU3RhdHVzQ29udGV4dFN0YWNrJik7CiAgICAgCiAgICAgdm9pZCBzZXRQ
cm92ZW5Db25zdGFudENhbGxlZShDYWxsVmFyaWFudCk7CiAgICAgCiAgICAgYm9vbCBpc1NldCgp
IGNvbnN0IHsgcmV0dXJuICFtX3ZhcmlhbnRzLmlzRW1wdHkoKSB8fCBtX2NvdWxkVGFrZVNsb3dQ
YXRoOyB9CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQo
KTsgfQorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBpc1NldCgp
OyB9CiAgICAgCiAgICAgYm9vbCBjb3VsZFRha2VTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y291bGRUYWtlU2xvd1BhdGg7IH0KICAgICAKQEAgLTExMCw2ICsxMDYsMTAgQEAgcHVibGljOgog
ICAgIAogICAgIHVuc2lnbmVkIG1heE51bUFyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fbWF4
TnVtQXJndW1lbnRzOyB9CiAgICAgCisgICAgYm9vbCBmaW5hbGl6ZSgpOworICAgIAorICAgIHZv
aWQgZmlsdGVyKFZNJiwgSlNWYWx1ZSk7CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgpAQCAtMTIxLDYgKzEyMSw4IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENhbGxMaW5rSW5mbyYpOwogI2VuZGlm
CiAgICAgCisgICAgdm9pZCBhY2NvdW50Rm9yRXhpdHMoRXhpdFNpdGVEYXRhLCBFeGl0aW5nSW5s
aW5lS2luZCk7CisgICAgCiAgICAgQ2FsbFZhcmlhbnRMaXN0IG1fdmFyaWFudHM7CiAgICAgYm9v
bCBtX2NvdWxkVGFrZVNsb3dQYXRoIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNQcm92ZWQgeyBm
YWxzZSB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZh
cmlhbnQuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbFZhcmlhbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDYgKzMxLDM1IEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCitib29sIENhbGxWYXJpYW50OjpmaW5hbGl6ZSgpCit7Cisg
ICAgaWYgKG1fY2FsbGVlICYmICFIZWFwOjppc01hcmtlZChtX2NhbGxlZSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDYWxsVmFyaWFudDo6Zmls
dGVyKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAoISp0aGlzKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgaWYgKCFpc0Nsb3N1cmVDYWxsKCkpIHsKKyAgICAgICAgaWYgKG5v
bkV4ZWN1dGFibGVDYWxsZWUoKSAhPSB2YWx1ZSkKKyAgICAgICAgICAgICp0aGlzID0gQ2FsbFZh
cmlhbnQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoSlNGdW5jdGlv
biogZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgdmFsdWUpKSB7Cisg
ICAgICAgIGlmIChmdW5jdGlvbi0+ZXhlY3V0YWJsZSgpID09IGV4ZWN1dGFibGUoKSkKKyAgICAg
ICAgICAgICp0aGlzID0gQ2FsbFZhcmlhbnQoZnVuY3Rpb24pOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICAqdGhpcyA9IENhbGxWYXJpYW50KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgCisgICAgKnRoaXMgPSBDYWxsVmFyaWFudCgpOworfQorCiB2b2lkIENhbGxWYXJpYW50Ojpk
dW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgaWYgKCEqdGhpcykgewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgJKHJldmlzaW9u
IDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgIHsKICAgICB9
CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsZWU7IH0K
KyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2NhbGxlZTsg
fQogICAgIAogICAgIC8vIElmIHRoaXMgdmFyaWFudCByZWZlcnMgdG8gYSBmdW5jdGlvbiwgY2hh
bmdlIGl0IHRvIHJlZmVyIHRvIGl0cyBleGVjdXRhYmxlLgogICAgIEFMV0FZU19JTkxJTkUgQ2Fs
bFZhcmlhbnQgZGVzcGVjaWZpZWRDbG9zdXJlKCkgY29uc3QKQEAgLTEzNiw2ICsxMzYsMTAgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCisgICAgYm9vbCBm
aW5hbGl6ZSgpOworICAgIAorICAgIHZvaWQgZmlsdGVyKFZNJiwgSlNWYWx1ZSk7CisgICAgCiAg
ICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OwogICAgIAogICAgIGJvb2wgaXNI
YXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MzgsMjQgKzIzOCwyMCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKCkKIAogdm9pZCBD
b2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0KQogewotICAgIFN0dWJJbmZv
TWFwIHN0dWJJbmZvczsKLSAgICBDYWxsTGlua0luZm9NYXAgY2FsbExpbmtJbmZvczsKLSAgICBn
ZXRTdHViSW5mb01hcChzdHViSW5mb3MpOwotICAgIGdldENhbGxMaW5rSW5mb01hcChjYWxsTGlu
a0luZm9zKTsKLSAgICBCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wQmxvY2sodGhpcywg
aW5zdHJ1Y3Rpb25zKCksIG91dCwgc3R1YkluZm9zLCBjYWxsTGlua0luZm9zKTsKKyAgICBJQ1N0
YXR1c01hcCBzdGF0dXNNYXA7CisgICAgZ2V0SUNTdGF0dXNNYXAoc3RhdHVzTWFwKTsKKyAgICBC
eXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wQmxvY2sodGhpcywgaW5zdHJ1Y3Rpb25zKCks
IG91dCwgc3RhdHVzTWFwKTsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmlu
dFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9u
KiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiBzdHViSW5mb3MsIGNvbnN0IENhbGxMaW5rSW5mb01h
cCYgY2FsbExpbmtJbmZvcykKK3ZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJl
YW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0
LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQogewotICAgIEJ5dGVjb2RlRHVtcGVyPENv
ZGVCbG9jaz46OmR1bXBCeXRlY29kZSh0aGlzLCBvdXQsIGJlZ2luLCBpdCwgc3R1YkluZm9zLCBj
YWxsTGlua0luZm9zKTsKKyAgICBCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wQnl0ZWNv
ZGUodGhpcywgb3V0LCBiZWdpbiwgaXQsIHN0YXR1c01hcCk7CiB9CiAKLXZvaWQgQ29kZUJsb2Nr
OjpkdW1wQnl0ZWNvZGUoCi0gICAgUHJpbnRTdHJlYW0mIG91dCwgdW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQsCi0gICAgY29uc3QgU3R1YkluZm9NYXAmIHN0dWJJbmZvcywgY29uc3QgQ2FsbExpbmtJ
bmZvTWFwJiBjYWxsTGlua0luZm9zKQordm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmlu
dFN0cmVhbSYgb3V0LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgSUNTdGF0dXNNYXAm
IHN0YXR1c01hcCkKIHsKICAgICBjb25zdCBJbnN0cnVjdGlvbiogaXQgPSAmaW5zdHJ1Y3Rpb25z
KClbYnl0ZWNvZGVPZmZzZXRdOwotICAgIGR1bXBCeXRlY29kZShvdXQsIGluc3RydWN0aW9ucygp
LmJlZ2luKCksIGl0LCBzdHViSW5mb3MsIGNhbGxMaW5rSW5mb3MpOworICAgIGR1bXBCeXRlY29k
ZShvdXQsIGluc3RydWN0aW9ucygpLmJlZ2luKCksIGl0LCBzdGF0dXNNYXApOwogfQogCiAjZGVm
aW5lIEZPUl9FQUNIX01FTUJFUl9WRUNUT1IobWFjcm8pIFwKQEAgLTExNjYsNiArMTE2Miw5IEBA
IHZvaWQgQ29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhjb24KICNpZiBFTkFCTEUoREZH
X0pJVCkKICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpIHsKICAg
ICAgICAgREZHOjpDb21tb25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENvZGUtPmRmZ0NvbW1vbigp
OworICAgICAgICAKKyAgICAgICAgZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLm1hcmtJZkNo
ZWFwKHZpc2l0b3IpOworICAgICAgICAKICAgICAgICAgZm9yIChhdXRvJiB3ZWFrUmVmZXJlbmNl
IDogZGZnQ29tbW9uLT53ZWFrU3RydWN0dXJlUmVmZXJlbmNlcykKICAgICAgICAgICAgIHdlYWtS
ZWZlcmVuY2UtPm1hcmtJZkNoZWFwKHZpc2l0b3IpOwogCkBAIC0xMzk3LDU3ICsxMzk2LDQzIEBA
IHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICAgICAgICAgZmluYWxp
emVCYXNlbGluZUpJVElubGluZUNhY2hlcygpOwogI2VuZGlmCiAKLSAgICBWTTo6U3BhY2VBbmRG
aW5hbGl6ZXJTZXQ6OmZpbmFsaXplclNldEZvcigqc3Vic3BhY2UoKSkucmVtb3ZlKHRoaXMpOwot
fQotCi12b2lkIENvZGVCbG9jazo6Z2V0U3R1YkluZm9NYXAoY29uc3QgQ29uY3VycmVudEpTTG9j
a2VyJiwgU3R1YkluZm9NYXAmIHJlc3VsdCkKLXsKLSNpZiBFTkFCTEUoSklUKQotICAgIGlmIChK
SVRDb2RlOjppc0pJVChqaXRUeXBlKCkpKQotICAgICAgICB0b0hhc2hNYXAobV9zdHViSW5mb3Ms
IGdldFN0cnVjdHVyZVN0dWJJbmZvQ29kZU9yaWdpbiwgcmVzdWx0KTsKLSNlbHNlCi0gICAgVU5V
U0VEX1BBUkFNKHJlc3VsdCk7Ci0jZW5kaWYKLX0KLQotdm9pZCBDb2RlQmxvY2s6OmdldFN0dWJJ
bmZvTWFwKFN0dWJJbmZvTWFwJiByZXN1bHQpCi17Ci0gICAgQ29uY3VycmVudEpTTG9ja2VyIGxv
Y2tlcihtX2xvY2spOwotICAgIGdldFN0dWJJbmZvTWFwKGxvY2tlciwgcmVzdWx0KTsKLX0KLQot
dm9pZCBDb2RlQmxvY2s6OmdldENhbGxMaW5rSW5mb01hcChjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImLCBDYWxsTGlua0luZm9NYXAmIHJlc3VsdCkKLXsKLSNpZiBFTkFCTEUoSklUKQotICAgIGlm
IChKSVRDb2RlOjppc0pJVChqaXRUeXBlKCkpKQotICAgICAgICB0b0hhc2hNYXAobV9jYWxsTGlu
a0luZm9zLCBnZXRDYWxsTGlua0luZm9Db2RlT3JpZ2luLCByZXN1bHQpOwotI2Vsc2UKLSAgICBV
TlVTRURfUEFSQU0ocmVzdWx0KTsKLSNlbmRpZgotfQorICAgIGlmIChKSVRDb2RlOjppc09wdGlt
aXppbmdKSVQoaml0VHlwZSgpKSkgeworICAgICAgICBERkc6OkNvbW1vbkRhdGEqIGRmZ0NvbW1v
biA9IG1faml0Q29kZS0+ZGZnQ29tbW9uKCk7CisgICAgICAgIGRmZ0NvbW1vbi0+cmVjb3JkZWRT
dGF0dXNlcy5maW5hbGl6ZSgpOworICAgIH0KIAotdm9pZCBDb2RlQmxvY2s6OmdldENhbGxMaW5r
SW5mb01hcChDYWxsTGlua0luZm9NYXAmIHJlc3VsdCkKLXsKLSAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgZ2V0Q2FsbExpbmtJbmZvTWFwKGxvY2tlciwgcmVzdWx0
KTsKKyAgICBWTTo6U3BhY2VBbmRGaW5hbGl6ZXJTZXQ6OmZpbmFsaXplclNldEZvcigqc3Vic3Bh
Y2UoKSkucmVtb3ZlKHRoaXMpOwogfQogCi12b2lkIENvZGVCbG9jazo6Z2V0QnlWYWxJbmZvTWFw
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5VmFsSW5mb01hcCYgcmVzdWx0KQordm9pZCBD
b2RlQmxvY2s6OmdldElDU3RhdHVzTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIElDU3Rh
dHVzTWFwJiByZXN1bHQpCiB7CiAjaWYgRU5BQkxFKEpJVCkKICAgICBpZiAoSklUQ29kZTo6aXNK
SVQoaml0VHlwZSgpKSkgewotICAgICAgICBmb3IgKGF1dG8qIGJ5VmFsSW5mbyA6IG1fYnlWYWxJ
bmZvcykKLSAgICAgICAgICAgIHJlc3VsdC5hZGQoQ29kZU9yaWdpbihieVZhbEluZm8tPmJ5dGVj
b2RlSW5kZXgpLCBieVZhbEluZm8pOworICAgICAgICBmb3IgKFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbyA6IG1fc3R1YkluZm9zKQorICAgICAgICAgICAgcmVzdWx0LmFkZChzdHViSW5mby0+
Y29kZU9yaWdpbiwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLnN0dWJJbmZvID0gc3R1Yklu
Zm87CisgICAgICAgIGZvciAoQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gOiBtX2NhbGxMaW5r
SW5mb3MpCisgICAgICAgICAgICByZXN1bHQuYWRkKGNhbGxMaW5rSW5mby0+Y29kZU9yaWdpbigp
LCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUuY2FsbExpbmtJbmZvID0gY2FsbExpbmtJbmZv
OworICAgICAgICBmb3IgKEJ5VmFsSW5mbyogYnlWYWxJbmZvIDogbV9ieVZhbEluZm9zKQorICAg
ICAgICAgICAgcmVzdWx0LmFkZChDb2RlT3JpZ2luKGJ5VmFsSW5mby0+Ynl0ZWNvZGVJbmRleCks
IElDU3RhdHVzKCkpLml0ZXJhdG9yLT52YWx1ZS5ieVZhbEluZm8gPSBieVZhbEluZm87CisgICAg
ICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0VHlwZSgpKSkgeworICAgICAgICAg
ICAgREZHOjpDb21tb25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENvZGUtPmRmZ0NvbW1vbigpOwor
ICAgICAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2Vz
LmNhbGxzKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQocGFpci5maXJzdCwgSUNTdGF0dXMo
KSkuaXRlcmF0b3ItPnZhbHVlLmNhbGxTdGF0dXMgPSBwYWlyLnNlY29uZC5nZXQoKTsKKyAgICAg
ICAgICAgIGZvciAoYXV0byYgcGFpciA6IGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5nZXRz
KQorICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQocGFpci5maXJzdCwgSUNTdGF0dXMoKSkuaXRl
cmF0b3ItPnZhbHVlLmdldFN0YXR1cyA9IHBhaXIuc2Vjb25kLmdldCgpOworICAgICAgICAgICAg
Zm9yIChhdXRvJiBwYWlyIDogZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLnB1dHMpCisgICAg
ICAgICAgICAgICAgcmVzdWx0LmFkZChwYWlyLmZpcnN0LCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+
dmFsdWUucHV0U3RhdHVzID0gcGFpci5zZWNvbmQuZ2V0KCk7CisgICAgICAgIH0KICAgICB9CiAj
ZWxzZQogICAgIFVOVVNFRF9QQVJBTShyZXN1bHQpOwogI2VuZGlmCiB9CiAKLXZvaWQgQ29kZUJs
b2NrOjpnZXRCeVZhbEluZm9NYXAoQnlWYWxJbmZvTWFwJiByZXN1bHQpCit2b2lkIENvZGVCbG9j
azo6Z2V0SUNTdGF0dXNNYXAoSUNTdGF0dXNNYXAmIHJlc3VsdCkKIHsKICAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgZ2V0QnlWYWxJbmZvTWFwKGxvY2tlciwgcmVz
dWx0KTsKKyAgICBnZXRJQ1N0YXR1c01hcChsb2NrZXIsIHJlc3VsdCk7CiB9CiAKICNpZiBFTkFC
TEUoSklUKQpAQCAtMTUxNCw3ICsxNDk5LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnJlc2V0SklURGF0
YSgpCiAgICAgCiAgICAgLy8gV2UgY2FuIGNsZWFyIHRoZXNlIGJlY2F1c2Ugbm8gb3RoZXIgdGhy
ZWFkIHdpbGwgaGF2ZSByZWZlcmVuY2VzIHRvIGFueSBzdHViIGluZm9zLCBjYWxsCiAgICAgLy8g
bGluayBpbmZvcywgb3IgYnkgdmFsIGluZm9zIGlmIHdlIGRvbid0IGhhdmUgSklUIGNvZGUuIEF0
dGVtcHRzIHRvIHF1ZXJ5IHRoZXNlIGRhdGEKLSAgICAvLyBzdHJ1Y3R1cmVzIHVzaW5nIHRoZSBj
b25jdXJyZW50IEFQSSAoZ2V0U3R1YkluZm9NYXAgYW5kIGZyaWVuZHMpIHdpbGwgcmV0dXJuIG5v
dGhpbmcgaWYgd2UKKyAgICAvLyBzdHJ1Y3R1cmVzIHVzaW5nIHRoZSBjb25jdXJyZW50IEFQSSAo
Z2V0SUNTdGF0dXNNYXAgYW5kIGZyaWVuZHMpIHdpbGwgcmV0dXJuIG5vdGhpbmcgaWYgd2UKICAg
ICAvLyBkb24ndCBoYXZlIEpJVCBjb2RlLgogICAgIG1fc3R1YkluZm9zLmNsZWFyKCk7CiAgICAg
bV9jYWxsTGlua0luZm9zLmNsZWFyKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcg
QEAKICNpbmNsdWRlICJFeHByZXNzaW9uUmFuZ2VJbmZvLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25F
eGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiSGFuZGxlckluZm8uaCIKKyNpbmNsdWRlICJJQ1N0YXR1
c01hcC5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgog
I2luY2x1ZGUgIkpJVENvZGVNYXAuaCIKQEAgLTk2LDggKzk3LDYgQEAgZW51bSBjbGFzcyBBY2Nl
c3NUeXBlIDogaW50OF90OwogCiBzdHJ1Y3QgQXJpdGhQcm9maWxlOwogCi10eXBlZGVmIEhhc2hN
YXA8Q29kZU9yaWdpbiwgU3RydWN0dXJlU3R1YkluZm8qLCBDb2RlT3JpZ2luQXBwcm94aW1hdGVI
YXNoPiBTdHViSW5mb01hcDsKLQogZW51bSBSZW9wdGltaXphdGlvbk1vZGUgeyBEb250Q291bnRS
ZW9wdGltaXphdGlvbiwgQ291bnRSZW9wdGltaXphdGlvbiB9OwogCiBjbGFzcyBDb2RlQmxvY2sg
OiBwdWJsaWMgSlNDZWxsIHsKQEAgLTE5Niw4ICsxOTUsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGR1bXBCeXRlY29kZSgpOwogICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJik7Ci0g
ICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rpb24q
IGJlZ2luLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBTdHViSW5mb01hcCYgPSBTdHVi
SW5mb01hcCgpLCBjb25zdCBDYWxsTGlua0luZm9NYXAmID0gQ2FsbExpbmtJbmZvTWFwKCkpOwot
ICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0LCBjb25zdCBTdHViSW5mb01hcCYgPSBTdHViSW5mb01hcCgpLCBjb25zdCBDYWxsTGlu
a0luZm9NYXAmID0gQ2FsbExpbmtJbmZvTWFwKCkpOworICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFBy
aW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rp
b24qJiBpdCwgY29uc3QgSUNTdGF0dXNNYXAmID0gSUNTdGF0dXNNYXAoKSk7CisgICAgdm9pZCBk
dW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNv
bnN0IElDU3RhdHVzTWFwJiA9IElDU3RhdHVzTWFwKCkpOwogCiAgICAgdm9pZCBkdW1wRXhjZXB0
aW9uSGFuZGxlcnMoUHJpbnRTdHJlYW0mKTsKICAgICB2b2lkIHByaW50U3RydWN0dXJlcyhQcmlu
dFN0cmVhbSYsIGNvbnN0IEluc3RydWN0aW9uKik7CkBAIC0yMzcsMTQgKzIzNiw4IEBAIHB1Ymxp
YzoKIAogICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5dGVjb2RlT2Zmc2V0RnJvbUNhbGxT
aXRlSW5kZXgoQ2FsbFNpdGVJbmRleCk7CiAKLSAgICB2b2lkIGdldFN0dWJJbmZvTWFwKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYsIFN0dWJJbmZvTWFwJiByZXN1bHQpOwotICAgIHZvaWQgZ2V0
U3R1YkluZm9NYXAoU3R1YkluZm9NYXAmIHJlc3VsdCk7Ci0gICAgCi0gICAgdm9pZCBnZXRDYWxs
TGlua0luZm9NYXAoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ2FsbExpbmtJbmZvTWFwJiBy
ZXN1bHQpOwotICAgIHZvaWQgZ2V0Q2FsbExpbmtJbmZvTWFwKENhbGxMaW5rSW5mb01hcCYgcmVz
dWx0KTsKLQotICAgIHZvaWQgZ2V0QnlWYWxJbmZvTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tl
ciYsIEJ5VmFsSW5mb01hcCYgcmVzdWx0KTsKLSAgICB2b2lkIGdldEJ5VmFsSW5mb01hcChCeVZh
bEluZm9NYXAmIHJlc3VsdCk7CisgICAgdm9pZCBnZXRJQ1N0YXR1c01hcChjb25zdCBDb25jdXJy
ZW50SlNMb2NrZXImLCBJQ1N0YXR1c01hcCYgcmVzdWx0KTsKKyAgICB2b2lkIGdldElDU3RhdHVz
TWFwKElDU3RhdHVzTWFwJiByZXN1bHQpOwogICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgSklU
QWRkSUMqIGFkZEpJVEFkZElDKEFyaXRoUHJvZmlsZSosIEluc3RydWN0aW9uKik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCShyZXZpc2lv
biAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEyLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEyLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC00Niw3ICs0Niw3IEBAIHVuc2lnbmVkIENvZGVPcmlnaW46
OmlubGluZURlcHRoKCkgY29uc3QKICAgICByZXR1cm4gaW5saW5lRGVwdGhGb3JDYWxsRnJhbWUo
aW5saW5lQ2FsbEZyYW1lKTsKIH0KIAotYm9vbCBDb2RlT3JpZ2luOjppc0FwcHJveGltYXRlbHlF
cXVhbFRvKGNvbnN0IENvZGVPcmlnaW4mIG90aGVyKSBjb25zdAorYm9vbCBDb2RlT3JpZ2luOjpp
c0FwcHJveGltYXRlbHlFcXVhbFRvKGNvbnN0IENvZGVPcmlnaW4mIG90aGVyLCBJbmxpbmVDYWxs
RnJhbWUqIHRlcm1pbmFsKSBjb25zdAogewogICAgIENvZGVPcmlnaW4gYSA9ICp0aGlzOwogICAg
IENvZGVPcmlnaW4gYiA9IG90aGVyOwpAQCAtNjgsMTAgKzY4LDEyIEBAIGJvb2wgQ29kZU9yaWdp
bjo6aXNBcHByb3hpbWF0ZWx5RXF1YWxUbygKICAgICAgICAgaWYgKGEuYnl0ZWNvZGVJbmRleCAh
PSBiLmJ5dGVjb2RlSW5kZXgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAot
ICAgICAgICBpZiAoKCEhYS5pbmxpbmVDYWxsRnJhbWUpICE9ICghIWIuaW5saW5lQ2FsbEZyYW1l
KSkKKyAgICAgICAgYm9vbCBhSGFzSW5saW5lQ2FsbEZyYW1lID0gISFhLmlubGluZUNhbGxGcmFt
ZSAmJiBhLmlubGluZUNhbGxGcmFtZSAhPSB0ZXJtaW5hbDsKKyAgICAgICAgYm9vbCBiSGFzSW5s
aW5lQ2FsbEZyYW1lID0gISFiLmlubGluZUNhbGxGcmFtZTsKKyAgICAgICAgaWYgKGFIYXNJbmxp
bmVDYWxsRnJhbWUgIT0gYkhhc0lubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgCi0gICAgICAgIGlmICghYS5pbmxpbmVDYWxsRnJhbWUpCisgICAgICAg
IGlmICghYUhhc0lubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICAKICAgICAgICAgaWYgKGEuaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay5n
ZXQoKSAhPSBiLmlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkpCkBAIC04
Miw3ICs4NCw3IEBAIGJvb2wgQ29kZU9yaWdpbjo6aXNBcHByb3hpbWF0ZWx5RXF1YWxUbygKICAg
ICB9CiB9CiAKLXVuc2lnbmVkIENvZGVPcmlnaW46OmFwcHJveGltYXRlSGFzaCgpIGNvbnN0Cit1
bnNpZ25lZCBDb2RlT3JpZ2luOjphcHByb3hpbWF0ZUhhc2goSW5saW5lQ2FsbEZyYW1lKiB0ZXJt
aW5hbCkgY29uc3QKIHsKICAgICBpZiAoIWlzU2V0KCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAt
OTcsNiArOTksOSBAQCB1bnNpZ25lZCBDb2RlT3JpZ2luOjphcHByb3hpbWF0ZUhhc2goKSBjCiAg
ICAgICAgIGlmICghY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgICAgICAKKyAgICAgICAgaWYgKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZy
YW1lID09IHRlcm1pbmFsKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgCiAg
ICAgICAgIHJlc3VsdCArPSBXVEY6OlB0ckhhc2g8SlNDZWxsKj46Omhhc2goY29kZU9yaWdpbi5p
bmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLmdldCgpKTsKICAgICAgICAgCiAgICAg
ICAgIGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+ZGlyZWN0Q2FsbGVy
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCShy
ZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9y
aWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMS0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJDb2RlQmxvY2tIYXNoLmgiCisjaW5jbHVkZSAiRXhpdGluZ0lubGluZUtpbmQu
aCIKICNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgpAQCAtODgsMTUgKzg5LDIwIEBAIHN0cnVjdCBDb2RlT3Jp
Z2luIHsKICAgICAKICAgICBzdGF0aWMgdW5zaWduZWQgaW5saW5lRGVwdGhGb3JDYWxsRnJhbWUo
SW5saW5lQ2FsbEZyYW1lKik7CiAgICAgCisgICAgRXhpdGluZ0lubGluZUtpbmQgZXhpdGluZ0lu
bGluZUtpbmQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGlubGluZUNhbGxGcmFtZSA/
IEV4aXRGcm9tSW5saW5lZCA6IEV4aXRGcm9tTm90SW5saW5lZDsKKyAgICB9CisgICAgCiAgICAg
dW5zaWduZWQgaGFzaCgpIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2RlT3Jp
Z2luJiBvdGhlcikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvZGVPcmlnaW4m
IG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogICAgIAogICAgIC8v
IFRoaXMgY2hlY2tzIGlmIHRoZSB0d28gY29kZSBvcmlnaW5zIGNvcnJlc3BvbmQgdG8gdGhlIHNh
bWUgc3RhY2sgdHJhY2Ugc25pcHBldHMsCiAgICAgLy8gYnV0IGlnbm9yZSB3aGV0aGVyIHRoZSBJ
bmxpbmVDYWxsRnJhbWUncyBhcmUgaWRlbnRpY2FsLgotICAgIGJvb2wgaXNBcHByb3hpbWF0ZWx5
RXF1YWxUbyhjb25zdCBDb2RlT3JpZ2luJiBvdGhlcikgY29uc3Q7CisgICAgYm9vbCBpc0FwcHJv
eGltYXRlbHlFcXVhbFRvKGNvbnN0IENvZGVPcmlnaW4mIG90aGVyLCBJbmxpbmVDYWxsRnJhbWUq
IHRlcm1pbmFsID0gbnVsbHB0cikgY29uc3Q7CiAgICAgCi0gICAgdW5zaWduZWQgYXBwcm94aW1h
dGVIYXNoKCkgY29uc3Q7CisgICAgdW5zaWduZWQgYXBwcm94aW1hdGVIYXNoKElubGluZUNhbGxG
cmFtZSogdGVybWluYWwgPSBudWxscHRyKSBjb25zdDsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBGdW5jdGlvbj4KICAgICB2b2lkIHdhbGtVcElubGluZVN0YWNrKGNvbnN0IEZ1bmN0aW9uJik7
CkBAIC0xMDYsNyArMTEyLDcgQEAgc3RydWN0IENvZGVPcmlnaW4gewogICAgIAogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIHZvaWQgZHVt
cEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0KikgY29uc3Q7Ci0KKyAgICAKIHBy
aXZhdGU6CiAgICAgc3RhdGljIElubGluZUNhbGxGcmFtZSogZGVsZXRlZE1hcmtlcigpCiAgICAg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFBy
b2ZpbGUuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogdm9pZCBGcmVxdWVudEV4aXRTaXRl
OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KCJiYyMiLCBt
X2J5dGVjb2RlT2Zmc2V0LCAiOiAiLCBtX2tpbmQsICIvIiwgbV9qaXRUeXBlKTsKKyAgICBvdXQu
cHJpbnQoImJjIyIsIG1fYnl0ZWNvZGVPZmZzZXQsICI6ICIsIG1fa2luZCwgIi8iLCBtX2ppdFR5
cGUsICIvIiwgbV9pbmxpbmVLaW5kKTsKIH0KIAogRXhpdFByb2ZpbGU6OkV4aXRQcm9maWxlKCkg
eyB9CkBAIC00Myw4ICs0MywxMCBAQCBFeGl0UHJvZmlsZTo6fkV4aXRQcm9maWxlKCkgeyB9CiAK
IGJvb2wgRXhpdFByb2ZpbGU6OmFkZChDb2RlQmxvY2sqIG93bmVyLCBjb25zdCBGcmVxdWVudEV4
aXRTaXRlJiBzaXRlKQogeworICAgIFJFTEVBU0VfQVNTRVJUKHNpdGUuaml0VHlwZSgpICE9IEV4
aXRGcm9tQW55dGhpbmcpOworICAgIFJFTEVBU0VfQVNTRVJUKHNpdGUuaW5saW5lS2luZCgpICE9
IEV4aXRGcm9tQW55SW5saW5lS2luZCk7CisKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2Vy
KG93bmVyLT51bmxpbmtlZENvZGVCbG9jaygpLT5tX2xvY2spOwotICAgIEFTU0VSVChzaXRlLmpp
dFR5cGUoKSAhPSBFeGl0RnJvbUFueXRoaW5nKTsKIAogICAgIENPREVCTE9DS19MT0dfRVZFTlQo
b3duZXIsICJmcmVxdWVudEV4aXQiLCAoc2l0ZSkpOwogICAgIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgJKHJldmlzaW9uIDIzMjIy
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ29uY3Vy
cmVudEpTTG9jay5oIgogI2luY2x1ZGUgIkV4aXRLaW5kLmgiCisjaW5jbHVkZSAiRXhpdGluZ0lu
bGluZUtpbmQuaCIKICNpbmNsdWRlICJFeGl0aW5nSklUVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNDEsNiArNDIsNyBAQCBwdWJs
aWM6CiAgICAgICAgIDogbV9ieXRlY29kZU9mZnNldCgwKSAvLyAwID0gZW1wdHkgdmFsdWUKICAg
ICAgICAgLCBtX2tpbmQoRXhpdEtpbmRVbnNldCkKICAgICAgICAgLCBtX2ppdFR5cGUoRXhpdEZy
b21Bbnl0aGluZykKKyAgICAgICAgLCBtX2lubGluZUtpbmQoRXhpdEZyb21BbnlJbmxpbmVLaW5k
KQogICAgIHsKICAgICB9CiAgICAgCkBAIC00OCwxMyArNTAsMTUgQEAgcHVibGljOgogICAgICAg
ICA6IG1fYnl0ZWNvZGVPZmZzZXQoMSkgLy8gMSA9IGRlbGV0ZWQgdmFsdWUKICAgICAgICAgLCBt
X2tpbmQoRXhpdEtpbmRVbnNldCkKICAgICAgICAgLCBtX2ppdFR5cGUoRXhpdEZyb21Bbnl0aGlu
ZykKKyAgICAgICAgLCBtX2lubGluZUtpbmQoRXhpdEZyb21BbnlJbmxpbmVLaW5kKQogICAgIHsK
ICAgICB9CiAgICAgCi0gICAgZXhwbGljaXQgRnJlcXVlbnRFeGl0U2l0ZSh1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCwgRXhpdEtpbmQga2luZCwgRXhpdGluZ0pJVFR5cGUgaml0VHlwZSA9IEV4aXRG
cm9tQW55dGhpbmcpCisgICAgZXhwbGljaXQgRnJlcXVlbnRFeGl0U2l0ZSh1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCwgRXhpdEtpbmQga2luZCwgRXhpdGluZ0pJVFR5cGUgaml0VHlwZSA9IEV4aXRG
cm9tQW55dGhpbmcsIEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQgPSBFeGl0RnJvbUFueUlu
bGluZUtpbmQpCiAgICAgICAgIDogbV9ieXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkKICAg
ICAgICAgLCBtX2tpbmQoa2luZCkKICAgICAgICAgLCBtX2ppdFR5cGUoaml0VHlwZSkKKyAgICAg
ICAgLCBtX2lubGluZUtpbmQoaW5saW5lS2luZCkKICAgICB7CiAgICAgICAgIGlmIChtX2tpbmQg
PT0gQXJndW1lbnRzRXNjYXBlZCkgewogICAgICAgICAgICAgLy8gQ291bnQgdGhpcyBvbmUgZ2xv
YmFsbHkuIEl0IGRvZXNuJ3QgbWF0dGVyIHdoZXJlIGluIHRoZSBjb2RlIGJsb2NrIHRoZSBhcmd1
bWVudHMgZXhjYXBlZDsKQEAgLTY1LDEwICs2OSwxMSBAQCBwdWJsaWM6CiAgICAgCiAgICAgLy8g
VXNlIHRoaXMgY29uc3RydWN0b3IgaWYgeW91IHdpc2ggZm9yIHRoZSBleGl0IHNpdGUgdG8gYmUg
Y291bnRlZCBnbG9iYWxseSB3aXRoaW4gaXRzCiAgICAgLy8gY29kZSBibG9jay4KLSAgICBleHBs
aWNpdCBGcmVxdWVudEV4aXRTaXRlKEV4aXRLaW5kIGtpbmQsIEV4aXRpbmdKSVRUeXBlIGppdFR5
cGUgPSBFeGl0RnJvbUFueXRoaW5nKQorICAgIGV4cGxpY2l0IEZyZXF1ZW50RXhpdFNpdGUoRXhp
dEtpbmQga2luZCwgRXhpdGluZ0pJVFR5cGUgaml0VHlwZSA9IEV4aXRGcm9tQW55dGhpbmcsIEV4
aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQgPSBFeGl0RnJvbUFueUlubGluZUtpbmQpCiAgICAg
ICAgIDogbV9ieXRlY29kZU9mZnNldCgwKQogICAgICAgICAsIG1fa2luZChraW5kKQogICAgICAg
ICAsIG1faml0VHlwZShqaXRUeXBlKQorICAgICAgICAsIG1faW5saW5lS2luZChpbmxpbmVLaW5k
KQogICAgIHsKICAgICB9CiAgICAgCkBAIC04MSw3ICs4Niw4IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIHJldHVybiBtX2J5dGVjb2RlT2Zmc2V0ID09IG90aGVyLm1fYnl0ZWNvZGVPZmZzZXQK
ICAgICAgICAgICAgICYmIG1fa2luZCA9PSBvdGhlci5tX2tpbmQKLSAgICAgICAgICAgICYmIG1f
aml0VHlwZSA9PSBvdGhlci5tX2ppdFR5cGU7CisgICAgICAgICAgICAmJiBtX2ppdFR5cGUgPT0g
b3RoZXIubV9qaXRUeXBlCisgICAgICAgICAgICAmJiBtX2lubGluZUtpbmQgPT0gb3RoZXIubV9p
bmxpbmVLaW5kOwogICAgIH0KICAgICAKICAgICBib29sIHN1YnN1bWVzKGNvbnN0IEZyZXF1ZW50
RXhpdFNpdGUmIG90aGVyKSBjb25zdApAQCAtOTAsMTkgKzk2LDI0IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKG1fa2luZCAhPSBvdGhlci5tX2tpbmQp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChtX2ppdFR5cGUgPT0gRXhp
dEZyb21Bbnl0aGluZykKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICByZXR1cm4g
bV9qaXRUeXBlID09IG90aGVyLm1faml0VHlwZTsKKyAgICAgICAgaWYgKG1faml0VHlwZSAhPSBF
eGl0RnJvbUFueXRoaW5nCisgICAgICAgICAgICAmJiBtX2ppdFR5cGUgIT0gb3RoZXIubV9qaXRU
eXBlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAobV9pbmxpbmVLaW5k
ICE9IEV4aXRGcm9tQW55SW5saW5lS2luZAorICAgICAgICAgICAgJiYgbV9pbmxpbmVLaW5kICE9
IG90aGVyLm1faW5saW5lS2luZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogICAgIAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAg
IHsKLSAgICAgICAgcmV0dXJuIFdURjo6aW50SGFzaChtX2J5dGVjb2RlT2Zmc2V0KSArIG1fa2lu
ZCArIHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RXhpdGluZ0pJVFR5cGU+Piht
X2ppdFR5cGUpICogNzsKKyAgICAgICAgcmV0dXJuIFdURjo6aW50SGFzaChtX2J5dGVjb2RlT2Zm
c2V0KSArIG1fa2luZCArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2ppdFR5cGUpICogNyArIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihtX2lubGluZUtpbmQpICogMTE7CiAgICAgfQogICAgIAogICAg
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9ieXRlY29kZU9mZnNl
dDsgfQogICAgIEV4aXRLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KICAgICBF
eGl0aW5nSklUVHlwZSBqaXRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9qaXRUeXBlOyB9CisgICAg
RXhpdGluZ0lubGluZUtpbmQgaW5saW5lS2luZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lS2lu
ZDsgfQogICAgIAogICAgIEZyZXF1ZW50RXhpdFNpdGUgd2l0aEpJVFR5cGUoRXhpdGluZ0pJVFR5
cGUgaml0VHlwZSkgY29uc3QKICAgICB7CkBAIC0xMTEsNiArMTIyLDEzIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBGcmVxdWVudEV4aXRTaXRlIHdpdGhJ
bmxpbmVLaW5kKEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQpIGNvbnN0CisgICAgeworICAg
ICAgICBGcmVxdWVudEV4aXRTaXRlIHJlc3VsdCA9ICp0aGlzOworICAgICAgICByZXN1bHQubV9p
bmxpbmVLaW5kID0gaW5saW5lS2luZDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisK
ICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKICAgICB7CiAgICAgICAg
IHJldHVybiBtX2tpbmQgPT0gRXhpdEtpbmRVbnNldCAmJiBtX2J5dGVjb2RlT2Zmc2V0OwpAQCAt
MTIyLDYgKzE0MCw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9ieXRlY29kZU9mZnNldDsK
ICAgICBFeGl0S2luZCBtX2tpbmQ7CiAgICAgRXhpdGluZ0pJVFR5cGUgbV9qaXRUeXBlOworICAg
IEV4aXRpbmdJbmxpbmVLaW5kIG1faW5saW5lS2luZDsKIH07CiAKIHN0cnVjdCBGcmVxdWVudEV4
aXRTaXRlSGFzaCB7CkBAIC0xOTIsMTAgKzIxMSwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNF
eGl0U2l0ZShjb25zdCBGcmVxdWVudEV4aXRTaXRlJiBzaXRlKSBjb25zdAogICAgIHsKICAgICAg
ICAgaWYgKHNpdGUuaml0VHlwZSgpID09IEV4aXRGcm9tQW55dGhpbmcpIHsKLSAgICAgICAgICAg
IHJldHVybiBoYXNFeGl0U2l0ZShzaXRlLndpdGhKSVRUeXBlKEV4aXRGcm9tREZHKSkKLSAgICAg
ICAgICAgICAgICB8fCBoYXNFeGl0U2l0ZShzaXRlLndpdGhKSVRUeXBlKEV4aXRGcm9tRlRMKSk7
CisgICAgICAgICAgICByZXR1cm4gaGFzRXhpdFNpdGVXaXRoU3BlY2lmaWNKSVRUeXBlKHNpdGUu
d2l0aEpJVFR5cGUoRXhpdEZyb21ERkcpKQorICAgICAgICAgICAgICAgIHx8IGhhc0V4aXRTaXRl
V2l0aFNwZWNpZmljSklUVHlwZShzaXRlLndpdGhKSVRUeXBlKEV4aXRGcm9tRlRMKSk7CiAgICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIG1fZnJlcXVlbnRFeGl0U2l0ZXMuZmluZChzaXRlKSAhPSBt
X2ZyZXF1ZW50RXhpdFNpdGVzLmVuZCgpOworICAgICAgICByZXR1cm4gaGFzRXhpdFNpdGVXaXRo
U3BlY2lmaWNKSVRUeXBlKHNpdGUpOwogICAgIH0KICAgICAKICAgICBib29sIGhhc0V4aXRTaXRl
KEV4aXRLaW5kIGtpbmQpIGNvbnN0CkBAIC0yMDgsNiArMjI3LDIwIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGhhc0V4aXRTaXRlKEZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwga2lu
ZCkpOwogICAgIH0KIHByaXZhdGU6CisgICAgYm9vbCBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0pJ
VFR5cGUoY29uc3QgRnJlcXVlbnRFeGl0U2l0ZSYgc2l0ZSkgY29uc3QKKyAgICB7CisgICAgICAg
IGlmIChzaXRlLmlubGluZUtpbmQoKSA9PSBFeGl0RnJvbUFueUlubGluZUtpbmQpIHsKKyAgICAg
ICAgICAgIHJldHVybiBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0lubGluZUtpbmQoc2l0ZS53aXRo
SW5saW5lS2luZChFeGl0RnJvbU5vdElubGluZWQpKQorICAgICAgICAgICAgICAgIHx8IGhhc0V4
aXRTaXRlV2l0aFNwZWNpZmljSW5saW5lS2luZChzaXRlLndpdGhJbmxpbmVLaW5kKEV4aXRGcm9t
SW5saW5lZCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBoYXNFeGl0U2l0ZVdpdGhTcGVj
aWZpY0lubGluZUtpbmQoc2l0ZSk7CisgICAgfQorICAgIAorICAgIGJvb2wgaGFzRXhpdFNpdGVX
aXRoU3BlY2lmaWNJbmxpbmVLaW5kKGNvbnN0IEZyZXF1ZW50RXhpdFNpdGUmIHNpdGUpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gbV9mcmVxdWVudEV4aXRTaXRlcy5maW5kKHNpdGUpICE9
IG1fZnJlcXVlbnRFeGl0U2l0ZXMuZW5kKCk7CisgICAgfQorICAgIAogICAgIEhhc2hTZXQ8RnJl
cXVlbnRFeGl0U2l0ZT4gbV9mcmVxdWVudEV4aXRTaXRlczsKIH07CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0RmxhZy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRGbGFnLmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEZsYWcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkV4aXRGbGFnLmgiCisKKyNp
bmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CisKK25hbWVzcGFjZSBKU0MgeworCit2b2lkIEV4
aXRGbGFnOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgaWYgKCFtX2JpdHMp
IHsKKyAgICAgICAgb3V0LnByaW50KCJmYWxzZSIpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIAorICAgIENvbW1hUHJpbnRlciBjb21tYSgifCIpOworICAgIGlmIChpc1NldChFeGl0RnJv
bU5vdElubGluZWQpKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICJub3RJbmxpbmVkIik7Cisg
ICAgaWYgKGlzU2V0KEV4aXRGcm9tSW5saW5lZCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwg
ImlubGluZWQiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0RmxhZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0RmxhZy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0RmxhZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRXhpdGluZ0lubGluZUtpbmQuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIEV4aXRGbGFnIHsKK3B1YmxpYzoKKyAgICBFeGl0RmxhZygpIHsg
fQorICAgIAorICAgIEV4aXRGbGFnKGJvb2wgdmFsdWUsIEV4aXRpbmdJbmxpbmVLaW5kIGlubGlu
ZUtpbmQpCisgICAgeworICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAKKyAgICAgICAgc3dpdGNoIChpbmxpbmVLaW5kKSB7CisgICAgICAgIGNhc2UgRXhp
dEZyb21BbnlJbmxpbmVLaW5kOgorICAgICAgICAgICAgbV9iaXRzID0gdHJ1ZU5vdElubGluZWQg
fCB0cnVlSW5saW5lZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEV4aXRGcm9t
Tm90SW5saW5lZDoKKyAgICAgICAgICAgIG1fYml0cyA9IHRydWVOb3RJbmxpbmVkOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRXhpdEZyb21JbmxpbmVkOgorICAgICAgICAgICAg
bV9iaXRzID0gdHJ1ZUlubGluZWQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
IH0KKyAgICAKKyAgICBFeGl0RmxhZyBvcGVyYXRvcnwoY29uc3QgRXhpdEZsYWcmIG90aGVyKSBj
b25zdAorICAgIHsKKyAgICAgICAgRXhpdEZsYWcgcmVzdWx0OworICAgICAgICByZXN1bHQubV9i
aXRzID0gbV9iaXRzIHwgb3RoZXIubV9iaXRzOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0KKyAgICAKKyAgICBFeGl0RmxhZyYgb3BlcmF0b3J8PShjb25zdCBFeGl0RmxhZyYgb3RoZXIp
CisgICAgeworICAgICAgICAqdGhpcyA9ICp0aGlzIHwgb3RoZXI7CisgICAgICAgIHJldHVybiAq
dGhpczsKKyAgICB9CisgICAgCisgICAgRXhpdEZsYWcgb3BlcmF0b3ImKGNvbnN0IEV4aXRGbGFn
JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIEV4aXRGbGFnIHJlc3VsdDsKKyAgICAgICAg
cmVzdWx0Lm1fYml0cyA9IG1fYml0cyAmIG90aGVyLm1fYml0czsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisgICAgCisgICAgRXhpdEZsYWcmIG9wZXJhdG9yJj0oY29uc3QgRXhpdEZs
YWcmIG90aGVyKQorICAgIHsKKyAgICAgICAgKnRoaXMgPSAqdGhpcyAmIG90aGVyOworICAgICAg
ICByZXR1cm4gKnRoaXM7CisgICAgfQorICAgIAorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2wo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEhbV9iaXRzOworICAgIH0KKyAgICAKKyAg
ICBib29sIGlzU2V0KEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gISEoKnRoaXMgJiBFeGl0RmxhZyh0cnVlLCBpbmxpbmVLaW5kKSk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworICAgIAorcHJp
dmF0ZToKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgdHJ1ZU5vdElubGluZWQgPSAxOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCB0cnVlSW5saW5lZCA9IDI7CisgICAgCisgICAg
dWludDhfdCBtX2JpdHMgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRpbmdJbmxpbmVLaW5kLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtp
bmQuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9F
eGl0aW5nSW5saW5lS2luZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiRXhpdGluZ0lubGluZUtpbmQuaCIKKworI2luY2x1ZGUgPHd0Zi9Q
cmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsK
Kwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEV4aXRpbmdJbmxpbmVLaW5k
IHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBFeGl0RnJvbUFueUlubGlu
ZUtpbmQ6CisgICAgICAgIG91dC5wcmludCgiRnJvbUFueUlubGluZUtpbmQiKTsKKyAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgRXhpdEZyb21Ob3RJbmxpbmVkOgorICAgICAgICBvdXQucHJpbnQo
IkZyb21Ob3RJbmxpbmVkIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEV4aXRGcm9tSW5s
aW5lZDoKKyAgICAgICAgb3V0LnByaW50KCJGcm9tSW5saW5lZCIpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGlu
Z0lubGluZUtpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvRXhpdGluZ0lubGluZUtpbmQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgSlNDIHsKKworZW51bSBFeGl0aW5nSW5saW5lS2lu
ZCA6IHVpbnQ4X3QgeworICAgIEV4aXRGcm9tQW55SW5saW5lS2luZCwKKyAgICBFeGl0RnJvbU5v
dElubGluZWQsCisgICAgRXhpdEZyb21JbmxpbmVkLAorfTsKKworfSAvLyBuYW1lc3BhY2UgSlND
CisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBQcmludFN0cmVhbTsKK3ZvaWQgcHJpbnRJbnRl
cm5hbChQcmludFN0cmVhbSYsIEpTQzo6RXhpdGluZ0lubGluZUtpbmQpOworCit9IC8vIG5hbWVz
cGFjZSBXVEYKKworCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRC
eUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEs
MTYgKzUxLDYgQEAgYm9vbCBHZXRCeUlkU3RhdHVzOjphcHBlbmRWYXJpYW50KGNvbnN0IAogICAg
IHJldHVybiBhcHBlbmRJQ1N0YXR1c1ZhcmlhbnQobV92YXJpYW50cywgdmFyaWFudCk7CiB9CiAK
LSNpZiBFTkFCTEUoREZHX0pJVCkKLWJvb2wgR2V0QnlJZFN0YXR1czo6aGFzRXhpdFNpdGUoQ29k
ZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQotewotICAgIFVu
bGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IHByb2ZpbGVkQmxvY2stPnVubGlu
a2VkQ29kZUJsb2NrKCk7Ci0gICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcih1bmxpbmtlZENv
ZGVCbG9jay0+bV9sb2NrKTsKLSAgICByZXR1cm4gdW5saW5rZWRDb2RlQmxvY2stPmhhc0V4aXRT
aXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZENhY2hl
KSkKLSAgICAgICAgfHwgdW5saW5rZWRDb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZH
OjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZENvbnN0YW50Q2FjaGUpKTsKLX0K
LSNlbmRpZgotCiBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQo
Q29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBVbmlxdWVk
U3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNJiB2bSA9ICpwcm9maWxlZEJsb2NrLT52bSgpOwpA
QCAtMTA1LDcgKzk1LDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJv
bQogICAgIH0KIH0KIAotR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENv
ZGVCbG9jayogcHJvZmlsZWRCbG9jaywgU3R1YkluZm9NYXAmIG1hcCwgdW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK0dldEJ5SWRTdGF0dXMgR2V0QnlJZFN0
YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIElDU3RhdHVzTWFwJiBt
YXAsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIEV4aXRG
bGFnIGRpZEV4aXQsIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgY2FsbEV4aXRTaXRlRGF0
YSkKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHByb2ZpbGVkQmxvY2stPm1fbG9j
ayk7CiAKQEAgLTExMywxMiArMTAzLDExIEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6
Y29tcHV0ZUZvcigKIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIHJlc3VsdCA9IGNvbXB1dGVG
b3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAotICAgICAgICBsb2NrZXIsIHByb2Zp
bGVkQmxvY2ssIG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4KSksIHVpZCwKLSAgICAg
ICAgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVFeGl0U2l0ZURhdGEocHJvZmlsZWRCbG9jaywgYnl0
ZWNvZGVJbmRleCkpOworICAgICAgICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssIG1hcC5nZXQoQ29k
ZU9yaWdpbihieXRlY29kZUluZGV4KSkuc3R1YkluZm8sIHVpZCwKKyAgICAgICAgY2FsbEV4aXRT
aXRlRGF0YSk7CiAgICAgCi0gICAgaWYgKCFyZXN1bHQudGFrZXNTbG93UGF0aCgpCi0gICAgICAg
ICYmIGhhc0V4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpKQotICAgICAgICBy
ZXR1cm4gR2V0QnlJZFN0YXR1cyhyZXN1bHQubWFrZXNDYWxscygpID8gTWFrZXNDYWxscyA6IFRh
a2VzU2xvd1BhdGgsIHRydWUpOworICAgIGlmIChkaWRFeGl0KQorICAgICAgICByZXR1cm4gcmVz
dWx0LnNsb3dWZXJzaW9uKCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShtYXApOwogI2VuZGlm
CkBAIC0xMzYsOCArMTI1LDggQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRl
Rm9yUwogICAgICAgICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssIHN0dWJJbmZvLCB1aWQsCiAgICAg
ICAgIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKHByb2ZpbGVkQmxvY2ssIGNv
ZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkpOwogCi0gICAgaWYgKCFyZXN1bHQudGFrZXNTbG93UGF0
aCgpICYmIEdldEJ5SWRTdGF0dXM6Omhhc0V4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGNvZGVPcmln
aW4uYnl0ZWNvZGVJbmRleCkpCi0gICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKHJlc3VsdC5t
YWtlc0NhbGxzKCkgPyBHZXRCeUlkU3RhdHVzOjpNYWtlc0NhbGxzIDogR2V0QnlJZFN0YXR1czo6
VGFrZXNTbG93UGF0aCwgdHJ1ZSk7CisgICAgaWYgKCFyZXN1bHQudGFrZXNTbG93UGF0aCgpICYm
IGhhc0JhZENhY2hlRXhpdFNpdGUocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUlu
ZGV4KSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5zbG93VmVyc2lvbigpOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkBAIC0zMTQsNDAgKzMwMywzNSBA
QCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTCiAjZW5kaWYgLy8gRU5B
QkxFKEpJVCkKIAogR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAotICAg
IENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgQ29kZUJsb2NrKiBkZmdCbG9jaywgU3R1YkluZm9N
YXAmIGJhc2VsaW5lTWFwLAotICAgIFN0dWJJbmZvTWFwJiBkZmdNYXAsIENvZGVPcmlnaW4gY29k
ZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKKyAgICBDb2RlQmxvY2sqIHByb2ZpbGVk
QmxvY2ssIElDU3RhdHVzTWFwJiBiYXNlbGluZU1hcCwKKyAgICBJQ1N0YXR1c0NvbnRleHRTdGFj
ayYgaWNDb250ZXh0U3RhY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCkKIHsKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBpZiAoZGZnQmxvY2spIHsKLSAg
ICAgICAgQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0YSBleGl0U2l0ZURhdGE7Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jay0+
bV9sb2NrKTsKLSAgICAgICAgICAgIGV4aXRTaXRlRGF0YSA9IENhbGxMaW5rU3RhdHVzOjpjb21w
dXRlRXhpdFNpdGVEYXRhKAotICAgICAgICAgICAgICAgIHByb2ZpbGVkQmxvY2ssIGNvZGVPcmln
aW4uYnl0ZWNvZGVJbmRleCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIEdldEJ5SWRT
dGF0dXMgcmVzdWx0OwotICAgICAgICB7Ci0gICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIg
bG9ja2VyKGRmZ0Jsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgcmVzdWx0ID0gY29tcHV0ZUZv
clN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCi0gICAgICAgICAgICAgICAgbG9ja2Vy
LCBkZmdCbG9jaywgZGZnTWFwLmdldChjb2RlT3JpZ2luKSwgdWlkLCBleGl0U2l0ZURhdGEpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHJlc3VsdC50YWtlc1Nsb3dQYXRoKCkpCi0gICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgY2Fs
bEV4aXRTaXRlRGF0YSA9CisgICAgICAgIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVE
YXRhKHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7CisgICAgRXhpdEZs
YWcgZGlkRXhpdCA9IGhhc0JhZENhY2hlRXhpdFNpdGUocHJvZmlsZWRCbG9jaywgY29kZU9yaWdp
bi5ieXRlY29kZUluZGV4KTsKICAgICAKLSAgICAgICAgaWYgKGhhc0V4aXRTaXRlKHByb2ZpbGVk
QmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkpCi0gICAgICAgICAgICByZXR1cm4gR2V0
QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCB0cnVlKTsKKyAgICBmb3IgKElDU3RhdHVzQ29udGV4
dCogY29udGV4dCA6IGljQ29udGV4dFN0YWNrKSB7CisgICAgICAgIElDU3RhdHVzIHN0YXR1cyA9
IGNvbnRleHQtPmdldChjb2RlT3JpZ2luKTsKICAgICAgICAgCi0gICAgICAgIGlmIChyZXN1bHQu
aXNTZXQoKSkKKyAgICAgICAgYXV0byB3aXRoRXhpdHMgPSBbJl0gKGNvbnN0IEdldEJ5SWRTdGF0
dXMmIHJlc3VsdCkgLT4gR2V0QnlJZFN0YXR1cyB7CisgICAgICAgICAgICBpZiAoZGlkRXhpdC5p
c1NldChjb2RlT3JpZ2luLmV4aXRpbmdJbmxpbmVLaW5kKCkpKQorICAgICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQuc2xvd1ZlcnNpb24oKTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0g
ICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZGZnQmxvY2spOwotICAgIFVOVVNFRF9QQVJB
TShkZmdNYXApOwotI2VuZGlmCisgICAgICAgIH07CiAKLSAgICByZXR1cm4gY29tcHV0ZUZvcihw
cm9maWxlZEJsb2NrLCBiYXNlbGluZU1hcCwgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCB1aWQp
OworICAgICAgICBpZiAoc3RhdHVzLnN0dWJJbmZvKSB7CisgICAgICAgICAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKGNvbnRleHQtPm9wdGltaXplZENvZGVCbG9jay0+bV9sb2NrKTsKKyAg
ICAgICAgICAgIEdldEJ5SWRTdGF0dXMgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91
dEV4aXRTaXRlRmVlZGJhY2soCisgICAgICAgICAgICAgICAgbG9ja2VyLCBjb250ZXh0LT5vcHRp
bWl6ZWRDb2RlQmxvY2ssIHN0YXR1cy5zdHViSW5mbywgdWlkLCBjYWxsRXhpdFNpdGVEYXRhKTsK
KyAgICAgICAgICAgIGlmIChyZXN1bHQuaXNTZXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
d2l0aEV4aXRzKHJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChzdGF0
dXMuZ2V0U3RhdHVzKQorICAgICAgICAgICAgcmV0dXJuIHdpdGhFeGl0cygqc3RhdHVzLmdldFN0
YXR1cyk7CisgICAgfQorICAgICAgICAKKyAgICByZXR1cm4gY29tcHV0ZUZvcihwcm9maWxlZEJs
b2NrLCBiYXNlbGluZU1hcCwgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCB1aWQsIGRpZEV4aXQs
IGNhbGxFeGl0U2l0ZURhdGEpOwogfQogCiBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNv
bXB1dGVGb3IoY29uc3QgU3RydWN0dXJlU2V0JiBzZXQsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQp
CkBAIC00MTQsNiArMzk4LDExIEBAIGJvb2wgR2V0QnlJZFN0YXR1czo6bWFrZXNDYWxscygpIGNv
bnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6
OnNsb3dWZXJzaW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhtYWtlc0Nh
bGxzKCkgPyBNYWtlc0NhbGxzIDogVGFrZXNTbG93UGF0aCwgd2FzU2VlbkluSklUKCkpOworfQor
CiB2b2lkIEdldEJ5SWRTdGF0dXM6OmZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCkKIHsK
ICAgICBpZiAobV9zdGF0ZSAhPSBTaW1wbGUpCkBAIC00MjMsNiArNDEyLDI1IEBAIHZvaWQgR2V0
QnlJZFN0YXR1czo6ZmlsdGVyKGNvbnN0IFN0cnVjdHUKICAgICAgICAgbV9zdGF0ZSA9IE5vSW5m
b3JtYXRpb247CiB9CiAKK3ZvaWQgR2V0QnlJZFN0YXR1czo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit7CisgICAgZm9yIChHZXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IG1fdmFy
aWFudHMpCisgICAgICAgIHZhcmlhbnQubWFya0lmQ2hlYXAodmlzaXRvcik7Cit9CisKK2Jvb2wg
R2V0QnlJZFN0YXR1czo6ZmluYWxpemUoKQoreworICAgIGZvciAoR2V0QnlJZFZhcmlhbnQmIHZh
cmlhbnQgOiBtX3ZhcmlhbnRzKSB7CisgICAgICAgIGlmICghdmFyaWFudC5maW5hbGl6ZSgpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAobV9tb2R1bGVOYW1lc3Bh
Y2VPYmplY3QgJiYgIUhlYXA6OmlzTWFya2VkKG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0KSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX21vZHVsZUVudmlyb25tZW50ICYmICFIZWFw
Ojppc01hcmtlZChtX21vZHVsZUVudmlyb25tZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIEdldEJ5SWRTdGF0dXM6OmR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3QKIHsKICAgICBvdXQucHJpbnQoIigiKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAkocmV2aXNpb24gMjMyMjI3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMjgsNyArMjgsOSBAQAogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgi
CiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIK
KyNpbmNsdWRlICJFeGl0RmxhZy5oIgogI2luY2x1ZGUgIkdldEJ5SWRWYXJpYW50LmgiCisjaW5j
bHVkZSAiSUNTdGF0dXNNYXAuaCIKICNpbmNsdWRlICJTY29wZU9mZnNldC5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKQEAgLTQwLDggKzQyLDYgQEAgY2xhc3MgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q7
CiBjbGFzcyBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOwogY2xhc3MgU3RydWN0dXJlU3R1Yklu
Zm87CiAKLXR5cGVkZWYgSGFzaE1hcDxDb2RlT3JpZ2luLCBTdHJ1Y3R1cmVTdHViSW5mbyosIENv
ZGVPcmlnaW5BcHByb3hpbWF0ZUhhc2g+IFN0dWJJbmZvTWFwOwotCiBjbGFzcyBHZXRCeUlkU3Rh
dHVzIHsKIHB1YmxpYzoKICAgICBlbnVtIFN0YXRlIHsKQEAgLTgxLDEwICs4MSwxMCBAQCBwdWJs
aWM6CiAgICAgICAgIG1fdmFyaWFudHMuYXBwZW5kKHZhcmlhbnQpOwogICAgIH0KICAgICAKLSAg
ICBzdGF0aWMgR2V0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIFN0dWJJbmZvTWFw
JiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7CisgICAg
c3RhdGljIEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCBJQ1N0YXR1c01hcCYs
IHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIEV4aXRGbGFn
LCBDYWxsTGlua1N0YXR1czo6RXhpdFNpdGVEYXRhKTsKICAgICBzdGF0aWMgR2V0QnlJZFN0YXR1
cyBjb21wdXRlRm9yKGNvbnN0IFN0cnVjdHVyZVNldCYsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQp
OwogICAgIAotICAgIHN0YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBi
YXNlbGluZUJsb2NrLCBDb2RlQmxvY2sqIGRmZ0Jsb2NrLCBTdHViSW5mb01hcCYgYmFzZWxpbmVN
YXAsIFN0dWJJbmZvTWFwJiBkZmdNYXAsIENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQpOworICAgIHN0YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNl
bGluZUJsb2NrLCBJQ1N0YXR1c01hcCYgYmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4dFN0YWNr
JiBkZmdDb250ZXh0U3RhY2ssIENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwog
CiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgc3RhdGljIEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZv
clN0dWJJbmZvKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayogYmFzZWxpbmVC
bG9jaywgU3RydWN0dXJlU3R1YkluZm8qLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCog
dWlkKTsKQEAgLTEwNiw2ICsxMDYsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCB0YWtlc1Nsb3dQYXRo
KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBUYWtlc1Nsb3dQYXRoIHx8IG1fc3RhdGUgPT0g
TWFrZXNDYWxscyB8fCBtX3N0YXRlID09IEN1c3RvbSB8fCBtX3N0YXRlID09IE1vZHVsZU5hbWVz
cGFjZTsgfQogICAgIGJvb2wgbWFrZXNDYWxscygpIGNvbnN0OwogICAgIAorICAgIEdldEJ5SWRT
dGF0dXMgc2xvd1ZlcnNpb24oKSBjb25zdDsKKyAgICAKICAgICBib29sIHdhc1NlZW5JbkpJVCgp
IGNvbnN0IHsgcmV0dXJuIG1fd2FzU2VlbkluSklUOyB9CiAgICAgCiAgICAgLy8gQXR0ZW1wdHMg
dG8gcmVkdWNlIHRoZSBzZXQgb2YgdmFyaWFudHMgdG8gZml0IHRoZSBnaXZlbiBzdHJ1Y3R1cmUg
c2V0LiBUaGlzIG1heSBiZSBhcHByb3hpbWF0ZS4KQEAgLTExNSwxMiArMTE3LDEyIEBAIHB1Ymxp
YzoKICAgICBKU01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fbW9kdWxlRW52aXJvbm1lbnQ7IH0KICAgICBTY29wZU9mZnNldCBzY29wZU9mZnNl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVPZmZzZXQ7IH0KICAgICAKKyAgICB2b2lkIG1hcmtJ
ZkNoZWFwKFNsb3RWaXNpdG9yJik7CisgICAgYm9vbCBmaW5hbGl6ZSgpOyAvLyBSZXR1cm4gdHJ1
ZSBpZiB0aGlzIGdldHMgdG8gbGl2ZS4KKyAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0m
KSBjb25zdDsKICAgICAKIHByaXZhdGU6Ci0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAgc3RhdGlj
IGJvb2wgaGFzRXhpdFNpdGUoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7Ci0j
ZW5kaWYKICNpZiBFTkFCTEUoSklUKQogICAgIEdldEJ5SWRTdGF0dXMoY29uc3QgTW9kdWxlTmFt
ZXNwYWNlQWNjZXNzQ2FzZSYpOwogICAgIHN0YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVGb3JT
dHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCShyZXZpc2lvbiAyMzIyMjcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzUsNiArMTM1LDI0IEBAIGJvb2wgR2V0QnlJZFZhcmlhbnQ6OmF0
dGVtcHRUb01lcmdlKGNvbnMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBHZXRCeUlkVmFy
aWFudDo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgbV9zdHJ1Y3R1
cmVTZXQubWFya0lmQ2hlYXAodmlzaXRvcik7Cit9CisKK2Jvb2wgR2V0QnlJZFZhcmlhbnQ6OmZp
bmFsaXplKCkKK3sKKyAgICBpZiAoIW1fc3RydWN0dXJlU2V0LmlzU3RpbGxBbGl2ZSgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX2NvbmRpdGlvblNldC5hcmVTdGlsbExpdmUo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2NhbGxMaW5rU3RhdHVzICYmICFt
X2NhbGxMaW5rU3RhdHVzLT5maW5hbGl6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKG1faW50cmluc2ljRnVuY3Rpb24gJiYgIUhlYXA6OmlzTWFya2VkKG1faW50cmluc2ljRnVu
Y3Rpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZv
aWQgR2V0QnlJZFZhcmlhbnQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBk
dW1wSW5Db250ZXh0KG91dCwgMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvR2V0QnlJZFZhcmlhbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTczLDYgKzczLDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBhdHRlbXB0VG9NZXJnZShjb25zdCBH
ZXRCeUlkVmFyaWFudCYgb3RoZXIpOwogICAgIAorICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZp
c2l0b3ImKTsKKyAgICBib29sIGZpbmFsaXplKCk7CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50
U3RyZWFtJikgY29uc3Q7CiAgICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVt
cENvbnRleHQqKSBjb25zdDsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JQ1N0YXR1c01hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0lDU3RhdHVzTWFwLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCisKKyNpbmNsdWRl
ICJJbmxpbmVDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJUZXJtaW5hdGVkQ29kZU9yaWdpbi5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworSUNTdGF0dXMgSUNTdGF0dXNDb250ZXh0OjpnZXQoQ29kZU9y
aWdpbiBjb2RlT3JpZ2luKSBjb25zdAoreworICAgIHJldHVybiBtYXAuZ2V0PFRlcm1pbmF0ZWRD
b2RlT3JpZ2luSGFzaFRyYW5zbGF0b3I+KAorICAgICAgICBUZXJtaW5hdGVkQ29kZU9yaWdpbihj
b2RlT3JpZ2luLCBpbmxpbmVDYWxsRnJhbWUpKTsKK30KKworYm9vbCBJQ1N0YXR1c0NvbnRleHQ6
OmlzSW5saW5lZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4pIGNvbnN0Cit7CisgICAgcmV0dXJuIGNv
ZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lICYmIGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lICE9
IGlubGluZUNhbGxGcmFtZTsKK30KKworRXhpdGluZ0lubGluZUtpbmQgSUNTdGF0dXNDb250ZXh0
OjppbmxpbmVLaW5kKENvZGVPcmlnaW4gY29kZU9yaWdpbikgY29uc3QKK3sKKyAgICByZXR1cm4g
aXNJbmxpbmVkKGNvZGVPcmlnaW4pID8gRXhpdEZyb21JbmxpbmVkIDogRXhpdEZyb21Ob3RJbmxp
bmVkOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFwLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKKyNpbmNsdWRlICJFeGl0
aW5nSW5saW5lS2luZC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBDYWxsTGlua0luZm87CitjbGFzcyBDYWxsTGlua1N0YXR1czsKK2NsYXNz
IENvZGVCbG9jazsKK2NsYXNzIEdldEJ5SWRTdGF0dXM7CitjbGFzcyBQdXRCeUlkU3RhdHVzOwor
Y2xhc3MgU3RydWN0dXJlU3R1YkluZm87CitzdHJ1Y3QgQnlWYWxJbmZvOworCitzdHJ1Y3QgSUNT
dGF0dXMgeworICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyB7IG51bGxwdHIgfTsKKyAg
ICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyB7IG51bGxwdHIgfTsKKyAgICBCeVZhbEluZm8q
IGJ5VmFsSW5mbyB7IG51bGxwdHIgfTsKKyAgICBDYWxsTGlua1N0YXR1cyogY2FsbFN0YXR1cyB7
IG51bGxwdHIgfTsKKyAgICBHZXRCeUlkU3RhdHVzKiBnZXRTdGF0dXMgeyBudWxscHRyIH07Cisg
ICAgUHV0QnlJZFN0YXR1cyogcHV0U3RhdHVzIHsgbnVsbHB0ciB9OworfTsKKwordHlwZWRlZiBI
YXNoTWFwPENvZGVPcmlnaW4sIElDU3RhdHVzLCBDb2RlT3JpZ2luQXBwcm94aW1hdGVIYXNoPiBJ
Q1N0YXR1c01hcDsKKworc3RydWN0IElDU3RhdHVzQ29udGV4dCB7CisgICAgSUNTdGF0dXMgZ2V0
KENvZGVPcmlnaW4pIGNvbnN0OworICAgIGJvb2wgaXNJbmxpbmVkKENvZGVPcmlnaW4pIGNvbnN0
OworICAgIEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQoQ29kZU9yaWdpbikgY29uc3Q7Cisg
ICAgCisgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgeyBudWxscHRyIH07Cisg
ICAgQ29kZUJsb2NrKiBvcHRpbWl6ZWRDb2RlQmxvY2sgeyBudWxscHRyIH07CisgICAgSUNTdGF0
dXNNYXAgbWFwOworfTsKKwordHlwZWRlZiBWZWN0b3I8SUNTdGF0dXNDb250ZXh0KiwgOD4gSUNT
dGF0dXNDb250ZXh0U3RhY2s7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNVdGlscy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzVXRpbHMuY3BwCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c1V0aWxzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJ
Q1N0YXR1c1V0aWxzLmgiCisKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJFeGl0
RmxhZy5oIgorI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitFeGl0RmxhZyBoYXNCYWRDYWNoZUV4aXRTaXRlKENvZGVCbG9jayogcHJvZmlsZWRCbG9j
aywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKK3sKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICBV
bmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBwcm9maWxlZEJsb2NrLT51bmxp
bmtlZENvZGVCbG9jaygpOworICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIodW5saW5rZWRD
b2RlQmxvY2stPm1fbG9jayk7CisgICAgYXV0byBleGl0RmxhZyA9IFsmXSAoRXhpdEtpbmQgZXhp
dEtpbmQpIC0+IEV4aXRGbGFnIHsKKyAgICAgICAgYXV0byB3aXRoSW5saW5lZCA9IFsmXSAoRXhp
dGluZ0lubGluZUtpbmQgaW5saW5lS2luZCkgLT4gRXhpdEZsYWcgeworICAgICAgICAgICAgcmV0
dXJuIEV4aXRGbGFnKHVubGlua2VkQ29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6
RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBleGl0S2luZCwgRXhpdEZyb21Bbnl0aGlu
ZywgaW5saW5lS2luZCkpLCBpbmxpbmVLaW5kKTsKKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJu
IHdpdGhJbmxpbmVkKEV4aXRGcm9tTm90SW5saW5lZCkgfCB3aXRoSW5saW5lZChFeGl0RnJvbUlu
bGluZWQpOworICAgIH07CisgICAgcmV0dXJuIGV4aXRGbGFnKEJhZENhY2hlKSB8IGV4aXRGbGFn
KEJhZENvbnN0YW50Q2FjaGUpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9j
ayk7CisgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOworICAgIHJldHVybiBFeGl0Rmxh
ZygpOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNVdGlscy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c1V0aWxzLmgJKHJldmlzaW9uIDIzMjIy
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c1V0aWxzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
ICJFeGl0RmxhZy5oIgorCiBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVmFy
aWFudFZlY3RvclR5cGUsIHR5cGVuYW1lIFZhcmlhbnRUeXBlPgpAQCAtNTksNSArNjEsNyBAQCB2
b2lkIGZpbHRlcklDU3RhdHVzVmFyaWFudHMoVmFyaWFudFZlY3RvCiAgICAgICAgIH0pOwogfQog
CitFeGl0RmxhZyBoYXNCYWRDYWNoZUV4aXRTaXRlKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywg
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMu
Y3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5zdGFuY2VPZlN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEzICszOSwxMyBAQCB2
b2lkIEluc3RhbmNlT2ZTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uCiB9CiAKIEluc3RhbmNlT2ZT
dGF0dXMgSW5zdGFuY2VPZlN0YXR1czo6Y29tcHV0ZUZvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgU3R1YkluZm9NYXAmIGluZm9NYXAsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIElDU3RhdHVzTWFwJiBpbmZvTWFwLCB1bnNpZ25lZCBieXRl
Y29kZUluZGV4KQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5t
X2xvY2spOwogICAgIAogICAgIEluc3RhbmNlT2ZTdGF0dXMgcmVzdWx0OwogI2lmIEVOQUJMRShE
RkdfSklUKQotICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mbyhsb2NrZXIsIGluZm9NYXAu
Z2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkpKTsKKyAgICByZXN1bHQgPSBjb21wdXRlRm9y
U3R1YkluZm8obG9ja2VyLCBpbmZvTWFwLmdldChDb2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgpKS5z
dHViSW5mbyk7CiAKICAgICBpZiAoIXJlc3VsdC50YWtlc1Nsb3dQYXRoKCkpIHsKICAgICAgICAg
VW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gY29kZUJsb2NrLT51bmxpbmtl
ZENvZGVCbG9jaygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3Rh
bmNlT2ZTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSW5zdGFuY2VPZlN0YXR1cy5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAiQ29uY3Vy
cmVudEpTTG9jay5oIgorI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCiAjaW5jbHVkZSAiSW5zdGFu
Y2VPZlZhcmlhbnQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zNSw4ICszNiw2IEBAIGNsYXNz
IEFjY2Vzc0Nhc2U7CiBjbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsK
IAotdHlwZWRlZiBIYXNoTWFwPENvZGVPcmlnaW4sIFN0cnVjdHVyZVN0dWJJbmZvKiwgQ29kZU9y
aWdpbkFwcHJveGltYXRlSGFzaD4gU3R1YkluZm9NYXA7Ci0KIGNsYXNzIEluc3RhbmNlT2ZTdGF0
dXMgewogcHVibGljOgogICAgIGVudW0gU3RhdGUgewpAQCAtNjEsNyArNjAsNyBAQCBwdWJsaWM6
CiAgICAgICAgIEFTU0VSVChzdGF0ZSA9PSBOb0luZm9ybWF0aW9uIHx8IHN0YXRlID09IFRha2Vz
U2xvd1BhdGgpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgSW5zdGFuY2VPZlN0YXR1cyBjb21w
dXRlRm9yKENvZGVCbG9jayosIFN0dWJJbmZvTWFwJiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7
CisgICAgc3RhdGljIEluc3RhbmNlT2ZTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCBJQ1N0
YXR1c01hcCYsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwogICAgIAogI2lmIEVOQUJMRShERkdf
SklUKQogICAgIHN0YXRpYyBJbnN0YW5jZU9mU3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mbyhjb25z
dCBDb25jdXJyZW50SlNMb2NrZXImLCBTdHJ1Y3R1cmVTdHViSW5mbyopOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWlu
LmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5UHJvdG9BY2Nlc3NDaGFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBKU0NlbGw7CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsK
IGNsYXNzIEpTT2JqZWN0OwogY2xhc3MgUHJvcGVydHlTbG90OwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMjMy
MjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgi
CiAjaW5jbHVkZSAiQ29tcGxleEdldFN0YXR1cy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlckFj
Y2Vzc0Nhc2UuaCIKKyNpbmNsdWRlICJJQ1N0YXR1c1V0aWxzLmgiCiAjaW5jbHVkZSAiTExJbnRE
YXRhLmgiCiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKQEAgLTU1LDEyICs1Niw5IEBAIGJvb2wgUHV0QnlJZFN0YXR1czo6YXBwZW5kVmFy
aWFudChjb25zdCAKIH0KIAogI2lmIEVOQUJMRShERkdfSklUKQotYm9vbCBQdXRCeUlkU3RhdHVz
OjpoYXNFeGl0U2l0ZShDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2Rl
SW5kZXgpCitFeGl0RmxhZyBQdXRCeUlkU3RhdHVzOjpoYXNFeGl0U2l0ZShDb2RlQmxvY2sqIHBy
b2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiB7Ci0gICAgVW5saW5rZWRDb2Rl
QmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gcHJvZmlsZWRCbG9jay0+dW5saW5rZWRDb2RlQmxv
Y2soKTsKLSAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHVubGlua2VkQ29kZUJsb2NrLT5t
X2xvY2spOwotICAgIHJldHVybiB1bmxpbmtlZENvZGVCbG9jay0+aGFzRXhpdFNpdGUobG9ja2Vy
LCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkQ2FjaGUpKQotICAgICAg
ICB8fCB1bmxpbmtlZENvZGVCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50
RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkQ29uc3RhbnRDYWNoZSkpOworICAgIHJldHVybiBo
YXNCYWRDYWNoZUV4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpOwogfQogI2Vu
ZGlmCiAKQEAgLTExMCw3ICsxMDgsNyBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNv
bXB1dGVGcm9tCiAgICAgICAgIHN0cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBjb25kaXRpb25TZXQs
IG9mZnNldCwgbmV3U3RydWN0dXJlLT5pbmZlcnJlZFR5cGVEZXNjcmlwdG9yRm9yKHVpZCkpOwog
fQogCi1QdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBw
cm9maWxlZEJsb2NrLCBTdHViSW5mb01hcCYgbWFwLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBV
bmlxdWVkU3RyaW5nSW1wbCogdWlkKQorUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21w
dXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgSUNTdGF0dXNNYXAmIG1hcCwgdW5zaWdu
ZWQgYnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgRXhpdEZsYWcgZGlkRXhp
dCwgQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0YSBjYWxsRXhpdFNpdGVEYXRhKQogewogICAg
IENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKICAgICAK
QEAgLTExOCwxMyArMTE2LDEyIEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0
ZUZvcigKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAgICAgVU5VU0VEX1BBUkFN
KHVpZCk7CiAjaWYgRU5BQkxFKERGR19KSVQpCi0gICAgaWYgKGhhc0V4aXRTaXRlKHByb2ZpbGVk
QmxvY2ssIGJ5dGVjb2RlSW5kZXgpKQorICAgIGlmIChkaWRFeGl0KQogICAgICAgICByZXR1cm4g
UHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKICAgICAKLSAgICBTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8gPSBtYXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkpOworICAgIFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA9IG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUlu
ZGV4KSkuc3R1YkluZm87CiAgICAgUHV0QnlJZFN0YXR1cyByZXN1bHQgPSBjb21wdXRlRm9yU3R1
YkluZm8oCi0gICAgICAgIGxvY2tlciwgcHJvZmlsZWRCbG9jaywgc3R1YkluZm8sIHVpZCwKLSAg
ICAgICAgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVFeGl0U2l0ZURhdGEocHJvZmlsZWRCbG9jaywg
Ynl0ZWNvZGVJbmRleCkpOworICAgICAgICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssIHN0dWJJbmZv
LCB1aWQsIGNhbGxFeGl0U2l0ZURhdGEpOwogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1
cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCB1aWQpOwog
ICAgIApAQCAtMjY0LDM4ICsyNjEsMzQgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpj
b21wdXRlRm9yUwogfQogI2VuZGlmCiAKLVB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29t
cHV0ZUZvcihDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIENvZGVCbG9jayogZGZnQmxvY2ssIFN0
dWJJbmZvTWFwJiBiYXNlbGluZU1hcCwgU3R1YkluZm9NYXAmIGRmZ01hcCwgQ29kZU9yaWdpbiBj
b2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQorUHV0QnlJZFN0YXR1cyBQdXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAm
IGJhc2VsaW5lTWFwLCBJQ1N0YXR1c0NvbnRleHRTdGFjayYgY29udGV4dFN0YWNrLCBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7Ci0jaWYgRU5BQkxFKERG
R19KSVQpCi0gICAgaWYgKGRmZ0Jsb2NrKSB7Ci0gICAgICAgIGlmIChoYXNFeGl0U2l0ZShiYXNl
bGluZUJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpKQotICAgICAgICAgICAgcmV0dXJu
IFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCk7Ci0gICAgICAgIENhbGxMaW5rU3RhdHVzOjpF
eGl0U2l0ZURhdGEgZXhpdFNpdGVEYXRhOwotICAgICAgICB7Ci0gICAgICAgICAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKGJhc2VsaW5lQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICBl
eGl0U2l0ZURhdGEgPSBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YSgKLSAgICAg
ICAgICAgICAgICBiYXNlbGluZUJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpOwotICAg
ICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgUHV0QnlJZFN0YXR1cyByZXN1bHQ7Ci0gICAg
ICAgIHsKLSAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoZGZnQmxvY2stPm1f
bG9jayk7Ci0gICAgICAgICAgICByZXN1bHQgPSBjb21wdXRlRm9yU3R1YkluZm8oCi0gICAgICAg
ICAgICAgICAgbG9ja2VyLCBkZmdCbG9jaywgZGZnTWFwLmdldChjb2RlT3JpZ2luKSwgdWlkLCBl
eGl0U2l0ZURhdGEpOworICAgIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgY2FsbEV4aXRT
aXRlRGF0YSA9CisgICAgICAgIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKGJh
c2VsaW5lQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7CisgICAgRXhpdEZsYWcgZGlk
RXhpdCA9IGhhc0V4aXRTaXRlKGJhc2VsaW5lQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRl
eCk7CisgICAgCisgICAgZm9yIChJQ1N0YXR1c0NvbnRleHQqIGNvbnRleHQgOiBjb250ZXh0U3Rh
Y2spIHsKKyAgICAgICAgSUNTdGF0dXMgc3RhdHVzID0gY29udGV4dC0+Z2V0KGNvZGVPcmlnaW4p
OworICAgICAgICAKKyAgICAgICAgYXV0byB3aXRoRXhpdHMgPSBbJl0gKGNvbnN0IFB1dEJ5SWRT
dGF0dXMmIHJlc3VsdCkgLT4gUHV0QnlJZFN0YXR1cyB7CisgICAgICAgICAgICBpZiAoZGlkRXhp
dC5pc1NldChjb2RlT3JpZ2luLmV4aXRpbmdJbmxpbmVLaW5kKCkpKQorICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQuc2xvd1ZlcnNpb24oKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICBpZiAoc3RhdHVzLnN0dWJJbmZvKSB7Cisg
ICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvbnRleHQtPm9wdGltaXplZENv
ZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgIFB1dEJ5SWRTdGF0dXMgcmVzdWx0ID0gY29t
cHV0ZUZvclN0dWJJbmZvKAorICAgICAgICAgICAgICAgIGxvY2tlciwgY29udGV4dC0+b3B0aW1p
emVkQ29kZUJsb2NrLCBzdGF0dXMuc3R1YkluZm8sIHVpZCwgY2FsbEV4aXRTaXRlRGF0YSk7Cisg
ICAgICAgICAgICBpZiAocmVzdWx0LmlzU2V0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHdp
dGhFeGl0cyhyZXN1bHQpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICAvLyBXZSB1c2Ug
VGFrZXNTbG93UGF0aCBpbiBzb21lIGNhc2VzIHdoZXJlIHRoZSBzdHViIHdhcyB1bnNldC4gVGhh
dCdzIHdlaXJkIGFuZAotICAgICAgICAvLyBpdCB3b3VsZCBiZSBiZXR0ZXIgbm90IHRvIGRvIHRo
YXQuIEJ1dCBpdCBtZWFucyB0aGF0IHdlIGhhdmUgdG8gZGVmZW5kCi0gICAgICAgIC8vIG91cnNl
bHZlcyBoZXJlLgotICAgICAgICBpZiAocmVzdWx0LmlzU2ltcGxlKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgICAgICBpZiAoc3RhdHVzLnB1dFN0YXR1cykKKyAgICAgICAgICAg
IHJldHVybiB3aXRoRXhpdHMoKnN0YXR1cy5wdXRTdGF0dXMpOwogICAgIH0KLSNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKGRmZ0Jsb2NrKTsKLSAgICBVTlVTRURfUEFSQU0oZGZnTWFwKTsKLSNlbmRp
ZgogCi0gICAgcmV0dXJuIGNvbXB1dGVGb3IoYmFzZWxpbmVCbG9jaywgYmFzZWxpbmVNYXAsIGNv
ZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgdWlkKTsKKyAgICByZXR1cm4gY29tcHV0ZUZvcihiYXNl
bGluZUJsb2NrLCBiYXNlbGluZU1hcCwgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCB1aWQsIGRp
ZEV4aXQsIGNhbGxFeGl0U2l0ZURhdGEpOwogfQogCiBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0
dXM6OmNvbXB1dGVGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RydWN0
dXJlU2V0JiBzZXQsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIGJvb2wgaXNEaXJlY3QpCkBAIC0z
OTgsNiArMzkxLDM1IEBAIGJvb2wgUHV0QnlJZFN0YXR1czo6bWFrZXNDYWxscygpIGNvbnN0CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCitQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OnNsb3dW
ZXJzaW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhtYWtlc0NhbGxzKCkg
PyBNYWtlc0NhbGxzIDogVGFrZXNTbG93UGF0aCk7Cit9CisKK3ZvaWQgUHV0QnlJZFN0YXR1czo6
bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgZm9yIChQdXRCeUlkVmFy
aWFudCYgdmFyaWFudCA6IG1fdmFyaWFudHMpCisgICAgICAgIHZhcmlhbnQubWFya0lmQ2hlYXAo
dmlzaXRvcik7Cit9CisKK2Jvb2wgUHV0QnlJZFN0YXR1czo6ZmluYWxpemUoKQoreworICAgIGZv
ciAoUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKSB7CisgICAgICAgIGlmICgh
dmFyaWFudC5maW5hbGl6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBQdXRCeUlkU3RhdHVzOjpmaWx0ZXIoY29uc3QgU3Ry
dWN0dXJlU2V0JiBzZXQpCit7CisgICAgaWYgKG1fc3RhdGUgIT0gU2ltcGxlKQorICAgICAgICBy
ZXR1cm47CisgICAgZmlsdGVySUNTdGF0dXNWYXJpYW50cyhtX3ZhcmlhbnRzLCBzZXQpOworICAg
IGlmIChtX3ZhcmlhbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgbV9zdGF0ZSA9IE5vSW5mb3JtYXRp
b247Cit9CisKIHZvaWQgUHV0QnlJZFN0YXR1czo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dAogewogICAgIHN3aXRjaCAobV9zdGF0ZSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw2ICsyNiw4IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNhbGxMaW5rU3Rh
dHVzLmgiCisjaW5jbHVkZSAiRXhpdEZsYWcuaCIKKyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgog
I2luY2x1ZGUgIlB1dEJ5SWRWYXJpYW50LmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNjksMTAg
KzcxLDEwIEBAIHB1YmxpYzoKICAgICAgICAgbV92YXJpYW50cy5hcHBlbmQodmFyaWFudCk7CiAg
ICAgfQogICAgIAotICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2Nr
KiwgU3R1YkluZm9NYXAmLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1w
bCogdWlkKTsKKyAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayos
IElDU3RhdHVzTWFwJiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwq
IHVpZCwgRXhpdEZsYWcsIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEpOwogICAgIHN0YXRp
YyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJ1Y3R1
cmVTZXQmLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBib29sIGlzRGlyZWN0KTsKICAgICAKLSAg
ICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9j
aywgQ29kZUJsb2NrKiBkZmdCbG9jaywgU3R1YkluZm9NYXAmIGJhc2VsaW5lTWFwLCBTdHViSW5m
b01hcCYgZGZnTWFwLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKKyAgICBz
dGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywg
SUNTdGF0dXNNYXAmIGJhc2VsaW5lTWFwLCBJQ1N0YXR1c0NvbnRleHRTdGFjayYgY29udGV4dFN0
YWNrLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKIAogI2lmIEVOQUJMRShK
SVQpCiAgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvclN0dWJJbmZvKGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgU3RydWN0dXJlU3R1
YkluZm8qLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKQEAgLTg1LDE3ICs4
NywyMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1NpbXBsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGUgPT0gU2ltcGxlOyB9CiAgICAgYm9vbCB0YWtlc1Nsb3dQYXRoKCkgY29uc3QgeyByZXR1cm4g
bV9zdGF0ZSA9PSBUYWtlc1Nsb3dQYXRoIHx8IG1fc3RhdGUgPT0gTWFrZXNDYWxsczsgfQogICAg
IGJvb2wgbWFrZXNDYWxscygpIGNvbnN0OworICAgIFB1dEJ5SWRTdGF0dXMgc2xvd1ZlcnNpb24o
KSBjb25zdDsKICAgICAKICAgICBzaXplX3QgbnVtVmFyaWFudHMoKSBjb25zdCB7IHJldHVybiBt
X3ZhcmlhbnRzLnNpemUoKTsgfQogICAgIGNvbnN0IFZlY3RvcjxQdXRCeUlkVmFyaWFudCwgMT4m
IHZhcmlhbnRzKCkgY29uc3QgeyByZXR1cm4gbV92YXJpYW50czsgfQogICAgIGNvbnN0IFB1dEJ5
SWRWYXJpYW50JiBhdChzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFudHNbaW5k
ZXhdOyB9CiAgICAgY29uc3QgUHV0QnlJZFZhcmlhbnQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4
KSBjb25zdCB7IHJldHVybiBhdChpbmRleCk7IH0KICAgICAKKyAgICB2b2lkIG1hcmtJZkNoZWFw
KFNsb3RWaXNpdG9yJik7CisgICAgYm9vbCBmaW5hbGl6ZSgpOworICAgIHZvaWQgZmlsdGVyKGNv
bnN0IFN0cnVjdHVyZVNldCYpOworICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNv
bnN0OwogICAgIAogcHJpdmF0ZToKICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBzdGF0aWMgYm9v
bCBoYXNFeGl0U2l0ZShDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKyAgICBz
dGF0aWMgRXhpdEZsYWcgaGFzRXhpdFNpdGUoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoSklUKQogICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVz
IGNvbXB1dGVGb3JTdHViSW5mbygKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QdXRCeUlkVmFyaWFudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yMDYsNiArMjA2LDI2IEBAIGJvb2wgUHV0QnlJZFZhcmlhbnQ6OmF0dGVtcHRUb01l
cmdlVHJhbnMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBQdXRCeUlkVmFyaWFudDo6bWFy
a0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgbV9vbGRTdHJ1Y3R1cmUubWFy
a0lmQ2hlYXAodmlzaXRvcik7CisgICAgaWYgKG1fbmV3U3RydWN0dXJlKQorICAgICAgICBtX25l
d1N0cnVjdHVyZS0+bWFya0lmQ2hlYXAodmlzaXRvcik7Cit9CisKK2Jvb2wgUHV0QnlJZFZhcmlh
bnQ6OmZpbmFsaXplKCkKK3sKKyAgICBpZiAoIW1fb2xkU3RydWN0dXJlLmlzU3RpbGxBbGl2ZSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fbmV3U3RydWN0dXJlICYmICFIZWFw
Ojppc01hcmtlZChtX25ld1N0cnVjdHVyZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIW1fY29uZGl0aW9uU2V0LmFyZVN0aWxsTGl2ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKG1fY2FsbExpbmtTdGF0dXMgJiYgIW1fY2FsbExpbmtTdGF0dXMtPmZpbmFsaXpl
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBQ
dXRCeUlkVmFyaWFudDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIGR1bXBJ
bkNvbnRleHQob3V0LCAwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRCeUlkVmFyaWFudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkVmFyaWFudC5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03
MywxNyArNzMsMTcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9vbGRTdHJ1Y3R1cmU7CiAg
ICAgfQogICAgIAotICAgIGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0KCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBzdHJ1Y3R1cmUoKTsKLSAgICB9Ci0gICAgCiAgICAgY29u
c3QgU3RydWN0dXJlU2V0JiBvbGRTdHJ1Y3R1cmUoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNT
RVJUKGtpbmQoKSA9PSBUcmFuc2l0aW9uIHx8IGtpbmQoKSA9PSBSZXBsYWNlIHx8IGtpbmQoKSA9
PSBTZXR0ZXIpOwogICAgICAgICByZXR1cm4gbV9vbGRTdHJ1Y3R1cmU7CiAgICAgfQogICAgIAor
ICAgIGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0KCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBvbGRTdHJ1Y3R1cmUoKTsKKyAgICB9CisgICAgCiAgICAgU3RydWN0dXJlU2V0
JiBvbGRTdHJ1Y3R1cmUoKQogICAgIHsKICAgICAgICAgQVNTRVJUKGtpbmQoKSA9PSBUcmFuc2l0
aW9uIHx8IGtpbmQoKSA9PSBSZXBsYWNlIHx8IGtpbmQoKSA9PSBTZXR0ZXIpOwpAQCAtMTI5LDYg
KzEyOSw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgYXR0ZW1wdFRvTWVyZ2UoY29uc3QgUHV0QnlJ
ZFZhcmlhbnQmIG90aGVyKTsKICAgICAKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9y
Jik7CisgICAgYm9vbCBmaW5hbGl6ZSgpOworICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0OwogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250
ZXh0KikgY29uc3Q7CiAKQEAgLTEzNyw3ICsxNDAsNyBAQCBwcml2YXRlOgogICAgIAogICAgIEtp
bmQgbV9raW5kOwogICAgIFN0cnVjdHVyZVNldCBtX29sZFN0cnVjdHVyZTsKLSAgICBTdHJ1Y3R1
cmUqIG1fbmV3U3RydWN0dXJlOworICAgIFN0cnVjdHVyZSogbV9uZXdTdHJ1Y3R1cmUgeyBudWxs
cHRyIH07CiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgbV9jb25kaXRpb25TZXQ7CiAg
ICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAgICAgSW5mZXJyZWRUeXBlOjpEZXNjcmlwdG9y
IG1fcmVxdWlyZWRUeXBlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jl
Y29yZGVkU3RhdHVzZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlY29yZGVkU3RhdHVzZXMu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1JlY29yZGVkU3RhdHVzZXMmIFJlY29yZGVkU3RhdHVz
ZXM6Om9wZXJhdG9yPShSZWNvcmRlZFN0YXR1c2VzJiYgb3RoZXIpCit7CisgICAgY2FsbHMgPSBX
VEZNb3ZlKG90aGVyLmNhbGxzKTsKKyAgICBnZXRzID0gV1RGTW92ZShvdGhlci5nZXRzKTsKKyAg
ICBwdXRzID0gV1RGTW92ZShvdGhlci5wdXRzKTsKKyAgICBzaHJpbmtUb0ZpdCgpOworICAgIHJl
dHVybiAqdGhpczsKK30KKworUmVjb3JkZWRTdGF0dXNlczo6UmVjb3JkZWRTdGF0dXNlcyhSZWNv
cmRlZFN0YXR1c2VzJiYgb3RoZXIpCit7CisgICAgKnRoaXMgPSBXVEZNb3ZlKG90aGVyKTsKK30K
KworQ2FsbExpbmtTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKGNv
bnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBzdGF0dXMp
Cit7CisgICAgYXV0byBzdGF0dXNQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxMaW5rU3RhdHVz
PihzdGF0dXMpOworICAgIENhbGxMaW5rU3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7
CisgICAgY2FsbHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3Rh
dHVzUHRyKSkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0dldEJ5SWRTdGF0dXMqIFJlY29y
ZGVkU3RhdHVzZXM6OmFkZEdldEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdp
biwgY29uc3QgR2V0QnlJZFN0YXR1cyYgc3RhdHVzKQoreworICAgIGF1dG8gc3RhdHVzUHRyID0g
c3RkOjptYWtlX3VuaXF1ZTxHZXRCeUlkU3RhdHVzPihzdGF0dXMpOworICAgIEdldEJ5SWRTdGF0
dXMqIHJlc3VsdCA9IHN0YXR1c1B0ci5nZXQoKTsKKyAgICBnZXRzLmFwcGVuZChzdGQ6Om1ha2Vf
cGFpcihjb2RlT3JpZ2luLCBXVEZNb3ZlKHN0YXR1c1B0cikpKTsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorICAgIAorUHV0QnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkUHV0QnlJZFN0
YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBjb25zdCBQdXRCeUlkU3RhdHVzJiBz
dGF0dXMpCit7CisgICAgYXV0byBzdGF0dXNQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPFB1dEJ5SWRT
dGF0dXM+KHN0YXR1cyk7CisgICAgUHV0QnlJZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdl
dCgpOworICAgIHB1dHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUo
c3RhdHVzUHRyKSkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgUmVjb3JkZWRTdGF0
dXNlczo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHNsb3RWaXNpdG9yKQoreworICAgIGZvciAo
YXV0byYgcGFpciA6IGdldHMpCisgICAgICAgIHBhaXIuc2Vjb25kLT5tYXJrSWZDaGVhcChzbG90
VmlzaXRvcik7CisgICAgZm9yIChhdXRvJiBwYWlyIDogcHV0cykKKyAgICAgICAgcGFpci5zZWNv
bmQtPm1hcmtJZkNoZWFwKHNsb3RWaXNpdG9yKTsKK30KKwordm9pZCBSZWNvcmRlZFN0YXR1c2Vz
OjpmaW5hbGl6ZVdpdGhvdXREZWxldGluZygpCit7CisgICAgYXV0byBmaW5hbGl6ZSA9IFtdIChh
dXRvJiB2ZWN0b3IpIHsKKyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogdmVjdG9yKSB7CisgICAg
ICAgICAgICBpZiAoIXBhaXIuc2Vjb25kLT5maW5hbGl6ZSgpKQorICAgICAgICAgICAgICAgIHBh
aXIuc2Vjb25kID0geyB9OworICAgICAgICB9CisgICAgfTsKKyAgICBmb3JFYWNoVmVjdG9yKGZp
bmFsaXplKTsKK30KKwordm9pZCBSZWNvcmRlZFN0YXR1c2VzOjpmaW5hbGl6ZSgpCit7CisgICAg
YXV0byBmaW5hbGl6ZSA9IFtdIChhdXRvJiB2ZWN0b3IpIHsKKyAgICAgICAgdmVjdG9yLnJlbW92
ZUFsbE1hdGNoaW5nKAorICAgICAgICAgICAgWyZdIChhdXRvJiBwYWlyKSAtPiBib29sIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gISpwYWlyLnNlY29uZCB8fCAhcGFpci5zZWNvbmQtPmZpbmFs
aXplKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgdmVjdG9yLnNocmlua1RvRml0KCk7Cisg
ICAgfTsKKyAgICBmb3JFYWNoVmVjdG9yKGZpbmFsaXplKTsKK30KKwordm9pZCBSZWNvcmRlZFN0
YXR1c2VzOjpzaHJpbmtUb0ZpdCgpCit7CisgICAgZm9yRWFjaFZlY3RvcihbXSAoYXV0byYgdmVj
dG9yKSB7IHZlY3Rvci5zaHJpbmtUb0ZpdCgpOyB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2Vz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVk
U3RhdHVzZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUmVjb3JkZWRTdGF0dXNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgorI2luY2x1ZGUgIkdldEJ5SWRTdGF0dXMu
aCIKKyNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1
Y3QgUmVjb3JkZWRTdGF0dXNlcyB7CisgICAgUmVjb3JkZWRTdGF0dXNlcygpIHsgfQorICAgIAor
ICAgIFJlY29yZGVkU3RhdHVzZXMmIG9wZXJhdG9yPShjb25zdCBSZWNvcmRlZFN0YXR1c2VzJiBv
dGhlcikgPSBkZWxldGU7CisgICAgCisgICAgUmVjb3JkZWRTdGF0dXNlcyYgb3BlcmF0b3I9KFJl
Y29yZGVkU3RhdHVzZXMmJiBvdGhlcik7CisgICAgCisgICAgUmVjb3JkZWRTdGF0dXNlcyhjb25z
dCBSZWNvcmRlZFN0YXR1c2VzJiBvdGhlcikgPSBkZWxldGU7CisgICAgCisgICAgUmVjb3JkZWRT
dGF0dXNlcyhSZWNvcmRlZFN0YXR1c2VzJiYgb3RoZXIpOworICAgIAorICAgIENhbGxMaW5rU3Rh
dHVzKiBhZGRDYWxsTGlua1N0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29uc3QgQ2FsbExpbmtT
dGF0dXMmKTsKKyAgICBHZXRCeUlkU3RhdHVzKiBhZGRHZXRCeUlkU3RhdHVzKGNvbnN0IENvZGVP
cmlnaW4mLCBjb25zdCBHZXRCeUlkU3RhdHVzJik7CisgICAgUHV0QnlJZFN0YXR1cyogYWRkUHV0
QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29uc3QgUHV0QnlJZFN0YXR1cyYpOworICAg
IAorICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHNsb3RWaXNpdG9yKTsKKyAgICAK
KyAgICB2b2lkIGZpbmFsaXplV2l0aG91dERlbGV0aW5nKCk7CisgICAgdm9pZCBmaW5hbGl6ZSgp
OworICAgIAorICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jPgorICAgIHZvaWQgZm9yRWFjaFZlY3Rvcihjb25zdCBGdW5jJiBmdW5jKQorICAg
IHsKKyAgICAgICAgZnVuYyhjYWxscyk7CisgICAgICAgIGZ1bmMoZ2V0cyk7CisgICAgICAgIGZ1
bmMocHV0cyk7CisgICAgfQorICAgIAorICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29kZU9yaWdpbiwg
c3RkOjp1bmlxdWVfcHRyPENhbGxMaW5rU3RhdHVzPj4+IGNhbGxzOworICAgIFZlY3RvcjxzdGQ6
OnBhaXI8Q29kZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPEdldEJ5SWRTdGF0dXM+Pj4gZ2V0czsK
KyAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxQdXRCeUlk
U3RhdHVzPj4+IHB1dHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5jcHAJKHJldmlzaW9u
IDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDYgKzMxLDIxIEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCit2b2lkIFN0cnVjdHVyZVNldDo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
IGNvbnN0Cit7CisgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6ICp0aGlzKQorICAgICAg
ICBzdHJ1Y3R1cmUtPm1hcmtJZkNoZWFwKHZpc2l0b3IpOworfQorCitib29sIFN0cnVjdHVyZVNl
dDo6aXNTdGlsbEFsaXZlKCkgY29uc3QKK3sKKyAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJl
IDogKnRoaXMpIHsKKyAgICAgICAgaWYgKCFIZWFwOjppc01hcmtlZChzdHJ1Y3R1cmUpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9p
ZCBTdHJ1Y3R1cmVTZXQ6OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRl
eHQqIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgQ29tbWFQcmludGVyIGNvbW1hOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAkocmV2aXNpb24g
MjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSwgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTgsNiArNTgsOSBAQCBwdWJsaWM6CiAgICAgewog
ICAgICAgICByZXR1cm4gb25seUVudHJ5KCk7CiAgICAgfQorCisgICAgdm9pZCBtYXJrSWZDaGVh
cChTbG90VmlzaXRvciYpIGNvbnN0OworICAgIGJvb2wgaXNTdGlsbEFsaXZlKCkgY29uc3Q7CiAg
ICAgCiAgICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBj
b25zdDsKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9UZXJtaW5hdGVkQ29kZU9yaWdpbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9UZXJtaW5hdGVkQ29kZU9yaWdpbi5o
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9UZXJtaW5h
dGVkQ29kZU9yaWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJDb2RlT3JpZ2luLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgSW5saW5l
Q2FsbEZyYW1lOworCitzdHJ1Y3QgVGVybWluYXRlZENvZGVPcmlnaW4geworICAgIFRlcm1pbmF0
ZWRDb2RlT3JpZ2luKCkgeyB9CisgICAgCisgICAgVGVybWluYXRlZENvZGVPcmlnaW4oY29uc3Qg
Q29kZU9yaWdpbiYgY29kZU9yaWdpbiwgSW5saW5lQ2FsbEZyYW1lKiB0ZXJtaW5hbCkKKyAgICAg
ICAgOiBjb2RlT3JpZ2luKGNvZGVPcmlnaW4pCisgICAgICAgICwgdGVybWluYWwodGVybWluYWwp
CisgICAgeworICAgIH0KKyAgICAKKyAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW47CisgICAgSW5s
aW5lQ2FsbEZyYW1lKiB0ZXJtaW5hbCB7IG51bGxwdHIgfTsKK307CisKK3N0cnVjdCBUZXJtaW5h
dGVkQ29kZU9yaWdpbkhhc2hUcmFuc2xhdG9yIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChj
b25zdCBUZXJtaW5hdGVkQ29kZU9yaWdpbiYgdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4g
dmFsdWUuY29kZU9yaWdpbi5hcHByb3hpbWF0ZUhhc2godmFsdWUudGVybWluYWwpOworICAgIH0K
KyAgICAKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBDb2RlT3JpZ2luJiBhLCBjb25zdCBU
ZXJtaW5hdGVkQ29kZU9yaWdpbiYgYikKKyAgICB7CisgICAgICAgIHJldHVybiBiLmNvZGVPcmln
aW4uaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhhLCBiLnRlcm1pbmFsKTsKKyAgICB9Cit9OworCit9
IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMjMy
MjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNDk5LDYgKzM0OTksMjUgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgIGNhc2UgWm9tYmllSGludDoKICAg
ICBjYXNlIEV4aXRPSzoKICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgIGNhc2UgRmlsdGVy
Q2FsbExpbmtTdGF0dXM6CisgICAgICAgIGlmIChKU1ZhbHVlIHZhbHVlID0gZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkubV92YWx1ZSkKKyAgICAgICAgICAgIG5vZGUtPmNhbGxMaW5rU3RhdHVzKCkt
PmZpbHRlcihtX3ZtLCB2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgICAgICAKKyAgICBjYXNl
IEZpbHRlckdldEJ5SWRTdGF0dXM6IHsKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBm
b3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgaWYgKHZhbHVlLm1fc3RydWN0dXJlLmlz
RmluaXRlKCkpCisgICAgICAgICAgICBub2RlLT5nZXRCeUlkU3RhdHVzKCktPmZpbHRlcih2YWx1
ZS5tX3N0cnVjdHVyZS50b1N0cnVjdHVyZVNldCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgICAgICAKKyAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6IHsKKyAgICAgICAgQWJzdHJh
Y3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgaWYgKHZh
bHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpCisgICAgICAgICAgICBub2RlLT5wdXRCeUlkU3Rh
dHVzKCktPmZpbHRlcih2YWx1ZS5tX3N0cnVjdHVyZS50b1N0cnVjdHVyZVNldCgpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQogCiAgICAgY2FzZSBDaGVja1R5cGVJbmZvRmxhZ3M6IHsKICAgICAg
ICAgY29uc3QgQWJzdHJhY3RWYWx1ZSYgYWJzdHJhY3RWYWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hp
bGQxKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgyLDkgKzEwODIs
OCBAQCBwcml2YXRlOgogICAgICAgICAvLyBjb2RlIGJsb2NrIGhhZCBnYXRoZXJlZC4KICAgICAg
ICAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXIgbV9sYXp5T3BlcmFuZHM7CiAgICAgICAg
IAotICAgICAgICBDYWxsTGlua0luZm9NYXAgbV9jYWxsTGlua0luZm9zOwotICAgICAgICBTdHVi
SW5mb01hcCBtX3N0dWJJbmZvczsKLSAgICAgICAgQnlWYWxJbmZvTWFwIG1fYnlWYWxJbmZvczsK
KyAgICAgICAgSUNTdGF0dXNNYXAgbV9iYXNlbGluZU1hcDsKKyAgICAgICAgSUNTdGF0dXNDb250
ZXh0IG1fb3B0aW1pemVkQ29udGV4dDsKICAgICAgICAgCiAgICAgICAgIC8vIFBvaW50ZXJzIHRv
IHRoZSBhcmd1bWVudCBwb3NpdGlvbiB0cmFja2VycyBmb3IgdGhpcyBzbGljZSBvZiBjb2RlLgog
ICAgICAgICBWZWN0b3I8QXJndW1lbnRQb3NpdGlvbio+IG1fYXJndW1lbnRQb3NpdGlvbnM7CkBA
IC0xMTAyLDEwICsxMTAxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIElubGluZUNhbGxGcmFt
ZTo6S2luZCwKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrKTsKICAg
ICAgICAgCi0gICAgICAgIH5JbmxpbmVTdGFja0VudHJ5KCkKLSAgICAgICAgewotICAgICAgICAg
ICAgbV9ieXRlQ29kZVBhcnNlci0+bV9pbmxpbmVTdGFja1RvcCA9IG1fY2FsbGVyOwotICAgICAg
ICB9CisgICAgICAgIH5JbmxpbmVTdGFja0VudHJ5KCk7CiAgICAgICAgIAogICAgICAgICBWaXJ0
dWFsUmVnaXN0ZXIgcmVtYXBPcGVyYW5kKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSBjb25zdAog
ICAgICAgICB7CkBAIC0xMTIwLDYgKzExMTYsOCBAQCBwcml2YXRlOgogICAgIAogICAgIElubGlu
ZVN0YWNrRW50cnkqIG1faW5saW5lU3RhY2tUb3A7CiAgICAgCisgICAgSUNTdGF0dXNDb250ZXh0
U3RhY2sgbV9pY0NvbnRleHRTdGFjazsKKyAgICAKICAgICBzdHJ1Y3QgRGVsYXllZFNldExvY2Fs
IHsKICAgICAgICAgQ29kZU9yaWdpbiBtX29yaWdpbjsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IG1fb3BlcmFuZDsKQEAgLTExNDYsMTAgKzExNDQsNiBAQCBwcml2YXRlOgogICAgIAogICAgIFZl
Y3RvcjxEZWxheWVkU2V0TG9jYWwsIDI+IG1fc2V0TG9jYWxRdWV1ZTsKIAotICAgIENvZGVCbG9j
ayogbV9kZmdDb2RlQmxvY2s7Ci0gICAgQ2FsbExpbmtTdGF0dXM6OkNvbnRleHRNYXAgbV9jYWxs
Q29udGV4dE1hcDsKLSAgICBTdHViSW5mb01hcCBtX2RmZ1N0dWJJbmZvczsKLSAgICAKICAgICBJ
bnN0cnVjdGlvbiogbV9jdXJyZW50SW5zdHJ1Y3Rpb247CiAgICAgYm9vbCBtX2hhc0RlYnVnZ2Vy
RW5hYmxlZDsKIH07CkBAIC0xMjE0LDcgKzEyMDgsNyBAQCBCeXRlQ29kZVBhcnNlcjo6VGVybWlu
YWxpdHkgQnl0ZUNvZGVQYXJzCiAKICAgICBDYWxsTGlua1N0YXR1cyBjYWxsTGlua1N0YXR1cyA9
IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5t
X3Byb2ZpbGVkQmxvY2ssIGN1cnJlbnRDb2RlT3JpZ2luKCksCi0gICAgICAgIG1faW5saW5lU3Rh
Y2tUb3AtPm1fY2FsbExpbmtJbmZvcywgbV9jYWxsQ29udGV4dE1hcCk7CisgICAgICAgIG1faW5s
aW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2spOwogCiAgICAgSW5s
aW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQgPSBJbmxpbmVDYWxsRnJhbWU6OmtpbmRGb3IoY2FsbE1v
ZGUpOwogCkBAIC0xMjQyLDYgKzEyMzYsOCBAQCBCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkg
Qnl0ZUNvZGVQYXJzCiAgICAgLy8gSWYgd2UgaGF2ZSBwcm9maWxpbmcgaW5mb3JtYXRpb24gYWJv
dXQgdGhpcyBjYWxsLCBhbmQgaXQgZGlkIG5vdCBiZWhhdmUgdG9vIHBvbHltb3JwaGljYWxseSwK
ICAgICAvLyB3ZSBtYXkgYmUgYWJsZSB0byBpbmxpbmUgaXQsIG9yIGluIHRoZSBjYXNlIG9mIHJl
Y3Vyc2l2ZSB0YWlsIGNhbGxzIHR1cm4gaXQgaW50byBhIGp1bXAuCiAgICAgaWYgKGNhbGxMaW5r
U3RhdHVzLmNhbk9wdGltaXplKCkpIHsKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJDYWxsTGlu
a1N0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkQ2FsbExp
bmtTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgY2FsbExpbmtTdGF0dXMpKSwgY2FsbFRhcmdl
dCk7CisgICAgICAgIAogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50ID0gdmly
dHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMCwgcmVnaXN0ZXJPZmZzZXQpOwogICAgICAgICBhdXRv
IG9wdGltaXphdGlvblJlc3VsdCA9IGhhbmRsZUlubGluaW5nKGNhbGxUYXJnZXQsIHJlc3VsdCwg
Y2FsbExpbmtTdGF0dXMsIHJlZ2lzdGVyT2Zmc2V0LCB0aGlzQXJndW1lbnQsCiAgICAgICAgICAg
ICBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgbV9jdXJyZW50SW5kZXggKyBpbnN0cnVjdGlv
blNpemUsIG9wLCBraW5kLCBwcmVkaWN0aW9uKTsKQEAgLTEyNzksMTIgKzEyNzUsMTQgQEAgQnl0
ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFycwogICAgIAogICAgIENhbGxMaW5r
U3RhdHVzIGNhbGxMaW5rU3RhdHVzID0gQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAg
ICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgY3VycmVudENvZGVPcmlnaW4o
KSwKLSAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsTGlua0luZm9zLCBtX2NhbGxDb250
ZXh0TWFwKTsKKyAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0Nv
bnRleHRTdGFjayk7CiAgICAgcmVmaW5lU3RhdGljYWxseShjYWxsTGlua1N0YXR1cywgY2FsbFRh
cmdldCk7CiAgICAgCiAgICAgVkVSQk9TRV9MT0coIiAgICBWYXJhcmdzIGNhbGwgbGluayBzdGF0
dXMgYXQgIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIjogIiwgY2FsbExpbmtTdGF0dXMsICJcbiIp
OwogICAgIAogICAgIGlmIChjYWxsTGlua1N0YXR1cy5jYW5PcHRpbWl6ZSgpKSB7CisgICAgICAg
IGFkZFRvR3JhcGgoRmlsdGVyQ2FsbExpbmtTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5y
ZWNvcmRlZFN0YXR1c2VzLmFkZENhbGxMaW5rU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIGNh
bGxMaW5rU3RhdHVzKSksIGNhbGxUYXJnZXQpOworICAgICAgICAKICAgICAgICAgaWYgKGhhbmRs
ZVZhcmFyZ3NJbmxpbmluZyhjYWxsVGFyZ2V0LCByZXN1bHQsCiAgICAgICAgICAgICBjYWxsTGlu
a1N0YXR1cywgZmlyc3RGcmVlUmVnLCBWaXJ0dWFsUmVnaXN0ZXIodGhpc1JlZyksIFZpcnR1YWxS
ZWdpc3Rlcihhcmd1bWVudHMpLAogICAgICAgICAgICAgZmlyc3RWYXJBcmdPZmZzZXQsIG9wLApA
QCAtMzMxOCw5ICszMzE2LDEyIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVEdl
dHRlcigKICAgICBpZiAoIWNoZWNrKHZhcmlhbnQuY29uZGl0aW9uU2V0KCkpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3Jh
cGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQuc3RydWN0dXJlU2V0KCkpKSwgdGhpc05vZGUpOwot
CisgICAgCiAgICAgLy8gV2UgZG8gbm90IG5lZWQgdG8gZW1pdCBDaGVja0NlbGwgdGhpbmd5IGhl
cmUuIFdoZW4gdGhlIGN1c3RvbSBhY2Nlc3NvciBpcyByZXBsYWNlZCB0byBkaWZmZXJlbnQgb25l
LCBTdHJ1Y3R1cmUgdHJhbnNpdGlvbiBvY2N1cnMuCiAgICAgYWRkVG9HcmFwaChDaGVja1N1YkNs
YXNzLCBPcEluZm8oZG9tQXR0cmlidXRlLmNsYXNzSW5mbyksIHRoaXNOb2RlKTsKKyAgICAKKyAg
ICBib29sIHdhc1NlZW5JbkpJVCA9IHRydWU7CisgICAgYWRkVG9HcmFwaChGaWx0ZXJHZXRCeUlk
U3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcy5hZGRHZXRCeUlk
U3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIEdldEJ5SWRTdGF0dXMoR2V0QnlJZFN0YXR1czo6
Q3VzdG9tLCB3YXNTZWVuSW5KSVQsIHZhcmlhbnQpKSksIHRoaXNOb2RlKTsKIAogICAgIENhbGxE
T01HZXR0ZXJEYXRhKiBjYWxsRE9NR2V0dGVyRGF0YSA9IG1fZ3JhcGgubV9jYWxsRE9NR2V0dGVy
RGF0YS5hZGQoKTsKICAgICBjYWxsRE9NR2V0dGVyRGF0YS0+Y3VzdG9tQWNjZXNzb3JHZXR0ZXIg
PSB2YXJpYW50LmN1c3RvbUFjY2Vzc29yR2V0dGVyKCk7CkBAIC0zMzUyLDYgKzMzNTMsOCBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVNb2R1bGVOYW1lc3BhCiAgICAgaWYgKG1faW5saW5l
U3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENl
bGwpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYWRkVG9HcmFwaChDaGVja0NlbGwsIE9w
SW5mbyhtX2dyYXBoLmZyZWV6ZShnZXRCeUlkLm1vZHVsZU5hbWVzcGFjZU9iamVjdCgpKSksIEVk
Z2UoYmFzZSwgQ2VsbFVzZSkpOworICAgIAorICAgIGFkZFRvR3JhcGgoRmlsdGVyR2V0QnlJZFN0
YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkR2V0QnlJZFN0
YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBnZXRCeUlkKSksIGJhc2UpOwogCiAgICAgLy8gSWRl
YWxseSB3ZSB3b3VsZG4ndCBoYXZlIHRvIGRvIHRoaXMgUGhhbnRvbS4gQnV0OgogICAgIC8vCkBA
IC00MDA3LDE0ICs0MDEwLDI1IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQo
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCisgICAgLy8gRklYTUU6IElmIHdlIHVzZSB0
aGUgR2V0QnlJZFN0YXR1cyBmb3IgYW55dGhpbmcgdGhlbiB3ZSBzaG91bGQgcmVjb3JkIGl0IGFu
ZCBpbnNlcnQgYSBub2RlCisgICAgLy8gYWZ0ZXIgZXZlcnl0aGluZyBlbHNlIChsaWtlIHRoZSBH
ZXRCeU9mZnNldCBvciB3aGF0ZXZlcikgdGhhdCB3aWxsIGZpbHRlciB0aGUgcmVjb3JkZWQKKyAg
ICAvLyBHZXRCeUlkU3RhdHVzLiBUaGF0IG1lYW5zIHRoYXQgdGhlIGNvbnN0YW50IGZvbGRlciBh
bHNvIG5lZWRzIHRvIGRvIHRoZSBzYW1lIQorICAgIAogICAgIGlmIChnZXRCeUlkU3RhdHVzLm51
bVZhcmlhbnRzKCkgPiAxKSB7CiAgICAgICAgIGlmIChnZXRCeUlkU3RhdHVzLm1ha2VzQ2FsbHMo
KSB8fCAhaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkKLSAgICAgICAgICAgIHx8ICFPcHRpb25z
Ojp1c2VQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nKCkpIHsKKyAgICAgICAgICAgIHx8ICFPcHRp
b25zOjp1c2VQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nKCkKKyAgICAgICAgICAgIHx8IGdldEJ5
SWRTdGF0dXMubnVtVmFyaWFudHMoKSA+IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQWNjZXNzSW5s
aW5pbmdMaXN0U2l6ZSgpKSB7CisgICAgICAgICAgICBpZiAoZmFsc2UgJiYgZ2V0QnlJZFN0YXR1
cy5udW1WYXJpYW50cygpID4gT3B0aW9uczo6bWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xp
c3RTaXplKCkpIHsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJBdCAiLCBjdXJyZW50Q29kZU9y
aWdpbigpLCAiXG4iKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJHaXZpbmcgdXAgb246ICIs
IGdldEJ5SWRTdGF0dXMsICJcbiIpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgc2V0KFZp
cnR1YWxSZWdpc3RlcihkZXN0aW5hdGlvbk9wZXJhbmQpLAogICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoZ2V0QnlJZCwgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIpLCBPcEluZm8ocHJlZGljdGlv
biksIGJhc2UpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKKyAg
ICAgICAgYWRkVG9HcmFwaChGaWx0ZXJHZXRCeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3Bs
YW4ucmVjb3JkZWRTdGF0dXNlcy5hZGRHZXRCeUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCks
IGdldEJ5SWRTdGF0dXMpKSwgYmFzZSk7CisgICAgICAgIAogICAgICAgICBWZWN0b3I8TXVsdGlH
ZXRCeU9mZnNldENhc2UsIDI+IGNhc2VzOwogICAgICAgICAKICAgICAgICAgLy8gMSkgRW1pdCBw
cm90b3R5cGUgc3RydWN0dXJlIGNoZWNrcyBmb3IgYWxsIGNoYWlucy4gVGhpcyBjb3VsZCBzb3J0
IG9mIG1heWJlIG5vdCBiZQpAQCAtNDA1NiwxMCArNDA3MCwxMiBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAgICAgICAgYWRkVG9HcmFwaChNdWx0aUdldEJ5T2Zm
c2V0LCBPcEluZm8oZGF0YSksIE9wSW5mbyhwcmVkaWN0aW9uKSwgYmFzZSkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQorCisgICAgYWRkVG9HcmFwaChGaWx0ZXJHZXRCeUlkU3RhdHVzLCBPcElu
Zm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcy5hZGRHZXRCeUlkU3RhdHVzKGN1cnJl
bnRDb2RlT3JpZ2luKCksIGdldEJ5SWRTdGF0dXMpKSwgYmFzZSk7CiAgICAgCiAgICAgQVNTRVJU
KGdldEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSA9PSAxKTsKICAgICBHZXRCeUlkVmFyaWFudCB2
YXJpYW50ID0gZ2V0QnlJZFN0YXR1c1swXTsKLSAgICAgICAgICAgICAgICAKKyAgICAKICAgICBO
b2RlKiBsb2FkZWRWYWx1ZSA9IGxvYWQocHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllck51bWJl
ciwgdmFyaWFudCk7CiAgICAgaWYgKCFsb2FkZWRWYWx1ZSkgewogICAgICAgICBzZXQoVmlydHVh
bFJlZ2lzdGVyKGRlc3RpbmF0aW9uT3BlcmFuZCksCkBAIC00MTUwLDcgKzQxNjYsMTAgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICAKICAgICBpZiAocHV0QnlJZFN0
YXR1cy5udW1WYXJpYW50cygpID4gMSkgewogICAgICAgICBpZiAoIWlzRlRMKG1fZ3JhcGgubV9w
bGFuLm1vZGUpIHx8IHB1dEJ5SWRTdGF0dXMubWFrZXNDYWxscygpCi0gICAgICAgICAgICB8fCAh
T3B0aW9uczo6dXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZygpKSB7CisgICAgICAgICAgICB8
fCAhT3B0aW9uczo6dXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZygpCisgICAgICAgICAgICB8
fCBwdXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgPiBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0Fj
Y2Vzc0lubGluaW5nTGlzdFNpemUoKSkgeworICAgICAgICAgICAgaWYgKGZhbHNlICYmIHB1dEJ5
SWRTdGF0dXMubnVtVmFyaWFudHMoKSA+IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQWNjZXNzSW5s
aW5pbmdMaXN0U2l6ZSgpKQorICAgICAgICAgICAgICAgIGRhdGFMb2coIkdpdmluZyB1cCBvbjog
IiwgcHV0QnlJZFN0YXR1cywgIlxuIik7CiAgICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBp
ZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC00MTY4LDYgKzQxODcsOCBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgICAgICAKICAgICAgICAgaWYgKFVOTElLRUxZ
KG1fZ3JhcGguY29tcGlsYXRpb24oKSkpCiAgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9u
KCktPm5vdGljZUlubGluZWRQdXRCeUlkKCk7CisgICAgICAgIAorICAgICAgICBhZGRUb0dyYXBo
KEZpbHRlclB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1
c2VzLmFkZFB1dEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0YXR1cykp
LCBiYXNlKTsKIAogICAgICAgICBmb3IgKGNvbnN0IFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50IDog
cHV0QnlJZFN0YXR1cy52YXJpYW50cygpKSB7CiAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVy
SW5mZXJyZWRUeXBlKHZhcmlhbnQucmVxdWlyZWRUeXBlKCkpOwpAQCAtNDE4OSw2ICs0MjEwLDgg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICAKICAgICBzd2l0Y2gg
KHZhcmlhbnQua2luZCgpKSB7CiAgICAgY2FzZSBQdXRCeUlkVmFyaWFudDo6UmVwbGFjZTogewor
ICAgICAgICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1f
cGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFkZFB1dEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4o
KSwgcHV0QnlJZFN0YXR1cykpLCBiYXNlKTsKKyAgICAgICAgCiAgICAgICAgIHN0b3JlKGJhc2Us
IGlkZW50aWZpZXJOdW1iZXIsIHZhcmlhbnQsIHZhbHVlKTsKICAgICAgICAgaWYgKFVOTElLRUxZ
KG1fZ3JhcGguY29tcGlsYXRpb24oKSkpCiAgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9u
KCktPm5vdGljZUlubGluZWRQdXRCeUlkKCk7CkBAIC00MTk2LDYgKzQyMTksOCBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgIH0KICAgICAKICAgICBjYXNlIFB1dEJ5
SWRWYXJpYW50OjpUcmFuc2l0aW9uOiB7CisgICAgICAgIGFkZFRvR3JhcGgoRmlsdGVyUHV0QnlJ
ZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkUHV0QnlJ
ZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBwdXRCeUlkU3RhdHVzKSksIGJhc2UpOworICAg
ICAgICAKICAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGgu
YWRkU3RydWN0dXJlU2V0KHZhcmlhbnQub2xkU3RydWN0dXJlKCkpKSwgYmFzZSk7CiAgICAgICAg
IGlmICghY2hlY2sodmFyaWFudC5jb25kaXRpb25TZXQoKSkpIHsKICAgICAgICAgICAgIGVtaXRQ
dXRCeUlkKGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0Rp
cmVjdCk7CkBAIC00MjYzLDYgKzQyODgsOCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQ
dXRCeUlkKAogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBQdXRCeUlkVmFyaWFudDo6U2V0dGVy
OiB7CisgICAgICAgIGFkZFRvR3JhcGgoRmlsdGVyUHV0QnlJZFN0YXR1cywgT3BJbmZvKG1fZ3Jh
cGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkUHV0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9y
aWdpbigpLCBwdXRCeUlkU3RhdHVzKSksIGJhc2UpOworICAgICAgICAKICAgICAgICAgTm9kZSog
bG9hZGVkVmFsdWUgPSBsb2FkKFNwZWNDZWxsT3RoZXIsIGJhc2UsIGlkZW50aWZpZXJOdW1iZXIs
IHZhcmlhbnQpOwogICAgICAgICBpZiAoIWxvYWRlZFZhbHVlKSB7CiAgICAgICAgICAgICBlbWl0
UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNE
aXJlY3QpOwpAQCAtNDc5MSw3ICs0ODE4LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZAogICAgICAgICAgICAgYXV0byYgYnl0ZWNvZGUgPSAqcmVpbnRlcnByZXRf
Y2FzdDxPcEluc3RhbmNlb2YqPihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBJbnN0YW5jZU9mU3RhdHVzIHN0YXR1cyA9IEluc3RhbmNlT2ZTdGF0dXM6OmNv
bXB1dGVGb3IoCi0gICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJs
b2NrLCBtX2lubGluZVN0YWNrVG9wLT5tX3N0dWJJbmZvcywKKyAgICAgICAgICAgICAgICBtX2lu
bGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxp
bmVNYXAsCiAgICAgICAgICAgICAgICAgbV9jdXJyZW50SW5kZXgpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUudmFs
dWUoKSkpOwpAQCAtNTAyNCw3ICs1MDUxLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZAogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IDA7
CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAg
ICAgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2lubGluZVN0YWNrVG9wLT5tX2J5VmFsSW5m
b3MuZ2V0KENvZGVPcmlnaW4oY3VycmVudENvZGVPcmlnaW4oKS5ieXRlY29kZUluZGV4KSk7Cisg
ICAgICAgICAgICAgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2lubGluZVN0YWNrVG9wLT5t
X2Jhc2VsaW5lTWFwLmdldChDb2RlT3JpZ2luKGN1cnJlbnRDb2RlT3JpZ2luKCkuYnl0ZWNvZGVJ
bmRleCkpLmJ5VmFsSW5mbzsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2hlbiB0aGUgYnl0
ZWNvZGUgaXMgbm90IGNvbXBpbGVkIGluIHRoZSBiYXNlbGluZSBKSVQsIGJ5VmFsSW5mbyBiZWNv
bWVzIG51bGwuCiAgICAgICAgICAgICAgICAgLy8gQXQgdGhhdCB0aW1lLCB0aGVyZSBpcyBubyBp
bmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICBpZiAoYnlWYWxJbmZvCkBAIC01MDkzLDcgKzUx
MjAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAg
ICAgICAgICAgUHV0QnlJZFN0YXR1cyBwdXRCeUlkU3RhdHVzOwogICAgICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2lubGluZVN0
YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICAgICAgICAgIEJ5
VmFsSW5mbyogYnlWYWxJbmZvID0gbV9pbmxpbmVTdGFja1RvcC0+bV9ieVZhbEluZm9zLmdldChD
b2RlT3JpZ2luKGN1cnJlbnRDb2RlT3JpZ2luKCkuYnl0ZWNvZGVJbmRleCkpOworICAgICAgICAg
ICAgICAgICAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IG1faW5saW5lU3RhY2tUb3AtPm1fYmFz
ZWxpbmVNYXAuZ2V0KENvZGVPcmlnaW4oY3VycmVudENvZGVPcmlnaW4oKS5ieXRlY29kZUluZGV4
KSkuYnlWYWxJbmZvOwogICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2hlbiB0aGUgYnl0
ZWNvZGUgaXMgbm90IGNvbXBpbGVkIGluIHRoZSBiYXNlbGluZSBKSVQsIGJ5VmFsSW5mbyBiZWNv
bWVzIG51bGwuCiAgICAgICAgICAgICAgICAgICAgIC8vIEF0IHRoYXQgdGltZSwgdGhlcmUgaXMg
bm8gaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgICAgIGlmIChieVZhbEluZm8gCkBAIC01
MTk5LDggKzUyMjYsOCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVk
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dy
YXBoLmlkZW50aWZpZXJzKClbaWRlbnRpZmllck51bWJlcl07CiAgICAgICAgICAgICBHZXRCeUlk
U3RhdHVzIGdldEJ5SWRTdGF0dXMgPSBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAotICAgICAg
ICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgbV9kZmdDb2RlQmxv
Y2ssCi0gICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9zdHViSW5mb3MsIG1fZGZn
U3R1YkluZm9zLAorICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRC
bG9jaywKKyAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBt
X2ljQ29udGV4dFN0YWNrLAogICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCksIHVp
ZCk7CiAKICAgICAgICAgICAgIEFjY2Vzc1R5cGUgdHlwZSA9IEFjY2Vzc1R5cGU6OkdldDsKQEAg
LTUyNDMsOCArNTI3MCw4IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQKICAgICAgICAgICAgIGJvb2wgZGlyZWN0ID0gY3VycmVudEluc3RydWN0aW9uWzhdLnUucHV0
QnlJZEZsYWdzICYgUHV0QnlJZElzRGlyZWN0OwogCiAgICAgICAgICAgICBQdXRCeUlkU3RhdHVz
IHB1dEJ5SWRTdGF0dXMgPSBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAotICAgICAgICAgICAg
ICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgbV9kZmdDb2RlQmxvY2ssCi0g
ICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9zdHViSW5mb3MsIG1fZGZnU3R1Yklu
Zm9zLAorICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywK
KyAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29u
dGV4dFN0YWNrLAogICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCksIG1fZ3JhcGgu
aWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGhhbmRsZVB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRT
dGF0dXMsIGRpcmVjdCk7CkBAIC02NjAzLDEyICs2NjMwLDE5IEBAIEJ5dGVDb2RlUGFyc2VyOjpJ
bmxpbmVTdGFja0VudHJ5OjpJbmxpbmUKICAgICAgICAgLy8gV2UgZG8gdGhpcyB3aGlsZSBob2xk
aW5nIHRoZSBsb2NrIGJlY2F1c2Ugd2Ugd2FudCB0byBlbmNvdXJhZ2UgU3RydWN0dXJlU3R1Yklu
Zm8ncwogICAgICAgICAvLyB0byBiZSBwb3RlbnRpYWxseSBhZGRlZCB0byBvcGVyYXRpb25zIGFu
ZCBiZWNhdXNlIHRoZSBwcm9maWxlZCBibG9jayBjb3VsZCBiZSBpbiB0aGUKICAgICAgICAgLy8g
bWlkZGxlIG9mIExMSW50LT5KSVQgdGllci11cCBpbiB3aGljaCBjYXNlIHdlIHdvdWxkIGJlIGFk
ZGluZyB0aGUgaW5mbydzIHJpZ2h0IG5vdy4KLSAgICAgICAgaWYgKG1fcHJvZmlsZWRCbG9jay0+
aGFzQmFzZWxpbmVKSVRQcm9maWxpbmcoKSkgewotICAgICAgICAgICAgbV9wcm9maWxlZEJsb2Nr
LT5nZXRTdHViSW5mb01hcChsb2NrZXIsIG1fc3R1YkluZm9zKTsKLSAgICAgICAgICAgIG1fcHJv
ZmlsZWRCbG9jay0+Z2V0Q2FsbExpbmtJbmZvTWFwKGxvY2tlciwgbV9jYWxsTGlua0luZm9zKTsK
LSAgICAgICAgICAgIG1fcHJvZmlsZWRCbG9jay0+Z2V0QnlWYWxJbmZvTWFwKGxvY2tlciwgbV9i
eVZhbEluZm9zKTsKKyAgICAgICAgaWYgKG1fcHJvZmlsZWRCbG9jay0+aGFzQmFzZWxpbmVKSVRQ
cm9maWxpbmcoKSkKKyAgICAgICAgICAgIG1fcHJvZmlsZWRCbG9jay0+Z2V0SUNTdGF0dXNNYXAo
bG9ja2VyLCBtX2Jhc2VsaW5lTWFwKTsKKyAgICB9CisgICAgCisgICAgaWYgKE9wdGlvbnM6OnVz
ZVBvbHl2YXJpYW50RGV2aXJ0dWFsaXphdGlvbigpKSB7CisgICAgICAgIENvZGVCbG9jayogb3B0
aW1pemVkQmxvY2sgPSBtX3Byb2ZpbGVkQmxvY2stPnJlcGxhY2VtZW50KCk7CisgICAgICAgIG1f
b3B0aW1pemVkQ29udGV4dC5vcHRpbWl6ZWRDb2RlQmxvY2sgPSBvcHRpbWl6ZWRCbG9jazsKKyAg
ICAgICAgaWYgKG9wdGltaXplZEJsb2NrKSB7CisgICAgICAgICAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKG9wdGltaXplZEJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgb3B0aW1pemVk
QmxvY2stPmdldElDU3RhdHVzTWFwKGxvY2tlciwgbV9vcHRpbWl6ZWRDb250ZXh0Lm1hcCk7CiAg
ICAgICAgIH0KICAgICB9CisgICAgYnl0ZUNvZGVQYXJzZXItPm1faWNDb250ZXh0U3RhY2suYXBw
ZW5kKCZtX29wdGltaXplZENvbnRleHQpOwogICAgIAogICAgIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpc1dpdGhGaXh1cCA9IHN0ZDo6bWF4PGludD4oYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKIApAQCAtNjYxOCw2ICs2NjUyLDcg
QEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZQogICAgICAgICBBU1NF
UlQoaW5saW5lQ2FsbEZyYW1lU3RhcnQuaXNWYWxpZCgpKTsKICAgICAgICAgCiAgICAgICAgIG1f
aW5saW5lQ2FsbEZyYW1lID0gYnl0ZUNvZGVQYXJzZXItPm1fZ3JhcGgubV9wbGFuLmlubGluZUNh
bGxGcmFtZXMtPmFkZCgpOworICAgICAgICBtX29wdGltaXplZENvbnRleHQuaW5saW5lQ2FsbEZy
YW1lID0gbV9pbmxpbmVDYWxsRnJhbWU7CiAKICAgICAgICAgLy8gVGhlIG93bmVyIGlzIHRoZSBt
YWNoaW5lIGNvZGUgYmxvY2ssIGFuZCB3ZSBhbHJlYWR5IGhhdmUgYSBiYXJyaWVyIG9uIHRoYXQg
d2hlbiB0aGUKICAgICAgICAgLy8gcGxhbiBmaW5pc2hlcy4KQEAgLTY2NzMsNiArNjcwOCwxMyBA
QCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lCiAgICAgYnl0ZUNvZGVQ
YXJzZXItPm1faW5saW5lU3RhY2tUb3AgPSB0aGlzOwogfQogCitCeXRlQ29kZVBhcnNlcjo6SW5s
aW5lU3RhY2tFbnRyeTo6fklubGluZVN0YWNrRW50cnkoKQoreworICAgIG1fYnl0ZUNvZGVQYXJz
ZXItPm1faW5saW5lU3RhY2tUb3AgPSBtX2NhbGxlcjsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2J5
dGVDb2RlUGFyc2VyLT5tX2ljQ29udGV4dFN0YWNrLmxhc3QoKSA9PSAmbV9vcHRpbWl6ZWRDb250
ZXh0KTsKKyAgICBtX2J5dGVDb2RlUGFyc2VyLT5tX2ljQ29udGV4dFN0YWNrLnJlbW92ZUxhc3Qo
KTsKK30KKwogdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQogewogICAgIGNs
ZWFyQ2FjaGVzKCk7CkBAIC02NzY5LDE1ICs2ODExLDYgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2UoKQogICAgIAogICAgIFZFUkJPU0VfTE9HKCJQYXJzaW5nICIsICptX2NvZGVCbG9jaywg
IlxuIik7CiAgICAgCi0gICAgbV9kZmdDb2RlQmxvY2sgPSBtX2dyYXBoLm1fcGxhbi5wcm9maWxl
ZERGR0NvZGVCbG9jazsKLSAgICBpZiAoaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkgJiYgbV9k
ZmdDb2RlQmxvY2sKLSAgICAgICAgJiYgT3B0aW9uczo6dXNlUG9seXZhcmlhbnREZXZpcnR1YWxp
emF0aW9uKCkpIHsKLSAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVBvbHl2YXJpYW50Q2FsbElubGlu
aW5nKCkpCi0gICAgICAgICAgICBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZURGR1N0YXR1c2VzKG1f
ZGZnQ29kZUJsb2NrLCBtX2NhbGxDb250ZXh0TWFwKTsKLSAgICAgICAgaWYgKE9wdGlvbnM6OnVz
ZVBvbHl2YXJpYW50QnlJZElubGluaW5nKCkpCi0gICAgICAgICAgICBtX2RmZ0NvZGVCbG9jay0+
Z2V0U3R1YkluZm9NYXAobV9kZmdTdHViSW5mb3MpOwotICAgIH0KLSAgICAKICAgICBJbmxpbmVT
dGFja0VudHJ5IGlubGluZVN0YWNrRW50cnkoCiAgICAgICAgIHRoaXMsIG1fY29kZUJsb2NrLCBt
X3Byb2ZpbGVkQmxvY2ssIDAsIFZpcnR1YWxSZWdpc3RlcigpLCBWaXJ0dWFsUmVnaXN0ZXIoKSwK
ICAgICAgICAgbV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgSW5saW5lQ2FsbEZyYW1lOjpD
YWxsLCBudWxscHRyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJl
cml6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJl
cml6ZS5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtNDQ2LDYgKzQ0Niw5IEBAIHZvaWQgY2xv
YmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIFByb2ZpbGVDb250cm9s
RmxvdzoKICAgICBjYXNlIFB1dEhpbnQ6CiAgICAgY2FzZSBJbml0aWFsaXplRW50cnlwb2ludEFy
Z3VtZW50czoKKyAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmlsdGVy
R2V0QnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgIHdy
aXRlKFNpZGVTdGF0ZSk7CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAkocmV2
aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4
aXRTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDkgQEAgYm9vbCBjbG9iYmVy
c0V4aXRTdGF0ZShHcmFwaCYgZ3JhcGgsIE5vZAogICAgIGNhc2UgRmVuY2VkU3RvcmVCYXJyaWVy
OgogICAgIGNhc2UgQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBSZWFsbG9jYXRl
UHJvcGVydHlTdG9yYWdlOgorICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgY2Fz
ZSBGaWx0ZXJHZXRCeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAg
ICAgICAgLy8gVGhlc2UgZG8gY2xvYmJlciBtZW1vcnksIGJ1dCBub3RoaW5nIHRoYXQgaXMgb2Jz
ZXJ2YWJsZS4gSXQgbWF5IGJlIG5pY2UgdG8gc2VwYXJhdGUgdGhlCiAgICAgICAgIC8vIGhlYXBz
IGludG8gdGhvc2UgdGhhdCBhcmUgb2JzZXJ2YWJsZSBhbmQgdGhvc2UgdGhhdCBhcmVuJ3QsIGJ1
dCB3ZSBkb24ndCBkbyB0aGF0IHJpZ2h0IG5vdy4KICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg0NDAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAt
MzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIklubGluZUNhbGxGcmFtZVNldC5oIgogI2luY2x1ZGUg
IkpTQ2FzdC5oIgogI2luY2x1ZGUgIlByb2ZpbGVyQ29tcGlsYXRpb24uaCIKKyNpbmNsdWRlICJS
ZWNvcmRlZFN0YXR1c2VzLmgiCiAjaW5jbHVkZSA8d3RmL0JhZy5oPgogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgogCkBAIC0xMjUsNiArMTI2LDcgQEAgcHVibGljOgogICAgIEJhZzxDb2Rl
QmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQ+IHdhdGNocG9pbnRzOwogICAgIEJhZzxBZGFwdGl2
ZVN0cnVjdHVyZVdhdGNocG9pbnQ+IGFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludHM7CiAgICAg
QmFnPEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludD4gYWRhcHRpdmVJbmZl
cnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50czsKKyAgICBSZWNvcmRlZFN0YXR1c2VzIHJlY29y
ZGVkU3RhdHVzZXM7CiAgICAgVmVjdG9yPEp1bXBSZXBsYWNlbWVudD4ganVtcFJlcGxhY2VtZW50
czsKICAgICAKICAgICBTY3JhdGNoQnVmZmVyKiBjYXRjaE9TUkVudHJ5QnVmZmVyOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQ
aGFzZS5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTcsNyArNTU3
LDE1IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgYXV0byBhZGRGaWx0ZXJTdGF0dXMg
PSBbJl0gKCkgeworICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2Rl
KAorICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgRmlsdGVy
R2V0QnlJZFN0YXR1cywgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgT3BJ
bmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkR2V0QnlJZFN0YXR1cyhub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIHN0YXR1cykpLAorICAgICAgICAgICAgICAgICAgICAgICAgRWRn
ZShjaGlsZCkpOworICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgaWYgKHN0YXR1cy5udW1WYXJpYW50cygpID09IDEpIHsKKyAgICAgICAgICAgICAg
ICAgICAgYWRkRmlsdGVyU3RhdHVzKCk7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRHZXRCeU9m
ZnNldChpbmRleEluQmxvY2ssIG5vZGUsIGJhc2VWYWx1ZSwgc3RhdHVzWzBdLCBpZGVudGlmaWVy
TnVtYmVyKTsKICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtNTY2LDYgKzU3NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgaWYgKCFpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSkKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgYWRkRmlsdGVyU3Rh
dHVzKCk7CiAgICAgICAgICAgICAgICAgTXVsdGlHZXRCeU9mZnNldERhdGEqIGRhdGEgPSBtX2dy
YXBoLm1fbXVsdGlHZXRCeU9mZnNldERhdGEuYWRkKCk7CiAgICAgICAgICAgICAgICAgZm9yIChj
b25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IHN0YXR1cy52YXJpYW50cygpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGRhdGEtPmNhc2VzLmFwcGVuZCgKQEAgLTYzOSw2ICs2NDgsMTEgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAoIWFsbEdvb2QpCiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9u
U2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05v
bmUsIEZpbHRlclB1dEJ5SWRTdGF0dXMsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAg
ICAgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkUHV0QnlJZFN0YXR1
cyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIHN0YXR1cykpLAorICAgICAgICAgICAgICAgICAgICBF
ZGdlKGNoaWxkKSk7CisgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKHN0YXR1
cy5udW1WYXJpYW50cygpID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgZW1pdFB1dEJ5T2Zm
c2V0KGluZGV4SW5CbG9jaywgbm9kZSwgYmFzZVZhbHVlLCBzdGF0dXNbMF0sIGlkZW50aWZpZXJO
dW1iZXIpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEyLDYgKzMx
Miw5IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEF0
b21pY3NYb3I6CiAgICAgY2FzZSBBdG9taWNzSXNMb2NrRnJlZToKICAgICBjYXNlIE1hdGNoU3Ry
dWN0dXJlOgorICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJH
ZXRCeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgY2FzZSBQdXNoV2l0aFNjb3BlOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTM4LDYgKzIxMzgsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldEdsb2JhbFRo
aXM6CiAgICAgICAgIGNhc2UgRXh0cmFjdFZhbHVlRnJvbVdlYWtNYXBHZXQ6CiAgICAgICAgIGNh
c2UgQ1BVSW50cmluc2ljOgorICAgICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAg
ICAgICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJ
ZFN0YXR1czoKICAgICAgICAgICAgIGJyZWFrOwogI2Vsc2UKICAgICAgICAgZGVmYXVsdDoKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAyMzIyMjcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzU2LDYgKzM1NiwxMiBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQs
IGNvbnN0CiAgICAgICAgIG91dC5wcmludChjb21tYSwgImlnbm9yZUxhc3RJbmRleElzV3JpdGFi
bGUgPSAiLCBub2RlLT5pZ25vcmVMYXN0SW5kZXhJc1dyaXRhYmxlKCkpOwogICAgIGlmIChub2Rl
LT5pc0NvbnN0YW50KCkpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgcG9pbnRlckR1bXBJbkNv
bnRleHQobm9kZS0+Y29uc3RhbnQoKSwgY29udGV4dCkpOworICAgIGlmIChub2RlLT5oYXNDYWxs
TGlua1N0YXR1cygpKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICpub2RlLT5jYWxsTGlua1N0
YXR1cygpKTsKKyAgICBpZiAobm9kZS0+aGFzR2V0QnlJZFN0YXR1cygpKQorICAgICAgICBvdXQu
cHJpbnQoY29tbWEsICpub2RlLT5nZXRCeUlkU3RhdHVzKCkpOworICAgIGlmIChub2RlLT5oYXNQ
dXRCeUlkU3RhdHVzKCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgKm5vZGUtPnB1dEJ5SWRT
dGF0dXMoKSk7CiAgICAgaWYgKG5vZGUtPmlzSnVtcCgpKQogICAgICAgICBvdXQucHJpbnQoY29t
bWEsICJUOiIsICpub2RlLT50YXJnZXRCbG9jaygpKTsKICAgICBpZiAobm9kZS0+aXNCcmFuY2go
KSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3Bw
CShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
bXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg4LDYgKzE4OCw4IEBAIHZvaWQgSklUQ29t
cGlsZXI6OmNvbXBpbGVFeGNlcHRpb25IYW5kbGUKIAogdm9pZCBKSVRDb21waWxlcjo6bGluayhM
aW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogeworICAgIG1faml0Q29kZS0+Y29tbW9uLnJlY29yZGVk
U3RhdHVzZXMgPSBXVEZNb3ZlKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMpOworICAg
IAogICAgIC8vIExpbmsgdGhlIGNvZGUsIHBvcHVsYXRlIGRhdGEgaW4gQ29kZUJsb2NrIGRhdGEg
c3RydWN0dXJlcy4KICAgICBtX2ppdENvZGUtPmNvbW1vbi5mcmFtZVJlZ2lzdGVyQ291bnQgPSBt
X2dyYXBoLmZyYW1lUmVnaXN0ZXJDb3VudCgpOwogICAgIG1faml0Q29kZS0+Y29tbW9uLnJlcXVp
cmVkUmVnaXN0ZXJDb3VudEZvckV4aXQgPSBtX2dyYXBoLnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZv
ckV4aXQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAko
cmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSw5IEBAIEV4aXRNb2RlIG1heUV4aXRJ
bXBsKEdyYXBoJiBncmFwaCwgTm9kZSoKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CiAgICAgY2Fz
ZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CiAgICAgY2FzZSBOdWtlU3RydWN0dXJlQW5kU2V0
QnV0dGVyZmx5OgorICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgY2FzZSBGaWx0
ZXJHZXRCeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAg
YnJlYWs7CiAKICAgICBjYXNlIFN0ckNhdDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjc2OSw2ICsyNzY5LDM5IEBAIHB1YmxpYzoKICAg
ICAgICAgQVNTRVJUKG9wKCkgPT0gVGhyb3dTdGF0aWNFcnJvcik7CiAgICAgICAgIHJldHVybiBt
X29wSW5mby5hczx1aW50MzJfdD4oKTsKICAgICB9CisgICAgCisgICAgYm9vbCBoYXNDYWxsTGlu
a1N0YXR1cygpCisgICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBGaWx0ZXJDYWxsTGlua1N0
YXR1czsKKyAgICB9CisgICAgCisgICAgQ2FsbExpbmtTdGF0dXMqIGNhbGxMaW5rU3RhdHVzKCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChoYXNDYWxsTGlua1N0YXR1cygpKTsKKyAgICAgICAgcmV0
dXJuIG1fb3BJbmZvLmFzPENhbGxMaW5rU3RhdHVzKj4oKTsKKyAgICB9CisgICAgCisgICAgYm9v
bCBoYXNHZXRCeUlkU3RhdHVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBvcCgpID09IEZpbHRl
ckdldEJ5SWRTdGF0dXM7CisgICAgfQorICAgIAorICAgIEdldEJ5SWRTdGF0dXMqIGdldEJ5SWRT
dGF0dXMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc0dldEJ5SWRTdGF0dXMoKSk7CisgICAg
ICAgIHJldHVybiBtX29wSW5mby5hczxHZXRCeUlkU3RhdHVzKj4oKTsKKyAgICB9CisgICAgCisg
ICAgYm9vbCBoYXNQdXRCeUlkU3RhdHVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBvcCgpID09
IEZpbHRlclB1dEJ5SWRTdGF0dXM7CisgICAgfQorICAgIAorICAgIFB1dEJ5SWRTdGF0dXMqIHB1
dEJ5SWRTdGF0dXMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc1B1dEJ5SWRTdGF0dXMoKSk7
CisgICAgICAgIHJldHVybiBtX29wSW5mby5hczxQdXRCeUlkU3RhdHVzKj4oKTsKKyAgICB9CiAK
ICAgICB2b2lkIGR1bXBDaGlsZHJlbihQcmludFN0cmVhbSYgb3V0KQogICAgIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDIzMjIyNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzk0LDExICszOTQsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAg
bWFjcm8oR2V0QXJndW1lbnQsIE5vZGVSZXN1bHRKUykgXAogICAgIFwKICAgICBtYWNybyhOZXdG
dW5jdGlvbiwgTm9kZVJlc3VsdEpTKSBcCi0gICAgXAogICAgIG1hY3JvKE5ld0dlbmVyYXRvckZ1
bmN0aW9uLCBOb2RlUmVzdWx0SlMpIFwKLSAgICBcCiAgICAgbWFjcm8oTmV3QXN5bmNHZW5lcmF0
b3JGdW5jdGlvbiwgTm9kZVJlc3VsdEpTKSBcCi0gICAgXAogICAgIG1hY3JvKE5ld0FzeW5jRnVu
Y3Rpb24sIE5vZGVSZXN1bHRKUykgXAogICAgIFwKICAgICAvKiBCbG9jayB0ZXJtaW5hbHMuICov
XApAQCAtNDc1LDYgKzQ3MiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAg
ICAgXAogICAgIC8qIFVzZWQgZm9yICR2bSBwZXJmb3JtYW5jZSBkZWJ1Z2dpbmcgKi8gXAogICAg
IG1hY3JvKENQVUludHJpbnNpYywgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAor
ICAgIFwKKyAgICAvKiBVc2VkIHRvIHByb3ZpZGUgZmVlZGJhY2sgdG8gdGhlIElDIHByb2ZpbGVy
LiAqLyBcCisgICAgbWFjcm8oRmlsdGVyQ2FsbExpbmtTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKKyAgICBtYWNybyhGaWx0ZXJHZXRCeUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisg
ICAgbWFjcm8oRmlsdGVyUHV0QnlJZFN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAogCiAKIC8v
IFRoaXMgZW51bSBnZW5lcmF0ZXMgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaWQgZm9yIGFs
bCBOb2RlIHR5cGVzLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0QmFzZS5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDExICs0MiwxNyBA
QCB2b2lkIE9TUkV4aXRCYXNlOjpjb25zaWRlckFkZGluZ0FzRnJlcXVlCiAgICAgICAgIGJhc2Vs
aW5lQ29kZUJsb2NrRm9yT3JpZ2luQW5kQmFzZWxpbmVDb2RlQmxvY2soCiAgICAgICAgICAgICBt
X2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZSwgcHJvZmlsZWRDb2RlQmxvY2spOwogICAgIGlmIChz
b3VyY2VQcm9maWxlZENvZGVCbG9jaykgeworICAgICAgICBFeGl0aW5nSW5saW5lS2luZCBpbmxp
bmVLaW5kOworICAgICAgICBpZiAobV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGUuaW5saW5lQ2Fs
bEZyYW1lKQorICAgICAgICAgICAgaW5saW5lS2luZCA9IEV4aXRGcm9tSW5saW5lZDsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgaW5saW5lS2luZCA9IEV4aXRGcm9tTm90SW5saW5lZDsKKyAg
ICAgICAgCiAgICAgICAgIEZyZXF1ZW50RXhpdFNpdGUgc2l0ZTsKICAgICAgICAgaWYgKG1fd2Fz
SG9pc3RlZCkKLSAgICAgICAgICAgIHNpdGUgPSBGcmVxdWVudEV4aXRTaXRlKEhvaXN0aW5nRmFp
bGVkLCBqaXRUeXBlKTsKKyAgICAgICAgICAgIHNpdGUgPSBGcmVxdWVudEV4aXRTaXRlKEhvaXN0
aW5nRmFpbGVkLCBqaXRUeXBlLCBpbmxpbmVLaW5kKTsKICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgc2l0ZSA9IEZyZXF1ZW50RXhpdFNpdGUobV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGUuYnl0
ZWNvZGVJbmRleCwgbV9raW5kLCBqaXRUeXBlKTsKKyAgICAgICAgICAgIHNpdGUgPSBGcmVxdWVu
dEV4aXRTaXRlKG1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlLmJ5dGVjb2RlSW5kZXgsIG1fa2lu
ZCwgaml0VHlwZSwgaW5saW5lS2luZCk7CiAgICAgICAgIEV4aXRQcm9maWxlOjphZGQoc291cmNl
UHJvZmlsZWRDb2RlQmxvY2ssIHNpdGUpOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUGxhbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQbGFuLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQbGFuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMzLDYgKzYzMyw4IEBA
IHZvaWQgUGxhbjo6Y2hlY2tMaXZlbmVzc0FuZFZpc2l0Q2hpbGRyZW4KICAgICBjbGVhbk11c3RI
YW5kbGVWYWx1ZXNJZk5lY2Vzc2FyeSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IG11c3RIYW5k
bGVWYWx1ZXMuc2l6ZSgpOyBpLS07KQogICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVk
KG11c3RIYW5kbGVWYWx1ZXNbaV0pOworICAgIAorICAgIHJlY29yZGVkU3RhdHVzZXMubWFya0lm
Q2hlYXAodmlzaXRvcik7CiAKICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKGNvZGVCbG9j
ayk7CiAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxvY2stPmFsdGVybmF0aXZl
KCkpOwpAQCAtNjQ5LDYgKzY1MSwxMSBAQCB2b2lkIFBsYW46OmNoZWNrTGl2ZW5lc3NBbmRWaXNp
dENoaWxkcmVuCiAgICAgdHJhbnNpdGlvbnMudmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKIH0KIAor
dm9pZCBQbGFuOjpmaW5hbGl6ZUluR0MoKQoreworICAgIHJlY29yZGVkU3RhdHVzZXMuZmluYWxp
emVXaXRob3V0RGVsZXRpbmcoKTsKK30KKwogYm9vbCBQbGFuOjppc0tub3duVG9CZUxpdmVEdXJp
bmdHQygpCiB7CiAgICAgaWYgKHN0YWdlID09IENhbmNlbGxlZCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUGxhbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUGxhbi5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1BsYW4uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDYgKzM2LDcgQEAKICNp
bmNsdWRlICJEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCIKICNpbmNsdWRlICJPcGVyYW5k
cy5oIgogI2luY2x1ZGUgIlByb2ZpbGVyQ29tcGlsYXRpb24uaCIKKyNpbmNsdWRlICJSZWNvcmRl
ZFN0YXR1c2VzLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVGhy
ZWFkU2FmZVJlZkNvdW50ZWQuaD4KIApAQCAtNzIsNiArNzMsNyBAQCBzdHJ1Y3QgUGxhbiA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlCiAgICAgdm9pZCBpdGVyYXRlQ29kZUJsb2Nrc0ZvckdD
KGNvbnN0IEZ1bmMmKTsKICAgICB2b2lkIGNoZWNrTGl2ZW5lc3NBbmRWaXNpdENoaWxkcmVuKFNs
b3RWaXNpdG9yJik7CiAgICAgYm9vbCBpc0tub3duVG9CZUxpdmVEdXJpbmdHQygpOworICAgIHZv
aWQgZmluYWxpemVJbkdDKCk7CiAgICAgdm9pZCBjYW5jZWwoKTsKIAogICAgIGJvb2wgY2FuVGll
clVwQW5kT1NSRW50ZXIoKSBjb25zdCB7IHJldHVybiAhdGllclVwQW5kT1NSRW50ZXJCeXRlY29k
ZXMuaXNFbXB0eSgpOyB9CkBAIC0xMDQsNiArMTA2LDcgQEAgc3RydWN0IFBsYW4gOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZQogICAgIERlc2lyZWRJZGVudGlmaWVycyBpZGVudGlmaWVyczsK
ICAgICBEZXNpcmVkV2Vha1JlZmVyZW5jZXMgd2Vha1JlZmVyZW5jZXM7CiAgICAgRGVzaXJlZFRy
YW5zaXRpb25zIHRyYW5zaXRpb25zOworICAgIFJlY29yZGVkU3RhdHVzZXMgcmVjb3JkZWRTdGF0
dXNlczsKICAgICAKICAgICBib29sIHdpbGxUcnlUb1RpZXJVcCB7IGZhbHNlIH07CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTIwNiw2ICsxMjA2LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJbml0aWFs
aXplRW50cnlwb2ludEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBXZWFrU2V0QWRkOgogICAgICAg
ICBjYXNlIFdlYWtNYXBTZXQ6CisgICAgICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6Cisg
ICAgICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJQdXRC
eUlkU3RhdHVzOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgLy8g
VGhpcyBnZXRzIGlnbm9yZWQgYmVjYXVzZSBpdCBvbmx5IHByZXRlbmRzIHRvIHByb2R1Y2UgYSB2
YWx1ZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDc4LDYgKzQ3OCwxMyBAQCBib29sIHNh
ZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgICAgIC8vIGFscmVhZHkgZm9y
Y2UgdGhlc2UgdGhpbmdzIHRvIGJlIG9yZGVyZWQgcHJlY2lzZWx5LiBJJ20ganVzdCBub3QgY29u
ZmlkZW50IGVub3VnaCBpbiBteQogICAgICAgICAvLyBlZmZlY3QgYmFzZWQgbWVtb3J5IG1vZGVs
IHRvIHJlbHkgc29sZWx5IG9uIHRoYXQgcmlnaHQgbm93LgogICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIAorICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgY2FzZSBGaWx0
ZXJHZXRCeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKKyAgICAgICAg
Ly8gV2UgZG9uJ3Qgd2FudCB0aGVzZSB0byBiZSBtb3ZlZCBhbnl3aGVyZSBvdGhlciB0aGFuIHdo
ZXJlIHdlIHB1dCB0aGVtLCBzaW5jZSB3ZSB3YW50IHRoZW0KKyAgICAgICAgLy8gdG8gY2FwdHVy
ZSAicHJvZmlsaW5nIiBhdCB0aGUgcG9pbnQgaW4gY29udHJvbCBmbG93IGhlcmUgdGhlIHVzZXIg
cHV0IHRoZW0uCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNhc2UgR2V0QnlWYWw6CiAg
ICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lv
biAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDMzLDYgKzQwMzMsMTEgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmVP
ckVtcHR5OgogICAgICAgICBERkdfQ1JBU0gobV9qaXQuZ3JhcGgoKSwgbm9kZSwgIkNoZWNrU3Ry
dWN0dXJlT3JFbXB0eSBvbmx5IHVzZWQgaW4gNjQtYml0IERGRyIpOwogICAgICAgICBicmVhazsK
KyAgICAgICAgCisgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICBjYXNlIEZpbHRl
ckdldEJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgorICAgICAgICBi
cmVhazsKIAogICAgIGNhc2UgTGFzdE5vZGVUeXBlOgogICAgIGNhc2UgUGhpOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShy
ZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjI2LDYgKzQ2MjYsMTEgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9
CiAKKyAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJ
ZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CisgICAgICAgIGJyZWFrOwor
CiAjZWxzZSAvLyBFTkFCTEUoRlRMX0pJVCkKICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgog
ICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAkocmV2aXNp
b24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVj
dGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg5OCwxMCArODk4LDE0IEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgVGFpbENhbGw6IHsKICAgICAgICAgICAgIEV4ZWN1dGFibGVCYXNl
KiBleGVjdXRhYmxlID0gbnVsbHB0cjsKICAgICAgICAgICAgIEVkZ2UgY2FsbGVlID0gbV9ncmFw
aC52YXJBcmdDaGlsZChtX25vZGUsIDApOwotICAgICAgICAgICAgaWYgKEpTRnVuY3Rpb24qIGZ1
bmN0aW9uID0gY2FsbGVlLT5keW5hbWljQ2FzdENvbnN0YW50PEpTRnVuY3Rpb24qPih2bSgpKSkK
KyAgICAgICAgICAgIENhbGxWYXJpYW50IGNhbGxWYXJpYW50OworICAgICAgICAgICAgaWYgKEpT
RnVuY3Rpb24qIGZ1bmN0aW9uID0gY2FsbGVlLT5keW5hbWljQ2FzdENvbnN0YW50PEpTRnVuY3Rp
b24qPih2bSgpKSkgewogICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBmdW5jdGlvbi0+ZXhl
Y3V0YWJsZSgpOwotICAgICAgICAgICAgZWxzZSBpZiAoY2FsbGVlLT5pc0Z1bmN0aW9uQWxsb2Nh
dGlvbigpKQorICAgICAgICAgICAgICAgIGNhbGxWYXJpYW50ID0gQ2FsbFZhcmlhbnQoZnVuY3Rp
b24pOworICAgICAgICAgICAgfSBlbHNlIGlmIChjYWxsZWUtPmlzRnVuY3Rpb25BbGxvY2F0aW9u
KCkpIHsKICAgICAgICAgICAgICAgICBleGVjdXRhYmxlID0gY2FsbGVlLT5jYXN0T3BlcmFuZDxG
dW5jdGlvbkV4ZWN1dGFibGUqPigpOworICAgICAgICAgICAgICAgIGNhbGxWYXJpYW50ID0gQ2Fs
bFZhcmlhbnQoZXhlY3V0YWJsZSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGlmICghZXhlY3V0YWJsZSkKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTkxOSw2
ICs5MjMsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIAorICAgICAgICAgICAgbV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcy5h
ZGRDYWxsTGlua1N0YXR1cyhtX25vZGUtPm9yaWdpbi5zZW1hbnRpYywgQ2FsbExpbmtTdGF0dXMo
Y2FsbFZhcmlhbnQpKTsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgbV9ub2RlLT5jb252ZXJ0
VG9EaXJlY3RDYWxsKG1fZ3JhcGguZnJlZXplKGV4ZWN1dGFibGUpKTsKICAgICAgICAgICAgIG1f
Y2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzkz
LDggKzM5MywxMCBAQCB2b2lkIFdvcmtsaXN0OjpyZW1vdmVEZWFkUGxhbnMoVk0mIHZtKQogICAg
ICAgICAgICAgUGxhbiogcGxhbiA9IGl0ZXItPnZhbHVlLmdldCgpOwogICAgICAgICAgICAgaWYg
KHBsYW4tPnZtICE9ICZ2bSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IGlmIChwbGFuLT5pc0tub3duVG9CZUxpdmVEdXJpbmdHQygpKQorICAgICAgICAgICAgaWYgKHBs
YW4tPmlzS25vd25Ub0JlTGl2ZUR1cmluZ0dDKCkpIHsKKyAgICAgICAgICAgICAgICBwbGFuLT5m
aW5hbGl6ZUluR0MoKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHBsYW4tPnN0YWdlICE9IFBsYW46OkNhbmNlbGxl
ZCk7IC8vIFNob3VsZCBub3QgYmUgY2FuY2VsbGVkLCB5ZXQuCiAgICAgICAgICAgICBBU1NFUlQo
IWRlYWRQbGFuS2V5cy5jb250YWlucyhwbGFuLT5rZXkoKSkpOwogICAgICAgICAgICAgZGVhZFBs
YW5LZXlzLmFkZChwbGFuLT5rZXkoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAkocmV2aXNpb24gMjMyMjI3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBGVEwgewogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19taW5DYXBhY2l0eSwgRGlyZWN0
QXJndW1lbnRzOjpvZmZzZXRPZk1pbkNhcGFjaXR5KCkpIFwKICAgICBtYWNybyhEaXJlY3RBcmd1
bWVudHNfbWFwcGVkQXJndW1lbnRzLCBEaXJlY3RBcmd1bWVudHM6Om9mZnNldE9mTWFwcGVkQXJn
dW1lbnRzKCkpIFwKICAgICBtYWNybyhEaXJlY3RBcmd1bWVudHNfbW9kaWZpZWRBcmd1bWVudHNE
ZXNjcmlwdG9yLCBEaXJlY3RBcmd1bWVudHM6Om9mZnNldE9mTW9kaWZpZWRBcmd1bWVudHNEZXNj
cmlwdG9yKCkpIFwKKyAgICBtYWNybyhGdW5jdGlvblJhcmVEYXRhX2FsbG9jYXRvciwgRnVuY3Rp
b25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxs
b2NhdGlvblByb2ZpbGU6Om9mZnNldE9mQWxsb2NhdG9yKCkpIFwKKyAgICBtYWNybyhGdW5jdGlv
blJhcmVEYXRhX3N0cnVjdHVyZSwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mU3RydWN0
dXJlKCkpIFwKICAgICBtYWNybyhHZXR0ZXJTZXR0ZXJfZ2V0dGVyLCBHZXR0ZXJTZXR0ZXI6Om9m
ZnNldE9mR2V0dGVyKCkpIFwKICAgICBtYWNybyhHZXR0ZXJTZXR0ZXJfc2V0dGVyLCBHZXR0ZXJT
ZXR0ZXI6Om9mZnNldE9mU2V0dGVyKCkpIFwKICAgICBtYWNybyhKU0FycmF5QnVmZmVyVmlld19s
ZW5ndGgsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSBcCkBAIC0xMTIsMTAg
KzExNCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8oU3Ry
aW5nSW1wbF9sZW5ndGgsIFN0cmluZ0ltcGw6Omxlbmd0aE1lbW9yeU9mZnNldCgpKSBcCiAgICAg
bWFjcm8oU3RydWN0dXJlX2NsYXNzSW5mbywgU3RydWN0dXJlOjpjbGFzc0luZm9PZmZzZXQoKSkg
XAogICAgIG1hY3JvKFN0cnVjdHVyZV9nbG9iYWxPYmplY3QsIFN0cnVjdHVyZTo6Z2xvYmFsT2Jq
ZWN0T2Zmc2V0KCkpIFwKKyAgICBtYWNybyhTdHJ1Y3R1cmVfaW5kZXhpbmdNb2RlSW5jbHVkaW5n
SGlzdG9yeSwgU3RydWN0dXJlOjppbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5T2Zmc2V0KCkp
IFwKKyAgICBtYWNybyhTdHJ1Y3R1cmVfaW5saW5lQ2FwYWNpdHksIFN0cnVjdHVyZTo6aW5saW5l
Q2FwYWNpdHlPZmZzZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVyZV9wcm90b3R5cGUsIFN0cnVj
dHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfc3RydWN0dXJl
SUQsIFN0cnVjdHVyZTo6c3RydWN0dXJlSURPZmZzZXQoKSkgXAotICAgIG1hY3JvKFN0cnVjdHVy
ZV9pbmxpbmVDYXBhY2l0eSwgU3RydWN0dXJlOjppbmxpbmVDYXBhY2l0eU9mZnNldCgpKSBcCi0g
ICAgbWFjcm8oU3RydWN0dXJlX2luZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnksIFN0cnVjdHVy
ZTo6aW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeU9mZnNldCgpKSBcCiAgICAgbWFjcm8oSGFz
aE1hcEltcGxfY2FwYWNpdHksIEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tl
dERhdGFLZXk+Pjo6b2Zmc2V0T2ZDYXBhY2l0eSgpKSBcCiAgICAgbWFjcm8oSGFzaE1hcEltcGxf
YnVmZmVyLCAgSGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT4+
OjpvZmZzZXRPZkJ1ZmZlcigpKSBcCiAgICAgbWFjcm8oSGFzaE1hcEltcGxfaGVhZCwgIEhhc2hN
YXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+Pjo6b2Zmc2V0T2ZIZWFk
KCkpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGll
cy5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUxLDYgKzM1MSwxMCBAQCBpbmxp
bmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBQdXRCeVZhbERp
cmVjdDoKICAgICBjYXNlIFB1dEJ5VmFsV2l0aFRoaXM6CiAgICAgY2FzZSBNYXRjaFN0cnVjdHVy
ZToKKyAgICBjYXNlIENyZWF0ZVRoaXM6CisgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoK
KyAgICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3Rh
dHVzOgogICAgICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAgIGJyZWFrOwogCkBAIC0zNjIs
NyArMzY2LDYgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAg
ICAgICBicmVhazsKIAogICAgIGNhc2UgSWRlbnRpdHlXaXRoUHJvZmlsZToKLSAgICBjYXNlIENy
ZWF0ZVRoaXM6CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGll
clVwQW5kT1NSRW50ZXI6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24g
MjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOTEsNiArMzkxLDggQEAgcHVibGljOgogCiAgICAgICAgIC8v
IFdlIHB1dCB0aGUgYmxvY2tzIGludG8gdGhlIEIzIHByb2NlZHVyZSBpbiBhIHN1cGVyIHdlaXJk
IG9yZGVyLiBOb3cgd2UgcmVvcmRlciB0aGVtLgogICAgICAgICBtX291dC5hcHBseUJsb2NrT3Jk
ZXIoKTsKKyAgICAgICAgCisgICAgICAgIG1fZnRsU3RhdGUuaml0Q29kZS0+Y29tbW9uLnJlY29y
ZGVkU3RhdHVzZXMgPSBXVEZNb3ZlKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMpOwog
ICAgIH0KIAogcHJpdmF0ZToKQEAgLTg0Nyw2ICs4NDksOSBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIE5ld0FycmF5V2l0aFNwcmVhZDoKICAgICAgICAgICAgIGNvbXBpbGVOZXdBcnJheVdpdGhT
cHJlYWQoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENyZWF0ZVRoaXM6Cisg
ICAgICAgICAgICBjb21waWxlQ3JlYXRlVGhpcygpOworICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgU3ByZWFkOgogICAgICAgICAgICAgY29tcGlsZVNwcmVhZCgpOwogICAgICAgICAg
ICAgYnJlYWs7CkBAIC0xMzEyLDYgKzEzMTcsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEJv
dHRvbVZhbHVlOgogICAgICAgICBjYXNlIEtpbGxTdGFjazoKICAgICAgICAgY2FzZSBJbml0aWFs
aXplRW50cnlwb2ludEFyZ3VtZW50czoKKyAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1
czoKKyAgICAgICAgY2FzZSBGaWx0ZXJHZXRCeUlkU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRl
clB1dEJ5SWRTdGF0dXM6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAg
ICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJVbnJlY29nbml6ZWQgbm9kZSBp
biBGVEwgYmFja2VuZCIpOwpAQCAtNTY2Miw2ICs1NjcwLDQwIEBAIHByaXZhdGU6CiAKICAgICAg
ICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgIH0KKyAgICAKKyAgICB2b2lkIGNvbXBpbGVDcmVh
dGVUaGlzKCkKKyAgICB7CisgICAgICAgIExWYWx1ZSBjYWxsZWUgPSBsb3dDZWxsKG1fbm9kZS0+
Y2hpbGQxKCkpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGlzRnVuY3Rpb25CbG9jayA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGhhc1JhcmVEYXRhID0gbV9vdXQubmV3
QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgc2xvd1BhdGggPSBtX291dC5uZXdCbG9jaygp
OworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdCbG9jaygpOwor
CisgICAgICAgIG1fb3V0LmJyYW5jaChpc0Z1bmN0aW9uKGNhbGxlZSwgcHJvdmVuVHlwZShtX25v
ZGUtPmNoaWxkMSgpKSksIHVzdWFsbHkoaXNGdW5jdGlvbkJsb2NrKSwgcmFyZWx5KHNsb3dQYXRo
KSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBlbmRUbyhpc0Z1
bmN0aW9uQmxvY2ssIGhhc1JhcmVEYXRhKTsKKyAgICAgICAgTFZhbHVlIHJhcmVEYXRhID0gbV9v
dXQubG9hZFB0cihjYWxsZWUsIG1faGVhcHMuSlNGdW5jdGlvbl9yYXJlRGF0YSk7CisgICAgICAg
IG1fb3V0LmJyYW5jaChtX291dC5pc1plcm82NChyYXJlRGF0YSksIHJhcmVseShzbG93UGF0aCks
IHVzdWFsbHkoaGFzUmFyZURhdGEpKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhoYXNSYXJl
RGF0YSwgc2xvd1BhdGgpOworICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0gbV9vdXQubG9hZFB0
cihyYXJlRGF0YSwgbV9oZWFwcy5GdW5jdGlvblJhcmVEYXRhX2FsbG9jYXRvcik7CisgICAgICAg
IExWYWx1ZSBzdHJ1Y3R1cmUgPSBtX291dC5sb2FkUHRyKHJhcmVEYXRhLCBtX2hlYXBzLkZ1bmN0
aW9uUmFyZURhdGFfc3RydWN0dXJlKTsKKyAgICAgICAgTFZhbHVlIGJ1dHRlcmZseSA9IG1fb3V0
LmNvbnN0SW50UHRyKDApOworICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9v
dXQuYW5jaG9yKGFsbG9jYXRlT2JqZWN0KGFsbG9jYXRvciwgc3RydWN0dXJlLCBidXR0ZXJmbHks
IHNsb3dQYXRoKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAg
ICBtX291dC5hcHBlbmRUbyhzbG93UGF0aCwgY29udGludWF0aW9uKTsKKyAgICAgICAgVmFsdWVG
cm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoCisgICAgICAgICAgICBJ
bnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0ZVRoaXMpLCBtX2NhbGxGcmFtZSwg
Y2FsbGVlLCBtX291dC5jb25zdEludDMyKG1fbm9kZS0+aW5saW5lQ2FwYWNpdHkoKSkpKTsKKyAg
ICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRv
KGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQu
cGhpKEludDY0LCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KTsKKworICAgICAgICBtdXRhdG9yRmVu
Y2UoKTsKKyAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAgIH0KIAogICAgIHZvaWQgY29t
cGlsZVNwcmVhZCgpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5jcHAJKHJldmlzaW9u
IDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVj
b2RlU2VxdWVuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDksMTIgKzQ5LDEyIEBAIEJ5dGVj
b2RlU2VxdWVuY2U6OkJ5dGVjb2RlU2VxdWVuY2UoQ29kZUIKICAgICAgICAgbV9oZWFkZXIuYXBw
ZW5kKG91dC50b0NTdHJpbmcoKSk7CiAgICAgfQogICAgIAotICAgIFN0dWJJbmZvTWFwIHN0dWJJ
bmZvczsKLSAgICBjb2RlQmxvY2stPmdldFN0dWJJbmZvTWFwKHN0dWJJbmZvcyk7CisgICAgSUNT
dGF0dXNNYXAgc3RhdHVzTWFwOworICAgIGNvZGVCbG9jay0+Z2V0SUNTdGF0dXNNYXAoc3RhdHVz
TWFwKTsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXggPSAwOyBieXRlY29k
ZUluZGV4IDwgY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCk7KSB7CiAgICAgICAgIG91
dC5yZXNldCgpOwotICAgICAgICBjb2RlQmxvY2stPmR1bXBCeXRlY29kZShvdXQsIGJ5dGVjb2Rl
SW5kZXgsIHN0dWJJbmZvcyk7CisgICAgICAgIGNvZGVCbG9jay0+ZHVtcEJ5dGVjb2RlKG91dCwg
Ynl0ZWNvZGVJbmRleCwgc3RhdHVzTWFwKTsKICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBJ
bnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKVtieXRlY29k
ZUluZGV4XS51Lm9wY29kZSk7CiAgICAgICAgIG1fc2VxdWVuY2UuYXBwZW5kKEJ5dGVjb2RlKGJ5
dGVjb2RlSW5kZXgsIG9wY29kZUlELCBvdXQudG9DU3RyaW5nKCkpKTsKICAgICAgICAgYnl0ZWNv
ZGVJbmRleCArPSBvcGNvZGVMZW5ndGgob3Bjb2RlSUQpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzUsNiArMjc1
LDcgQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbgogICAgIHYodW5z
aWduZWQsIG1heEFjY2Vzc1ZhcmlhbnRMaXN0U2l6ZSwgOCwgTm9ybWFsLCBudWxscHRyKSBcCiAg
ICAgdihib29sLCB1c2VQb2x5dmFyaWFudERldmlydHVhbGl6YXRpb24sIHRydWUsIE5vcm1hbCwg
bnVsbHB0cikgXAogICAgIHYoYm9vbCwgdXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZywgdHJ1
ZSwgTm9ybWFsLCBudWxscHRyKSBcCisgICAgdih1bnNpZ25lZCwgbWF4UG9seW1vcnBoaWNBY2Nl
c3NJbmxpbmluZ0xpc3RTaXplLCA4LCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KGJvb2wsIHVz
ZVBvbHltb3JwaGljQ2FsbElubGluaW5nLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2
KGJvb2wsIHVzZVBvbHltb3JwaGljQ2FsbElubGluaW5nRm9yTm9uU3R1YlN0YXR1cywgZmFsc2Us
IE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYodW5zaWduZWQsIG1heFBvbHltb3JwaGljQ2FsbFZh
cmlhbnRMaXN0U2l6ZSwgMTUsIE5vcm1hbCwgbnVsbHB0cikgXApAQCAtMzIyLDkgKzMyMyw2IEBA
IGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW4KICAgICBcCiAgICAgdih1
bnNpZ25lZCwgbWF4aW11bVZhcmFyZ3NGb3JJbmxpbmluZywgMTAwLCBOb3JtYWwsIG51bGxwdHIp
IFwKICAgICBcCi0gICAgdihib29sLCB1c2VQb2x5dmFyaWFudENhbGxJbmxpbmluZywgdHJ1ZSwg
Tm9ybWFsLCBudWxscHRyKSBcCi0gICAgdihib29sLCB1c2VQb2x5dmFyaWFudEJ5SWRJbmxpbmlu
ZywgdHJ1ZSwgTm9ybWFsLCBudWxscHRyKSBcCi0gICAgXAogICAgIHYoYm9vbCwgdXNlTWF4aW1h
bEZsdXNoSW5zZXJ0aW9uUGhhc2UsIGZhbHNlLCBOb3JtYWwsICJTZXR0aW5nIHRvIHRydWUgYWxs
b3dzIHRoZSBERkcncyBNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZSB0byBydW4uIikgXAogICAg
IFwKICAgICB2KHVuc2lnbmVkLCBtYXhpbXVtQmluYXJ5U3RyaW5nU3dpdGNoQ2FzZUxlbmd0aCwg
NTAsIE5vcm1hbCwgbnVsbHB0cikgXAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341811</attachid>
            <date>2018-06-01 17:53:06 -0700</date>
            <delta_ts>2018-06-01 19:34:26 -0700</delta_ts>
            <desc>so close</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>157309</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIzMjIyNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNDQwLDYgKzQ0MCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUEKICAgICBieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgKICAgICBieXRlY29k
ZS9FeGVjdXRpb25Db3VudGVyLmgKICAgICBieXRlY29kZS9FeGl0S2luZC5oCisgICAgYnl0ZWNv
ZGUvRXhpdGluZ0lubGluZUtpbmQuaAogICAgIGJ5dGVjb2RlL0V4aXRpbmdKSVRUeXBlLmgKICAg
ICBieXRlY29kZS9FeHByZXNzaW9uUmFuZ2VJbmZvLmgKICAgICBieXRlY29kZS9IYW5kbGVySW5m
by5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyMzIyMjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIx
MiwxMyArMjEyLDE3IEBAIGJ5dGVjb2RlL0RpcmVjdEV2YWxDb2RlQ2FjaGUuY3BwCiBieXRlY29k
ZS9FdmFsQ29kZUJsb2NrLmNwcAogYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5j
cHAKIGJ5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIuY3BwCitieXRlY29kZS9FeGl0RmxhZy5jcHAK
IGJ5dGVjb2RlL0V4aXRLaW5kLmNwcAorYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuY3BwCiBi
eXRlY29kZS9FeGl0aW5nSklUVHlwZS5jcHAKIGJ5dGVjb2RlL0Z1bGxDb2RlT3JpZ2luLmNwcAog
Ynl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suY3BwCiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNw
cAogYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCiBieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlLmNwcAorYnl0ZWNvZGUvSUNTdGF0dXNNYXAuY3BwCitieXRlY29kZS9JQ1N0YXR1c1V0
aWxzLmNwcAogYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcAogYnl0ZWNvZGUvSW5saW5lQ2FsbEZy
YW1lLmNwcAogYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lU2V0LmNwcApAQCAtMjQ1LDYgKzI0OSw3
IEBAIGJ5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwCiBieXRlY29kZS9QdXRCeUlkRmxh
Z3MuY3BwCiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAogYnl0ZWNvZGUvUHV0QnlJZFZhcmlh
bnQuY3BwCitieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAogYnl0ZWNvZGUvUmVkdWNlV2hp
dGVzcGFjZS5jcHAKIGJ5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmNwcAogYnl0ZWNvZGUvU3BlY3Vs
YXRlZFR5cGUuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI5Nyw2ICsyOTcsMTEgQEAKIAkJ
MEY0MjZBNDkxNDYwQ0JCNzAwMTMxRjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0MjZBNDYxNDYwQ0JBQjAwMTMx
RjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGNDI2QTRCMTQ2MENENkUwMDEzMUY4RiAvKiBEYXRhRm9ybWF0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQyNkE0
QTE0NjBDRDZCMDAxMzFGOEYgLyogRGF0YUZvcm1hdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDMxNzM4MTQ2QkFDNjkwMDdFMzg5MCAvKiBM
aXN0YWJsZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ0QTdCMDIw
QkY2ODYyMDAyMkIxNzEgLyogRXhpdEZsYWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDRBN0FFMjBCRjY4NUYwMDIyQjE3MSAvKiBFeGl0RmxhZy5o
ICovOyB9OworCQkwRjQ0QTdCMTIwQkY2OEM5MDAyMkIxNzEgLyogRXhpdGluZ0lubGluZUtpbmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDRBN0E3
MjBCRjY4NUQwMDIyQjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDRBN0IyMjBCRjY4Q0UwMDIyQjE3
MSAvKiBJQ1N0YXR1c01hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0NEE3QUYyMEJGNjg1RjAwMjJCMTcxIC8qIElDU3RhdHVzTWFwLmggKi87IH07
CisJCTBGNDRBN0IzMjBCRjY4RDEwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ0QTdBQTIwQkY2ODVF
MDAyMkIxNzEgLyogUmVjb3JkZWRTdGF0dXNlcy5oICovOyB9OworCQkwRjQ0QTdCNDIwQkY2OEQ5
MDAyMkIxNzEgLyogVGVybWluYXRlZENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDRBN0E4MjBCRjY4NUUwMDIyQjE3MSAvKiBUZXJt
aW5hdGVkQ29kZU9yaWdpbi5oICovOyB9OwogCQkwRjQ1NzAzOTFCRTQ0QzkxMDA2MkE2MjkgLyog
QWlyRWxpbWluYXRlRGVhZENvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNDU3MDM3MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFk
Q29kZS5oICovOyB9OwogCQkwRjQ1NzAzRDFCRTQ1RjBBMDA2MkE2MjkgLyogQWlyUmVwb3J0VXNl
ZFJlZ2lzdGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY0NTcwM0IxQkU0NUYwQTAwNjJBNjI5IC8qIEFpclJlcG9ydFVzZWRSZWdpc3RlcnMuaCAq
LzsgfTsKIAkJMEY0NTcwNDExQkU1ODRDQTAwNjJBNjI5IC8qIEIzVGltaW5nU2NvcGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDU3MDNGMUJFNTg0
Q0EwMDYyQTYyOSAvKiBCM1RpbWluZ1Njb3BlLmggKi87IH07CkBAIC0yMjg3LDYgKzIyOTIsMTYg
QEAKIAkJMEY0MjZBNEExNDYwQ0Q2QjAwMTMxRjhGIC8qIERhdGFGb3JtYXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YUZvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjQyQjNDMDIwMUVCNTA5MDAzNTcwMzEgLyogQWxsb2NhdG9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFsbG9jYXRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJs
ZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGlzdGFibGVIYW5k
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDRBN0E3MjBCRjY4NUQwMDIy
QjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBFeGl0aW5nSW5saW5lS2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjQ0QTdBODIwQkY2ODVFMDAyMkIxNzEgLyogVGVybWluYXRlZENvZGVPcmlnaW4uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVybWluYXRlZENvZGVPcmlnaW4uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NEE3QTkyMEJGNjg1RTAwMjJCMTcxIC8qIEV4aXRG
bGFnLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4aXRGbGFnLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcx
IC8qIFJlY29yZGVkU3RhdHVzZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVjb3JkZWRTdGF0dXNlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ0QTdB
QjIwQkY2ODVFMDAyMkIxNzEgLyogSUNTdGF0dXNNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSUNTdGF0dXNNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjQ0QTdBQzIwQkY2ODVGMDAyMkIxNzEgLyogRXhpdGluZ0lubGluZUtpbmQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXhpdGluZ0lubGluZUtpbmQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ0QTdBRDIwQkY2ODVGMDAyMkIx
NzEgLyogUmVjb3JkZWRTdGF0dXNlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZWNvcmRlZFN0YXR1c2VzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY0NEE3QUUyMEJGNjg1RjAwMjJCMTcxIC8qIEV4aXRGbGFnLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEV4aXRGbGFnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGNDRBN0FGMjBCRjY4NUYwMDIyQjE3MSAvKiBJQ1N0YXR1c01hcC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJQ1N0YXR1c01hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjQ0QTdCNTIwQzBCRTNGMDAyMkIxNzEgLyogSUNTdGF0dXNVdGlscy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJQ1N0YXR1c1V0aWxzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NTcwMzYxQkU0NEM5MTAwNjJBNjI5IC8q
IEFpckVsaW1pbmF0ZURlYWRDb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEFpckVsaW1pbmF0ZURlYWRDb2RlLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJFbGltaW5h
dGVEZWFkQ29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDU3MDM3MUJF
NDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBBaXJFbGltaW5hdGVEZWFkQ29kZS5oOyBwYXRoID0gYjMvYWlyL0Fp
ckVsaW1pbmF0ZURlYWRDb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDU3
MDNBMUJFNDVGMEEwMDYyQTYyOSAvKiBBaXJSZXBvcnRVc2VkUmVnaXN0ZXJzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpclJlcG9ydFVzZWRSZWdpc3RlcnMuY3Bw
OyBwYXRoID0gYjMvYWlyL0FpclJlcG9ydFVzZWRSZWdpc3RlcnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzY1OCw2ICs3NjczLDEwIEBACiAJCQkJMEY2MEZFOEUxRkZDMzZG
RDAwMDMzMjBBIC8qIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCAqLywKIAkJCQkwRjU2QTFE
NDE1MDAxQ0YyMDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5jcHAgKi8sCiAJCQkJMEY1NkEx
RDExNTAwMEYzMTAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNvdW50ZXIuaCAqLywKKwkJCQkwRjQ0QTdB
OTIwQkY2ODVFMDAyMkIxNzEgLyogRXhpdEZsYWcuY3BwICovLAorCQkJCTBGNDRBN0FFMjBCRjY4
NUYwMDIyQjE3MSAvKiBFeGl0RmxhZy5oICovLAorCQkJCTBGNDRBN0FDMjBCRjY4NUYwMDIyQjE3
MSAvKiBFeGl0aW5nSW5saW5lS2luZC5jcHAgKi8sCisJCQkJMEY0NEE3QTcyMEJGNjg1RDAwMjJC
MTcxIC8qIEV4aXRpbmdJbmxpbmVLaW5kLmggKi8sCiAJCQkJMEYwMzMyQkYxOEFERkFFMTAwNUY5
NzlBIC8qIEV4aXRpbmdKSVRUeXBlLmNwcCAqLywKIAkJCQkwRjNBQzc1MzE4OEU1RUM4MDAzMjAy
OUYgLyogRXhpdGluZ0pJVFR5cGUuaCAqLywKIAkJCQkwRkIxMDU4MjE2NzU0ODBDMDBGOEFCNkUg
LyogRXhpdEtpbmQuY3BwICovLApAQCAtNzY3NCw2ICs3NjkzLDkgQEAKIAkJCQkwRjAzMzJDMjE4
QjAxNzYzMDA1Rjk3OUEgLyogR2V0QnlJZFZhcmlhbnQuaCAqLywKIAkJCQkxNEFEOTEwODFEQ0E5
Mjk0MDAxNEY5RkUgLyogR2xvYmFsQ29kZUJsb2NrLmggKi8sCiAJCQkJMEYwQjgzQTgxNEJDRjU1
RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi8sCisJCQkJMEY0NEE3QUIyMEJGNjg1RTAwMjJC
MTcxIC8qIElDU3RhdHVzTWFwLmNwcCAqLywKKwkJCQkwRjQ0QTdBRjIwQkY2ODVGMDAyMkIxNzEg
LyogSUNTdGF0dXNNYXAuaCAqLywKKwkJCQkwRjQ0QTdCNTIwQzBCRTNGMDAyMkIxNzEgLyogSUNT
dGF0dXNVdGlscy5jcHAgKi8sCiAJCQkJMEZCMzk5QkQyMEFGNkIzODAwMTdFMjEzIC8qIElDU3Rh
dHVzVXRpbHMuaCAqLywKIAkJCQk3OTA1QkI2NjFEMTIwNTBFMDAxOUZFNTcgLyogSW5saW5lQWNj
ZXNzLmNwcCAqLywKIAkJCQk3OTA1QkI2NzFEMTIwNTBFMDAxOUZFNTcgLyogSW5saW5lQWNjZXNz
LmggKi8sCkBAIC03NzMwLDYgKzc3NTIsOCBAQAogCQkJCTBGOTNCNEE3MThCOTJDNEQwMDE3OEEz
RiAvKiBQdXRCeUlkVmFyaWFudC5jcHAgKi8sCiAJCQkJMEY5M0I0QTgxOEI5MkM0RDAwMTc4QTNG
IC8qIFB1dEJ5SWRWYXJpYW50LmggKi8sCiAJCQkJMEY5RkM4QzExNEUxQjVGQjAwRDUyQUUwIC8q
IFB1dEtpbmQuaCAqLywKKwkJCQkwRjQ0QTdBRDIwQkY2ODVGMDAyMkIxNzEgLyogUmVjb3JkZWRT
dGF0dXNlcy5jcHAgKi8sCisJCQkJMEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcxIC8qIFJlY29yZGVk
U3RhdHVzZXMuaCAqLywKIAkJCQkwRkY2MEFCRjE2NzQwRjgxMDAwMjk3NzkgLyogUmVkdWNlV2hp
dGVzcGFjZS5jcHAgKi8sCiAJCQkJMEZGNjBBQzAxNjc0MEY4MTAwMDI5Nzc5IC8qIFJlZHVjZVdo
aXRlc3BhY2UuaCAqLywKIAkJCQkwRjU1NDFBRjE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBv
aW50ZXIuY3BwICovLApAQCAtNzc0NCw2ICs3NzY4LDcgQEAKIAkJCQlCQ0NGMEQwNzBFRjBBQUI5
MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1YkluZm8uaCAqLywKIAkJCQkwRjRBMzhGNzFDOEUxM0RG
MDAxOTAzMTggLyogU3VwZXJTYW1wbGVyLmNwcCAqLywKIAkJCQkwRjRBMzhGODFDOEUxM0RGMDAx
OTAzMTggLyogU3VwZXJTYW1wbGVyLmggKi8sCisJCQkJMEY0NEE3QTgyMEJGNjg1RTAwMjJCMTcx
IC8qIFRlcm1pbmF0ZWRDb2RlT3JpZ2luLmggKi8sCiAJCQkJMEYyRDRERTUxOTgzMkRBQzAwN0Q0
QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgKi8sCiAJCQkJMEYyRDRERTYxOTgzMkRBQzAwN0Q0QjE5
IC8qIFRvVGhpc1N0YXR1cy5oICovLAogCQkJCTBGOTUyQUJBMUI0ODdBNzcwMEMzNjdDNSAvKiBU
cmFja2VkUmVmZXJlbmNlcy5jcHAgKi8sCkBAIC04NDAxLDYgKzg0MjYsNyBAQAogCQkJCTUzRDQ0
NERDMURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUzNDFGQzcyMURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJDNjNCMjFFNjBBRTQ3MDBDMTM4MzkgLyogQjNXaWR0
aC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NEE3QjIyMEJGNjhDRTAwMjJCMTcxIC8qIElDU3Rh
dHVzTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MjY3OEY4RjFBMDMxMDA5MDA2QTMwNkQgLyog
QmFzaWNCbG9ja0xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDdCODNBQzBFNkRCOEM5
MDA0Nzc1QTQgLyogQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg2OTc2RTVGMUZBM0U4QkMwMEU3QzRFMSAvKiBCaWdJbnRDb25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8sCkBAIC04NjIwLDYgKzg2NDYsNyBAQAogCQkJCTg2RUM5REM2MTMyOERGODIwMDJC
MkFENyAvKiBERkdHZW5lcmF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQzlEQzgx
MzI4REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJGQ0NG
QTE4QTYwMDcwMDAxQTI3RjggLyogREZHR3JhcGhTYWZlcG9pbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGNDRBN0IxMjBCRjY4QzkwMDIyQjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZCMTc2NjExOTZCOEY5RTAwOTEwNTJBIC8qIERGR0hlYXBMb2NhdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDODQxNjkxQkE4QzMyMTAwNjE4MzdEIC8qIERGR0lu
ZmVycmVkVHlwZUNoZWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxNEUyMTE4MTI1NzBCMDA5
QjZCNEQgLyogREZHSW5saW5lQ2FjaGVXcmFwcGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTg3NzAs
NiArODc5Nyw3IEBACiAJCQkJQTdBOEFGMzgxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0MzJBcnJh
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzkxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0
NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NDMxN0VBOUY1OTAwQUJCMjE3IC8q
IEZQUkluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDRBN0IzMjBCRjY4RDEwMDIyQjE3MSAv
KiBSZWNvcmRlZFN0YXR1c2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzRFREJGNzFEQjVGRkM5
MDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU1MTNBNjFE
NUE2ODJDMDBDMzJCRDggLyogRnJlZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjU4NUUx
MUVFMDgwNUEwMDk1MTc2RCAvKiBGcmVlTGlzdElubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAt
OTExOSw2ICs5MTQ3LDcgQEAKIAkJCQk3MDEzQ0E4QzFCNDkxQTk0MDBDQUU2MTMgLyogSlNKb2Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0xleGlj
YWxFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjMwRTE2RjVDRDAwQjM0
NDYwIC8qIEpTTG9jay5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NEE3QjAyMEJGNjg2MjAwMjJC
MTcxIC8qIEV4aXRGbGFnLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjVENzA5QzE2REU5OUY0MDBG
Q0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBNEJCN0YzMThB
NDExNzkwMDhBMEZDRCAvKiBKU01hbmFnZWRWYWx1ZUludGVybmFsLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNzAwODc0MjE3Q0JFOEVCMDBDM0U2NDMgLyogSlNNYXAuaCBpbiBIZWFkZXJzICovLApA
QCAtOTQzNSw2ICs5NDY0LDcgQEAKIAkJCQlBNzI5OURBMjE3RDEyODQ4MDA1RjVGRjkgLyogU2V0
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVFOTg0MTFBODg2NUI3MDA3NTRFOTMg
LyogU2V0dXBWYXJhcmdzRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCURDMTdFODE4MUM5Qzkx
RDkwMDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ0QTdC
NDIwQkY2OEQ5MDAyMkIxNzEgLyogVGVybWluYXRlZENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICov
LAogCQkJCURDMTdFODE5MUM5QzkxREIwMDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzMDIyRDMxRTNENzNBNTAwQkFDNDkzIC8qIFNpZ2lsbENy
YXNoQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNEQ4Qzc4MUZDQTNDRkEwMDFEMzJB
QyAvKiBTaW1wbGVNYXJraW5nQ29uc3RyYWludC5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCShyZXZpc2lvbiAyMzIyMjcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2NiwxMiArMjY2LDYgQEAgaW5saW5lIHVuc2lnbmVkIGdldEJ5VmFsSW5mb0J5
dGVjb2RlSW5kZQogICAgIHJldHVybiBpbmZvLT5ieXRlY29kZUluZGV4OwogfQogCi10eXBlZGVm
IEhhc2hNYXA8Q29kZU9yaWdpbiwgQnlWYWxJbmZvKiwgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFz
aD4gQnlWYWxJbmZvTWFwOwotCi0jZWxzZSAvLyBFTkFCTEUoSklUKQotCi10eXBlZGVmIEhhc2hN
YXA8aW50LCB2b2lkKj4gQnlWYWxJbmZvTWFwOwotCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVEdW1wZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTQyNyw3ICs0MjcsNyBAQCBzdGF0aWMgdm9pZCBkdW1wQ2hhaW4oUHJpbnRTdHJlYW0mIG91
dCwgCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgotdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9j
az46OnByaW50R2V0QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlv
biwgY29uc3QgU3R1YkluZm9NYXAmIG1hcCkKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpw
cmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNv
bnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rp
b24gPSBpbnN0cnVjdGlvbnNCZWdpbigpICsgbG9jYXRpb247CiAKQEAgLTQ0Nyw3ICs0NDcsNyBA
QCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRHZXRCeUlkCiAgICAgfQogCiAjaWYg
RU5BQkxFKEpJVCkKLSAgICBpZiAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJQdHIgPSBtYXAuZ2V0
KENvZGVPcmlnaW4obG9jYXRpb24pKSkgeworICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YlB0ciA9IHN0YXR1c01hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpLnN0dWJJbmZvKSB7CiAg
ICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9ICpzdHViUHRyOwogICAgICAgICBp
ZiAoc3R1YkluZm8ucmVzZXRCeUdDKQogICAgICAgICAgICAgb3V0LnByaW50KCIgKFJlc2V0IEJ5
IEdDKSIpOwpAQCAtNDg4LDEyICs0ODgsMTIgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46
OnByaW50R2V0QnlJZAogICAgICAgICBvdXQucHJpbnRmKCIpIik7CiAgICAgfQogI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0obWFwKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdHVzTWFwKTsKICNlbmRp
ZgogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+
OjpwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24s
IGNvbnN0IFN0dWJJbmZvTWFwJiBtYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJp
bnRQdXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25z
dCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQogewogICAgIGNvbnN0IGF1dG8qIGluc3RydWN0aW9u
ID0gaW5zdHJ1Y3Rpb25zQmVnaW4oKSArIGxvY2F0aW9uOwogCkBAIC01MjEsNyArNTIxLDcgQEAg
dm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50UHV0QnlJZAogICAgIH0KIAogI2lmIEVO
QUJMRShKSVQpCi0gICAgaWYgKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViUHRyID0gbWFwLmdldChD
b2RlT3JpZ2luKGxvY2F0aW9uKSkpIHsKKyAgICBpZiAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJQ
dHIgPSBzdGF0dXNNYXAuZ2V0KENvZGVPcmlnaW4obG9jYXRpb24pKS5zdHViSW5mbykgewogICAg
ICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSAqc3R1YlB0cjsKICAgICAgICAgaWYg
KHN0dWJJbmZvLnJlc2V0QnlHQykKICAgICAgICAgICAgIG91dC5wcmludCgiIChSZXNldCBCeSBH
QykiKTsKQEAgLTU0NywxMiArNTQ3LDEyIEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpw
cmludFB1dEJ5SWQKICAgICAgICAgb3V0LnByaW50ZigiKSIpOwogICAgIH0KICNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKG1hcCk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXR1c01hcCk7CiAjZW5kaWYK
IH0KIAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6
cHJpbnRJbkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNv
bnN0IFN0dWJJbmZvTWFwJiBtYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRJ
bkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IElD
U3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb24gPSBp
bnN0cnVjdGlvbnNCZWdpbigpICsgbG9jYXRpb247CiAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lk
IEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRJbkJ5SWRDCiAgICAgVU5VU0VEX1BBUkFNKGlk
ZW50KTsgLy8gdGVsbCB0aGUgY29tcGlsZXIgdG8gc2h1dCB1cCBpbiBjZXJ0YWluIHBsYXRmb3Jt
IGNvbmZpZ3VyYXRpb25zLgogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJQdHIgPSBtYXAuZ2V0KENvZGVPcmlnaW4obG9jYXRpb24pKSkgeworICAgIGlm
IChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YlB0ciA9IHN0YXR1c01hcC5nZXQoQ29kZU9yaWdpbihs
b2NhdGlvbikpLnN0dWJJbmZvKSB7CiAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
byA9ICpzdHViUHRyOwogICAgICAgICBpZiAoc3R1YkluZm8ucmVzZXRCeUdDKQogICAgICAgICAg
ICAgb3V0LnByaW50KCIgKFJlc2V0IEJ5IEdDKSIpOwpAQCAtNjAwLDI2ICs2MDAsMjYgQEAgdm9p
ZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50SW5CeUlkQwogICAgIH0KICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKG91dCk7Ci0gICAgVU5VU0VEX1BBUkFNKG1hcCk7CisgICAgVU5VU0VEX1BB
UkFNKHN0YXR1c01hcCk7CiAjZW5kaWYKIH0KIAogI2lmIEVOQUJMRShKSVQpCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQ2FsbExpbmtT
dGF0dXMoUHJpbnRTdHJlYW0mLCB1bnNpZ25lZCwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJikKK3Zv
aWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQ2FsbExpbmtTdGF0dXMoUHJpbnRTdHJlYW0m
LCB1bnNpZ25lZCwgY29uc3QgSUNTdGF0dXNNYXAmKQogewogfQogCiB0ZW1wbGF0ZTw+Ci12b2lk
IEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBDYWxsTGlua1N0YXR1cyhQcmludFN0cmVh
bSYgb3V0LCB1bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBtYXApCit2
b2lkIEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBDYWxsTGlua1N0YXR1cyhQcmludFN0
cmVhbSYgb3V0LCB1bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01h
cCkKIHsKICAgICBpZiAoYmxvY2soKS0+aml0VHlwZSgpICE9IEpJVENvZGU6OkZUTEpJVCkKLSAg
ICAgICAgb3V0LnByaW50KCIgc3RhdHVzKCIsIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKGJs
b2NrKCksIGxvY2F0aW9uLCBtYXApLCAiKSIpOworICAgICAgICBvdXQucHJpbnQoIiBzdGF0dXMo
IiwgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoYmxvY2soKSwgbG9jYXRpb24sIHN0YXR1c01h
cCksICIpIik7CiB9CiAjZW5kaWYKIAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVj
b2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0
aW9uLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgY2hhciog
b3AsIENhY2hlRHVtcE1vZGUgY2FjaGVEdW1wTW9kZSwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGlu
ZywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBtYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2Nr
Pjo6cHJpbnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCB0eXBl
bmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgY2hhciogb3AsIENhY2hlRHVtcE1v
ZGUgY2FjaGVEdW1wTW9kZSwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZywgY29uc3QgSUNTdGF0
dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBpbnQgZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAg
ICAgaW50IGZ1bmMgPSAoKytpdCktPnUub3BlcmFuZDsKQEAgLTYzOCw3ICs2MzgsNyBAQCB2b2lk
IEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRDYWxsT3AoCiAgICAgICAgICAgICAgICAgb3V0
LnByaW50ZigiIGxsaW50KCVwKSIsIG9iamVjdCk7CiAgICAgICAgIH0KICNpZiBFTkFCTEUoSklU
KQotICAgICAgICBpZiAoQ2FsbExpbmtJbmZvKiBpbmZvID0gbWFwLmdldChDb2RlT3JpZ2luKGxv
Y2F0aW9uKSkpIHsKKyAgICAgICAgaWYgKENhbGxMaW5rSW5mbyogaW5mbyA9IHN0YXR1c01hcC5n
ZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpLmNhbGxMaW5rSW5mbykgewogICAgICAgICAgICAgaWYg
KGluZm8tPmhhdmVMYXN0U2VlbkNhbGxlZSgpKSB7CiAgICAgICAgICAgICAgICAgSlNPYmplY3Qq
IG9iamVjdCA9IGluZm8tPmxhc3RTZWVuQ2FsbGVlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGF1
dG8qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4oKnZtKCksIG9iamVjdCkp
CkBAIC02NDgsOSArNjQ4LDkgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50Q2Fs
bE9wKAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgZHVtcENhbGxMaW5rU3Rh
dHVzKG91dCwgbG9jYXRpb24sIG1hcCk7CisgICAgICAgIGR1bXBDYWxsTGlua1N0YXR1cyhvdXQs
IGxvY2F0aW9uLCBzdGF0dXNNYXApOwogI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKG1hcCk7
CisgICAgICAgIFVOVVNFRF9QQVJBTShzdGF0dXNNYXApOwogI2VuZGlmCiAgICAgfQogICAgICsr
aXQ7CkBAIC02NzgsNyArNjc4LDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50
TG9jYXRpbwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8
QmxvY2s+OjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQmxv
Y2s6Okluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9u
KiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiBzdHViSW5mb3MsIGNvbnN0IENhbGxMaW5rSW5mb01h
cCYgY2FsbExpbmtJbmZvcykKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNv
ZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiBi
ZWdpbiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3Rh
dHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgaW50IGxvY2F0aW9uID0gaXQgLSBiZWdpbjsKICAg
ICBib29sIGhhc1ByaW50ZWRQcm9maWxpbmcgPSBmYWxzZTsKQEAgLTEwNzEsNyArMTA3MSw3IEBA
IHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgaW50IGlk
MCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBs
b2NhdGlvbiwgaXQsICJpbl9ieV9pZCIpOwogICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVz
IiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBpZE5h
bWUoaWQwLCBpZGVudGlmaWVyKGlkMCkpLmRhdGEoKSk7Ci0gICAgICAgIHByaW50SW5CeUlkQ2Fj
aGVTdGF0dXMob3V0LCBsb2NhdGlvbiwgc3R1YkluZm9zKTsKKyAgICAgICAgcHJpbnRJbkJ5SWRD
YWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdGF0dXNNYXApOwogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgY2FzZSBvcF9pbl9ieV92YWw6IHsKQEAgLTEwOTUsNyArMTA5NSw3IEBAIHZvaWQg
Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiZ2V0X2J5X2lkX2RpcmVjdCIpOwogICAgICAgICBv
dXQucHJpbnRmKCIlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShyMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBpZGVudGlmaWVyKGlkMCkpLmRhdGEoKSk7CiAg
ICAgICAgIGl0ICs9IDI7IC8vIEluY3JlbWVudCB1cCB0byB0aGUgdmFsdWUgcHJvZmlsZXIuCi0g
ICAgICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0dWJJbmZvcyk7
CisgICAgICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0YXR1c01h
cCk7CiAgICAgICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmls
aW5nKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTEwNCw3ICsxMTA0LDcgQEAgdm9pZCBC
eXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZQogICAgIGNhc2Ugb3BfZ2V0X2J5X2lk
X3Vuc2V0OgogICAgIGNhc2Ugb3BfZ2V0X2FycmF5X2xlbmd0aDogewogICAgICAgICBwcmludEdl
dEJ5SWRPcChvdXQsIGxvY2F0aW9uLCBpdCk7Ci0gICAgICAgIHByaW50R2V0QnlJZENhY2hlU3Rh
dHVzKG91dCwgbG9jYXRpb24sIHN0dWJJbmZvcyk7CisgICAgICAgIHByaW50R2V0QnlJZENhY2hl
U3RhdHVzKG91dCwgbG9jYXRpb24sIHN0YXR1c01hcCk7CiAgICAgICAgIGR1bXBWYWx1ZVByb2Zp
bGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQpAQCAtMTEzMCw3ICsxMTMwLDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBC
eXRlY29kZQogICAgIH0KICAgICBjYXNlIG9wX3B1dF9ieV9pZDogewogICAgICAgICBwcmludFB1
dEJ5SWRPcChvdXQsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZCIpOwotICAgICAgICBwcmludFB1
dEJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdHViSW5mb3MpOworICAgICAgICBwcmlu
dFB1dEJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdGF0dXNNYXApOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBvcF9wdXRfYnlfaWRfd2l0aF90aGlzOiB7CkBAIC0xNDc2
LDE1ICsxNDc2LDE1IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3BfY2FsbDogewotICAgICAgICBwcmlu
dENhbGxPcChvdXQsIGxvY2F0aW9uLCBpdCwgImNhbGwiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVk
UHJvZmlsaW5nLCBjYWxsTGlua0luZm9zKTsKKyAgICAgICAgcHJpbnRDYWxsT3Aob3V0LCBsb2Nh
dGlvbiwgaXQsICJjYWxsIiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgc3RhdHVz
TWFwKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3BfdGFpbF9jYWxsOiB7Ci0g
ICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAidGFpbF9jYWxsIiwgRHVtcENh
Y2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgY2FsbExpbmtJbmZvcyk7CisgICAgICAgIHByaW50
Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAidGFpbF9jYWxsIiwgRHVtcENhY2hlcywgaGFzUHJp
bnRlZFByb2ZpbGluZywgc3RhdHVzTWFwKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNh
c2Ugb3BfY2FsbF9ldmFsOiB7Ci0gICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0
LCAiY2FsbF9ldmFsIiwgRG9udER1bXBDYWNoZXMsIGhhc1ByaW50ZWRQcm9maWxpbmcsIGNhbGxM
aW5rSW5mb3MpOworICAgICAgICBwcmludENhbGxPcChvdXQsIGxvY2F0aW9uLCBpdCwgImNhbGxf
ZXZhbCIsIERvbnREdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmlsaW5nLCBzdGF0dXNNYXApOwog
ICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTE1MjMsNyArMTUyMyw3IEBAIHZvaWQgQnl0ZWNv
ZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IGNhc2Ugb3BfY29uc3RydWN0OiB7Ci0gICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24s
IGl0LCAiY29uc3RydWN0IiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgY2FsbExp
bmtJbmZvcyk7CisgICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAiY29uc3Ry
dWN0IiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgc3RhdHVzTWFwKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3Bfc3RyY2F0OiB7CkBAIC0xNzc4LDEwICsxNzc4
LDEwIEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKIH0KIAogdGVt
cGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJ5dGVj
b2RlKEJsb2NrKiBibG9jaywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQmxvY2s6
Okluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiYg
aXQsIGNvbnN0IFN0dWJJbmZvTWFwJiBzdHViSW5mb3MsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYg
Y2FsbExpbmtJbmZvcykKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUo
QmxvY2sqIGJsb2NrLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5z
dHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwg
Y29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBCeXRlY29kZUR1bXBlciBkdW1w
ZXIoYmxvY2ssIGJlZ2luKTsKLSAgICBkdW1wZXIuZHVtcEJ5dGVjb2RlKG91dCwgYmVnaW4sIGl0
LCBzdHViSW5mb3MsIGNhbGxMaW5rSW5mb3MpOworICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0
LCBiZWdpbiwgaXQsIHN0YXR1c01hcCk7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgpAQCAt
MTg5MCw3ICsxODkwLDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBTdHJpbmdT
dwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+
OjpkdW1wQmxvY2soQmxvY2sqIGJsb2NrLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJ
bnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgU3R1Yklu
Zm9NYXAmIHN0dWJJbmZvcywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBjYWxsTGlua0luZm9zKQor
dm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCbG9jayhCbG9jayogYmxvY2ssIGNvbnN0
IHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBQcmlu
dFN0cmVhbSYgb3V0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQogewogICAgIHNpemVf
dCBpbnN0cnVjdGlvbkNvdW50ID0gMDsKIApAQCAtMTkxMCw3ICsxOTEwLDcgQEAgdm9pZCBCeXRl
Y29kZUR1bXBlcjxCbG9jaz46OmR1bXBCbG9jayhCbAogICAgIGNvbnN0IGF1dG8qIGVuZCA9IGlu
c3RydWN0aW9ucy5lbmQoKTsKICAgICBCeXRlY29kZUR1bXBlcjxCbG9jaz4gZHVtcGVyKGJsb2Nr
LCBiZWdpbik7CiAgICAgZm9yIChjb25zdCBhdXRvKiBpdCA9IGJlZ2luOyBpdCAhPSBlbmQ7ICsr
aXQpCi0gICAgICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0LCBiZWdpbiwgaXQsIHN0dWJJbmZv
cywgY2FsbExpbmtJbmZvcyk7CisgICAgICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0LCBiZWdp
biwgaXQsIHN0YXR1c01hcCk7CiAKICAgICBkdW1wZXIuZHVtcElkZW50aWZpZXJzKG91dCk7CiAg
ICAgZHVtcGVyLmR1bXBDb25zdGFudHMob3V0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1
enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjYsNiArMjcsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDYWxsTGlua0lu
Zm8uaCIKKyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJ
bmZvLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzcsOCArMzksOCBAQCBjbGFzcyBCeXRlY29k
ZUR1bXBlciB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rp
b24gSW5zdHJ1Y3Rpb247CiAKLSAgICBzdGF0aWMgdm9pZCBkdW1wQnl0ZWNvZGUoQmxvY2sqLCBQ
cmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0
aW9uKiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiA9IFN0dWJJbmZvTWFwKCksIGNvbnN0IENhbGxM
aW5rSW5mb01hcCYgPSBDYWxsTGlua0luZm9NYXAoKSk7Ci0gICAgc3RhdGljIHZvaWQgZHVtcEJs
b2NrKEJsb2NrKiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiwg
UHJpbnRTdHJlYW0mIG91dCwgY29uc3QgU3R1YkluZm9NYXAmID0gU3R1YkluZm9NYXAoKSwgY29u
c3QgQ2FsbExpbmtJbmZvTWFwJiA9IENhbGxMaW5rSW5mb01hcCgpKTsKKyAgICBzdGF0aWMgdm9p
ZCBkdW1wQnl0ZWNvZGUoQmxvY2sqLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlv
biogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0
dXNNYXAgPSBJQ1N0YXR1c01hcCgpKTsKKyAgICBzdGF0aWMgdm9pZCBkdW1wQmxvY2soQmxvY2sq
LCBjb25zdCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmLCBQcmludFN0cmVh
bSYgb3V0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwID0gSUNTdGF0dXNNYXAoKSk7CiAK
IHByaXZhdGU6CiAgICAgQnl0ZWNvZGVEdW1wZXIoQmxvY2sqIGJsb2NrLCBjb25zdCBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4pCkBAIC02OSwxNCArNzEsMTQgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHByaW50Q29uZGl0aW9uYWxKdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3Ry
dWN0aW9uKiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgaW50IGxvY2F0aW9uLCBjb25zdCBjaGFy
KiBvcCk7CiAgICAgdm9pZCBwcmludENvbXBhcmVKdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0
IEluc3RydWN0aW9uKiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgaW50IGxvY2F0aW9uLCBjb25z
dCBjaGFyKiBvcCk7CiAgICAgdm9pZCBwcmludEdldEJ5SWRPcChQcmludFN0cmVhbSYgb3V0LCBp
bnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQpOwotICAgIHZvaWQgcHJpbnRHZXRC
eUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBTdHVi
SW5mb01hcCYpOwotICAgIHZvaWQgcHJpbnRQdXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0m
IG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBTdHViSW5mb01hcCYpOwotICAgIHZvaWQgcHJpbnRJ
bkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IFN0
dWJJbmZvTWFwJik7CisgICAgdm9pZCBwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVh
bSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IElDU3RhdHVzTWFwJik7CisgICAgdm9pZCBwcmlu
dFB1dEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0
IElDU3RhdHVzTWFwJik7CisgICAgdm9pZCBwcmludEluQnlJZENhY2hlU3RhdHVzKFByaW50U3Ry
ZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmKTsKICAgICBlbnVtIENh
Y2hlRHVtcE1vZGUgeyBEdW1wQ2FjaGVzLCBEb250RHVtcENhY2hlcyB9OwotICAgIHZvaWQgcHJp
bnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlv
biomIGl0LCBjb25zdCBjaGFyKiBvcCwgQ2FjaGVEdW1wTW9kZSwgYm9vbCYgaGFzUHJpbnRlZFBy
b2ZpbGluZywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJik7CisgICAgdm9pZCBwcmludENhbGxPcChQ
cmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNv
bnN0IGNoYXIqIG9wLCBDYWNoZUR1bXBNb2RlLCBib29sJiBoYXNQcmludGVkUHJvZmlsaW5nLCBj
b25zdCBJQ1N0YXR1c01hcCYpOwogICAgIHZvaWQgcHJpbnRQdXRCeUlkT3AoUHJpbnRTdHJlYW0m
IG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBv
cCk7CiAgICAgdm9pZCBwcmludExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQoUHJpbnRTdHJl
YW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFy
KiBvcCwgaW50IG9wZXJhbmQpOwotICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBv
dXQsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29u
c3QgU3R1YkluZm9NYXAmLCBjb25zdCBDYWxsTGlua0luZm9NYXAmKTsKKyAgICB2b2lkIGR1bXBC
eXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0
IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJik7CiAKICAgICB2b2lkIGR1bXBW
YWx1ZVByb2ZpbGluZyhQcmludFN0cmVhbSYsIGNvbnN0IEluc3RydWN0aW9uKiYsIGJvb2wmIGhh
c1ByaW50ZWRQcm9maWxpbmcpOwogICAgIHZvaWQgZHVtcEFycmF5UHJvZmlsaW5nKFByaW50U3Ry
ZWFtJiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZyk7CkBA
IC04NSw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCogYWN0dWFsUG9pbnRlckZvcihTcGVj
aWFsOjpQb2ludGVyKSBjb25zdDsKIAogI2lmIEVOQUJMRShKSVQpCi0gICAgdm9pZCBkdW1wQ2Fs
bExpbmtTdGF0dXMoUHJpbnRTdHJlYW0mLCB1bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgQ2FsbExp
bmtJbmZvTWFwJik7CisgICAgdm9pZCBkdW1wQ2FsbExpbmtTdGF0dXMoUHJpbnRTdHJlYW0mLCB1
bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmKTsKICNlbmRpZgogCiAgICAgQmxv
Y2sqIG1fYmxvY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExp
bmtJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rSW5mby5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1MiwxMiArMzUyLDYg
QEAgaW5saW5lIENvZGVPcmlnaW4gZ2V0Q2FsbExpbmtJbmZvQ29kZU9yaQogICAgIHJldHVybiBj
YWxsTGlua0luZm8uY29kZU9yaWdpbigpOwogfQogCi10eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdp
biwgQ2FsbExpbmtJbmZvKiwgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFzaD4gQ2FsbExpbmtJbmZv
TWFwOwotCi0jZWxzZSAvLyBFTkFCTEUoSklUKQotCi10eXBlZGVmIEhhc2hNYXA8aW50LCB2b2lk
Kj4gQ2FsbExpbmtJbmZvTWFwOwotCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtT
dGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua1N0YXR1cy5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcg
Kzc3LDggQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcgogfQogCiBD
YWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKLSAgICBDb2RlQmxvY2sq
IHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIGNvbnN0IENhbGxMaW5rSW5m
b01hcCYgbWFwKQorICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCwgY29uc3QgSUNTdGF0dXNNYXAmIG1hcCwKKyAgICBFeGl0U2l0ZURhdGEgZXhpdFNp
dGVEYXRhKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jay0+
bV9sb2NrKTsKICAgICAKQEAgLTg1LDkgKzg2LDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtT
dGF0dXM6OmNvbXB1dGVGbwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICAgICBV
TlVTRURfUEFSQU0obWFwKTsKICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBFeGl0U2l0ZURhdGEg
ZXhpdFNpdGVEYXRhID0gY29tcHV0ZUV4aXRTaXRlRGF0YShwcm9maWxlZEJsb2NrLCBieXRlY29k
ZUluZGV4KTsKLSAgICAKLSAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IG1hcC5nZXQo
Q29kZU9yaWdpbihieXRlY29kZUluZGV4KSk7CisgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0lu
Zm8gPSBtYXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkpLmNhbGxMaW5rSW5mbzsKICAg
ICBpZiAoIWNhbGxMaW5rSW5mbykgewogICAgICAgICBpZiAoZXhpdFNpdGVEYXRhLnRha2VzU2xv
d1BhdGgpCiAgICAgICAgICAgICByZXR1cm4gdGFrZXNTbG93UGF0aCgpOwpAQCAtMTAwLDYgKzk5
LDEyIEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm8KICNlbmRpZgog
fQogCitDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKKyAgICBDb2Rl
QmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIGNvbnN0IElDU3Rh
dHVzTWFwJiBtYXApCit7CisgICAgcmV0dXJuIGNvbXB1dGVGb3IocHJvZmlsZWRCbG9jaywgYnl0
ZWNvZGVJbmRleCwgbWFwLCBjb21wdXRlRXhpdFNpdGVEYXRhKHByb2ZpbGVkQmxvY2ssIGJ5dGVj
b2RlSW5kZXgpKTsKK30KKwogQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0YSBDYWxsTGlua1N0
YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YShDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YTsKQEAg
LTEwNywxMSArMTEyLDIxIEBAIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgQ2FsbExpbmtT
dGEKICAgICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gcHJvZmlsZWRCbG9jay0+dW5s
aW5rZWRDb2RlQmxvY2soKTsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9j
ay0+bV9sb2NrKTsKIAotICAgIGV4aXRTaXRlRGF0YS50YWtlc1Nsb3dQYXRoID0KLSAgICAgICAg
Y29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRl
Y29kZUluZGV4LCBCYWRUeXBlKSkKLSAgICAgICAgfHwgY29kZUJsb2NrLT5oYXNFeGl0U2l0ZShs
b2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRFeGVjdXRhYmxl
KSk7Ci0gICAgZXhpdFNpdGVEYXRhLmJhZEZ1bmN0aW9uID0KLSAgICAgICAgY29kZUJsb2NrLT5o
YXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBC
YWRDZWxsKSk7CisgICAgYXV0byB0YWtlc1Nsb3dQYXRoID0gWyZdIChFeGl0aW5nSW5saW5lS2lu
ZCBpbmxpbmVLaW5kKSAtPiBFeGl0RmxhZyB7CisgICAgICAgIHJldHVybiBFeGl0RmxhZygKKyAg
ICAgICAgICAgIGNvZGVCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhp
dFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkVHlwZSwgRXhpdEZyb21Bbnl0aGluZywgaW5saW5lS2lu
ZCkpCisgICAgICAgICAgICB8fCBjb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpG
cmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZEV4ZWN1dGFibGUsIEV4aXRGcm9tQW55
dGhpbmcsIGlubGluZUtpbmQpKSwKKyAgICAgICAgICAgIGlubGluZUtpbmQpOworICAgIH07Cisg
ICAgCisgICAgYXV0byBiYWRGdW5jdGlvbiA9IFsmXSAoRXhpdGluZ0lubGluZUtpbmQgaW5saW5l
S2luZCkgLT4gRXhpdEZsYWcgeworICAgICAgICByZXR1cm4gRXhpdEZsYWcoY29kZUJsb2NrLT5o
YXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBC
YWRDZWxsLCBFeGl0RnJvbUFueXRoaW5nLCBpbmxpbmVLaW5kKSksIGlubGluZUtpbmQpOworICAg
IH07CisgICAgCisgICAgZXhpdFNpdGVEYXRhLnRha2VzU2xvd1BhdGggfD0gdGFrZXNTbG93UGF0
aChFeGl0RnJvbU5vdElubGluZWQpOworICAgIGV4aXRTaXRlRGF0YS50YWtlc1Nsb3dQYXRoIHw9
IHRha2VzU2xvd1BhdGgoRXhpdEZyb21JbmxpbmVkKTsKKyAgICBleGl0U2l0ZURhdGEuYmFkRnVu
Y3Rpb24gfD0gYmFkRnVuY3Rpb24oRXhpdEZyb21Ob3RJbmxpbmVkKTsKKyAgICBleGl0U2l0ZURh
dGEuYmFkRnVuY3Rpb24gfD0gYmFkRnVuY3Rpb24oRXhpdEZyb21JbmxpbmVkKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29k
ZUluZGV4KTsKQEAgLTEzNSw2ICsxNTAsMTAgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0
dXM6OmNvbXB1dGVGbwogQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9t
Q2FsbExpbmtJbmZvKAogICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENhbGxMaW5rSW5m
byYgY2FsbExpbmtJbmZvKQogeworICAgIC8vIFdlIGNhbm5vdCB0ZWxsIHlvdSBhbnl0aGluZyBh
Ym91dCBkaXJlY3QgY2FsbHMuCisgICAgaWYgKGNhbGxMaW5rSW5mby5pc0RpcmVjdCgpKQorICAg
ICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoKTsKKyAgICAKICAgICBpZiAoY2FsbExpbmtJbmZv
LmNsZWFyZWRCeUdDKCkpCiAgICAgICAgIHJldHVybiB0YWtlc1Nsb3dQYXRoKCk7CiAgICAgCkBA
IC0yMjcsODMgKzI0Niw3NCBAQCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0
ZUZyCiAKIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAogICAgIGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ss
IENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLAotICAgIEV4aXRTaXRlRGF0YSBleGl0U2l0ZURh
dGEpCisgICAgRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YSwgRXhpdGluZ0lubGluZUtpbmQgaW5s
aW5lS2luZCkKIHsKICAgICBDYWxsTGlua1N0YXR1cyByZXN1bHQgPSBjb21wdXRlRm9yKGxvY2tl
ciwgcHJvZmlsZWRCbG9jaywgY2FsbExpbmtJbmZvKTsKLSAgICBpZiAoZXhpdFNpdGVEYXRhLmJh
ZEZ1bmN0aW9uKSB7Ci0gICAgICAgIGlmIChyZXN1bHQuaXNCYXNlZE9uU3R1YigpKSB7CisgICAg
cmVzdWx0LmFjY291bnRGb3JFeGl0cyhleGl0U2l0ZURhdGEsIGlubGluZUtpbmQpOworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisjZW5kaWYKKwordm9pZCBDYWxsTGlua1N0YXR1czo6YWNjb3VudEZv
ckV4aXRzKEV4aXRTaXRlRGF0YSBleGl0U2l0ZURhdGEsIEV4aXRpbmdJbmxpbmVLaW5kIGlubGlu
ZUtpbmQpCit7CisgICAgaWYgKGV4aXRTaXRlRGF0YS5iYWRGdW5jdGlvbi5pc1NldChpbmxpbmVL
aW5kKSkgeworICAgICAgICBpZiAoaXNCYXNlZE9uU3R1YigpKSB7CiAgICAgICAgICAgICAvLyBJ
ZiB3ZSBoYXZlIGEgcG9seW1vcnBoaWMgc3R1YiwgdGhlbiBoYXZpbmcgYW4gZXhpdCBzaXRlIGlz
IG5vdCBxdWl0ZSBzbyB1c2VmdWwuIEluCiAgICAgICAgICAgICAvLyBtb3N0IGNhc2VzLCB0aGUg
aW5mb3JtYXRpb24gaW4gdGhlIHN0dWIgaGFzIGhpZ2hlciBmaWRlbGl0eS4KLSAgICAgICAgICAg
IHJlc3VsdC5tYWtlQ2xvc3VyZUNhbGwoKTsKKyAgICAgICAgICAgIG1ha2VDbG9zdXJlQ2FsbCgp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gV2UgbWlnaHQgbm90IGhhdmUgYSBw
b2x5bW9ycGhpYyBzdHViIGZvciBhbnkgbnVtYmVyIG9mIHJlYXNvbnMuIFdoZW4gdGhpcyBoYXBw
ZW5zLCB3ZQogICAgICAgICAgICAgLy8gYXJlIGluIGxlc3MgY2VydGFpbiB0ZXJyaXRvcnksIHNv
IGV4aXQgc2l0ZXMgbWVhbiBhIGxvdC4KLSAgICAgICAgICAgIHJlc3VsdC5tX2NvdWxkVGFrZVNs
b3dQYXRoID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fY291bGRUYWtlU2xvd1BhdGggPSB0cnVlOwog
ICAgICAgICB9CiAgICAgfQotICAgIGlmIChleGl0U2l0ZURhdGEudGFrZXNTbG93UGF0aCkKLSAg
ICAgICAgcmVzdWx0Lm1fY291bGRUYWtlU2xvd1BhdGggPSB0cnVlOwogICAgIAotICAgIHJldHVy
biByZXN1bHQ7CisgICAgaWYgKGV4aXRTaXRlRGF0YS50YWtlc1Nsb3dQYXRoLmlzU2V0KGlubGlu
ZUtpbmQpKQorICAgICAgICBtX2NvdWxkVGFrZVNsb3dQYXRoID0gdHJ1ZTsKIH0KLSNlbmRpZgog
Ci12b2lkIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlREZHU3RhdHVzZXMoCi0gICAgQ29kZUJsb2Nr
KiBkZmdDb2RlQmxvY2ssIENhbGxMaW5rU3RhdHVzOjpDb250ZXh0TWFwJiBtYXApCitDYWxsTGlu
a1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKKyAgICBDb2RlQmxvY2sqIHByb2Zp
bGVkQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwKKyAgICBjb25zdCBJQ1N0YXR1c01hcCYg
YmFzZWxpbmVNYXAsIGNvbnN0IElDU3RhdHVzQ29udGV4dFN0YWNrJiBvcHRpbWl6ZWRTdGFjaykK
IHsKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBSRUxFQVNFX0FTU0VSVChkZmdDb2RlQmxvY2st
PmppdFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpOwotICAgIENvZGVCbG9jayogYmFzZWxpbmVD
b2RlQmxvY2sgPSBkZmdDb2RlQmxvY2stPmFsdGVybmF0aXZlKCk7Ci0gICAgZm9yIChhdXRvIGl0
ZXIgPSBkZmdDb2RlQmxvY2stPmNhbGxMaW5rSW5mb3NCZWdpbigpOyAhIWl0ZXI7ICsraXRlcikg
ewotICAgICAgICBDYWxsTGlua0luZm8mIGluZm8gPSAqKml0ZXI7Ci0gICAgICAgIGlmIChpbmZv
LmlzRGlyZWN0KCkpIHsKLSAgICAgICAgICAgIC8vIElmIHRoZSBERkcgd2FzIGFibGUgdG8gZ2V0
IGEgZGlyZWN0IGNhbGwgdGhlbiBwcm9iYWJseSBzbyB3aWxsIHdlLiBIb3dldmVyLCB0aGVyZSBp
cwotICAgICAgICAgICAgLy8gYSByZW1vdGUgY2hhbmNlIHRoYXQgaXQncyBiYWQgbmV3cyB0byBs
b3NlIGluZm9ybWF0aW9uIGFib3V0IHdoYXQgdGhlIERGRyBkaWQuIFdlJ2QKLSAgICAgICAgICAg
IC8vIGlkZWFsbHkgbGlrZSB0byBqdXN0IGtub3cgdGhhdCB0aGUgREZHIGhhZCBlbWl0dGVkIGEg
RGlyZWN0Q2FsbC4KLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIENv
ZGVPcmlnaW4gY29kZU9yaWdpbiA9IGluZm8uY29kZU9yaWdpbigpOwotICAgICAgICAKLSAgICAg
ICAgLy8gQ2hlY2sgaWYgd2UgaGFkIGFscmVhZHkgcHJldmlvdXNseSBtYWRlIGEgdGVycmlibGUg
bWlzdGFrZSBpbiB0aGUgRlRMIGZvciB0aGlzCi0gICAgICAgIC8vIGNvZGUgb3JpZ2luLiBOb3Rl
IHRoYXQgdGhpcyBpcyBhcHByb3hpbWF0ZSBiZWNhdXNlIHdlIGNvdWxkIGhhdmUgYSBtb25vdmFy
aWFudAotICAgICAgICAvLyBpbmxpbmUgaW4gdGhlIEZUTCB0aGF0IGVuZGVkIHVwIGZhaWxpbmcu
IFdlIHNob3VsZCBmaXggdGhhdCBhdCBzb21lIHBvaW50IGJ5Ci0gICAgICAgIC8vIGhhdmluZyBk
YXRhIHN0cnVjdHVyZXMgdG8gdHJhY2sgdGhlIGNvbnRleHQgb2YgZnJlcXVlbnQgZXhpdHMuIFRo
aXMgaXMgY3VycmVudGx5Ci0gICAgICAgIC8vIGNoYWxsZW5naW5nIGJlY2F1c2UgaXQgd291bGQg
cmVxdWlyZSBjcmVhdGluZyBhIENvZGVPcmlnaW4tYmFzZWQgZGF0YWJhc2UgaW4KLSAgICAgICAg
Ly8gYmFzZWxpbmUgQ29kZUJsb2NrcywgYnV0IHRob3NlIENvZGVCbG9ja3MgZG9uJ3QgcmVhbGx5
IGhhdmUgYSBwbGFjZSB0byBwdXQgdGhlCi0gICAgICAgIC8vIElubGluZUNhbGxGcmFtZXMuCi0g
ICAgICAgIENvZGVCbG9jayogY3VycmVudEJhc2VsaW5lID0KLSAgICAgICAgICAgIGJhc2VsaW5l
Q29kZUJsb2NrRm9yT3JpZ2luQW5kQmFzZWxpbmVDb2RlQmxvY2soY29kZU9yaWdpbiwgYmFzZWxp
bmVDb2RlQmxvY2spOwotICAgICAgICBFeGl0U2l0ZURhdGEgZXhpdFNpdGVEYXRhID0gY29tcHV0
ZUV4aXRTaXRlRGF0YShjdXJyZW50QmFzZWxpbmUsIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7
Ci0gICAgICAgIAotICAgICAgICB7Ci0gICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9j
a2VyKGRmZ0NvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgIG1hcC5hZGQoaW5mby5jb2Rl
T3JpZ2luKCksIGNvbXB1dGVGb3IobG9ja2VyLCBkZmdDb2RlQmxvY2ssIGluZm8sIGV4aXRTaXRl
RGF0YSkpOwotICAgICAgICB9CisgICAgaWYgKENhbGxMaW5rU3RhdHVzSW50ZXJuYWw6OnZlcmJv
c2UpCisgICAgICAgIGRhdGFMb2coIkZpZ3VyaW5nIG91dCBjYWxsIHByb2ZpbGluZyBmb3IgIiwg
Y29kZU9yaWdpbiwgIlxuIik7CisgICAgRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YSA9IGNvbXB1
dGVFeGl0U2l0ZURhdGEocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsK
KyAgICBpZiAoQ2FsbExpbmtTdGF0dXNJbnRlcm5hbDo6dmVyYm9zZSkgeworICAgICAgICBkYXRh
TG9nKCJ0YWtlc1Nsb3dQYXRoID0gIiwgZXhpdFNpdGVEYXRhLnRha2VzU2xvd1BhdGgsICJcbiIp
OworICAgICAgICBkYXRhTG9nKCJiYWRGdW5jdGlvbiA9ICIsIGV4aXRTaXRlRGF0YS5iYWRGdW5j
dGlvbiwgIlxuIik7CiAgICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZGZnQ29kZUJsb2Nr
KTsKLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKICAgICAKLSAgICBpZiAoQ2FsbExpbmtTdGF0
dXNJbnRlcm5hbDo6dmVyYm9zZSkgewotICAgICAgICBkYXRhTG9nKCJDb250ZXh0IG1hcDpcbiIp
OwotICAgICAgICBDb250ZXh0TWFwOjppdGVyYXRvciBpdGVyID0gbWFwLmJlZ2luKCk7Ci0gICAg
ICAgIENvbnRleHRNYXA6Oml0ZXJhdG9yIGVuZCA9IG1hcC5lbmQoKTsKLSAgICAgICAgZm9yICg7
IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKLSAgICAgICAgICAgIGRhdGFMb2coIiAgICAiLCBpdGVy
LT5rZXksICI6XG4iKTsKLSAgICAgICAgICAgIGRhdGFMb2coIiAgICAgICAgIiwgaXRlci0+dmFs
dWUsICJcbiIpOworICAgIGZvciAoY29uc3QgSUNTdGF0dXNDb250ZXh0KiBjb250ZXh0IDogb3B0
aW1pemVkU3RhY2spIHsKKyAgICAgICAgaWYgKENhbGxMaW5rU3RhdHVzSW50ZXJuYWw6OnZlcmJv
c2UpCisgICAgICAgICAgICBkYXRhTG9nKCJFeGFtaW5pbmcgc3RhdHVzIGluICIsIHBvaW50ZXJE
dW1wKGNvbnRleHQtPm9wdGltaXplZENvZGVCbG9jayksICJcbiIpOworICAgICAgICBJQ1N0YXR1
cyBzdGF0dXMgPSBjb250ZXh0LT5nZXQoY29kZU9yaWdpbik7CisgICAgICAgIGlmIChzdGF0dXMu
Y2FsbExpbmtJbmZvKSB7CisgICAgICAgICAgICBpZiAoQ2FsbExpbmtTdGF0dXNJbnRlcm5hbDo6
dmVyYm9zZSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJIYXZlIENhbGxMaW5rSW5mbyB3aXRo
IENvZGVPcmlnaW4gPSAiLCBzdGF0dXMuY2FsbExpbmtJbmZvLT5jb2RlT3JpZ2luKCksICJcbiIp
OworICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb250ZXh0LT5vcHRpbWl6
ZWRDb2RlQmxvY2stPm1fbG9jayk7CisgICAgICAgICAgICBDYWxsTGlua1N0YXR1cyByZXN1bHQg
PSBjb21wdXRlRm9yKAorICAgICAgICAgICAgICAgIGxvY2tlciwgY29udGV4dC0+b3B0aW1pemVk
Q29kZUJsb2NrLCAqc3RhdHVzLmNhbGxMaW5rSW5mbywgZXhpdFNpdGVEYXRhLAorICAgICAgICAg
ICAgICAgIGNvZGVPcmlnaW4uZXhpdGluZ0lubGluZUtpbmQoKSk7CisgICAgICAgICAgICBpZiAo
Q2FsbExpbmtTdGF0dXNJbnRlcm5hbDo6dmVyYm9zZSkKKyAgICAgICAgICAgICAgICBkYXRhTG9n
KCJHb3QgcmVzdWx0OiAiLCByZXN1bHQsICJcbiIpOworICAgICAgICAgICAgaWYgKHJlc3VsdCkK
KyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBpZiAoc3RhdHVzLmNhbGxTdGF0dXMpIHsKKyAgICAgICAgICAgIENhbGxMaW5rU3RhdHVz
IHJlc3VsdCA9ICpzdGF0dXMuY2FsbFN0YXR1czsKKyAgICAgICAgICAgIGlmIChDYWxsTGlua1N0
YXR1c0ludGVybmFsOjp2ZXJib3NlKQorICAgICAgICAgICAgICAgIGRhdGFMb2coIkhhdmUgY2Fs
bFN0YXR1czogIiwgcmVzdWx0LCAiXG4iKTsKKyAgICAgICAgICAgIHJlc3VsdC5hY2NvdW50Rm9y
RXhpdHMoZXhpdFNpdGVEYXRhLCBjb2RlT3JpZ2luLmV4aXRpbmdJbmxpbmVLaW5kKCkpOworICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgIH0KLX0KLQotQ2FsbExpbmtT
dGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgQ29kZUJsb2NrKiBwcm9maWxl
ZEJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sCi0gICAgY29uc3QgQ2FsbExpbmtJbmZvTWFw
JiBiYXNlbGluZU1hcCwgY29uc3QgQ2FsbExpbmtTdGF0dXM6OkNvbnRleHRNYXAmIGRmZ01hcCkK
LXsKLSAgICBhdXRvIGl0ZXIgPSBkZmdNYXAuZmluZChjb2RlT3JpZ2luKTsKLSAgICBpZiAoaXRl
ciAhPSBkZmdNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiBpdGVyLT52YWx1ZTsKICAgICAKLSAg
ICByZXR1cm4gY29tcHV0ZUZvcihwcm9maWxlZEJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5k
ZXgsIGJhc2VsaW5lTWFwKTsKKyAgICBDYWxsTGlua1N0YXR1cyByZXN1bHQgPSBjb21wdXRlRm9y
KHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgYmFzZWxpbmVNYXAsIGV4
aXRTaXRlRGF0YSk7CisgICAgaWYgKENhbGxMaW5rU3RhdHVzSW50ZXJuYWw6OnZlcmJvc2UpCisg
ICAgICAgIGRhdGFMb2coIkNvbXB1dGVkIGZyb20gYmFzZWxpbmU6ICIsIHJlc3VsdCwgIlxuIik7
CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBDYWxsTGlua1N0YXR1czo6c2V0UHJvdmVu
Q29uc3RhbnRDYWxsZWUoQ2FsbFZhcmlhbnQgdmFyaWFudCkKQEAgLTMyNyw2ICszMzcsMjQgQEAg
dm9pZCBDYWxsTGlua1N0YXR1czo6bWFrZUNsb3N1cmVDYWxsKCkKICAgICBtX3ZhcmlhbnRzID0g
ZGVzcGVjaWZpZWRWYXJpYW50TGlzdChtX3ZhcmlhbnRzKTsKIH0KIAorYm9vbCBDYWxsTGlua1N0
YXR1czo6ZmluYWxpemUoKQoreworICAgIGZvciAoQ2FsbFZhcmlhbnQmIHZhcmlhbnQgOiBtX3Zh
cmlhbnRzKSB7CisgICAgICAgIGlmICghdmFyaWFudC5maW5hbGl6ZSgpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDYWxsTGlu
a1N0YXR1czo6ZmlsdGVyKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBtX3ZhcmlhbnRz
LnJlbW92ZUFsbE1hdGNoaW5nKAorICAgICAgICBbJl0gKENhbGxWYXJpYW50JiB2YXJpYW50KSAt
PiBib29sIHsKKyAgICAgICAgICAgIHZhcmlhbnQuZmlsdGVyKHZtLCB2YWx1ZSk7CisgICAgICAg
ICAgICByZXR1cm4gIXZhcmlhbnQ7CisgICAgICAgIH0pOworfQorCiB2b2lkIENhbGxMaW5rU3Rh
dHVzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgaWYgKCFpc1NldCgpKSB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0
dXMuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNs
dWRlICJDYWxsVmFyaWFudC5oIgogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJD
b25jdXJyZW50SlNMb2NrLmgiCisjaW5jbHVkZSAiRXhpdEZsYWcuaCIKKyNpbmNsdWRlICJJQ1N0
YXR1c01hcC5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBA
IC02MCwzOSArNjIsMzMgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAgCi0gICAgc3RhdGlj
IENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoCi0gICAgICAgIENvZGVCbG9jayosIHVuc2lnbmVk
IGJ5dGVjb2RlSW5kZXgsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYpOwotCiAgICAgc3RydWN0IEV4
aXRTaXRlRGF0YSB7Ci0gICAgICAgIGJvb2wgdGFrZXNTbG93UGF0aCB7IGZhbHNlIH07Ci0gICAg
ICAgIGJvb2wgYmFkRnVuY3Rpb24geyBmYWxzZSB9OworICAgICAgICBFeGl0RmxhZyB0YWtlc1Ns
b3dQYXRoOworICAgICAgICBFeGl0RmxhZyBiYWRGdW5jdGlvbjsKICAgICB9OwogICAgIHN0YXRp
YyBFeGl0U2l0ZURhdGEgY29tcHV0ZUV4aXRTaXRlRGF0YShDb2RlQmxvY2sqLCB1bnNpZ25lZCBi
eXRlY29kZUluZGV4KTsKICAgICAKKyAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZv
cihDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBjb25zdCBJQ1N0YXR1c01hcCYs
IEV4aXRTaXRlRGF0YSk7CisgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoQ29k
ZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgY29uc3QgSUNTdGF0dXNNYXAmKTsKKwog
I2lmIEVOQUJMRShKSVQpCiAgICAgLy8gQ29tcHV0ZXMgdGhlIHN0YXR1cyBhc3N1bWluZyB0aGF0
IHdlIG5ldmVyIHRvb2sgc2xvdyBwYXRoIGFuZCBuZXZlciBwcmV2aW91c2x5CiAgICAgLy8gZXhp
dGVkLgogICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYsIENvZGVCbG9jayosIENhbGxMaW5rSW5mbyYpOworICAgIAorICAgIC8vIENv
bXB1dGVzIHRoZSBzdGF0dXMgYWNjb3VudGluZyBmb3IgZXhpdHMuCiAgICAgc3RhdGljIENhbGxM
aW5rU3RhdHVzIGNvbXB1dGVGb3IoCi0gICAgICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYs
IENvZGVCbG9jayosIENhbGxMaW5rSW5mbyYsIEV4aXRTaXRlRGF0YSk7CisgICAgICAgIGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayosIENhbGxMaW5rSW5mbyYsIEV4aXRTaXRl
RGF0YSwgRXhpdGluZ0lubGluZUtpbmQgPSBFeGl0RnJvbUFueUlubGluZUtpbmQpOwogI2VuZGlm
CiAgICAgCi0gICAgdHlwZWRlZiBIYXNoTWFwPENvZGVPcmlnaW4sIENhbGxMaW5rU3RhdHVzLCBD
b2RlT3JpZ2luQXBwcm94aW1hdGVIYXNoPiBDb250ZXh0TWFwOwotICAgIAotICAgIC8vIENvbXB1
dGVzIGFsbCBvZiB0aGUgc3RhdHVzZXMgb2YgdGhlIERGRyBjb2RlIGJsb2NrLiBEb2Vzbid0IGlu
Y2x1ZGUgc3RhdHVzZXMgdGhhdCBoYWQKLSAgICAvLyBubyBpbmZvcm1hdGlvbi4gQ3VycmVudGx5
IHdlIHVzZSB0aGlzIHdoZW4gY29tcGlsaW5nIEZUTCBjb2RlLCB0byBlbmFibGUgcG9seXZhcmlh
bnQKLSAgICAvLyBpbmxpbmluZy4KLSAgICBzdGF0aWMgdm9pZCBjb21wdXRlREZHU3RhdHVzZXMo
Q29kZUJsb2NrKiBkZmdDb2RlQmxvY2ssIENvbnRleHRNYXAmKTsKLSAgICAKLSAgICAvLyBIZWxw
ZXIgdGhhdCBmaXJzdCBjb25zdWx0cyB0aGUgQ29udGV4dE1hcCBhbmQgdGhlbiBkb2VzIGNvbXB1
dGVGb3IoKS4KICAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcigKLSAgICAgICAg
Q29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiwgY29uc3QgQ29u
dGV4dE1hcCYpOworICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBjb25zdCBJQ1N0YXR1
c01hcCYsIGNvbnN0IElDU3RhdHVzQ29udGV4dFN0YWNrJik7CiAgICAgCiAgICAgdm9pZCBzZXRQ
cm92ZW5Db25zdGFudENhbGxlZShDYWxsVmFyaWFudCk7CiAgICAgCiAgICAgYm9vbCBpc1NldCgp
IGNvbnN0IHsgcmV0dXJuICFtX3ZhcmlhbnRzLmlzRW1wdHkoKSB8fCBtX2NvdWxkVGFrZVNsb3dQ
YXRoOyB9CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQo
KTsgfQorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBpc1NldCgp
OyB9CiAgICAgCiAgICAgYm9vbCBjb3VsZFRha2VTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y291bGRUYWtlU2xvd1BhdGg7IH0KICAgICAKQEAgLTExMCw2ICsxMDYsMTAgQEAgcHVibGljOgog
ICAgIAogICAgIHVuc2lnbmVkIG1heE51bUFyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fbWF4
TnVtQXJndW1lbnRzOyB9CiAgICAgCisgICAgYm9vbCBmaW5hbGl6ZSgpOworICAgIAorICAgIHZv
aWQgZmlsdGVyKFZNJiwgSlNWYWx1ZSk7CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgpAQCAtMTIxLDYgKzEyMSw4IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENhbGxMaW5rSW5mbyYpOwogI2VuZGlm
CiAgICAgCisgICAgdm9pZCBhY2NvdW50Rm9yRXhpdHMoRXhpdFNpdGVEYXRhLCBFeGl0aW5nSW5s
aW5lS2luZCk7CisgICAgCiAgICAgQ2FsbFZhcmlhbnRMaXN0IG1fdmFyaWFudHM7CiAgICAgYm9v
bCBtX2NvdWxkVGFrZVNsb3dQYXRoIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNQcm92ZWQgeyBm
YWxzZSB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZh
cmlhbnQuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbFZhcmlhbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDYgKzMxLDM1IEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCitib29sIENhbGxWYXJpYW50OjpmaW5hbGl6ZSgpCit7Cisg
ICAgaWYgKG1fY2FsbGVlICYmICFIZWFwOjppc01hcmtlZChtX2NhbGxlZSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDYWxsVmFyaWFudDo6Zmls
dGVyKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAoISp0aGlzKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgaWYgKCFpc0Nsb3N1cmVDYWxsKCkpIHsKKyAgICAgICAgaWYgKG5v
bkV4ZWN1dGFibGVDYWxsZWUoKSAhPSB2YWx1ZSkKKyAgICAgICAgICAgICp0aGlzID0gQ2FsbFZh
cmlhbnQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoSlNGdW5jdGlv
biogZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgdmFsdWUpKSB7Cisg
ICAgICAgIGlmIChmdW5jdGlvbi0+ZXhlY3V0YWJsZSgpID09IGV4ZWN1dGFibGUoKSkKKyAgICAg
ICAgICAgICp0aGlzID0gQ2FsbFZhcmlhbnQoZnVuY3Rpb24pOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICAqdGhpcyA9IENhbGxWYXJpYW50KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgCisgICAgKnRoaXMgPSBDYWxsVmFyaWFudCgpOworfQorCiB2b2lkIENhbGxWYXJpYW50Ojpk
dW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgaWYgKCEqdGhpcykgewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgJKHJldmlzaW9u
IDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgIHsKICAgICB9
CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsZWU7IH0K
KyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2NhbGxlZTsg
fQogICAgIAogICAgIC8vIElmIHRoaXMgdmFyaWFudCByZWZlcnMgdG8gYSBmdW5jdGlvbiwgY2hh
bmdlIGl0IHRvIHJlZmVyIHRvIGl0cyBleGVjdXRhYmxlLgogICAgIEFMV0FZU19JTkxJTkUgQ2Fs
bFZhcmlhbnQgZGVzcGVjaWZpZWRDbG9zdXJlKCkgY29uc3QKQEAgLTEzNiw2ICsxMzYsMTAgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCisgICAgYm9vbCBm
aW5hbGl6ZSgpOworICAgIAorICAgIHZvaWQgZmlsdGVyKFZNJiwgSlNWYWx1ZSk7CisgICAgCiAg
ICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OwogICAgIAogICAgIGJvb2wgaXNI
YXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MzgsMjQgKzIzOCwyMCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKCkKIAogdm9pZCBD
b2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0KQogewotICAgIFN0dWJJbmZv
TWFwIHN0dWJJbmZvczsKLSAgICBDYWxsTGlua0luZm9NYXAgY2FsbExpbmtJbmZvczsKLSAgICBn
ZXRTdHViSW5mb01hcChzdHViSW5mb3MpOwotICAgIGdldENhbGxMaW5rSW5mb01hcChjYWxsTGlu
a0luZm9zKTsKLSAgICBCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wQmxvY2sodGhpcywg
aW5zdHJ1Y3Rpb25zKCksIG91dCwgc3R1YkluZm9zLCBjYWxsTGlua0luZm9zKTsKKyAgICBJQ1N0
YXR1c01hcCBzdGF0dXNNYXA7CisgICAgZ2V0SUNTdGF0dXNNYXAoc3RhdHVzTWFwKTsKKyAgICBC
eXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wQmxvY2sodGhpcywgaW5zdHJ1Y3Rpb25zKCks
IG91dCwgc3RhdHVzTWFwKTsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmlu
dFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9u
KiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiBzdHViSW5mb3MsIGNvbnN0IENhbGxMaW5rSW5mb01h
cCYgY2FsbExpbmtJbmZvcykKK3ZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJl
YW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0
LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQogewotICAgIEJ5dGVjb2RlRHVtcGVyPENv
ZGVCbG9jaz46OmR1bXBCeXRlY29kZSh0aGlzLCBvdXQsIGJlZ2luLCBpdCwgc3R1YkluZm9zLCBj
YWxsTGlua0luZm9zKTsKKyAgICBCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wQnl0ZWNv
ZGUodGhpcywgb3V0LCBiZWdpbiwgaXQsIHN0YXR1c01hcCk7CiB9CiAKLXZvaWQgQ29kZUJsb2Nr
OjpkdW1wQnl0ZWNvZGUoCi0gICAgUHJpbnRTdHJlYW0mIG91dCwgdW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQsCi0gICAgY29uc3QgU3R1YkluZm9NYXAmIHN0dWJJbmZvcywgY29uc3QgQ2FsbExpbmtJ
bmZvTWFwJiBjYWxsTGlua0luZm9zKQordm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmlu
dFN0cmVhbSYgb3V0LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgSUNTdGF0dXNNYXAm
IHN0YXR1c01hcCkKIHsKICAgICBjb25zdCBJbnN0cnVjdGlvbiogaXQgPSAmaW5zdHJ1Y3Rpb25z
KClbYnl0ZWNvZGVPZmZzZXRdOwotICAgIGR1bXBCeXRlY29kZShvdXQsIGluc3RydWN0aW9ucygp
LmJlZ2luKCksIGl0LCBzdHViSW5mb3MsIGNhbGxMaW5rSW5mb3MpOworICAgIGR1bXBCeXRlY29k
ZShvdXQsIGluc3RydWN0aW9ucygpLmJlZ2luKCksIGl0LCBzdGF0dXNNYXApOwogfQogCiAjZGVm
aW5lIEZPUl9FQUNIX01FTUJFUl9WRUNUT1IobWFjcm8pIFwKQEAgLTExNjYsNiArMTE2Miw5IEBA
IHZvaWQgQ29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhjb24KICNpZiBFTkFCTEUoREZH
X0pJVCkKICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpIHsKICAg
ICAgICAgREZHOjpDb21tb25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENvZGUtPmRmZ0NvbW1vbigp
OworICAgICAgICAKKyAgICAgICAgZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLm1hcmtJZkNo
ZWFwKHZpc2l0b3IpOworICAgICAgICAKICAgICAgICAgZm9yIChhdXRvJiB3ZWFrUmVmZXJlbmNl
IDogZGZnQ29tbW9uLT53ZWFrU3RydWN0dXJlUmVmZXJlbmNlcykKICAgICAgICAgICAgIHdlYWtS
ZWZlcmVuY2UtPm1hcmtJZkNoZWFwKHZpc2l0b3IpOwogCkBAIC0xMzk3LDU3ICsxMzk2LDQzIEBA
IHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICAgICAgICAgZmluYWxp
emVCYXNlbGluZUpJVElubGluZUNhY2hlcygpOwogI2VuZGlmCiAKLSAgICBWTTo6U3BhY2VBbmRG
aW5hbGl6ZXJTZXQ6OmZpbmFsaXplclNldEZvcigqc3Vic3BhY2UoKSkucmVtb3ZlKHRoaXMpOwot
fQotCi12b2lkIENvZGVCbG9jazo6Z2V0U3R1YkluZm9NYXAoY29uc3QgQ29uY3VycmVudEpTTG9j
a2VyJiwgU3R1YkluZm9NYXAmIHJlc3VsdCkKLXsKLSNpZiBFTkFCTEUoSklUKQotICAgIGlmIChK
SVRDb2RlOjppc0pJVChqaXRUeXBlKCkpKQotICAgICAgICB0b0hhc2hNYXAobV9zdHViSW5mb3Ms
IGdldFN0cnVjdHVyZVN0dWJJbmZvQ29kZU9yaWdpbiwgcmVzdWx0KTsKLSNlbHNlCi0gICAgVU5V
U0VEX1BBUkFNKHJlc3VsdCk7Ci0jZW5kaWYKLX0KLQotdm9pZCBDb2RlQmxvY2s6OmdldFN0dWJJ
bmZvTWFwKFN0dWJJbmZvTWFwJiByZXN1bHQpCi17Ci0gICAgQ29uY3VycmVudEpTTG9ja2VyIGxv
Y2tlcihtX2xvY2spOwotICAgIGdldFN0dWJJbmZvTWFwKGxvY2tlciwgcmVzdWx0KTsKLX0KLQot
dm9pZCBDb2RlQmxvY2s6OmdldENhbGxMaW5rSW5mb01hcChjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImLCBDYWxsTGlua0luZm9NYXAmIHJlc3VsdCkKLXsKLSNpZiBFTkFCTEUoSklUKQotICAgIGlm
IChKSVRDb2RlOjppc0pJVChqaXRUeXBlKCkpKQotICAgICAgICB0b0hhc2hNYXAobV9jYWxsTGlu
a0luZm9zLCBnZXRDYWxsTGlua0luZm9Db2RlT3JpZ2luLCByZXN1bHQpOwotI2Vsc2UKLSAgICBV
TlVTRURfUEFSQU0ocmVzdWx0KTsKLSNlbmRpZgotfQorICAgIGlmIChKSVRDb2RlOjppc09wdGlt
aXppbmdKSVQoaml0VHlwZSgpKSkgeworICAgICAgICBERkc6OkNvbW1vbkRhdGEqIGRmZ0NvbW1v
biA9IG1faml0Q29kZS0+ZGZnQ29tbW9uKCk7CisgICAgICAgIGRmZ0NvbW1vbi0+cmVjb3JkZWRT
dGF0dXNlcy5maW5hbGl6ZSgpOworICAgIH0KIAotdm9pZCBDb2RlQmxvY2s6OmdldENhbGxMaW5r
SW5mb01hcChDYWxsTGlua0luZm9NYXAmIHJlc3VsdCkKLXsKLSAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgZ2V0Q2FsbExpbmtJbmZvTWFwKGxvY2tlciwgcmVzdWx0
KTsKKyAgICBWTTo6U3BhY2VBbmRGaW5hbGl6ZXJTZXQ6OmZpbmFsaXplclNldEZvcigqc3Vic3Bh
Y2UoKSkucmVtb3ZlKHRoaXMpOwogfQogCi12b2lkIENvZGVCbG9jazo6Z2V0QnlWYWxJbmZvTWFw
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5VmFsSW5mb01hcCYgcmVzdWx0KQordm9pZCBD
b2RlQmxvY2s6OmdldElDU3RhdHVzTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIElDU3Rh
dHVzTWFwJiByZXN1bHQpCiB7CiAjaWYgRU5BQkxFKEpJVCkKICAgICBpZiAoSklUQ29kZTo6aXNK
SVQoaml0VHlwZSgpKSkgewotICAgICAgICBmb3IgKGF1dG8qIGJ5VmFsSW5mbyA6IG1fYnlWYWxJ
bmZvcykKLSAgICAgICAgICAgIHJlc3VsdC5hZGQoQ29kZU9yaWdpbihieVZhbEluZm8tPmJ5dGVj
b2RlSW5kZXgpLCBieVZhbEluZm8pOworICAgICAgICBmb3IgKFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbyA6IG1fc3R1YkluZm9zKQorICAgICAgICAgICAgcmVzdWx0LmFkZChzdHViSW5mby0+
Y29kZU9yaWdpbiwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLnN0dWJJbmZvID0gc3R1Yklu
Zm87CisgICAgICAgIGZvciAoQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gOiBtX2NhbGxMaW5r
SW5mb3MpCisgICAgICAgICAgICByZXN1bHQuYWRkKGNhbGxMaW5rSW5mby0+Y29kZU9yaWdpbigp
LCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUuY2FsbExpbmtJbmZvID0gY2FsbExpbmtJbmZv
OworICAgICAgICBmb3IgKEJ5VmFsSW5mbyogYnlWYWxJbmZvIDogbV9ieVZhbEluZm9zKQorICAg
ICAgICAgICAgcmVzdWx0LmFkZChDb2RlT3JpZ2luKGJ5VmFsSW5mby0+Ynl0ZWNvZGVJbmRleCks
IElDU3RhdHVzKCkpLml0ZXJhdG9yLT52YWx1ZS5ieVZhbEluZm8gPSBieVZhbEluZm87CisgICAg
ICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0VHlwZSgpKSkgeworICAgICAgICAg
ICAgREZHOjpDb21tb25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENvZGUtPmRmZ0NvbW1vbigpOwor
ICAgICAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2Vz
LmNhbGxzKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQocGFpci5maXJzdCwgSUNTdGF0dXMo
KSkuaXRlcmF0b3ItPnZhbHVlLmNhbGxTdGF0dXMgPSBwYWlyLnNlY29uZC5nZXQoKTsKKyAgICAg
ICAgICAgIGZvciAoYXV0byYgcGFpciA6IGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5nZXRz
KQorICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQocGFpci5maXJzdCwgSUNTdGF0dXMoKSkuaXRl
cmF0b3ItPnZhbHVlLmdldFN0YXR1cyA9IHBhaXIuc2Vjb25kLmdldCgpOworICAgICAgICAgICAg
Zm9yIChhdXRvJiBwYWlyIDogZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLnB1dHMpCisgICAg
ICAgICAgICAgICAgcmVzdWx0LmFkZChwYWlyLmZpcnN0LCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+
dmFsdWUucHV0U3RhdHVzID0gcGFpci5zZWNvbmQuZ2V0KCk7CisgICAgICAgIH0KICAgICB9CiAj
ZWxzZQogICAgIFVOVVNFRF9QQVJBTShyZXN1bHQpOwogI2VuZGlmCiB9CiAKLXZvaWQgQ29kZUJs
b2NrOjpnZXRCeVZhbEluZm9NYXAoQnlWYWxJbmZvTWFwJiByZXN1bHQpCit2b2lkIENvZGVCbG9j
azo6Z2V0SUNTdGF0dXNNYXAoSUNTdGF0dXNNYXAmIHJlc3VsdCkKIHsKICAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgZ2V0QnlWYWxJbmZvTWFwKGxvY2tlciwgcmVz
dWx0KTsKKyAgICBnZXRJQ1N0YXR1c01hcChsb2NrZXIsIHJlc3VsdCk7CiB9CiAKICNpZiBFTkFC
TEUoSklUKQpAQCAtMTUxNCw3ICsxNDk5LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnJlc2V0SklURGF0
YSgpCiAgICAgCiAgICAgLy8gV2UgY2FuIGNsZWFyIHRoZXNlIGJlY2F1c2Ugbm8gb3RoZXIgdGhy
ZWFkIHdpbGwgaGF2ZSByZWZlcmVuY2VzIHRvIGFueSBzdHViIGluZm9zLCBjYWxsCiAgICAgLy8g
bGluayBpbmZvcywgb3IgYnkgdmFsIGluZm9zIGlmIHdlIGRvbid0IGhhdmUgSklUIGNvZGUuIEF0
dGVtcHRzIHRvIHF1ZXJ5IHRoZXNlIGRhdGEKLSAgICAvLyBzdHJ1Y3R1cmVzIHVzaW5nIHRoZSBj
b25jdXJyZW50IEFQSSAoZ2V0U3R1YkluZm9NYXAgYW5kIGZyaWVuZHMpIHdpbGwgcmV0dXJuIG5v
dGhpbmcgaWYgd2UKKyAgICAvLyBzdHJ1Y3R1cmVzIHVzaW5nIHRoZSBjb25jdXJyZW50IEFQSSAo
Z2V0SUNTdGF0dXNNYXAgYW5kIGZyaWVuZHMpIHdpbGwgcmV0dXJuIG5vdGhpbmcgaWYgd2UKICAg
ICAvLyBkb24ndCBoYXZlIEpJVCBjb2RlLgogICAgIG1fc3R1YkluZm9zLmNsZWFyKCk7CiAgICAg
bV9jYWxsTGlua0luZm9zLmNsZWFyKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcg
QEAKICNpbmNsdWRlICJFeHByZXNzaW9uUmFuZ2VJbmZvLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25F
eGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiSGFuZGxlckluZm8uaCIKKyNpbmNsdWRlICJJQ1N0YXR1
c01hcC5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgog
I2luY2x1ZGUgIkpJVENvZGVNYXAuaCIKQEAgLTk2LDggKzk3LDYgQEAgZW51bSBjbGFzcyBBY2Nl
c3NUeXBlIDogaW50OF90OwogCiBzdHJ1Y3QgQXJpdGhQcm9maWxlOwogCi10eXBlZGVmIEhhc2hN
YXA8Q29kZU9yaWdpbiwgU3RydWN0dXJlU3R1YkluZm8qLCBDb2RlT3JpZ2luQXBwcm94aW1hdGVI
YXNoPiBTdHViSW5mb01hcDsKLQogZW51bSBSZW9wdGltaXphdGlvbk1vZGUgeyBEb250Q291bnRS
ZW9wdGltaXphdGlvbiwgQ291bnRSZW9wdGltaXphdGlvbiB9OwogCiBjbGFzcyBDb2RlQmxvY2sg
OiBwdWJsaWMgSlNDZWxsIHsKQEAgLTE5Niw4ICsxOTUsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGR1bXBCeXRlY29kZSgpOwogICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJik7Ci0g
ICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rpb24q
IGJlZ2luLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBTdHViSW5mb01hcCYgPSBTdHVi
SW5mb01hcCgpLCBjb25zdCBDYWxsTGlua0luZm9NYXAmID0gQ2FsbExpbmtJbmZvTWFwKCkpOwot
ICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0LCBjb25zdCBTdHViSW5mb01hcCYgPSBTdHViSW5mb01hcCgpLCBjb25zdCBDYWxsTGlu
a0luZm9NYXAmID0gQ2FsbExpbmtJbmZvTWFwKCkpOworICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFBy
aW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rp
b24qJiBpdCwgY29uc3QgSUNTdGF0dXNNYXAmID0gSUNTdGF0dXNNYXAoKSk7CisgICAgdm9pZCBk
dW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNv
bnN0IElDU3RhdHVzTWFwJiA9IElDU3RhdHVzTWFwKCkpOwogCiAgICAgdm9pZCBkdW1wRXhjZXB0
aW9uSGFuZGxlcnMoUHJpbnRTdHJlYW0mKTsKICAgICB2b2lkIHByaW50U3RydWN0dXJlcyhQcmlu
dFN0cmVhbSYsIGNvbnN0IEluc3RydWN0aW9uKik7CkBAIC0yMzcsMTQgKzIzNiw4IEBAIHB1Ymxp
YzoKIAogICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5dGVjb2RlT2Zmc2V0RnJvbUNhbGxT
aXRlSW5kZXgoQ2FsbFNpdGVJbmRleCk7CiAKLSAgICB2b2lkIGdldFN0dWJJbmZvTWFwKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYsIFN0dWJJbmZvTWFwJiByZXN1bHQpOwotICAgIHZvaWQgZ2V0
U3R1YkluZm9NYXAoU3R1YkluZm9NYXAmIHJlc3VsdCk7Ci0gICAgCi0gICAgdm9pZCBnZXRDYWxs
TGlua0luZm9NYXAoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ2FsbExpbmtJbmZvTWFwJiBy
ZXN1bHQpOwotICAgIHZvaWQgZ2V0Q2FsbExpbmtJbmZvTWFwKENhbGxMaW5rSW5mb01hcCYgcmVz
dWx0KTsKLQotICAgIHZvaWQgZ2V0QnlWYWxJbmZvTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tl
ciYsIEJ5VmFsSW5mb01hcCYgcmVzdWx0KTsKLSAgICB2b2lkIGdldEJ5VmFsSW5mb01hcChCeVZh
bEluZm9NYXAmIHJlc3VsdCk7CisgICAgdm9pZCBnZXRJQ1N0YXR1c01hcChjb25zdCBDb25jdXJy
ZW50SlNMb2NrZXImLCBJQ1N0YXR1c01hcCYgcmVzdWx0KTsKKyAgICB2b2lkIGdldElDU3RhdHVz
TWFwKElDU3RhdHVzTWFwJiByZXN1bHQpOwogICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgSklU
QWRkSUMqIGFkZEpJVEFkZElDKEFyaXRoUHJvZmlsZSosIEluc3RydWN0aW9uKik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCShyZXZpc2lv
biAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEyLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEyLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC00Niw3ICs0Niw3IEBAIHVuc2lnbmVkIENvZGVPcmlnaW46
OmlubGluZURlcHRoKCkgY29uc3QKICAgICByZXR1cm4gaW5saW5lRGVwdGhGb3JDYWxsRnJhbWUo
aW5saW5lQ2FsbEZyYW1lKTsKIH0KIAotYm9vbCBDb2RlT3JpZ2luOjppc0FwcHJveGltYXRlbHlF
cXVhbFRvKGNvbnN0IENvZGVPcmlnaW4mIG90aGVyKSBjb25zdAorYm9vbCBDb2RlT3JpZ2luOjpp
c0FwcHJveGltYXRlbHlFcXVhbFRvKGNvbnN0IENvZGVPcmlnaW4mIG90aGVyLCBJbmxpbmVDYWxs
RnJhbWUqIHRlcm1pbmFsKSBjb25zdAogewogICAgIENvZGVPcmlnaW4gYSA9ICp0aGlzOwogICAg
IENvZGVPcmlnaW4gYiA9IG90aGVyOwpAQCAtNjgsMTAgKzY4LDEyIEBAIGJvb2wgQ29kZU9yaWdp
bjo6aXNBcHByb3hpbWF0ZWx5RXF1YWxUbygKICAgICAgICAgaWYgKGEuYnl0ZWNvZGVJbmRleCAh
PSBiLmJ5dGVjb2RlSW5kZXgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAot
ICAgICAgICBpZiAoKCEhYS5pbmxpbmVDYWxsRnJhbWUpICE9ICghIWIuaW5saW5lQ2FsbEZyYW1l
KSkKKyAgICAgICAgYm9vbCBhSGFzSW5saW5lQ2FsbEZyYW1lID0gISFhLmlubGluZUNhbGxGcmFt
ZSAmJiBhLmlubGluZUNhbGxGcmFtZSAhPSB0ZXJtaW5hbDsKKyAgICAgICAgYm9vbCBiSGFzSW5s
aW5lQ2FsbEZyYW1lID0gISFiLmlubGluZUNhbGxGcmFtZTsKKyAgICAgICAgaWYgKGFIYXNJbmxp
bmVDYWxsRnJhbWUgIT0gYkhhc0lubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgCi0gICAgICAgIGlmICghYS5pbmxpbmVDYWxsRnJhbWUpCisgICAgICAg
IGlmICghYUhhc0lubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICAKICAgICAgICAgaWYgKGEuaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay5n
ZXQoKSAhPSBiLmlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkpCkBAIC04
Miw3ICs4NCw3IEBAIGJvb2wgQ29kZU9yaWdpbjo6aXNBcHByb3hpbWF0ZWx5RXF1YWxUbygKICAg
ICB9CiB9CiAKLXVuc2lnbmVkIENvZGVPcmlnaW46OmFwcHJveGltYXRlSGFzaCgpIGNvbnN0Cit1
bnNpZ25lZCBDb2RlT3JpZ2luOjphcHByb3hpbWF0ZUhhc2goSW5saW5lQ2FsbEZyYW1lKiB0ZXJt
aW5hbCkgY29uc3QKIHsKICAgICBpZiAoIWlzU2V0KCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAt
OTcsNiArOTksOSBAQCB1bnNpZ25lZCBDb2RlT3JpZ2luOjphcHByb3hpbWF0ZUhhc2goKSBjCiAg
ICAgICAgIGlmICghY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgICAgICAKKyAgICAgICAgaWYgKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZy
YW1lID09IHRlcm1pbmFsKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgCiAg
ICAgICAgIHJlc3VsdCArPSBXVEY6OlB0ckhhc2g8SlNDZWxsKj46Omhhc2goY29kZU9yaWdpbi5p
bmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLmdldCgpKTsKICAgICAgICAgCiAgICAg
ICAgIGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+ZGlyZWN0Q2FsbGVy
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCShy
ZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9y
aWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMS0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJDb2RlQmxvY2tIYXNoLmgiCisjaW5jbHVkZSAiRXhpdGluZ0lubGluZUtpbmQu
aCIKICNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgpAQCAtODgsMTUgKzg5LDIwIEBAIHN0cnVjdCBDb2RlT3Jp
Z2luIHsKICAgICAKICAgICBzdGF0aWMgdW5zaWduZWQgaW5saW5lRGVwdGhGb3JDYWxsRnJhbWUo
SW5saW5lQ2FsbEZyYW1lKik7CiAgICAgCisgICAgRXhpdGluZ0lubGluZUtpbmQgZXhpdGluZ0lu
bGluZUtpbmQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGlubGluZUNhbGxGcmFtZSA/
IEV4aXRGcm9tSW5saW5lZCA6IEV4aXRGcm9tTm90SW5saW5lZDsKKyAgICB9CisgICAgCiAgICAg
dW5zaWduZWQgaGFzaCgpIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2RlT3Jp
Z2luJiBvdGhlcikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvZGVPcmlnaW4m
IG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogICAgIAogICAgIC8v
IFRoaXMgY2hlY2tzIGlmIHRoZSB0d28gY29kZSBvcmlnaW5zIGNvcnJlc3BvbmQgdG8gdGhlIHNh
bWUgc3RhY2sgdHJhY2Ugc25pcHBldHMsCiAgICAgLy8gYnV0IGlnbm9yZSB3aGV0aGVyIHRoZSBJ
bmxpbmVDYWxsRnJhbWUncyBhcmUgaWRlbnRpY2FsLgotICAgIGJvb2wgaXNBcHByb3hpbWF0ZWx5
RXF1YWxUbyhjb25zdCBDb2RlT3JpZ2luJiBvdGhlcikgY29uc3Q7CisgICAgYm9vbCBpc0FwcHJv
eGltYXRlbHlFcXVhbFRvKGNvbnN0IENvZGVPcmlnaW4mIG90aGVyLCBJbmxpbmVDYWxsRnJhbWUq
IHRlcm1pbmFsID0gbnVsbHB0cikgY29uc3Q7CiAgICAgCi0gICAgdW5zaWduZWQgYXBwcm94aW1h
dGVIYXNoKCkgY29uc3Q7CisgICAgdW5zaWduZWQgYXBwcm94aW1hdGVIYXNoKElubGluZUNhbGxG
cmFtZSogdGVybWluYWwgPSBudWxscHRyKSBjb25zdDsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBGdW5jdGlvbj4KICAgICB2b2lkIHdhbGtVcElubGluZVN0YWNrKGNvbnN0IEZ1bmN0aW9uJik7
CkBAIC0xMDYsNyArMTEyLDcgQEAgc3RydWN0IENvZGVPcmlnaW4gewogICAgIAogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIHZvaWQgZHVt
cEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0KikgY29uc3Q7Ci0KKyAgICAKIHBy
aXZhdGU6CiAgICAgc3RhdGljIElubGluZUNhbGxGcmFtZSogZGVsZXRlZE1hcmtlcigpCiAgICAg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFBy
b2ZpbGUuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogdm9pZCBGcmVxdWVudEV4aXRTaXRl
OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KCJiYyMiLCBt
X2J5dGVjb2RlT2Zmc2V0LCAiOiAiLCBtX2tpbmQsICIvIiwgbV9qaXRUeXBlKTsKKyAgICBvdXQu
cHJpbnQoImJjIyIsIG1fYnl0ZWNvZGVPZmZzZXQsICI6ICIsIG1fa2luZCwgIi8iLCBtX2ppdFR5
cGUsICIvIiwgbV9pbmxpbmVLaW5kKTsKIH0KIAogRXhpdFByb2ZpbGU6OkV4aXRQcm9maWxlKCkg
eyB9CkBAIC00Myw4ICs0MywxMCBAQCBFeGl0UHJvZmlsZTo6fkV4aXRQcm9maWxlKCkgeyB9CiAK
IGJvb2wgRXhpdFByb2ZpbGU6OmFkZChDb2RlQmxvY2sqIG93bmVyLCBjb25zdCBGcmVxdWVudEV4
aXRTaXRlJiBzaXRlKQogeworICAgIFJFTEVBU0VfQVNTRVJUKHNpdGUuaml0VHlwZSgpICE9IEV4
aXRGcm9tQW55dGhpbmcpOworICAgIFJFTEVBU0VfQVNTRVJUKHNpdGUuaW5saW5lS2luZCgpICE9
IEV4aXRGcm9tQW55SW5saW5lS2luZCk7CisKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2Vy
KG93bmVyLT51bmxpbmtlZENvZGVCbG9jaygpLT5tX2xvY2spOwotICAgIEFTU0VSVChzaXRlLmpp
dFR5cGUoKSAhPSBFeGl0RnJvbUFueXRoaW5nKTsKIAogICAgIENPREVCTE9DS19MT0dfRVZFTlQo
b3duZXIsICJmcmVxdWVudEV4aXQiLCAoc2l0ZSkpOwogICAgIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgJKHJldmlzaW9uIDIzMjIy
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ29uY3Vy
cmVudEpTTG9jay5oIgogI2luY2x1ZGUgIkV4aXRLaW5kLmgiCisjaW5jbHVkZSAiRXhpdGluZ0lu
bGluZUtpbmQuaCIKICNpbmNsdWRlICJFeGl0aW5nSklUVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNDEsNiArNDIsNyBAQCBwdWJs
aWM6CiAgICAgICAgIDogbV9ieXRlY29kZU9mZnNldCgwKSAvLyAwID0gZW1wdHkgdmFsdWUKICAg
ICAgICAgLCBtX2tpbmQoRXhpdEtpbmRVbnNldCkKICAgICAgICAgLCBtX2ppdFR5cGUoRXhpdEZy
b21Bbnl0aGluZykKKyAgICAgICAgLCBtX2lubGluZUtpbmQoRXhpdEZyb21BbnlJbmxpbmVLaW5k
KQogICAgIHsKICAgICB9CiAgICAgCkBAIC00OCwxMyArNTAsMTUgQEAgcHVibGljOgogICAgICAg
ICA6IG1fYnl0ZWNvZGVPZmZzZXQoMSkgLy8gMSA9IGRlbGV0ZWQgdmFsdWUKICAgICAgICAgLCBt
X2tpbmQoRXhpdEtpbmRVbnNldCkKICAgICAgICAgLCBtX2ppdFR5cGUoRXhpdEZyb21Bbnl0aGlu
ZykKKyAgICAgICAgLCBtX2lubGluZUtpbmQoRXhpdEZyb21BbnlJbmxpbmVLaW5kKQogICAgIHsK
ICAgICB9CiAgICAgCi0gICAgZXhwbGljaXQgRnJlcXVlbnRFeGl0U2l0ZSh1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCwgRXhpdEtpbmQga2luZCwgRXhpdGluZ0pJVFR5cGUgaml0VHlwZSA9IEV4aXRG
cm9tQW55dGhpbmcpCisgICAgZXhwbGljaXQgRnJlcXVlbnRFeGl0U2l0ZSh1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCwgRXhpdEtpbmQga2luZCwgRXhpdGluZ0pJVFR5cGUgaml0VHlwZSA9IEV4aXRG
cm9tQW55dGhpbmcsIEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQgPSBFeGl0RnJvbUFueUlu
bGluZUtpbmQpCiAgICAgICAgIDogbV9ieXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkKICAg
ICAgICAgLCBtX2tpbmQoa2luZCkKICAgICAgICAgLCBtX2ppdFR5cGUoaml0VHlwZSkKKyAgICAg
ICAgLCBtX2lubGluZUtpbmQoaW5saW5lS2luZCkKICAgICB7CiAgICAgICAgIGlmIChtX2tpbmQg
PT0gQXJndW1lbnRzRXNjYXBlZCkgewogICAgICAgICAgICAgLy8gQ291bnQgdGhpcyBvbmUgZ2xv
YmFsbHkuIEl0IGRvZXNuJ3QgbWF0dGVyIHdoZXJlIGluIHRoZSBjb2RlIGJsb2NrIHRoZSBhcmd1
bWVudHMgZXhjYXBlZDsKQEAgLTY1LDEwICs2OSwxMSBAQCBwdWJsaWM6CiAgICAgCiAgICAgLy8g
VXNlIHRoaXMgY29uc3RydWN0b3IgaWYgeW91IHdpc2ggZm9yIHRoZSBleGl0IHNpdGUgdG8gYmUg
Y291bnRlZCBnbG9iYWxseSB3aXRoaW4gaXRzCiAgICAgLy8gY29kZSBibG9jay4KLSAgICBleHBs
aWNpdCBGcmVxdWVudEV4aXRTaXRlKEV4aXRLaW5kIGtpbmQsIEV4aXRpbmdKSVRUeXBlIGppdFR5
cGUgPSBFeGl0RnJvbUFueXRoaW5nKQorICAgIGV4cGxpY2l0IEZyZXF1ZW50RXhpdFNpdGUoRXhp
dEtpbmQga2luZCwgRXhpdGluZ0pJVFR5cGUgaml0VHlwZSA9IEV4aXRGcm9tQW55dGhpbmcsIEV4
aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQgPSBFeGl0RnJvbUFueUlubGluZUtpbmQpCiAgICAg
ICAgIDogbV9ieXRlY29kZU9mZnNldCgwKQogICAgICAgICAsIG1fa2luZChraW5kKQogICAgICAg
ICAsIG1faml0VHlwZShqaXRUeXBlKQorICAgICAgICAsIG1faW5saW5lS2luZChpbmxpbmVLaW5k
KQogICAgIHsKICAgICB9CiAgICAgCkBAIC04MSw3ICs4Niw4IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIHJldHVybiBtX2J5dGVjb2RlT2Zmc2V0ID09IG90aGVyLm1fYnl0ZWNvZGVPZmZzZXQK
ICAgICAgICAgICAgICYmIG1fa2luZCA9PSBvdGhlci5tX2tpbmQKLSAgICAgICAgICAgICYmIG1f
aml0VHlwZSA9PSBvdGhlci5tX2ppdFR5cGU7CisgICAgICAgICAgICAmJiBtX2ppdFR5cGUgPT0g
b3RoZXIubV9qaXRUeXBlCisgICAgICAgICAgICAmJiBtX2lubGluZUtpbmQgPT0gb3RoZXIubV9p
bmxpbmVLaW5kOwogICAgIH0KICAgICAKICAgICBib29sIHN1YnN1bWVzKGNvbnN0IEZyZXF1ZW50
RXhpdFNpdGUmIG90aGVyKSBjb25zdApAQCAtOTAsMTkgKzk2LDI0IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKG1fa2luZCAhPSBvdGhlci5tX2tpbmQp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChtX2ppdFR5cGUgPT0gRXhp
dEZyb21Bbnl0aGluZykKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICByZXR1cm4g
bV9qaXRUeXBlID09IG90aGVyLm1faml0VHlwZTsKKyAgICAgICAgaWYgKG1faml0VHlwZSAhPSBF
eGl0RnJvbUFueXRoaW5nCisgICAgICAgICAgICAmJiBtX2ppdFR5cGUgIT0gb3RoZXIubV9qaXRU
eXBlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAobV9pbmxpbmVLaW5k
ICE9IEV4aXRGcm9tQW55SW5saW5lS2luZAorICAgICAgICAgICAgJiYgbV9pbmxpbmVLaW5kICE9
IG90aGVyLm1faW5saW5lS2luZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogICAgIAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAg
IHsKLSAgICAgICAgcmV0dXJuIFdURjo6aW50SGFzaChtX2J5dGVjb2RlT2Zmc2V0KSArIG1fa2lu
ZCArIHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RXhpdGluZ0pJVFR5cGU+Piht
X2ppdFR5cGUpICogNzsKKyAgICAgICAgcmV0dXJuIFdURjo6aW50SGFzaChtX2J5dGVjb2RlT2Zm
c2V0KSArIG1fa2luZCArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2ppdFR5cGUpICogNyArIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihtX2lubGluZUtpbmQpICogMTE7CiAgICAgfQogICAgIAogICAg
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9ieXRlY29kZU9mZnNl
dDsgfQogICAgIEV4aXRLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KICAgICBF
eGl0aW5nSklUVHlwZSBqaXRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9qaXRUeXBlOyB9CisgICAg
RXhpdGluZ0lubGluZUtpbmQgaW5saW5lS2luZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lS2lu
ZDsgfQogICAgIAogICAgIEZyZXF1ZW50RXhpdFNpdGUgd2l0aEpJVFR5cGUoRXhpdGluZ0pJVFR5
cGUgaml0VHlwZSkgY29uc3QKICAgICB7CkBAIC0xMTEsNiArMTIyLDEzIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBGcmVxdWVudEV4aXRTaXRlIHdpdGhJ
bmxpbmVLaW5kKEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQpIGNvbnN0CisgICAgeworICAg
ICAgICBGcmVxdWVudEV4aXRTaXRlIHJlc3VsdCA9ICp0aGlzOworICAgICAgICByZXN1bHQubV9p
bmxpbmVLaW5kID0gaW5saW5lS2luZDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisK
ICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKICAgICB7CiAgICAgICAg
IHJldHVybiBtX2tpbmQgPT0gRXhpdEtpbmRVbnNldCAmJiBtX2J5dGVjb2RlT2Zmc2V0OwpAQCAt
MTIyLDYgKzE0MCw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9ieXRlY29kZU9mZnNldDsK
ICAgICBFeGl0S2luZCBtX2tpbmQ7CiAgICAgRXhpdGluZ0pJVFR5cGUgbV9qaXRUeXBlOworICAg
IEV4aXRpbmdJbmxpbmVLaW5kIG1faW5saW5lS2luZDsKIH07CiAKIHN0cnVjdCBGcmVxdWVudEV4
aXRTaXRlSGFzaCB7CkBAIC0xOTIsMTAgKzIxMSwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNF
eGl0U2l0ZShjb25zdCBGcmVxdWVudEV4aXRTaXRlJiBzaXRlKSBjb25zdAogICAgIHsKICAgICAg
ICAgaWYgKHNpdGUuaml0VHlwZSgpID09IEV4aXRGcm9tQW55dGhpbmcpIHsKLSAgICAgICAgICAg
IHJldHVybiBoYXNFeGl0U2l0ZShzaXRlLndpdGhKSVRUeXBlKEV4aXRGcm9tREZHKSkKLSAgICAg
ICAgICAgICAgICB8fCBoYXNFeGl0U2l0ZShzaXRlLndpdGhKSVRUeXBlKEV4aXRGcm9tRlRMKSk7
CisgICAgICAgICAgICByZXR1cm4gaGFzRXhpdFNpdGVXaXRoU3BlY2lmaWNKSVRUeXBlKHNpdGUu
d2l0aEpJVFR5cGUoRXhpdEZyb21ERkcpKQorICAgICAgICAgICAgICAgIHx8IGhhc0V4aXRTaXRl
V2l0aFNwZWNpZmljSklUVHlwZShzaXRlLndpdGhKSVRUeXBlKEV4aXRGcm9tRlRMKSk7CiAgICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIG1fZnJlcXVlbnRFeGl0U2l0ZXMuZmluZChzaXRlKSAhPSBt
X2ZyZXF1ZW50RXhpdFNpdGVzLmVuZCgpOworICAgICAgICByZXR1cm4gaGFzRXhpdFNpdGVXaXRo
U3BlY2lmaWNKSVRUeXBlKHNpdGUpOwogICAgIH0KICAgICAKICAgICBib29sIGhhc0V4aXRTaXRl
KEV4aXRLaW5kIGtpbmQpIGNvbnN0CkBAIC0yMDgsNiArMjI3LDIwIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGhhc0V4aXRTaXRlKEZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwga2lu
ZCkpOwogICAgIH0KIHByaXZhdGU6CisgICAgYm9vbCBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0pJ
VFR5cGUoY29uc3QgRnJlcXVlbnRFeGl0U2l0ZSYgc2l0ZSkgY29uc3QKKyAgICB7CisgICAgICAg
IGlmIChzaXRlLmlubGluZUtpbmQoKSA9PSBFeGl0RnJvbUFueUlubGluZUtpbmQpIHsKKyAgICAg
ICAgICAgIHJldHVybiBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0lubGluZUtpbmQoc2l0ZS53aXRo
SW5saW5lS2luZChFeGl0RnJvbU5vdElubGluZWQpKQorICAgICAgICAgICAgICAgIHx8IGhhc0V4
aXRTaXRlV2l0aFNwZWNpZmljSW5saW5lS2luZChzaXRlLndpdGhJbmxpbmVLaW5kKEV4aXRGcm9t
SW5saW5lZCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBoYXNFeGl0U2l0ZVdpdGhTcGVj
aWZpY0lubGluZUtpbmQoc2l0ZSk7CisgICAgfQorICAgIAorICAgIGJvb2wgaGFzRXhpdFNpdGVX
aXRoU3BlY2lmaWNJbmxpbmVLaW5kKGNvbnN0IEZyZXF1ZW50RXhpdFNpdGUmIHNpdGUpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gbV9mcmVxdWVudEV4aXRTaXRlcy5maW5kKHNpdGUpICE9
IG1fZnJlcXVlbnRFeGl0U2l0ZXMuZW5kKCk7CisgICAgfQorICAgIAogICAgIEhhc2hTZXQ8RnJl
cXVlbnRFeGl0U2l0ZT4gbV9mcmVxdWVudEV4aXRTaXRlczsKIH07CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0RmxhZy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRGbGFnLmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEZsYWcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkV4aXRGbGFnLmgiCisKKyNp
bmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CisKK25hbWVzcGFjZSBKU0MgeworCit2b2lkIEV4
aXRGbGFnOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgaWYgKCFtX2JpdHMp
IHsKKyAgICAgICAgb3V0LnByaW50KCJmYWxzZSIpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIAorICAgIENvbW1hUHJpbnRlciBjb21tYSgifCIpOworICAgIGlmIChpc1NldChFeGl0RnJv
bU5vdElubGluZWQpKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICJub3RJbmxpbmVkIik7Cisg
ICAgaWYgKGlzU2V0KEV4aXRGcm9tSW5saW5lZCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwg
ImlubGluZWQiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0RmxhZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0RmxhZy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0RmxhZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRXhpdGluZ0lubGluZUtpbmQuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIEV4aXRGbGFnIHsKK3B1YmxpYzoKKyAgICBFeGl0RmxhZygpIHsg
fQorICAgIAorICAgIEV4aXRGbGFnKGJvb2wgdmFsdWUsIEV4aXRpbmdJbmxpbmVLaW5kIGlubGlu
ZUtpbmQpCisgICAgeworICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAKKyAgICAgICAgc3dpdGNoIChpbmxpbmVLaW5kKSB7CisgICAgICAgIGNhc2UgRXhp
dEZyb21BbnlJbmxpbmVLaW5kOgorICAgICAgICAgICAgbV9iaXRzID0gdHJ1ZU5vdElubGluZWQg
fCB0cnVlSW5saW5lZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEV4aXRGcm9t
Tm90SW5saW5lZDoKKyAgICAgICAgICAgIG1fYml0cyA9IHRydWVOb3RJbmxpbmVkOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRXhpdEZyb21JbmxpbmVkOgorICAgICAgICAgICAg
bV9iaXRzID0gdHJ1ZUlubGluZWQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
IH0KKyAgICAKKyAgICBFeGl0RmxhZyBvcGVyYXRvcnwoY29uc3QgRXhpdEZsYWcmIG90aGVyKSBj
b25zdAorICAgIHsKKyAgICAgICAgRXhpdEZsYWcgcmVzdWx0OworICAgICAgICByZXN1bHQubV9i
aXRzID0gbV9iaXRzIHwgb3RoZXIubV9iaXRzOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0KKyAgICAKKyAgICBFeGl0RmxhZyYgb3BlcmF0b3J8PShjb25zdCBFeGl0RmxhZyYgb3RoZXIp
CisgICAgeworICAgICAgICAqdGhpcyA9ICp0aGlzIHwgb3RoZXI7CisgICAgICAgIHJldHVybiAq
dGhpczsKKyAgICB9CisgICAgCisgICAgRXhpdEZsYWcgb3BlcmF0b3ImKGNvbnN0IEV4aXRGbGFn
JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIEV4aXRGbGFnIHJlc3VsdDsKKyAgICAgICAg
cmVzdWx0Lm1fYml0cyA9IG1fYml0cyAmIG90aGVyLm1fYml0czsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisgICAgCisgICAgRXhpdEZsYWcmIG9wZXJhdG9yJj0oY29uc3QgRXhpdEZs
YWcmIG90aGVyKQorICAgIHsKKyAgICAgICAgKnRoaXMgPSAqdGhpcyAmIG90aGVyOworICAgICAg
ICByZXR1cm4gKnRoaXM7CisgICAgfQorICAgIAorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2wo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEhbV9iaXRzOworICAgIH0KKyAgICAKKyAg
ICBib29sIGlzU2V0KEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gISEoKnRoaXMgJiBFeGl0RmxhZyh0cnVlLCBpbmxpbmVLaW5kKSk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworICAgIAorcHJp
dmF0ZToKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgdHJ1ZU5vdElubGluZWQgPSAxOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCB0cnVlSW5saW5lZCA9IDI7CisgICAgCisgICAg
dWludDhfdCBtX2JpdHMgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRpbmdJbmxpbmVLaW5kLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtp
bmQuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9F
eGl0aW5nSW5saW5lS2luZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiRXhpdGluZ0lubGluZUtpbmQuaCIKKworI2luY2x1ZGUgPHd0Zi9Q
cmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsK
Kwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEV4aXRpbmdJbmxpbmVLaW5k
IHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBFeGl0RnJvbUFueUlubGlu
ZUtpbmQ6CisgICAgICAgIG91dC5wcmludCgiRnJvbUFueUlubGluZUtpbmQiKTsKKyAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgRXhpdEZyb21Ob3RJbmxpbmVkOgorICAgICAgICBvdXQucHJpbnQo
IkZyb21Ob3RJbmxpbmVkIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEV4aXRGcm9tSW5s
aW5lZDoKKyAgICAgICAgb3V0LnByaW50KCJGcm9tSW5saW5lZCIpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGlu
Z0lubGluZUtpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvRXhpdGluZ0lubGluZUtpbmQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgSlNDIHsKKworZW51bSBFeGl0aW5nSW5saW5lS2lu
ZCA6IHVpbnQ4X3QgeworICAgIEV4aXRGcm9tQW55SW5saW5lS2luZCwKKyAgICBFeGl0RnJvbU5v
dElubGluZWQsCisgICAgRXhpdEZyb21JbmxpbmVkLAorfTsKKworfSAvLyBuYW1lc3BhY2UgSlND
CisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBQcmludFN0cmVhbTsKK3ZvaWQgcHJpbnRJbnRl
cm5hbChQcmludFN0cmVhbSYsIEpTQzo6RXhpdGluZ0lubGluZUtpbmQpOworCit9IC8vIG5hbWVz
cGFjZSBXVEYKKworCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRC
eUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEs
MTYgKzUxLDYgQEAgYm9vbCBHZXRCeUlkU3RhdHVzOjphcHBlbmRWYXJpYW50KGNvbnN0IAogICAg
IHJldHVybiBhcHBlbmRJQ1N0YXR1c1ZhcmlhbnQobV92YXJpYW50cywgdmFyaWFudCk7CiB9CiAK
LSNpZiBFTkFCTEUoREZHX0pJVCkKLWJvb2wgR2V0QnlJZFN0YXR1czo6aGFzRXhpdFNpdGUoQ29k
ZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQotewotICAgIFVu
bGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IHByb2ZpbGVkQmxvY2stPnVubGlu
a2VkQ29kZUJsb2NrKCk7Ci0gICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcih1bmxpbmtlZENv
ZGVCbG9jay0+bV9sb2NrKTsKLSAgICByZXR1cm4gdW5saW5rZWRDb2RlQmxvY2stPmhhc0V4aXRT
aXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZENhY2hl
KSkKLSAgICAgICAgfHwgdW5saW5rZWRDb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZH
OjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZENvbnN0YW50Q2FjaGUpKTsKLX0K
LSNlbmRpZgotCiBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQo
Q29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBVbmlxdWVk
U3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNJiB2bSA9ICpwcm9maWxlZEJsb2NrLT52bSgpOwpA
QCAtMTA1LDcgKzk1LDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJv
bQogICAgIH0KIH0KIAotR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENv
ZGVCbG9jayogcHJvZmlsZWRCbG9jaywgU3R1YkluZm9NYXAmIG1hcCwgdW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK0dldEJ5SWRTdGF0dXMgR2V0QnlJZFN0
YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIElDU3RhdHVzTWFwJiBt
YXAsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIEV4aXRG
bGFnIGRpZEV4aXQsIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgY2FsbEV4aXRTaXRlRGF0
YSkKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHByb2ZpbGVkQmxvY2stPm1fbG9j
ayk7CiAKQEAgLTExMywxMiArMTAzLDExIEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6
Y29tcHV0ZUZvcigKIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIHJlc3VsdCA9IGNvbXB1dGVG
b3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAotICAgICAgICBsb2NrZXIsIHByb2Zp
bGVkQmxvY2ssIG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4KSksIHVpZCwKLSAgICAg
ICAgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVFeGl0U2l0ZURhdGEocHJvZmlsZWRCbG9jaywgYnl0
ZWNvZGVJbmRleCkpOworICAgICAgICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssIG1hcC5nZXQoQ29k
ZU9yaWdpbihieXRlY29kZUluZGV4KSkuc3R1YkluZm8sIHVpZCwKKyAgICAgICAgY2FsbEV4aXRT
aXRlRGF0YSk7CiAgICAgCi0gICAgaWYgKCFyZXN1bHQudGFrZXNTbG93UGF0aCgpCi0gICAgICAg
ICYmIGhhc0V4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpKQotICAgICAgICBy
ZXR1cm4gR2V0QnlJZFN0YXR1cyhyZXN1bHQubWFrZXNDYWxscygpID8gTWFrZXNDYWxscyA6IFRh
a2VzU2xvd1BhdGgsIHRydWUpOworICAgIGlmIChkaWRFeGl0KQorICAgICAgICByZXR1cm4gcmVz
dWx0LnNsb3dWZXJzaW9uKCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShtYXApOwogI2VuZGlm
CkBAIC0xMzYsOCArMTI1LDggQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRl
Rm9yUwogICAgICAgICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssIHN0dWJJbmZvLCB1aWQsCiAgICAg
ICAgIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKHByb2ZpbGVkQmxvY2ssIGNv
ZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkpOwogCi0gICAgaWYgKCFyZXN1bHQudGFrZXNTbG93UGF0
aCgpICYmIEdldEJ5SWRTdGF0dXM6Omhhc0V4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGNvZGVPcmln
aW4uYnl0ZWNvZGVJbmRleCkpCi0gICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKHJlc3VsdC5t
YWtlc0NhbGxzKCkgPyBHZXRCeUlkU3RhdHVzOjpNYWtlc0NhbGxzIDogR2V0QnlJZFN0YXR1czo6
VGFrZXNTbG93UGF0aCwgdHJ1ZSk7CisgICAgaWYgKCFyZXN1bHQudGFrZXNTbG93UGF0aCgpICYm
IGhhc0JhZENhY2hlRXhpdFNpdGUocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUlu
ZGV4KSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5zbG93VmVyc2lvbigpOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkBAIC0zMTQsNDAgKzMwMywzNSBA
QCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTCiAjZW5kaWYgLy8gRU5B
QkxFKEpJVCkKIAogR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAotICAg
IENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgQ29kZUJsb2NrKiBkZmdCbG9jaywgU3R1YkluZm9N
YXAmIGJhc2VsaW5lTWFwLAotICAgIFN0dWJJbmZvTWFwJiBkZmdNYXAsIENvZGVPcmlnaW4gY29k
ZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKKyAgICBDb2RlQmxvY2sqIHByb2ZpbGVk
QmxvY2ssIElDU3RhdHVzTWFwJiBiYXNlbGluZU1hcCwKKyAgICBJQ1N0YXR1c0NvbnRleHRTdGFj
ayYgaWNDb250ZXh0U3RhY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCkKIHsKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBpZiAoZGZnQmxvY2spIHsKLSAg
ICAgICAgQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0YSBleGl0U2l0ZURhdGE7Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jay0+
bV9sb2NrKTsKLSAgICAgICAgICAgIGV4aXRTaXRlRGF0YSA9IENhbGxMaW5rU3RhdHVzOjpjb21w
dXRlRXhpdFNpdGVEYXRhKAotICAgICAgICAgICAgICAgIHByb2ZpbGVkQmxvY2ssIGNvZGVPcmln
aW4uYnl0ZWNvZGVJbmRleCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIEdldEJ5SWRT
dGF0dXMgcmVzdWx0OwotICAgICAgICB7Ci0gICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIg
bG9ja2VyKGRmZ0Jsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgcmVzdWx0ID0gY29tcHV0ZUZv
clN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCi0gICAgICAgICAgICAgICAgbG9ja2Vy
LCBkZmdCbG9jaywgZGZnTWFwLmdldChjb2RlT3JpZ2luKSwgdWlkLCBleGl0U2l0ZURhdGEpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHJlc3VsdC50YWtlc1Nsb3dQYXRoKCkpCi0gICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgY2Fs
bEV4aXRTaXRlRGF0YSA9CisgICAgICAgIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVE
YXRhKHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7CisgICAgRXhpdEZs
YWcgZGlkRXhpdCA9IGhhc0JhZENhY2hlRXhpdFNpdGUocHJvZmlsZWRCbG9jaywgY29kZU9yaWdp
bi5ieXRlY29kZUluZGV4KTsKICAgICAKLSAgICAgICAgaWYgKGhhc0V4aXRTaXRlKHByb2ZpbGVk
QmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkpCi0gICAgICAgICAgICByZXR1cm4gR2V0
QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCB0cnVlKTsKKyAgICBmb3IgKElDU3RhdHVzQ29udGV4
dCogY29udGV4dCA6IGljQ29udGV4dFN0YWNrKSB7CisgICAgICAgIElDU3RhdHVzIHN0YXR1cyA9
IGNvbnRleHQtPmdldChjb2RlT3JpZ2luKTsKICAgICAgICAgCi0gICAgICAgIGlmIChyZXN1bHQu
aXNTZXQoKSkKKyAgICAgICAgYXV0byB3aXRoRXhpdHMgPSBbJl0gKGNvbnN0IEdldEJ5SWRTdGF0
dXMmIHJlc3VsdCkgLT4gR2V0QnlJZFN0YXR1cyB7CisgICAgICAgICAgICBpZiAoZGlkRXhpdC5p
c1NldChjb2RlT3JpZ2luLmV4aXRpbmdJbmxpbmVLaW5kKCkpKQorICAgICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQuc2xvd1ZlcnNpb24oKTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0g
ICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZGZnQmxvY2spOwotICAgIFVOVVNFRF9QQVJB
TShkZmdNYXApOwotI2VuZGlmCisgICAgICAgIH07CiAKLSAgICByZXR1cm4gY29tcHV0ZUZvcihw
cm9maWxlZEJsb2NrLCBiYXNlbGluZU1hcCwgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCB1aWQp
OworICAgICAgICBpZiAoc3RhdHVzLnN0dWJJbmZvKSB7CisgICAgICAgICAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKGNvbnRleHQtPm9wdGltaXplZENvZGVCbG9jay0+bV9sb2NrKTsKKyAg
ICAgICAgICAgIEdldEJ5SWRTdGF0dXMgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91
dEV4aXRTaXRlRmVlZGJhY2soCisgICAgICAgICAgICAgICAgbG9ja2VyLCBjb250ZXh0LT5vcHRp
bWl6ZWRDb2RlQmxvY2ssIHN0YXR1cy5zdHViSW5mbywgdWlkLCBjYWxsRXhpdFNpdGVEYXRhKTsK
KyAgICAgICAgICAgIGlmIChyZXN1bHQuaXNTZXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
d2l0aEV4aXRzKHJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChzdGF0
dXMuZ2V0U3RhdHVzKQorICAgICAgICAgICAgcmV0dXJuIHdpdGhFeGl0cygqc3RhdHVzLmdldFN0
YXR1cyk7CisgICAgfQorICAgICAgICAKKyAgICByZXR1cm4gY29tcHV0ZUZvcihwcm9maWxlZEJs
b2NrLCBiYXNlbGluZU1hcCwgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCB1aWQsIGRpZEV4aXQs
IGNhbGxFeGl0U2l0ZURhdGEpOwogfQogCiBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNv
bXB1dGVGb3IoY29uc3QgU3RydWN0dXJlU2V0JiBzZXQsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQp
CkBAIC00MTQsNiArMzk4LDExIEBAIGJvb2wgR2V0QnlJZFN0YXR1czo6bWFrZXNDYWxscygpIGNv
bnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6
OnNsb3dWZXJzaW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhtYWtlc0Nh
bGxzKCkgPyBNYWtlc0NhbGxzIDogVGFrZXNTbG93UGF0aCwgd2FzU2VlbkluSklUKCkpOworfQor
CiB2b2lkIEdldEJ5SWRTdGF0dXM6OmZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCkKIHsK
ICAgICBpZiAobV9zdGF0ZSAhPSBTaW1wbGUpCkBAIC00MjMsNiArNDEyLDI1IEBAIHZvaWQgR2V0
QnlJZFN0YXR1czo6ZmlsdGVyKGNvbnN0IFN0cnVjdHUKICAgICAgICAgbV9zdGF0ZSA9IE5vSW5m
b3JtYXRpb247CiB9CiAKK3ZvaWQgR2V0QnlJZFN0YXR1czo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit7CisgICAgZm9yIChHZXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IG1fdmFy
aWFudHMpCisgICAgICAgIHZhcmlhbnQubWFya0lmQ2hlYXAodmlzaXRvcik7Cit9CisKK2Jvb2wg
R2V0QnlJZFN0YXR1czo6ZmluYWxpemUoKQoreworICAgIGZvciAoR2V0QnlJZFZhcmlhbnQmIHZh
cmlhbnQgOiBtX3ZhcmlhbnRzKSB7CisgICAgICAgIGlmICghdmFyaWFudC5maW5hbGl6ZSgpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAobV9tb2R1bGVOYW1lc3Bh
Y2VPYmplY3QgJiYgIUhlYXA6OmlzTWFya2VkKG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0KSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX21vZHVsZUVudmlyb25tZW50ICYmICFIZWFw
Ojppc01hcmtlZChtX21vZHVsZUVudmlyb25tZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIEdldEJ5SWRTdGF0dXM6OmR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3QKIHsKICAgICBvdXQucHJpbnQoIigiKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAkocmV2aXNpb24gMjMyMjI3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMjgsNyArMjgsOSBAQAogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgi
CiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIK
KyNpbmNsdWRlICJFeGl0RmxhZy5oIgogI2luY2x1ZGUgIkdldEJ5SWRWYXJpYW50LmgiCisjaW5j
bHVkZSAiSUNTdGF0dXNNYXAuaCIKICNpbmNsdWRlICJTY29wZU9mZnNldC5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKQEAgLTQwLDggKzQyLDYgQEAgY2xhc3MgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q7
CiBjbGFzcyBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOwogY2xhc3MgU3RydWN0dXJlU3R1Yklu
Zm87CiAKLXR5cGVkZWYgSGFzaE1hcDxDb2RlT3JpZ2luLCBTdHJ1Y3R1cmVTdHViSW5mbyosIENv
ZGVPcmlnaW5BcHByb3hpbWF0ZUhhc2g+IFN0dWJJbmZvTWFwOwotCiBjbGFzcyBHZXRCeUlkU3Rh
dHVzIHsKIHB1YmxpYzoKICAgICBlbnVtIFN0YXRlIHsKQEAgLTgxLDEwICs4MSwxMCBAQCBwdWJs
aWM6CiAgICAgICAgIG1fdmFyaWFudHMuYXBwZW5kKHZhcmlhbnQpOwogICAgIH0KICAgICAKLSAg
ICBzdGF0aWMgR2V0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIFN0dWJJbmZvTWFw
JiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7CisgICAg
c3RhdGljIEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCBJQ1N0YXR1c01hcCYs
IHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIEV4aXRGbGFn
LCBDYWxsTGlua1N0YXR1czo6RXhpdFNpdGVEYXRhKTsKICAgICBzdGF0aWMgR2V0QnlJZFN0YXR1
cyBjb21wdXRlRm9yKGNvbnN0IFN0cnVjdHVyZVNldCYsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQp
OwogICAgIAotICAgIHN0YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBi
YXNlbGluZUJsb2NrLCBDb2RlQmxvY2sqIGRmZ0Jsb2NrLCBTdHViSW5mb01hcCYgYmFzZWxpbmVN
YXAsIFN0dWJJbmZvTWFwJiBkZmdNYXAsIENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQpOworICAgIHN0YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNl
bGluZUJsb2NrLCBJQ1N0YXR1c01hcCYgYmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4dFN0YWNr
JiBkZmdDb250ZXh0U3RhY2ssIENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwog
CiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgc3RhdGljIEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZv
clN0dWJJbmZvKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayogYmFzZWxpbmVC
bG9jaywgU3RydWN0dXJlU3R1YkluZm8qLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCog
dWlkKTsKQEAgLTEwNiw2ICsxMDYsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCB0YWtlc1Nsb3dQYXRo
KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBUYWtlc1Nsb3dQYXRoIHx8IG1fc3RhdGUgPT0g
TWFrZXNDYWxscyB8fCBtX3N0YXRlID09IEN1c3RvbSB8fCBtX3N0YXRlID09IE1vZHVsZU5hbWVz
cGFjZTsgfQogICAgIGJvb2wgbWFrZXNDYWxscygpIGNvbnN0OwogICAgIAorICAgIEdldEJ5SWRT
dGF0dXMgc2xvd1ZlcnNpb24oKSBjb25zdDsKKyAgICAKICAgICBib29sIHdhc1NlZW5JbkpJVCgp
IGNvbnN0IHsgcmV0dXJuIG1fd2FzU2VlbkluSklUOyB9CiAgICAgCiAgICAgLy8gQXR0ZW1wdHMg
dG8gcmVkdWNlIHRoZSBzZXQgb2YgdmFyaWFudHMgdG8gZml0IHRoZSBnaXZlbiBzdHJ1Y3R1cmUg
c2V0LiBUaGlzIG1heSBiZSBhcHByb3hpbWF0ZS4KQEAgLTExNSwxMiArMTE3LDEyIEBAIHB1Ymxp
YzoKICAgICBKU01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fbW9kdWxlRW52aXJvbm1lbnQ7IH0KICAgICBTY29wZU9mZnNldCBzY29wZU9mZnNl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVPZmZzZXQ7IH0KICAgICAKKyAgICB2b2lkIG1hcmtJ
ZkNoZWFwKFNsb3RWaXNpdG9yJik7CisgICAgYm9vbCBmaW5hbGl6ZSgpOyAvLyBSZXR1cm4gdHJ1
ZSBpZiB0aGlzIGdldHMgdG8gbGl2ZS4KKyAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0m
KSBjb25zdDsKICAgICAKIHByaXZhdGU6Ci0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAgc3RhdGlj
IGJvb2wgaGFzRXhpdFNpdGUoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7Ci0j
ZW5kaWYKICNpZiBFTkFCTEUoSklUKQogICAgIEdldEJ5SWRTdGF0dXMoY29uc3QgTW9kdWxlTmFt
ZXNwYWNlQWNjZXNzQ2FzZSYpOwogICAgIHN0YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVGb3JT
dHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCShyZXZpc2lvbiAyMzIyMjcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzUsNiArMTM1LDI0IEBAIGJvb2wgR2V0QnlJZFZhcmlhbnQ6OmF0
dGVtcHRUb01lcmdlKGNvbnMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBHZXRCeUlkVmFy
aWFudDo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgbV9zdHJ1Y3R1
cmVTZXQubWFya0lmQ2hlYXAodmlzaXRvcik7Cit9CisKK2Jvb2wgR2V0QnlJZFZhcmlhbnQ6OmZp
bmFsaXplKCkKK3sKKyAgICBpZiAoIW1fc3RydWN0dXJlU2V0LmlzU3RpbGxBbGl2ZSgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX2NvbmRpdGlvblNldC5hcmVTdGlsbExpdmUo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2NhbGxMaW5rU3RhdHVzICYmICFt
X2NhbGxMaW5rU3RhdHVzLT5maW5hbGl6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKG1faW50cmluc2ljRnVuY3Rpb24gJiYgIUhlYXA6OmlzTWFya2VkKG1faW50cmluc2ljRnVu
Y3Rpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZv
aWQgR2V0QnlJZFZhcmlhbnQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBk
dW1wSW5Db250ZXh0KG91dCwgMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvR2V0QnlJZFZhcmlhbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTczLDYgKzczLDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBhdHRlbXB0VG9NZXJnZShjb25zdCBH
ZXRCeUlkVmFyaWFudCYgb3RoZXIpOwogICAgIAorICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZp
c2l0b3ImKTsKKyAgICBib29sIGZpbmFsaXplKCk7CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50
U3RyZWFtJikgY29uc3Q7CiAgICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVt
cENvbnRleHQqKSBjb25zdDsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JQ1N0YXR1c01hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0lDU3RhdHVzTWFwLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCisKKyNpbmNsdWRl
ICJJbmxpbmVDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJUZXJtaW5hdGVkQ29kZU9yaWdpbi5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworSUNTdGF0dXMgSUNTdGF0dXNDb250ZXh0OjpnZXQoQ29kZU9y
aWdpbiBjb2RlT3JpZ2luKSBjb25zdAoreworICAgIHJldHVybiBtYXAuZ2V0PFRlcm1pbmF0ZWRD
b2RlT3JpZ2luSGFzaFRyYW5zbGF0b3I+KAorICAgICAgICBUZXJtaW5hdGVkQ29kZU9yaWdpbihj
b2RlT3JpZ2luLCBpbmxpbmVDYWxsRnJhbWUpKTsKK30KKworYm9vbCBJQ1N0YXR1c0NvbnRleHQ6
OmlzSW5saW5lZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4pIGNvbnN0Cit7CisgICAgcmV0dXJuIGNv
ZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lICYmIGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lICE9
IGlubGluZUNhbGxGcmFtZTsKK30KKworRXhpdGluZ0lubGluZUtpbmQgSUNTdGF0dXNDb250ZXh0
OjppbmxpbmVLaW5kKENvZGVPcmlnaW4gY29kZU9yaWdpbikgY29uc3QKK3sKKyAgICByZXR1cm4g
aXNJbmxpbmVkKGNvZGVPcmlnaW4pID8gRXhpdEZyb21JbmxpbmVkIDogRXhpdEZyb21Ob3RJbmxp
bmVkOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFwLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKKyNpbmNsdWRlICJFeGl0
aW5nSW5saW5lS2luZC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBDYWxsTGlua0luZm87CitjbGFzcyBDYWxsTGlua1N0YXR1czsKK2NsYXNz
IENvZGVCbG9jazsKK2NsYXNzIEdldEJ5SWRTdGF0dXM7CitjbGFzcyBQdXRCeUlkU3RhdHVzOwor
Y2xhc3MgU3RydWN0dXJlU3R1YkluZm87CitzdHJ1Y3QgQnlWYWxJbmZvOworCitzdHJ1Y3QgSUNT
dGF0dXMgeworICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyB7IG51bGxwdHIgfTsKKyAg
ICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyB7IG51bGxwdHIgfTsKKyAgICBCeVZhbEluZm8q
IGJ5VmFsSW5mbyB7IG51bGxwdHIgfTsKKyAgICBDYWxsTGlua1N0YXR1cyogY2FsbFN0YXR1cyB7
IG51bGxwdHIgfTsKKyAgICBHZXRCeUlkU3RhdHVzKiBnZXRTdGF0dXMgeyBudWxscHRyIH07Cisg
ICAgUHV0QnlJZFN0YXR1cyogcHV0U3RhdHVzIHsgbnVsbHB0ciB9OworfTsKKwordHlwZWRlZiBI
YXNoTWFwPENvZGVPcmlnaW4sIElDU3RhdHVzLCBDb2RlT3JpZ2luQXBwcm94aW1hdGVIYXNoPiBJ
Q1N0YXR1c01hcDsKKworc3RydWN0IElDU3RhdHVzQ29udGV4dCB7CisgICAgSUNTdGF0dXMgZ2V0
KENvZGVPcmlnaW4pIGNvbnN0OworICAgIGJvb2wgaXNJbmxpbmVkKENvZGVPcmlnaW4pIGNvbnN0
OworICAgIEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQoQ29kZU9yaWdpbikgY29uc3Q7Cisg
ICAgCisgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgeyBudWxscHRyIH07Cisg
ICAgQ29kZUJsb2NrKiBvcHRpbWl6ZWRDb2RlQmxvY2sgeyBudWxscHRyIH07CisgICAgSUNTdGF0
dXNNYXAgbWFwOworfTsKKwordHlwZWRlZiBWZWN0b3I8SUNTdGF0dXNDb250ZXh0KiwgOD4gSUNT
dGF0dXNDb250ZXh0U3RhY2s7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNVdGlscy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzVXRpbHMuY3BwCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c1V0aWxzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJ
Q1N0YXR1c1V0aWxzLmgiCisKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJFeGl0
RmxhZy5oIgorI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitFeGl0RmxhZyBoYXNCYWRDYWNoZUV4aXRTaXRlKENvZGVCbG9jayogcHJvZmlsZWRCbG9j
aywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKK3sKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICBV
bmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBwcm9maWxlZEJsb2NrLT51bmxp
bmtlZENvZGVCbG9jaygpOworICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIodW5saW5rZWRD
b2RlQmxvY2stPm1fbG9jayk7CisgICAgYXV0byBleGl0RmxhZyA9IFsmXSAoRXhpdEtpbmQgZXhp
dEtpbmQpIC0+IEV4aXRGbGFnIHsKKyAgICAgICAgYXV0byB3aXRoSW5saW5lZCA9IFsmXSAoRXhp
dGluZ0lubGluZUtpbmQgaW5saW5lS2luZCkgLT4gRXhpdEZsYWcgeworICAgICAgICAgICAgcmV0
dXJuIEV4aXRGbGFnKHVubGlua2VkQ29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6
RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBleGl0S2luZCwgRXhpdEZyb21Bbnl0aGlu
ZywgaW5saW5lS2luZCkpLCBpbmxpbmVLaW5kKTsKKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJu
IHdpdGhJbmxpbmVkKEV4aXRGcm9tTm90SW5saW5lZCkgfCB3aXRoSW5saW5lZChFeGl0RnJvbUlu
bGluZWQpOworICAgIH07CisgICAgcmV0dXJuIGV4aXRGbGFnKEJhZENhY2hlKSB8IGV4aXRGbGFn
KEJhZENvbnN0YW50Q2FjaGUpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9j
ayk7CisgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOworICAgIHJldHVybiBFeGl0Rmxh
ZygpOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNVdGlscy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c1V0aWxzLmgJKHJldmlzaW9uIDIzMjIy
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c1V0aWxzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
ICJFeGl0RmxhZy5oIgorCiBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVmFy
aWFudFZlY3RvclR5cGUsIHR5cGVuYW1lIFZhcmlhbnRUeXBlPgpAQCAtNTksNSArNjEsNyBAQCB2
b2lkIGZpbHRlcklDU3RhdHVzVmFyaWFudHMoVmFyaWFudFZlY3RvCiAgICAgICAgIH0pOwogfQog
CitFeGl0RmxhZyBoYXNCYWRDYWNoZUV4aXRTaXRlKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywg
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMu
Y3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5zdGFuY2VPZlN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEzICszOSwxMyBAQCB2
b2lkIEluc3RhbmNlT2ZTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uCiB9CiAKIEluc3RhbmNlT2ZT
dGF0dXMgSW5zdGFuY2VPZlN0YXR1czo6Y29tcHV0ZUZvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgU3R1YkluZm9NYXAmIGluZm9NYXAsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIElDU3RhdHVzTWFwJiBpbmZvTWFwLCB1bnNpZ25lZCBieXRl
Y29kZUluZGV4KQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5t
X2xvY2spOwogICAgIAogICAgIEluc3RhbmNlT2ZTdGF0dXMgcmVzdWx0OwogI2lmIEVOQUJMRShE
RkdfSklUKQotICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mbyhsb2NrZXIsIGluZm9NYXAu
Z2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkpKTsKKyAgICByZXN1bHQgPSBjb21wdXRlRm9y
U3R1YkluZm8obG9ja2VyLCBpbmZvTWFwLmdldChDb2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgpKS5z
dHViSW5mbyk7CiAKICAgICBpZiAoIXJlc3VsdC50YWtlc1Nsb3dQYXRoKCkpIHsKICAgICAgICAg
VW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gY29kZUJsb2NrLT51bmxpbmtl
ZENvZGVCbG9jaygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3Rh
bmNlT2ZTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSW5zdGFuY2VPZlN0YXR1cy5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAiQ29uY3Vy
cmVudEpTTG9jay5oIgorI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCiAjaW5jbHVkZSAiSW5zdGFu
Y2VPZlZhcmlhbnQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zNSw4ICszNiw2IEBAIGNsYXNz
IEFjY2Vzc0Nhc2U7CiBjbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsK
IAotdHlwZWRlZiBIYXNoTWFwPENvZGVPcmlnaW4sIFN0cnVjdHVyZVN0dWJJbmZvKiwgQ29kZU9y
aWdpbkFwcHJveGltYXRlSGFzaD4gU3R1YkluZm9NYXA7Ci0KIGNsYXNzIEluc3RhbmNlT2ZTdGF0
dXMgewogcHVibGljOgogICAgIGVudW0gU3RhdGUgewpAQCAtNjEsNyArNjAsNyBAQCBwdWJsaWM6
CiAgICAgICAgIEFTU0VSVChzdGF0ZSA9PSBOb0luZm9ybWF0aW9uIHx8IHN0YXRlID09IFRha2Vz
U2xvd1BhdGgpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgSW5zdGFuY2VPZlN0YXR1cyBjb21w
dXRlRm9yKENvZGVCbG9jayosIFN0dWJJbmZvTWFwJiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7
CisgICAgc3RhdGljIEluc3RhbmNlT2ZTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCBJQ1N0
YXR1c01hcCYsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwogICAgIAogI2lmIEVOQUJMRShERkdf
SklUKQogICAgIHN0YXRpYyBJbnN0YW5jZU9mU3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mbyhjb25z
dCBDb25jdXJyZW50SlNMb2NrZXImLCBTdHJ1Y3R1cmVTdHViSW5mbyopOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWlu
LmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5UHJvdG9BY2Nlc3NDaGFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBKU0NlbGw7CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsK
IGNsYXNzIEpTT2JqZWN0OwogY2xhc3MgUHJvcGVydHlTbG90OwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMjMy
MjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgi
CiAjaW5jbHVkZSAiQ29tcGxleEdldFN0YXR1cy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlckFj
Y2Vzc0Nhc2UuaCIKKyNpbmNsdWRlICJJQ1N0YXR1c1V0aWxzLmgiCiAjaW5jbHVkZSAiTExJbnRE
YXRhLmgiCiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKQEAgLTU1LDEyICs1Niw5IEBAIGJvb2wgUHV0QnlJZFN0YXR1czo6YXBwZW5kVmFy
aWFudChjb25zdCAKIH0KIAogI2lmIEVOQUJMRShERkdfSklUKQotYm9vbCBQdXRCeUlkU3RhdHVz
OjpoYXNFeGl0U2l0ZShDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2Rl
SW5kZXgpCitFeGl0RmxhZyBQdXRCeUlkU3RhdHVzOjpoYXNFeGl0U2l0ZShDb2RlQmxvY2sqIHBy
b2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiB7Ci0gICAgVW5saW5rZWRDb2Rl
QmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gcHJvZmlsZWRCbG9jay0+dW5saW5rZWRDb2RlQmxv
Y2soKTsKLSAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHVubGlua2VkQ29kZUJsb2NrLT5t
X2xvY2spOwotICAgIHJldHVybiB1bmxpbmtlZENvZGVCbG9jay0+aGFzRXhpdFNpdGUobG9ja2Vy
LCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkQ2FjaGUpKQotICAgICAg
ICB8fCB1bmxpbmtlZENvZGVCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50
RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkQ29uc3RhbnRDYWNoZSkpOworICAgIHJldHVybiBo
YXNCYWRDYWNoZUV4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpOwogfQogI2Vu
ZGlmCiAKQEAgLTExMCw3ICsxMDgsNyBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNv
bXB1dGVGcm9tCiAgICAgICAgIHN0cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBjb25kaXRpb25TZXQs
IG9mZnNldCwgbmV3U3RydWN0dXJlLT5pbmZlcnJlZFR5cGVEZXNjcmlwdG9yRm9yKHVpZCkpOwog
fQogCi1QdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBw
cm9maWxlZEJsb2NrLCBTdHViSW5mb01hcCYgbWFwLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBV
bmlxdWVkU3RyaW5nSW1wbCogdWlkKQorUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21w
dXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgSUNTdGF0dXNNYXAmIG1hcCwgdW5zaWdu
ZWQgYnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgRXhpdEZsYWcgZGlkRXhp
dCwgQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0YSBjYWxsRXhpdFNpdGVEYXRhKQogewogICAg
IENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKICAgICAK
QEAgLTExOCwxMyArMTE2LDEyIEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0
ZUZvcigKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAgICAgVU5VU0VEX1BBUkFN
KHVpZCk7CiAjaWYgRU5BQkxFKERGR19KSVQpCi0gICAgaWYgKGhhc0V4aXRTaXRlKHByb2ZpbGVk
QmxvY2ssIGJ5dGVjb2RlSW5kZXgpKQorICAgIGlmIChkaWRFeGl0KQogICAgICAgICByZXR1cm4g
UHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKICAgICAKLSAgICBTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8gPSBtYXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkpOworICAgIFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA9IG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUlu
ZGV4KSkuc3R1YkluZm87CiAgICAgUHV0QnlJZFN0YXR1cyByZXN1bHQgPSBjb21wdXRlRm9yU3R1
YkluZm8oCi0gICAgICAgIGxvY2tlciwgcHJvZmlsZWRCbG9jaywgc3R1YkluZm8sIHVpZCwKLSAg
ICAgICAgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVFeGl0U2l0ZURhdGEocHJvZmlsZWRCbG9jaywg
Ynl0ZWNvZGVJbmRleCkpOworICAgICAgICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssIHN0dWJJbmZv
LCB1aWQsIGNhbGxFeGl0U2l0ZURhdGEpOwogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1
cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCB1aWQpOwog
ICAgIApAQCAtMjY0LDM4ICsyNjEsMzQgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpj
b21wdXRlRm9yUwogfQogI2VuZGlmCiAKLVB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29t
cHV0ZUZvcihDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIENvZGVCbG9jayogZGZnQmxvY2ssIFN0
dWJJbmZvTWFwJiBiYXNlbGluZU1hcCwgU3R1YkluZm9NYXAmIGRmZ01hcCwgQ29kZU9yaWdpbiBj
b2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQorUHV0QnlJZFN0YXR1cyBQdXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAm
IGJhc2VsaW5lTWFwLCBJQ1N0YXR1c0NvbnRleHRTdGFjayYgY29udGV4dFN0YWNrLCBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7Ci0jaWYgRU5BQkxFKERG
R19KSVQpCi0gICAgaWYgKGRmZ0Jsb2NrKSB7Ci0gICAgICAgIGlmIChoYXNFeGl0U2l0ZShiYXNl
bGluZUJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpKQotICAgICAgICAgICAgcmV0dXJu
IFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCk7Ci0gICAgICAgIENhbGxMaW5rU3RhdHVzOjpF
eGl0U2l0ZURhdGEgZXhpdFNpdGVEYXRhOwotICAgICAgICB7Ci0gICAgICAgICAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKGJhc2VsaW5lQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICBl
eGl0U2l0ZURhdGEgPSBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YSgKLSAgICAg
ICAgICAgICAgICBiYXNlbGluZUJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpOwotICAg
ICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgUHV0QnlJZFN0YXR1cyByZXN1bHQ7Ci0gICAg
ICAgIHsKLSAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoZGZnQmxvY2stPm1f
bG9jayk7Ci0gICAgICAgICAgICByZXN1bHQgPSBjb21wdXRlRm9yU3R1YkluZm8oCi0gICAgICAg
ICAgICAgICAgbG9ja2VyLCBkZmdCbG9jaywgZGZnTWFwLmdldChjb2RlT3JpZ2luKSwgdWlkLCBl
eGl0U2l0ZURhdGEpOworICAgIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgY2FsbEV4aXRT
aXRlRGF0YSA9CisgICAgICAgIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKGJh
c2VsaW5lQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7CisgICAgRXhpdEZsYWcgZGlk
RXhpdCA9IGhhc0V4aXRTaXRlKGJhc2VsaW5lQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRl
eCk7CisgICAgCisgICAgZm9yIChJQ1N0YXR1c0NvbnRleHQqIGNvbnRleHQgOiBjb250ZXh0U3Rh
Y2spIHsKKyAgICAgICAgSUNTdGF0dXMgc3RhdHVzID0gY29udGV4dC0+Z2V0KGNvZGVPcmlnaW4p
OworICAgICAgICAKKyAgICAgICAgYXV0byB3aXRoRXhpdHMgPSBbJl0gKGNvbnN0IFB1dEJ5SWRT
dGF0dXMmIHJlc3VsdCkgLT4gUHV0QnlJZFN0YXR1cyB7CisgICAgICAgICAgICBpZiAoZGlkRXhp
dC5pc1NldChjb2RlT3JpZ2luLmV4aXRpbmdJbmxpbmVLaW5kKCkpKQorICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQuc2xvd1ZlcnNpb24oKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICBpZiAoc3RhdHVzLnN0dWJJbmZvKSB7Cisg
ICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvbnRleHQtPm9wdGltaXplZENv
ZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgIFB1dEJ5SWRTdGF0dXMgcmVzdWx0ID0gY29t
cHV0ZUZvclN0dWJJbmZvKAorICAgICAgICAgICAgICAgIGxvY2tlciwgY29udGV4dC0+b3B0aW1p
emVkQ29kZUJsb2NrLCBzdGF0dXMuc3R1YkluZm8sIHVpZCwgY2FsbEV4aXRTaXRlRGF0YSk7Cisg
ICAgICAgICAgICBpZiAocmVzdWx0LmlzU2V0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHdp
dGhFeGl0cyhyZXN1bHQpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICAvLyBXZSB1c2Ug
VGFrZXNTbG93UGF0aCBpbiBzb21lIGNhc2VzIHdoZXJlIHRoZSBzdHViIHdhcyB1bnNldC4gVGhh
dCdzIHdlaXJkIGFuZAotICAgICAgICAvLyBpdCB3b3VsZCBiZSBiZXR0ZXIgbm90IHRvIGRvIHRo
YXQuIEJ1dCBpdCBtZWFucyB0aGF0IHdlIGhhdmUgdG8gZGVmZW5kCi0gICAgICAgIC8vIG91cnNl
bHZlcyBoZXJlLgotICAgICAgICBpZiAocmVzdWx0LmlzU2ltcGxlKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgICAgICBpZiAoc3RhdHVzLnB1dFN0YXR1cykKKyAgICAgICAgICAg
IHJldHVybiB3aXRoRXhpdHMoKnN0YXR1cy5wdXRTdGF0dXMpOwogICAgIH0KLSNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKGRmZ0Jsb2NrKTsKLSAgICBVTlVTRURfUEFSQU0oZGZnTWFwKTsKLSNlbmRp
ZgogCi0gICAgcmV0dXJuIGNvbXB1dGVGb3IoYmFzZWxpbmVCbG9jaywgYmFzZWxpbmVNYXAsIGNv
ZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgdWlkKTsKKyAgICByZXR1cm4gY29tcHV0ZUZvcihiYXNl
bGluZUJsb2NrLCBiYXNlbGluZU1hcCwgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCB1aWQsIGRp
ZEV4aXQsIGNhbGxFeGl0U2l0ZURhdGEpOwogfQogCiBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0
dXM6OmNvbXB1dGVGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RydWN0
dXJlU2V0JiBzZXQsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIGJvb2wgaXNEaXJlY3QpCkBAIC0z
OTgsNiArMzkxLDM1IEBAIGJvb2wgUHV0QnlJZFN0YXR1czo6bWFrZXNDYWxscygpIGNvbnN0CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCitQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OnNsb3dW
ZXJzaW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhtYWtlc0NhbGxzKCkg
PyBNYWtlc0NhbGxzIDogVGFrZXNTbG93UGF0aCk7Cit9CisKK3ZvaWQgUHV0QnlJZFN0YXR1czo6
bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgZm9yIChQdXRCeUlkVmFy
aWFudCYgdmFyaWFudCA6IG1fdmFyaWFudHMpCisgICAgICAgIHZhcmlhbnQubWFya0lmQ2hlYXAo
dmlzaXRvcik7Cit9CisKK2Jvb2wgUHV0QnlJZFN0YXR1czo6ZmluYWxpemUoKQoreworICAgIGZv
ciAoUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKSB7CisgICAgICAgIGlmICgh
dmFyaWFudC5maW5hbGl6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBQdXRCeUlkU3RhdHVzOjpmaWx0ZXIoY29uc3QgU3Ry
dWN0dXJlU2V0JiBzZXQpCit7CisgICAgaWYgKG1fc3RhdGUgIT0gU2ltcGxlKQorICAgICAgICBy
ZXR1cm47CisgICAgZmlsdGVySUNTdGF0dXNWYXJpYW50cyhtX3ZhcmlhbnRzLCBzZXQpOworICAg
IGlmIChtX3ZhcmlhbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgbV9zdGF0ZSA9IE5vSW5mb3JtYXRp
b247Cit9CisKIHZvaWQgUHV0QnlJZFN0YXR1czo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dAogewogICAgIHN3aXRjaCAobV9zdGF0ZSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw2ICsyNiw4IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNhbGxMaW5rU3Rh
dHVzLmgiCisjaW5jbHVkZSAiRXhpdEZsYWcuaCIKKyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgog
I2luY2x1ZGUgIlB1dEJ5SWRWYXJpYW50LmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNjksMTAg
KzcxLDEwIEBAIHB1YmxpYzoKICAgICAgICAgbV92YXJpYW50cy5hcHBlbmQodmFyaWFudCk7CiAg
ICAgfQogICAgIAotICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2Nr
KiwgU3R1YkluZm9NYXAmLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1w
bCogdWlkKTsKKyAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayos
IElDU3RhdHVzTWFwJiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwq
IHVpZCwgRXhpdEZsYWcsIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEpOwogICAgIHN0YXRp
YyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJ1Y3R1
cmVTZXQmLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBib29sIGlzRGlyZWN0KTsKICAgICAKLSAg
ICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9j
aywgQ29kZUJsb2NrKiBkZmdCbG9jaywgU3R1YkluZm9NYXAmIGJhc2VsaW5lTWFwLCBTdHViSW5m
b01hcCYgZGZnTWFwLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKKyAgICBz
dGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywg
SUNTdGF0dXNNYXAmIGJhc2VsaW5lTWFwLCBJQ1N0YXR1c0NvbnRleHRTdGFjayYgY29udGV4dFN0
YWNrLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKIAogI2lmIEVOQUJMRShK
SVQpCiAgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvclN0dWJJbmZvKGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgU3RydWN0dXJlU3R1
YkluZm8qLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKQEAgLTg1LDE3ICs4
NywyMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1NpbXBsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGUgPT0gU2ltcGxlOyB9CiAgICAgYm9vbCB0YWtlc1Nsb3dQYXRoKCkgY29uc3QgeyByZXR1cm4g
bV9zdGF0ZSA9PSBUYWtlc1Nsb3dQYXRoIHx8IG1fc3RhdGUgPT0gTWFrZXNDYWxsczsgfQogICAg
IGJvb2wgbWFrZXNDYWxscygpIGNvbnN0OworICAgIFB1dEJ5SWRTdGF0dXMgc2xvd1ZlcnNpb24o
KSBjb25zdDsKICAgICAKICAgICBzaXplX3QgbnVtVmFyaWFudHMoKSBjb25zdCB7IHJldHVybiBt
X3ZhcmlhbnRzLnNpemUoKTsgfQogICAgIGNvbnN0IFZlY3RvcjxQdXRCeUlkVmFyaWFudCwgMT4m
IHZhcmlhbnRzKCkgY29uc3QgeyByZXR1cm4gbV92YXJpYW50czsgfQogICAgIGNvbnN0IFB1dEJ5
SWRWYXJpYW50JiBhdChzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFudHNbaW5k
ZXhdOyB9CiAgICAgY29uc3QgUHV0QnlJZFZhcmlhbnQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4
KSBjb25zdCB7IHJldHVybiBhdChpbmRleCk7IH0KICAgICAKKyAgICB2b2lkIG1hcmtJZkNoZWFw
KFNsb3RWaXNpdG9yJik7CisgICAgYm9vbCBmaW5hbGl6ZSgpOworICAgIHZvaWQgZmlsdGVyKGNv
bnN0IFN0cnVjdHVyZVNldCYpOworICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNv
bnN0OwogICAgIAogcHJpdmF0ZToKICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBzdGF0aWMgYm9v
bCBoYXNFeGl0U2l0ZShDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKyAgICBz
dGF0aWMgRXhpdEZsYWcgaGFzRXhpdFNpdGUoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoSklUKQogICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVz
IGNvbXB1dGVGb3JTdHViSW5mbygKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QdXRCeUlkVmFyaWFudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yMDYsNiArMjA2LDI2IEBAIGJvb2wgUHV0QnlJZFZhcmlhbnQ6OmF0dGVtcHRUb01l
cmdlVHJhbnMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBQdXRCeUlkVmFyaWFudDo6bWFy
a0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgbV9vbGRTdHJ1Y3R1cmUubWFy
a0lmQ2hlYXAodmlzaXRvcik7CisgICAgaWYgKG1fbmV3U3RydWN0dXJlKQorICAgICAgICBtX25l
d1N0cnVjdHVyZS0+bWFya0lmQ2hlYXAodmlzaXRvcik7Cit9CisKK2Jvb2wgUHV0QnlJZFZhcmlh
bnQ6OmZpbmFsaXplKCkKK3sKKyAgICBpZiAoIW1fb2xkU3RydWN0dXJlLmlzU3RpbGxBbGl2ZSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fbmV3U3RydWN0dXJlICYmICFIZWFw
Ojppc01hcmtlZChtX25ld1N0cnVjdHVyZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIW1fY29uZGl0aW9uU2V0LmFyZVN0aWxsTGl2ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKG1fY2FsbExpbmtTdGF0dXMgJiYgIW1fY2FsbExpbmtTdGF0dXMtPmZpbmFsaXpl
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBQ
dXRCeUlkVmFyaWFudDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIGR1bXBJ
bkNvbnRleHQob3V0LCAwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRCeUlkVmFyaWFudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkVmFyaWFudC5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03
MywxNyArNzMsMTcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9vbGRTdHJ1Y3R1cmU7CiAg
ICAgfQogICAgIAotICAgIGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0KCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBzdHJ1Y3R1cmUoKTsKLSAgICB9Ci0gICAgCiAgICAgY29u
c3QgU3RydWN0dXJlU2V0JiBvbGRTdHJ1Y3R1cmUoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNT
RVJUKGtpbmQoKSA9PSBUcmFuc2l0aW9uIHx8IGtpbmQoKSA9PSBSZXBsYWNlIHx8IGtpbmQoKSA9
PSBTZXR0ZXIpOwogICAgICAgICByZXR1cm4gbV9vbGRTdHJ1Y3R1cmU7CiAgICAgfQogICAgIAor
ICAgIGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0KCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBvbGRTdHJ1Y3R1cmUoKTsKKyAgICB9CisgICAgCiAgICAgU3RydWN0dXJlU2V0
JiBvbGRTdHJ1Y3R1cmUoKQogICAgIHsKICAgICAgICAgQVNTRVJUKGtpbmQoKSA9PSBUcmFuc2l0
aW9uIHx8IGtpbmQoKSA9PSBSZXBsYWNlIHx8IGtpbmQoKSA9PSBTZXR0ZXIpOwpAQCAtMTI5LDYg
KzEyOSw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgYXR0ZW1wdFRvTWVyZ2UoY29uc3QgUHV0QnlJ
ZFZhcmlhbnQmIG90aGVyKTsKICAgICAKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9y
Jik7CisgICAgYm9vbCBmaW5hbGl6ZSgpOworICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0OwogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250
ZXh0KikgY29uc3Q7CiAKQEAgLTEzNyw3ICsxNDAsNyBAQCBwcml2YXRlOgogICAgIAogICAgIEtp
bmQgbV9raW5kOwogICAgIFN0cnVjdHVyZVNldCBtX29sZFN0cnVjdHVyZTsKLSAgICBTdHJ1Y3R1
cmUqIG1fbmV3U3RydWN0dXJlOworICAgIFN0cnVjdHVyZSogbV9uZXdTdHJ1Y3R1cmUgeyBudWxs
cHRyIH07CiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgbV9jb25kaXRpb25TZXQ7CiAg
ICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAgICAgSW5mZXJyZWRUeXBlOjpEZXNjcmlwdG9y
IG1fcmVxdWlyZWRUeXBlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jl
Y29yZGVkU3RhdHVzZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlY29yZGVkU3RhdHVzZXMu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1JlY29yZGVkU3RhdHVzZXMmIFJlY29yZGVkU3RhdHVz
ZXM6Om9wZXJhdG9yPShSZWNvcmRlZFN0YXR1c2VzJiYgb3RoZXIpCit7CisgICAgY2FsbHMgPSBX
VEZNb3ZlKG90aGVyLmNhbGxzKTsKKyAgICBnZXRzID0gV1RGTW92ZShvdGhlci5nZXRzKTsKKyAg
ICBwdXRzID0gV1RGTW92ZShvdGhlci5wdXRzKTsKKyAgICBzaHJpbmtUb0ZpdCgpOworICAgIHJl
dHVybiAqdGhpczsKK30KKworUmVjb3JkZWRTdGF0dXNlczo6UmVjb3JkZWRTdGF0dXNlcyhSZWNv
cmRlZFN0YXR1c2VzJiYgb3RoZXIpCit7CisgICAgKnRoaXMgPSBXVEZNb3ZlKG90aGVyKTsKK30K
KworQ2FsbExpbmtTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKGNv
bnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBzdGF0dXMp
Cit7CisgICAgYXV0byBzdGF0dXNQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxMaW5rU3RhdHVz
PihzdGF0dXMpOworICAgIENhbGxMaW5rU3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7
CisgICAgY2FsbHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3Rh
dHVzUHRyKSkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0dldEJ5SWRTdGF0dXMqIFJlY29y
ZGVkU3RhdHVzZXM6OmFkZEdldEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdp
biwgY29uc3QgR2V0QnlJZFN0YXR1cyYgc3RhdHVzKQoreworICAgIGF1dG8gc3RhdHVzUHRyID0g
c3RkOjptYWtlX3VuaXF1ZTxHZXRCeUlkU3RhdHVzPihzdGF0dXMpOworICAgIEdldEJ5SWRTdGF0
dXMqIHJlc3VsdCA9IHN0YXR1c1B0ci5nZXQoKTsKKyAgICBnZXRzLmFwcGVuZChzdGQ6Om1ha2Vf
cGFpcihjb2RlT3JpZ2luLCBXVEZNb3ZlKHN0YXR1c1B0cikpKTsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorICAgIAorUHV0QnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkUHV0QnlJZFN0
YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBjb25zdCBQdXRCeUlkU3RhdHVzJiBz
dGF0dXMpCit7CisgICAgYXV0byBzdGF0dXNQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPFB1dEJ5SWRT
dGF0dXM+KHN0YXR1cyk7CisgICAgUHV0QnlJZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdl
dCgpOworICAgIHB1dHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUo
c3RhdHVzUHRyKSkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgUmVjb3JkZWRTdGF0
dXNlczo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHNsb3RWaXNpdG9yKQoreworICAgIGZvciAo
YXV0byYgcGFpciA6IGdldHMpCisgICAgICAgIHBhaXIuc2Vjb25kLT5tYXJrSWZDaGVhcChzbG90
VmlzaXRvcik7CisgICAgZm9yIChhdXRvJiBwYWlyIDogcHV0cykKKyAgICAgICAgcGFpci5zZWNv
bmQtPm1hcmtJZkNoZWFwKHNsb3RWaXNpdG9yKTsKK30KKwordm9pZCBSZWNvcmRlZFN0YXR1c2Vz
OjpmaW5hbGl6ZVdpdGhvdXREZWxldGluZygpCit7CisgICAgYXV0byBmaW5hbGl6ZSA9IFtdIChh
dXRvJiB2ZWN0b3IpIHsKKyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogdmVjdG9yKSB7CisgICAg
ICAgICAgICBpZiAoIXBhaXIuc2Vjb25kLT5maW5hbGl6ZSgpKQorICAgICAgICAgICAgICAgIHBh
aXIuc2Vjb25kID0geyB9OworICAgICAgICB9CisgICAgfTsKKyAgICBmb3JFYWNoVmVjdG9yKGZp
bmFsaXplKTsKK30KKwordm9pZCBSZWNvcmRlZFN0YXR1c2VzOjpmaW5hbGl6ZSgpCit7CisgICAg
YXV0byBmaW5hbGl6ZSA9IFtdIChhdXRvJiB2ZWN0b3IpIHsKKyAgICAgICAgdmVjdG9yLnJlbW92
ZUFsbE1hdGNoaW5nKAorICAgICAgICAgICAgWyZdIChhdXRvJiBwYWlyKSAtPiBib29sIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gISpwYWlyLnNlY29uZCB8fCAhcGFpci5zZWNvbmQtPmZpbmFs
aXplKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgdmVjdG9yLnNocmlua1RvRml0KCk7Cisg
ICAgfTsKKyAgICBmb3JFYWNoVmVjdG9yKGZpbmFsaXplKTsKK30KKwordm9pZCBSZWNvcmRlZFN0
YXR1c2VzOjpzaHJpbmtUb0ZpdCgpCit7CisgICAgZm9yRWFjaFZlY3RvcihbXSAoYXV0byYgdmVj
dG9yKSB7IHZlY3Rvci5zaHJpbmtUb0ZpdCgpOyB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2Vz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVk
U3RhdHVzZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUmVjb3JkZWRTdGF0dXNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgorI2luY2x1ZGUgIkdldEJ5SWRTdGF0dXMu
aCIKKyNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1
Y3QgUmVjb3JkZWRTdGF0dXNlcyB7CisgICAgUmVjb3JkZWRTdGF0dXNlcygpIHsgfQorICAgIAor
ICAgIFJlY29yZGVkU3RhdHVzZXMmIG9wZXJhdG9yPShjb25zdCBSZWNvcmRlZFN0YXR1c2VzJiBv
dGhlcikgPSBkZWxldGU7CisgICAgCisgICAgUmVjb3JkZWRTdGF0dXNlcyYgb3BlcmF0b3I9KFJl
Y29yZGVkU3RhdHVzZXMmJiBvdGhlcik7CisgICAgCisgICAgUmVjb3JkZWRTdGF0dXNlcyhjb25z
dCBSZWNvcmRlZFN0YXR1c2VzJiBvdGhlcikgPSBkZWxldGU7CisgICAgCisgICAgUmVjb3JkZWRT
dGF0dXNlcyhSZWNvcmRlZFN0YXR1c2VzJiYgb3RoZXIpOworICAgIAorICAgIENhbGxMaW5rU3Rh
dHVzKiBhZGRDYWxsTGlua1N0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29uc3QgQ2FsbExpbmtT
dGF0dXMmKTsKKyAgICBHZXRCeUlkU3RhdHVzKiBhZGRHZXRCeUlkU3RhdHVzKGNvbnN0IENvZGVP
cmlnaW4mLCBjb25zdCBHZXRCeUlkU3RhdHVzJik7CisgICAgUHV0QnlJZFN0YXR1cyogYWRkUHV0
QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29uc3QgUHV0QnlJZFN0YXR1cyYpOworICAg
IAorICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHNsb3RWaXNpdG9yKTsKKyAgICAK
KyAgICB2b2lkIGZpbmFsaXplV2l0aG91dERlbGV0aW5nKCk7CisgICAgdm9pZCBmaW5hbGl6ZSgp
OworICAgIAorICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jPgorICAgIHZvaWQgZm9yRWFjaFZlY3Rvcihjb25zdCBGdW5jJiBmdW5jKQorICAg
IHsKKyAgICAgICAgZnVuYyhjYWxscyk7CisgICAgICAgIGZ1bmMoZ2V0cyk7CisgICAgICAgIGZ1
bmMocHV0cyk7CisgICAgfQorICAgIAorICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29kZU9yaWdpbiwg
c3RkOjp1bmlxdWVfcHRyPENhbGxMaW5rU3RhdHVzPj4+IGNhbGxzOworICAgIFZlY3RvcjxzdGQ6
OnBhaXI8Q29kZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPEdldEJ5SWRTdGF0dXM+Pj4gZ2V0czsK
KyAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxQdXRCeUlk
U3RhdHVzPj4+IHB1dHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5jcHAJKHJldmlzaW9u
IDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDYgKzMxLDIxIEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCit2b2lkIFN0cnVjdHVyZVNldDo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
IGNvbnN0Cit7CisgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6ICp0aGlzKQorICAgICAg
ICBzdHJ1Y3R1cmUtPm1hcmtJZkNoZWFwKHZpc2l0b3IpOworfQorCitib29sIFN0cnVjdHVyZVNl
dDo6aXNTdGlsbEFsaXZlKCkgY29uc3QKK3sKKyAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJl
IDogKnRoaXMpIHsKKyAgICAgICAgaWYgKCFIZWFwOjppc01hcmtlZChzdHJ1Y3R1cmUpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9p
ZCBTdHJ1Y3R1cmVTZXQ6OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRl
eHQqIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgQ29tbWFQcmludGVyIGNvbW1hOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAkocmV2aXNpb24g
MjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSwgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTgsNiArNTgsOSBAQCBwdWJsaWM6CiAgICAgewog
ICAgICAgICByZXR1cm4gb25seUVudHJ5KCk7CiAgICAgfQorCisgICAgdm9pZCBtYXJrSWZDaGVh
cChTbG90VmlzaXRvciYpIGNvbnN0OworICAgIGJvb2wgaXNTdGlsbEFsaXZlKCkgY29uc3Q7CiAg
ICAgCiAgICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBj
b25zdDsKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9UZXJtaW5hdGVkQ29kZU9yaWdpbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9UZXJtaW5hdGVkQ29kZU9yaWdpbi5o
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9UZXJtaW5h
dGVkQ29kZU9yaWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJDb2RlT3JpZ2luLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgSW5saW5l
Q2FsbEZyYW1lOworCitzdHJ1Y3QgVGVybWluYXRlZENvZGVPcmlnaW4geworICAgIFRlcm1pbmF0
ZWRDb2RlT3JpZ2luKCkgeyB9CisgICAgCisgICAgVGVybWluYXRlZENvZGVPcmlnaW4oY29uc3Qg
Q29kZU9yaWdpbiYgY29kZU9yaWdpbiwgSW5saW5lQ2FsbEZyYW1lKiB0ZXJtaW5hbCkKKyAgICAg
ICAgOiBjb2RlT3JpZ2luKGNvZGVPcmlnaW4pCisgICAgICAgICwgdGVybWluYWwodGVybWluYWwp
CisgICAgeworICAgIH0KKyAgICAKKyAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW47CisgICAgSW5s
aW5lQ2FsbEZyYW1lKiB0ZXJtaW5hbCB7IG51bGxwdHIgfTsKK307CisKK3N0cnVjdCBUZXJtaW5h
dGVkQ29kZU9yaWdpbkhhc2hUcmFuc2xhdG9yIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChj
b25zdCBUZXJtaW5hdGVkQ29kZU9yaWdpbiYgdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4g
dmFsdWUuY29kZU9yaWdpbi5hcHByb3hpbWF0ZUhhc2godmFsdWUudGVybWluYWwpOworICAgIH0K
KyAgICAKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBDb2RlT3JpZ2luJiBhLCBjb25zdCBU
ZXJtaW5hdGVkQ29kZU9yaWdpbiYgYikKKyAgICB7CisgICAgICAgIHJldHVybiBiLmNvZGVPcmln
aW4uaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhhLCBiLnRlcm1pbmFsKTsKKyAgICB9Cit9OworCit9
IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMjMy
MjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNDk5LDYgKzM0OTksMjUgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgIGNhc2UgWm9tYmllSGludDoKICAg
ICBjYXNlIEV4aXRPSzoKICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgIGNhc2UgRmlsdGVy
Q2FsbExpbmtTdGF0dXM6CisgICAgICAgIGlmIChKU1ZhbHVlIHZhbHVlID0gZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkubV92YWx1ZSkKKyAgICAgICAgICAgIG5vZGUtPmNhbGxMaW5rU3RhdHVzKCkt
PmZpbHRlcihtX3ZtLCB2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgICAgICAKKyAgICBjYXNl
IEZpbHRlckdldEJ5SWRTdGF0dXM6IHsKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBm
b3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgaWYgKHZhbHVlLm1fc3RydWN0dXJlLmlz
RmluaXRlKCkpCisgICAgICAgICAgICBub2RlLT5nZXRCeUlkU3RhdHVzKCktPmZpbHRlcih2YWx1
ZS5tX3N0cnVjdHVyZS50b1N0cnVjdHVyZVNldCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgICAgICAKKyAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6IHsKKyAgICAgICAgQWJzdHJh
Y3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgaWYgKHZh
bHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpCisgICAgICAgICAgICBub2RlLT5wdXRCeUlkU3Rh
dHVzKCktPmZpbHRlcih2YWx1ZS5tX3N0cnVjdHVyZS50b1N0cnVjdHVyZVNldCgpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQogCiAgICAgY2FzZSBDaGVja1R5cGVJbmZvRmxhZ3M6IHsKICAgICAg
ICAgY29uc3QgQWJzdHJhY3RWYWx1ZSYgYWJzdHJhY3RWYWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hp
bGQxKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgyLDkgKzEwODIs
OCBAQCBwcml2YXRlOgogICAgICAgICAvLyBjb2RlIGJsb2NrIGhhZCBnYXRoZXJlZC4KICAgICAg
ICAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXIgbV9sYXp5T3BlcmFuZHM7CiAgICAgICAg
IAotICAgICAgICBDYWxsTGlua0luZm9NYXAgbV9jYWxsTGlua0luZm9zOwotICAgICAgICBTdHVi
SW5mb01hcCBtX3N0dWJJbmZvczsKLSAgICAgICAgQnlWYWxJbmZvTWFwIG1fYnlWYWxJbmZvczsK
KyAgICAgICAgSUNTdGF0dXNNYXAgbV9iYXNlbGluZU1hcDsKKyAgICAgICAgSUNTdGF0dXNDb250
ZXh0IG1fb3B0aW1pemVkQ29udGV4dDsKICAgICAgICAgCiAgICAgICAgIC8vIFBvaW50ZXJzIHRv
IHRoZSBhcmd1bWVudCBwb3NpdGlvbiB0cmFja2VycyBmb3IgdGhpcyBzbGljZSBvZiBjb2RlLgog
ICAgICAgICBWZWN0b3I8QXJndW1lbnRQb3NpdGlvbio+IG1fYXJndW1lbnRQb3NpdGlvbnM7CkBA
IC0xMTAyLDEwICsxMTAxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIElubGluZUNhbGxGcmFt
ZTo6S2luZCwKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrKTsKICAg
ICAgICAgCi0gICAgICAgIH5JbmxpbmVTdGFja0VudHJ5KCkKLSAgICAgICAgewotICAgICAgICAg
ICAgbV9ieXRlQ29kZVBhcnNlci0+bV9pbmxpbmVTdGFja1RvcCA9IG1fY2FsbGVyOwotICAgICAg
ICB9CisgICAgICAgIH5JbmxpbmVTdGFja0VudHJ5KCk7CiAgICAgICAgIAogICAgICAgICBWaXJ0
dWFsUmVnaXN0ZXIgcmVtYXBPcGVyYW5kKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSBjb25zdAog
ICAgICAgICB7CkBAIC0xMTIwLDYgKzExMTYsOCBAQCBwcml2YXRlOgogICAgIAogICAgIElubGlu
ZVN0YWNrRW50cnkqIG1faW5saW5lU3RhY2tUb3A7CiAgICAgCisgICAgSUNTdGF0dXNDb250ZXh0
U3RhY2sgbV9pY0NvbnRleHRTdGFjazsKKyAgICAKICAgICBzdHJ1Y3QgRGVsYXllZFNldExvY2Fs
IHsKICAgICAgICAgQ29kZU9yaWdpbiBtX29yaWdpbjsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IG1fb3BlcmFuZDsKQEAgLTExNDYsMTAgKzExNDQsNiBAQCBwcml2YXRlOgogICAgIAogICAgIFZl
Y3RvcjxEZWxheWVkU2V0TG9jYWwsIDI+IG1fc2V0TG9jYWxRdWV1ZTsKIAotICAgIENvZGVCbG9j
ayogbV9kZmdDb2RlQmxvY2s7Ci0gICAgQ2FsbExpbmtTdGF0dXM6OkNvbnRleHRNYXAgbV9jYWxs
Q29udGV4dE1hcDsKLSAgICBTdHViSW5mb01hcCBtX2RmZ1N0dWJJbmZvczsKLSAgICAKICAgICBJ
bnN0cnVjdGlvbiogbV9jdXJyZW50SW5zdHJ1Y3Rpb247CiAgICAgYm9vbCBtX2hhc0RlYnVnZ2Vy
RW5hYmxlZDsKIH07CkBAIC0xMjE0LDcgKzEyMDgsNyBAQCBCeXRlQ29kZVBhcnNlcjo6VGVybWlu
YWxpdHkgQnl0ZUNvZGVQYXJzCiAKICAgICBDYWxsTGlua1N0YXR1cyBjYWxsTGlua1N0YXR1cyA9
IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5t
X3Byb2ZpbGVkQmxvY2ssIGN1cnJlbnRDb2RlT3JpZ2luKCksCi0gICAgICAgIG1faW5saW5lU3Rh
Y2tUb3AtPm1fY2FsbExpbmtJbmZvcywgbV9jYWxsQ29udGV4dE1hcCk7CisgICAgICAgIG1faW5s
aW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2spOwogCiAgICAgSW5s
aW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQgPSBJbmxpbmVDYWxsRnJhbWU6OmtpbmRGb3IoY2FsbE1v
ZGUpOwogCkBAIC0xMjQyLDYgKzEyMzYsOCBAQCBCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkg
Qnl0ZUNvZGVQYXJzCiAgICAgLy8gSWYgd2UgaGF2ZSBwcm9maWxpbmcgaW5mb3JtYXRpb24gYWJv
dXQgdGhpcyBjYWxsLCBhbmQgaXQgZGlkIG5vdCBiZWhhdmUgdG9vIHBvbHltb3JwaGljYWxseSwK
ICAgICAvLyB3ZSBtYXkgYmUgYWJsZSB0byBpbmxpbmUgaXQsIG9yIGluIHRoZSBjYXNlIG9mIHJl
Y3Vyc2l2ZSB0YWlsIGNhbGxzIHR1cm4gaXQgaW50byBhIGp1bXAuCiAgICAgaWYgKGNhbGxMaW5r
U3RhdHVzLmNhbk9wdGltaXplKCkpIHsKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJDYWxsTGlu
a1N0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkQ2FsbExp
bmtTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgY2FsbExpbmtTdGF0dXMpKSwgY2FsbFRhcmdl
dCk7CisgICAgICAgIAogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50ID0gdmly
dHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMCwgcmVnaXN0ZXJPZmZzZXQpOwogICAgICAgICBhdXRv
IG9wdGltaXphdGlvblJlc3VsdCA9IGhhbmRsZUlubGluaW5nKGNhbGxUYXJnZXQsIHJlc3VsdCwg
Y2FsbExpbmtTdGF0dXMsIHJlZ2lzdGVyT2Zmc2V0LCB0aGlzQXJndW1lbnQsCiAgICAgICAgICAg
ICBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgbV9jdXJyZW50SW5kZXggKyBpbnN0cnVjdGlv
blNpemUsIG9wLCBraW5kLCBwcmVkaWN0aW9uKTsKQEAgLTEyNzksMTIgKzEyNzUsMTQgQEAgQnl0
ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFycwogICAgIAogICAgIENhbGxMaW5r
U3RhdHVzIGNhbGxMaW5rU3RhdHVzID0gQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAg
ICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgY3VycmVudENvZGVPcmlnaW4o
KSwKLSAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsTGlua0luZm9zLCBtX2NhbGxDb250
ZXh0TWFwKTsKKyAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0Nv
bnRleHRTdGFjayk7CiAgICAgcmVmaW5lU3RhdGljYWxseShjYWxsTGlua1N0YXR1cywgY2FsbFRh
cmdldCk7CiAgICAgCiAgICAgVkVSQk9TRV9MT0coIiAgICBWYXJhcmdzIGNhbGwgbGluayBzdGF0
dXMgYXQgIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIjogIiwgY2FsbExpbmtTdGF0dXMsICJcbiIp
OwogICAgIAogICAgIGlmIChjYWxsTGlua1N0YXR1cy5jYW5PcHRpbWl6ZSgpKSB7CisgICAgICAg
IGFkZFRvR3JhcGgoRmlsdGVyQ2FsbExpbmtTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5y
ZWNvcmRlZFN0YXR1c2VzLmFkZENhbGxMaW5rU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIGNh
bGxMaW5rU3RhdHVzKSksIGNhbGxUYXJnZXQpOworICAgICAgICAKICAgICAgICAgaWYgKGhhbmRs
ZVZhcmFyZ3NJbmxpbmluZyhjYWxsVGFyZ2V0LCByZXN1bHQsCiAgICAgICAgICAgICBjYWxsTGlu
a1N0YXR1cywgZmlyc3RGcmVlUmVnLCBWaXJ0dWFsUmVnaXN0ZXIodGhpc1JlZyksIFZpcnR1YWxS
ZWdpc3Rlcihhcmd1bWVudHMpLAogICAgICAgICAgICAgZmlyc3RWYXJBcmdPZmZzZXQsIG9wLApA
QCAtMzMxOCw5ICszMzE2LDEyIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVEdl
dHRlcigKICAgICBpZiAoIWNoZWNrKHZhcmlhbnQuY29uZGl0aW9uU2V0KCkpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3Jh
cGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQuc3RydWN0dXJlU2V0KCkpKSwgdGhpc05vZGUpOwot
CisgICAgCiAgICAgLy8gV2UgZG8gbm90IG5lZWQgdG8gZW1pdCBDaGVja0NlbGwgdGhpbmd5IGhl
cmUuIFdoZW4gdGhlIGN1c3RvbSBhY2Nlc3NvciBpcyByZXBsYWNlZCB0byBkaWZmZXJlbnQgb25l
LCBTdHJ1Y3R1cmUgdHJhbnNpdGlvbiBvY2N1cnMuCiAgICAgYWRkVG9HcmFwaChDaGVja1N1YkNs
YXNzLCBPcEluZm8oZG9tQXR0cmlidXRlLmNsYXNzSW5mbyksIHRoaXNOb2RlKTsKKyAgICAKKyAg
ICBib29sIHdhc1NlZW5JbkpJVCA9IHRydWU7CisgICAgYWRkVG9HcmFwaChGaWx0ZXJHZXRCeUlk
U3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcy5hZGRHZXRCeUlk
U3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIEdldEJ5SWRTdGF0dXMoR2V0QnlJZFN0YXR1czo6
Q3VzdG9tLCB3YXNTZWVuSW5KSVQsIHZhcmlhbnQpKSksIHRoaXNOb2RlKTsKIAogICAgIENhbGxE
T01HZXR0ZXJEYXRhKiBjYWxsRE9NR2V0dGVyRGF0YSA9IG1fZ3JhcGgubV9jYWxsRE9NR2V0dGVy
RGF0YS5hZGQoKTsKICAgICBjYWxsRE9NR2V0dGVyRGF0YS0+Y3VzdG9tQWNjZXNzb3JHZXR0ZXIg
PSB2YXJpYW50LmN1c3RvbUFjY2Vzc29yR2V0dGVyKCk7CkBAIC0zMzUyLDYgKzMzNTMsOCBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVNb2R1bGVOYW1lc3BhCiAgICAgaWYgKG1faW5saW5l
U3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENl
bGwpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYWRkVG9HcmFwaChDaGVja0NlbGwsIE9w
SW5mbyhtX2dyYXBoLmZyZWV6ZShnZXRCeUlkLm1vZHVsZU5hbWVzcGFjZU9iamVjdCgpKSksIEVk
Z2UoYmFzZSwgQ2VsbFVzZSkpOworICAgIAorICAgIGFkZFRvR3JhcGgoRmlsdGVyR2V0QnlJZFN0
YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkR2V0QnlJZFN0
YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBnZXRCeUlkKSksIGJhc2UpOwogCiAgICAgLy8gSWRl
YWxseSB3ZSB3b3VsZG4ndCBoYXZlIHRvIGRvIHRoaXMgUGhhbnRvbS4gQnV0OgogICAgIC8vCkBA
IC00MDA3LDE0ICs0MDEwLDI1IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQo
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCisgICAgLy8gRklYTUU6IElmIHdlIHVzZSB0
aGUgR2V0QnlJZFN0YXR1cyBmb3IgYW55dGhpbmcgdGhlbiB3ZSBzaG91bGQgcmVjb3JkIGl0IGFu
ZCBpbnNlcnQgYSBub2RlCisgICAgLy8gYWZ0ZXIgZXZlcnl0aGluZyBlbHNlIChsaWtlIHRoZSBH
ZXRCeU9mZnNldCBvciB3aGF0ZXZlcikgdGhhdCB3aWxsIGZpbHRlciB0aGUgcmVjb3JkZWQKKyAg
ICAvLyBHZXRCeUlkU3RhdHVzLiBUaGF0IG1lYW5zIHRoYXQgdGhlIGNvbnN0YW50IGZvbGRlciBh
bHNvIG5lZWRzIHRvIGRvIHRoZSBzYW1lIQorICAgIAogICAgIGlmIChnZXRCeUlkU3RhdHVzLm51
bVZhcmlhbnRzKCkgPiAxKSB7CiAgICAgICAgIGlmIChnZXRCeUlkU3RhdHVzLm1ha2VzQ2FsbHMo
KSB8fCAhaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkKLSAgICAgICAgICAgIHx8ICFPcHRpb25z
Ojp1c2VQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nKCkpIHsKKyAgICAgICAgICAgIHx8ICFPcHRp
b25zOjp1c2VQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nKCkKKyAgICAgICAgICAgIHx8IGdldEJ5
SWRTdGF0dXMubnVtVmFyaWFudHMoKSA+IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQWNjZXNzSW5s
aW5pbmdMaXN0U2l6ZSgpKSB7CisgICAgICAgICAgICBpZiAoZmFsc2UgJiYgZ2V0QnlJZFN0YXR1
cy5udW1WYXJpYW50cygpID4gT3B0aW9uczo6bWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xp
c3RTaXplKCkpIHsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJBdCAiLCBjdXJyZW50Q29kZU9y
aWdpbigpLCAiXG4iKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJHaXZpbmcgdXAgb246ICIs
IGdldEJ5SWRTdGF0dXMsICJcbiIpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgc2V0KFZp
cnR1YWxSZWdpc3RlcihkZXN0aW5hdGlvbk9wZXJhbmQpLAogICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoZ2V0QnlJZCwgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIpLCBPcEluZm8ocHJlZGljdGlv
biksIGJhc2UpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKKyAg
ICAgICAgYWRkVG9HcmFwaChGaWx0ZXJHZXRCeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3Bs
YW4ucmVjb3JkZWRTdGF0dXNlcy5hZGRHZXRCeUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCks
IGdldEJ5SWRTdGF0dXMpKSwgYmFzZSk7CisgICAgICAgIAogICAgICAgICBWZWN0b3I8TXVsdGlH
ZXRCeU9mZnNldENhc2UsIDI+IGNhc2VzOwogICAgICAgICAKICAgICAgICAgLy8gMSkgRW1pdCBw
cm90b3R5cGUgc3RydWN0dXJlIGNoZWNrcyBmb3IgYWxsIGNoYWlucy4gVGhpcyBjb3VsZCBzb3J0
IG9mIG1heWJlIG5vdCBiZQpAQCAtNDA1NiwxMCArNDA3MCwxMiBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAgICAgICAgYWRkVG9HcmFwaChNdWx0aUdldEJ5T2Zm
c2V0LCBPcEluZm8oZGF0YSksIE9wSW5mbyhwcmVkaWN0aW9uKSwgYmFzZSkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQorCisgICAgYWRkVG9HcmFwaChGaWx0ZXJHZXRCeUlkU3RhdHVzLCBPcElu
Zm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcy5hZGRHZXRCeUlkU3RhdHVzKGN1cnJl
bnRDb2RlT3JpZ2luKCksIGdldEJ5SWRTdGF0dXMpKSwgYmFzZSk7CiAgICAgCiAgICAgQVNTRVJU
KGdldEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSA9PSAxKTsKICAgICBHZXRCeUlkVmFyaWFudCB2
YXJpYW50ID0gZ2V0QnlJZFN0YXR1c1swXTsKLSAgICAgICAgICAgICAgICAKKyAgICAKICAgICBO
b2RlKiBsb2FkZWRWYWx1ZSA9IGxvYWQocHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllck51bWJl
ciwgdmFyaWFudCk7CiAgICAgaWYgKCFsb2FkZWRWYWx1ZSkgewogICAgICAgICBzZXQoVmlydHVh
bFJlZ2lzdGVyKGRlc3RpbmF0aW9uT3BlcmFuZCksCkBAIC00MTUwLDcgKzQxNjYsMTAgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICAKICAgICBpZiAocHV0QnlJZFN0
YXR1cy5udW1WYXJpYW50cygpID4gMSkgewogICAgICAgICBpZiAoIWlzRlRMKG1fZ3JhcGgubV9w
bGFuLm1vZGUpIHx8IHB1dEJ5SWRTdGF0dXMubWFrZXNDYWxscygpCi0gICAgICAgICAgICB8fCAh
T3B0aW9uczo6dXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZygpKSB7CisgICAgICAgICAgICB8
fCAhT3B0aW9uczo6dXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZygpCisgICAgICAgICAgICB8
fCBwdXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgPiBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0Fj
Y2Vzc0lubGluaW5nTGlzdFNpemUoKSkgeworICAgICAgICAgICAgaWYgKGZhbHNlICYmIHB1dEJ5
SWRTdGF0dXMubnVtVmFyaWFudHMoKSA+IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQWNjZXNzSW5s
aW5pbmdMaXN0U2l6ZSgpKQorICAgICAgICAgICAgICAgIGRhdGFMb2coIkdpdmluZyB1cCBvbjog
IiwgcHV0QnlJZFN0YXR1cywgIlxuIik7CiAgICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBp
ZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC00MTY4LDYgKzQxODcsOCBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgICAgICAKICAgICAgICAgaWYgKFVOTElLRUxZ
KG1fZ3JhcGguY29tcGlsYXRpb24oKSkpCiAgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9u
KCktPm5vdGljZUlubGluZWRQdXRCeUlkKCk7CisgICAgICAgIAorICAgICAgICBhZGRUb0dyYXBo
KEZpbHRlclB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1
c2VzLmFkZFB1dEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0YXR1cykp
LCBiYXNlKTsKIAogICAgICAgICBmb3IgKGNvbnN0IFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50IDog
cHV0QnlJZFN0YXR1cy52YXJpYW50cygpKSB7CiAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVy
SW5mZXJyZWRUeXBlKHZhcmlhbnQucmVxdWlyZWRUeXBlKCkpOwpAQCAtNDE4OSw2ICs0MjEwLDgg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICAKICAgICBzd2l0Y2gg
KHZhcmlhbnQua2luZCgpKSB7CiAgICAgY2FzZSBQdXRCeUlkVmFyaWFudDo6UmVwbGFjZTogewor
ICAgICAgICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1f
cGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFkZFB1dEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4o
KSwgcHV0QnlJZFN0YXR1cykpLCBiYXNlKTsKKyAgICAgICAgCiAgICAgICAgIHN0b3JlKGJhc2Us
IGlkZW50aWZpZXJOdW1iZXIsIHZhcmlhbnQsIHZhbHVlKTsKICAgICAgICAgaWYgKFVOTElLRUxZ
KG1fZ3JhcGguY29tcGlsYXRpb24oKSkpCiAgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9u
KCktPm5vdGljZUlubGluZWRQdXRCeUlkKCk7CkBAIC00MTk2LDYgKzQyMTksOCBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgIH0KICAgICAKICAgICBjYXNlIFB1dEJ5
SWRWYXJpYW50OjpUcmFuc2l0aW9uOiB7CisgICAgICAgIGFkZFRvR3JhcGgoRmlsdGVyUHV0QnlJ
ZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkUHV0QnlJ
ZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBwdXRCeUlkU3RhdHVzKSksIGJhc2UpOworICAg
ICAgICAKICAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGgu
YWRkU3RydWN0dXJlU2V0KHZhcmlhbnQub2xkU3RydWN0dXJlKCkpKSwgYmFzZSk7CiAgICAgICAg
IGlmICghY2hlY2sodmFyaWFudC5jb25kaXRpb25TZXQoKSkpIHsKICAgICAgICAgICAgIGVtaXRQ
dXRCeUlkKGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0Rp
cmVjdCk7CkBAIC00MjYzLDYgKzQyODgsOCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQ
dXRCeUlkKAogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBQdXRCeUlkVmFyaWFudDo6U2V0dGVy
OiB7CisgICAgICAgIGFkZFRvR3JhcGgoRmlsdGVyUHV0QnlJZFN0YXR1cywgT3BJbmZvKG1fZ3Jh
cGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkUHV0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9y
aWdpbigpLCBwdXRCeUlkU3RhdHVzKSksIGJhc2UpOworICAgICAgICAKICAgICAgICAgTm9kZSog
bG9hZGVkVmFsdWUgPSBsb2FkKFNwZWNDZWxsT3RoZXIsIGJhc2UsIGlkZW50aWZpZXJOdW1iZXIs
IHZhcmlhbnQpOwogICAgICAgICBpZiAoIWxvYWRlZFZhbHVlKSB7CiAgICAgICAgICAgICBlbWl0
UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNE
aXJlY3QpOwpAQCAtNDc5MSw3ICs0ODE4LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZAogICAgICAgICAgICAgYXV0byYgYnl0ZWNvZGUgPSAqcmVpbnRlcnByZXRf
Y2FzdDxPcEluc3RhbmNlb2YqPihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBJbnN0YW5jZU9mU3RhdHVzIHN0YXR1cyA9IEluc3RhbmNlT2ZTdGF0dXM6OmNv
bXB1dGVGb3IoCi0gICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJs
b2NrLCBtX2lubGluZVN0YWNrVG9wLT5tX3N0dWJJbmZvcywKKyAgICAgICAgICAgICAgICBtX2lu
bGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxp
bmVNYXAsCiAgICAgICAgICAgICAgICAgbV9jdXJyZW50SW5kZXgpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUudmFs
dWUoKSkpOwpAQCAtNTAyNCw3ICs1MDUxLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZAogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IDA7
CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAg
ICAgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2lubGluZVN0YWNrVG9wLT5tX2J5VmFsSW5m
b3MuZ2V0KENvZGVPcmlnaW4oY3VycmVudENvZGVPcmlnaW4oKS5ieXRlY29kZUluZGV4KSk7Cisg
ICAgICAgICAgICAgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2lubGluZVN0YWNrVG9wLT5t
X2Jhc2VsaW5lTWFwLmdldChDb2RlT3JpZ2luKGN1cnJlbnRDb2RlT3JpZ2luKCkuYnl0ZWNvZGVJ
bmRleCkpLmJ5VmFsSW5mbzsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2hlbiB0aGUgYnl0
ZWNvZGUgaXMgbm90IGNvbXBpbGVkIGluIHRoZSBiYXNlbGluZSBKSVQsIGJ5VmFsSW5mbyBiZWNv
bWVzIG51bGwuCiAgICAgICAgICAgICAgICAgLy8gQXQgdGhhdCB0aW1lLCB0aGVyZSBpcyBubyBp
bmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICBpZiAoYnlWYWxJbmZvCkBAIC01MDkzLDcgKzUx
MjAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAg
ICAgICAgICAgUHV0QnlJZFN0YXR1cyBwdXRCeUlkU3RhdHVzOwogICAgICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2lubGluZVN0
YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICAgICAgICAgIEJ5
VmFsSW5mbyogYnlWYWxJbmZvID0gbV9pbmxpbmVTdGFja1RvcC0+bV9ieVZhbEluZm9zLmdldChD
b2RlT3JpZ2luKGN1cnJlbnRDb2RlT3JpZ2luKCkuYnl0ZWNvZGVJbmRleCkpOworICAgICAgICAg
ICAgICAgICAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IG1faW5saW5lU3RhY2tUb3AtPm1fYmFz
ZWxpbmVNYXAuZ2V0KENvZGVPcmlnaW4oY3VycmVudENvZGVPcmlnaW4oKS5ieXRlY29kZUluZGV4
KSkuYnlWYWxJbmZvOwogICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2hlbiB0aGUgYnl0
ZWNvZGUgaXMgbm90IGNvbXBpbGVkIGluIHRoZSBiYXNlbGluZSBKSVQsIGJ5VmFsSW5mbyBiZWNv
bWVzIG51bGwuCiAgICAgICAgICAgICAgICAgICAgIC8vIEF0IHRoYXQgdGltZSwgdGhlcmUgaXMg
bm8gaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgICAgIGlmIChieVZhbEluZm8gCkBAIC01
MTk5LDggKzUyMjYsOCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVk
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dy
YXBoLmlkZW50aWZpZXJzKClbaWRlbnRpZmllck51bWJlcl07CiAgICAgICAgICAgICBHZXRCeUlk
U3RhdHVzIGdldEJ5SWRTdGF0dXMgPSBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAotICAgICAg
ICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgbV9kZmdDb2RlQmxv
Y2ssCi0gICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9zdHViSW5mb3MsIG1fZGZn
U3R1YkluZm9zLAorICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRC
bG9jaywKKyAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBt
X2ljQ29udGV4dFN0YWNrLAogICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCksIHVp
ZCk7CiAKICAgICAgICAgICAgIEFjY2Vzc1R5cGUgdHlwZSA9IEFjY2Vzc1R5cGU6OkdldDsKQEAg
LTUyNDMsOCArNTI3MCw4IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQKICAgICAgICAgICAgIGJvb2wgZGlyZWN0ID0gY3VycmVudEluc3RydWN0aW9uWzhdLnUucHV0
QnlJZEZsYWdzICYgUHV0QnlJZElzRGlyZWN0OwogCiAgICAgICAgICAgICBQdXRCeUlkU3RhdHVz
IHB1dEJ5SWRTdGF0dXMgPSBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAotICAgICAgICAgICAg
ICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgbV9kZmdDb2RlQmxvY2ssCi0g
ICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9zdHViSW5mb3MsIG1fZGZnU3R1Yklu
Zm9zLAorICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywK
KyAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29u
dGV4dFN0YWNrLAogICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCksIG1fZ3JhcGgu
aWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGhhbmRsZVB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRT
dGF0dXMsIGRpcmVjdCk7CkBAIC02NjAzLDEyICs2NjMwLDE5IEBAIEJ5dGVDb2RlUGFyc2VyOjpJ
bmxpbmVTdGFja0VudHJ5OjpJbmxpbmUKICAgICAgICAgLy8gV2UgZG8gdGhpcyB3aGlsZSBob2xk
aW5nIHRoZSBsb2NrIGJlY2F1c2Ugd2Ugd2FudCB0byBlbmNvdXJhZ2UgU3RydWN0dXJlU3R1Yklu
Zm8ncwogICAgICAgICAvLyB0byBiZSBwb3RlbnRpYWxseSBhZGRlZCB0byBvcGVyYXRpb25zIGFu
ZCBiZWNhdXNlIHRoZSBwcm9maWxlZCBibG9jayBjb3VsZCBiZSBpbiB0aGUKICAgICAgICAgLy8g
bWlkZGxlIG9mIExMSW50LT5KSVQgdGllci11cCBpbiB3aGljaCBjYXNlIHdlIHdvdWxkIGJlIGFk
ZGluZyB0aGUgaW5mbydzIHJpZ2h0IG5vdy4KLSAgICAgICAgaWYgKG1fcHJvZmlsZWRCbG9jay0+
aGFzQmFzZWxpbmVKSVRQcm9maWxpbmcoKSkgewotICAgICAgICAgICAgbV9wcm9maWxlZEJsb2Nr
LT5nZXRTdHViSW5mb01hcChsb2NrZXIsIG1fc3R1YkluZm9zKTsKLSAgICAgICAgICAgIG1fcHJv
ZmlsZWRCbG9jay0+Z2V0Q2FsbExpbmtJbmZvTWFwKGxvY2tlciwgbV9jYWxsTGlua0luZm9zKTsK
LSAgICAgICAgICAgIG1fcHJvZmlsZWRCbG9jay0+Z2V0QnlWYWxJbmZvTWFwKGxvY2tlciwgbV9i
eVZhbEluZm9zKTsKKyAgICAgICAgaWYgKG1fcHJvZmlsZWRCbG9jay0+aGFzQmFzZWxpbmVKSVRQ
cm9maWxpbmcoKSkKKyAgICAgICAgICAgIG1fcHJvZmlsZWRCbG9jay0+Z2V0SUNTdGF0dXNNYXAo
bG9ja2VyLCBtX2Jhc2VsaW5lTWFwKTsKKyAgICB9CisgICAgCisgICAgaWYgKE9wdGlvbnM6OnVz
ZVBvbHl2YXJpYW50RGV2aXJ0dWFsaXphdGlvbigpKSB7CisgICAgICAgIENvZGVCbG9jayogb3B0
aW1pemVkQmxvY2sgPSBtX3Byb2ZpbGVkQmxvY2stPnJlcGxhY2VtZW50KCk7CisgICAgICAgIG1f
b3B0aW1pemVkQ29udGV4dC5vcHRpbWl6ZWRDb2RlQmxvY2sgPSBvcHRpbWl6ZWRCbG9jazsKKyAg
ICAgICAgaWYgKG9wdGltaXplZEJsb2NrKSB7CisgICAgICAgICAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKG9wdGltaXplZEJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgb3B0aW1pemVk
QmxvY2stPmdldElDU3RhdHVzTWFwKGxvY2tlciwgbV9vcHRpbWl6ZWRDb250ZXh0Lm1hcCk7CiAg
ICAgICAgIH0KICAgICB9CisgICAgYnl0ZUNvZGVQYXJzZXItPm1faWNDb250ZXh0U3RhY2suYXBw
ZW5kKCZtX29wdGltaXplZENvbnRleHQpOwogICAgIAogICAgIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpc1dpdGhGaXh1cCA9IHN0ZDo6bWF4PGludD4oYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKIApAQCAtNjYxOCw2ICs2NjUyLDcg
QEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZQogICAgICAgICBBU1NF
UlQoaW5saW5lQ2FsbEZyYW1lU3RhcnQuaXNWYWxpZCgpKTsKICAgICAgICAgCiAgICAgICAgIG1f
aW5saW5lQ2FsbEZyYW1lID0gYnl0ZUNvZGVQYXJzZXItPm1fZ3JhcGgubV9wbGFuLmlubGluZUNh
bGxGcmFtZXMtPmFkZCgpOworICAgICAgICBtX29wdGltaXplZENvbnRleHQuaW5saW5lQ2FsbEZy
YW1lID0gbV9pbmxpbmVDYWxsRnJhbWU7CiAKICAgICAgICAgLy8gVGhlIG93bmVyIGlzIHRoZSBt
YWNoaW5lIGNvZGUgYmxvY2ssIGFuZCB3ZSBhbHJlYWR5IGhhdmUgYSBiYXJyaWVyIG9uIHRoYXQg
d2hlbiB0aGUKICAgICAgICAgLy8gcGxhbiBmaW5pc2hlcy4KQEAgLTY2NzMsNiArNjcwOCwxMyBA
QCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lCiAgICAgYnl0ZUNvZGVQ
YXJzZXItPm1faW5saW5lU3RhY2tUb3AgPSB0aGlzOwogfQogCitCeXRlQ29kZVBhcnNlcjo6SW5s
aW5lU3RhY2tFbnRyeTo6fklubGluZVN0YWNrRW50cnkoKQoreworICAgIG1fYnl0ZUNvZGVQYXJz
ZXItPm1faW5saW5lU3RhY2tUb3AgPSBtX2NhbGxlcjsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2J5
dGVDb2RlUGFyc2VyLT5tX2ljQ29udGV4dFN0YWNrLmxhc3QoKSA9PSAmbV9vcHRpbWl6ZWRDb250
ZXh0KTsKKyAgICBtX2J5dGVDb2RlUGFyc2VyLT5tX2ljQ29udGV4dFN0YWNrLnJlbW92ZUxhc3Qo
KTsKK30KKwogdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQogewogICAgIGNs
ZWFyQ2FjaGVzKCk7CkBAIC02NzY5LDE1ICs2ODExLDYgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2UoKQogICAgIAogICAgIFZFUkJPU0VfTE9HKCJQYXJzaW5nICIsICptX2NvZGVCbG9jaywg
IlxuIik7CiAgICAgCi0gICAgbV9kZmdDb2RlQmxvY2sgPSBtX2dyYXBoLm1fcGxhbi5wcm9maWxl
ZERGR0NvZGVCbG9jazsKLSAgICBpZiAoaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkgJiYgbV9k
ZmdDb2RlQmxvY2sKLSAgICAgICAgJiYgT3B0aW9uczo6dXNlUG9seXZhcmlhbnREZXZpcnR1YWxp
emF0aW9uKCkpIHsKLSAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVBvbHl2YXJpYW50Q2FsbElubGlu
aW5nKCkpCi0gICAgICAgICAgICBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZURGR1N0YXR1c2VzKG1f
ZGZnQ29kZUJsb2NrLCBtX2NhbGxDb250ZXh0TWFwKTsKLSAgICAgICAgaWYgKE9wdGlvbnM6OnVz
ZVBvbHl2YXJpYW50QnlJZElubGluaW5nKCkpCi0gICAgICAgICAgICBtX2RmZ0NvZGVCbG9jay0+
Z2V0U3R1YkluZm9NYXAobV9kZmdTdHViSW5mb3MpOwotICAgIH0KLSAgICAKICAgICBJbmxpbmVT
dGFja0VudHJ5IGlubGluZVN0YWNrRW50cnkoCiAgICAgICAgIHRoaXMsIG1fY29kZUJsb2NrLCBt
X3Byb2ZpbGVkQmxvY2ssIDAsIFZpcnR1YWxSZWdpc3RlcigpLCBWaXJ0dWFsUmVnaXN0ZXIoKSwK
ICAgICAgICAgbV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgSW5saW5lQ2FsbEZyYW1lOjpD
YWxsLCBudWxscHRyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJl
cml6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJl
cml6ZS5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtNDQ2LDYgKzQ0Niw5IEBAIHZvaWQgY2xv
YmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIFByb2ZpbGVDb250cm9s
RmxvdzoKICAgICBjYXNlIFB1dEhpbnQ6CiAgICAgY2FzZSBJbml0aWFsaXplRW50cnlwb2ludEFy
Z3VtZW50czoKKyAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmlsdGVy
R2V0QnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgIHdy
aXRlKFNpZGVTdGF0ZSk7CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAkocmV2
aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4
aXRTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDkgQEAgYm9vbCBjbG9iYmVy
c0V4aXRTdGF0ZShHcmFwaCYgZ3JhcGgsIE5vZAogICAgIGNhc2UgRmVuY2VkU3RvcmVCYXJyaWVy
OgogICAgIGNhc2UgQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBSZWFsbG9jYXRl
UHJvcGVydHlTdG9yYWdlOgorICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgY2Fz
ZSBGaWx0ZXJHZXRCeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAg
ICAgICAgLy8gVGhlc2UgZG8gY2xvYmJlciBtZW1vcnksIGJ1dCBub3RoaW5nIHRoYXQgaXMgb2Jz
ZXJ2YWJsZS4gSXQgbWF5IGJlIG5pY2UgdG8gc2VwYXJhdGUgdGhlCiAgICAgICAgIC8vIGhlYXBz
IGludG8gdGhvc2UgdGhhdCBhcmUgb2JzZXJ2YWJsZSBhbmQgdGhvc2UgdGhhdCBhcmVuJ3QsIGJ1
dCB3ZSBkb24ndCBkbyB0aGF0IHJpZ2h0IG5vdy4KICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg0NDAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAt
MzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIklubGluZUNhbGxGcmFtZVNldC5oIgogI2luY2x1ZGUg
IkpTQ2FzdC5oIgogI2luY2x1ZGUgIlByb2ZpbGVyQ29tcGlsYXRpb24uaCIKKyNpbmNsdWRlICJS
ZWNvcmRlZFN0YXR1c2VzLmgiCiAjaW5jbHVkZSA8d3RmL0JhZy5oPgogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgogCkBAIC0xMjUsNiArMTI2LDcgQEAgcHVibGljOgogICAgIEJhZzxDb2Rl
QmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQ+IHdhdGNocG9pbnRzOwogICAgIEJhZzxBZGFwdGl2
ZVN0cnVjdHVyZVdhdGNocG9pbnQ+IGFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludHM7CiAgICAg
QmFnPEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludD4gYWRhcHRpdmVJbmZl
cnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50czsKKyAgICBSZWNvcmRlZFN0YXR1c2VzIHJlY29y
ZGVkU3RhdHVzZXM7CiAgICAgVmVjdG9yPEp1bXBSZXBsYWNlbWVudD4ganVtcFJlcGxhY2VtZW50
czsKICAgICAKICAgICBTY3JhdGNoQnVmZmVyKiBjYXRjaE9TUkVudHJ5QnVmZmVyOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQ
aGFzZS5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTcsNyArNTU3
LDE1IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgYXV0byBhZGRGaWx0ZXJTdGF0dXMg
PSBbJl0gKCkgeworICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2Rl
KAorICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgRmlsdGVy
R2V0QnlJZFN0YXR1cywgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgT3BJ
bmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkR2V0QnlJZFN0YXR1cyhub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIHN0YXR1cykpLAorICAgICAgICAgICAgICAgICAgICAgICAgRWRn
ZShjaGlsZCkpOworICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgaWYgKHN0YXR1cy5udW1WYXJpYW50cygpID09IDEpIHsKKyAgICAgICAgICAgICAg
ICAgICAgYWRkRmlsdGVyU3RhdHVzKCk7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRHZXRCeU9m
ZnNldChpbmRleEluQmxvY2ssIG5vZGUsIGJhc2VWYWx1ZSwgc3RhdHVzWzBdLCBpZGVudGlmaWVy
TnVtYmVyKTsKICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtNTY2LDYgKzU3NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgaWYgKCFpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSkKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgYWRkRmlsdGVyU3Rh
dHVzKCk7CiAgICAgICAgICAgICAgICAgTXVsdGlHZXRCeU9mZnNldERhdGEqIGRhdGEgPSBtX2dy
YXBoLm1fbXVsdGlHZXRCeU9mZnNldERhdGEuYWRkKCk7CiAgICAgICAgICAgICAgICAgZm9yIChj
b25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IHN0YXR1cy52YXJpYW50cygpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGRhdGEtPmNhc2VzLmFwcGVuZCgKQEAgLTYzOSw2ICs2NDgsMTEgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAoIWFsbEdvb2QpCiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9u
U2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05v
bmUsIEZpbHRlclB1dEJ5SWRTdGF0dXMsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAg
ICAgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkUHV0QnlJZFN0YXR1
cyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIHN0YXR1cykpLAorICAgICAgICAgICAgICAgICAgICBF
ZGdlKGNoaWxkKSk7CisgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKHN0YXR1
cy5udW1WYXJpYW50cygpID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgZW1pdFB1dEJ5T2Zm
c2V0KGluZGV4SW5CbG9jaywgbm9kZSwgYmFzZVZhbHVlLCBzdGF0dXNbMF0sIGlkZW50aWZpZXJO
dW1iZXIpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEyLDYgKzMx
Miw5IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEF0
b21pY3NYb3I6CiAgICAgY2FzZSBBdG9taWNzSXNMb2NrRnJlZToKICAgICBjYXNlIE1hdGNoU3Ry
dWN0dXJlOgorICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJH
ZXRCeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgY2FzZSBQdXNoV2l0aFNjb3BlOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTM4LDYgKzIxMzgsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldEdsb2JhbFRo
aXM6CiAgICAgICAgIGNhc2UgRXh0cmFjdFZhbHVlRnJvbVdlYWtNYXBHZXQ6CiAgICAgICAgIGNh
c2UgQ1BVSW50cmluc2ljOgorICAgICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAg
ICAgICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJ
ZFN0YXR1czoKICAgICAgICAgICAgIGJyZWFrOwogI2Vsc2UKICAgICAgICAgZGVmYXVsdDoKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAyMzIyMjcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzU2LDYgKzM1NiwxMiBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQs
IGNvbnN0CiAgICAgICAgIG91dC5wcmludChjb21tYSwgImlnbm9yZUxhc3RJbmRleElzV3JpdGFi
bGUgPSAiLCBub2RlLT5pZ25vcmVMYXN0SW5kZXhJc1dyaXRhYmxlKCkpOwogICAgIGlmIChub2Rl
LT5pc0NvbnN0YW50KCkpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgcG9pbnRlckR1bXBJbkNv
bnRleHQobm9kZS0+Y29uc3RhbnQoKSwgY29udGV4dCkpOworICAgIGlmIChub2RlLT5oYXNDYWxs
TGlua1N0YXR1cygpKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICpub2RlLT5jYWxsTGlua1N0
YXR1cygpKTsKKyAgICBpZiAobm9kZS0+aGFzR2V0QnlJZFN0YXR1cygpKQorICAgICAgICBvdXQu
cHJpbnQoY29tbWEsICpub2RlLT5nZXRCeUlkU3RhdHVzKCkpOworICAgIGlmIChub2RlLT5oYXNQ
dXRCeUlkU3RhdHVzKCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgKm5vZGUtPnB1dEJ5SWRT
dGF0dXMoKSk7CiAgICAgaWYgKG5vZGUtPmlzSnVtcCgpKQogICAgICAgICBvdXQucHJpbnQoY29t
bWEsICJUOiIsICpub2RlLT50YXJnZXRCbG9jaygpKTsKICAgICBpZiAobm9kZS0+aXNCcmFuY2go
KSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3Bw
CShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
bXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg4LDYgKzE4OCw4IEBAIHZvaWQgSklUQ29t
cGlsZXI6OmNvbXBpbGVFeGNlcHRpb25IYW5kbGUKIAogdm9pZCBKSVRDb21waWxlcjo6bGluayhM
aW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogeworICAgIG1faml0Q29kZS0+Y29tbW9uLnJlY29yZGVk
U3RhdHVzZXMgPSBXVEZNb3ZlKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMpOworICAg
IAogICAgIC8vIExpbmsgdGhlIGNvZGUsIHBvcHVsYXRlIGRhdGEgaW4gQ29kZUJsb2NrIGRhdGEg
c3RydWN0dXJlcy4KICAgICBtX2ppdENvZGUtPmNvbW1vbi5mcmFtZVJlZ2lzdGVyQ291bnQgPSBt
X2dyYXBoLmZyYW1lUmVnaXN0ZXJDb3VudCgpOwogICAgIG1faml0Q29kZS0+Y29tbW9uLnJlcXVp
cmVkUmVnaXN0ZXJDb3VudEZvckV4aXQgPSBtX2dyYXBoLnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZv
ckV4aXQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAko
cmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSw5IEBAIEV4aXRNb2RlIG1heUV4aXRJ
bXBsKEdyYXBoJiBncmFwaCwgTm9kZSoKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CiAgICAgY2Fz
ZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CiAgICAgY2FzZSBOdWtlU3RydWN0dXJlQW5kU2V0
QnV0dGVyZmx5OgorICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgY2FzZSBGaWx0
ZXJHZXRCeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAg
YnJlYWs7CiAKICAgICBjYXNlIFN0ckNhdDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjc2OSw2ICsyNzY5LDM5IEBAIHB1YmxpYzoKICAg
ICAgICAgQVNTRVJUKG9wKCkgPT0gVGhyb3dTdGF0aWNFcnJvcik7CiAgICAgICAgIHJldHVybiBt
X29wSW5mby5hczx1aW50MzJfdD4oKTsKICAgICB9CisgICAgCisgICAgYm9vbCBoYXNDYWxsTGlu
a1N0YXR1cygpCisgICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBGaWx0ZXJDYWxsTGlua1N0
YXR1czsKKyAgICB9CisgICAgCisgICAgQ2FsbExpbmtTdGF0dXMqIGNhbGxMaW5rU3RhdHVzKCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChoYXNDYWxsTGlua1N0YXR1cygpKTsKKyAgICAgICAgcmV0
dXJuIG1fb3BJbmZvLmFzPENhbGxMaW5rU3RhdHVzKj4oKTsKKyAgICB9CisgICAgCisgICAgYm9v
bCBoYXNHZXRCeUlkU3RhdHVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBvcCgpID09IEZpbHRl
ckdldEJ5SWRTdGF0dXM7CisgICAgfQorICAgIAorICAgIEdldEJ5SWRTdGF0dXMqIGdldEJ5SWRT
dGF0dXMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc0dldEJ5SWRTdGF0dXMoKSk7CisgICAg
ICAgIHJldHVybiBtX29wSW5mby5hczxHZXRCeUlkU3RhdHVzKj4oKTsKKyAgICB9CisgICAgCisg
ICAgYm9vbCBoYXNQdXRCeUlkU3RhdHVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBvcCgpID09
IEZpbHRlclB1dEJ5SWRTdGF0dXM7CisgICAgfQorICAgIAorICAgIFB1dEJ5SWRTdGF0dXMqIHB1
dEJ5SWRTdGF0dXMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc1B1dEJ5SWRTdGF0dXMoKSk7
CisgICAgICAgIHJldHVybiBtX29wSW5mby5hczxQdXRCeUlkU3RhdHVzKj4oKTsKKyAgICB9CiAK
ICAgICB2b2lkIGR1bXBDaGlsZHJlbihQcmludFN0cmVhbSYgb3V0KQogICAgIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDIzMjIyNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzk0LDExICszOTQsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAg
bWFjcm8oR2V0QXJndW1lbnQsIE5vZGVSZXN1bHRKUykgXAogICAgIFwKICAgICBtYWNybyhOZXdG
dW5jdGlvbiwgTm9kZVJlc3VsdEpTKSBcCi0gICAgXAogICAgIG1hY3JvKE5ld0dlbmVyYXRvckZ1
bmN0aW9uLCBOb2RlUmVzdWx0SlMpIFwKLSAgICBcCiAgICAgbWFjcm8oTmV3QXN5bmNHZW5lcmF0
b3JGdW5jdGlvbiwgTm9kZVJlc3VsdEpTKSBcCi0gICAgXAogICAgIG1hY3JvKE5ld0FzeW5jRnVu
Y3Rpb24sIE5vZGVSZXN1bHRKUykgXAogICAgIFwKICAgICAvKiBCbG9jayB0ZXJtaW5hbHMuICov
XApAQCAtNDc1LDYgKzQ3MiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAg
ICAgXAogICAgIC8qIFVzZWQgZm9yICR2bSBwZXJmb3JtYW5jZSBkZWJ1Z2dpbmcgKi8gXAogICAg
IG1hY3JvKENQVUludHJpbnNpYywgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAor
ICAgIFwKKyAgICAvKiBVc2VkIHRvIHByb3ZpZGUgZmVlZGJhY2sgdG8gdGhlIElDIHByb2ZpbGVy
LiAqLyBcCisgICAgbWFjcm8oRmlsdGVyQ2FsbExpbmtTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKKyAgICBtYWNybyhGaWx0ZXJHZXRCeUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisg
ICAgbWFjcm8oRmlsdGVyUHV0QnlJZFN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAogCiAKIC8v
IFRoaXMgZW51bSBnZW5lcmF0ZXMgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaWQgZm9yIGFs
bCBOb2RlIHR5cGVzLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0QmFzZS5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDExICs0MiwxNyBA
QCB2b2lkIE9TUkV4aXRCYXNlOjpjb25zaWRlckFkZGluZ0FzRnJlcXVlCiAgICAgICAgIGJhc2Vs
aW5lQ29kZUJsb2NrRm9yT3JpZ2luQW5kQmFzZWxpbmVDb2RlQmxvY2soCiAgICAgICAgICAgICBt
X2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZSwgcHJvZmlsZWRDb2RlQmxvY2spOwogICAgIGlmIChz
b3VyY2VQcm9maWxlZENvZGVCbG9jaykgeworICAgICAgICBFeGl0aW5nSW5saW5lS2luZCBpbmxp
bmVLaW5kOworICAgICAgICBpZiAobV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGUuaW5saW5lQ2Fs
bEZyYW1lKQorICAgICAgICAgICAgaW5saW5lS2luZCA9IEV4aXRGcm9tSW5saW5lZDsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgaW5saW5lS2luZCA9IEV4aXRGcm9tTm90SW5saW5lZDsKKyAg
ICAgICAgCiAgICAgICAgIEZyZXF1ZW50RXhpdFNpdGUgc2l0ZTsKICAgICAgICAgaWYgKG1fd2Fz
SG9pc3RlZCkKLSAgICAgICAgICAgIHNpdGUgPSBGcmVxdWVudEV4aXRTaXRlKEhvaXN0aW5nRmFp
bGVkLCBqaXRUeXBlKTsKKyAgICAgICAgICAgIHNpdGUgPSBGcmVxdWVudEV4aXRTaXRlKEhvaXN0
aW5nRmFpbGVkLCBqaXRUeXBlLCBpbmxpbmVLaW5kKTsKICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgc2l0ZSA9IEZyZXF1ZW50RXhpdFNpdGUobV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGUuYnl0
ZWNvZGVJbmRleCwgbV9raW5kLCBqaXRUeXBlKTsKKyAgICAgICAgICAgIHNpdGUgPSBGcmVxdWVu
dEV4aXRTaXRlKG1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlLmJ5dGVjb2RlSW5kZXgsIG1fa2lu
ZCwgaml0VHlwZSwgaW5saW5lS2luZCk7CiAgICAgICAgIEV4aXRQcm9maWxlOjphZGQoc291cmNl
UHJvZmlsZWRDb2RlQmxvY2ssIHNpdGUpOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2lu
Z1BoYXNlLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTA4OCw2ICsxMDg4LDExIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgUHV0SGludDoKICAgICAg
ICAgICAgIC8vIEhhbmRsZWQgYnkgT1NSIGF2YWlsYWJpbGl0eSBhbmFseXNpcwogICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1
czoKKyAgICAgICAgY2FzZSBGaWx0ZXJHZXRCeUlkU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRl
clB1dEJ5SWRTdGF0dXM6CisgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgbV9ncmFwaC5kb1RvQ2hpbGRyZW4oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1BsYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUGxhbi5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUGxhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzMyw2ICs2MzMsOCBAQCB2
b2lkIFBsYW46OmNoZWNrTGl2ZW5lc3NBbmRWaXNpdENoaWxkcmVuCiAgICAgY2xlYW5NdXN0SGFu
ZGxlVmFsdWVzSWZOZWNlc3NhcnkoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtdXN0SGFuZGxl
VmFsdWVzLnNpemUoKTsgaS0tOykKICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZCht
dXN0SGFuZGxlVmFsdWVzW2ldKTsKKyAgICAKKyAgICByZWNvcmRlZFN0YXR1c2VzLm1hcmtJZkNo
ZWFwKHZpc2l0b3IpOwogCiAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxvY2sp
OwogICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQoY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgp
KTsKQEAgLTY0OSw2ICs2NTEsMTEgQEAgdm9pZCBQbGFuOjpjaGVja0xpdmVuZXNzQW5kVmlzaXRD
aGlsZHJlbgogICAgIHRyYW5zaXRpb25zLnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiB9CiAKK3Zv
aWQgUGxhbjo6ZmluYWxpemVJbkdDKCkKK3sKKyAgICByZWNvcmRlZFN0YXR1c2VzLmZpbmFsaXpl
V2l0aG91dERlbGV0aW5nKCk7Cit9CisKIGJvb2wgUGxhbjo6aXNLbm93blRvQmVMaXZlRHVyaW5n
R0MoKQogewogICAgIGlmIChzdGFnZSA9PSBDYW5jZWxsZWQpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1BsYW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1BsYW4uaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQbGFuLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiw2ICszNiw3IEBACiAjaW5j
bHVkZSAiRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiT3BlcmFuZHMu
aCIKICNpbmNsdWRlICJQcm9maWxlckNvbXBpbGF0aW9uLmgiCisjaW5jbHVkZSAiUmVjb3JkZWRT
dGF0dXNlcy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVh
ZFNhZmVSZWZDb3VudGVkLmg+CiAKQEAgLTcyLDYgKzczLDcgQEAgc3RydWN0IFBsYW4gOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZQogICAgIHZvaWQgaXRlcmF0ZUNvZGVCbG9ja3NGb3JHQyhj
b25zdCBGdW5jJik7CiAgICAgdm9pZCBjaGVja0xpdmVuZXNzQW5kVmlzaXRDaGlsZHJlbihTbG90
VmlzaXRvciYpOwogICAgIGJvb2wgaXNLbm93blRvQmVMaXZlRHVyaW5nR0MoKTsKKyAgICB2b2lk
IGZpbmFsaXplSW5HQygpOwogICAgIHZvaWQgY2FuY2VsKCk7CiAKICAgICBib29sIGNhblRpZXJV
cEFuZE9TUkVudGVyKCkgY29uc3QgeyByZXR1cm4gIXRpZXJVcEFuZE9TUkVudGVyQnl0ZWNvZGVz
LmlzRW1wdHkoKTsgfQpAQCAtMTA0LDYgKzEwNiw3IEBAIHN0cnVjdCBQbGFuIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGUKICAgICBEZXNpcmVkSWRlbnRpZmllcnMgaWRlbnRpZmllcnM7CiAg
ICAgRGVzaXJlZFdlYWtSZWZlcmVuY2VzIHdlYWtSZWZlcmVuY2VzOwogICAgIERlc2lyZWRUcmFu
c2l0aW9ucyB0cmFuc2l0aW9uczsKKyAgICBSZWNvcmRlZFN0YXR1c2VzIHJlY29yZGVkU3RhdHVz
ZXM7CiAgICAgCiAgICAgYm9vbCB3aWxsVHJ5VG9UaWVyVXAgeyBmYWxzZSB9OwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyMDYsNiArMTIwNiw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSW5pdGlhbGl6
ZUVudHJ5cG9pbnRBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgV2Vha1NldEFkZDoKICAgICAgICAg
Y2FzZSBXZWFrTWFwU2V0OgorICAgICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAg
ICAgICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJ
ZFN0YXR1czoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIC8vIFRo
aXMgZ2V0cyBpZ25vcmVkIGJlY2F1c2UgaXQgb25seSBwcmV0ZW5kcyB0byBwcm9kdWNlIGEgdmFs
dWUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3OCw2ICs0NzgsMTMgQEAgYm9vbCBzYWZl
VG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgICAgICAvLyBhbHJlYWR5IGZvcmNl
IHRoZXNlIHRoaW5ncyB0byBiZSBvcmRlcmVkIHByZWNpc2VseS4gSSdtIGp1c3Qgbm90IGNvbmZp
ZGVudCBlbm91Z2ggaW4gbXkKICAgICAgICAgLy8gZWZmZWN0IGJhc2VkIG1lbW9yeSBtb2RlbCB0
byByZWx5IHNvbGVseSBvbiB0aGF0IHJpZ2h0IG5vdy4KICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAKKyAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmlsdGVy
R2V0QnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CisgICAgICAgIC8v
IFdlIGRvbid0IHdhbnQgdGhlc2UgdG8gYmUgbW92ZWQgYW55d2hlcmUgb3RoZXIgdGhhbiB3aGVy
ZSB3ZSBwdXQgdGhlbSwgc2luY2Ugd2Ugd2FudCB0aGVtCisgICAgICAgIC8vIHRvIGNhcHR1cmUg
InByb2ZpbGluZyIgYXQgdGhlIHBvaW50IGluIGNvbnRyb2wgZmxvdyBoZXJlIHRoZSB1c2VyIHB1
dCB0aGVtLgorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjYXNlIEdldEJ5VmFsOgogICAg
IGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24g
MjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAzMyw2ICs0MDMzLDExIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIENoZWNrU3RydWN0dXJlT3JF
bXB0eToKICAgICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG5vZGUsICJDaGVja1N0cnVj
dHVyZU9yRW1wdHkgb25seSB1c2VkIGluIDY0LWJpdCBERkciKTsKICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIAorICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJH
ZXRCeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKKyAgICAgICAgYnJl
YWs7CiAKICAgICBjYXNlIExhc3ROb2RlVHlwZToKICAgICBjYXNlIFBoaToKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2
aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYyNiw2ICs0NjI2LDEyIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CisgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICBjYXNlIEZpbHRlckdldEJ5SWRT
dGF0dXM6CisgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgorICAgICAgICBub1Jlc3VsdChu
b2RlKTsKKyAgICAgICAgYnJlYWs7CisKICNlbHNlIC8vIEVOQUJMRShGVExfSklUKQogICAgIGNh
c2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVk
dWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
ODk4LDEwICs4OTgsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBUYWlsQ2FsbDogewogICAg
ICAgICAgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBudWxscHRyOwogICAgICAgICAg
ICAgRWRnZSBjYWxsZWUgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCk7Ci0gICAgICAg
ICAgICBpZiAoSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29uc3Rh
bnQ8SlNGdW5jdGlvbio+KHZtKCkpKQorICAgICAgICAgICAgQ2FsbFZhcmlhbnQgY2FsbFZhcmlh
bnQ7CisgICAgICAgICAgICBpZiAoSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFt
aWNDYXN0Q29uc3RhbnQ8SlNGdW5jdGlvbio+KHZtKCkpKSB7CiAgICAgICAgICAgICAgICAgZXhl
Y3V0YWJsZSA9IGZ1bmN0aW9uLT5leGVjdXRhYmxlKCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChj
YWxsZWUtPmlzRnVuY3Rpb25BbGxvY2F0aW9uKCkpCisgICAgICAgICAgICAgICAgY2FsbFZhcmlh
bnQgPSBDYWxsVmFyaWFudChmdW5jdGlvbik7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGNhbGxl
ZS0+aXNGdW5jdGlvbkFsbG9jYXRpb24oKSkgewogICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUg
PSBjYWxsZWUtPmNhc3RPcGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCk7CisgICAgICAgICAg
ICAgICAgY2FsbFZhcmlhbnQgPSBDYWxsVmFyaWFudChleGVjdXRhYmxlKTsKKyAgICAgICAgICAg
IH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKCFleGVjdXRhYmxlKQogICAgICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtOTE5LDYgKzkyMyw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgCisgICAgICAgICAgICBtX2dyYXBoLm1f
cGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFkZENhbGxMaW5rU3RhdHVzKG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljLCBDYWxsTGlua1N0YXR1cyhjYWxsVmFyaWFudCkpOworICAgICAgICAgICAgCiAgICAg
ICAgICAgICBtX25vZGUtPmNvbnZlcnRUb0RpcmVjdENhbGwobV9ncmFwaC5mcmVlemUoZXhlY3V0
YWJsZSkpOwogICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFr
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAJKHJldmlz
aW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOTMsOCArMzkzLDEwIEBAIHZvaWQgV29ya2xpc3Q6OnJlbW92
ZURlYWRQbGFucyhWTSYgdm0pCiAgICAgICAgICAgICBQbGFuKiBwbGFuID0gaXRlci0+dmFsdWUu
Z2V0KCk7CiAgICAgICAgICAgICBpZiAocGxhbi0+dm0gIT0gJnZtKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKHBsYW4tPmlzS25vd25Ub0JlTGl2ZUR1cmluZ0dD
KCkpCisgICAgICAgICAgICBpZiAocGxhbi0+aXNLbm93blRvQmVMaXZlRHVyaW5nR0MoKSkgewor
ICAgICAgICAgICAgICAgIHBsYW4tPmZpbmFsaXplSW5HQygpOwogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgfQogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocGxhbi0+
c3RhZ2UgIT0gUGxhbjo6Q2FuY2VsbGVkKTsgLy8gU2hvdWxkIG5vdCBiZSBjYW5jZWxsZWQsIHll
dC4KICAgICAgICAgICAgIEFTU0VSVCghZGVhZFBsYW5LZXlzLmNvbnRhaW5zKHBsYW4tPmtleSgp
KSk7CiAgICAgICAgICAgICBkZWFkUGxhbktleXMuYWRkKHBsYW4tPmtleSgpKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsOCBA
QCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8oRGlyZWN0QXJndW1l
bnRzX21pbkNhcGFjaXR5LCBEaXJlY3RBcmd1bWVudHM6Om9mZnNldE9mTWluQ2FwYWNpdHkoKSkg
XAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19tYXBwZWRBcmd1bWVudHMsIERpcmVjdEFyZ3Vt
ZW50czo6b2Zmc2V0T2ZNYXBwZWRBcmd1bWVudHMoKSkgXAogICAgIG1hY3JvKERpcmVjdEFyZ3Vt
ZW50c19tb2RpZmllZEFyZ3VtZW50c0Rlc2NyaXB0b3IsIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0
T2ZNb2RpZmllZEFyZ3VtZW50c0Rlc2NyaXB0b3IoKSkgXAorICAgIG1hY3JvKEZ1bmN0aW9uUmFy
ZURhdGFfYWxsb2NhdG9yLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRp
b25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZBbGxvY2F0b3Io
KSkgXAorICAgIG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFfc3RydWN0dXJlLCBGdW5jdGlvblJhcmVE
YXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSkgXAogICAgIG1hY3JvKEdldHRlclNldHRlcl9n
ZXR0ZXIsIEdldHRlclNldHRlcjo6b2Zmc2V0T2ZHZXR0ZXIoKSkgXAogICAgIG1hY3JvKEdldHRl
clNldHRlcl9zZXR0ZXIsIEdldHRlclNldHRlcjo6b2Zmc2V0T2ZTZXR0ZXIoKSkgXAogICAgIG1h
Y3JvKEpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9m
TGVuZ3RoKCkpIFwKQEAgLTExMiwxMCArMTE0LDEwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgRlRMIHsKICAgICBtYWNybyhTdHJpbmdJbXBsX2xlbmd0aCwgU3RyaW5nSW1wbDo6bGVuZ3Ro
TWVtb3J5T2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfY2xhc3NJbmZvLCBTdHJ1Y3R1
cmU6OmNsYXNzSW5mb09mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlX2dsb2JhbE9iamVj
dCwgU3RydWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSkgXAorICAgIG1hY3JvKFN0cnVjdHVy
ZV9pbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5LCBTdHJ1Y3R1cmU6OmluZGV4aW5nTW9kZUlu
Y2x1ZGluZ0hpc3RvcnlPZmZzZXQoKSkgXAorICAgIG1hY3JvKFN0cnVjdHVyZV9pbmxpbmVDYXBh
Y2l0eSwgU3RydWN0dXJlOjppbmxpbmVDYXBhY2l0eU9mZnNldCgpKSBcCiAgICAgbWFjcm8oU3Ry
dWN0dXJlX3Byb3RvdHlwZSwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSkgXAogICAgIG1h
Y3JvKFN0cnVjdHVyZV9zdHJ1Y3R1cmVJRCwgU3RydWN0dXJlOjpzdHJ1Y3R1cmVJRE9mZnNldCgp
KSBcCi0gICAgbWFjcm8oU3RydWN0dXJlX2lubGluZUNhcGFjaXR5LCBTdHJ1Y3R1cmU6OmlubGlu
ZUNhcGFjaXR5T2Zmc2V0KCkpIFwKLSAgICBtYWNybyhTdHJ1Y3R1cmVfaW5kZXhpbmdNb2RlSW5j
bHVkaW5nSGlzdG9yeSwgU3RydWN0dXJlOjppbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5T2Zm
c2V0KCkpIFwKICAgICBtYWNybyhIYXNoTWFwSW1wbF9jYXBhY2l0eSwgSGFzaE1hcEltcGw8SGFz
aE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT4+OjpvZmZzZXRPZkNhcGFjaXR5KCkpIFwK
ICAgICBtYWNybyhIYXNoTWFwSW1wbF9idWZmZXIsICBIYXNoTWFwSW1wbDxIYXNoTWFwQnVja2V0
PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46Om9mZnNldE9mQnVmZmVyKCkpIFwKICAgICBtYWNybyhI
YXNoTWFwSW1wbF9oZWFkLCAgSGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0
RGF0YUtleT4+OjpvZmZzZXRPZkhlYWQoKSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNTEsNiArMzUxLDEwIEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2Rl
KiAKICAgICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoK
ICAgICBjYXNlIE1hdGNoU3RydWN0dXJlOgorICAgIGNhc2UgQ3JlYXRlVGhpczoKKyAgICBjYXNl
IEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKKyAg
ICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgIC8vIFRoZXNlIGFyZSBPSy4KICAg
ICAgICAgYnJlYWs7CiAKQEAgLTM2Miw3ICszNjYsNiBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVs
IGNhbkNvbXBpbGUoTm9kZSogCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBJZGVudGl0eVdp
dGhQcm9maWxlOgotICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICBjYXNlIENoZWNrVGllclVwSW5M
b29wOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKICAgICBjYXNlIENoZWNrVGll
clVwQXRSZXR1cm46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5MSw2ICszOTEsOCBA
QCBwdWJsaWM6CiAKICAgICAgICAgLy8gV2UgcHV0IHRoZSBibG9ja3MgaW50byB0aGUgQjMgcHJv
Y2VkdXJlIGluIGEgc3VwZXIgd2VpcmQgb3JkZXIuIE5vdyB3ZSByZW9yZGVyIHRoZW0uCiAgICAg
ICAgIG1fb3V0LmFwcGx5QmxvY2tPcmRlcigpOworICAgICAgICAKKyAgICAgICAgbV9mdGxTdGF0
ZS5qaXRDb2RlLT5jb21tb24ucmVjb3JkZWRTdGF0dXNlcyA9IFdURk1vdmUobV9ncmFwaC5tX3Bs
YW4ucmVjb3JkZWRTdGF0dXNlcyk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtODQ3LDYgKzg0OSw5
IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgTmV3QXJyYXlXaXRoU3ByZWFkOgogICAgICAgICAg
ICAgY29tcGlsZU5ld0FycmF5V2l0aFNwcmVhZCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgQ3JlYXRlVGhpczoKKyAgICAgICAgICAgIGNvbXBpbGVDcmVhdGVUaGlzKCk7Cisg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTcHJlYWQ6CiAgICAgICAgICAgICBjb21w
aWxlU3ByZWFkKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEzMTIsNiArMTMxNyw5IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgQm90dG9tVmFsdWU6CiAgICAgICAgIGNhc2UgS2lsbFN0YWNr
OgogICAgICAgICBjYXNlIEluaXRpYWxpemVFbnRyeXBvaW50QXJndW1lbnRzOgorICAgICAgICBj
YXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0
dXM6CisgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9k
ZSwgIlVucmVjb2duaXplZCBub2RlIGluIEZUTCBiYWNrZW5kIik7CkBAIC01NjYyLDYgKzU2NzAs
NDAgQEAgcHJpdmF0ZToKIAogICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgfQorICAg
IAorICAgIHZvaWQgY29tcGlsZUNyZWF0ZVRoaXMoKQorICAgIHsKKyAgICAgICAgTFZhbHVlIGNh
bGxlZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sg
aXNGdW5jdGlvbkJsb2NrID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sg
aGFzUmFyZURhdGEgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBzbG93
UGF0aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlv
biA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzRnVuY3Rpb24o
Y2FsbGVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdXN1YWxseShpc0Z1bmN0aW9u
QmxvY2spLCByYXJlbHkoc2xvd1BhdGgpKTsKKworICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4
dCA9IG1fb3V0LmFwcGVuZFRvKGlzRnVuY3Rpb25CbG9jaywgaGFzUmFyZURhdGEpOworICAgICAg
ICBMVmFsdWUgcmFyZURhdGEgPSBtX291dC5sb2FkUHRyKGNhbGxlZSwgbV9oZWFwcy5KU0Z1bmN0
aW9uX3JhcmVEYXRhKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmlzWmVybzY0KHJhcmVE
YXRhKSwgcmFyZWx5KHNsb3dQYXRoKSwgdXN1YWxseShoYXNSYXJlRGF0YSkpOworCisgICAgICAg
IG1fb3V0LmFwcGVuZFRvKGhhc1JhcmVEYXRhLCBzbG93UGF0aCk7CisgICAgICAgIExWYWx1ZSBh
bGxvY2F0b3IgPSBtX291dC5sb2FkUHRyKHJhcmVEYXRhLCBtX2hlYXBzLkZ1bmN0aW9uUmFyZURh
dGFfYWxsb2NhdG9yKTsKKyAgICAgICAgTFZhbHVlIHN0cnVjdHVyZSA9IG1fb3V0LmxvYWRQdHIo
cmFyZURhdGEsIG1faGVhcHMuRnVuY3Rpb25SYXJlRGF0YV9zdHJ1Y3R1cmUpOworICAgICAgICBM
VmFsdWUgYnV0dGVyZmx5ID0gbV9vdXQuY29uc3RJbnRQdHIoMCk7CisgICAgICAgIFZhbHVlRnJv
bUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoYWxsb2NhdGVPYmplY3QoYWxsb2NhdG9y
LCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSwgc2xvd1BhdGgpKTsKKyAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51
YXRpb24pOworICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9y
KHZtQ2FsbCgKKyAgICAgICAgICAgIEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uQ3Jl
YXRlVGhpcyksIG1fY2FsbEZyYW1lLCBjYWxsZWUsIG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT5p
bmxpbmVDYXBhY2l0eSgpKSkpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisK
KyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAg
IExWYWx1ZSByZXN1bHQgPSBtX291dC5waGkoSW50NjQsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQp
OworCisgICAgICAgIG11dGF0b3JGZW5jZSgpOworICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7
CisgICAgfQogCiAgICAgdm9pZCBjb21waWxlU3ByZWFkKCkKICAgICB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29k
ZVNlcXVlbmNlLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00OSwxMiArNDksMTIgQEAgQnl0ZWNvZGVTZXF1ZW5jZTo6Qnl0ZWNvZGVTZXF1ZW5jZShDb2Rl
QgogICAgICAgICBtX2hlYWRlci5hcHBlbmQob3V0LnRvQ1N0cmluZygpKTsKICAgICB9CiAgICAg
Ci0gICAgU3R1YkluZm9NYXAgc3R1YkluZm9zOwotICAgIGNvZGVCbG9jay0+Z2V0U3R1YkluZm9N
YXAoc3R1YkluZm9zKTsKKyAgICBJQ1N0YXR1c01hcCBzdGF0dXNNYXA7CisgICAgY29kZUJsb2Nr
LT5nZXRJQ1N0YXR1c01hcChzdGF0dXNNYXApOwogICAgIAogICAgIGZvciAodW5zaWduZWQgYnl0
ZWNvZGVJbmRleCA9IDA7IGJ5dGVjb2RlSW5kZXggPCBjb2RlQmxvY2stPmluc3RydWN0aW9ucygp
LnNpemUoKTspIHsKICAgICAgICAgb3V0LnJlc2V0KCk7Ci0gICAgICAgIGNvZGVCbG9jay0+ZHVt
cEJ5dGVjb2RlKG91dCwgYnl0ZWNvZGVJbmRleCwgc3R1YkluZm9zKTsKKyAgICAgICAgY29kZUJs
b2NrLT5kdW1wQnl0ZWNvZGUob3V0LCBieXRlY29kZUluZGV4LCBzdGF0dXNNYXApOwogICAgICAg
ICBPcGNvZGVJRCBvcGNvZGVJRCA9IEludGVycHJldGVyOjpnZXRPcGNvZGVJRChjb2RlQmxvY2st
Pmluc3RydWN0aW9ucygpW2J5dGVjb2RlSW5kZXhdLnUub3Bjb2RlKTsKICAgICAgICAgbV9zZXF1
ZW5jZS5hcHBlbmQoQnl0ZWNvZGUoYnl0ZWNvZGVJbmRleCwgb3Bjb2RlSUQsIG91dC50b0NTdHJp
bmcoKSkpOwogICAgICAgICBieXRlY29kZUluZGV4ICs9IG9wY29kZUxlbmd0aChvcGNvZGVJRCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAy
MzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI3NSw2ICsyNzUsNyBAQCBjb25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3Nl
bWJseVN0cmVhbWluCiAgICAgdih1bnNpZ25lZCwgbWF4QWNjZXNzVmFyaWFudExpc3RTaXplLCA4
LCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KGJvb2wsIHVzZVBvbHl2YXJpYW50RGV2aXJ0dWFs
aXphdGlvbiwgdHJ1ZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihib29sLCB1c2VQb2x5bW9y
cGhpY0FjY2Vzc0lubGluaW5nLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICB2KHVuc2ln
bmVkLCBtYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemUsIDgsIE5vcm1hbCwgbnVs
bHB0cikgXAogICAgIHYoYm9vbCwgdXNlUG9seW1vcnBoaWNDYWxsSW5saW5pbmcsIHRydWUsIE5v
cm1hbCwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwgdXNlUG9seW1vcnBoaWNDYWxsSW5saW5pbmdG
b3JOb25TdHViU3RhdHVzLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdih1bnNpZ25l
ZCwgbWF4UG9seW1vcnBoaWNDYWxsVmFyaWFudExpc3RTaXplLCAxNSwgTm9ybWFsLCBudWxscHRy
KSBcCkBAIC0zMjIsOSArMzIzLDYgQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlT
dHJlYW1pbgogICAgIFwKICAgICB2KHVuc2lnbmVkLCBtYXhpbXVtVmFyYXJnc0ZvcklubGluaW5n
LCAxMDAsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIFwKLSAgICB2KGJvb2wsIHVzZVBvbHl2YXJp
YW50Q2FsbElubGluaW5nLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKLSAgICB2KGJvb2wsIHVz
ZVBvbHl2YXJpYW50QnlJZElubGluaW5nLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKLSAgICBc
CiAgICAgdihib29sLCB1c2VNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZSwgZmFsc2UsIE5vcm1h
bCwgIlNldHRpbmcgdG8gdHJ1ZSBhbGxvd3MgdGhlIERGRydzIE1heGltYWxGbHVzaEluc2VydGlv
blBoYXNlIHRvIHJ1bi4iKSBcCiAgICAgXAogICAgIHYodW5zaWduZWQsIG1heGltdW1CaW5hcnlT
dHJpbmdTd2l0Y2hDYXNlTGVuZ3RoLCA1MCwgTm9ybWFsLCBudWxscHRyKSBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341817</attachid>
            <date>2018-06-01 19:34:26 -0700</date>
            <delta_ts>2018-06-01 21:26:35 -0700</delta_ts>
            <desc>it makes raytrace neutral!</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>158383</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIzMjIyNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNDQwLDYgKzQ0MCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUEKICAgICBieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgKICAgICBieXRlY29k
ZS9FeGVjdXRpb25Db3VudGVyLmgKICAgICBieXRlY29kZS9FeGl0S2luZC5oCisgICAgYnl0ZWNv
ZGUvRXhpdGluZ0lubGluZUtpbmQuaAogICAgIGJ5dGVjb2RlL0V4aXRpbmdKSVRUeXBlLmgKICAg
ICBieXRlY29kZS9FeHByZXNzaW9uUmFuZ2VJbmZvLmgKICAgICBieXRlY29kZS9IYW5kbGVySW5m
by5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyMzIyMjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIx
MiwxMyArMjEyLDE3IEBAIGJ5dGVjb2RlL0RpcmVjdEV2YWxDb2RlQ2FjaGUuY3BwCiBieXRlY29k
ZS9FdmFsQ29kZUJsb2NrLmNwcAogYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5j
cHAKIGJ5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIuY3BwCitieXRlY29kZS9FeGl0RmxhZy5jcHAK
IGJ5dGVjb2RlL0V4aXRLaW5kLmNwcAorYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuY3BwCiBi
eXRlY29kZS9FeGl0aW5nSklUVHlwZS5jcHAKIGJ5dGVjb2RlL0Z1bGxDb2RlT3JpZ2luLmNwcAog
Ynl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suY3BwCiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNw
cAogYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCiBieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlLmNwcAorYnl0ZWNvZGUvSUNTdGF0dXNNYXAuY3BwCitieXRlY29kZS9JQ1N0YXR1c1V0
aWxzLmNwcAogYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcAogYnl0ZWNvZGUvSW5saW5lQ2FsbEZy
YW1lLmNwcAogYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lU2V0LmNwcApAQCAtMjQ1LDYgKzI0OSw3
IEBAIGJ5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwCiBieXRlY29kZS9QdXRCeUlkRmxh
Z3MuY3BwCiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAogYnl0ZWNvZGUvUHV0QnlJZFZhcmlh
bnQuY3BwCitieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAogYnl0ZWNvZGUvUmVkdWNlV2hp
dGVzcGFjZS5jcHAKIGJ5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmNwcAogYnl0ZWNvZGUvU3BlY3Vs
YXRlZFR5cGUuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI5Nyw2ICsyOTcsMTEgQEAKIAkJ
MEY0MjZBNDkxNDYwQ0JCNzAwMTMxRjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0MjZBNDYxNDYwQ0JBQjAwMTMx
RjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGNDI2QTRCMTQ2MENENkUwMDEzMUY4RiAvKiBEYXRhRm9ybWF0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQyNkE0
QTE0NjBDRDZCMDAxMzFGOEYgLyogRGF0YUZvcm1hdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDMxNzM4MTQ2QkFDNjkwMDdFMzg5MCAvKiBM
aXN0YWJsZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ0QTdCMDIw
QkY2ODYyMDAyMkIxNzEgLyogRXhpdEZsYWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDRBN0FFMjBCRjY4NUYwMDIyQjE3MSAvKiBFeGl0RmxhZy5o
ICovOyB9OworCQkwRjQ0QTdCMTIwQkY2OEM5MDAyMkIxNzEgLyogRXhpdGluZ0lubGluZUtpbmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDRBN0E3
MjBCRjY4NUQwMDIyQjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDRBN0IyMjBCRjY4Q0UwMDIyQjE3
MSAvKiBJQ1N0YXR1c01hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0NEE3QUYyMEJGNjg1RjAwMjJCMTcxIC8qIElDU3RhdHVzTWFwLmggKi87IH07
CisJCTBGNDRBN0IzMjBCRjY4RDEwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ0QTdBQTIwQkY2ODVF
MDAyMkIxNzEgLyogUmVjb3JkZWRTdGF0dXNlcy5oICovOyB9OworCQkwRjQ0QTdCNDIwQkY2OEQ5
MDAyMkIxNzEgLyogVGVybWluYXRlZENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDRBN0E4MjBCRjY4NUUwMDIyQjE3MSAvKiBUZXJt
aW5hdGVkQ29kZU9yaWdpbi5oICovOyB9OwogCQkwRjQ1NzAzOTFCRTQ0QzkxMDA2MkE2MjkgLyog
QWlyRWxpbWluYXRlRGVhZENvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNDU3MDM3MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFk
Q29kZS5oICovOyB9OwogCQkwRjQ1NzAzRDFCRTQ1RjBBMDA2MkE2MjkgLyogQWlyUmVwb3J0VXNl
ZFJlZ2lzdGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY0NTcwM0IxQkU0NUYwQTAwNjJBNjI5IC8qIEFpclJlcG9ydFVzZWRSZWdpc3RlcnMuaCAq
LzsgfTsKIAkJMEY0NTcwNDExQkU1ODRDQTAwNjJBNjI5IC8qIEIzVGltaW5nU2NvcGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDU3MDNGMUJFNTg0
Q0EwMDYyQTYyOSAvKiBCM1RpbWluZ1Njb3BlLmggKi87IH07CkBAIC0yMjg3LDYgKzIyOTIsMTYg
QEAKIAkJMEY0MjZBNEExNDYwQ0Q2QjAwMTMxRjhGIC8qIERhdGFGb3JtYXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YUZvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjQyQjNDMDIwMUVCNTA5MDAzNTcwMzEgLyogQWxsb2NhdG9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFsbG9jYXRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJs
ZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGlzdGFibGVIYW5k
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDRBN0E3MjBCRjY4NUQwMDIy
QjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBFeGl0aW5nSW5saW5lS2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjQ0QTdBODIwQkY2ODVFMDAyMkIxNzEgLyogVGVybWluYXRlZENvZGVPcmlnaW4uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVybWluYXRlZENvZGVPcmlnaW4uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NEE3QTkyMEJGNjg1RTAwMjJCMTcxIC8qIEV4aXRG
bGFnLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4aXRGbGFnLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcx
IC8qIFJlY29yZGVkU3RhdHVzZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVjb3JkZWRTdGF0dXNlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ0QTdB
QjIwQkY2ODVFMDAyMkIxNzEgLyogSUNTdGF0dXNNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSUNTdGF0dXNNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjQ0QTdBQzIwQkY2ODVGMDAyMkIxNzEgLyogRXhpdGluZ0lubGluZUtpbmQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXhpdGluZ0lubGluZUtpbmQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ0QTdBRDIwQkY2ODVGMDAyMkIx
NzEgLyogUmVjb3JkZWRTdGF0dXNlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZWNvcmRlZFN0YXR1c2VzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY0NEE3QUUyMEJGNjg1RjAwMjJCMTcxIC8qIEV4aXRGbGFnLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEV4aXRGbGFnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGNDRBN0FGMjBCRjY4NUYwMDIyQjE3MSAvKiBJQ1N0YXR1c01hcC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJQ1N0YXR1c01hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjQ0QTdCNTIwQzBCRTNGMDAyMkIxNzEgLyogSUNTdGF0dXNVdGlscy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJQ1N0YXR1c1V0aWxzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NTcwMzYxQkU0NEM5MTAwNjJBNjI5IC8q
IEFpckVsaW1pbmF0ZURlYWRDb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEFpckVsaW1pbmF0ZURlYWRDb2RlLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJFbGltaW5h
dGVEZWFkQ29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDU3MDM3MUJF
NDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBBaXJFbGltaW5hdGVEZWFkQ29kZS5oOyBwYXRoID0gYjMvYWlyL0Fp
ckVsaW1pbmF0ZURlYWRDb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDU3
MDNBMUJFNDVGMEEwMDYyQTYyOSAvKiBBaXJSZXBvcnRVc2VkUmVnaXN0ZXJzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpclJlcG9ydFVzZWRSZWdpc3RlcnMuY3Bw
OyBwYXRoID0gYjMvYWlyL0FpclJlcG9ydFVzZWRSZWdpc3RlcnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzY1OCw2ICs3NjczLDEwIEBACiAJCQkJMEY2MEZFOEUxRkZDMzZG
RDAwMDMzMjBBIC8qIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCAqLywKIAkJCQkwRjU2QTFE
NDE1MDAxQ0YyMDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5jcHAgKi8sCiAJCQkJMEY1NkEx
RDExNTAwMEYzMTAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNvdW50ZXIuaCAqLywKKwkJCQkwRjQ0QTdB
OTIwQkY2ODVFMDAyMkIxNzEgLyogRXhpdEZsYWcuY3BwICovLAorCQkJCTBGNDRBN0FFMjBCRjY4
NUYwMDIyQjE3MSAvKiBFeGl0RmxhZy5oICovLAorCQkJCTBGNDRBN0FDMjBCRjY4NUYwMDIyQjE3
MSAvKiBFeGl0aW5nSW5saW5lS2luZC5jcHAgKi8sCisJCQkJMEY0NEE3QTcyMEJGNjg1RDAwMjJC
MTcxIC8qIEV4aXRpbmdJbmxpbmVLaW5kLmggKi8sCiAJCQkJMEYwMzMyQkYxOEFERkFFMTAwNUY5
NzlBIC8qIEV4aXRpbmdKSVRUeXBlLmNwcCAqLywKIAkJCQkwRjNBQzc1MzE4OEU1RUM4MDAzMjAy
OUYgLyogRXhpdGluZ0pJVFR5cGUuaCAqLywKIAkJCQkwRkIxMDU4MjE2NzU0ODBDMDBGOEFCNkUg
LyogRXhpdEtpbmQuY3BwICovLApAQCAtNzY3NCw2ICs3NjkzLDkgQEAKIAkJCQkwRjAzMzJDMjE4
QjAxNzYzMDA1Rjk3OUEgLyogR2V0QnlJZFZhcmlhbnQuaCAqLywKIAkJCQkxNEFEOTEwODFEQ0E5
Mjk0MDAxNEY5RkUgLyogR2xvYmFsQ29kZUJsb2NrLmggKi8sCiAJCQkJMEYwQjgzQTgxNEJDRjU1
RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi8sCisJCQkJMEY0NEE3QUIyMEJGNjg1RTAwMjJC
MTcxIC8qIElDU3RhdHVzTWFwLmNwcCAqLywKKwkJCQkwRjQ0QTdBRjIwQkY2ODVGMDAyMkIxNzEg
LyogSUNTdGF0dXNNYXAuaCAqLywKKwkJCQkwRjQ0QTdCNTIwQzBCRTNGMDAyMkIxNzEgLyogSUNT
dGF0dXNVdGlscy5jcHAgKi8sCiAJCQkJMEZCMzk5QkQyMEFGNkIzODAwMTdFMjEzIC8qIElDU3Rh
dHVzVXRpbHMuaCAqLywKIAkJCQk3OTA1QkI2NjFEMTIwNTBFMDAxOUZFNTcgLyogSW5saW5lQWNj
ZXNzLmNwcCAqLywKIAkJCQk3OTA1QkI2NzFEMTIwNTBFMDAxOUZFNTcgLyogSW5saW5lQWNjZXNz
LmggKi8sCkBAIC03NzMwLDYgKzc3NTIsOCBAQAogCQkJCTBGOTNCNEE3MThCOTJDNEQwMDE3OEEz
RiAvKiBQdXRCeUlkVmFyaWFudC5jcHAgKi8sCiAJCQkJMEY5M0I0QTgxOEI5MkM0RDAwMTc4QTNG
IC8qIFB1dEJ5SWRWYXJpYW50LmggKi8sCiAJCQkJMEY5RkM4QzExNEUxQjVGQjAwRDUyQUUwIC8q
IFB1dEtpbmQuaCAqLywKKwkJCQkwRjQ0QTdBRDIwQkY2ODVGMDAyMkIxNzEgLyogUmVjb3JkZWRT
dGF0dXNlcy5jcHAgKi8sCisJCQkJMEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcxIC8qIFJlY29yZGVk
U3RhdHVzZXMuaCAqLywKIAkJCQkwRkY2MEFCRjE2NzQwRjgxMDAwMjk3NzkgLyogUmVkdWNlV2hp
dGVzcGFjZS5jcHAgKi8sCiAJCQkJMEZGNjBBQzAxNjc0MEY4MTAwMDI5Nzc5IC8qIFJlZHVjZVdo
aXRlc3BhY2UuaCAqLywKIAkJCQkwRjU1NDFBRjE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBv
aW50ZXIuY3BwICovLApAQCAtNzc0NCw2ICs3NzY4LDcgQEAKIAkJCQlCQ0NGMEQwNzBFRjBBQUI5
MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1YkluZm8uaCAqLywKIAkJCQkwRjRBMzhGNzFDOEUxM0RG
MDAxOTAzMTggLyogU3VwZXJTYW1wbGVyLmNwcCAqLywKIAkJCQkwRjRBMzhGODFDOEUxM0RGMDAx
OTAzMTggLyogU3VwZXJTYW1wbGVyLmggKi8sCisJCQkJMEY0NEE3QTgyMEJGNjg1RTAwMjJCMTcx
IC8qIFRlcm1pbmF0ZWRDb2RlT3JpZ2luLmggKi8sCiAJCQkJMEYyRDRERTUxOTgzMkRBQzAwN0Q0
QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgKi8sCiAJCQkJMEYyRDRERTYxOTgzMkRBQzAwN0Q0QjE5
IC8qIFRvVGhpc1N0YXR1cy5oICovLAogCQkJCTBGOTUyQUJBMUI0ODdBNzcwMEMzNjdDNSAvKiBU
cmFja2VkUmVmZXJlbmNlcy5jcHAgKi8sCkBAIC04NDAxLDYgKzg0MjYsNyBAQAogCQkJCTUzRDQ0
NERDMURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUzNDFGQzcyMURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJDNjNCMjFFNjBBRTQ3MDBDMTM4MzkgLyogQjNXaWR0
aC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NEE3QjIyMEJGNjhDRTAwMjJCMTcxIC8qIElDU3Rh
dHVzTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MjY3OEY4RjFBMDMxMDA5MDA2QTMwNkQgLyog
QmFzaWNCbG9ja0xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDdCODNBQzBFNkRCOEM5
MDA0Nzc1QTQgLyogQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg2OTc2RTVGMUZBM0U4QkMwMEU3QzRFMSAvKiBCaWdJbnRDb25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8sCkBAIC04NjIwLDYgKzg2NDYsNyBAQAogCQkJCTg2RUM5REM2MTMyOERGODIwMDJC
MkFENyAvKiBERkdHZW5lcmF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQzlEQzgx
MzI4REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJGQ0NG
QTE4QTYwMDcwMDAxQTI3RjggLyogREZHR3JhcGhTYWZlcG9pbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGNDRBN0IxMjBCRjY4QzkwMDIyQjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZCMTc2NjExOTZCOEY5RTAwOTEwNTJBIC8qIERGR0hlYXBMb2NhdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDODQxNjkxQkE4QzMyMTAwNjE4MzdEIC8qIERGR0lu
ZmVycmVkVHlwZUNoZWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxNEUyMTE4MTI1NzBCMDA5
QjZCNEQgLyogREZHSW5saW5lQ2FjaGVXcmFwcGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTg3NzAs
NiArODc5Nyw3IEBACiAJCQkJQTdBOEFGMzgxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0MzJBcnJh
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzkxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0
NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NDMxN0VBOUY1OTAwQUJCMjE3IC8q
IEZQUkluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDRBN0IzMjBCRjY4RDEwMDIyQjE3MSAv
KiBSZWNvcmRlZFN0YXR1c2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzRFREJGNzFEQjVGRkM5
MDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU1MTNBNjFE
NUE2ODJDMDBDMzJCRDggLyogRnJlZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjU4NUUx
MUVFMDgwNUEwMDk1MTc2RCAvKiBGcmVlTGlzdElubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAt
OTExOSw2ICs5MTQ3LDcgQEAKIAkJCQk3MDEzQ0E4QzFCNDkxQTk0MDBDQUU2MTMgLyogSlNKb2Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0xleGlj
YWxFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjMwRTE2RjVDRDAwQjM0
NDYwIC8qIEpTTG9jay5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NEE3QjAyMEJGNjg2MjAwMjJC
MTcxIC8qIEV4aXRGbGFnLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjVENzA5QzE2REU5OUY0MDBG
Q0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBNEJCN0YzMThB
NDExNzkwMDhBMEZDRCAvKiBKU01hbmFnZWRWYWx1ZUludGVybmFsLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNzAwODc0MjE3Q0JFOEVCMDBDM0U2NDMgLyogSlNNYXAuaCBpbiBIZWFkZXJzICovLApA
QCAtOTQzNSw2ICs5NDY0LDcgQEAKIAkJCQlBNzI5OURBMjE3RDEyODQ4MDA1RjVGRjkgLyogU2V0
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVFOTg0MTFBODg2NUI3MDA3NTRFOTMg
LyogU2V0dXBWYXJhcmdzRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCURDMTdFODE4MUM5Qzkx
RDkwMDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ0QTdC
NDIwQkY2OEQ5MDAyMkIxNzEgLyogVGVybWluYXRlZENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICov
LAogCQkJCURDMTdFODE5MUM5QzkxREIwMDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzMDIyRDMxRTNENzNBNTAwQkFDNDkzIC8qIFNpZ2lsbENy
YXNoQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNEQ4Qzc4MUZDQTNDRkEwMDFEMzJB
QyAvKiBTaW1wbGVNYXJraW5nQ29uc3RyYWludC5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCShyZXZpc2lvbiAyMzIyMjcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2NiwxMiArMjY2LDYgQEAgaW5saW5lIHVuc2lnbmVkIGdldEJ5VmFsSW5mb0J5
dGVjb2RlSW5kZQogICAgIHJldHVybiBpbmZvLT5ieXRlY29kZUluZGV4OwogfQogCi10eXBlZGVm
IEhhc2hNYXA8Q29kZU9yaWdpbiwgQnlWYWxJbmZvKiwgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFz
aD4gQnlWYWxJbmZvTWFwOwotCi0jZWxzZSAvLyBFTkFCTEUoSklUKQotCi10eXBlZGVmIEhhc2hN
YXA8aW50LCB2b2lkKj4gQnlWYWxJbmZvTWFwOwotCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVEdW1wZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTQyNyw3ICs0MjcsNyBAQCBzdGF0aWMgdm9pZCBkdW1wQ2hhaW4oUHJpbnRTdHJlYW0mIG91
dCwgCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgotdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9j
az46OnByaW50R2V0QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlv
biwgY29uc3QgU3R1YkluZm9NYXAmIG1hcCkKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpw
cmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNv
bnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rp
b24gPSBpbnN0cnVjdGlvbnNCZWdpbigpICsgbG9jYXRpb247CiAKQEAgLTQ0Nyw3ICs0NDcsNyBA
QCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRHZXRCeUlkCiAgICAgfQogCiAjaWYg
RU5BQkxFKEpJVCkKLSAgICBpZiAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJQdHIgPSBtYXAuZ2V0
KENvZGVPcmlnaW4obG9jYXRpb24pKSkgeworICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YlB0ciA9IHN0YXR1c01hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpLnN0dWJJbmZvKSB7CiAg
ICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9ICpzdHViUHRyOwogICAgICAgICBp
ZiAoc3R1YkluZm8ucmVzZXRCeUdDKQogICAgICAgICAgICAgb3V0LnByaW50KCIgKFJlc2V0IEJ5
IEdDKSIpOwpAQCAtNDg4LDEyICs0ODgsMTIgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46
OnByaW50R2V0QnlJZAogICAgICAgICBvdXQucHJpbnRmKCIpIik7CiAgICAgfQogI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0obWFwKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdHVzTWFwKTsKICNlbmRp
ZgogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+
OjpwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24s
IGNvbnN0IFN0dWJJbmZvTWFwJiBtYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJp
bnRQdXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25z
dCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQogewogICAgIGNvbnN0IGF1dG8qIGluc3RydWN0aW9u
ID0gaW5zdHJ1Y3Rpb25zQmVnaW4oKSArIGxvY2F0aW9uOwogCkBAIC01MjEsNyArNTIxLDcgQEAg
dm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50UHV0QnlJZAogICAgIH0KIAogI2lmIEVO
QUJMRShKSVQpCi0gICAgaWYgKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViUHRyID0gbWFwLmdldChD
b2RlT3JpZ2luKGxvY2F0aW9uKSkpIHsKKyAgICBpZiAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJQ
dHIgPSBzdGF0dXNNYXAuZ2V0KENvZGVPcmlnaW4obG9jYXRpb24pKS5zdHViSW5mbykgewogICAg
ICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSAqc3R1YlB0cjsKICAgICAgICAgaWYg
KHN0dWJJbmZvLnJlc2V0QnlHQykKICAgICAgICAgICAgIG91dC5wcmludCgiIChSZXNldCBCeSBH
QykiKTsKQEAgLTU0NywxMiArNTQ3LDEyIEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpw
cmludFB1dEJ5SWQKICAgICAgICAgb3V0LnByaW50ZigiKSIpOwogICAgIH0KICNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKG1hcCk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXR1c01hcCk7CiAjZW5kaWYK
IH0KIAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6
cHJpbnRJbkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNv
bnN0IFN0dWJJbmZvTWFwJiBtYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRJ
bkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IElD
U3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb24gPSBp
bnN0cnVjdGlvbnNCZWdpbigpICsgbG9jYXRpb247CiAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lk
IEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRJbkJ5SWRDCiAgICAgVU5VU0VEX1BBUkFNKGlk
ZW50KTsgLy8gdGVsbCB0aGUgY29tcGlsZXIgdG8gc2h1dCB1cCBpbiBjZXJ0YWluIHBsYXRmb3Jt
IGNvbmZpZ3VyYXRpb25zLgogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJQdHIgPSBtYXAuZ2V0KENvZGVPcmlnaW4obG9jYXRpb24pKSkgeworICAgIGlm
IChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YlB0ciA9IHN0YXR1c01hcC5nZXQoQ29kZU9yaWdpbihs
b2NhdGlvbikpLnN0dWJJbmZvKSB7CiAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
byA9ICpzdHViUHRyOwogICAgICAgICBpZiAoc3R1YkluZm8ucmVzZXRCeUdDKQogICAgICAgICAg
ICAgb3V0LnByaW50KCIgKFJlc2V0IEJ5IEdDKSIpOwpAQCAtNjAwLDI2ICs2MDAsMjYgQEAgdm9p
ZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50SW5CeUlkQwogICAgIH0KICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKG91dCk7Ci0gICAgVU5VU0VEX1BBUkFNKG1hcCk7CisgICAgVU5VU0VEX1BB
UkFNKHN0YXR1c01hcCk7CiAjZW5kaWYKIH0KIAogI2lmIEVOQUJMRShKSVQpCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQ2FsbExpbmtT
dGF0dXMoUHJpbnRTdHJlYW0mLCB1bnNpZ25lZCwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJikKK3Zv
aWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQ2FsbExpbmtTdGF0dXMoUHJpbnRTdHJlYW0m
LCB1bnNpZ25lZCwgY29uc3QgSUNTdGF0dXNNYXAmKQogewogfQogCiB0ZW1wbGF0ZTw+Ci12b2lk
IEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBDYWxsTGlua1N0YXR1cyhQcmludFN0cmVh
bSYgb3V0LCB1bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBtYXApCit2
b2lkIEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBDYWxsTGlua1N0YXR1cyhQcmludFN0
cmVhbSYgb3V0LCB1bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01h
cCkKIHsKICAgICBpZiAoYmxvY2soKS0+aml0VHlwZSgpICE9IEpJVENvZGU6OkZUTEpJVCkKLSAg
ICAgICAgb3V0LnByaW50KCIgc3RhdHVzKCIsIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKGJs
b2NrKCksIGxvY2F0aW9uLCBtYXApLCAiKSIpOworICAgICAgICBvdXQucHJpbnQoIiBzdGF0dXMo
IiwgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoYmxvY2soKSwgbG9jYXRpb24sIHN0YXR1c01h
cCksICIpIik7CiB9CiAjZW5kaWYKIAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVj
b2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0
aW9uLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgY2hhciog
b3AsIENhY2hlRHVtcE1vZGUgY2FjaGVEdW1wTW9kZSwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGlu
ZywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBtYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2Nr
Pjo6cHJpbnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCB0eXBl
bmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgY2hhciogb3AsIENhY2hlRHVtcE1v
ZGUgY2FjaGVEdW1wTW9kZSwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZywgY29uc3QgSUNTdGF0
dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBpbnQgZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAg
ICAgaW50IGZ1bmMgPSAoKytpdCktPnUub3BlcmFuZDsKQEAgLTYzOCw3ICs2MzgsNyBAQCB2b2lk
IEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRDYWxsT3AoCiAgICAgICAgICAgICAgICAgb3V0
LnByaW50ZigiIGxsaW50KCVwKSIsIG9iamVjdCk7CiAgICAgICAgIH0KICNpZiBFTkFCTEUoSklU
KQotICAgICAgICBpZiAoQ2FsbExpbmtJbmZvKiBpbmZvID0gbWFwLmdldChDb2RlT3JpZ2luKGxv
Y2F0aW9uKSkpIHsKKyAgICAgICAgaWYgKENhbGxMaW5rSW5mbyogaW5mbyA9IHN0YXR1c01hcC5n
ZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpLmNhbGxMaW5rSW5mbykgewogICAgICAgICAgICAgaWYg
KGluZm8tPmhhdmVMYXN0U2VlbkNhbGxlZSgpKSB7CiAgICAgICAgICAgICAgICAgSlNPYmplY3Qq
IG9iamVjdCA9IGluZm8tPmxhc3RTZWVuQ2FsbGVlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGF1
dG8qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4oKnZtKCksIG9iamVjdCkp
CkBAIC02NDgsOSArNjQ4LDkgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50Q2Fs
bE9wKAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgZHVtcENhbGxMaW5rU3Rh
dHVzKG91dCwgbG9jYXRpb24sIG1hcCk7CisgICAgICAgIGR1bXBDYWxsTGlua1N0YXR1cyhvdXQs
IGxvY2F0aW9uLCBzdGF0dXNNYXApOwogI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKG1hcCk7
CisgICAgICAgIFVOVVNFRF9QQVJBTShzdGF0dXNNYXApOwogI2VuZGlmCiAgICAgfQogICAgICsr
aXQ7CkBAIC02NzgsNyArNjc4LDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50
TG9jYXRpbwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8
QmxvY2s+OjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQmxv
Y2s6Okluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9u
KiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiBzdHViSW5mb3MsIGNvbnN0IENhbGxMaW5rSW5mb01h
cCYgY2FsbExpbmtJbmZvcykKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNv
ZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiBi
ZWdpbiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3Rh
dHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgaW50IGxvY2F0aW9uID0gaXQgLSBiZWdpbjsKICAg
ICBib29sIGhhc1ByaW50ZWRQcm9maWxpbmcgPSBmYWxzZTsKQEAgLTEwNzEsNyArMTA3MSw3IEBA
IHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgaW50IGlk
MCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBs
b2NhdGlvbiwgaXQsICJpbl9ieV9pZCIpOwogICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVz
IiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBpZE5h
bWUoaWQwLCBpZGVudGlmaWVyKGlkMCkpLmRhdGEoKSk7Ci0gICAgICAgIHByaW50SW5CeUlkQ2Fj
aGVTdGF0dXMob3V0LCBsb2NhdGlvbiwgc3R1YkluZm9zKTsKKyAgICAgICAgcHJpbnRJbkJ5SWRD
YWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdGF0dXNNYXApOwogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgY2FzZSBvcF9pbl9ieV92YWw6IHsKQEAgLTEwOTUsNyArMTA5NSw3IEBAIHZvaWQg
Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiZ2V0X2J5X2lkX2RpcmVjdCIpOwogICAgICAgICBv
dXQucHJpbnRmKCIlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShyMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBpZGVudGlmaWVyKGlkMCkpLmRhdGEoKSk7CiAg
ICAgICAgIGl0ICs9IDI7IC8vIEluY3JlbWVudCB1cCB0byB0aGUgdmFsdWUgcHJvZmlsZXIuCi0g
ICAgICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0dWJJbmZvcyk7
CisgICAgICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0YXR1c01h
cCk7CiAgICAgICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmls
aW5nKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTEwNCw3ICsxMTA0LDcgQEAgdm9pZCBC
eXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZQogICAgIGNhc2Ugb3BfZ2V0X2J5X2lk
X3Vuc2V0OgogICAgIGNhc2Ugb3BfZ2V0X2FycmF5X2xlbmd0aDogewogICAgICAgICBwcmludEdl
dEJ5SWRPcChvdXQsIGxvY2F0aW9uLCBpdCk7Ci0gICAgICAgIHByaW50R2V0QnlJZENhY2hlU3Rh
dHVzKG91dCwgbG9jYXRpb24sIHN0dWJJbmZvcyk7CisgICAgICAgIHByaW50R2V0QnlJZENhY2hl
U3RhdHVzKG91dCwgbG9jYXRpb24sIHN0YXR1c01hcCk7CiAgICAgICAgIGR1bXBWYWx1ZVByb2Zp
bGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQpAQCAtMTEzMCw3ICsxMTMwLDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBC
eXRlY29kZQogICAgIH0KICAgICBjYXNlIG9wX3B1dF9ieV9pZDogewogICAgICAgICBwcmludFB1
dEJ5SWRPcChvdXQsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZCIpOwotICAgICAgICBwcmludFB1
dEJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdHViSW5mb3MpOworICAgICAgICBwcmlu
dFB1dEJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdGF0dXNNYXApOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBvcF9wdXRfYnlfaWRfd2l0aF90aGlzOiB7CkBAIC0xNDc2
LDE1ICsxNDc2LDE1IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3BfY2FsbDogewotICAgICAgICBwcmlu
dENhbGxPcChvdXQsIGxvY2F0aW9uLCBpdCwgImNhbGwiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVk
UHJvZmlsaW5nLCBjYWxsTGlua0luZm9zKTsKKyAgICAgICAgcHJpbnRDYWxsT3Aob3V0LCBsb2Nh
dGlvbiwgaXQsICJjYWxsIiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgc3RhdHVz
TWFwKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3BfdGFpbF9jYWxsOiB7Ci0g
ICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAidGFpbF9jYWxsIiwgRHVtcENh
Y2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgY2FsbExpbmtJbmZvcyk7CisgICAgICAgIHByaW50
Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAidGFpbF9jYWxsIiwgRHVtcENhY2hlcywgaGFzUHJp
bnRlZFByb2ZpbGluZywgc3RhdHVzTWFwKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNh
c2Ugb3BfY2FsbF9ldmFsOiB7Ci0gICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0
LCAiY2FsbF9ldmFsIiwgRG9udER1bXBDYWNoZXMsIGhhc1ByaW50ZWRQcm9maWxpbmcsIGNhbGxM
aW5rSW5mb3MpOworICAgICAgICBwcmludENhbGxPcChvdXQsIGxvY2F0aW9uLCBpdCwgImNhbGxf
ZXZhbCIsIERvbnREdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmlsaW5nLCBzdGF0dXNNYXApOwog
ICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTE1MjMsNyArMTUyMyw3IEBAIHZvaWQgQnl0ZWNv
ZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IGNhc2Ugb3BfY29uc3RydWN0OiB7Ci0gICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24s
IGl0LCAiY29uc3RydWN0IiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgY2FsbExp
bmtJbmZvcyk7CisgICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAiY29uc3Ry
dWN0IiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgc3RhdHVzTWFwKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3Bfc3RyY2F0OiB7CkBAIC0xNzc4LDEwICsxNzc4
LDEwIEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKIH0KIAogdGVt
cGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJ5dGVj
b2RlKEJsb2NrKiBibG9jaywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQmxvY2s6
Okluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiYg
aXQsIGNvbnN0IFN0dWJJbmZvTWFwJiBzdHViSW5mb3MsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYg
Y2FsbExpbmtJbmZvcykKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUo
QmxvY2sqIGJsb2NrLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5z
dHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwg
Y29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBCeXRlY29kZUR1bXBlciBkdW1w
ZXIoYmxvY2ssIGJlZ2luKTsKLSAgICBkdW1wZXIuZHVtcEJ5dGVjb2RlKG91dCwgYmVnaW4sIGl0
LCBzdHViSW5mb3MsIGNhbGxMaW5rSW5mb3MpOworICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0
LCBiZWdpbiwgaXQsIHN0YXR1c01hcCk7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgpAQCAt
MTg5MCw3ICsxODkwLDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBTdHJpbmdT
dwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+
OjpkdW1wQmxvY2soQmxvY2sqIGJsb2NrLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJ
bnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgU3R1Yklu
Zm9NYXAmIHN0dWJJbmZvcywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBjYWxsTGlua0luZm9zKQor
dm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCbG9jayhCbG9jayogYmxvY2ssIGNvbnN0
IHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBQcmlu
dFN0cmVhbSYgb3V0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQogewogICAgIHNpemVf
dCBpbnN0cnVjdGlvbkNvdW50ID0gMDsKIApAQCAtMTkxMCw3ICsxOTEwLDcgQEAgdm9pZCBCeXRl
Y29kZUR1bXBlcjxCbG9jaz46OmR1bXBCbG9jayhCbAogICAgIGNvbnN0IGF1dG8qIGVuZCA9IGlu
c3RydWN0aW9ucy5lbmQoKTsKICAgICBCeXRlY29kZUR1bXBlcjxCbG9jaz4gZHVtcGVyKGJsb2Nr
LCBiZWdpbik7CiAgICAgZm9yIChjb25zdCBhdXRvKiBpdCA9IGJlZ2luOyBpdCAhPSBlbmQ7ICsr
aXQpCi0gICAgICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0LCBiZWdpbiwgaXQsIHN0dWJJbmZv
cywgY2FsbExpbmtJbmZvcyk7CisgICAgICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0LCBiZWdp
biwgaXQsIHN0YXR1c01hcCk7CiAKICAgICBkdW1wZXIuZHVtcElkZW50aWZpZXJzKG91dCk7CiAg
ICAgZHVtcGVyLmR1bXBDb25zdGFudHMob3V0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1
enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjYsNiArMjcsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDYWxsTGlua0lu
Zm8uaCIKKyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJ
bmZvLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzcsOCArMzksOCBAQCBjbGFzcyBCeXRlY29k
ZUR1bXBlciB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rp
b24gSW5zdHJ1Y3Rpb247CiAKLSAgICBzdGF0aWMgdm9pZCBkdW1wQnl0ZWNvZGUoQmxvY2sqLCBQ
cmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0
aW9uKiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiA9IFN0dWJJbmZvTWFwKCksIGNvbnN0IENhbGxM
aW5rSW5mb01hcCYgPSBDYWxsTGlua0luZm9NYXAoKSk7Ci0gICAgc3RhdGljIHZvaWQgZHVtcEJs
b2NrKEJsb2NrKiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiwg
UHJpbnRTdHJlYW0mIG91dCwgY29uc3QgU3R1YkluZm9NYXAmID0gU3R1YkluZm9NYXAoKSwgY29u
c3QgQ2FsbExpbmtJbmZvTWFwJiA9IENhbGxMaW5rSW5mb01hcCgpKTsKKyAgICBzdGF0aWMgdm9p
ZCBkdW1wQnl0ZWNvZGUoQmxvY2sqLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlv
biogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0
dXNNYXAgPSBJQ1N0YXR1c01hcCgpKTsKKyAgICBzdGF0aWMgdm9pZCBkdW1wQmxvY2soQmxvY2sq
LCBjb25zdCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmLCBQcmludFN0cmVh
bSYgb3V0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwID0gSUNTdGF0dXNNYXAoKSk7CiAK
IHByaXZhdGU6CiAgICAgQnl0ZWNvZGVEdW1wZXIoQmxvY2sqIGJsb2NrLCBjb25zdCBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4pCkBAIC02OSwxNCArNzEsMTQgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHByaW50Q29uZGl0aW9uYWxKdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3Ry
dWN0aW9uKiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgaW50IGxvY2F0aW9uLCBjb25zdCBjaGFy
KiBvcCk7CiAgICAgdm9pZCBwcmludENvbXBhcmVKdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0
IEluc3RydWN0aW9uKiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgaW50IGxvY2F0aW9uLCBjb25z
dCBjaGFyKiBvcCk7CiAgICAgdm9pZCBwcmludEdldEJ5SWRPcChQcmludFN0cmVhbSYgb3V0LCBp
bnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQpOwotICAgIHZvaWQgcHJpbnRHZXRC
eUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBTdHVi
SW5mb01hcCYpOwotICAgIHZvaWQgcHJpbnRQdXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0m
IG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBTdHViSW5mb01hcCYpOwotICAgIHZvaWQgcHJpbnRJ
bkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IFN0
dWJJbmZvTWFwJik7CisgICAgdm9pZCBwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVh
bSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IElDU3RhdHVzTWFwJik7CisgICAgdm9pZCBwcmlu
dFB1dEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0
IElDU3RhdHVzTWFwJik7CisgICAgdm9pZCBwcmludEluQnlJZENhY2hlU3RhdHVzKFByaW50U3Ry
ZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmKTsKICAgICBlbnVtIENh
Y2hlRHVtcE1vZGUgeyBEdW1wQ2FjaGVzLCBEb250RHVtcENhY2hlcyB9OwotICAgIHZvaWQgcHJp
bnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlv
biomIGl0LCBjb25zdCBjaGFyKiBvcCwgQ2FjaGVEdW1wTW9kZSwgYm9vbCYgaGFzUHJpbnRlZFBy
b2ZpbGluZywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJik7CisgICAgdm9pZCBwcmludENhbGxPcChQ
cmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNv
bnN0IGNoYXIqIG9wLCBDYWNoZUR1bXBNb2RlLCBib29sJiBoYXNQcmludGVkUHJvZmlsaW5nLCBj
b25zdCBJQ1N0YXR1c01hcCYpOwogICAgIHZvaWQgcHJpbnRQdXRCeUlkT3AoUHJpbnRTdHJlYW0m
IG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBv
cCk7CiAgICAgdm9pZCBwcmludExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQoUHJpbnRTdHJl
YW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFy
KiBvcCwgaW50IG9wZXJhbmQpOwotICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBv
dXQsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29u
c3QgU3R1YkluZm9NYXAmLCBjb25zdCBDYWxsTGlua0luZm9NYXAmKTsKKyAgICB2b2lkIGR1bXBC
eXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0
IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJik7CiAKICAgICB2b2lkIGR1bXBW
YWx1ZVByb2ZpbGluZyhQcmludFN0cmVhbSYsIGNvbnN0IEluc3RydWN0aW9uKiYsIGJvb2wmIGhh
c1ByaW50ZWRQcm9maWxpbmcpOwogICAgIHZvaWQgZHVtcEFycmF5UHJvZmlsaW5nKFByaW50U3Ry
ZWFtJiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZyk7CkBA
IC04NSw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCogYWN0dWFsUG9pbnRlckZvcihTcGVj
aWFsOjpQb2ludGVyKSBjb25zdDsKIAogI2lmIEVOQUJMRShKSVQpCi0gICAgdm9pZCBkdW1wQ2Fs
bExpbmtTdGF0dXMoUHJpbnRTdHJlYW0mLCB1bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgQ2FsbExp
bmtJbmZvTWFwJik7CisgICAgdm9pZCBkdW1wQ2FsbExpbmtTdGF0dXMoUHJpbnRTdHJlYW0mLCB1
bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmKTsKICNlbmRpZgogCiAgICAgQmxv
Y2sqIG1fYmxvY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExp
bmtJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rSW5mby5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1MiwxMiArMzUyLDYg
QEAgaW5saW5lIENvZGVPcmlnaW4gZ2V0Q2FsbExpbmtJbmZvQ29kZU9yaQogICAgIHJldHVybiBj
YWxsTGlua0luZm8uY29kZU9yaWdpbigpOwogfQogCi10eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdp
biwgQ2FsbExpbmtJbmZvKiwgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFzaD4gQ2FsbExpbmtJbmZv
TWFwOwotCi0jZWxzZSAvLyBFTkFCTEUoSklUKQotCi10eXBlZGVmIEhhc2hNYXA8aW50LCB2b2lk
Kj4gQ2FsbExpbmtJbmZvTWFwOwotCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtT
dGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua1N0YXR1cy5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcg
Kzc3LDggQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcgogfQogCiBD
YWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKLSAgICBDb2RlQmxvY2sq
IHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIGNvbnN0IENhbGxMaW5rSW5m
b01hcCYgbWFwKQorICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCwgY29uc3QgSUNTdGF0dXNNYXAmIG1hcCwKKyAgICBFeGl0U2l0ZURhdGEgZXhpdFNp
dGVEYXRhKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jay0+
bV9sb2NrKTsKICAgICAKQEAgLTg1LDkgKzg2LDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtT
dGF0dXM6OmNvbXB1dGVGbwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICAgICBV
TlVTRURfUEFSQU0obWFwKTsKICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBFeGl0U2l0ZURhdGEg
ZXhpdFNpdGVEYXRhID0gY29tcHV0ZUV4aXRTaXRlRGF0YShwcm9maWxlZEJsb2NrLCBieXRlY29k
ZUluZGV4KTsKLSAgICAKLSAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IG1hcC5nZXQo
Q29kZU9yaWdpbihieXRlY29kZUluZGV4KSk7CisgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0lu
Zm8gPSBtYXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkpLmNhbGxMaW5rSW5mbzsKICAg
ICBpZiAoIWNhbGxMaW5rSW5mbykgewogICAgICAgICBpZiAoZXhpdFNpdGVEYXRhLnRha2VzU2xv
d1BhdGgpCiAgICAgICAgICAgICByZXR1cm4gdGFrZXNTbG93UGF0aCgpOwpAQCAtMTAwLDYgKzk5
LDEyIEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm8KICNlbmRpZgog
fQogCitDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKKyAgICBDb2Rl
QmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIGNvbnN0IElDU3Rh
dHVzTWFwJiBtYXApCit7CisgICAgcmV0dXJuIGNvbXB1dGVGb3IocHJvZmlsZWRCbG9jaywgYnl0
ZWNvZGVJbmRleCwgbWFwLCBjb21wdXRlRXhpdFNpdGVEYXRhKHByb2ZpbGVkQmxvY2ssIGJ5dGVj
b2RlSW5kZXgpKTsKK30KKwogQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0YSBDYWxsTGlua1N0
YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YShDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YTsKQEAg
LTEwNywxMSArMTEyLDIxIEBAIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgQ2FsbExpbmtT
dGEKICAgICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gcHJvZmlsZWRCbG9jay0+dW5s
aW5rZWRDb2RlQmxvY2soKTsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9j
ay0+bV9sb2NrKTsKIAotICAgIGV4aXRTaXRlRGF0YS50YWtlc1Nsb3dQYXRoID0KLSAgICAgICAg
Y29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRl
Y29kZUluZGV4LCBCYWRUeXBlKSkKLSAgICAgICAgfHwgY29kZUJsb2NrLT5oYXNFeGl0U2l0ZShs
b2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRFeGVjdXRhYmxl
KSk7Ci0gICAgZXhpdFNpdGVEYXRhLmJhZEZ1bmN0aW9uID0KLSAgICAgICAgY29kZUJsb2NrLT5o
YXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBC
YWRDZWxsKSk7CisgICAgYXV0byB0YWtlc1Nsb3dQYXRoID0gWyZdIChFeGl0aW5nSW5saW5lS2lu
ZCBpbmxpbmVLaW5kKSAtPiBFeGl0RmxhZyB7CisgICAgICAgIHJldHVybiBFeGl0RmxhZygKKyAg
ICAgICAgICAgIGNvZGVCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhp
dFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkVHlwZSwgRXhpdEZyb21Bbnl0aGluZywgaW5saW5lS2lu
ZCkpCisgICAgICAgICAgICB8fCBjb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpG
cmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZEV4ZWN1dGFibGUsIEV4aXRGcm9tQW55
dGhpbmcsIGlubGluZUtpbmQpKSwKKyAgICAgICAgICAgIGlubGluZUtpbmQpOworICAgIH07Cisg
ICAgCisgICAgYXV0byBiYWRGdW5jdGlvbiA9IFsmXSAoRXhpdGluZ0lubGluZUtpbmQgaW5saW5l
S2luZCkgLT4gRXhpdEZsYWcgeworICAgICAgICByZXR1cm4gRXhpdEZsYWcoY29kZUJsb2NrLT5o
YXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBC
YWRDZWxsLCBFeGl0RnJvbUFueXRoaW5nLCBpbmxpbmVLaW5kKSksIGlubGluZUtpbmQpOworICAg
IH07CisgICAgCisgICAgZXhpdFNpdGVEYXRhLnRha2VzU2xvd1BhdGggfD0gdGFrZXNTbG93UGF0
aChFeGl0RnJvbU5vdElubGluZWQpOworICAgIGV4aXRTaXRlRGF0YS50YWtlc1Nsb3dQYXRoIHw9
IHRha2VzU2xvd1BhdGgoRXhpdEZyb21JbmxpbmVkKTsKKyAgICBleGl0U2l0ZURhdGEuYmFkRnVu
Y3Rpb24gfD0gYmFkRnVuY3Rpb24oRXhpdEZyb21Ob3RJbmxpbmVkKTsKKyAgICBleGl0U2l0ZURh
dGEuYmFkRnVuY3Rpb24gfD0gYmFkRnVuY3Rpb24oRXhpdEZyb21JbmxpbmVkKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29k
ZUluZGV4KTsKQEAgLTEzNSw2ICsxNTAsMTAgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0
dXM6OmNvbXB1dGVGbwogQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9t
Q2FsbExpbmtJbmZvKAogICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENhbGxMaW5rSW5m
byYgY2FsbExpbmtJbmZvKQogeworICAgIC8vIFdlIGNhbm5vdCB0ZWxsIHlvdSBhbnl0aGluZyBh
Ym91dCBkaXJlY3QgY2FsbHMuCisgICAgaWYgKGNhbGxMaW5rSW5mby5pc0RpcmVjdCgpKQorICAg
ICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoKTsKKyAgICAKICAgICBpZiAoY2FsbExpbmtJbmZv
LmNsZWFyZWRCeUdDKCkpCiAgICAgICAgIHJldHVybiB0YWtlc1Nsb3dQYXRoKCk7CiAgICAgCkBA
IC0yMjcsODMgKzI0Niw3NCBAQCBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0
ZUZyCiAKIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAogICAgIGNv
bnN0IENvbmN1cnJlbnRKU0xvY2tlciYgbG9ja2VyLCBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ss
IENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvLAotICAgIEV4aXRTaXRlRGF0YSBleGl0U2l0ZURh
dGEpCisgICAgRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YSwgRXhpdGluZ0lubGluZUtpbmQgaW5s
aW5lS2luZCkKIHsKICAgICBDYWxsTGlua1N0YXR1cyByZXN1bHQgPSBjb21wdXRlRm9yKGxvY2tl
ciwgcHJvZmlsZWRCbG9jaywgY2FsbExpbmtJbmZvKTsKLSAgICBpZiAoZXhpdFNpdGVEYXRhLmJh
ZEZ1bmN0aW9uKSB7Ci0gICAgICAgIGlmIChyZXN1bHQuaXNCYXNlZE9uU3R1YigpKSB7CisgICAg
cmVzdWx0LmFjY291bnRGb3JFeGl0cyhleGl0U2l0ZURhdGEsIGlubGluZUtpbmQpOworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisjZW5kaWYKKwordm9pZCBDYWxsTGlua1N0YXR1czo6YWNjb3VudEZv
ckV4aXRzKEV4aXRTaXRlRGF0YSBleGl0U2l0ZURhdGEsIEV4aXRpbmdJbmxpbmVLaW5kIGlubGlu
ZUtpbmQpCit7CisgICAgaWYgKGV4aXRTaXRlRGF0YS5iYWRGdW5jdGlvbi5pc1NldChpbmxpbmVL
aW5kKSkgeworICAgICAgICBpZiAoaXNCYXNlZE9uU3R1YigpKSB7CiAgICAgICAgICAgICAvLyBJ
ZiB3ZSBoYXZlIGEgcG9seW1vcnBoaWMgc3R1YiwgdGhlbiBoYXZpbmcgYW4gZXhpdCBzaXRlIGlz
IG5vdCBxdWl0ZSBzbyB1c2VmdWwuIEluCiAgICAgICAgICAgICAvLyBtb3N0IGNhc2VzLCB0aGUg
aW5mb3JtYXRpb24gaW4gdGhlIHN0dWIgaGFzIGhpZ2hlciBmaWRlbGl0eS4KLSAgICAgICAgICAg
IHJlc3VsdC5tYWtlQ2xvc3VyZUNhbGwoKTsKKyAgICAgICAgICAgIG1ha2VDbG9zdXJlQ2FsbCgp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gV2UgbWlnaHQgbm90IGhhdmUgYSBw
b2x5bW9ycGhpYyBzdHViIGZvciBhbnkgbnVtYmVyIG9mIHJlYXNvbnMuIFdoZW4gdGhpcyBoYXBw
ZW5zLCB3ZQogICAgICAgICAgICAgLy8gYXJlIGluIGxlc3MgY2VydGFpbiB0ZXJyaXRvcnksIHNv
IGV4aXQgc2l0ZXMgbWVhbiBhIGxvdC4KLSAgICAgICAgICAgIHJlc3VsdC5tX2NvdWxkVGFrZVNs
b3dQYXRoID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fY291bGRUYWtlU2xvd1BhdGggPSB0cnVlOwog
ICAgICAgICB9CiAgICAgfQotICAgIGlmIChleGl0U2l0ZURhdGEudGFrZXNTbG93UGF0aCkKLSAg
ICAgICAgcmVzdWx0Lm1fY291bGRUYWtlU2xvd1BhdGggPSB0cnVlOwogICAgIAotICAgIHJldHVy
biByZXN1bHQ7CisgICAgaWYgKGV4aXRTaXRlRGF0YS50YWtlc1Nsb3dQYXRoLmlzU2V0KGlubGlu
ZUtpbmQpKQorICAgICAgICBtX2NvdWxkVGFrZVNsb3dQYXRoID0gdHJ1ZTsKIH0KLSNlbmRpZgog
Ci12b2lkIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlREZHU3RhdHVzZXMoCi0gICAgQ29kZUJsb2Nr
KiBkZmdDb2RlQmxvY2ssIENhbGxMaW5rU3RhdHVzOjpDb250ZXh0TWFwJiBtYXApCitDYWxsTGlu
a1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKKyAgICBDb2RlQmxvY2sqIHByb2Zp
bGVkQmxvY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwKKyAgICBjb25zdCBJQ1N0YXR1c01hcCYg
YmFzZWxpbmVNYXAsIGNvbnN0IElDU3RhdHVzQ29udGV4dFN0YWNrJiBvcHRpbWl6ZWRTdGFjaykK
IHsKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBSRUxFQVNFX0FTU0VSVChkZmdDb2RlQmxvY2st
PmppdFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpOwotICAgIENvZGVCbG9jayogYmFzZWxpbmVD
b2RlQmxvY2sgPSBkZmdDb2RlQmxvY2stPmFsdGVybmF0aXZlKCk7Ci0gICAgZm9yIChhdXRvIGl0
ZXIgPSBkZmdDb2RlQmxvY2stPmNhbGxMaW5rSW5mb3NCZWdpbigpOyAhIWl0ZXI7ICsraXRlcikg
ewotICAgICAgICBDYWxsTGlua0luZm8mIGluZm8gPSAqKml0ZXI7Ci0gICAgICAgIGlmIChpbmZv
LmlzRGlyZWN0KCkpIHsKLSAgICAgICAgICAgIC8vIElmIHRoZSBERkcgd2FzIGFibGUgdG8gZ2V0
IGEgZGlyZWN0IGNhbGwgdGhlbiBwcm9iYWJseSBzbyB3aWxsIHdlLiBIb3dldmVyLCB0aGVyZSBp
cwotICAgICAgICAgICAgLy8gYSByZW1vdGUgY2hhbmNlIHRoYXQgaXQncyBiYWQgbmV3cyB0byBs
b3NlIGluZm9ybWF0aW9uIGFib3V0IHdoYXQgdGhlIERGRyBkaWQuIFdlJ2QKLSAgICAgICAgICAg
IC8vIGlkZWFsbHkgbGlrZSB0byBqdXN0IGtub3cgdGhhdCB0aGUgREZHIGhhZCBlbWl0dGVkIGEg
RGlyZWN0Q2FsbC4KLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIENv
ZGVPcmlnaW4gY29kZU9yaWdpbiA9IGluZm8uY29kZU9yaWdpbigpOwotICAgICAgICAKLSAgICAg
ICAgLy8gQ2hlY2sgaWYgd2UgaGFkIGFscmVhZHkgcHJldmlvdXNseSBtYWRlIGEgdGVycmlibGUg
bWlzdGFrZSBpbiB0aGUgRlRMIGZvciB0aGlzCi0gICAgICAgIC8vIGNvZGUgb3JpZ2luLiBOb3Rl
IHRoYXQgdGhpcyBpcyBhcHByb3hpbWF0ZSBiZWNhdXNlIHdlIGNvdWxkIGhhdmUgYSBtb25vdmFy
aWFudAotICAgICAgICAvLyBpbmxpbmUgaW4gdGhlIEZUTCB0aGF0IGVuZGVkIHVwIGZhaWxpbmcu
IFdlIHNob3VsZCBmaXggdGhhdCBhdCBzb21lIHBvaW50IGJ5Ci0gICAgICAgIC8vIGhhdmluZyBk
YXRhIHN0cnVjdHVyZXMgdG8gdHJhY2sgdGhlIGNvbnRleHQgb2YgZnJlcXVlbnQgZXhpdHMuIFRo
aXMgaXMgY3VycmVudGx5Ci0gICAgICAgIC8vIGNoYWxsZW5naW5nIGJlY2F1c2UgaXQgd291bGQg
cmVxdWlyZSBjcmVhdGluZyBhIENvZGVPcmlnaW4tYmFzZWQgZGF0YWJhc2UgaW4KLSAgICAgICAg
Ly8gYmFzZWxpbmUgQ29kZUJsb2NrcywgYnV0IHRob3NlIENvZGVCbG9ja3MgZG9uJ3QgcmVhbGx5
IGhhdmUgYSBwbGFjZSB0byBwdXQgdGhlCi0gICAgICAgIC8vIElubGluZUNhbGxGcmFtZXMuCi0g
ICAgICAgIENvZGVCbG9jayogY3VycmVudEJhc2VsaW5lID0KLSAgICAgICAgICAgIGJhc2VsaW5l
Q29kZUJsb2NrRm9yT3JpZ2luQW5kQmFzZWxpbmVDb2RlQmxvY2soY29kZU9yaWdpbiwgYmFzZWxp
bmVDb2RlQmxvY2spOwotICAgICAgICBFeGl0U2l0ZURhdGEgZXhpdFNpdGVEYXRhID0gY29tcHV0
ZUV4aXRTaXRlRGF0YShjdXJyZW50QmFzZWxpbmUsIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7
Ci0gICAgICAgIAotICAgICAgICB7Ci0gICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9j
a2VyKGRmZ0NvZGVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgIG1hcC5hZGQoaW5mby5jb2Rl
T3JpZ2luKCksIGNvbXB1dGVGb3IobG9ja2VyLCBkZmdDb2RlQmxvY2ssIGluZm8sIGV4aXRTaXRl
RGF0YSkpOwotICAgICAgICB9CisgICAgaWYgKENhbGxMaW5rU3RhdHVzSW50ZXJuYWw6OnZlcmJv
c2UpCisgICAgICAgIGRhdGFMb2coIkZpZ3VyaW5nIG91dCBjYWxsIHByb2ZpbGluZyBmb3IgIiwg
Y29kZU9yaWdpbiwgIlxuIik7CisgICAgRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YSA9IGNvbXB1
dGVFeGl0U2l0ZURhdGEocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsK
KyAgICBpZiAoQ2FsbExpbmtTdGF0dXNJbnRlcm5hbDo6dmVyYm9zZSkgeworICAgICAgICBkYXRh
TG9nKCJ0YWtlc1Nsb3dQYXRoID0gIiwgZXhpdFNpdGVEYXRhLnRha2VzU2xvd1BhdGgsICJcbiIp
OworICAgICAgICBkYXRhTG9nKCJiYWRGdW5jdGlvbiA9ICIsIGV4aXRTaXRlRGF0YS5iYWRGdW5j
dGlvbiwgIlxuIik7CiAgICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZGZnQ29kZUJsb2Nr
KTsKLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKICAgICAKLSAgICBpZiAoQ2FsbExpbmtTdGF0
dXNJbnRlcm5hbDo6dmVyYm9zZSkgewotICAgICAgICBkYXRhTG9nKCJDb250ZXh0IG1hcDpcbiIp
OwotICAgICAgICBDb250ZXh0TWFwOjppdGVyYXRvciBpdGVyID0gbWFwLmJlZ2luKCk7Ci0gICAg
ICAgIENvbnRleHRNYXA6Oml0ZXJhdG9yIGVuZCA9IG1hcC5lbmQoKTsKLSAgICAgICAgZm9yICg7
IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKLSAgICAgICAgICAgIGRhdGFMb2coIiAgICAiLCBpdGVy
LT5rZXksICI6XG4iKTsKLSAgICAgICAgICAgIGRhdGFMb2coIiAgICAgICAgIiwgaXRlci0+dmFs
dWUsICJcbiIpOworICAgIGZvciAoY29uc3QgSUNTdGF0dXNDb250ZXh0KiBjb250ZXh0IDogb3B0
aW1pemVkU3RhY2spIHsKKyAgICAgICAgaWYgKENhbGxMaW5rU3RhdHVzSW50ZXJuYWw6OnZlcmJv
c2UpCisgICAgICAgICAgICBkYXRhTG9nKCJFeGFtaW5pbmcgc3RhdHVzIGluICIsIHBvaW50ZXJE
dW1wKGNvbnRleHQtPm9wdGltaXplZENvZGVCbG9jayksICJcbiIpOworICAgICAgICBJQ1N0YXR1
cyBzdGF0dXMgPSBjb250ZXh0LT5nZXQoY29kZU9yaWdpbik7CisgICAgICAgIGlmIChzdGF0dXMu
Y2FsbExpbmtJbmZvKSB7CisgICAgICAgICAgICBpZiAoQ2FsbExpbmtTdGF0dXNJbnRlcm5hbDo6
dmVyYm9zZSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJIYXZlIENhbGxMaW5rSW5mbyB3aXRo
IENvZGVPcmlnaW4gPSAiLCBzdGF0dXMuY2FsbExpbmtJbmZvLT5jb2RlT3JpZ2luKCksICJcbiIp
OworICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb250ZXh0LT5vcHRpbWl6
ZWRDb2RlQmxvY2stPm1fbG9jayk7CisgICAgICAgICAgICBDYWxsTGlua1N0YXR1cyByZXN1bHQg
PSBjb21wdXRlRm9yKAorICAgICAgICAgICAgICAgIGxvY2tlciwgY29udGV4dC0+b3B0aW1pemVk
Q29kZUJsb2NrLCAqc3RhdHVzLmNhbGxMaW5rSW5mbywgZXhpdFNpdGVEYXRhLAorICAgICAgICAg
ICAgICAgIGNvZGVPcmlnaW4uZXhpdGluZ0lubGluZUtpbmQoKSk7CisgICAgICAgICAgICBpZiAo
Q2FsbExpbmtTdGF0dXNJbnRlcm5hbDo6dmVyYm9zZSkKKyAgICAgICAgICAgICAgICBkYXRhTG9n
KCJHb3QgcmVzdWx0OiAiLCByZXN1bHQsICJcbiIpOworICAgICAgICAgICAgaWYgKHJlc3VsdCkK
KyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBpZiAoc3RhdHVzLmNhbGxTdGF0dXMpIHsKKyAgICAgICAgICAgIENhbGxMaW5rU3RhdHVz
IHJlc3VsdCA9ICpzdGF0dXMuY2FsbFN0YXR1czsKKyAgICAgICAgICAgIGlmIChDYWxsTGlua1N0
YXR1c0ludGVybmFsOjp2ZXJib3NlKQorICAgICAgICAgICAgICAgIGRhdGFMb2coIkhhdmUgY2Fs
bFN0YXR1czogIiwgcmVzdWx0LCAiXG4iKTsKKyAgICAgICAgICAgIHJlc3VsdC5hY2NvdW50Rm9y
RXhpdHMoZXhpdFNpdGVEYXRhLCBjb2RlT3JpZ2luLmV4aXRpbmdJbmxpbmVLaW5kKCkpOworICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgIH0KLX0KLQotQ2FsbExpbmtT
dGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgQ29kZUJsb2NrKiBwcm9maWxl
ZEJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sCi0gICAgY29uc3QgQ2FsbExpbmtJbmZvTWFw
JiBiYXNlbGluZU1hcCwgY29uc3QgQ2FsbExpbmtTdGF0dXM6OkNvbnRleHRNYXAmIGRmZ01hcCkK
LXsKLSAgICBhdXRvIGl0ZXIgPSBkZmdNYXAuZmluZChjb2RlT3JpZ2luKTsKLSAgICBpZiAoaXRl
ciAhPSBkZmdNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiBpdGVyLT52YWx1ZTsKICAgICAKLSAg
ICByZXR1cm4gY29tcHV0ZUZvcihwcm9maWxlZEJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5k
ZXgsIGJhc2VsaW5lTWFwKTsKKyAgICBDYWxsTGlua1N0YXR1cyByZXN1bHQgPSBjb21wdXRlRm9y
KHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgYmFzZWxpbmVNYXAsIGV4
aXRTaXRlRGF0YSk7CisgICAgaWYgKENhbGxMaW5rU3RhdHVzSW50ZXJuYWw6OnZlcmJvc2UpCisg
ICAgICAgIGRhdGFMb2coIkNvbXB1dGVkIGZyb20gYmFzZWxpbmU6ICIsIHJlc3VsdCwgIlxuIik7
CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBDYWxsTGlua1N0YXR1czo6c2V0UHJvdmVu
Q29uc3RhbnRDYWxsZWUoQ2FsbFZhcmlhbnQgdmFyaWFudCkKQEAgLTMyNyw2ICszMzcsMjQgQEAg
dm9pZCBDYWxsTGlua1N0YXR1czo6bWFrZUNsb3N1cmVDYWxsKCkKICAgICBtX3ZhcmlhbnRzID0g
ZGVzcGVjaWZpZWRWYXJpYW50TGlzdChtX3ZhcmlhbnRzKTsKIH0KIAorYm9vbCBDYWxsTGlua1N0
YXR1czo6ZmluYWxpemUoKQoreworICAgIGZvciAoQ2FsbFZhcmlhbnQmIHZhcmlhbnQgOiBtX3Zh
cmlhbnRzKSB7CisgICAgICAgIGlmICghdmFyaWFudC5maW5hbGl6ZSgpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDYWxsTGlu
a1N0YXR1czo6ZmlsdGVyKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBtX3ZhcmlhbnRz
LnJlbW92ZUFsbE1hdGNoaW5nKAorICAgICAgICBbJl0gKENhbGxWYXJpYW50JiB2YXJpYW50KSAt
PiBib29sIHsKKyAgICAgICAgICAgIHZhcmlhbnQuZmlsdGVyKHZtLCB2YWx1ZSk7CisgICAgICAg
ICAgICByZXR1cm4gIXZhcmlhbnQ7CisgICAgICAgIH0pOworfQorCiB2b2lkIENhbGxMaW5rU3Rh
dHVzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgaWYgKCFpc1NldCgpKSB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0
dXMuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNs
dWRlICJDYWxsVmFyaWFudC5oIgogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJD
b25jdXJyZW50SlNMb2NrLmgiCisjaW5jbHVkZSAiRXhpdEZsYWcuaCIKKyNpbmNsdWRlICJJQ1N0
YXR1c01hcC5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBA
IC02MCwzOSArNjIsMzMgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAgCi0gICAgc3RhdGlj
IENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoCi0gICAgICAgIENvZGVCbG9jayosIHVuc2lnbmVk
IGJ5dGVjb2RlSW5kZXgsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYpOwotCiAgICAgc3RydWN0IEV4
aXRTaXRlRGF0YSB7Ci0gICAgICAgIGJvb2wgdGFrZXNTbG93UGF0aCB7IGZhbHNlIH07Ci0gICAg
ICAgIGJvb2wgYmFkRnVuY3Rpb24geyBmYWxzZSB9OworICAgICAgICBFeGl0RmxhZyB0YWtlc1Ns
b3dQYXRoOworICAgICAgICBFeGl0RmxhZyBiYWRGdW5jdGlvbjsKICAgICB9OwogICAgIHN0YXRp
YyBFeGl0U2l0ZURhdGEgY29tcHV0ZUV4aXRTaXRlRGF0YShDb2RlQmxvY2sqLCB1bnNpZ25lZCBi
eXRlY29kZUluZGV4KTsKICAgICAKKyAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZv
cihDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBjb25zdCBJQ1N0YXR1c01hcCYs
IEV4aXRTaXRlRGF0YSk7CisgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoQ29k
ZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgY29uc3QgSUNTdGF0dXNNYXAmKTsKKwog
I2lmIEVOQUJMRShKSVQpCiAgICAgLy8gQ29tcHV0ZXMgdGhlIHN0YXR1cyBhc3N1bWluZyB0aGF0
IHdlIG5ldmVyIHRvb2sgc2xvdyBwYXRoIGFuZCBuZXZlciBwcmV2aW91c2x5CiAgICAgLy8gZXhp
dGVkLgogICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYsIENvZGVCbG9jayosIENhbGxMaW5rSW5mbyYpOworICAgIAorICAgIC8vIENv
bXB1dGVzIHRoZSBzdGF0dXMgYWNjb3VudGluZyBmb3IgZXhpdHMuCiAgICAgc3RhdGljIENhbGxM
aW5rU3RhdHVzIGNvbXB1dGVGb3IoCi0gICAgICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYs
IENvZGVCbG9jayosIENhbGxMaW5rSW5mbyYsIEV4aXRTaXRlRGF0YSk7CisgICAgICAgIGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayosIENhbGxMaW5rSW5mbyYsIEV4aXRTaXRl
RGF0YSwgRXhpdGluZ0lubGluZUtpbmQgPSBFeGl0RnJvbUFueUlubGluZUtpbmQpOwogI2VuZGlm
CiAgICAgCi0gICAgdHlwZWRlZiBIYXNoTWFwPENvZGVPcmlnaW4sIENhbGxMaW5rU3RhdHVzLCBD
b2RlT3JpZ2luQXBwcm94aW1hdGVIYXNoPiBDb250ZXh0TWFwOwotICAgIAotICAgIC8vIENvbXB1
dGVzIGFsbCBvZiB0aGUgc3RhdHVzZXMgb2YgdGhlIERGRyBjb2RlIGJsb2NrLiBEb2Vzbid0IGlu
Y2x1ZGUgc3RhdHVzZXMgdGhhdCBoYWQKLSAgICAvLyBubyBpbmZvcm1hdGlvbi4gQ3VycmVudGx5
IHdlIHVzZSB0aGlzIHdoZW4gY29tcGlsaW5nIEZUTCBjb2RlLCB0byBlbmFibGUgcG9seXZhcmlh
bnQKLSAgICAvLyBpbmxpbmluZy4KLSAgICBzdGF0aWMgdm9pZCBjb21wdXRlREZHU3RhdHVzZXMo
Q29kZUJsb2NrKiBkZmdDb2RlQmxvY2ssIENvbnRleHRNYXAmKTsKLSAgICAKLSAgICAvLyBIZWxw
ZXIgdGhhdCBmaXJzdCBjb25zdWx0cyB0aGUgQ29udGV4dE1hcCBhbmQgdGhlbiBkb2VzIGNvbXB1
dGVGb3IoKS4KICAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcigKLSAgICAgICAg
Q29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiwgY29uc3QgQ29u
dGV4dE1hcCYpOworICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBjb25zdCBJQ1N0YXR1
c01hcCYsIGNvbnN0IElDU3RhdHVzQ29udGV4dFN0YWNrJik7CiAgICAgCiAgICAgdm9pZCBzZXRQ
cm92ZW5Db25zdGFudENhbGxlZShDYWxsVmFyaWFudCk7CiAgICAgCiAgICAgYm9vbCBpc1NldCgp
IGNvbnN0IHsgcmV0dXJuICFtX3ZhcmlhbnRzLmlzRW1wdHkoKSB8fCBtX2NvdWxkVGFrZVNsb3dQ
YXRoOyB9CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQo
KTsgfQorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBpc1NldCgp
OyB9CiAgICAgCiAgICAgYm9vbCBjb3VsZFRha2VTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y291bGRUYWtlU2xvd1BhdGg7IH0KICAgICAKQEAgLTExMCw2ICsxMDYsMTAgQEAgcHVibGljOgog
ICAgIAogICAgIHVuc2lnbmVkIG1heE51bUFyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fbWF4
TnVtQXJndW1lbnRzOyB9CiAgICAgCisgICAgYm9vbCBmaW5hbGl6ZSgpOworICAgIAorICAgIHZv
aWQgZmlsdGVyKFZNJiwgSlNWYWx1ZSk7CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgpAQCAtMTIxLDYgKzEyMSw4IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENhbGxMaW5rSW5mbyYpOwogI2VuZGlm
CiAgICAgCisgICAgdm9pZCBhY2NvdW50Rm9yRXhpdHMoRXhpdFNpdGVEYXRhLCBFeGl0aW5nSW5s
aW5lS2luZCk7CisgICAgCiAgICAgQ2FsbFZhcmlhbnRMaXN0IG1fdmFyaWFudHM7CiAgICAgYm9v
bCBtX2NvdWxkVGFrZVNsb3dQYXRoIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNQcm92ZWQgeyBm
YWxzZSB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZh
cmlhbnQuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbFZhcmlhbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDYgKzMxLDM1IEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCitib29sIENhbGxWYXJpYW50OjpmaW5hbGl6ZSgpCit7Cisg
ICAgaWYgKG1fY2FsbGVlICYmICFIZWFwOjppc01hcmtlZChtX2NhbGxlZSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDYWxsVmFyaWFudDo6Zmls
dGVyKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAoISp0aGlzKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgaWYgKCFpc0Nsb3N1cmVDYWxsKCkpIHsKKyAgICAgICAgaWYgKG5v
bkV4ZWN1dGFibGVDYWxsZWUoKSAhPSB2YWx1ZSkKKyAgICAgICAgICAgICp0aGlzID0gQ2FsbFZh
cmlhbnQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoSlNGdW5jdGlv
biogZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgdmFsdWUpKSB7Cisg
ICAgICAgIGlmIChmdW5jdGlvbi0+ZXhlY3V0YWJsZSgpID09IGV4ZWN1dGFibGUoKSkKKyAgICAg
ICAgICAgICp0aGlzID0gQ2FsbFZhcmlhbnQoZnVuY3Rpb24pOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICAqdGhpcyA9IENhbGxWYXJpYW50KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgCisgICAgKnRoaXMgPSBDYWxsVmFyaWFudCgpOworfQorCiB2b2lkIENhbGxWYXJpYW50Ojpk
dW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgaWYgKCEqdGhpcykgewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgJKHJldmlzaW9u
IDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgIHsKICAgICB9
CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsZWU7IH0K
KyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2NhbGxlZTsg
fQogICAgIAogICAgIC8vIElmIHRoaXMgdmFyaWFudCByZWZlcnMgdG8gYSBmdW5jdGlvbiwgY2hh
bmdlIGl0IHRvIHJlZmVyIHRvIGl0cyBleGVjdXRhYmxlLgogICAgIEFMV0FZU19JTkxJTkUgQ2Fs
bFZhcmlhbnQgZGVzcGVjaWZpZWRDbG9zdXJlKCkgY29uc3QKQEAgLTEzNiw2ICsxMzYsMTAgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCisgICAgYm9vbCBm
aW5hbGl6ZSgpOworICAgIAorICAgIHZvaWQgZmlsdGVyKFZNJiwgSlNWYWx1ZSk7CisgICAgCiAg
ICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OwogICAgIAogICAgIGJvb2wgaXNI
YXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MzgsMjQgKzIzOCwyMCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKCkKIAogdm9pZCBD
b2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0KQogewotICAgIFN0dWJJbmZv
TWFwIHN0dWJJbmZvczsKLSAgICBDYWxsTGlua0luZm9NYXAgY2FsbExpbmtJbmZvczsKLSAgICBn
ZXRTdHViSW5mb01hcChzdHViSW5mb3MpOwotICAgIGdldENhbGxMaW5rSW5mb01hcChjYWxsTGlu
a0luZm9zKTsKLSAgICBCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wQmxvY2sodGhpcywg
aW5zdHJ1Y3Rpb25zKCksIG91dCwgc3R1YkluZm9zLCBjYWxsTGlua0luZm9zKTsKKyAgICBJQ1N0
YXR1c01hcCBzdGF0dXNNYXA7CisgICAgZ2V0SUNTdGF0dXNNYXAoc3RhdHVzTWFwKTsKKyAgICBC
eXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wQmxvY2sodGhpcywgaW5zdHJ1Y3Rpb25zKCks
IG91dCwgc3RhdHVzTWFwKTsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmlu
dFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9u
KiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiBzdHViSW5mb3MsIGNvbnN0IENhbGxMaW5rSW5mb01h
cCYgY2FsbExpbmtJbmZvcykKK3ZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJl
YW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0
LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQogewotICAgIEJ5dGVjb2RlRHVtcGVyPENv
ZGVCbG9jaz46OmR1bXBCeXRlY29kZSh0aGlzLCBvdXQsIGJlZ2luLCBpdCwgc3R1YkluZm9zLCBj
YWxsTGlua0luZm9zKTsKKyAgICBCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wQnl0ZWNv
ZGUodGhpcywgb3V0LCBiZWdpbiwgaXQsIHN0YXR1c01hcCk7CiB9CiAKLXZvaWQgQ29kZUJsb2Nr
OjpkdW1wQnl0ZWNvZGUoCi0gICAgUHJpbnRTdHJlYW0mIG91dCwgdW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQsCi0gICAgY29uc3QgU3R1YkluZm9NYXAmIHN0dWJJbmZvcywgY29uc3QgQ2FsbExpbmtJ
bmZvTWFwJiBjYWxsTGlua0luZm9zKQordm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmlu
dFN0cmVhbSYgb3V0LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgSUNTdGF0dXNNYXAm
IHN0YXR1c01hcCkKIHsKICAgICBjb25zdCBJbnN0cnVjdGlvbiogaXQgPSAmaW5zdHJ1Y3Rpb25z
KClbYnl0ZWNvZGVPZmZzZXRdOwotICAgIGR1bXBCeXRlY29kZShvdXQsIGluc3RydWN0aW9ucygp
LmJlZ2luKCksIGl0LCBzdHViSW5mb3MsIGNhbGxMaW5rSW5mb3MpOworICAgIGR1bXBCeXRlY29k
ZShvdXQsIGluc3RydWN0aW9ucygpLmJlZ2luKCksIGl0LCBzdGF0dXNNYXApOwogfQogCiAjZGVm
aW5lIEZPUl9FQUNIX01FTUJFUl9WRUNUT1IobWFjcm8pIFwKQEAgLTExNjYsNiArMTE2Miw5IEBA
IHZvaWQgQ29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhjb24KICNpZiBFTkFCTEUoREZH
X0pJVCkKICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpIHsKICAg
ICAgICAgREZHOjpDb21tb25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENvZGUtPmRmZ0NvbW1vbigp
OworICAgICAgICAKKyAgICAgICAgZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLm1hcmtJZkNo
ZWFwKHZpc2l0b3IpOworICAgICAgICAKICAgICAgICAgZm9yIChhdXRvJiB3ZWFrUmVmZXJlbmNl
IDogZGZnQ29tbW9uLT53ZWFrU3RydWN0dXJlUmVmZXJlbmNlcykKICAgICAgICAgICAgIHdlYWtS
ZWZlcmVuY2UtPm1hcmtJZkNoZWFwKHZpc2l0b3IpOwogCkBAIC0xMzk3LDU3ICsxMzk2LDQzIEBA
IHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICAgICAgICAgZmluYWxp
emVCYXNlbGluZUpJVElubGluZUNhY2hlcygpOwogI2VuZGlmCiAKLSAgICBWTTo6U3BhY2VBbmRG
aW5hbGl6ZXJTZXQ6OmZpbmFsaXplclNldEZvcigqc3Vic3BhY2UoKSkucmVtb3ZlKHRoaXMpOwot
fQotCi12b2lkIENvZGVCbG9jazo6Z2V0U3R1YkluZm9NYXAoY29uc3QgQ29uY3VycmVudEpTTG9j
a2VyJiwgU3R1YkluZm9NYXAmIHJlc3VsdCkKLXsKLSNpZiBFTkFCTEUoSklUKQotICAgIGlmIChK
SVRDb2RlOjppc0pJVChqaXRUeXBlKCkpKQotICAgICAgICB0b0hhc2hNYXAobV9zdHViSW5mb3Ms
IGdldFN0cnVjdHVyZVN0dWJJbmZvQ29kZU9yaWdpbiwgcmVzdWx0KTsKLSNlbHNlCi0gICAgVU5V
U0VEX1BBUkFNKHJlc3VsdCk7Ci0jZW5kaWYKLX0KLQotdm9pZCBDb2RlQmxvY2s6OmdldFN0dWJJ
bmZvTWFwKFN0dWJJbmZvTWFwJiByZXN1bHQpCi17Ci0gICAgQ29uY3VycmVudEpTTG9ja2VyIGxv
Y2tlcihtX2xvY2spOwotICAgIGdldFN0dWJJbmZvTWFwKGxvY2tlciwgcmVzdWx0KTsKLX0KLQot
dm9pZCBDb2RlQmxvY2s6OmdldENhbGxMaW5rSW5mb01hcChjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImLCBDYWxsTGlua0luZm9NYXAmIHJlc3VsdCkKLXsKLSNpZiBFTkFCTEUoSklUKQotICAgIGlm
IChKSVRDb2RlOjppc0pJVChqaXRUeXBlKCkpKQotICAgICAgICB0b0hhc2hNYXAobV9jYWxsTGlu
a0luZm9zLCBnZXRDYWxsTGlua0luZm9Db2RlT3JpZ2luLCByZXN1bHQpOwotI2Vsc2UKLSAgICBV
TlVTRURfUEFSQU0ocmVzdWx0KTsKLSNlbmRpZgotfQorICAgIGlmIChKSVRDb2RlOjppc09wdGlt
aXppbmdKSVQoaml0VHlwZSgpKSkgeworICAgICAgICBERkc6OkNvbW1vbkRhdGEqIGRmZ0NvbW1v
biA9IG1faml0Q29kZS0+ZGZnQ29tbW9uKCk7CisgICAgICAgIGRmZ0NvbW1vbi0+cmVjb3JkZWRT
dGF0dXNlcy5maW5hbGl6ZSgpOworICAgIH0KIAotdm9pZCBDb2RlQmxvY2s6OmdldENhbGxMaW5r
SW5mb01hcChDYWxsTGlua0luZm9NYXAmIHJlc3VsdCkKLXsKLSAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgZ2V0Q2FsbExpbmtJbmZvTWFwKGxvY2tlciwgcmVzdWx0
KTsKKyAgICBWTTo6U3BhY2VBbmRGaW5hbGl6ZXJTZXQ6OmZpbmFsaXplclNldEZvcigqc3Vic3Bh
Y2UoKSkucmVtb3ZlKHRoaXMpOwogfQogCi12b2lkIENvZGVCbG9jazo6Z2V0QnlWYWxJbmZvTWFw
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5VmFsSW5mb01hcCYgcmVzdWx0KQordm9pZCBD
b2RlQmxvY2s6OmdldElDU3RhdHVzTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIElDU3Rh
dHVzTWFwJiByZXN1bHQpCiB7CiAjaWYgRU5BQkxFKEpJVCkKICAgICBpZiAoSklUQ29kZTo6aXNK
SVQoaml0VHlwZSgpKSkgewotICAgICAgICBmb3IgKGF1dG8qIGJ5VmFsSW5mbyA6IG1fYnlWYWxJ
bmZvcykKLSAgICAgICAgICAgIHJlc3VsdC5hZGQoQ29kZU9yaWdpbihieVZhbEluZm8tPmJ5dGVj
b2RlSW5kZXgpLCBieVZhbEluZm8pOworICAgICAgICBmb3IgKFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbyA6IG1fc3R1YkluZm9zKQorICAgICAgICAgICAgcmVzdWx0LmFkZChzdHViSW5mby0+
Y29kZU9yaWdpbiwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLnN0dWJJbmZvID0gc3R1Yklu
Zm87CisgICAgICAgIGZvciAoQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gOiBtX2NhbGxMaW5r
SW5mb3MpCisgICAgICAgICAgICByZXN1bHQuYWRkKGNhbGxMaW5rSW5mby0+Y29kZU9yaWdpbigp
LCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUuY2FsbExpbmtJbmZvID0gY2FsbExpbmtJbmZv
OworICAgICAgICBmb3IgKEJ5VmFsSW5mbyogYnlWYWxJbmZvIDogbV9ieVZhbEluZm9zKQorICAg
ICAgICAgICAgcmVzdWx0LmFkZChDb2RlT3JpZ2luKGJ5VmFsSW5mby0+Ynl0ZWNvZGVJbmRleCks
IElDU3RhdHVzKCkpLml0ZXJhdG9yLT52YWx1ZS5ieVZhbEluZm8gPSBieVZhbEluZm87CisgICAg
ICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0VHlwZSgpKSkgeworICAgICAgICAg
ICAgREZHOjpDb21tb25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENvZGUtPmRmZ0NvbW1vbigpOwor
ICAgICAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2Vz
LmNhbGxzKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQocGFpci5maXJzdCwgSUNTdGF0dXMo
KSkuaXRlcmF0b3ItPnZhbHVlLmNhbGxTdGF0dXMgPSBwYWlyLnNlY29uZC5nZXQoKTsKKyAgICAg
ICAgICAgIGZvciAoYXV0byYgcGFpciA6IGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5nZXRz
KQorICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQocGFpci5maXJzdCwgSUNTdGF0dXMoKSkuaXRl
cmF0b3ItPnZhbHVlLmdldFN0YXR1cyA9IHBhaXIuc2Vjb25kLmdldCgpOworICAgICAgICAgICAg
Zm9yIChhdXRvJiBwYWlyIDogZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLnB1dHMpCisgICAg
ICAgICAgICAgICAgcmVzdWx0LmFkZChwYWlyLmZpcnN0LCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+
dmFsdWUucHV0U3RhdHVzID0gcGFpci5zZWNvbmQuZ2V0KCk7CisgICAgICAgIH0KICAgICB9CiAj
ZWxzZQogICAgIFVOVVNFRF9QQVJBTShyZXN1bHQpOwogI2VuZGlmCiB9CiAKLXZvaWQgQ29kZUJs
b2NrOjpnZXRCeVZhbEluZm9NYXAoQnlWYWxJbmZvTWFwJiByZXN1bHQpCit2b2lkIENvZGVCbG9j
azo6Z2V0SUNTdGF0dXNNYXAoSUNTdGF0dXNNYXAmIHJlc3VsdCkKIHsKICAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgZ2V0QnlWYWxJbmZvTWFwKGxvY2tlciwgcmVz
dWx0KTsKKyAgICBnZXRJQ1N0YXR1c01hcChsb2NrZXIsIHJlc3VsdCk7CiB9CiAKICNpZiBFTkFC
TEUoSklUKQpAQCAtMTUxNCw3ICsxNDk5LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnJlc2V0SklURGF0
YSgpCiAgICAgCiAgICAgLy8gV2UgY2FuIGNsZWFyIHRoZXNlIGJlY2F1c2Ugbm8gb3RoZXIgdGhy
ZWFkIHdpbGwgaGF2ZSByZWZlcmVuY2VzIHRvIGFueSBzdHViIGluZm9zLCBjYWxsCiAgICAgLy8g
bGluayBpbmZvcywgb3IgYnkgdmFsIGluZm9zIGlmIHdlIGRvbid0IGhhdmUgSklUIGNvZGUuIEF0
dGVtcHRzIHRvIHF1ZXJ5IHRoZXNlIGRhdGEKLSAgICAvLyBzdHJ1Y3R1cmVzIHVzaW5nIHRoZSBj
b25jdXJyZW50IEFQSSAoZ2V0U3R1YkluZm9NYXAgYW5kIGZyaWVuZHMpIHdpbGwgcmV0dXJuIG5v
dGhpbmcgaWYgd2UKKyAgICAvLyBzdHJ1Y3R1cmVzIHVzaW5nIHRoZSBjb25jdXJyZW50IEFQSSAo
Z2V0SUNTdGF0dXNNYXAgYW5kIGZyaWVuZHMpIHdpbGwgcmV0dXJuIG5vdGhpbmcgaWYgd2UKICAg
ICAvLyBkb24ndCBoYXZlIEpJVCBjb2RlLgogICAgIG1fc3R1YkluZm9zLmNsZWFyKCk7CiAgICAg
bV9jYWxsTGlua0luZm9zLmNsZWFyKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcg
QEAKICNpbmNsdWRlICJFeHByZXNzaW9uUmFuZ2VJbmZvLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25F
eGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAiSGFuZGxlckluZm8uaCIKKyNpbmNsdWRlICJJQ1N0YXR1
c01hcC5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgog
I2luY2x1ZGUgIkpJVENvZGVNYXAuaCIKQEAgLTk2LDggKzk3LDYgQEAgZW51bSBjbGFzcyBBY2Nl
c3NUeXBlIDogaW50OF90OwogCiBzdHJ1Y3QgQXJpdGhQcm9maWxlOwogCi10eXBlZGVmIEhhc2hN
YXA8Q29kZU9yaWdpbiwgU3RydWN0dXJlU3R1YkluZm8qLCBDb2RlT3JpZ2luQXBwcm94aW1hdGVI
YXNoPiBTdHViSW5mb01hcDsKLQogZW51bSBSZW9wdGltaXphdGlvbk1vZGUgeyBEb250Q291bnRS
ZW9wdGltaXphdGlvbiwgQ291bnRSZW9wdGltaXphdGlvbiB9OwogCiBjbGFzcyBDb2RlQmxvY2sg
OiBwdWJsaWMgSlNDZWxsIHsKQEAgLTE5Niw4ICsxOTUsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGR1bXBCeXRlY29kZSgpOwogICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJik7Ci0g
ICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rpb24q
IGJlZ2luLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBTdHViSW5mb01hcCYgPSBTdHVi
SW5mb01hcCgpLCBjb25zdCBDYWxsTGlua0luZm9NYXAmID0gQ2FsbExpbmtJbmZvTWFwKCkpOwot
ICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0LCBjb25zdCBTdHViSW5mb01hcCYgPSBTdHViSW5mb01hcCgpLCBjb25zdCBDYWxsTGlu
a0luZm9NYXAmID0gQ2FsbExpbmtJbmZvTWFwKCkpOworICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFBy
aW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rp
b24qJiBpdCwgY29uc3QgSUNTdGF0dXNNYXAmID0gSUNTdGF0dXNNYXAoKSk7CisgICAgdm9pZCBk
dW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNv
bnN0IElDU3RhdHVzTWFwJiA9IElDU3RhdHVzTWFwKCkpOwogCiAgICAgdm9pZCBkdW1wRXhjZXB0
aW9uSGFuZGxlcnMoUHJpbnRTdHJlYW0mKTsKICAgICB2b2lkIHByaW50U3RydWN0dXJlcyhQcmlu
dFN0cmVhbSYsIGNvbnN0IEluc3RydWN0aW9uKik7CkBAIC0yMzcsMTQgKzIzNiw4IEBAIHB1Ymxp
YzoKIAogICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5dGVjb2RlT2Zmc2V0RnJvbUNhbGxT
aXRlSW5kZXgoQ2FsbFNpdGVJbmRleCk7CiAKLSAgICB2b2lkIGdldFN0dWJJbmZvTWFwKGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYsIFN0dWJJbmZvTWFwJiByZXN1bHQpOwotICAgIHZvaWQgZ2V0
U3R1YkluZm9NYXAoU3R1YkluZm9NYXAmIHJlc3VsdCk7Ci0gICAgCi0gICAgdm9pZCBnZXRDYWxs
TGlua0luZm9NYXAoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ2FsbExpbmtJbmZvTWFwJiBy
ZXN1bHQpOwotICAgIHZvaWQgZ2V0Q2FsbExpbmtJbmZvTWFwKENhbGxMaW5rSW5mb01hcCYgcmVz
dWx0KTsKLQotICAgIHZvaWQgZ2V0QnlWYWxJbmZvTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tl
ciYsIEJ5VmFsSW5mb01hcCYgcmVzdWx0KTsKLSAgICB2b2lkIGdldEJ5VmFsSW5mb01hcChCeVZh
bEluZm9NYXAmIHJlc3VsdCk7CisgICAgdm9pZCBnZXRJQ1N0YXR1c01hcChjb25zdCBDb25jdXJy
ZW50SlNMb2NrZXImLCBJQ1N0YXR1c01hcCYgcmVzdWx0KTsKKyAgICB2b2lkIGdldElDU3RhdHVz
TWFwKElDU3RhdHVzTWFwJiByZXN1bHQpOwogICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgSklU
QWRkSUMqIGFkZEpJVEFkZElDKEFyaXRoUHJvZmlsZSosIEluc3RydWN0aW9uKik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCShyZXZpc2lv
biAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEyLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEyLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC00Niw3ICs0Niw3IEBAIHVuc2lnbmVkIENvZGVPcmlnaW46
OmlubGluZURlcHRoKCkgY29uc3QKICAgICByZXR1cm4gaW5saW5lRGVwdGhGb3JDYWxsRnJhbWUo
aW5saW5lQ2FsbEZyYW1lKTsKIH0KIAotYm9vbCBDb2RlT3JpZ2luOjppc0FwcHJveGltYXRlbHlF
cXVhbFRvKGNvbnN0IENvZGVPcmlnaW4mIG90aGVyKSBjb25zdAorYm9vbCBDb2RlT3JpZ2luOjpp
c0FwcHJveGltYXRlbHlFcXVhbFRvKGNvbnN0IENvZGVPcmlnaW4mIG90aGVyLCBJbmxpbmVDYWxs
RnJhbWUqIHRlcm1pbmFsKSBjb25zdAogewogICAgIENvZGVPcmlnaW4gYSA9ICp0aGlzOwogICAg
IENvZGVPcmlnaW4gYiA9IG90aGVyOwpAQCAtNjgsMTAgKzY4LDEyIEBAIGJvb2wgQ29kZU9yaWdp
bjo6aXNBcHByb3hpbWF0ZWx5RXF1YWxUbygKICAgICAgICAgaWYgKGEuYnl0ZWNvZGVJbmRleCAh
PSBiLmJ5dGVjb2RlSW5kZXgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAot
ICAgICAgICBpZiAoKCEhYS5pbmxpbmVDYWxsRnJhbWUpICE9ICghIWIuaW5saW5lQ2FsbEZyYW1l
KSkKKyAgICAgICAgYm9vbCBhSGFzSW5saW5lQ2FsbEZyYW1lID0gISFhLmlubGluZUNhbGxGcmFt
ZSAmJiBhLmlubGluZUNhbGxGcmFtZSAhPSB0ZXJtaW5hbDsKKyAgICAgICAgYm9vbCBiSGFzSW5s
aW5lQ2FsbEZyYW1lID0gISFiLmlubGluZUNhbGxGcmFtZTsKKyAgICAgICAgaWYgKGFIYXNJbmxp
bmVDYWxsRnJhbWUgIT0gYkhhc0lubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgCi0gICAgICAgIGlmICghYS5pbmxpbmVDYWxsRnJhbWUpCisgICAgICAg
IGlmICghYUhhc0lubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICAKICAgICAgICAgaWYgKGEuaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay5n
ZXQoKSAhPSBiLmlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkpCkBAIC04
Miw3ICs4NCw3IEBAIGJvb2wgQ29kZU9yaWdpbjo6aXNBcHByb3hpbWF0ZWx5RXF1YWxUbygKICAg
ICB9CiB9CiAKLXVuc2lnbmVkIENvZGVPcmlnaW46OmFwcHJveGltYXRlSGFzaCgpIGNvbnN0Cit1
bnNpZ25lZCBDb2RlT3JpZ2luOjphcHByb3hpbWF0ZUhhc2goSW5saW5lQ2FsbEZyYW1lKiB0ZXJt
aW5hbCkgY29uc3QKIHsKICAgICBpZiAoIWlzU2V0KCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAt
OTcsNiArOTksOSBAQCB1bnNpZ25lZCBDb2RlT3JpZ2luOjphcHByb3hpbWF0ZUhhc2goKSBjCiAg
ICAgICAgIGlmICghY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgICAgICAKKyAgICAgICAgaWYgKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZy
YW1lID09IHRlcm1pbmFsKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgCiAg
ICAgICAgIHJlc3VsdCArPSBXVEY6OlB0ckhhc2g8SlNDZWxsKj46Omhhc2goY29kZU9yaWdpbi5p
bmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLmdldCgpKTsKICAgICAgICAgCiAgICAg
ICAgIGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+ZGlyZWN0Q2FsbGVy
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCShy
ZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9y
aWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMS0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJDb2RlQmxvY2tIYXNoLmgiCisjaW5jbHVkZSAiRXhpdGluZ0lubGluZUtpbmQu
aCIKICNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgpAQCAtODgsMTUgKzg5LDIwIEBAIHN0cnVjdCBDb2RlT3Jp
Z2luIHsKICAgICAKICAgICBzdGF0aWMgdW5zaWduZWQgaW5saW5lRGVwdGhGb3JDYWxsRnJhbWUo
SW5saW5lQ2FsbEZyYW1lKik7CiAgICAgCisgICAgRXhpdGluZ0lubGluZUtpbmQgZXhpdGluZ0lu
bGluZUtpbmQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGlubGluZUNhbGxGcmFtZSA/
IEV4aXRGcm9tSW5saW5lZCA6IEV4aXRGcm9tTm90SW5saW5lZDsKKyAgICB9CisgICAgCiAgICAg
dW5zaWduZWQgaGFzaCgpIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2RlT3Jp
Z2luJiBvdGhlcikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvZGVPcmlnaW4m
IG90aGVyKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogICAgIAogICAgIC8v
IFRoaXMgY2hlY2tzIGlmIHRoZSB0d28gY29kZSBvcmlnaW5zIGNvcnJlc3BvbmQgdG8gdGhlIHNh
bWUgc3RhY2sgdHJhY2Ugc25pcHBldHMsCiAgICAgLy8gYnV0IGlnbm9yZSB3aGV0aGVyIHRoZSBJ
bmxpbmVDYWxsRnJhbWUncyBhcmUgaWRlbnRpY2FsLgotICAgIGJvb2wgaXNBcHByb3hpbWF0ZWx5
RXF1YWxUbyhjb25zdCBDb2RlT3JpZ2luJiBvdGhlcikgY29uc3Q7CisgICAgYm9vbCBpc0FwcHJv
eGltYXRlbHlFcXVhbFRvKGNvbnN0IENvZGVPcmlnaW4mIG90aGVyLCBJbmxpbmVDYWxsRnJhbWUq
IHRlcm1pbmFsID0gbnVsbHB0cikgY29uc3Q7CiAgICAgCi0gICAgdW5zaWduZWQgYXBwcm94aW1h
dGVIYXNoKCkgY29uc3Q7CisgICAgdW5zaWduZWQgYXBwcm94aW1hdGVIYXNoKElubGluZUNhbGxG
cmFtZSogdGVybWluYWwgPSBudWxscHRyKSBjb25zdDsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBGdW5jdGlvbj4KICAgICB2b2lkIHdhbGtVcElubGluZVN0YWNrKGNvbnN0IEZ1bmN0aW9uJik7
CkBAIC0xMDYsNyArMTEyLDcgQEAgc3RydWN0IENvZGVPcmlnaW4gewogICAgIAogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIHZvaWQgZHVt
cEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0KikgY29uc3Q7Ci0KKyAgICAKIHBy
aXZhdGU6CiAgICAgc3RhdGljIElubGluZUNhbGxGcmFtZSogZGVsZXRlZE1hcmtlcigpCiAgICAg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFBy
b2ZpbGUuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogdm9pZCBGcmVxdWVudEV4aXRTaXRl
OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KCJiYyMiLCBt
X2J5dGVjb2RlT2Zmc2V0LCAiOiAiLCBtX2tpbmQsICIvIiwgbV9qaXRUeXBlKTsKKyAgICBvdXQu
cHJpbnQoImJjIyIsIG1fYnl0ZWNvZGVPZmZzZXQsICI6ICIsIG1fa2luZCwgIi8iLCBtX2ppdFR5
cGUsICIvIiwgbV9pbmxpbmVLaW5kKTsKIH0KIAogRXhpdFByb2ZpbGU6OkV4aXRQcm9maWxlKCkg
eyB9CkBAIC00Myw4ICs0MywxMCBAQCBFeGl0UHJvZmlsZTo6fkV4aXRQcm9maWxlKCkgeyB9CiAK
IGJvb2wgRXhpdFByb2ZpbGU6OmFkZChDb2RlQmxvY2sqIG93bmVyLCBjb25zdCBGcmVxdWVudEV4
aXRTaXRlJiBzaXRlKQogeworICAgIFJFTEVBU0VfQVNTRVJUKHNpdGUuaml0VHlwZSgpICE9IEV4
aXRGcm9tQW55dGhpbmcpOworICAgIFJFTEVBU0VfQVNTRVJUKHNpdGUuaW5saW5lS2luZCgpICE9
IEV4aXRGcm9tQW55SW5saW5lS2luZCk7CisKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2Vy
KG93bmVyLT51bmxpbmtlZENvZGVCbG9jaygpLT5tX2xvY2spOwotICAgIEFTU0VSVChzaXRlLmpp
dFR5cGUoKSAhPSBFeGl0RnJvbUFueXRoaW5nKTsKIAogICAgIENPREVCTE9DS19MT0dfRVZFTlQo
b3duZXIsICJmcmVxdWVudEV4aXQiLCAoc2l0ZSkpOwogICAgIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgJKHJldmlzaW9uIDIzMjIy
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ29uY3Vy
cmVudEpTTG9jay5oIgogI2luY2x1ZGUgIkV4aXRLaW5kLmgiCisjaW5jbHVkZSAiRXhpdGluZ0lu
bGluZUtpbmQuaCIKICNpbmNsdWRlICJFeGl0aW5nSklUVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNDEsNiArNDIsNyBAQCBwdWJs
aWM6CiAgICAgICAgIDogbV9ieXRlY29kZU9mZnNldCgwKSAvLyAwID0gZW1wdHkgdmFsdWUKICAg
ICAgICAgLCBtX2tpbmQoRXhpdEtpbmRVbnNldCkKICAgICAgICAgLCBtX2ppdFR5cGUoRXhpdEZy
b21Bbnl0aGluZykKKyAgICAgICAgLCBtX2lubGluZUtpbmQoRXhpdEZyb21BbnlJbmxpbmVLaW5k
KQogICAgIHsKICAgICB9CiAgICAgCkBAIC00OCwxMyArNTAsMTUgQEAgcHVibGljOgogICAgICAg
ICA6IG1fYnl0ZWNvZGVPZmZzZXQoMSkgLy8gMSA9IGRlbGV0ZWQgdmFsdWUKICAgICAgICAgLCBt
X2tpbmQoRXhpdEtpbmRVbnNldCkKICAgICAgICAgLCBtX2ppdFR5cGUoRXhpdEZyb21Bbnl0aGlu
ZykKKyAgICAgICAgLCBtX2lubGluZUtpbmQoRXhpdEZyb21BbnlJbmxpbmVLaW5kKQogICAgIHsK
ICAgICB9CiAgICAgCi0gICAgZXhwbGljaXQgRnJlcXVlbnRFeGl0U2l0ZSh1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCwgRXhpdEtpbmQga2luZCwgRXhpdGluZ0pJVFR5cGUgaml0VHlwZSA9IEV4aXRG
cm9tQW55dGhpbmcpCisgICAgZXhwbGljaXQgRnJlcXVlbnRFeGl0U2l0ZSh1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCwgRXhpdEtpbmQga2luZCwgRXhpdGluZ0pJVFR5cGUgaml0VHlwZSA9IEV4aXRG
cm9tQW55dGhpbmcsIEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQgPSBFeGl0RnJvbUFueUlu
bGluZUtpbmQpCiAgICAgICAgIDogbV9ieXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkKICAg
ICAgICAgLCBtX2tpbmQoa2luZCkKICAgICAgICAgLCBtX2ppdFR5cGUoaml0VHlwZSkKKyAgICAg
ICAgLCBtX2lubGluZUtpbmQoaW5saW5lS2luZCkKICAgICB7CiAgICAgICAgIGlmIChtX2tpbmQg
PT0gQXJndW1lbnRzRXNjYXBlZCkgewogICAgICAgICAgICAgLy8gQ291bnQgdGhpcyBvbmUgZ2xv
YmFsbHkuIEl0IGRvZXNuJ3QgbWF0dGVyIHdoZXJlIGluIHRoZSBjb2RlIGJsb2NrIHRoZSBhcmd1
bWVudHMgZXhjYXBlZDsKQEAgLTY1LDEwICs2OSwxMSBAQCBwdWJsaWM6CiAgICAgCiAgICAgLy8g
VXNlIHRoaXMgY29uc3RydWN0b3IgaWYgeW91IHdpc2ggZm9yIHRoZSBleGl0IHNpdGUgdG8gYmUg
Y291bnRlZCBnbG9iYWxseSB3aXRoaW4gaXRzCiAgICAgLy8gY29kZSBibG9jay4KLSAgICBleHBs
aWNpdCBGcmVxdWVudEV4aXRTaXRlKEV4aXRLaW5kIGtpbmQsIEV4aXRpbmdKSVRUeXBlIGppdFR5
cGUgPSBFeGl0RnJvbUFueXRoaW5nKQorICAgIGV4cGxpY2l0IEZyZXF1ZW50RXhpdFNpdGUoRXhp
dEtpbmQga2luZCwgRXhpdGluZ0pJVFR5cGUgaml0VHlwZSA9IEV4aXRGcm9tQW55dGhpbmcsIEV4
aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQgPSBFeGl0RnJvbUFueUlubGluZUtpbmQpCiAgICAg
ICAgIDogbV9ieXRlY29kZU9mZnNldCgwKQogICAgICAgICAsIG1fa2luZChraW5kKQogICAgICAg
ICAsIG1faml0VHlwZShqaXRUeXBlKQorICAgICAgICAsIG1faW5saW5lS2luZChpbmxpbmVLaW5k
KQogICAgIHsKICAgICB9CiAgICAgCkBAIC04MSw3ICs4Niw4IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIHJldHVybiBtX2J5dGVjb2RlT2Zmc2V0ID09IG90aGVyLm1fYnl0ZWNvZGVPZmZzZXQK
ICAgICAgICAgICAgICYmIG1fa2luZCA9PSBvdGhlci5tX2tpbmQKLSAgICAgICAgICAgICYmIG1f
aml0VHlwZSA9PSBvdGhlci5tX2ppdFR5cGU7CisgICAgICAgICAgICAmJiBtX2ppdFR5cGUgPT0g
b3RoZXIubV9qaXRUeXBlCisgICAgICAgICAgICAmJiBtX2lubGluZUtpbmQgPT0gb3RoZXIubV9p
bmxpbmVLaW5kOwogICAgIH0KICAgICAKICAgICBib29sIHN1YnN1bWVzKGNvbnN0IEZyZXF1ZW50
RXhpdFNpdGUmIG90aGVyKSBjb25zdApAQCAtOTAsMTkgKzk2LDI0IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKG1fa2luZCAhPSBvdGhlci5tX2tpbmQp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChtX2ppdFR5cGUgPT0gRXhp
dEZyb21Bbnl0aGluZykKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICByZXR1cm4g
bV9qaXRUeXBlID09IG90aGVyLm1faml0VHlwZTsKKyAgICAgICAgaWYgKG1faml0VHlwZSAhPSBF
eGl0RnJvbUFueXRoaW5nCisgICAgICAgICAgICAmJiBtX2ppdFR5cGUgIT0gb3RoZXIubV9qaXRU
eXBlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAobV9pbmxpbmVLaW5k
ICE9IEV4aXRGcm9tQW55SW5saW5lS2luZAorICAgICAgICAgICAgJiYgbV9pbmxpbmVLaW5kICE9
IG90aGVyLm1faW5saW5lS2luZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogICAgIAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAg
IHsKLSAgICAgICAgcmV0dXJuIFdURjo6aW50SGFzaChtX2J5dGVjb2RlT2Zmc2V0KSArIG1fa2lu
ZCArIHN0YXRpY19jYXN0PHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RXhpdGluZ0pJVFR5cGU+Piht
X2ppdFR5cGUpICogNzsKKyAgICAgICAgcmV0dXJuIFdURjo6aW50SGFzaChtX2J5dGVjb2RlT2Zm
c2V0KSArIG1fa2luZCArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2ppdFR5cGUpICogNyArIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihtX2lubGluZUtpbmQpICogMTE7CiAgICAgfQogICAgIAogICAg
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9ieXRlY29kZU9mZnNl
dDsgfQogICAgIEV4aXRLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KICAgICBF
eGl0aW5nSklUVHlwZSBqaXRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9qaXRUeXBlOyB9CisgICAg
RXhpdGluZ0lubGluZUtpbmQgaW5saW5lS2luZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lS2lu
ZDsgfQogICAgIAogICAgIEZyZXF1ZW50RXhpdFNpdGUgd2l0aEpJVFR5cGUoRXhpdGluZ0pJVFR5
cGUgaml0VHlwZSkgY29uc3QKICAgICB7CkBAIC0xMTEsNiArMTIyLDEzIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBGcmVxdWVudEV4aXRTaXRlIHdpdGhJ
bmxpbmVLaW5kKEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQpIGNvbnN0CisgICAgeworICAg
ICAgICBGcmVxdWVudEV4aXRTaXRlIHJlc3VsdCA9ICp0aGlzOworICAgICAgICByZXN1bHQubV9p
bmxpbmVLaW5kID0gaW5saW5lS2luZDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisK
ICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKICAgICB7CiAgICAgICAg
IHJldHVybiBtX2tpbmQgPT0gRXhpdEtpbmRVbnNldCAmJiBtX2J5dGVjb2RlT2Zmc2V0OwpAQCAt
MTIyLDYgKzE0MCw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9ieXRlY29kZU9mZnNldDsK
ICAgICBFeGl0S2luZCBtX2tpbmQ7CiAgICAgRXhpdGluZ0pJVFR5cGUgbV9qaXRUeXBlOworICAg
IEV4aXRpbmdJbmxpbmVLaW5kIG1faW5saW5lS2luZDsKIH07CiAKIHN0cnVjdCBGcmVxdWVudEV4
aXRTaXRlSGFzaCB7CkBAIC0xOTIsMTAgKzIxMSwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNF
eGl0U2l0ZShjb25zdCBGcmVxdWVudEV4aXRTaXRlJiBzaXRlKSBjb25zdAogICAgIHsKICAgICAg
ICAgaWYgKHNpdGUuaml0VHlwZSgpID09IEV4aXRGcm9tQW55dGhpbmcpIHsKLSAgICAgICAgICAg
IHJldHVybiBoYXNFeGl0U2l0ZShzaXRlLndpdGhKSVRUeXBlKEV4aXRGcm9tREZHKSkKLSAgICAg
ICAgICAgICAgICB8fCBoYXNFeGl0U2l0ZShzaXRlLndpdGhKSVRUeXBlKEV4aXRGcm9tRlRMKSk7
CisgICAgICAgICAgICByZXR1cm4gaGFzRXhpdFNpdGVXaXRoU3BlY2lmaWNKSVRUeXBlKHNpdGUu
d2l0aEpJVFR5cGUoRXhpdEZyb21ERkcpKQorICAgICAgICAgICAgICAgIHx8IGhhc0V4aXRTaXRl
V2l0aFNwZWNpZmljSklUVHlwZShzaXRlLndpdGhKSVRUeXBlKEV4aXRGcm9tRlRMKSk7CiAgICAg
ICAgIH0KLSAgICAgICAgcmV0dXJuIG1fZnJlcXVlbnRFeGl0U2l0ZXMuZmluZChzaXRlKSAhPSBt
X2ZyZXF1ZW50RXhpdFNpdGVzLmVuZCgpOworICAgICAgICByZXR1cm4gaGFzRXhpdFNpdGVXaXRo
U3BlY2lmaWNKSVRUeXBlKHNpdGUpOwogICAgIH0KICAgICAKICAgICBib29sIGhhc0V4aXRTaXRl
KEV4aXRLaW5kIGtpbmQpIGNvbnN0CkBAIC0yMDgsNiArMjI3LDIwIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGhhc0V4aXRTaXRlKEZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwga2lu
ZCkpOwogICAgIH0KIHByaXZhdGU6CisgICAgYm9vbCBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0pJ
VFR5cGUoY29uc3QgRnJlcXVlbnRFeGl0U2l0ZSYgc2l0ZSkgY29uc3QKKyAgICB7CisgICAgICAg
IGlmIChzaXRlLmlubGluZUtpbmQoKSA9PSBFeGl0RnJvbUFueUlubGluZUtpbmQpIHsKKyAgICAg
ICAgICAgIHJldHVybiBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0lubGluZUtpbmQoc2l0ZS53aXRo
SW5saW5lS2luZChFeGl0RnJvbU5vdElubGluZWQpKQorICAgICAgICAgICAgICAgIHx8IGhhc0V4
aXRTaXRlV2l0aFNwZWNpZmljSW5saW5lS2luZChzaXRlLndpdGhJbmxpbmVLaW5kKEV4aXRGcm9t
SW5saW5lZCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBoYXNFeGl0U2l0ZVdpdGhTcGVj
aWZpY0lubGluZUtpbmQoc2l0ZSk7CisgICAgfQorICAgIAorICAgIGJvb2wgaGFzRXhpdFNpdGVX
aXRoU3BlY2lmaWNJbmxpbmVLaW5kKGNvbnN0IEZyZXF1ZW50RXhpdFNpdGUmIHNpdGUpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gbV9mcmVxdWVudEV4aXRTaXRlcy5maW5kKHNpdGUpICE9
IG1fZnJlcXVlbnRFeGl0U2l0ZXMuZW5kKCk7CisgICAgfQorICAgIAogICAgIEhhc2hTZXQ8RnJl
cXVlbnRFeGl0U2l0ZT4gbV9mcmVxdWVudEV4aXRTaXRlczsKIH07CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0RmxhZy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRGbGFnLmNwcAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEZsYWcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkV4aXRGbGFnLmgiCisKKyNp
bmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CisKK25hbWVzcGFjZSBKU0MgeworCit2b2lkIEV4
aXRGbGFnOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgaWYgKCFtX2JpdHMp
IHsKKyAgICAgICAgb3V0LnByaW50KCJmYWxzZSIpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIAorICAgIENvbW1hUHJpbnRlciBjb21tYSgifCIpOworICAgIGlmIChpc1NldChFeGl0RnJv
bU5vdElubGluZWQpKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICJub3RJbmxpbmVkIik7Cisg
ICAgaWYgKGlzU2V0KEV4aXRGcm9tSW5saW5lZCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwg
ImlubGluZWQiKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0RmxhZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0RmxhZy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0RmxhZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiRXhpdGluZ0lubGluZUtpbmQuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIEV4aXRGbGFnIHsKK3B1YmxpYzoKKyAgICBFeGl0RmxhZygpIHsg
fQorICAgIAorICAgIEV4aXRGbGFnKGJvb2wgdmFsdWUsIEV4aXRpbmdJbmxpbmVLaW5kIGlubGlu
ZUtpbmQpCisgICAgeworICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAKKyAgICAgICAgc3dpdGNoIChpbmxpbmVLaW5kKSB7CisgICAgICAgIGNhc2UgRXhp
dEZyb21BbnlJbmxpbmVLaW5kOgorICAgICAgICAgICAgbV9iaXRzID0gdHJ1ZU5vdElubGluZWQg
fCB0cnVlSW5saW5lZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEV4aXRGcm9t
Tm90SW5saW5lZDoKKyAgICAgICAgICAgIG1fYml0cyA9IHRydWVOb3RJbmxpbmVkOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRXhpdEZyb21JbmxpbmVkOgorICAgICAgICAgICAg
bV9iaXRzID0gdHJ1ZUlubGluZWQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
IH0KKyAgICAKKyAgICBFeGl0RmxhZyBvcGVyYXRvcnwoY29uc3QgRXhpdEZsYWcmIG90aGVyKSBj
b25zdAorICAgIHsKKyAgICAgICAgRXhpdEZsYWcgcmVzdWx0OworICAgICAgICByZXN1bHQubV9i
aXRzID0gbV9iaXRzIHwgb3RoZXIubV9iaXRzOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0KKyAgICAKKyAgICBFeGl0RmxhZyYgb3BlcmF0b3J8PShjb25zdCBFeGl0RmxhZyYgb3RoZXIp
CisgICAgeworICAgICAgICAqdGhpcyA9ICp0aGlzIHwgb3RoZXI7CisgICAgICAgIHJldHVybiAq
dGhpczsKKyAgICB9CisgICAgCisgICAgRXhpdEZsYWcgb3BlcmF0b3ImKGNvbnN0IEV4aXRGbGFn
JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIEV4aXRGbGFnIHJlc3VsdDsKKyAgICAgICAg
cmVzdWx0Lm1fYml0cyA9IG1fYml0cyAmIG90aGVyLm1fYml0czsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisgICAgCisgICAgRXhpdEZsYWcmIG9wZXJhdG9yJj0oY29uc3QgRXhpdEZs
YWcmIG90aGVyKQorICAgIHsKKyAgICAgICAgKnRoaXMgPSAqdGhpcyAmIG90aGVyOworICAgICAg
ICByZXR1cm4gKnRoaXM7CisgICAgfQorICAgIAorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2wo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEhbV9iaXRzOworICAgIH0KKyAgICAKKyAg
ICBib29sIGlzU2V0KEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gISEoKnRoaXMgJiBFeGl0RmxhZyh0cnVlLCBpbmxpbmVLaW5kKSk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworICAgIAorcHJp
dmF0ZToKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgdHJ1ZU5vdElubGluZWQgPSAxOwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCB0cnVlSW5saW5lZCA9IDI7CisgICAgCisgICAg
dWludDhfdCBtX2JpdHMgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRpbmdJbmxpbmVLaW5kLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtp
bmQuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9F
eGl0aW5nSW5saW5lS2luZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiRXhpdGluZ0lubGluZUtpbmQuaCIKKworI2luY2x1ZGUgPHd0Zi9Q
cmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsK
Kwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEV4aXRpbmdJbmxpbmVLaW5k
IHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBFeGl0RnJvbUFueUlubGlu
ZUtpbmQ6CisgICAgICAgIG91dC5wcmludCgiRnJvbUFueUlubGluZUtpbmQiKTsKKyAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgRXhpdEZyb21Ob3RJbmxpbmVkOgorICAgICAgICBvdXQucHJpbnQo
IkZyb21Ob3RJbmxpbmVkIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEV4aXRGcm9tSW5s
aW5lZDoKKyAgICAgICAgb3V0LnByaW50KCJGcm9tSW5saW5lZCIpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGlu
Z0lubGluZUtpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvRXhpdGluZ0lubGluZUtpbmQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgSlNDIHsKKworZW51bSBFeGl0aW5nSW5saW5lS2lu
ZCA6IHVpbnQ4X3QgeworICAgIEV4aXRGcm9tQW55SW5saW5lS2luZCwKKyAgICBFeGl0RnJvbU5v
dElubGluZWQsCisgICAgRXhpdEZyb21JbmxpbmVkLAorfTsKKworfSAvLyBuYW1lc3BhY2UgSlND
CisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBQcmludFN0cmVhbTsKK3ZvaWQgcHJpbnRJbnRl
cm5hbChQcmludFN0cmVhbSYsIEpTQzo6RXhpdGluZ0lubGluZUtpbmQpOworCit9IC8vIG5hbWVz
cGFjZSBXVEYKKworCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRC
eUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEs
MTYgKzUxLDYgQEAgYm9vbCBHZXRCeUlkU3RhdHVzOjphcHBlbmRWYXJpYW50KGNvbnN0IAogICAg
IHJldHVybiBhcHBlbmRJQ1N0YXR1c1ZhcmlhbnQobV92YXJpYW50cywgdmFyaWFudCk7CiB9CiAK
LSNpZiBFTkFCTEUoREZHX0pJVCkKLWJvb2wgR2V0QnlJZFN0YXR1czo6aGFzRXhpdFNpdGUoQ29k
ZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQotewotICAgIFVu
bGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IHByb2ZpbGVkQmxvY2stPnVubGlu
a2VkQ29kZUJsb2NrKCk7Ci0gICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcih1bmxpbmtlZENv
ZGVCbG9jay0+bV9sb2NrKTsKLSAgICByZXR1cm4gdW5saW5rZWRDb2RlQmxvY2stPmhhc0V4aXRT
aXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZENhY2hl
KSkKLSAgICAgICAgfHwgdW5saW5rZWRDb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZH
OjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZENvbnN0YW50Q2FjaGUpKTsKLX0K
LSNlbmRpZgotCiBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQo
Q29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBVbmlxdWVk
U3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNJiB2bSA9ICpwcm9maWxlZEJsb2NrLT52bSgpOwpA
QCAtMTA1LDcgKzk1LDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJv
bQogICAgIH0KIH0KIAotR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENv
ZGVCbG9jayogcHJvZmlsZWRCbG9jaywgU3R1YkluZm9NYXAmIG1hcCwgdW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK0dldEJ5SWRTdGF0dXMgR2V0QnlJZFN0
YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIElDU3RhdHVzTWFwJiBt
YXAsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIEV4aXRG
bGFnIGRpZEV4aXQsIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgY2FsbEV4aXRTaXRlRGF0
YSkKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHByb2ZpbGVkQmxvY2stPm1fbG9j
ayk7CiAKQEAgLTExMywxMiArMTAzLDExIEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6
Y29tcHV0ZUZvcigKIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIHJlc3VsdCA9IGNvbXB1dGVG
b3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAotICAgICAgICBsb2NrZXIsIHByb2Zp
bGVkQmxvY2ssIG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4KSksIHVpZCwKLSAgICAg
ICAgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVFeGl0U2l0ZURhdGEocHJvZmlsZWRCbG9jaywgYnl0
ZWNvZGVJbmRleCkpOworICAgICAgICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssIG1hcC5nZXQoQ29k
ZU9yaWdpbihieXRlY29kZUluZGV4KSkuc3R1YkluZm8sIHVpZCwKKyAgICAgICAgY2FsbEV4aXRT
aXRlRGF0YSk7CiAgICAgCi0gICAgaWYgKCFyZXN1bHQudGFrZXNTbG93UGF0aCgpCi0gICAgICAg
ICYmIGhhc0V4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpKQotICAgICAgICBy
ZXR1cm4gR2V0QnlJZFN0YXR1cyhyZXN1bHQubWFrZXNDYWxscygpID8gTWFrZXNDYWxscyA6IFRh
a2VzU2xvd1BhdGgsIHRydWUpOworICAgIGlmIChkaWRFeGl0KQorICAgICAgICByZXR1cm4gcmVz
dWx0LnNsb3dWZXJzaW9uKCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShtYXApOwogI2VuZGlm
CkBAIC0xMzYsOCArMTI1LDggQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRl
Rm9yUwogICAgICAgICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssIHN0dWJJbmZvLCB1aWQsCiAgICAg
ICAgIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKHByb2ZpbGVkQmxvY2ssIGNv
ZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkpOwogCi0gICAgaWYgKCFyZXN1bHQudGFrZXNTbG93UGF0
aCgpICYmIEdldEJ5SWRTdGF0dXM6Omhhc0V4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGNvZGVPcmln
aW4uYnl0ZWNvZGVJbmRleCkpCi0gICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKHJlc3VsdC5t
YWtlc0NhbGxzKCkgPyBHZXRCeUlkU3RhdHVzOjpNYWtlc0NhbGxzIDogR2V0QnlJZFN0YXR1czo6
VGFrZXNTbG93UGF0aCwgdHJ1ZSk7CisgICAgaWYgKCFyZXN1bHQudGFrZXNTbG93UGF0aCgpICYm
IGhhc0JhZENhY2hlRXhpdFNpdGUocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUlu
ZGV4KSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5zbG93VmVyc2lvbigpOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkBAIC0zMTQsNDAgKzMwMywzNSBA
QCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTCiAjZW5kaWYgLy8gRU5B
QkxFKEpJVCkKIAogR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAotICAg
IENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgQ29kZUJsb2NrKiBkZmdCbG9jaywgU3R1YkluZm9N
YXAmIGJhc2VsaW5lTWFwLAotICAgIFN0dWJJbmZvTWFwJiBkZmdNYXAsIENvZGVPcmlnaW4gY29k
ZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKKyAgICBDb2RlQmxvY2sqIHByb2ZpbGVk
QmxvY2ssIElDU3RhdHVzTWFwJiBiYXNlbGluZU1hcCwKKyAgICBJQ1N0YXR1c0NvbnRleHRTdGFj
ayYgaWNDb250ZXh0U3RhY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCkKIHsKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBpZiAoZGZnQmxvY2spIHsKLSAg
ICAgICAgQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0YSBleGl0U2l0ZURhdGE7Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jay0+
bV9sb2NrKTsKLSAgICAgICAgICAgIGV4aXRTaXRlRGF0YSA9IENhbGxMaW5rU3RhdHVzOjpjb21w
dXRlRXhpdFNpdGVEYXRhKAotICAgICAgICAgICAgICAgIHByb2ZpbGVkQmxvY2ssIGNvZGVPcmln
aW4uYnl0ZWNvZGVJbmRleCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIEdldEJ5SWRT
dGF0dXMgcmVzdWx0OwotICAgICAgICB7Ci0gICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIg
bG9ja2VyKGRmZ0Jsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgcmVzdWx0ID0gY29tcHV0ZUZv
clN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCi0gICAgICAgICAgICAgICAgbG9ja2Vy
LCBkZmdCbG9jaywgZGZnTWFwLmdldChjb2RlT3JpZ2luKSwgdWlkLCBleGl0U2l0ZURhdGEpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHJlc3VsdC50YWtlc1Nsb3dQYXRoKCkpCi0gICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgY2Fs
bEV4aXRTaXRlRGF0YSA9CisgICAgICAgIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVE
YXRhKHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7CisgICAgRXhpdEZs
YWcgZGlkRXhpdCA9IGhhc0JhZENhY2hlRXhpdFNpdGUocHJvZmlsZWRCbG9jaywgY29kZU9yaWdp
bi5ieXRlY29kZUluZGV4KTsKICAgICAKLSAgICAgICAgaWYgKGhhc0V4aXRTaXRlKHByb2ZpbGVk
QmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkpCi0gICAgICAgICAgICByZXR1cm4gR2V0
QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCB0cnVlKTsKKyAgICBmb3IgKElDU3RhdHVzQ29udGV4
dCogY29udGV4dCA6IGljQ29udGV4dFN0YWNrKSB7CisgICAgICAgIElDU3RhdHVzIHN0YXR1cyA9
IGNvbnRleHQtPmdldChjb2RlT3JpZ2luKTsKICAgICAgICAgCi0gICAgICAgIGlmIChyZXN1bHQu
aXNTZXQoKSkKKyAgICAgICAgYXV0byB3aXRoRXhpdHMgPSBbJl0gKGNvbnN0IEdldEJ5SWRTdGF0
dXMmIHJlc3VsdCkgLT4gR2V0QnlJZFN0YXR1cyB7CisgICAgICAgICAgICBpZiAoZGlkRXhpdC5p
c1NldChjb2RlT3JpZ2luLmV4aXRpbmdJbmxpbmVLaW5kKCkpKQorICAgICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQuc2xvd1ZlcnNpb24oKTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0g
ICAgfQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZGZnQmxvY2spOwotICAgIFVOVVNFRF9QQVJB
TShkZmdNYXApOwotI2VuZGlmCisgICAgICAgIH07CiAKLSAgICByZXR1cm4gY29tcHV0ZUZvcihw
cm9maWxlZEJsb2NrLCBiYXNlbGluZU1hcCwgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCB1aWQp
OworICAgICAgICBpZiAoc3RhdHVzLnN0dWJJbmZvKSB7CisgICAgICAgICAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKGNvbnRleHQtPm9wdGltaXplZENvZGVCbG9jay0+bV9sb2NrKTsKKyAg
ICAgICAgICAgIEdldEJ5SWRTdGF0dXMgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91
dEV4aXRTaXRlRmVlZGJhY2soCisgICAgICAgICAgICAgICAgbG9ja2VyLCBjb250ZXh0LT5vcHRp
bWl6ZWRDb2RlQmxvY2ssIHN0YXR1cy5zdHViSW5mbywgdWlkLCBjYWxsRXhpdFNpdGVEYXRhKTsK
KyAgICAgICAgICAgIGlmIChyZXN1bHQuaXNTZXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
d2l0aEV4aXRzKHJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChzdGF0
dXMuZ2V0U3RhdHVzKQorICAgICAgICAgICAgcmV0dXJuIHdpdGhFeGl0cygqc3RhdHVzLmdldFN0
YXR1cyk7CisgICAgfQorICAgICAgICAKKyAgICByZXR1cm4gY29tcHV0ZUZvcihwcm9maWxlZEJs
b2NrLCBiYXNlbGluZU1hcCwgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCB1aWQsIGRpZEV4aXQs
IGNhbGxFeGl0U2l0ZURhdGEpOwogfQogCiBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNv
bXB1dGVGb3IoY29uc3QgU3RydWN0dXJlU2V0JiBzZXQsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQp
CkBAIC00MTQsNiArMzk4LDExIEBAIGJvb2wgR2V0QnlJZFN0YXR1czo6bWFrZXNDYWxscygpIGNv
bnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6
OnNsb3dWZXJzaW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhtYWtlc0Nh
bGxzKCkgPyBNYWtlc0NhbGxzIDogVGFrZXNTbG93UGF0aCwgd2FzU2VlbkluSklUKCkpOworfQor
CiB2b2lkIEdldEJ5SWRTdGF0dXM6OmZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCkKIHsK
ICAgICBpZiAobV9zdGF0ZSAhPSBTaW1wbGUpCkBAIC00MjMsNiArNDEyLDI1IEBAIHZvaWQgR2V0
QnlJZFN0YXR1czo6ZmlsdGVyKGNvbnN0IFN0cnVjdHUKICAgICAgICAgbV9zdGF0ZSA9IE5vSW5m
b3JtYXRpb247CiB9CiAKK3ZvaWQgR2V0QnlJZFN0YXR1czo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit7CisgICAgZm9yIChHZXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IG1fdmFy
aWFudHMpCisgICAgICAgIHZhcmlhbnQubWFya0lmQ2hlYXAodmlzaXRvcik7Cit9CisKK2Jvb2wg
R2V0QnlJZFN0YXR1czo6ZmluYWxpemUoKQoreworICAgIGZvciAoR2V0QnlJZFZhcmlhbnQmIHZh
cmlhbnQgOiBtX3ZhcmlhbnRzKSB7CisgICAgICAgIGlmICghdmFyaWFudC5maW5hbGl6ZSgpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAobV9tb2R1bGVOYW1lc3Bh
Y2VPYmplY3QgJiYgIUhlYXA6OmlzTWFya2VkKG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0KSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX21vZHVsZUVudmlyb25tZW50ICYmICFIZWFw
Ojppc01hcmtlZChtX21vZHVsZUVudmlyb25tZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIEdldEJ5SWRTdGF0dXM6OmR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3QKIHsKICAgICBvdXQucHJpbnQoIigiKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAkocmV2aXNpb24gMjMyMjI3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMjgsNyArMjgsOSBAQAogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgi
CiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIK
KyNpbmNsdWRlICJFeGl0RmxhZy5oIgogI2luY2x1ZGUgIkdldEJ5SWRWYXJpYW50LmgiCisjaW5j
bHVkZSAiSUNTdGF0dXNNYXAuaCIKICNpbmNsdWRlICJTY29wZU9mZnNldC5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKQEAgLTQwLDggKzQyLDYgQEAgY2xhc3MgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q7
CiBjbGFzcyBNb2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOwogY2xhc3MgU3RydWN0dXJlU3R1Yklu
Zm87CiAKLXR5cGVkZWYgSGFzaE1hcDxDb2RlT3JpZ2luLCBTdHJ1Y3R1cmVTdHViSW5mbyosIENv
ZGVPcmlnaW5BcHByb3hpbWF0ZUhhc2g+IFN0dWJJbmZvTWFwOwotCiBjbGFzcyBHZXRCeUlkU3Rh
dHVzIHsKIHB1YmxpYzoKICAgICBlbnVtIFN0YXRlIHsKQEAgLTgxLDEwICs4MSwxMCBAQCBwdWJs
aWM6CiAgICAgICAgIG1fdmFyaWFudHMuYXBwZW5kKHZhcmlhbnQpOwogICAgIH0KICAgICAKLSAg
ICBzdGF0aWMgR2V0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIFN0dWJJbmZvTWFw
JiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7CisgICAg
c3RhdGljIEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCBJQ1N0YXR1c01hcCYs
IHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIEV4aXRGbGFn
LCBDYWxsTGlua1N0YXR1czo6RXhpdFNpdGVEYXRhKTsKICAgICBzdGF0aWMgR2V0QnlJZFN0YXR1
cyBjb21wdXRlRm9yKGNvbnN0IFN0cnVjdHVyZVNldCYsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQp
OwogICAgIAotICAgIHN0YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBi
YXNlbGluZUJsb2NrLCBDb2RlQmxvY2sqIGRmZ0Jsb2NrLCBTdHViSW5mb01hcCYgYmFzZWxpbmVN
YXAsIFN0dWJJbmZvTWFwJiBkZmdNYXAsIENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQpOworICAgIHN0YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNl
bGluZUJsb2NrLCBJQ1N0YXR1c01hcCYgYmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4dFN0YWNr
JiBkZmdDb250ZXh0U3RhY2ssIENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwog
CiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgc3RhdGljIEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZv
clN0dWJJbmZvKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayogYmFzZWxpbmVC
bG9jaywgU3RydWN0dXJlU3R1YkluZm8qLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCog
dWlkKTsKQEAgLTEwNiw2ICsxMDYsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCB0YWtlc1Nsb3dQYXRo
KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBUYWtlc1Nsb3dQYXRoIHx8IG1fc3RhdGUgPT0g
TWFrZXNDYWxscyB8fCBtX3N0YXRlID09IEN1c3RvbSB8fCBtX3N0YXRlID09IE1vZHVsZU5hbWVz
cGFjZTsgfQogICAgIGJvb2wgbWFrZXNDYWxscygpIGNvbnN0OwogICAgIAorICAgIEdldEJ5SWRT
dGF0dXMgc2xvd1ZlcnNpb24oKSBjb25zdDsKKyAgICAKICAgICBib29sIHdhc1NlZW5JbkpJVCgp
IGNvbnN0IHsgcmV0dXJuIG1fd2FzU2VlbkluSklUOyB9CiAgICAgCiAgICAgLy8gQXR0ZW1wdHMg
dG8gcmVkdWNlIHRoZSBzZXQgb2YgdmFyaWFudHMgdG8gZml0IHRoZSBnaXZlbiBzdHJ1Y3R1cmUg
c2V0LiBUaGlzIG1heSBiZSBhcHByb3hpbWF0ZS4KQEAgLTExNSwxMiArMTE3LDEyIEBAIHB1Ymxp
YzoKICAgICBKU01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fbW9kdWxlRW52aXJvbm1lbnQ7IH0KICAgICBTY29wZU9mZnNldCBzY29wZU9mZnNl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NvcGVPZmZzZXQ7IH0KICAgICAKKyAgICB2b2lkIG1hcmtJ
ZkNoZWFwKFNsb3RWaXNpdG9yJik7CisgICAgYm9vbCBmaW5hbGl6ZSgpOyAvLyBSZXR1cm4gdHJ1
ZSBpZiB0aGlzIGdldHMgdG8gbGl2ZS4KKyAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0m
KSBjb25zdDsKICAgICAKIHByaXZhdGU6Ci0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAgc3RhdGlj
IGJvb2wgaGFzRXhpdFNpdGUoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7Ci0j
ZW5kaWYKICNpZiBFTkFCTEUoSklUKQogICAgIEdldEJ5SWRTdGF0dXMoY29uc3QgTW9kdWxlTmFt
ZXNwYWNlQWNjZXNzQ2FzZSYpOwogICAgIHN0YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVGb3JT
dHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCShyZXZpc2lvbiAyMzIyMjcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzUsNiArMTM1LDI0IEBAIGJvb2wgR2V0QnlJZFZhcmlhbnQ6OmF0
dGVtcHRUb01lcmdlKGNvbnMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBHZXRCeUlkVmFy
aWFudDo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgbV9zdHJ1Y3R1
cmVTZXQubWFya0lmQ2hlYXAodmlzaXRvcik7Cit9CisKK2Jvb2wgR2V0QnlJZFZhcmlhbnQ6OmZp
bmFsaXplKCkKK3sKKyAgICBpZiAoIW1fc3RydWN0dXJlU2V0LmlzU3RpbGxBbGl2ZSgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX2NvbmRpdGlvblNldC5hcmVTdGlsbExpdmUo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2NhbGxMaW5rU3RhdHVzICYmICFt
X2NhbGxMaW5rU3RhdHVzLT5maW5hbGl6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKG1faW50cmluc2ljRnVuY3Rpb24gJiYgIUhlYXA6OmlzTWFya2VkKG1faW50cmluc2ljRnVu
Y3Rpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZv
aWQgR2V0QnlJZFZhcmlhbnQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBk
dW1wSW5Db250ZXh0KG91dCwgMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvR2V0QnlJZFZhcmlhbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTczLDYgKzczLDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBhdHRlbXB0VG9NZXJnZShjb25zdCBH
ZXRCeUlkVmFyaWFudCYgb3RoZXIpOwogICAgIAorICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZp
c2l0b3ImKTsKKyAgICBib29sIGZpbmFsaXplKCk7CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50
U3RyZWFtJikgY29uc3Q7CiAgICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVt
cENvbnRleHQqKSBjb25zdDsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JQ1N0YXR1c01hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0lDU3RhdHVzTWFwLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCisKKyNpbmNsdWRl
ICJJbmxpbmVDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJUZXJtaW5hdGVkQ29kZU9yaWdpbi5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworSUNTdGF0dXMgSUNTdGF0dXNDb250ZXh0OjpnZXQoQ29kZU9y
aWdpbiBjb2RlT3JpZ2luKSBjb25zdAoreworICAgIHJldHVybiBtYXAuZ2V0PFRlcm1pbmF0ZWRD
b2RlT3JpZ2luSGFzaFRyYW5zbGF0b3I+KAorICAgICAgICBUZXJtaW5hdGVkQ29kZU9yaWdpbihj
b2RlT3JpZ2luLCBpbmxpbmVDYWxsRnJhbWUpKTsKK30KKworYm9vbCBJQ1N0YXR1c0NvbnRleHQ6
OmlzSW5saW5lZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4pIGNvbnN0Cit7CisgICAgcmV0dXJuIGNv
ZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lICYmIGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lICE9
IGlubGluZUNhbGxGcmFtZTsKK30KKworRXhpdGluZ0lubGluZUtpbmQgSUNTdGF0dXNDb250ZXh0
OjppbmxpbmVLaW5kKENvZGVPcmlnaW4gY29kZU9yaWdpbikgY29uc3QKK3sKKyAgICByZXR1cm4g
aXNJbmxpbmVkKGNvZGVPcmlnaW4pID8gRXhpdEZyb21JbmxpbmVkIDogRXhpdEZyb21Ob3RJbmxp
bmVkOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFwLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKKyNpbmNsdWRlICJFeGl0
aW5nSW5saW5lS2luZC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBDYWxsTGlua0luZm87CitjbGFzcyBDYWxsTGlua1N0YXR1czsKK2NsYXNz
IENvZGVCbG9jazsKK2NsYXNzIEdldEJ5SWRTdGF0dXM7CitjbGFzcyBQdXRCeUlkU3RhdHVzOwor
Y2xhc3MgU3RydWN0dXJlU3R1YkluZm87CitzdHJ1Y3QgQnlWYWxJbmZvOworCitzdHJ1Y3QgSUNT
dGF0dXMgeworICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyB7IG51bGxwdHIgfTsKKyAg
ICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyB7IG51bGxwdHIgfTsKKyAgICBCeVZhbEluZm8q
IGJ5VmFsSW5mbyB7IG51bGxwdHIgfTsKKyAgICBDYWxsTGlua1N0YXR1cyogY2FsbFN0YXR1cyB7
IG51bGxwdHIgfTsKKyAgICBHZXRCeUlkU3RhdHVzKiBnZXRTdGF0dXMgeyBudWxscHRyIH07Cisg
ICAgUHV0QnlJZFN0YXR1cyogcHV0U3RhdHVzIHsgbnVsbHB0ciB9OworfTsKKwordHlwZWRlZiBI
YXNoTWFwPENvZGVPcmlnaW4sIElDU3RhdHVzLCBDb2RlT3JpZ2luQXBwcm94aW1hdGVIYXNoPiBJ
Q1N0YXR1c01hcDsKKworc3RydWN0IElDU3RhdHVzQ29udGV4dCB7CisgICAgSUNTdGF0dXMgZ2V0
KENvZGVPcmlnaW4pIGNvbnN0OworICAgIGJvb2wgaXNJbmxpbmVkKENvZGVPcmlnaW4pIGNvbnN0
OworICAgIEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQoQ29kZU9yaWdpbikgY29uc3Q7Cisg
ICAgCisgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgeyBudWxscHRyIH07Cisg
ICAgQ29kZUJsb2NrKiBvcHRpbWl6ZWRDb2RlQmxvY2sgeyBudWxscHRyIH07CisgICAgSUNTdGF0
dXNNYXAgbWFwOworfTsKKwordHlwZWRlZiBWZWN0b3I8SUNTdGF0dXNDb250ZXh0KiwgOD4gSUNT
dGF0dXNDb250ZXh0U3RhY2s7CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNVdGlscy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzVXRpbHMuY3BwCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c1V0aWxzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJ
Q1N0YXR1c1V0aWxzLmgiCisKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJFeGl0
RmxhZy5oIgorI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitFeGl0RmxhZyBoYXNCYWRDYWNoZUV4aXRTaXRlKENvZGVCbG9jayogcHJvZmlsZWRCbG9j
aywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKK3sKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICBV
bmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBwcm9maWxlZEJsb2NrLT51bmxp
bmtlZENvZGVCbG9jaygpOworICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIodW5saW5rZWRD
b2RlQmxvY2stPm1fbG9jayk7CisgICAgYXV0byBleGl0RmxhZyA9IFsmXSAoRXhpdEtpbmQgZXhp
dEtpbmQpIC0+IEV4aXRGbGFnIHsKKyAgICAgICAgYXV0byB3aXRoSW5saW5lZCA9IFsmXSAoRXhp
dGluZ0lubGluZUtpbmQgaW5saW5lS2luZCkgLT4gRXhpdEZsYWcgeworICAgICAgICAgICAgcmV0
dXJuIEV4aXRGbGFnKHVubGlua2VkQ29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6
RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBleGl0S2luZCwgRXhpdEZyb21Bbnl0aGlu
ZywgaW5saW5lS2luZCkpLCBpbmxpbmVLaW5kKTsKKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJu
IHdpdGhJbmxpbmVkKEV4aXRGcm9tTm90SW5saW5lZCkgfCB3aXRoSW5saW5lZChFeGl0RnJvbUlu
bGluZWQpOworICAgIH07CisgICAgcmV0dXJuIGV4aXRGbGFnKEJhZENhY2hlKSB8IGV4aXRGbGFn
KEJhZENvbnN0YW50Q2FjaGUpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9j
ayk7CisgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOworICAgIHJldHVybiBFeGl0Rmxh
ZygpOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNVdGlscy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c1V0aWxzLmgJKHJldmlzaW9uIDIzMjIy
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c1V0aWxzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
ICJFeGl0RmxhZy5oIgorCiBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVmFy
aWFudFZlY3RvclR5cGUsIHR5cGVuYW1lIFZhcmlhbnRUeXBlPgpAQCAtNTksNSArNjEsNyBAQCB2
b2lkIGZpbHRlcklDU3RhdHVzVmFyaWFudHMoVmFyaWFudFZlY3RvCiAgICAgICAgIH0pOwogfQog
CitFeGl0RmxhZyBoYXNCYWRDYWNoZUV4aXRTaXRlKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywg
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMu
Y3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5zdGFuY2VPZlN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEzICszOSwxMyBAQCB2
b2lkIEluc3RhbmNlT2ZTdGF0dXM6OmFwcGVuZFZhcmlhbnQoY29uCiB9CiAKIEluc3RhbmNlT2ZT
dGF0dXMgSW5zdGFuY2VPZlN0YXR1czo6Y29tcHV0ZUZvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgU3R1YkluZm9NYXAmIGluZm9NYXAsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIElDU3RhdHVzTWFwJiBpbmZvTWFwLCB1bnNpZ25lZCBieXRl
Y29kZUluZGV4KQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5t
X2xvY2spOwogICAgIAogICAgIEluc3RhbmNlT2ZTdGF0dXMgcmVzdWx0OwogI2lmIEVOQUJMRShE
RkdfSklUKQotICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mbyhsb2NrZXIsIGluZm9NYXAu
Z2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkpKTsKKyAgICByZXN1bHQgPSBjb21wdXRlRm9y
U3R1YkluZm8obG9ja2VyLCBpbmZvTWFwLmdldChDb2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgpKS5z
dHViSW5mbyk7CiAKICAgICBpZiAoIXJlc3VsdC50YWtlc1Nsb3dQYXRoKCkpIHsKICAgICAgICAg
VW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gY29kZUJsb2NrLT51bmxpbmtl
ZENvZGVCbG9jaygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3Rh
bmNlT2ZTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSW5zdGFuY2VPZlN0YXR1cy5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAiQ29uY3Vy
cmVudEpTTG9jay5oIgorI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCiAjaW5jbHVkZSAiSW5zdGFu
Y2VPZlZhcmlhbnQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zNSw4ICszNiw2IEBAIGNsYXNz
IEFjY2Vzc0Nhc2U7CiBjbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsK
IAotdHlwZWRlZiBIYXNoTWFwPENvZGVPcmlnaW4sIFN0cnVjdHVyZVN0dWJJbmZvKiwgQ29kZU9y
aWdpbkFwcHJveGltYXRlSGFzaD4gU3R1YkluZm9NYXA7Ci0KIGNsYXNzIEluc3RhbmNlT2ZTdGF0
dXMgewogcHVibGljOgogICAgIGVudW0gU3RhdGUgewpAQCAtNjEsNyArNjAsNyBAQCBwdWJsaWM6
CiAgICAgICAgIEFTU0VSVChzdGF0ZSA9PSBOb0luZm9ybWF0aW9uIHx8IHN0YXRlID09IFRha2Vz
U2xvd1BhdGgpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgSW5zdGFuY2VPZlN0YXR1cyBjb21w
dXRlRm9yKENvZGVCbG9jayosIFN0dWJJbmZvTWFwJiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7
CisgICAgc3RhdGljIEluc3RhbmNlT2ZTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCBJQ1N0
YXR1c01hcCYsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwogICAgIAogI2lmIEVOQUJMRShERkdf
SklUKQogICAgIHN0YXRpYyBJbnN0YW5jZU9mU3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mbyhjb25z
dCBDb25jdXJyZW50SlNMb2NrZXImLCBTdHJ1Y3R1cmVTdHViSW5mbyopOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWlu
LmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
b2x5UHJvdG9BY2Nlc3NDaGFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBKU0NlbGw7CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsK
IGNsYXNzIEpTT2JqZWN0OwogY2xhc3MgUHJvcGVydHlTbG90OwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMjMy
MjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgi
CiAjaW5jbHVkZSAiQ29tcGxleEdldFN0YXR1cy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlckFj
Y2Vzc0Nhc2UuaCIKKyNpbmNsdWRlICJJQ1N0YXR1c1V0aWxzLmgiCiAjaW5jbHVkZSAiTExJbnRE
YXRhLmgiCiAjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKQEAgLTU1LDEyICs1Niw5IEBAIGJvb2wgUHV0QnlJZFN0YXR1czo6YXBwZW5kVmFy
aWFudChjb25zdCAKIH0KIAogI2lmIEVOQUJMRShERkdfSklUKQotYm9vbCBQdXRCeUlkU3RhdHVz
OjpoYXNFeGl0U2l0ZShDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2Rl
SW5kZXgpCitFeGl0RmxhZyBQdXRCeUlkU3RhdHVzOjpoYXNFeGl0U2l0ZShDb2RlQmxvY2sqIHBy
b2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiB7Ci0gICAgVW5saW5rZWRDb2Rl
QmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gcHJvZmlsZWRCbG9jay0+dW5saW5rZWRDb2RlQmxv
Y2soKTsKLSAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHVubGlua2VkQ29kZUJsb2NrLT5t
X2xvY2spOwotICAgIHJldHVybiB1bmxpbmtlZENvZGVCbG9jay0+aGFzRXhpdFNpdGUobG9ja2Vy
LCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkQ2FjaGUpKQotICAgICAg
ICB8fCB1bmxpbmtlZENvZGVCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50
RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkQ29uc3RhbnRDYWNoZSkpOworICAgIHJldHVybiBo
YXNCYWRDYWNoZUV4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpOwogfQogI2Vu
ZGlmCiAKQEAgLTExMCw3ICsxMDgsNyBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNv
bXB1dGVGcm9tCiAgICAgICAgIHN0cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBjb25kaXRpb25TZXQs
IG9mZnNldCwgbmV3U3RydWN0dXJlLT5pbmZlcnJlZFR5cGVEZXNjcmlwdG9yRm9yKHVpZCkpOwog
fQogCi1QdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBw
cm9maWxlZEJsb2NrLCBTdHViSW5mb01hcCYgbWFwLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBV
bmlxdWVkU3RyaW5nSW1wbCogdWlkKQorUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21w
dXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgSUNTdGF0dXNNYXAmIG1hcCwgdW5zaWdu
ZWQgYnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgRXhpdEZsYWcgZGlkRXhp
dCwgQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0YSBjYWxsRXhpdFNpdGVEYXRhKQogewogICAg
IENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKICAgICAK
QEAgLTExOCwxMyArMTE2LDEyIEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0
ZUZvcigKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAgICAgVU5VU0VEX1BBUkFN
KHVpZCk7CiAjaWYgRU5BQkxFKERGR19KSVQpCi0gICAgaWYgKGhhc0V4aXRTaXRlKHByb2ZpbGVk
QmxvY2ssIGJ5dGVjb2RlSW5kZXgpKQorICAgIGlmIChkaWRFeGl0KQogICAgICAgICByZXR1cm4g
UHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKICAgICAKLSAgICBTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8gPSBtYXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkpOworICAgIFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA9IG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUlu
ZGV4KSkuc3R1YkluZm87CiAgICAgUHV0QnlJZFN0YXR1cyByZXN1bHQgPSBjb21wdXRlRm9yU3R1
YkluZm8oCi0gICAgICAgIGxvY2tlciwgcHJvZmlsZWRCbG9jaywgc3R1YkluZm8sIHVpZCwKLSAg
ICAgICAgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVFeGl0U2l0ZURhdGEocHJvZmlsZWRCbG9jaywg
Ynl0ZWNvZGVJbmRleCkpOworICAgICAgICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssIHN0dWJJbmZv
LCB1aWQsIGNhbGxFeGl0U2l0ZURhdGEpOwogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1
cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCB1aWQpOwog
ICAgIApAQCAtMjY0LDM4ICsyNjEsMzQgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpj
b21wdXRlRm9yUwogfQogI2VuZGlmCiAKLVB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29t
cHV0ZUZvcihDb2RlQmxvY2sqIGJhc2VsaW5lQmxvY2ssIENvZGVCbG9jayogZGZnQmxvY2ssIFN0
dWJJbmZvTWFwJiBiYXNlbGluZU1hcCwgU3R1YkluZm9NYXAmIGRmZ01hcCwgQ29kZU9yaWdpbiBj
b2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQorUHV0QnlJZFN0YXR1cyBQdXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAm
IGJhc2VsaW5lTWFwLCBJQ1N0YXR1c0NvbnRleHRTdGFjayYgY29udGV4dFN0YWNrLCBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7Ci0jaWYgRU5BQkxFKERG
R19KSVQpCi0gICAgaWYgKGRmZ0Jsb2NrKSB7Ci0gICAgICAgIGlmIChoYXNFeGl0U2l0ZShiYXNl
bGluZUJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpKQotICAgICAgICAgICAgcmV0dXJu
IFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCk7Ci0gICAgICAgIENhbGxMaW5rU3RhdHVzOjpF
eGl0U2l0ZURhdGEgZXhpdFNpdGVEYXRhOwotICAgICAgICB7Ci0gICAgICAgICAgICBDb25jdXJy
ZW50SlNMb2NrZXIgbG9ja2VyKGJhc2VsaW5lQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICBl
eGl0U2l0ZURhdGEgPSBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YSgKLSAgICAg
ICAgICAgICAgICBiYXNlbGluZUJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpOwotICAg
ICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgUHV0QnlJZFN0YXR1cyByZXN1bHQ7Ci0gICAg
ICAgIHsKLSAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoZGZnQmxvY2stPm1f
bG9jayk7Ci0gICAgICAgICAgICByZXN1bHQgPSBjb21wdXRlRm9yU3R1YkluZm8oCi0gICAgICAg
ICAgICAgICAgbG9ja2VyLCBkZmdCbG9jaywgZGZnTWFwLmdldChjb2RlT3JpZ2luKSwgdWlkLCBl
eGl0U2l0ZURhdGEpOworICAgIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgY2FsbEV4aXRT
aXRlRGF0YSA9CisgICAgICAgIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKGJh
c2VsaW5lQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7CisgICAgRXhpdEZsYWcgZGlk
RXhpdCA9IGhhc0V4aXRTaXRlKGJhc2VsaW5lQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRl
eCk7CisgICAgCisgICAgZm9yIChJQ1N0YXR1c0NvbnRleHQqIGNvbnRleHQgOiBjb250ZXh0U3Rh
Y2spIHsKKyAgICAgICAgSUNTdGF0dXMgc3RhdHVzID0gY29udGV4dC0+Z2V0KGNvZGVPcmlnaW4p
OworICAgICAgICAKKyAgICAgICAgYXV0byB3aXRoRXhpdHMgPSBbJl0gKGNvbnN0IFB1dEJ5SWRT
dGF0dXMmIHJlc3VsdCkgLT4gUHV0QnlJZFN0YXR1cyB7CisgICAgICAgICAgICBpZiAoZGlkRXhp
dC5pc1NldChjb2RlT3JpZ2luLmV4aXRpbmdJbmxpbmVLaW5kKCkpKQorICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQuc2xvd1ZlcnNpb24oKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICBpZiAoc3RhdHVzLnN0dWJJbmZvKSB7Cisg
ICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvbnRleHQtPm9wdGltaXplZENv
ZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgIFB1dEJ5SWRTdGF0dXMgcmVzdWx0ID0gY29t
cHV0ZUZvclN0dWJJbmZvKAorICAgICAgICAgICAgICAgIGxvY2tlciwgY29udGV4dC0+b3B0aW1p
emVkQ29kZUJsb2NrLCBzdGF0dXMuc3R1YkluZm8sIHVpZCwgY2FsbEV4aXRTaXRlRGF0YSk7Cisg
ICAgICAgICAgICBpZiAocmVzdWx0LmlzU2V0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHdp
dGhFeGl0cyhyZXN1bHQpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICAvLyBXZSB1c2Ug
VGFrZXNTbG93UGF0aCBpbiBzb21lIGNhc2VzIHdoZXJlIHRoZSBzdHViIHdhcyB1bnNldC4gVGhh
dCdzIHdlaXJkIGFuZAotICAgICAgICAvLyBpdCB3b3VsZCBiZSBiZXR0ZXIgbm90IHRvIGRvIHRo
YXQuIEJ1dCBpdCBtZWFucyB0aGF0IHdlIGhhdmUgdG8gZGVmZW5kCi0gICAgICAgIC8vIG91cnNl
bHZlcyBoZXJlLgotICAgICAgICBpZiAocmVzdWx0LmlzU2ltcGxlKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgICAgICBpZiAoc3RhdHVzLnB1dFN0YXR1cykKKyAgICAgICAgICAg
IHJldHVybiB3aXRoRXhpdHMoKnN0YXR1cy5wdXRTdGF0dXMpOwogICAgIH0KLSNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKGRmZ0Jsb2NrKTsKLSAgICBVTlVTRURfUEFSQU0oZGZnTWFwKTsKLSNlbmRp
ZgogCi0gICAgcmV0dXJuIGNvbXB1dGVGb3IoYmFzZWxpbmVCbG9jaywgYmFzZWxpbmVNYXAsIGNv
ZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgdWlkKTsKKyAgICByZXR1cm4gY29tcHV0ZUZvcihiYXNl
bGluZUJsb2NrLCBiYXNlbGluZU1hcCwgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCB1aWQsIGRp
ZEV4aXQsIGNhbGxFeGl0U2l0ZURhdGEpOwogfQogCiBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0
dXM6OmNvbXB1dGVGb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RydWN0
dXJlU2V0JiBzZXQsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIGJvb2wgaXNEaXJlY3QpCkBAIC0z
OTgsNiArMzkxLDM1IEBAIGJvb2wgUHV0QnlJZFN0YXR1czo6bWFrZXNDYWxscygpIGNvbnN0CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCitQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OnNsb3dW
ZXJzaW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhtYWtlc0NhbGxzKCkg
PyBNYWtlc0NhbGxzIDogVGFrZXNTbG93UGF0aCk7Cit9CisKK3ZvaWQgUHV0QnlJZFN0YXR1czo6
bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgZm9yIChQdXRCeUlkVmFy
aWFudCYgdmFyaWFudCA6IG1fdmFyaWFudHMpCisgICAgICAgIHZhcmlhbnQubWFya0lmQ2hlYXAo
dmlzaXRvcik7Cit9CisKK2Jvb2wgUHV0QnlJZFN0YXR1czo6ZmluYWxpemUoKQoreworICAgIGZv
ciAoUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKSB7CisgICAgICAgIGlmICgh
dmFyaWFudC5maW5hbGl6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBQdXRCeUlkU3RhdHVzOjpmaWx0ZXIoY29uc3QgU3Ry
dWN0dXJlU2V0JiBzZXQpCit7CisgICAgaWYgKG1fc3RhdGUgIT0gU2ltcGxlKQorICAgICAgICBy
ZXR1cm47CisgICAgZmlsdGVySUNTdGF0dXNWYXJpYW50cyhtX3ZhcmlhbnRzLCBzZXQpOworICAg
IGlmIChtX3ZhcmlhbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgbV9zdGF0ZSA9IE5vSW5mb3JtYXRp
b247Cit9CisKIHZvaWQgUHV0QnlJZFN0YXR1czo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dAogewogICAgIHN3aXRjaCAobV9zdGF0ZSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw2ICsyNiw4IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNhbGxMaW5rU3Rh
dHVzLmgiCisjaW5jbHVkZSAiRXhpdEZsYWcuaCIKKyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgog
I2luY2x1ZGUgIlB1dEJ5SWRWYXJpYW50LmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNjksMTAg
KzcxLDEwIEBAIHB1YmxpYzoKICAgICAgICAgbV92YXJpYW50cy5hcHBlbmQodmFyaWFudCk7CiAg
ICAgfQogICAgIAotICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2Nr
KiwgU3R1YkluZm9NYXAmLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1w
bCogdWlkKTsKKyAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayos
IElDU3RhdHVzTWFwJiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwq
IHVpZCwgRXhpdEZsYWcsIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEpOwogICAgIHN0YXRp
YyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJ1Y3R1
cmVTZXQmLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBib29sIGlzRGlyZWN0KTsKICAgICAKLSAg
ICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9j
aywgQ29kZUJsb2NrKiBkZmdCbG9jaywgU3R1YkluZm9NYXAmIGJhc2VsaW5lTWFwLCBTdHViSW5m
b01hcCYgZGZnTWFwLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKKyAgICBz
dGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywg
SUNTdGF0dXNNYXAmIGJhc2VsaW5lTWFwLCBJQ1N0YXR1c0NvbnRleHRTdGFjayYgY29udGV4dFN0
YWNrLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKIAogI2lmIEVOQUJMRShK
SVQpCiAgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvclN0dWJJbmZvKGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgU3RydWN0dXJlU3R1
YkluZm8qLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKQEAgLTg1LDE3ICs4
NywyMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1NpbXBsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGUgPT0gU2ltcGxlOyB9CiAgICAgYm9vbCB0YWtlc1Nsb3dQYXRoKCkgY29uc3QgeyByZXR1cm4g
bV9zdGF0ZSA9PSBUYWtlc1Nsb3dQYXRoIHx8IG1fc3RhdGUgPT0gTWFrZXNDYWxsczsgfQogICAg
IGJvb2wgbWFrZXNDYWxscygpIGNvbnN0OworICAgIFB1dEJ5SWRTdGF0dXMgc2xvd1ZlcnNpb24o
KSBjb25zdDsKICAgICAKICAgICBzaXplX3QgbnVtVmFyaWFudHMoKSBjb25zdCB7IHJldHVybiBt
X3ZhcmlhbnRzLnNpemUoKTsgfQogICAgIGNvbnN0IFZlY3RvcjxQdXRCeUlkVmFyaWFudCwgMT4m
IHZhcmlhbnRzKCkgY29uc3QgeyByZXR1cm4gbV92YXJpYW50czsgfQogICAgIGNvbnN0IFB1dEJ5
SWRWYXJpYW50JiBhdChzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFudHNbaW5k
ZXhdOyB9CiAgICAgY29uc3QgUHV0QnlJZFZhcmlhbnQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4
KSBjb25zdCB7IHJldHVybiBhdChpbmRleCk7IH0KICAgICAKKyAgICB2b2lkIG1hcmtJZkNoZWFw
KFNsb3RWaXNpdG9yJik7CisgICAgYm9vbCBmaW5hbGl6ZSgpOworICAgIHZvaWQgZmlsdGVyKGNv
bnN0IFN0cnVjdHVyZVNldCYpOworICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNv
bnN0OwogICAgIAogcHJpdmF0ZToKICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBzdGF0aWMgYm9v
bCBoYXNFeGl0U2l0ZShDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKyAgICBz
dGF0aWMgRXhpdEZsYWcgaGFzRXhpdFNpdGUoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoSklUKQogICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVz
IGNvbXB1dGVGb3JTdHViSW5mbygKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QdXRCeUlkVmFyaWFudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yMDYsNiArMjA2LDI2IEBAIGJvb2wgUHV0QnlJZFZhcmlhbnQ6OmF0dGVtcHRUb01l
cmdlVHJhbnMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBQdXRCeUlkVmFyaWFudDo6bWFy
a0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgbV9vbGRTdHJ1Y3R1cmUubWFy
a0lmQ2hlYXAodmlzaXRvcik7CisgICAgaWYgKG1fbmV3U3RydWN0dXJlKQorICAgICAgICBtX25l
d1N0cnVjdHVyZS0+bWFya0lmQ2hlYXAodmlzaXRvcik7Cit9CisKK2Jvb2wgUHV0QnlJZFZhcmlh
bnQ6OmZpbmFsaXplKCkKK3sKKyAgICBpZiAoIW1fb2xkU3RydWN0dXJlLmlzU3RpbGxBbGl2ZSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fbmV3U3RydWN0dXJlICYmICFIZWFw
Ojppc01hcmtlZChtX25ld1N0cnVjdHVyZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIW1fY29uZGl0aW9uU2V0LmFyZVN0aWxsTGl2ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKG1fY2FsbExpbmtTdGF0dXMgJiYgIW1fY2FsbExpbmtTdGF0dXMtPmZpbmFsaXpl
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBQ
dXRCeUlkVmFyaWFudDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIGR1bXBJ
bkNvbnRleHQob3V0LCAwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRCeUlkVmFyaWFudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkVmFyaWFudC5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03
MywxNyArNzMsMTcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9vbGRTdHJ1Y3R1cmU7CiAg
ICAgfQogICAgIAotICAgIGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0KCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBzdHJ1Y3R1cmUoKTsKLSAgICB9Ci0gICAgCiAgICAgY29u
c3QgU3RydWN0dXJlU2V0JiBvbGRTdHJ1Y3R1cmUoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNT
RVJUKGtpbmQoKSA9PSBUcmFuc2l0aW9uIHx8IGtpbmQoKSA9PSBSZXBsYWNlIHx8IGtpbmQoKSA9
PSBTZXR0ZXIpOwogICAgICAgICByZXR1cm4gbV9vbGRTdHJ1Y3R1cmU7CiAgICAgfQogICAgIAor
ICAgIGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0KCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBvbGRTdHJ1Y3R1cmUoKTsKKyAgICB9CisgICAgCiAgICAgU3RydWN0dXJlU2V0
JiBvbGRTdHJ1Y3R1cmUoKQogICAgIHsKICAgICAgICAgQVNTRVJUKGtpbmQoKSA9PSBUcmFuc2l0
aW9uIHx8IGtpbmQoKSA9PSBSZXBsYWNlIHx8IGtpbmQoKSA9PSBTZXR0ZXIpOwpAQCAtMTI5LDYg
KzEyOSw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgYXR0ZW1wdFRvTWVyZ2UoY29uc3QgUHV0QnlJ
ZFZhcmlhbnQmIG90aGVyKTsKICAgICAKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9y
Jik7CisgICAgYm9vbCBmaW5hbGl6ZSgpOworICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0OwogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250
ZXh0KikgY29uc3Q7CiAKQEAgLTEzNyw3ICsxNDAsNyBAQCBwcml2YXRlOgogICAgIAogICAgIEtp
bmQgbV9raW5kOwogICAgIFN0cnVjdHVyZVNldCBtX29sZFN0cnVjdHVyZTsKLSAgICBTdHJ1Y3R1
cmUqIG1fbmV3U3RydWN0dXJlOworICAgIFN0cnVjdHVyZSogbV9uZXdTdHJ1Y3R1cmUgeyBudWxs
cHRyIH07CiAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb25TZXQgbV9jb25kaXRpb25TZXQ7CiAg
ICAgUHJvcGVydHlPZmZzZXQgbV9vZmZzZXQ7CiAgICAgSW5mZXJyZWRUeXBlOjpEZXNjcmlwdG9y
IG1fcmVxdWlyZWRUeXBlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jl
Y29yZGVkU3RhdHVzZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlY29yZGVkU3RhdHVzZXMu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1JlY29yZGVkU3RhdHVzZXMmIFJlY29yZGVkU3RhdHVz
ZXM6Om9wZXJhdG9yPShSZWNvcmRlZFN0YXR1c2VzJiYgb3RoZXIpCit7CisgICAgY2FsbHMgPSBX
VEZNb3ZlKG90aGVyLmNhbGxzKTsKKyAgICBnZXRzID0gV1RGTW92ZShvdGhlci5nZXRzKTsKKyAg
ICBwdXRzID0gV1RGTW92ZShvdGhlci5wdXRzKTsKKyAgICBzaHJpbmtUb0ZpdCgpOworICAgIHJl
dHVybiAqdGhpczsKK30KKworUmVjb3JkZWRTdGF0dXNlczo6UmVjb3JkZWRTdGF0dXNlcyhSZWNv
cmRlZFN0YXR1c2VzJiYgb3RoZXIpCit7CisgICAgKnRoaXMgPSBXVEZNb3ZlKG90aGVyKTsKK30K
KworQ2FsbExpbmtTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKGNv
bnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBzdGF0dXMp
Cit7CisgICAgYXV0byBzdGF0dXNQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxMaW5rU3RhdHVz
PihzdGF0dXMpOworICAgIENhbGxMaW5rU3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7
CisgICAgY2FsbHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3Rh
dHVzUHRyKSkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0dldEJ5SWRTdGF0dXMqIFJlY29y
ZGVkU3RhdHVzZXM6OmFkZEdldEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdp
biwgY29uc3QgR2V0QnlJZFN0YXR1cyYgc3RhdHVzKQoreworICAgIGF1dG8gc3RhdHVzUHRyID0g
c3RkOjptYWtlX3VuaXF1ZTxHZXRCeUlkU3RhdHVzPihzdGF0dXMpOworICAgIEdldEJ5SWRTdGF0
dXMqIHJlc3VsdCA9IHN0YXR1c1B0ci5nZXQoKTsKKyAgICBnZXRzLmFwcGVuZChzdGQ6Om1ha2Vf
cGFpcihjb2RlT3JpZ2luLCBXVEZNb3ZlKHN0YXR1c1B0cikpKTsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorICAgIAorUHV0QnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkUHV0QnlJZFN0
YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBjb25zdCBQdXRCeUlkU3RhdHVzJiBz
dGF0dXMpCit7CisgICAgYXV0byBzdGF0dXNQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPFB1dEJ5SWRT
dGF0dXM+KHN0YXR1cyk7CisgICAgUHV0QnlJZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdl
dCgpOworICAgIHB1dHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUo
c3RhdHVzUHRyKSkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgUmVjb3JkZWRTdGF0
dXNlczo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHNsb3RWaXNpdG9yKQoreworICAgIGZvciAo
YXV0byYgcGFpciA6IGdldHMpCisgICAgICAgIHBhaXIuc2Vjb25kLT5tYXJrSWZDaGVhcChzbG90
VmlzaXRvcik7CisgICAgZm9yIChhdXRvJiBwYWlyIDogcHV0cykKKyAgICAgICAgcGFpci5zZWNv
bmQtPm1hcmtJZkNoZWFwKHNsb3RWaXNpdG9yKTsKK30KKwordm9pZCBSZWNvcmRlZFN0YXR1c2Vz
OjpmaW5hbGl6ZVdpdGhvdXREZWxldGluZygpCit7CisgICAgYXV0byBmaW5hbGl6ZSA9IFtdIChh
dXRvJiB2ZWN0b3IpIHsKKyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogdmVjdG9yKSB7CisgICAg
ICAgICAgICBpZiAoIXBhaXIuc2Vjb25kLT5maW5hbGl6ZSgpKQorICAgICAgICAgICAgICAgIHBh
aXIuc2Vjb25kID0geyB9OworICAgICAgICB9CisgICAgfTsKKyAgICBmb3JFYWNoVmVjdG9yKGZp
bmFsaXplKTsKK30KKwordm9pZCBSZWNvcmRlZFN0YXR1c2VzOjpmaW5hbGl6ZSgpCit7CisgICAg
YXV0byBmaW5hbGl6ZSA9IFtdIChhdXRvJiB2ZWN0b3IpIHsKKyAgICAgICAgdmVjdG9yLnJlbW92
ZUFsbE1hdGNoaW5nKAorICAgICAgICAgICAgWyZdIChhdXRvJiBwYWlyKSAtPiBib29sIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gISpwYWlyLnNlY29uZCB8fCAhcGFpci5zZWNvbmQtPmZpbmFs
aXplKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgdmVjdG9yLnNocmlua1RvRml0KCk7Cisg
ICAgfTsKKyAgICBmb3JFYWNoVmVjdG9yKGZpbmFsaXplKTsKK30KKwordm9pZCBSZWNvcmRlZFN0
YXR1c2VzOjpzaHJpbmtUb0ZpdCgpCit7CisgICAgZm9yRWFjaFZlY3RvcihbXSAoYXV0byYgdmVj
dG9yKSB7IHZlY3Rvci5zaHJpbmtUb0ZpdCgpOyB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2Vz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVk
U3RhdHVzZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUmVjb3JkZWRTdGF0dXNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgorI2luY2x1ZGUgIkdldEJ5SWRTdGF0dXMu
aCIKKyNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1
Y3QgUmVjb3JkZWRTdGF0dXNlcyB7CisgICAgUmVjb3JkZWRTdGF0dXNlcygpIHsgfQorICAgIAor
ICAgIFJlY29yZGVkU3RhdHVzZXMmIG9wZXJhdG9yPShjb25zdCBSZWNvcmRlZFN0YXR1c2VzJiBv
dGhlcikgPSBkZWxldGU7CisgICAgCisgICAgUmVjb3JkZWRTdGF0dXNlcyYgb3BlcmF0b3I9KFJl
Y29yZGVkU3RhdHVzZXMmJiBvdGhlcik7CisgICAgCisgICAgUmVjb3JkZWRTdGF0dXNlcyhjb25z
dCBSZWNvcmRlZFN0YXR1c2VzJiBvdGhlcikgPSBkZWxldGU7CisgICAgCisgICAgUmVjb3JkZWRT
dGF0dXNlcyhSZWNvcmRlZFN0YXR1c2VzJiYgb3RoZXIpOworICAgIAorICAgIENhbGxMaW5rU3Rh
dHVzKiBhZGRDYWxsTGlua1N0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29uc3QgQ2FsbExpbmtT
dGF0dXMmKTsKKyAgICBHZXRCeUlkU3RhdHVzKiBhZGRHZXRCeUlkU3RhdHVzKGNvbnN0IENvZGVP
cmlnaW4mLCBjb25zdCBHZXRCeUlkU3RhdHVzJik7CisgICAgUHV0QnlJZFN0YXR1cyogYWRkUHV0
QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29uc3QgUHV0QnlJZFN0YXR1cyYpOworICAg
IAorICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHNsb3RWaXNpdG9yKTsKKyAgICAK
KyAgICB2b2lkIGZpbmFsaXplV2l0aG91dERlbGV0aW5nKCk7CisgICAgdm9pZCBmaW5hbGl6ZSgp
OworICAgIAorICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jPgorICAgIHZvaWQgZm9yRWFjaFZlY3Rvcihjb25zdCBGdW5jJiBmdW5jKQorICAg
IHsKKyAgICAgICAgZnVuYyhjYWxscyk7CisgICAgICAgIGZ1bmMoZ2V0cyk7CisgICAgICAgIGZ1
bmMocHV0cyk7CisgICAgfQorICAgIAorICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29kZU9yaWdpbiwg
c3RkOjp1bmlxdWVfcHRyPENhbGxMaW5rU3RhdHVzPj4+IGNhbGxzOworICAgIFZlY3RvcjxzdGQ6
OnBhaXI8Q29kZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPEdldEJ5SWRTdGF0dXM+Pj4gZ2V0czsK
KyAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxQdXRCeUlk
U3RhdHVzPj4+IHB1dHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5jcHAJKHJldmlzaW9u
IDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDYgKzMxLDIxIEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCit2b2lkIFN0cnVjdHVyZVNldDo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
IGNvbnN0Cit7CisgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6ICp0aGlzKQorICAgICAg
ICBzdHJ1Y3R1cmUtPm1hcmtJZkNoZWFwKHZpc2l0b3IpOworfQorCitib29sIFN0cnVjdHVyZVNl
dDo6aXNTdGlsbEFsaXZlKCkgY29uc3QKK3sKKyAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJl
IDogKnRoaXMpIHsKKyAgICAgICAgaWYgKCFIZWFwOjppc01hcmtlZChzdHJ1Y3R1cmUpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9p
ZCBTdHJ1Y3R1cmVTZXQ6OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRl
eHQqIGNvbnRleHQpIGNvbnN0CiB7CiAgICAgQ29tbWFQcmludGVyIGNvbW1hOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAkocmV2aXNpb24g
MjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSwgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTgsNiArNTgsOSBAQCBwdWJsaWM6CiAgICAgewog
ICAgICAgICByZXR1cm4gb25seUVudHJ5KCk7CiAgICAgfQorCisgICAgdm9pZCBtYXJrSWZDaGVh
cChTbG90VmlzaXRvciYpIGNvbnN0OworICAgIGJvb2wgaXNTdGlsbEFsaXZlKCkgY29uc3Q7CiAg
ICAgCiAgICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBj
b25zdDsKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9UZXJtaW5hdGVkQ29kZU9yaWdpbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9UZXJtaW5hdGVkQ29kZU9yaWdpbi5o
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9UZXJtaW5h
dGVkQ29kZU9yaWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJDb2RlT3JpZ2luLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgSW5saW5l
Q2FsbEZyYW1lOworCitzdHJ1Y3QgVGVybWluYXRlZENvZGVPcmlnaW4geworICAgIFRlcm1pbmF0
ZWRDb2RlT3JpZ2luKCkgeyB9CisgICAgCisgICAgVGVybWluYXRlZENvZGVPcmlnaW4oY29uc3Qg
Q29kZU9yaWdpbiYgY29kZU9yaWdpbiwgSW5saW5lQ2FsbEZyYW1lKiB0ZXJtaW5hbCkKKyAgICAg
ICAgOiBjb2RlT3JpZ2luKGNvZGVPcmlnaW4pCisgICAgICAgICwgdGVybWluYWwodGVybWluYWwp
CisgICAgeworICAgIH0KKyAgICAKKyAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW47CisgICAgSW5s
aW5lQ2FsbEZyYW1lKiB0ZXJtaW5hbCB7IG51bGxwdHIgfTsKK307CisKK3N0cnVjdCBUZXJtaW5h
dGVkQ29kZU9yaWdpbkhhc2hUcmFuc2xhdG9yIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChj
b25zdCBUZXJtaW5hdGVkQ29kZU9yaWdpbiYgdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4g
dmFsdWUuY29kZU9yaWdpbi5hcHByb3hpbWF0ZUhhc2godmFsdWUudGVybWluYWwpOworICAgIH0K
KyAgICAKKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBDb2RlT3JpZ2luJiBhLCBjb25zdCBU
ZXJtaW5hdGVkQ29kZU9yaWdpbiYgYikKKyAgICB7CisgICAgICAgIHJldHVybiBiLmNvZGVPcmln
aW4uaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhhLCBiLnRlcm1pbmFsKTsKKyAgICB9Cit9OworCit9
IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMjMy
MjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNDk5LDYgKzM0OTksMjUgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgIGNhc2UgWm9tYmllSGludDoKICAg
ICBjYXNlIEV4aXRPSzoKICAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgIGNhc2UgRmlsdGVy
Q2FsbExpbmtTdGF0dXM6CisgICAgICAgIGlmIChKU1ZhbHVlIHZhbHVlID0gZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkubV92YWx1ZSkKKyAgICAgICAgICAgIG5vZGUtPmNhbGxMaW5rU3RhdHVzKCkt
PmZpbHRlcihtX3ZtLCB2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgICAgICAKKyAgICBjYXNl
IEZpbHRlckdldEJ5SWRTdGF0dXM6IHsKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBm
b3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgaWYgKHZhbHVlLm1fc3RydWN0dXJlLmlz
RmluaXRlKCkpCisgICAgICAgICAgICBub2RlLT5nZXRCeUlkU3RhdHVzKCktPmZpbHRlcih2YWx1
ZS5tX3N0cnVjdHVyZS50b1N0cnVjdHVyZVNldCgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgICAgICAKKyAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6IHsKKyAgICAgICAgQWJzdHJh
Y3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgaWYgKHZh
bHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpCisgICAgICAgICAgICBub2RlLT5wdXRCeUlkU3Rh
dHVzKCktPmZpbHRlcih2YWx1ZS5tX3N0cnVjdHVyZS50b1N0cnVjdHVyZVNldCgpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQogCiAgICAgY2FzZSBDaGVja1R5cGVJbmZvRmxhZ3M6IHsKICAgICAg
ICAgY29uc3QgQWJzdHJhY3RWYWx1ZSYgYWJzdHJhY3RWYWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hp
bGQxKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgyLDkgKzEwODIs
OCBAQCBwcml2YXRlOgogICAgICAgICAvLyBjb2RlIGJsb2NrIGhhZCBnYXRoZXJlZC4KICAgICAg
ICAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXIgbV9sYXp5T3BlcmFuZHM7CiAgICAgICAg
IAotICAgICAgICBDYWxsTGlua0luZm9NYXAgbV9jYWxsTGlua0luZm9zOwotICAgICAgICBTdHVi
SW5mb01hcCBtX3N0dWJJbmZvczsKLSAgICAgICAgQnlWYWxJbmZvTWFwIG1fYnlWYWxJbmZvczsK
KyAgICAgICAgSUNTdGF0dXNNYXAgbV9iYXNlbGluZU1hcDsKKyAgICAgICAgSUNTdGF0dXNDb250
ZXh0IG1fb3B0aW1pemVkQ29udGV4dDsKICAgICAgICAgCiAgICAgICAgIC8vIFBvaW50ZXJzIHRv
IHRoZSBhcmd1bWVudCBwb3NpdGlvbiB0cmFja2VycyBmb3IgdGhpcyBzbGljZSBvZiBjb2RlLgog
ICAgICAgICBWZWN0b3I8QXJndW1lbnRQb3NpdGlvbio+IG1fYXJndW1lbnRQb3NpdGlvbnM7CkBA
IC0xMTAyLDEwICsxMTAxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIElubGluZUNhbGxGcmFt
ZTo6S2luZCwKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbkJsb2NrKTsKICAg
ICAgICAgCi0gICAgICAgIH5JbmxpbmVTdGFja0VudHJ5KCkKLSAgICAgICAgewotICAgICAgICAg
ICAgbV9ieXRlQ29kZVBhcnNlci0+bV9pbmxpbmVTdGFja1RvcCA9IG1fY2FsbGVyOwotICAgICAg
ICB9CisgICAgICAgIH5JbmxpbmVTdGFja0VudHJ5KCk7CiAgICAgICAgIAogICAgICAgICBWaXJ0
dWFsUmVnaXN0ZXIgcmVtYXBPcGVyYW5kKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSBjb25zdAog
ICAgICAgICB7CkBAIC0xMTIwLDYgKzExMTYsOCBAQCBwcml2YXRlOgogICAgIAogICAgIElubGlu
ZVN0YWNrRW50cnkqIG1faW5saW5lU3RhY2tUb3A7CiAgICAgCisgICAgSUNTdGF0dXNDb250ZXh0
U3RhY2sgbV9pY0NvbnRleHRTdGFjazsKKyAgICAKICAgICBzdHJ1Y3QgRGVsYXllZFNldExvY2Fs
IHsKICAgICAgICAgQ29kZU9yaWdpbiBtX29yaWdpbjsKICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IG1fb3BlcmFuZDsKQEAgLTExNDYsMTAgKzExNDQsNiBAQCBwcml2YXRlOgogICAgIAogICAgIFZl
Y3RvcjxEZWxheWVkU2V0TG9jYWwsIDI+IG1fc2V0TG9jYWxRdWV1ZTsKIAotICAgIENvZGVCbG9j
ayogbV9kZmdDb2RlQmxvY2s7Ci0gICAgQ2FsbExpbmtTdGF0dXM6OkNvbnRleHRNYXAgbV9jYWxs
Q29udGV4dE1hcDsKLSAgICBTdHViSW5mb01hcCBtX2RmZ1N0dWJJbmZvczsKLSAgICAKICAgICBJ
bnN0cnVjdGlvbiogbV9jdXJyZW50SW5zdHJ1Y3Rpb247CiAgICAgYm9vbCBtX2hhc0RlYnVnZ2Vy
RW5hYmxlZDsKIH07CkBAIC0xMjE0LDcgKzEyMDgsNyBAQCBCeXRlQ29kZVBhcnNlcjo6VGVybWlu
YWxpdHkgQnl0ZUNvZGVQYXJzCiAKICAgICBDYWxsTGlua1N0YXR1cyBjYWxsTGlua1N0YXR1cyA9
IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5t
X3Byb2ZpbGVkQmxvY2ssIGN1cnJlbnRDb2RlT3JpZ2luKCksCi0gICAgICAgIG1faW5saW5lU3Rh
Y2tUb3AtPm1fY2FsbExpbmtJbmZvcywgbV9jYWxsQ29udGV4dE1hcCk7CisgICAgICAgIG1faW5s
aW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2spOwogCiAgICAgSW5s
aW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQgPSBJbmxpbmVDYWxsRnJhbWU6OmtpbmRGb3IoY2FsbE1v
ZGUpOwogCkBAIC0xMjQyLDYgKzEyMzYsOCBAQCBCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkg
Qnl0ZUNvZGVQYXJzCiAgICAgLy8gSWYgd2UgaGF2ZSBwcm9maWxpbmcgaW5mb3JtYXRpb24gYWJv
dXQgdGhpcyBjYWxsLCBhbmQgaXQgZGlkIG5vdCBiZWhhdmUgdG9vIHBvbHltb3JwaGljYWxseSwK
ICAgICAvLyB3ZSBtYXkgYmUgYWJsZSB0byBpbmxpbmUgaXQsIG9yIGluIHRoZSBjYXNlIG9mIHJl
Y3Vyc2l2ZSB0YWlsIGNhbGxzIHR1cm4gaXQgaW50byBhIGp1bXAuCiAgICAgaWYgKGNhbGxMaW5r
U3RhdHVzLmNhbk9wdGltaXplKCkpIHsKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJDYWxsTGlu
a1N0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkQ2FsbExp
bmtTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgY2FsbExpbmtTdGF0dXMpKSwgY2FsbFRhcmdl
dCk7CisgICAgICAgIAogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdGhpc0FyZ3VtZW50ID0gdmly
dHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoMCwgcmVnaXN0ZXJPZmZzZXQpOwogICAgICAgICBhdXRv
IG9wdGltaXphdGlvblJlc3VsdCA9IGhhbmRsZUlubGluaW5nKGNhbGxUYXJnZXQsIHJlc3VsdCwg
Y2FsbExpbmtTdGF0dXMsIHJlZ2lzdGVyT2Zmc2V0LCB0aGlzQXJndW1lbnQsCiAgICAgICAgICAg
ICBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgbV9jdXJyZW50SW5kZXggKyBpbnN0cnVjdGlv
blNpemUsIG9wLCBraW5kLCBwcmVkaWN0aW9uKTsKQEAgLTEyNzksMTIgKzEyNzUsMTQgQEAgQnl0
ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFycwogICAgIAogICAgIENhbGxMaW5r
U3RhdHVzIGNhbGxMaW5rU3RhdHVzID0gQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAg
ICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgY3VycmVudENvZGVPcmlnaW4o
KSwKLSAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsTGlua0luZm9zLCBtX2NhbGxDb250
ZXh0TWFwKTsKKyAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0Nv
bnRleHRTdGFjayk7CiAgICAgcmVmaW5lU3RhdGljYWxseShjYWxsTGlua1N0YXR1cywgY2FsbFRh
cmdldCk7CiAgICAgCiAgICAgVkVSQk9TRV9MT0coIiAgICBWYXJhcmdzIGNhbGwgbGluayBzdGF0
dXMgYXQgIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIjogIiwgY2FsbExpbmtTdGF0dXMsICJcbiIp
OwogICAgIAogICAgIGlmIChjYWxsTGlua1N0YXR1cy5jYW5PcHRpbWl6ZSgpKSB7CisgICAgICAg
IGFkZFRvR3JhcGgoRmlsdGVyQ2FsbExpbmtTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5y
ZWNvcmRlZFN0YXR1c2VzLmFkZENhbGxMaW5rU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIGNh
bGxMaW5rU3RhdHVzKSksIGNhbGxUYXJnZXQpOworICAgICAgICAKICAgICAgICAgaWYgKGhhbmRs
ZVZhcmFyZ3NJbmxpbmluZyhjYWxsVGFyZ2V0LCByZXN1bHQsCiAgICAgICAgICAgICBjYWxsTGlu
a1N0YXR1cywgZmlyc3RGcmVlUmVnLCBWaXJ0dWFsUmVnaXN0ZXIodGhpc1JlZyksIFZpcnR1YWxS
ZWdpc3Rlcihhcmd1bWVudHMpLAogICAgICAgICAgICAgZmlyc3RWYXJBcmdPZmZzZXQsIG9wLApA
QCAtMzMxOCw5ICszMzE2LDEyIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZURPTUpJVEdl
dHRlcigKICAgICBpZiAoIWNoZWNrKHZhcmlhbnQuY29uZGl0aW9uU2V0KCkpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3Jh
cGguYWRkU3RydWN0dXJlU2V0KHZhcmlhbnQuc3RydWN0dXJlU2V0KCkpKSwgdGhpc05vZGUpOwot
CisgICAgCiAgICAgLy8gV2UgZG8gbm90IG5lZWQgdG8gZW1pdCBDaGVja0NlbGwgdGhpbmd5IGhl
cmUuIFdoZW4gdGhlIGN1c3RvbSBhY2Nlc3NvciBpcyByZXBsYWNlZCB0byBkaWZmZXJlbnQgb25l
LCBTdHJ1Y3R1cmUgdHJhbnNpdGlvbiBvY2N1cnMuCiAgICAgYWRkVG9HcmFwaChDaGVja1N1YkNs
YXNzLCBPcEluZm8oZG9tQXR0cmlidXRlLmNsYXNzSW5mbyksIHRoaXNOb2RlKTsKKyAgICAKKyAg
ICBib29sIHdhc1NlZW5JbkpJVCA9IHRydWU7CisgICAgYWRkVG9HcmFwaChGaWx0ZXJHZXRCeUlk
U3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcy5hZGRHZXRCeUlk
U3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIEdldEJ5SWRTdGF0dXMoR2V0QnlJZFN0YXR1czo6
Q3VzdG9tLCB3YXNTZWVuSW5KSVQsIHZhcmlhbnQpKSksIHRoaXNOb2RlKTsKIAogICAgIENhbGxE
T01HZXR0ZXJEYXRhKiBjYWxsRE9NR2V0dGVyRGF0YSA9IG1fZ3JhcGgubV9jYWxsRE9NR2V0dGVy
RGF0YS5hZGQoKTsKICAgICBjYWxsRE9NR2V0dGVyRGF0YS0+Y3VzdG9tQWNjZXNzb3JHZXR0ZXIg
PSB2YXJpYW50LmN1c3RvbUFjY2Vzc29yR2V0dGVyKCk7CkBAIC0zMzUyLDYgKzMzNTMsOCBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVNb2R1bGVOYW1lc3BhCiAgICAgaWYgKG1faW5saW5l
U3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENl
bGwpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYWRkVG9HcmFwaChDaGVja0NlbGwsIE9w
SW5mbyhtX2dyYXBoLmZyZWV6ZShnZXRCeUlkLm1vZHVsZU5hbWVzcGFjZU9iamVjdCgpKSksIEVk
Z2UoYmFzZSwgQ2VsbFVzZSkpOworICAgIAorICAgIGFkZFRvR3JhcGgoRmlsdGVyR2V0QnlJZFN0
YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkR2V0QnlJZFN0
YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBnZXRCeUlkKSksIGJhc2UpOwogCiAgICAgLy8gSWRl
YWxseSB3ZSB3b3VsZG4ndCBoYXZlIHRvIGRvIHRoaXMgUGhhbnRvbS4gQnV0OgogICAgIC8vCkBA
IC00MDA3LDE0ICs0MDEwLDI1IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQo
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCisgICAgLy8gRklYTUU6IElmIHdlIHVzZSB0
aGUgR2V0QnlJZFN0YXR1cyBmb3IgYW55dGhpbmcgdGhlbiB3ZSBzaG91bGQgcmVjb3JkIGl0IGFu
ZCBpbnNlcnQgYSBub2RlCisgICAgLy8gYWZ0ZXIgZXZlcnl0aGluZyBlbHNlIChsaWtlIHRoZSBH
ZXRCeU9mZnNldCBvciB3aGF0ZXZlcikgdGhhdCB3aWxsIGZpbHRlciB0aGUgcmVjb3JkZWQKKyAg
ICAvLyBHZXRCeUlkU3RhdHVzLiBUaGF0IG1lYW5zIHRoYXQgdGhlIGNvbnN0YW50IGZvbGRlciBh
bHNvIG5lZWRzIHRvIGRvIHRoZSBzYW1lIQorICAgIAogICAgIGlmIChnZXRCeUlkU3RhdHVzLm51
bVZhcmlhbnRzKCkgPiAxKSB7CiAgICAgICAgIGlmIChnZXRCeUlkU3RhdHVzLm1ha2VzQ2FsbHMo
KSB8fCAhaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkKLSAgICAgICAgICAgIHx8ICFPcHRpb25z
Ojp1c2VQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nKCkpIHsKKyAgICAgICAgICAgIHx8ICFPcHRp
b25zOjp1c2VQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nKCkKKyAgICAgICAgICAgIHx8IGdldEJ5
SWRTdGF0dXMubnVtVmFyaWFudHMoKSA+IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQWNjZXNzSW5s
aW5pbmdMaXN0U2l6ZSgpKSB7CisgICAgICAgICAgICBpZiAoZmFsc2UgJiYgZ2V0QnlJZFN0YXR1
cy5udW1WYXJpYW50cygpID4gT3B0aW9uczo6bWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xp
c3RTaXplKCkpIHsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJBdCAiLCBjdXJyZW50Q29kZU9y
aWdpbigpLCAiXG4iKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJHaXZpbmcgdXAgb246ICIs
IGdldEJ5SWRTdGF0dXMsICJcbiIpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgc2V0KFZp
cnR1YWxSZWdpc3RlcihkZXN0aW5hdGlvbk9wZXJhbmQpLAogICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoZ2V0QnlJZCwgT3BJbmZvKGlkZW50aWZpZXJOdW1iZXIpLCBPcEluZm8ocHJlZGljdGlv
biksIGJhc2UpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAKKyAg
ICAgICAgYWRkVG9HcmFwaChGaWx0ZXJHZXRCeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3Bs
YW4ucmVjb3JkZWRTdGF0dXNlcy5hZGRHZXRCeUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCks
IGdldEJ5SWRTdGF0dXMpKSwgYmFzZSk7CisgICAgICAgIAogICAgICAgICBWZWN0b3I8TXVsdGlH
ZXRCeU9mZnNldENhc2UsIDI+IGNhc2VzOwogICAgICAgICAKICAgICAgICAgLy8gMSkgRW1pdCBw
cm90b3R5cGUgc3RydWN0dXJlIGNoZWNrcyBmb3IgYWxsIGNoYWlucy4gVGhpcyBjb3VsZCBzb3J0
IG9mIG1heWJlIG5vdCBiZQpAQCAtNDA1NiwxMCArNDA3MCwxMiBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAgICAgICAgYWRkVG9HcmFwaChNdWx0aUdldEJ5T2Zm
c2V0LCBPcEluZm8oZGF0YSksIE9wSW5mbyhwcmVkaWN0aW9uKSwgYmFzZSkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQorCisgICAgYWRkVG9HcmFwaChGaWx0ZXJHZXRCeUlkU3RhdHVzLCBPcElu
Zm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcy5hZGRHZXRCeUlkU3RhdHVzKGN1cnJl
bnRDb2RlT3JpZ2luKCksIGdldEJ5SWRTdGF0dXMpKSwgYmFzZSk7CiAgICAgCiAgICAgQVNTRVJU
KGdldEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSA9PSAxKTsKICAgICBHZXRCeUlkVmFyaWFudCB2
YXJpYW50ID0gZ2V0QnlJZFN0YXR1c1swXTsKLSAgICAgICAgICAgICAgICAKKyAgICAKICAgICBO
b2RlKiBsb2FkZWRWYWx1ZSA9IGxvYWQocHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllck51bWJl
ciwgdmFyaWFudCk7CiAgICAgaWYgKCFsb2FkZWRWYWx1ZSkgewogICAgICAgICBzZXQoVmlydHVh
bFJlZ2lzdGVyKGRlc3RpbmF0aW9uT3BlcmFuZCksCkBAIC00MTUwLDcgKzQxNjYsMTAgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICAKICAgICBpZiAocHV0QnlJZFN0
YXR1cy5udW1WYXJpYW50cygpID4gMSkgewogICAgICAgICBpZiAoIWlzRlRMKG1fZ3JhcGgubV9w
bGFuLm1vZGUpIHx8IHB1dEJ5SWRTdGF0dXMubWFrZXNDYWxscygpCi0gICAgICAgICAgICB8fCAh
T3B0aW9uczo6dXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZygpKSB7CisgICAgICAgICAgICB8
fCAhT3B0aW9uczo6dXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZygpCisgICAgICAgICAgICB8
fCBwdXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgPiBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0Fj
Y2Vzc0lubGluaW5nTGlzdFNpemUoKSkgeworICAgICAgICAgICAgaWYgKGZhbHNlICYmIHB1dEJ5
SWRTdGF0dXMubnVtVmFyaWFudHMoKSA+IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQWNjZXNzSW5s
aW5pbmdMaXN0U2l6ZSgpKQorICAgICAgICAgICAgICAgIGRhdGFMb2coIkdpdmluZyB1cCBvbjog
IiwgcHV0QnlJZFN0YXR1cywgIlxuIik7CiAgICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBp
ZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC00MTY4LDYgKzQxODcsOCBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgICAgICAKICAgICAgICAgaWYgKFVOTElLRUxZ
KG1fZ3JhcGguY29tcGlsYXRpb24oKSkpCiAgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9u
KCktPm5vdGljZUlubGluZWRQdXRCeUlkKCk7CisgICAgICAgIAorICAgICAgICBhZGRUb0dyYXBo
KEZpbHRlclB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1
c2VzLmFkZFB1dEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0YXR1cykp
LCBiYXNlKTsKIAogICAgICAgICBmb3IgKGNvbnN0IFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50IDog
cHV0QnlJZFN0YXR1cy52YXJpYW50cygpKSB7CiAgICAgICAgICAgICBtX2dyYXBoLnJlZ2lzdGVy
SW5mZXJyZWRUeXBlKHZhcmlhbnQucmVxdWlyZWRUeXBlKCkpOwpAQCAtNDE4OSw2ICs0MjEwLDgg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICAKICAgICBzd2l0Y2gg
KHZhcmlhbnQua2luZCgpKSB7CiAgICAgY2FzZSBQdXRCeUlkVmFyaWFudDo6UmVwbGFjZTogewor
ICAgICAgICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1f
cGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFkZFB1dEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4o
KSwgcHV0QnlJZFN0YXR1cykpLCBiYXNlKTsKKyAgICAgICAgCiAgICAgICAgIHN0b3JlKGJhc2Us
IGlkZW50aWZpZXJOdW1iZXIsIHZhcmlhbnQsIHZhbHVlKTsKICAgICAgICAgaWYgKFVOTElLRUxZ
KG1fZ3JhcGguY29tcGlsYXRpb24oKSkpCiAgICAgICAgICAgICBtX2dyYXBoLmNvbXBpbGF0aW9u
KCktPm5vdGljZUlubGluZWRQdXRCeUlkKCk7CkBAIC00MTk2LDYgKzQyMTksOCBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgIH0KICAgICAKICAgICBjYXNlIFB1dEJ5
SWRWYXJpYW50OjpUcmFuc2l0aW9uOiB7CisgICAgICAgIGFkZFRvR3JhcGgoRmlsdGVyUHV0QnlJ
ZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkUHV0QnlJ
ZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBwdXRCeUlkU3RhdHVzKSksIGJhc2UpOworICAg
ICAgICAKICAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGgu
YWRkU3RydWN0dXJlU2V0KHZhcmlhbnQub2xkU3RydWN0dXJlKCkpKSwgYmFzZSk7CiAgICAgICAg
IGlmICghY2hlY2sodmFyaWFudC5jb25kaXRpb25TZXQoKSkpIHsKICAgICAgICAgICAgIGVtaXRQ
dXRCeUlkKGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0Rp
cmVjdCk7CkBAIC00MjYzLDYgKzQyODgsOCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQ
dXRCeUlkKAogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBQdXRCeUlkVmFyaWFudDo6U2V0dGVy
OiB7CisgICAgICAgIGFkZFRvR3JhcGgoRmlsdGVyUHV0QnlJZFN0YXR1cywgT3BJbmZvKG1fZ3Jh
cGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkUHV0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9y
aWdpbigpLCBwdXRCeUlkU3RhdHVzKSksIGJhc2UpOworICAgICAgICAKICAgICAgICAgTm9kZSog
bG9hZGVkVmFsdWUgPSBsb2FkKFNwZWNDZWxsT3RoZXIsIGJhc2UsIGlkZW50aWZpZXJOdW1iZXIs
IHZhcmlhbnQpOwogICAgICAgICBpZiAoIWxvYWRlZFZhbHVlKSB7CiAgICAgICAgICAgICBlbWl0
UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNE
aXJlY3QpOwpAQCAtNDc5MSw3ICs0ODE4LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZAogICAgICAgICAgICAgYXV0byYgYnl0ZWNvZGUgPSAqcmVpbnRlcnByZXRf
Y2FzdDxPcEluc3RhbmNlb2YqPihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBJbnN0YW5jZU9mU3RhdHVzIHN0YXR1cyA9IEluc3RhbmNlT2ZTdGF0dXM6OmNv
bXB1dGVGb3IoCi0gICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJs
b2NrLCBtX2lubGluZVN0YWNrVG9wLT5tX3N0dWJJbmZvcywKKyAgICAgICAgICAgICAgICBtX2lu
bGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxp
bmVNYXAsCiAgICAgICAgICAgICAgICAgbV9jdXJyZW50SW5kZXgpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBOb2RlKiB2YWx1ZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUudmFs
dWUoKSkpOwpAQCAtNTAyNCw3ICs1MDUxLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZAogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IDA7
CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tl
cihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAg
ICAgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2lubGluZVN0YWNrVG9wLT5tX2J5VmFsSW5m
b3MuZ2V0KENvZGVPcmlnaW4oY3VycmVudENvZGVPcmlnaW4oKS5ieXRlY29kZUluZGV4KSk7Cisg
ICAgICAgICAgICAgICAgQnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2lubGluZVN0YWNrVG9wLT5t
X2Jhc2VsaW5lTWFwLmdldChDb2RlT3JpZ2luKGN1cnJlbnRDb2RlT3JpZ2luKCkuYnl0ZWNvZGVJ
bmRleCkpLmJ5VmFsSW5mbzsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2hlbiB0aGUgYnl0
ZWNvZGUgaXMgbm90IGNvbXBpbGVkIGluIHRoZSBiYXNlbGluZSBKSVQsIGJ5VmFsSW5mbyBiZWNv
bWVzIG51bGwuCiAgICAgICAgICAgICAgICAgLy8gQXQgdGhhdCB0aW1lLCB0aGVyZSBpcyBubyBp
bmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICBpZiAoYnlWYWxJbmZvCkBAIC01MDkzLDcgKzUx
MjAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAg
ICAgICAgICAgUHV0QnlJZFN0YXR1cyBwdXRCeUlkU3RhdHVzOwogICAgICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2lubGluZVN0
YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICAgICAgICAgIEJ5
VmFsSW5mbyogYnlWYWxJbmZvID0gbV9pbmxpbmVTdGFja1RvcC0+bV9ieVZhbEluZm9zLmdldChD
b2RlT3JpZ2luKGN1cnJlbnRDb2RlT3JpZ2luKCkuYnl0ZWNvZGVJbmRleCkpOworICAgICAgICAg
ICAgICAgICAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IG1faW5saW5lU3RhY2tUb3AtPm1fYmFz
ZWxpbmVNYXAuZ2V0KENvZGVPcmlnaW4oY3VycmVudENvZGVPcmlnaW4oKS5ieXRlY29kZUluZGV4
KSkuYnlWYWxJbmZvOwogICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2hlbiB0aGUgYnl0
ZWNvZGUgaXMgbm90IGNvbXBpbGVkIGluIHRoZSBiYXNlbGluZSBKSVQsIGJ5VmFsSW5mbyBiZWNv
bWVzIG51bGwuCiAgICAgICAgICAgICAgICAgICAgIC8vIEF0IHRoYXQgdGltZSwgdGhlcmUgaXMg
bm8gaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgICAgIGlmIChieVZhbEluZm8gCkBAIC01
MTk5LDggKzUyMjYsOCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVk
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dy
YXBoLmlkZW50aWZpZXJzKClbaWRlbnRpZmllck51bWJlcl07CiAgICAgICAgICAgICBHZXRCeUlk
U3RhdHVzIGdldEJ5SWRTdGF0dXMgPSBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAotICAgICAg
ICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgbV9kZmdDb2RlQmxv
Y2ssCi0gICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9zdHViSW5mb3MsIG1fZGZn
U3R1YkluZm9zLAorICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRC
bG9jaywKKyAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBt
X2ljQ29udGV4dFN0YWNrLAogICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCksIHVp
ZCk7CiAKICAgICAgICAgICAgIEFjY2Vzc1R5cGUgdHlwZSA9IEFjY2Vzc1R5cGU6OkdldDsKQEAg
LTUyNDMsOCArNTI3MCw4IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQKICAgICAgICAgICAgIGJvb2wgZGlyZWN0ID0gY3VycmVudEluc3RydWN0aW9uWzhdLnUucHV0
QnlJZEZsYWdzICYgUHV0QnlJZElzRGlyZWN0OwogCiAgICAgICAgICAgICBQdXRCeUlkU3RhdHVz
IHB1dEJ5SWRTdGF0dXMgPSBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAotICAgICAgICAgICAg
ICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgbV9kZmdDb2RlQmxvY2ssCi0g
ICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9zdHViSW5mb3MsIG1fZGZnU3R1Yklu
Zm9zLAorICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywK
KyAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29u
dGV4dFN0YWNrLAogICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCksIG1fZ3JhcGgu
aWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGhhbmRsZVB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRT
dGF0dXMsIGRpcmVjdCk7CkBAIC02NjAzLDEyICs2NjMwLDE5IEBAIEJ5dGVDb2RlUGFyc2VyOjpJ
bmxpbmVTdGFja0VudHJ5OjpJbmxpbmUKICAgICAgICAgLy8gV2UgZG8gdGhpcyB3aGlsZSBob2xk
aW5nIHRoZSBsb2NrIGJlY2F1c2Ugd2Ugd2FudCB0byBlbmNvdXJhZ2UgU3RydWN0dXJlU3R1Yklu
Zm8ncwogICAgICAgICAvLyB0byBiZSBwb3RlbnRpYWxseSBhZGRlZCB0byBvcGVyYXRpb25zIGFu
ZCBiZWNhdXNlIHRoZSBwcm9maWxlZCBibG9jayBjb3VsZCBiZSBpbiB0aGUKICAgICAgICAgLy8g
bWlkZGxlIG9mIExMSW50LT5KSVQgdGllci11cCBpbiB3aGljaCBjYXNlIHdlIHdvdWxkIGJlIGFk
ZGluZyB0aGUgaW5mbydzIHJpZ2h0IG5vdy4KLSAgICAgICAgaWYgKG1fcHJvZmlsZWRCbG9jay0+
aGFzQmFzZWxpbmVKSVRQcm9maWxpbmcoKSkgewotICAgICAgICAgICAgbV9wcm9maWxlZEJsb2Nr
LT5nZXRTdHViSW5mb01hcChsb2NrZXIsIG1fc3R1YkluZm9zKTsKLSAgICAgICAgICAgIG1fcHJv
ZmlsZWRCbG9jay0+Z2V0Q2FsbExpbmtJbmZvTWFwKGxvY2tlciwgbV9jYWxsTGlua0luZm9zKTsK
LSAgICAgICAgICAgIG1fcHJvZmlsZWRCbG9jay0+Z2V0QnlWYWxJbmZvTWFwKGxvY2tlciwgbV9i
eVZhbEluZm9zKTsKKyAgICAgICAgaWYgKG1fcHJvZmlsZWRCbG9jay0+aGFzQmFzZWxpbmVKSVRQ
cm9maWxpbmcoKSkKKyAgICAgICAgICAgIG1fcHJvZmlsZWRCbG9jay0+Z2V0SUNTdGF0dXNNYXAo
bG9ja2VyLCBtX2Jhc2VsaW5lTWFwKTsKKyAgICB9CisgICAgCisgICAgaWYgKE9wdGlvbnM6OnVz
ZVBvbHl2YXJpYW50RGV2aXJ0dWFsaXphdGlvbigpKSB7CisgICAgICAgIENvZGVCbG9jayogb3B0
aW1pemVkQmxvY2sgPSBtX3Byb2ZpbGVkQmxvY2stPnJlcGxhY2VtZW50KCk7CisgICAgICAgIG1f
b3B0aW1pemVkQ29udGV4dC5vcHRpbWl6ZWRDb2RlQmxvY2sgPSBvcHRpbWl6ZWRCbG9jazsKKyAg
ICAgICAgaWYgKG9wdGltaXplZEJsb2NrKSB7CisgICAgICAgICAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKG9wdGltaXplZEJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgb3B0aW1pemVk
QmxvY2stPmdldElDU3RhdHVzTWFwKGxvY2tlciwgbV9vcHRpbWl6ZWRDb250ZXh0Lm1hcCk7CiAg
ICAgICAgIH0KICAgICB9CisgICAgYnl0ZUNvZGVQYXJzZXItPm1faWNDb250ZXh0U3RhY2suYXBw
ZW5kKCZtX29wdGltaXplZENvbnRleHQpOwogICAgIAogICAgIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpc1dpdGhGaXh1cCA9IHN0ZDo6bWF4PGludD4oYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKIApAQCAtNjYxOCw2ICs2NjUyLDcg
QEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZQogICAgICAgICBBU1NF
UlQoaW5saW5lQ2FsbEZyYW1lU3RhcnQuaXNWYWxpZCgpKTsKICAgICAgICAgCiAgICAgICAgIG1f
aW5saW5lQ2FsbEZyYW1lID0gYnl0ZUNvZGVQYXJzZXItPm1fZ3JhcGgubV9wbGFuLmlubGluZUNh
bGxGcmFtZXMtPmFkZCgpOworICAgICAgICBtX29wdGltaXplZENvbnRleHQuaW5saW5lQ2FsbEZy
YW1lID0gbV9pbmxpbmVDYWxsRnJhbWU7CiAKICAgICAgICAgLy8gVGhlIG93bmVyIGlzIHRoZSBt
YWNoaW5lIGNvZGUgYmxvY2ssIGFuZCB3ZSBhbHJlYWR5IGhhdmUgYSBiYXJyaWVyIG9uIHRoYXQg
d2hlbiB0aGUKICAgICAgICAgLy8gcGxhbiBmaW5pc2hlcy4KQEAgLTY2NzMsNiArNjcwOCwxMyBA
QCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lCiAgICAgYnl0ZUNvZGVQ
YXJzZXItPm1faW5saW5lU3RhY2tUb3AgPSB0aGlzOwogfQogCitCeXRlQ29kZVBhcnNlcjo6SW5s
aW5lU3RhY2tFbnRyeTo6fklubGluZVN0YWNrRW50cnkoKQoreworICAgIG1fYnl0ZUNvZGVQYXJz
ZXItPm1faW5saW5lU3RhY2tUb3AgPSBtX2NhbGxlcjsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2J5
dGVDb2RlUGFyc2VyLT5tX2ljQ29udGV4dFN0YWNrLmxhc3QoKSA9PSAmbV9vcHRpbWl6ZWRDb250
ZXh0KTsKKyAgICBtX2J5dGVDb2RlUGFyc2VyLT5tX2ljQ29udGV4dFN0YWNrLnJlbW92ZUxhc3Qo
KTsKK30KKwogdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQogewogICAgIGNs
ZWFyQ2FjaGVzKCk7CkBAIC02NzY5LDE1ICs2ODExLDYgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2UoKQogICAgIAogICAgIFZFUkJPU0VfTE9HKCJQYXJzaW5nICIsICptX2NvZGVCbG9jaywg
IlxuIik7CiAgICAgCi0gICAgbV9kZmdDb2RlQmxvY2sgPSBtX2dyYXBoLm1fcGxhbi5wcm9maWxl
ZERGR0NvZGVCbG9jazsKLSAgICBpZiAoaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkgJiYgbV9k
ZmdDb2RlQmxvY2sKLSAgICAgICAgJiYgT3B0aW9uczo6dXNlUG9seXZhcmlhbnREZXZpcnR1YWxp
emF0aW9uKCkpIHsKLSAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVBvbHl2YXJpYW50Q2FsbElubGlu
aW5nKCkpCi0gICAgICAgICAgICBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZURGR1N0YXR1c2VzKG1f
ZGZnQ29kZUJsb2NrLCBtX2NhbGxDb250ZXh0TWFwKTsKLSAgICAgICAgaWYgKE9wdGlvbnM6OnVz
ZVBvbHl2YXJpYW50QnlJZElubGluaW5nKCkpCi0gICAgICAgICAgICBtX2RmZ0NvZGVCbG9jay0+
Z2V0U3R1YkluZm9NYXAobV9kZmdTdHViSW5mb3MpOwotICAgIH0KLSAgICAKICAgICBJbmxpbmVT
dGFja0VudHJ5IGlubGluZVN0YWNrRW50cnkoCiAgICAgICAgIHRoaXMsIG1fY29kZUJsb2NrLCBt
X3Byb2ZpbGVkQmxvY2ssIDAsIFZpcnR1YWxSZWdpc3RlcigpLCBWaXJ0dWFsUmVnaXN0ZXIoKSwK
ICAgICAgICAgbV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgSW5saW5lQ2FsbEZyYW1lOjpD
YWxsLCBudWxscHRyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJl
cml6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJl
cml6ZS5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaAkod29ya2luZyBjb3B5KQpAQCAtNDQ2LDYgKzQ0Niw5IEBAIHZvaWQgY2xv
YmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIFByb2ZpbGVDb250cm9s
RmxvdzoKICAgICBjYXNlIFB1dEhpbnQ6CiAgICAgY2FzZSBJbml0aWFsaXplRW50cnlwb2ludEFy
Z3VtZW50czoKKyAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmlsdGVy
R2V0QnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgIHdy
aXRlKFNpZGVTdGF0ZSk7CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAkocmV2
aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4
aXRTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDkgQEAgYm9vbCBjbG9iYmVy
c0V4aXRTdGF0ZShHcmFwaCYgZ3JhcGgsIE5vZAogICAgIGNhc2UgRmVuY2VkU3RvcmVCYXJyaWVy
OgogICAgIGNhc2UgQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBSZWFsbG9jYXRl
UHJvcGVydHlTdG9yYWdlOgorICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgY2Fz
ZSBGaWx0ZXJHZXRCeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAg
ICAgICAgLy8gVGhlc2UgZG8gY2xvYmJlciBtZW1vcnksIGJ1dCBub3RoaW5nIHRoYXQgaXMgb2Jz
ZXJ2YWJsZS4gSXQgbWF5IGJlIG5pY2UgdG8gc2VwYXJhdGUgdGhlCiAgICAgICAgIC8vIGhlYXBz
IGludG8gdGhvc2UgdGhhdCBhcmUgb2JzZXJ2YWJsZSBhbmQgdGhvc2UgdGhhdCBhcmVuJ3QsIGJ1
dCB3ZSBkb24ndCBkbyB0aGF0IHJpZ2h0IG5vdy4KICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDg0NDAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uRGF0YS5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAt
MzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIklubGluZUNhbGxGcmFtZVNldC5oIgogI2luY2x1ZGUg
IkpTQ2FzdC5oIgogI2luY2x1ZGUgIlByb2ZpbGVyQ29tcGlsYXRpb24uaCIKKyNpbmNsdWRlICJS
ZWNvcmRlZFN0YXR1c2VzLmgiCiAjaW5jbHVkZSA8d3RmL0JhZy5oPgogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgogCkBAIC0xMjUsNiArMTI2LDcgQEAgcHVibGljOgogICAgIEJhZzxDb2Rl
QmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQ+IHdhdGNocG9pbnRzOwogICAgIEJhZzxBZGFwdGl2
ZVN0cnVjdHVyZVdhdGNocG9pbnQ+IGFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludHM7CiAgICAg
QmFnPEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludD4gYWRhcHRpdmVJbmZl
cnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50czsKKyAgICBSZWNvcmRlZFN0YXR1c2VzIHJlY29y
ZGVkU3RhdHVzZXM7CiAgICAgVmVjdG9yPEp1bXBSZXBsYWNlbWVudD4ganVtcFJlcGxhY2VtZW50
czsKICAgICAKICAgICBTY3JhdGNoQnVmZmVyKiBjYXRjaE9TUkVudHJ5QnVmZmVyOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQ
aGFzZS5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTcsNyArNTU3
LDE1IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgYXV0byBhZGRGaWx0ZXJTdGF0dXMg
PSBbJl0gKCkgeworICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2Rl
KAorICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgRmlsdGVy
R2V0QnlJZFN0YXR1cywgbm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgT3BJ
bmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkR2V0QnlJZFN0YXR1cyhub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIHN0YXR1cykpLAorICAgICAgICAgICAgICAgICAgICAgICAgRWRn
ZShjaGlsZCkpOworICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgaWYgKHN0YXR1cy5udW1WYXJpYW50cygpID09IDEpIHsKKyAgICAgICAgICAgICAg
ICAgICAgYWRkRmlsdGVyU3RhdHVzKCk7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRHZXRCeU9m
ZnNldChpbmRleEluQmxvY2ssIG5vZGUsIGJhc2VWYWx1ZSwgc3RhdHVzWzBdLCBpZGVudGlmaWVy
TnVtYmVyKTsKICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtNTY2LDYgKzU3NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgaWYgKCFpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSkKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgYWRkRmlsdGVyU3Rh
dHVzKCk7CiAgICAgICAgICAgICAgICAgTXVsdGlHZXRCeU9mZnNldERhdGEqIGRhdGEgPSBtX2dy
YXBoLm1fbXVsdGlHZXRCeU9mZnNldERhdGEuYWRkKCk7CiAgICAgICAgICAgICAgICAgZm9yIChj
b25zdCBHZXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IHN0YXR1cy52YXJpYW50cygpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGRhdGEtPmNhc2VzLmFwcGVuZCgKQEAgLTYzOSw2ICs2NDgsMTEgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAoIWFsbEdvb2QpCiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9u
U2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05v
bmUsIEZpbHRlclB1dEJ5SWRTdGF0dXMsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAg
ICAgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkUHV0QnlJZFN0YXR1
cyhub2RlLT5vcmlnaW4uc2VtYW50aWMsIHN0YXR1cykpLAorICAgICAgICAgICAgICAgICAgICBF
ZGdlKGNoaWxkKSk7CisgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKHN0YXR1
cy5udW1WYXJpYW50cygpID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgZW1pdFB1dEJ5T2Zm
c2V0KGluZGV4SW5CbG9jaywgbm9kZSwgYmFzZVZhbHVlLCBzdGF0dXNbMF0sIGlkZW50aWZpZXJO
dW1iZXIpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEyLDYgKzMx
Miw5IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEF0
b21pY3NYb3I6CiAgICAgY2FzZSBBdG9taWNzSXNMb2NrRnJlZToKICAgICBjYXNlIE1hdGNoU3Ry
dWN0dXJlOgorICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJH
ZXRCeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgY2FzZSBQdXNoV2l0aFNjb3BlOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTM4LDYgKzIxMzgsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldEdsb2JhbFRo
aXM6CiAgICAgICAgIGNhc2UgRXh0cmFjdFZhbHVlRnJvbVdlYWtNYXBHZXQ6CiAgICAgICAgIGNh
c2UgQ1BVSW50cmluc2ljOgorICAgICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAg
ICAgICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJ
ZFN0YXR1czoKICAgICAgICAgICAgIGJyZWFrOwogI2Vsc2UKICAgICAgICAgZGVmYXVsdDoKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAyMzIyMjcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzU2LDYgKzM1NiwxMiBAQCB2b2lkIEdyYXBoOjpkdW1wKFByaW50U3RyZWFtJiBvdXQs
IGNvbnN0CiAgICAgICAgIG91dC5wcmludChjb21tYSwgImlnbm9yZUxhc3RJbmRleElzV3JpdGFi
bGUgPSAiLCBub2RlLT5pZ25vcmVMYXN0SW5kZXhJc1dyaXRhYmxlKCkpOwogICAgIGlmIChub2Rl
LT5pc0NvbnN0YW50KCkpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgcG9pbnRlckR1bXBJbkNv
bnRleHQobm9kZS0+Y29uc3RhbnQoKSwgY29udGV4dCkpOworICAgIGlmIChub2RlLT5oYXNDYWxs
TGlua1N0YXR1cygpKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICpub2RlLT5jYWxsTGlua1N0
YXR1cygpKTsKKyAgICBpZiAobm9kZS0+aGFzR2V0QnlJZFN0YXR1cygpKQorICAgICAgICBvdXQu
cHJpbnQoY29tbWEsICpub2RlLT5nZXRCeUlkU3RhdHVzKCkpOworICAgIGlmIChub2RlLT5oYXNQ
dXRCeUlkU3RhdHVzKCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgKm5vZGUtPnB1dEJ5SWRT
dGF0dXMoKSk7CiAgICAgaWYgKG5vZGUtPmlzSnVtcCgpKQogICAgICAgICBvdXQucHJpbnQoY29t
bWEsICJUOiIsICpub2RlLT50YXJnZXRCbG9jaygpKTsKICAgICBpZiAobm9kZS0+aXNCcmFuY2go
KSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3Bw
CShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
bXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg4LDYgKzE4OCw4IEBAIHZvaWQgSklUQ29t
cGlsZXI6OmNvbXBpbGVFeGNlcHRpb25IYW5kbGUKIAogdm9pZCBKSVRDb21waWxlcjo6bGluayhM
aW5rQnVmZmVyJiBsaW5rQnVmZmVyKQogeworICAgIG1faml0Q29kZS0+Y29tbW9uLnJlY29yZGVk
U3RhdHVzZXMgPSBXVEZNb3ZlKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMpOworICAg
IAogICAgIC8vIExpbmsgdGhlIGNvZGUsIHBvcHVsYXRlIGRhdGEgaW4gQ29kZUJsb2NrIGRhdGEg
c3RydWN0dXJlcy4KICAgICBtX2ppdENvZGUtPmNvbW1vbi5mcmFtZVJlZ2lzdGVyQ291bnQgPSBt
X2dyYXBoLmZyYW1lUmVnaXN0ZXJDb3VudCgpOwogICAgIG1faml0Q29kZS0+Y29tbW9uLnJlcXVp
cmVkUmVnaXN0ZXJDb3VudEZvckV4aXQgPSBtX2dyYXBoLnJlcXVpcmVkUmVnaXN0ZXJDb3VudEZv
ckV4aXQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAko
cmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSw5IEBAIEV4aXRNb2RlIG1heUV4aXRJ
bXBsKEdyYXBoJiBncmFwaCwgTm9kZSoKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CiAgICAgY2Fz
ZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CiAgICAgY2FzZSBOdWtlU3RydWN0dXJlQW5kU2V0
QnV0dGVyZmx5OgorICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgY2FzZSBGaWx0
ZXJHZXRCeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAg
YnJlYWs7CiAKICAgICBjYXNlIFN0ckNhdDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjc2OSw2ICsyNzY5LDM5IEBAIHB1YmxpYzoKICAg
ICAgICAgQVNTRVJUKG9wKCkgPT0gVGhyb3dTdGF0aWNFcnJvcik7CiAgICAgICAgIHJldHVybiBt
X29wSW5mby5hczx1aW50MzJfdD4oKTsKICAgICB9CisgICAgCisgICAgYm9vbCBoYXNDYWxsTGlu
a1N0YXR1cygpCisgICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBGaWx0ZXJDYWxsTGlua1N0
YXR1czsKKyAgICB9CisgICAgCisgICAgQ2FsbExpbmtTdGF0dXMqIGNhbGxMaW5rU3RhdHVzKCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChoYXNDYWxsTGlua1N0YXR1cygpKTsKKyAgICAgICAgcmV0
dXJuIG1fb3BJbmZvLmFzPENhbGxMaW5rU3RhdHVzKj4oKTsKKyAgICB9CisgICAgCisgICAgYm9v
bCBoYXNHZXRCeUlkU3RhdHVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBvcCgpID09IEZpbHRl
ckdldEJ5SWRTdGF0dXM7CisgICAgfQorICAgIAorICAgIEdldEJ5SWRTdGF0dXMqIGdldEJ5SWRT
dGF0dXMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc0dldEJ5SWRTdGF0dXMoKSk7CisgICAg
ICAgIHJldHVybiBtX29wSW5mby5hczxHZXRCeUlkU3RhdHVzKj4oKTsKKyAgICB9CisgICAgCisg
ICAgYm9vbCBoYXNQdXRCeUlkU3RhdHVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBvcCgpID09
IEZpbHRlclB1dEJ5SWRTdGF0dXM7CisgICAgfQorICAgIAorICAgIFB1dEJ5SWRTdGF0dXMqIHB1
dEJ5SWRTdGF0dXMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc1B1dEJ5SWRTdGF0dXMoKSk7
CisgICAgICAgIHJldHVybiBtX29wSW5mby5hczxQdXRCeUlkU3RhdHVzKj4oKTsKKyAgICB9CiAK
ICAgICB2b2lkIGR1bXBDaGlsZHJlbihQcmludFN0cmVhbSYgb3V0KQogICAgIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDIzMjIyNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzk0LDExICszOTQsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAg
bWFjcm8oR2V0QXJndW1lbnQsIE5vZGVSZXN1bHRKUykgXAogICAgIFwKICAgICBtYWNybyhOZXdG
dW5jdGlvbiwgTm9kZVJlc3VsdEpTKSBcCi0gICAgXAogICAgIG1hY3JvKE5ld0dlbmVyYXRvckZ1
bmN0aW9uLCBOb2RlUmVzdWx0SlMpIFwKLSAgICBcCiAgICAgbWFjcm8oTmV3QXN5bmNHZW5lcmF0
b3JGdW5jdGlvbiwgTm9kZVJlc3VsdEpTKSBcCi0gICAgXAogICAgIG1hY3JvKE5ld0FzeW5jRnVu
Y3Rpb24sIE5vZGVSZXN1bHRKUykgXAogICAgIFwKICAgICAvKiBCbG9jayB0ZXJtaW5hbHMuICov
XApAQCAtNDc1LDYgKzQ3MiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAg
ICAgXAogICAgIC8qIFVzZWQgZm9yICR2bSBwZXJmb3JtYW5jZSBkZWJ1Z2dpbmcgKi8gXAogICAg
IG1hY3JvKENQVUludHJpbnNpYywgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAor
ICAgIFwKKyAgICAvKiBVc2VkIHRvIHByb3ZpZGUgZmVlZGJhY2sgdG8gdGhlIElDIHByb2ZpbGVy
LiAqLyBcCisgICAgbWFjcm8oRmlsdGVyQ2FsbExpbmtTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKKyAgICBtYWNybyhGaWx0ZXJHZXRCeUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisg
ICAgbWFjcm8oRmlsdGVyUHV0QnlJZFN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAogCiAKIC8v
IFRoaXMgZW51bSBnZW5lcmF0ZXMgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaWQgZm9yIGFs
bCBOb2RlIHR5cGVzLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0QmFzZS5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDExICs0MiwxNyBA
QCB2b2lkIE9TUkV4aXRCYXNlOjpjb25zaWRlckFkZGluZ0FzRnJlcXVlCiAgICAgICAgIGJhc2Vs
aW5lQ29kZUJsb2NrRm9yT3JpZ2luQW5kQmFzZWxpbmVDb2RlQmxvY2soCiAgICAgICAgICAgICBt
X2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZSwgcHJvZmlsZWRDb2RlQmxvY2spOwogICAgIGlmIChz
b3VyY2VQcm9maWxlZENvZGVCbG9jaykgeworICAgICAgICBFeGl0aW5nSW5saW5lS2luZCBpbmxp
bmVLaW5kOworICAgICAgICBpZiAobV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGUuaW5saW5lQ2Fs
bEZyYW1lKQorICAgICAgICAgICAgaW5saW5lS2luZCA9IEV4aXRGcm9tSW5saW5lZDsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgaW5saW5lS2luZCA9IEV4aXRGcm9tTm90SW5saW5lZDsKKyAg
ICAgICAgCiAgICAgICAgIEZyZXF1ZW50RXhpdFNpdGUgc2l0ZTsKICAgICAgICAgaWYgKG1fd2Fz
SG9pc3RlZCkKLSAgICAgICAgICAgIHNpdGUgPSBGcmVxdWVudEV4aXRTaXRlKEhvaXN0aW5nRmFp
bGVkLCBqaXRUeXBlKTsKKyAgICAgICAgICAgIHNpdGUgPSBGcmVxdWVudEV4aXRTaXRlKEhvaXN0
aW5nRmFpbGVkLCBqaXRUeXBlLCBpbmxpbmVLaW5kKTsKICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgc2l0ZSA9IEZyZXF1ZW50RXhpdFNpdGUobV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGUuYnl0
ZWNvZGVJbmRleCwgbV9raW5kLCBqaXRUeXBlKTsKKyAgICAgICAgICAgIHNpdGUgPSBGcmVxdWVu
dEV4aXRTaXRlKG1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlLmJ5dGVjb2RlSW5kZXgsIG1fa2lu
ZCwgaml0VHlwZSwgaW5saW5lS2luZCk7CiAgICAgICAgIEV4aXRQcm9maWxlOjphZGQoc291cmNl
UHJvZmlsZWRDb2RlQmxvY2ssIHNpdGUpOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2lu
Z1BoYXNlLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzU2LDYgKzc1Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBwcm9tb3RlTG9j
YWxIZWFwKCk7CisgICAgICAgIHJlbW92ZUlDU3RhdHVzRmlsdGVycygpOwogCiAgICAgICAgIGlm
IChPcHRpb25zOjp2YWxpZGF0ZUdyYXBoQXRFYWNoUGhhc2UoKSkKICAgICAgICAgICAgIERGRzo6
dmFsaWRhdGUobV9ncmFwaCwgRHVtcEdyYXBoLCBncmFwaEJlZm9yZVNpbmtpbmcpOwpAQCAtMTA4
OCw2ICsxMDg5LDExIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgUHV0SGludDoKICAgICAgICAg
ICAgIC8vIEhhbmRsZWQgYnkgT1NSIGF2YWlsYWJpbGl0eSBhbmFseXNpcwogICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoK
KyAgICAgICAgY2FzZSBGaWx0ZXJHZXRCeUlkU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlclB1
dEJ5SWRTdGF0dXM6CisgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgbV9ncmFwaC5kb1RvQ2hpbGRyZW4oCkBAIC0yMzMxLDYgKzIzMzcsMjQgQEAgcHJp
dmF0ZToKIAogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KKyAg
ICAKKyAgICB2b2lkIHJlbW92ZUlDU3RhdHVzRmlsdGVycygpCisgICAgeworICAgICAgICBmb3Ig
KEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigpKSB7Cisg
ICAgICAgICAgICBmb3IgKE5vZGUqIG5vZGUgOiAqYmxvY2spIHsKKyAgICAgICAgICAgICAgICBz
d2l0Y2ggKG5vZGUtPm9wKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZpbHRlckNhbGxMaW5r
U3RhdHVzOgorICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICAg
ICAgICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CisgICAgICAgICAgICAgICAgICAg
IGlmIChub2RlLT5jaGlsZDEoKS0+aXNQaGFudG9tQWxsb2NhdGlvbigpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+cmVtb3ZlV2l0aG91dENoZWNrcygpOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CiAKICAgICAvLyBUaGlzIGlzIGEgZ3JlYXQgd2F5IG9mIGFza2luZyB2YWx1ZS0+aXNTdGls
bFZhbGlkKCkgd2l0aG91dCBoYXZpbmcgdG8gd29ycnkgYWJvdXQgZ2V0dGluZwogICAgIC8vIGRp
ZmZlcmVudCBhbnN3ZXJzLiBJdCB0dXJucyBvdXQgdGhhdCB0aGlzIGFuYWx5c2lzIHdvcmtzIE9L
IHJlZ2FyZGxlc3Mgb2Ygd2hhdCB0aGlzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1BsYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UGxhbi5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUGxhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzMyw2ICs2MzMsOCBAQCB2b2lkIFBsYW46
OmNoZWNrTGl2ZW5lc3NBbmRWaXNpdENoaWxkcmVuCiAgICAgY2xlYW5NdXN0SGFuZGxlVmFsdWVz
SWZOZWNlc3NhcnkoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtdXN0SGFuZGxlVmFsdWVzLnNp
emUoKTsgaS0tOykKICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChtdXN0SGFuZGxl
VmFsdWVzW2ldKTsKKyAgICAKKyAgICByZWNvcmRlZFN0YXR1c2VzLm1hcmtJZkNoZWFwKHZpc2l0
b3IpOwogCiAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxvY2spOwogICAgIHZp
c2l0b3IuYXBwZW5kVW5iYXJyaWVyZWQoY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKTsKQEAgLTY0
OSw2ICs2NTEsMTEgQEAgdm9pZCBQbGFuOjpjaGVja0xpdmVuZXNzQW5kVmlzaXRDaGlsZHJlbgog
ICAgIHRyYW5zaXRpb25zLnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiB9CiAKK3ZvaWQgUGxhbjo6
ZmluYWxpemVJbkdDKCkKK3sKKyAgICByZWNvcmRlZFN0YXR1c2VzLmZpbmFsaXplV2l0aG91dERl
bGV0aW5nKCk7Cit9CisKIGJvb2wgUGxhbjo6aXNLbm93blRvQmVMaXZlRHVyaW5nR0MoKQogewog
ICAgIGlmIChzdGFnZSA9PSBDYW5jZWxsZWQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1BsYW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1BsYW4uaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQbGFuLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiRGVm
ZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiT3BlcmFuZHMuaCIKICNpbmNs
dWRlICJQcm9maWxlckNvbXBpbGF0aW9uLmgiCisjaW5jbHVkZSAiUmVjb3JkZWRTdGF0dXNlcy5o
IgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZD
b3VudGVkLmg+CiAKQEAgLTcyLDYgKzczLDcgQEAgc3RydWN0IFBsYW4gOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZQogICAgIHZvaWQgaXRlcmF0ZUNvZGVCbG9ja3NGb3JHQyhjb25zdCBGdW5j
Jik7CiAgICAgdm9pZCBjaGVja0xpdmVuZXNzQW5kVmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYp
OwogICAgIGJvb2wgaXNLbm93blRvQmVMaXZlRHVyaW5nR0MoKTsKKyAgICB2b2lkIGZpbmFsaXpl
SW5HQygpOwogICAgIHZvaWQgY2FuY2VsKCk7CiAKICAgICBib29sIGNhblRpZXJVcEFuZE9TUkVu
dGVyKCkgY29uc3QgeyByZXR1cm4gIXRpZXJVcEFuZE9TUkVudGVyQnl0ZWNvZGVzLmlzRW1wdHko
KTsgfQpAQCAtMTA0LDYgKzEwNiw3IEBAIHN0cnVjdCBQbGFuIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGUKICAgICBEZXNpcmVkSWRlbnRpZmllcnMgaWRlbnRpZmllcnM7CiAgICAgRGVzaXJl
ZFdlYWtSZWZlcmVuY2VzIHdlYWtSZWZlcmVuY2VzOwogICAgIERlc2lyZWRUcmFuc2l0aW9ucyB0
cmFuc2l0aW9uczsKKyAgICBSZWNvcmRlZFN0YXR1c2VzIHJlY29yZGVkU3RhdHVzZXM7CiAgICAg
CiAgICAgYm9vbCB3aWxsVHJ5VG9UaWVyVXAgeyBmYWxzZSB9OwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
MDYsNiArMTIwNiw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSW5pdGlhbGl6ZUVudHJ5cG9p
bnRBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgV2Vha1NldEFkZDoKICAgICAgICAgY2FzZSBXZWFr
TWFwU2V0OgorICAgICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAgICAgICBjYXNl
IEZpbHRlckdldEJ5SWRTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIC8vIFRoaXMgZ2V0cyBp
Z25vcmVkIGJlY2F1c2UgaXQgb25seSBwcmV0ZW5kcyB0byBwcm9kdWNlIGEgdmFsdWUuCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNp
b24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3OCw2ICs0NzgsMTMgQEAgYm9vbCBzYWZlVG9FeGVjdXRl
KEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgICAgICAvLyBhbHJlYWR5IGZvcmNlIHRoZXNlIHRo
aW5ncyB0byBiZSBvcmRlcmVkIHByZWNpc2VseS4gSSdtIGp1c3Qgbm90IGNvbmZpZGVudCBlbm91
Z2ggaW4gbXkKICAgICAgICAgLy8gZWZmZWN0IGJhc2VkIG1lbW9yeSBtb2RlbCB0byByZWx5IHNv
bGVseSBvbiB0aGF0IHJpZ2h0IG5vdy4KICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAK
KyAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0
YXR1czoKKyAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CisgICAgICAgIC8vIFdlIGRvbid0
IHdhbnQgdGhlc2UgdG8gYmUgbW92ZWQgYW55d2hlcmUgb3RoZXIgdGhhbiB3aGVyZSB3ZSBwdXQg
dGhlbSwgc2luY2Ugd2Ugd2FudCB0aGVtCisgICAgICAgIC8vIHRvIGNhcHR1cmUgInByb2ZpbGlu
ZyIgYXQgdGhlIHBvaW50IGluIGNvbnRyb2wgZmxvdyBoZXJlIHRoZSB1c2VyIHB1dCB0aGVtLgor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjYXNlIEdldEJ5VmFsOgogICAgIGNhc2UgR2V0
SW5kZXhlZFByb3BlcnR5U3RvcmFnZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMjMyMjI3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDAzMyw2ICs0MDMzLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIENoZWNrU3RydWN0dXJlT3JFbXB0eToKICAg
ICAgICAgREZHX0NSQVNIKG1faml0LmdyYXBoKCksIG5vZGUsICJDaGVja1N0cnVjdHVyZU9yRW1w
dHkgb25seSB1c2VkIGluIDY0LWJpdCBERkciKTsKICAgICAgICAgYnJlYWs7CisgICAgICAgIAor
ICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJHZXRCeUlkU3Rh
dHVzOgorICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKKyAgICAgICAgYnJlYWs7CiAKICAg
ICBjYXNlIExhc3ROb2RlVHlwZToKICAgICBjYXNlIFBoaToKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjMy
MjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDYyNiw2ICs0NjI2LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2Fz
ZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0dXM6Cisg
ICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgorICAgICAgICBub1Jlc3VsdChub2RlKTsKKyAg
ICAgICAgYnJlYWs7CisKICNlbHNlIC8vIEVOQUJMRShGVExfSklUKQogICAgIGNhc2UgQ2hlY2tU
aWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhh
c2UuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODk4LDEwICs4
OTgsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBUYWlsQ2FsbDogewogICAgICAgICAgICAg
RXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBudWxscHRyOwogICAgICAgICAgICAgRWRnZSBj
YWxsZWUgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCk7Ci0gICAgICAgICAgICBpZiAo
SlNGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNGdW5j
dGlvbio+KHZtKCkpKQorICAgICAgICAgICAgQ2FsbFZhcmlhbnQgY2FsbFZhcmlhbnQ7CisgICAg
ICAgICAgICBpZiAoSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29u
c3RhbnQ8SlNGdW5jdGlvbio+KHZtKCkpKSB7CiAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZSA9
IGZ1bmN0aW9uLT5leGVjdXRhYmxlKCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChjYWxsZWUtPmlz
RnVuY3Rpb25BbGxvY2F0aW9uKCkpCisgICAgICAgICAgICAgICAgY2FsbFZhcmlhbnQgPSBDYWxs
VmFyaWFudChmdW5jdGlvbik7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGNhbGxlZS0+aXNGdW5j
dGlvbkFsbG9jYXRpb24oKSkgewogICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBjYWxsZWUt
PmNhc3RPcGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCk7CisgICAgICAgICAgICAgICAgY2Fs
bFZhcmlhbnQgPSBDYWxsVmFyaWFudChleGVjdXRhYmxlKTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIAogICAgICAgICAgICAgaWYgKCFleGVjdXRhYmxlKQogICAgICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtOTE5LDYgKzkyMyw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgCisgICAgICAgICAgICBtX2dyYXBoLm1fcGxhbi5yZWNv
cmRlZFN0YXR1c2VzLmFkZENhbGxMaW5rU3RhdHVzKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLCBD
YWxsTGlua1N0YXR1cyhjYWxsVmFyaWFudCkpOworICAgICAgICAgICAgCiAgICAgICAgICAgICBt
X25vZGUtPmNvbnZlcnRUb0RpcmVjdENhbGwobV9ncmFwaC5mcmVlemUoZXhlY3V0YWJsZSkpOwog
ICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAJKHJldmlzaW9uIDIzMjIy
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zOTMsOCArMzkzLDEwIEBAIHZvaWQgV29ya2xpc3Q6OnJlbW92ZURlYWRQbGFu
cyhWTSYgdm0pCiAgICAgICAgICAgICBQbGFuKiBwbGFuID0gaXRlci0+dmFsdWUuZ2V0KCk7CiAg
ICAgICAgICAgICBpZiAocGxhbi0+dm0gIT0gJnZtKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgaWYgKHBsYW4tPmlzS25vd25Ub0JlTGl2ZUR1cmluZ0dDKCkpCisgICAg
ICAgICAgICBpZiAocGxhbi0+aXNLbm93blRvQmVMaXZlRHVyaW5nR0MoKSkgeworICAgICAgICAg
ICAgICAgIHBsYW4tPmZpbmFsaXplSW5HQygpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgfQogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocGxhbi0+c3RhZ2UgIT0g
UGxhbjo6Q2FuY2VsbGVkKTsgLy8gU2hvdWxkIG5vdCBiZSBjYW5jZWxsZWQsIHlldC4KICAgICAg
ICAgICAgIEFTU0VSVCghZGVhZFBsYW5LZXlzLmNvbnRhaW5zKHBsYW4tPmtleSgpKSk7CiAgICAg
ICAgICAgICBkZWFkUGxhbktleXMuYWRkKHBsYW4tPmtleSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCShy
ZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX21pbkNh
cGFjaXR5LCBEaXJlY3RBcmd1bWVudHM6Om9mZnNldE9mTWluQ2FwYWNpdHkoKSkgXAogICAgIG1h
Y3JvKERpcmVjdEFyZ3VtZW50c19tYXBwZWRBcmd1bWVudHMsIERpcmVjdEFyZ3VtZW50czo6b2Zm
c2V0T2ZNYXBwZWRBcmd1bWVudHMoKSkgXAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19tb2Rp
ZmllZEFyZ3VtZW50c0Rlc2NyaXB0b3IsIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZNb2RpZmll
ZEFyZ3VtZW50c0Rlc2NyaXB0b3IoKSkgXAorICAgIG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFfYWxs
b2NhdG9yLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxl
KCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZBbGxvY2F0b3IoKSkgXAorICAg
IG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFfc3RydWN0dXJlLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZz
ZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6
b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSkgXAogICAgIG1hY3JvKEdldHRlclNldHRlcl9nZXR0ZXIsIEdl
dHRlclNldHRlcjo6b2Zmc2V0T2ZHZXR0ZXIoKSkgXAogICAgIG1hY3JvKEdldHRlclNldHRlcl9z
ZXR0ZXIsIEdldHRlclNldHRlcjo6b2Zmc2V0T2ZTZXR0ZXIoKSkgXAogICAgIG1hY3JvKEpTQXJy
YXlCdWZmZXJWaWV3X2xlbmd0aCwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkp
IFwKQEAgLTExMiwxMCArMTE0LDEwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsK
ICAgICBtYWNybyhTdHJpbmdJbXBsX2xlbmd0aCwgU3RyaW5nSW1wbDo6bGVuZ3RoTWVtb3J5T2Zm
c2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfY2xhc3NJbmZvLCBTdHJ1Y3R1cmU6OmNsYXNz
SW5mb09mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlX2dsb2JhbE9iamVjdCwgU3RydWN0
dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSkgXAorICAgIG1hY3JvKFN0cnVjdHVyZV9pbmRleGlu
Z01vZGVJbmNsdWRpbmdIaXN0b3J5LCBTdHJ1Y3R1cmU6OmluZGV4aW5nTW9kZUluY2x1ZGluZ0hp
c3RvcnlPZmZzZXQoKSkgXAorICAgIG1hY3JvKFN0cnVjdHVyZV9pbmxpbmVDYXBhY2l0eSwgU3Ry
dWN0dXJlOjppbmxpbmVDYXBhY2l0eU9mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlX3By
b3RvdHlwZSwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSkgXAogICAgIG1hY3JvKFN0cnVj
dHVyZV9zdHJ1Y3R1cmVJRCwgU3RydWN0dXJlOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSBcCi0gICAg
bWFjcm8oU3RydWN0dXJlX2lubGluZUNhcGFjaXR5LCBTdHJ1Y3R1cmU6OmlubGluZUNhcGFjaXR5
T2Zmc2V0KCkpIFwKLSAgICBtYWNybyhTdHJ1Y3R1cmVfaW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlz
dG9yeSwgU3RydWN0dXJlOjppbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5T2Zmc2V0KCkpIFwK
ICAgICBtYWNybyhIYXNoTWFwSW1wbF9jYXBhY2l0eSwgSGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tl
dDxIYXNoTWFwQnVja2V0RGF0YUtleT4+OjpvZmZzZXRPZkNhcGFjaXR5KCkpIFwKICAgICBtYWNy
byhIYXNoTWFwSW1wbF9idWZmZXIsICBIYXNoTWFwSW1wbDxIYXNoTWFwQnVja2V0PEhhc2hNYXBC
dWNrZXREYXRhS2V5Pj46Om9mZnNldE9mQnVmZmVyKCkpIFwKICAgICBtYWNybyhIYXNoTWFwSW1w
bF9oZWFkLCAgSGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT4+
OjpvZmZzZXRPZkhlYWQoKSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTEsNiAr
MzUxLDEwIEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBj
YXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKICAgICBjYXNl
IE1hdGNoU3RydWN0dXJlOgorICAgIGNhc2UgQ3JlYXRlVGhpczoKKyAgICBjYXNlIEZpbHRlckNh
bGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICBjYXNlIEZp
bHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgIC8vIFRoZXNlIGFyZSBPSy4KICAgICAgICAgYnJl
YWs7CiAKQEAgLTM2Miw3ICszNjYsNiBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBp
bGUoTm9kZSogCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBJZGVudGl0eVdpdGhQcm9maWxl
OgotICAgIGNhc2UgQ3JlYXRlVGhpczoKICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgogICAg
IGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1
cm46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5MSw2ICszOTEsOCBAQCBwdWJsaWM6
CiAKICAgICAgICAgLy8gV2UgcHV0IHRoZSBibG9ja3MgaW50byB0aGUgQjMgcHJvY2VkdXJlIGlu
IGEgc3VwZXIgd2VpcmQgb3JkZXIuIE5vdyB3ZSByZW9yZGVyIHRoZW0uCiAgICAgICAgIG1fb3V0
LmFwcGx5QmxvY2tPcmRlcigpOworICAgICAgICAKKyAgICAgICAgbV9mdGxTdGF0ZS5qaXRDb2Rl
LT5jb21tb24ucmVjb3JkZWRTdGF0dXNlcyA9IFdURk1vdmUobV9ncmFwaC5tX3BsYW4ucmVjb3Jk
ZWRTdGF0dXNlcyk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtODQ3LDYgKzg0OSw5IEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgTmV3QXJyYXlXaXRoU3ByZWFkOgogICAgICAgICAgICAgY29tcGls
ZU5ld0FycmF5V2l0aFNwcmVhZCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
Q3JlYXRlVGhpczoKKyAgICAgICAgICAgIGNvbXBpbGVDcmVhdGVUaGlzKCk7CisgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBTcHJlYWQ6CiAgICAgICAgICAgICBjb21waWxlU3ByZWFk
KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEzMTIsNiArMTMxNyw5IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhc2UgQm90dG9tVmFsdWU6CiAgICAgICAgIGNhc2UgS2lsbFN0YWNrOgogICAgICAg
ICBjYXNlIEluaXRpYWxpemVFbnRyeXBvaW50QXJndW1lbnRzOgorICAgICAgICBjYXNlIEZpbHRl
ckNhbGxMaW5rU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0dXM6CisgICAg
ICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIlVucmVj
b2duaXplZCBub2RlIGluIEZUTCBiYWNrZW5kIik7CkBAIC01NjYyLDYgKzU2NzAsNDAgQEAgcHJp
dmF0ZToKIAogICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgfQorICAgIAorICAgIHZv
aWQgY29tcGlsZUNyZWF0ZVRoaXMoKQorICAgIHsKKyAgICAgICAgTFZhbHVlIGNhbGxlZSA9IGxv
d0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNGdW5jdGlv
bkJsb2NrID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgaGFzUmFyZURh
dGEgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0
Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgbV9vdXQuYnJhbmNoKGlzRnVuY3Rpb24oY2FsbGVlLCBw
cm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpKSwgdXN1YWxseShpc0Z1bmN0aW9uQmxvY2spLCBy
YXJlbHkoc2xvd1BhdGgpKTsKKworICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0
LmFwcGVuZFRvKGlzRnVuY3Rpb25CbG9jaywgaGFzUmFyZURhdGEpOworICAgICAgICBMVmFsdWUg
cmFyZURhdGEgPSBtX291dC5sb2FkUHRyKGNhbGxlZSwgbV9oZWFwcy5KU0Z1bmN0aW9uX3JhcmVE
YXRhKTsKKyAgICAgICAgbV9vdXQuYnJhbmNoKG1fb3V0LmlzWmVybzY0KHJhcmVEYXRhKSwgcmFy
ZWx5KHNsb3dQYXRoKSwgdXN1YWxseShoYXNSYXJlRGF0YSkpOworCisgICAgICAgIG1fb3V0LmFw
cGVuZFRvKGhhc1JhcmVEYXRhLCBzbG93UGF0aCk7CisgICAgICAgIExWYWx1ZSBhbGxvY2F0b3Ig
PSBtX291dC5sb2FkUHRyKHJhcmVEYXRhLCBtX2hlYXBzLkZ1bmN0aW9uUmFyZURhdGFfYWxsb2Nh
dG9yKTsKKyAgICAgICAgTFZhbHVlIHN0cnVjdHVyZSA9IG1fb3V0LmxvYWRQdHIocmFyZURhdGEs
IG1faGVhcHMuRnVuY3Rpb25SYXJlRGF0YV9zdHJ1Y3R1cmUpOworICAgICAgICBMVmFsdWUgYnV0
dGVyZmx5ID0gbV9vdXQuY29uc3RJbnRQdHIoMCk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZh
c3RSZXN1bHQgPSBtX291dC5hbmNob3IoYWxsb2NhdGVPYmplY3QoYWxsb2NhdG9yLCBzdHJ1Y3R1
cmUsIGJ1dHRlcmZseSwgc2xvd1BhdGgpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24pOwor
ICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbCgK
KyAgICAgICAgICAgIEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uQ3JlYXRlVGhpcyks
IG1fY2FsbEZyYW1lLCBjYWxsZWUsIG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT5pbmxpbmVDYXBh
Y2l0eSgpKSkpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAg
bV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIExWYWx1ZSBy
ZXN1bHQgPSBtX291dC5waGkoSW50NjQsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpOworCisgICAg
ICAgIG11dGF0b3JGZW5jZSgpOworICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CisgICAgfQog
CiAgICAgdm9pZCBjb21waWxlU3ByZWFkKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNl
LmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00OSwxMiAr
NDksMTIgQEAgQnl0ZWNvZGVTZXF1ZW5jZTo6Qnl0ZWNvZGVTZXF1ZW5jZShDb2RlQgogICAgICAg
ICBtX2hlYWRlci5hcHBlbmQob3V0LnRvQ1N0cmluZygpKTsKICAgICB9CiAgICAgCi0gICAgU3R1
YkluZm9NYXAgc3R1YkluZm9zOwotICAgIGNvZGVCbG9jay0+Z2V0U3R1YkluZm9NYXAoc3R1Yklu
Zm9zKTsKKyAgICBJQ1N0YXR1c01hcCBzdGF0dXNNYXA7CisgICAgY29kZUJsb2NrLT5nZXRJQ1N0
YXR1c01hcChzdGF0dXNNYXApOwogICAgIAogICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVJbmRl
eCA9IDA7IGJ5dGVjb2RlSW5kZXggPCBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKTsp
IHsKICAgICAgICAgb3V0LnJlc2V0KCk7Ci0gICAgICAgIGNvZGVCbG9jay0+ZHVtcEJ5dGVjb2Rl
KG91dCwgYnl0ZWNvZGVJbmRleCwgc3R1YkluZm9zKTsKKyAgICAgICAgY29kZUJsb2NrLT5kdW1w
Qnl0ZWNvZGUob3V0LCBieXRlY29kZUluZGV4LCBzdGF0dXNNYXApOwogICAgICAgICBPcGNvZGVJ
RCBvcGNvZGVJRCA9IEludGVycHJldGVyOjpnZXRPcGNvZGVJRChjb2RlQmxvY2stPmluc3RydWN0
aW9ucygpW2J5dGVjb2RlSW5kZXhdLnUub3Bjb2RlKTsKICAgICAgICAgbV9zZXF1ZW5jZS5hcHBl
bmQoQnl0ZWNvZGUoYnl0ZWNvZGVJbmRleCwgb3Bjb2RlSUQsIG91dC50b0NTdHJpbmcoKSkpOwog
ICAgICAgICBieXRlY29kZUluZGV4ICs9IG9wY29kZUxlbmd0aChvcGNvZGVJRCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAyMzIyMjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI3NSw2ICsyNzUsNyBAQCBjb25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3NlbWJseVN0cmVh
bWluCiAgICAgdih1bnNpZ25lZCwgbWF4QWNjZXNzVmFyaWFudExpc3RTaXplLCA4LCBOb3JtYWws
IG51bGxwdHIpIFwKICAgICB2KGJvb2wsIHVzZVBvbHl2YXJpYW50RGV2aXJ0dWFsaXphdGlvbiwg
dHJ1ZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihib29sLCB1c2VQb2x5bW9ycGhpY0FjY2Vz
c0lubGluaW5nLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICB2KHVuc2lnbmVkLCBtYXhQ
b2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemUsIDgsIE5vcm1hbCwgbnVsbHB0cikgXAog
ICAgIHYoYm9vbCwgdXNlUG9seW1vcnBoaWNDYWxsSW5saW5pbmcsIHRydWUsIE5vcm1hbCwgbnVs
bHB0cikgXAogICAgIHYoYm9vbCwgdXNlUG9seW1vcnBoaWNDYWxsSW5saW5pbmdGb3JOb25TdHVi
U3RhdHVzLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdih1bnNpZ25lZCwgbWF4UG9s
eW1vcnBoaWNDYWxsVmFyaWFudExpc3RTaXplLCAxNSwgTm9ybWFsLCBudWxscHRyKSBcCkBAIC0z
MjIsOSArMzIzLDYgQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbgog
ICAgIFwKICAgICB2KHVuc2lnbmVkLCBtYXhpbXVtVmFyYXJnc0ZvcklubGluaW5nLCAxMDAsIE5v
cm1hbCwgbnVsbHB0cikgXAogICAgIFwKLSAgICB2KGJvb2wsIHVzZVBvbHl2YXJpYW50Q2FsbElu
bGluaW5nLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKLSAgICB2KGJvb2wsIHVzZVBvbHl2YXJp
YW50QnlJZElubGluaW5nLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKLSAgICBcCiAgICAgdihi
b29sLCB1c2VNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZSwgZmFsc2UsIE5vcm1hbCwgIlNldHRp
bmcgdG8gdHJ1ZSBhbGxvd3MgdGhlIERGRydzIE1heGltYWxGbHVzaEluc2VydGlvblBoYXNlIHRv
IHJ1bi4iKSBcCiAgICAgXAogICAgIHYodW5zaWduZWQsIG1heGltdW1CaW5hcnlTdHJpbmdTd2l0
Y2hDYXNlTGVuZ3RoLCA1MCwgTm9ybWFsLCBudWxscHRyKSBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341825</attachid>
            <date>2018-06-01 21:26:35 -0700</date>
            <delta_ts>2018-06-02 11:35:22 -0700</delta_ts>
            <desc>passing so many tests</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>163083</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIzMjIyNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNDQwLDYgKzQ0MCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUEKICAgICBieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgKICAgICBieXRlY29k
ZS9FeGVjdXRpb25Db3VudGVyLmgKICAgICBieXRlY29kZS9FeGl0S2luZC5oCisgICAgYnl0ZWNv
ZGUvRXhpdGluZ0lubGluZUtpbmQuaAogICAgIGJ5dGVjb2RlL0V4aXRpbmdKSVRUeXBlLmgKICAg
ICBieXRlY29kZS9FeHByZXNzaW9uUmFuZ2VJbmZvLmgKICAgICBieXRlY29kZS9IYW5kbGVySW5m
by5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyMzIyMjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIx
MiwxMyArMjEyLDE3IEBAIGJ5dGVjb2RlL0RpcmVjdEV2YWxDb2RlQ2FjaGUuY3BwCiBieXRlY29k
ZS9FdmFsQ29kZUJsb2NrLmNwcAogYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5j
cHAKIGJ5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIuY3BwCitieXRlY29kZS9FeGl0RmxhZy5jcHAK
IGJ5dGVjb2RlL0V4aXRLaW5kLmNwcAorYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuY3BwCiBi
eXRlY29kZS9FeGl0aW5nSklUVHlwZS5jcHAKIGJ5dGVjb2RlL0Z1bGxDb2RlT3JpZ2luLmNwcAog
Ynl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suY3BwCiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNw
cAogYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCiBieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlLmNwcAorYnl0ZWNvZGUvSUNTdGF0dXNNYXAuY3BwCitieXRlY29kZS9JQ1N0YXR1c1V0
aWxzLmNwcAogYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcAogYnl0ZWNvZGUvSW5saW5lQ2FsbEZy
YW1lLmNwcAogYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lU2V0LmNwcApAQCAtMjQ1LDYgKzI0OSw3
IEBAIGJ5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwCiBieXRlY29kZS9QdXRCeUlkRmxh
Z3MuY3BwCiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAogYnl0ZWNvZGUvUHV0QnlJZFZhcmlh
bnQuY3BwCitieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAogYnl0ZWNvZGUvUmVkdWNlV2hp
dGVzcGFjZS5jcHAKIGJ5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmNwcAogYnl0ZWNvZGUvU3BlY3Vs
YXRlZFR5cGUuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI5Nyw2ICsyOTcsMTEgQEAKIAkJ
MEY0MjZBNDkxNDYwQ0JCNzAwMTMxRjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0MjZBNDYxNDYwQ0JBQjAwMTMx
RjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGNDI2QTRCMTQ2MENENkUwMDEzMUY4RiAvKiBEYXRhRm9ybWF0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQyNkE0
QTE0NjBDRDZCMDAxMzFGOEYgLyogRGF0YUZvcm1hdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDMxNzM4MTQ2QkFDNjkwMDdFMzg5MCAvKiBM
aXN0YWJsZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ0QTdCMDIw
QkY2ODYyMDAyMkIxNzEgLyogRXhpdEZsYWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDRBN0FFMjBCRjY4NUYwMDIyQjE3MSAvKiBFeGl0RmxhZy5o
ICovOyB9OworCQkwRjQ0QTdCMTIwQkY2OEM5MDAyMkIxNzEgLyogRXhpdGluZ0lubGluZUtpbmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDRBN0E3
MjBCRjY4NUQwMDIyQjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDRBN0IyMjBCRjY4Q0UwMDIyQjE3
MSAvKiBJQ1N0YXR1c01hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0NEE3QUYyMEJGNjg1RjAwMjJCMTcxIC8qIElDU3RhdHVzTWFwLmggKi87IH07
CisJCTBGNDRBN0IzMjBCRjY4RDEwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ0QTdBQTIwQkY2ODVF
MDAyMkIxNzEgLyogUmVjb3JkZWRTdGF0dXNlcy5oICovOyB9OworCQkwRjQ0QTdCNDIwQkY2OEQ5
MDAyMkIxNzEgLyogVGVybWluYXRlZENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDRBN0E4MjBCRjY4NUUwMDIyQjE3MSAvKiBUZXJt
aW5hdGVkQ29kZU9yaWdpbi5oICovOyB9OwogCQkwRjQ1NzAzOTFCRTQ0QzkxMDA2MkE2MjkgLyog
QWlyRWxpbWluYXRlRGVhZENvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNDU3MDM3MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFk
Q29kZS5oICovOyB9OwogCQkwRjQ1NzAzRDFCRTQ1RjBBMDA2MkE2MjkgLyogQWlyUmVwb3J0VXNl
ZFJlZ2lzdGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY0NTcwM0IxQkU0NUYwQTAwNjJBNjI5IC8qIEFpclJlcG9ydFVzZWRSZWdpc3RlcnMuaCAq
LzsgfTsKIAkJMEY0NTcwNDExQkU1ODRDQTAwNjJBNjI5IC8qIEIzVGltaW5nU2NvcGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDU3MDNGMUJFNTg0
Q0EwMDYyQTYyOSAvKiBCM1RpbWluZ1Njb3BlLmggKi87IH07CkBAIC0yMjg3LDYgKzIyOTIsMTYg
QEAKIAkJMEY0MjZBNEExNDYwQ0Q2QjAwMTMxRjhGIC8qIERhdGFGb3JtYXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YUZvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjQyQjNDMDIwMUVCNTA5MDAzNTcwMzEgLyogQWxsb2NhdG9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFsbG9jYXRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJs
ZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGlzdGFibGVIYW5k
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDRBN0E3MjBCRjY4NUQwMDIy
QjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBFeGl0aW5nSW5saW5lS2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjQ0QTdBODIwQkY2ODVFMDAyMkIxNzEgLyogVGVybWluYXRlZENvZGVPcmlnaW4uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVybWluYXRlZENvZGVPcmlnaW4uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NEE3QTkyMEJGNjg1RTAwMjJCMTcxIC8qIEV4aXRG
bGFnLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4aXRGbGFnLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcx
IC8qIFJlY29yZGVkU3RhdHVzZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVjb3JkZWRTdGF0dXNlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ0QTdB
QjIwQkY2ODVFMDAyMkIxNzEgLyogSUNTdGF0dXNNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSUNTdGF0dXNNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjQ0QTdBQzIwQkY2ODVGMDAyMkIxNzEgLyogRXhpdGluZ0lubGluZUtpbmQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXhpdGluZ0lubGluZUtpbmQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ0QTdBRDIwQkY2ODVGMDAyMkIx
NzEgLyogUmVjb3JkZWRTdGF0dXNlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZWNvcmRlZFN0YXR1c2VzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY0NEE3QUUyMEJGNjg1RjAwMjJCMTcxIC8qIEV4aXRGbGFnLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEV4aXRGbGFnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGNDRBN0FGMjBCRjY4NUYwMDIyQjE3MSAvKiBJQ1N0YXR1c01hcC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJQ1N0YXR1c01hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjQ0QTdCNTIwQzBCRTNGMDAyMkIxNzEgLyogSUNTdGF0dXNVdGlscy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJQ1N0YXR1c1V0aWxzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NTcwMzYxQkU0NEM5MTAwNjJBNjI5IC8q
IEFpckVsaW1pbmF0ZURlYWRDb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEFpckVsaW1pbmF0ZURlYWRDb2RlLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJFbGltaW5h
dGVEZWFkQ29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDU3MDM3MUJF
NDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBBaXJFbGltaW5hdGVEZWFkQ29kZS5oOyBwYXRoID0gYjMvYWlyL0Fp
ckVsaW1pbmF0ZURlYWRDb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDU3
MDNBMUJFNDVGMEEwMDYyQTYyOSAvKiBBaXJSZXBvcnRVc2VkUmVnaXN0ZXJzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpclJlcG9ydFVzZWRSZWdpc3RlcnMuY3Bw
OyBwYXRoID0gYjMvYWlyL0FpclJlcG9ydFVzZWRSZWdpc3RlcnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzY1OCw2ICs3NjczLDEwIEBACiAJCQkJMEY2MEZFOEUxRkZDMzZG
RDAwMDMzMjBBIC8qIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCAqLywKIAkJCQkwRjU2QTFE
NDE1MDAxQ0YyMDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5jcHAgKi8sCiAJCQkJMEY1NkEx
RDExNTAwMEYzMTAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNvdW50ZXIuaCAqLywKKwkJCQkwRjQ0QTdB
OTIwQkY2ODVFMDAyMkIxNzEgLyogRXhpdEZsYWcuY3BwICovLAorCQkJCTBGNDRBN0FFMjBCRjY4
NUYwMDIyQjE3MSAvKiBFeGl0RmxhZy5oICovLAorCQkJCTBGNDRBN0FDMjBCRjY4NUYwMDIyQjE3
MSAvKiBFeGl0aW5nSW5saW5lS2luZC5jcHAgKi8sCisJCQkJMEY0NEE3QTcyMEJGNjg1RDAwMjJC
MTcxIC8qIEV4aXRpbmdJbmxpbmVLaW5kLmggKi8sCiAJCQkJMEYwMzMyQkYxOEFERkFFMTAwNUY5
NzlBIC8qIEV4aXRpbmdKSVRUeXBlLmNwcCAqLywKIAkJCQkwRjNBQzc1MzE4OEU1RUM4MDAzMjAy
OUYgLyogRXhpdGluZ0pJVFR5cGUuaCAqLywKIAkJCQkwRkIxMDU4MjE2NzU0ODBDMDBGOEFCNkUg
LyogRXhpdEtpbmQuY3BwICovLApAQCAtNzY3NCw2ICs3NjkzLDkgQEAKIAkJCQkwRjAzMzJDMjE4
QjAxNzYzMDA1Rjk3OUEgLyogR2V0QnlJZFZhcmlhbnQuaCAqLywKIAkJCQkxNEFEOTEwODFEQ0E5
Mjk0MDAxNEY5RkUgLyogR2xvYmFsQ29kZUJsb2NrLmggKi8sCiAJCQkJMEYwQjgzQTgxNEJDRjU1
RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi8sCisJCQkJMEY0NEE3QUIyMEJGNjg1RTAwMjJC
MTcxIC8qIElDU3RhdHVzTWFwLmNwcCAqLywKKwkJCQkwRjQ0QTdBRjIwQkY2ODVGMDAyMkIxNzEg
LyogSUNTdGF0dXNNYXAuaCAqLywKKwkJCQkwRjQ0QTdCNTIwQzBCRTNGMDAyMkIxNzEgLyogSUNT
dGF0dXNVdGlscy5jcHAgKi8sCiAJCQkJMEZCMzk5QkQyMEFGNkIzODAwMTdFMjEzIC8qIElDU3Rh
dHVzVXRpbHMuaCAqLywKIAkJCQk3OTA1QkI2NjFEMTIwNTBFMDAxOUZFNTcgLyogSW5saW5lQWNj
ZXNzLmNwcCAqLywKIAkJCQk3OTA1QkI2NzFEMTIwNTBFMDAxOUZFNTcgLyogSW5saW5lQWNjZXNz
LmggKi8sCkBAIC03NzMwLDYgKzc3NTIsOCBAQAogCQkJCTBGOTNCNEE3MThCOTJDNEQwMDE3OEEz
RiAvKiBQdXRCeUlkVmFyaWFudC5jcHAgKi8sCiAJCQkJMEY5M0I0QTgxOEI5MkM0RDAwMTc4QTNG
IC8qIFB1dEJ5SWRWYXJpYW50LmggKi8sCiAJCQkJMEY5RkM4QzExNEUxQjVGQjAwRDUyQUUwIC8q
IFB1dEtpbmQuaCAqLywKKwkJCQkwRjQ0QTdBRDIwQkY2ODVGMDAyMkIxNzEgLyogUmVjb3JkZWRT
dGF0dXNlcy5jcHAgKi8sCisJCQkJMEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcxIC8qIFJlY29yZGVk
U3RhdHVzZXMuaCAqLywKIAkJCQkwRkY2MEFCRjE2NzQwRjgxMDAwMjk3NzkgLyogUmVkdWNlV2hp
dGVzcGFjZS5jcHAgKi8sCiAJCQkJMEZGNjBBQzAxNjc0MEY4MTAwMDI5Nzc5IC8qIFJlZHVjZVdo
aXRlc3BhY2UuaCAqLywKIAkJCQkwRjU1NDFBRjE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBv
aW50ZXIuY3BwICovLApAQCAtNzc0NCw2ICs3NzY4LDcgQEAKIAkJCQlCQ0NGMEQwNzBFRjBBQUI5
MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1YkluZm8uaCAqLywKIAkJCQkwRjRBMzhGNzFDOEUxM0RG
MDAxOTAzMTggLyogU3VwZXJTYW1wbGVyLmNwcCAqLywKIAkJCQkwRjRBMzhGODFDOEUxM0RGMDAx
OTAzMTggLyogU3VwZXJTYW1wbGVyLmggKi8sCisJCQkJMEY0NEE3QTgyMEJGNjg1RTAwMjJCMTcx
IC8qIFRlcm1pbmF0ZWRDb2RlT3JpZ2luLmggKi8sCiAJCQkJMEYyRDRERTUxOTgzMkRBQzAwN0Q0
QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgKi8sCiAJCQkJMEYyRDRERTYxOTgzMkRBQzAwN0Q0QjE5
IC8qIFRvVGhpc1N0YXR1cy5oICovLAogCQkJCTBGOTUyQUJBMUI0ODdBNzcwMEMzNjdDNSAvKiBU
cmFja2VkUmVmZXJlbmNlcy5jcHAgKi8sCkBAIC04NDAxLDYgKzg0MjYsNyBAQAogCQkJCTUzRDQ0
NERDMURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUzNDFGQzcyMURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJDNjNCMjFFNjBBRTQ3MDBDMTM4MzkgLyogQjNXaWR0
aC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NEE3QjIyMEJGNjhDRTAwMjJCMTcxIC8qIElDU3Rh
dHVzTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MjY3OEY4RjFBMDMxMDA5MDA2QTMwNkQgLyog
QmFzaWNCbG9ja0xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDdCODNBQzBFNkRCOEM5
MDA0Nzc1QTQgLyogQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg2OTc2RTVGMUZBM0U4QkMwMEU3QzRFMSAvKiBCaWdJbnRDb25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8sCkBAIC04NjIwLDYgKzg2NDYsNyBAQAogCQkJCTg2RUM5REM2MTMyOERGODIwMDJC
MkFENyAvKiBERkdHZW5lcmF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQzlEQzgx
MzI4REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJGQ0NG
QTE4QTYwMDcwMDAxQTI3RjggLyogREZHR3JhcGhTYWZlcG9pbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGNDRBN0IxMjBCRjY4QzkwMDIyQjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZCMTc2NjExOTZCOEY5RTAwOTEwNTJBIC8qIERGR0hlYXBMb2NhdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDODQxNjkxQkE4QzMyMTAwNjE4MzdEIC8qIERGR0lu
ZmVycmVkVHlwZUNoZWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxNEUyMTE4MTI1NzBCMDA5
QjZCNEQgLyogREZHSW5saW5lQ2FjaGVXcmFwcGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTg3NzAs
NiArODc5Nyw3IEBACiAJCQkJQTdBOEFGMzgxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0MzJBcnJh
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzkxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0
NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NDMxN0VBOUY1OTAwQUJCMjE3IC8q
IEZQUkluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDRBN0IzMjBCRjY4RDEwMDIyQjE3MSAv
KiBSZWNvcmRlZFN0YXR1c2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzRFREJGNzFEQjVGRkM5
MDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU1MTNBNjFE
NUE2ODJDMDBDMzJCRDggLyogRnJlZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjU4NUUx
MUVFMDgwNUEwMDk1MTc2RCAvKiBGcmVlTGlzdElubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAt
OTExOSw2ICs5MTQ3LDcgQEAKIAkJCQk3MDEzQ0E4QzFCNDkxQTk0MDBDQUU2MTMgLyogSlNKb2Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0xleGlj
YWxFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjMwRTE2RjVDRDAwQjM0
NDYwIC8qIEpTTG9jay5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NEE3QjAyMEJGNjg2MjAwMjJC
MTcxIC8qIEV4aXRGbGFnLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjVENzA5QzE2REU5OUY0MDBG
Q0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBNEJCN0YzMThB
NDExNzkwMDhBMEZDRCAvKiBKU01hbmFnZWRWYWx1ZUludGVybmFsLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNzAwODc0MjE3Q0JFOEVCMDBDM0U2NDMgLyogSlNNYXAuaCBpbiBIZWFkZXJzICovLApA
QCAtOTQzNSw2ICs5NDY0LDcgQEAKIAkJCQlBNzI5OURBMjE3RDEyODQ4MDA1RjVGRjkgLyogU2V0
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVFOTg0MTFBODg2NUI3MDA3NTRFOTMg
LyogU2V0dXBWYXJhcmdzRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCURDMTdFODE4MUM5Qzkx
RDkwMDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ0QTdC
NDIwQkY2OEQ5MDAyMkIxNzEgLyogVGVybWluYXRlZENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICov
LAogCQkJCURDMTdFODE5MUM5QzkxREIwMDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzMDIyRDMxRTNENzNBNTAwQkFDNDkzIC8qIFNpZ2lsbENy
YXNoQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNEQ4Qzc4MUZDQTNDRkEwMDFEMzJB
QyAvKiBTaW1wbGVNYXJraW5nQ29uc3RyYWludC5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCShyZXZpc2lvbiAyMzIyMjcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2NiwxMiArMjY2LDYgQEAgaW5saW5lIHVuc2lnbmVkIGdldEJ5VmFsSW5mb0J5
dGVjb2RlSW5kZQogICAgIHJldHVybiBpbmZvLT5ieXRlY29kZUluZGV4OwogfQogCi10eXBlZGVm
IEhhc2hNYXA8Q29kZU9yaWdpbiwgQnlWYWxJbmZvKiwgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFz
aD4gQnlWYWxJbmZvTWFwOwotCi0jZWxzZSAvLyBFTkFCTEUoSklUKQotCi10eXBlZGVmIEhhc2hN
YXA8aW50LCB2b2lkKj4gQnlWYWxJbmZvTWFwOwotCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVEdW1wZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTQyNyw3ICs0MjcsNyBAQCBzdGF0aWMgdm9pZCBkdW1wQ2hhaW4oUHJpbnRTdHJlYW0mIG91
dCwgCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgotdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9j
az46OnByaW50R2V0QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlv
biwgY29uc3QgU3R1YkluZm9NYXAmIG1hcCkKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpw
cmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNv
bnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rp
b24gPSBpbnN0cnVjdGlvbnNCZWdpbigpICsgbG9jYXRpb247CiAKQEAgLTQ0Nyw3ICs0NDcsNyBA
QCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRHZXRCeUlkCiAgICAgfQogCiAjaWYg
RU5BQkxFKEpJVCkKLSAgICBpZiAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJQdHIgPSBtYXAuZ2V0
KENvZGVPcmlnaW4obG9jYXRpb24pKSkgeworICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YlB0ciA9IHN0YXR1c01hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpLnN0dWJJbmZvKSB7CiAg
ICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9ICpzdHViUHRyOwogICAgICAgICBp
ZiAoc3R1YkluZm8ucmVzZXRCeUdDKQogICAgICAgICAgICAgb3V0LnByaW50KCIgKFJlc2V0IEJ5
IEdDKSIpOwpAQCAtNDg4LDEyICs0ODgsMTIgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46
OnByaW50R2V0QnlJZAogICAgICAgICBvdXQucHJpbnRmKCIpIik7CiAgICAgfQogI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0obWFwKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdHVzTWFwKTsKICNlbmRp
ZgogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+
OjpwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24s
IGNvbnN0IFN0dWJJbmZvTWFwJiBtYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJp
bnRQdXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25z
dCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQogewogICAgIGNvbnN0IGF1dG8qIGluc3RydWN0aW9u
ID0gaW5zdHJ1Y3Rpb25zQmVnaW4oKSArIGxvY2F0aW9uOwogCkBAIC01MjEsNyArNTIxLDcgQEAg
dm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50UHV0QnlJZAogICAgIH0KIAogI2lmIEVO
QUJMRShKSVQpCi0gICAgaWYgKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViUHRyID0gbWFwLmdldChD
b2RlT3JpZ2luKGxvY2F0aW9uKSkpIHsKKyAgICBpZiAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJQ
dHIgPSBzdGF0dXNNYXAuZ2V0KENvZGVPcmlnaW4obG9jYXRpb24pKS5zdHViSW5mbykgewogICAg
ICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSAqc3R1YlB0cjsKICAgICAgICAgaWYg
KHN0dWJJbmZvLnJlc2V0QnlHQykKICAgICAgICAgICAgIG91dC5wcmludCgiIChSZXNldCBCeSBH
QykiKTsKQEAgLTU0NywxMiArNTQ3LDEyIEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpw
cmludFB1dEJ5SWQKICAgICAgICAgb3V0LnByaW50ZigiKSIpOwogICAgIH0KICNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKG1hcCk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXR1c01hcCk7CiAjZW5kaWYK
IH0KIAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6
cHJpbnRJbkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNv
bnN0IFN0dWJJbmZvTWFwJiBtYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRJ
bkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IElD
U3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb24gPSBp
bnN0cnVjdGlvbnNCZWdpbigpICsgbG9jYXRpb247CiAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lk
IEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRJbkJ5SWRDCiAgICAgVU5VU0VEX1BBUkFNKGlk
ZW50KTsgLy8gdGVsbCB0aGUgY29tcGlsZXIgdG8gc2h1dCB1cCBpbiBjZXJ0YWluIHBsYXRmb3Jt
IGNvbmZpZ3VyYXRpb25zLgogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJQdHIgPSBtYXAuZ2V0KENvZGVPcmlnaW4obG9jYXRpb24pKSkgeworICAgIGlm
IChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YlB0ciA9IHN0YXR1c01hcC5nZXQoQ29kZU9yaWdpbihs
b2NhdGlvbikpLnN0dWJJbmZvKSB7CiAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
byA9ICpzdHViUHRyOwogICAgICAgICBpZiAoc3R1YkluZm8ucmVzZXRCeUdDKQogICAgICAgICAg
ICAgb3V0LnByaW50KCIgKFJlc2V0IEJ5IEdDKSIpOwpAQCAtNjAwLDI2ICs2MDAsMjYgQEAgdm9p
ZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50SW5CeUlkQwogICAgIH0KICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKG91dCk7Ci0gICAgVU5VU0VEX1BBUkFNKG1hcCk7CisgICAgVU5VU0VEX1BB
UkFNKHN0YXR1c01hcCk7CiAjZW5kaWYKIH0KIAogI2lmIEVOQUJMRShKSVQpCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQ2FsbExpbmtT
dGF0dXMoUHJpbnRTdHJlYW0mLCB1bnNpZ25lZCwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJikKK3Zv
aWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQ2FsbExpbmtTdGF0dXMoUHJpbnRTdHJlYW0m
LCB1bnNpZ25lZCwgY29uc3QgSUNTdGF0dXNNYXAmKQogewogfQogCiB0ZW1wbGF0ZTw+Ci12b2lk
IEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBDYWxsTGlua1N0YXR1cyhQcmludFN0cmVh
bSYgb3V0LCB1bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBtYXApCit2
b2lkIEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBDYWxsTGlua1N0YXR1cyhQcmludFN0
cmVhbSYgb3V0LCB1bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01h
cCkKIHsKICAgICBpZiAoYmxvY2soKS0+aml0VHlwZSgpICE9IEpJVENvZGU6OkZUTEpJVCkKLSAg
ICAgICAgb3V0LnByaW50KCIgc3RhdHVzKCIsIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKGJs
b2NrKCksIGxvY2F0aW9uLCBtYXApLCAiKSIpOworICAgICAgICBvdXQucHJpbnQoIiBzdGF0dXMo
IiwgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoYmxvY2soKSwgbG9jYXRpb24sIHN0YXR1c01h
cCksICIpIik7CiB9CiAjZW5kaWYKIAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVj
b2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0
aW9uLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgY2hhciog
b3AsIENhY2hlRHVtcE1vZGUgY2FjaGVEdW1wTW9kZSwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGlu
ZywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBtYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2Nr
Pjo6cHJpbnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCB0eXBl
bmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgY2hhciogb3AsIENhY2hlRHVtcE1v
ZGUgY2FjaGVEdW1wTW9kZSwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZywgY29uc3QgSUNTdGF0
dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBpbnQgZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAg
ICAgaW50IGZ1bmMgPSAoKytpdCktPnUub3BlcmFuZDsKQEAgLTYzOCw3ICs2MzgsNyBAQCB2b2lk
IEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRDYWxsT3AoCiAgICAgICAgICAgICAgICAgb3V0
LnByaW50ZigiIGxsaW50KCVwKSIsIG9iamVjdCk7CiAgICAgICAgIH0KICNpZiBFTkFCTEUoSklU
KQotICAgICAgICBpZiAoQ2FsbExpbmtJbmZvKiBpbmZvID0gbWFwLmdldChDb2RlT3JpZ2luKGxv
Y2F0aW9uKSkpIHsKKyAgICAgICAgaWYgKENhbGxMaW5rSW5mbyogaW5mbyA9IHN0YXR1c01hcC5n
ZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpLmNhbGxMaW5rSW5mbykgewogICAgICAgICAgICAgaWYg
KGluZm8tPmhhdmVMYXN0U2VlbkNhbGxlZSgpKSB7CiAgICAgICAgICAgICAgICAgSlNPYmplY3Qq
IG9iamVjdCA9IGluZm8tPmxhc3RTZWVuQ2FsbGVlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGF1
dG8qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4oKnZtKCksIG9iamVjdCkp
CkBAIC02NDgsOSArNjQ4LDkgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50Q2Fs
bE9wKAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgZHVtcENhbGxMaW5rU3Rh
dHVzKG91dCwgbG9jYXRpb24sIG1hcCk7CisgICAgICAgIGR1bXBDYWxsTGlua1N0YXR1cyhvdXQs
IGxvY2F0aW9uLCBzdGF0dXNNYXApOwogI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKG1hcCk7
CisgICAgICAgIFVOVVNFRF9QQVJBTShzdGF0dXNNYXApOwogI2VuZGlmCiAgICAgfQogICAgICsr
aXQ7CkBAIC02NzgsNyArNjc4LDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50
TG9jYXRpbwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8
QmxvY2s+OjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQmxv
Y2s6Okluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9u
KiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiBzdHViSW5mb3MsIGNvbnN0IENhbGxMaW5rSW5mb01h
cCYgY2FsbExpbmtJbmZvcykKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNv
ZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiBi
ZWdpbiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3Rh
dHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgaW50IGxvY2F0aW9uID0gaXQgLSBiZWdpbjsKICAg
ICBib29sIGhhc1ByaW50ZWRQcm9maWxpbmcgPSBmYWxzZTsKQEAgLTEwNzEsNyArMTA3MSw3IEBA
IHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgaW50IGlk
MCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBs
b2NhdGlvbiwgaXQsICJpbl9ieV9pZCIpOwogICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVz
IiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBpZE5h
bWUoaWQwLCBpZGVudGlmaWVyKGlkMCkpLmRhdGEoKSk7Ci0gICAgICAgIHByaW50SW5CeUlkQ2Fj
aGVTdGF0dXMob3V0LCBsb2NhdGlvbiwgc3R1YkluZm9zKTsKKyAgICAgICAgcHJpbnRJbkJ5SWRD
YWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdGF0dXNNYXApOwogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgY2FzZSBvcF9pbl9ieV92YWw6IHsKQEAgLTEwOTUsNyArMTA5NSw3IEBAIHZvaWQg
Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiZ2V0X2J5X2lkX2RpcmVjdCIpOwogICAgICAgICBv
dXQucHJpbnRmKCIlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShyMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBpZGVudGlmaWVyKGlkMCkpLmRhdGEoKSk7CiAg
ICAgICAgIGl0ICs9IDI7IC8vIEluY3JlbWVudCB1cCB0byB0aGUgdmFsdWUgcHJvZmlsZXIuCi0g
ICAgICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0dWJJbmZvcyk7
CisgICAgICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0YXR1c01h
cCk7CiAgICAgICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmls
aW5nKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTEwNCw3ICsxMTA0LDcgQEAgdm9pZCBC
eXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZQogICAgIGNhc2Ugb3BfZ2V0X2J5X2lk
X3Vuc2V0OgogICAgIGNhc2Ugb3BfZ2V0X2FycmF5X2xlbmd0aDogewogICAgICAgICBwcmludEdl
dEJ5SWRPcChvdXQsIGxvY2F0aW9uLCBpdCk7Ci0gICAgICAgIHByaW50R2V0QnlJZENhY2hlU3Rh
dHVzKG91dCwgbG9jYXRpb24sIHN0dWJJbmZvcyk7CisgICAgICAgIHByaW50R2V0QnlJZENhY2hl
U3RhdHVzKG91dCwgbG9jYXRpb24sIHN0YXR1c01hcCk7CiAgICAgICAgIGR1bXBWYWx1ZVByb2Zp
bGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQpAQCAtMTEzMCw3ICsxMTMwLDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBC
eXRlY29kZQogICAgIH0KICAgICBjYXNlIG9wX3B1dF9ieV9pZDogewogICAgICAgICBwcmludFB1
dEJ5SWRPcChvdXQsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZCIpOwotICAgICAgICBwcmludFB1
dEJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdHViSW5mb3MpOworICAgICAgICBwcmlu
dFB1dEJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdGF0dXNNYXApOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBvcF9wdXRfYnlfaWRfd2l0aF90aGlzOiB7CkBAIC0xNDc2
LDE1ICsxNDc2LDE1IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3BfY2FsbDogewotICAgICAgICBwcmlu
dENhbGxPcChvdXQsIGxvY2F0aW9uLCBpdCwgImNhbGwiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVk
UHJvZmlsaW5nLCBjYWxsTGlua0luZm9zKTsKKyAgICAgICAgcHJpbnRDYWxsT3Aob3V0LCBsb2Nh
dGlvbiwgaXQsICJjYWxsIiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgc3RhdHVz
TWFwKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3BfdGFpbF9jYWxsOiB7Ci0g
ICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAidGFpbF9jYWxsIiwgRHVtcENh
Y2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgY2FsbExpbmtJbmZvcyk7CisgICAgICAgIHByaW50
Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAidGFpbF9jYWxsIiwgRHVtcENhY2hlcywgaGFzUHJp
bnRlZFByb2ZpbGluZywgc3RhdHVzTWFwKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNh
c2Ugb3BfY2FsbF9ldmFsOiB7Ci0gICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0
LCAiY2FsbF9ldmFsIiwgRG9udER1bXBDYWNoZXMsIGhhc1ByaW50ZWRQcm9maWxpbmcsIGNhbGxM
aW5rSW5mb3MpOworICAgICAgICBwcmludENhbGxPcChvdXQsIGxvY2F0aW9uLCBpdCwgImNhbGxf
ZXZhbCIsIERvbnREdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmlsaW5nLCBzdGF0dXNNYXApOwog
ICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTE1MjMsNyArMTUyMyw3IEBAIHZvaWQgQnl0ZWNv
ZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IGNhc2Ugb3BfY29uc3RydWN0OiB7Ci0gICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24s
IGl0LCAiY29uc3RydWN0IiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgY2FsbExp
bmtJbmZvcyk7CisgICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAiY29uc3Ry
dWN0IiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgc3RhdHVzTWFwKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3Bfc3RyY2F0OiB7CkBAIC0xNzc4LDEwICsxNzc4
LDEwIEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKIH0KIAogdGVt
cGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJ5dGVj
b2RlKEJsb2NrKiBibG9jaywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQmxvY2s6
Okluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiYg
aXQsIGNvbnN0IFN0dWJJbmZvTWFwJiBzdHViSW5mb3MsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYg
Y2FsbExpbmtJbmZvcykKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUo
QmxvY2sqIGJsb2NrLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5z
dHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwg
Y29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBCeXRlY29kZUR1bXBlciBkdW1w
ZXIoYmxvY2ssIGJlZ2luKTsKLSAgICBkdW1wZXIuZHVtcEJ5dGVjb2RlKG91dCwgYmVnaW4sIGl0
LCBzdHViSW5mb3MsIGNhbGxMaW5rSW5mb3MpOworICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0
LCBiZWdpbiwgaXQsIHN0YXR1c01hcCk7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgpAQCAt
MTg5MCw3ICsxODkwLDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBTdHJpbmdT
dwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+
OjpkdW1wQmxvY2soQmxvY2sqIGJsb2NrLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJ
bnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgU3R1Yklu
Zm9NYXAmIHN0dWJJbmZvcywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBjYWxsTGlua0luZm9zKQor
dm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCbG9jayhCbG9jayogYmxvY2ssIGNvbnN0
IHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBQcmlu
dFN0cmVhbSYgb3V0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQogewogICAgIHNpemVf
dCBpbnN0cnVjdGlvbkNvdW50ID0gMDsKIApAQCAtMTkxMCw3ICsxOTEwLDcgQEAgdm9pZCBCeXRl
Y29kZUR1bXBlcjxCbG9jaz46OmR1bXBCbG9jayhCbAogICAgIGNvbnN0IGF1dG8qIGVuZCA9IGlu
c3RydWN0aW9ucy5lbmQoKTsKICAgICBCeXRlY29kZUR1bXBlcjxCbG9jaz4gZHVtcGVyKGJsb2Nr
LCBiZWdpbik7CiAgICAgZm9yIChjb25zdCBhdXRvKiBpdCA9IGJlZ2luOyBpdCAhPSBlbmQ7ICsr
aXQpCi0gICAgICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0LCBiZWdpbiwgaXQsIHN0dWJJbmZv
cywgY2FsbExpbmtJbmZvcyk7CisgICAgICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0LCBiZWdp
biwgaXQsIHN0YXR1c01hcCk7CiAKICAgICBkdW1wZXIuZHVtcElkZW50aWZpZXJzKG91dCk7CiAg
ICAgZHVtcGVyLmR1bXBDb25zdGFudHMob3V0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1
enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjYsNiArMjcsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDYWxsTGlua0lu
Zm8uaCIKKyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJ
bmZvLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzcsOCArMzksOCBAQCBjbGFzcyBCeXRlY29k
ZUR1bXBlciB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rp
b24gSW5zdHJ1Y3Rpb247CiAKLSAgICBzdGF0aWMgdm9pZCBkdW1wQnl0ZWNvZGUoQmxvY2sqLCBQ
cmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0
aW9uKiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiA9IFN0dWJJbmZvTWFwKCksIGNvbnN0IENhbGxM
aW5rSW5mb01hcCYgPSBDYWxsTGlua0luZm9NYXAoKSk7Ci0gICAgc3RhdGljIHZvaWQgZHVtcEJs
b2NrKEJsb2NrKiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiwg
UHJpbnRTdHJlYW0mIG91dCwgY29uc3QgU3R1YkluZm9NYXAmID0gU3R1YkluZm9NYXAoKSwgY29u
c3QgQ2FsbExpbmtJbmZvTWFwJiA9IENhbGxMaW5rSW5mb01hcCgpKTsKKyAgICBzdGF0aWMgdm9p
ZCBkdW1wQnl0ZWNvZGUoQmxvY2sqLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlv
biogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0
dXNNYXAgPSBJQ1N0YXR1c01hcCgpKTsKKyAgICBzdGF0aWMgdm9pZCBkdW1wQmxvY2soQmxvY2sq
LCBjb25zdCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmLCBQcmludFN0cmVh
bSYgb3V0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwID0gSUNTdGF0dXNNYXAoKSk7CiAK
IHByaXZhdGU6CiAgICAgQnl0ZWNvZGVEdW1wZXIoQmxvY2sqIGJsb2NrLCBjb25zdCBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4pCkBAIC02OSwxNCArNzEsMTQgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHByaW50Q29uZGl0aW9uYWxKdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3Ry
dWN0aW9uKiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgaW50IGxvY2F0aW9uLCBjb25zdCBjaGFy
KiBvcCk7CiAgICAgdm9pZCBwcmludENvbXBhcmVKdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0
IEluc3RydWN0aW9uKiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgaW50IGxvY2F0aW9uLCBjb25z
dCBjaGFyKiBvcCk7CiAgICAgdm9pZCBwcmludEdldEJ5SWRPcChQcmludFN0cmVhbSYgb3V0LCBp
bnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQpOwotICAgIHZvaWQgcHJpbnRHZXRC
eUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBTdHVi
SW5mb01hcCYpOwotICAgIHZvaWQgcHJpbnRQdXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0m
IG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBTdHViSW5mb01hcCYpOwotICAgIHZvaWQgcHJpbnRJ
bkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IFN0
dWJJbmZvTWFwJik7CisgICAgdm9pZCBwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVh
bSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IElDU3RhdHVzTWFwJik7CisgICAgdm9pZCBwcmlu
dFB1dEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0
IElDU3RhdHVzTWFwJik7CisgICAgdm9pZCBwcmludEluQnlJZENhY2hlU3RhdHVzKFByaW50U3Ry
ZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmKTsKICAgICBlbnVtIENh
Y2hlRHVtcE1vZGUgeyBEdW1wQ2FjaGVzLCBEb250RHVtcENhY2hlcyB9OwotICAgIHZvaWQgcHJp
bnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlv
biomIGl0LCBjb25zdCBjaGFyKiBvcCwgQ2FjaGVEdW1wTW9kZSwgYm9vbCYgaGFzUHJpbnRlZFBy
b2ZpbGluZywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJik7CisgICAgdm9pZCBwcmludENhbGxPcChQ
cmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNv
bnN0IGNoYXIqIG9wLCBDYWNoZUR1bXBNb2RlLCBib29sJiBoYXNQcmludGVkUHJvZmlsaW5nLCBj
b25zdCBJQ1N0YXR1c01hcCYpOwogICAgIHZvaWQgcHJpbnRQdXRCeUlkT3AoUHJpbnRTdHJlYW0m
IG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBv
cCk7CiAgICAgdm9pZCBwcmludExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQoUHJpbnRTdHJl
YW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFy
KiBvcCwgaW50IG9wZXJhbmQpOwotICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBv
dXQsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29u
c3QgU3R1YkluZm9NYXAmLCBjb25zdCBDYWxsTGlua0luZm9NYXAmKTsKKyAgICB2b2lkIGR1bXBC
eXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0
IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJik7CiAKICAgICB2b2lkIGR1bXBW
YWx1ZVByb2ZpbGluZyhQcmludFN0cmVhbSYsIGNvbnN0IEluc3RydWN0aW9uKiYsIGJvb2wmIGhh
c1ByaW50ZWRQcm9maWxpbmcpOwogICAgIHZvaWQgZHVtcEFycmF5UHJvZmlsaW5nKFByaW50U3Ry
ZWFtJiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZyk7CkBA
IC04NSw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCogYWN0dWFsUG9pbnRlckZvcihTcGVj
aWFsOjpQb2ludGVyKSBjb25zdDsKIAogI2lmIEVOQUJMRShKSVQpCi0gICAgdm9pZCBkdW1wQ2Fs
bExpbmtTdGF0dXMoUHJpbnRTdHJlYW0mLCB1bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgQ2FsbExp
bmtJbmZvTWFwJik7CisgICAgdm9pZCBkdW1wQ2FsbExpbmtTdGF0dXMoUHJpbnRTdHJlYW0mLCB1
bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmKTsKICNlbmRpZgogCiAgICAgQmxv
Y2sqIG1fYmxvY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExp
bmtJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rSW5mby5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1MiwxMiArMzUyLDYg
QEAgaW5saW5lIENvZGVPcmlnaW4gZ2V0Q2FsbExpbmtJbmZvQ29kZU9yaQogICAgIHJldHVybiBj
YWxsTGlua0luZm8uY29kZU9yaWdpbigpOwogfQogCi10eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdp
biwgQ2FsbExpbmtJbmZvKiwgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFzaD4gQ2FsbExpbmtJbmZv
TWFwOwotCi0jZWxzZSAvLyBFTkFCTEUoSklUKQotCi10eXBlZGVmIEhhc2hNYXA8aW50LCB2b2lk
Kj4gQ2FsbExpbmtJbmZvTWFwOwotCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtT
dGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua1N0YXR1cy5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcg
Kzc3LDggQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcgogfQogCiBD
YWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKLSAgICBDb2RlQmxvY2sq
IHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIGNvbnN0IENhbGxMaW5rSW5m
b01hcCYgbWFwKQorICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCwgY29uc3QgSUNTdGF0dXNNYXAmIG1hcCwKKyAgICBFeGl0U2l0ZURhdGEgZXhpdFNp
dGVEYXRhKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jay0+
bV9sb2NrKTsKICAgICAKQEAgLTg1LDkgKzg2LDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtT
dGF0dXM6OmNvbXB1dGVGbwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICAgICBV
TlVTRURfUEFSQU0obWFwKTsKICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBFeGl0U2l0ZURhdGEg
ZXhpdFNpdGVEYXRhID0gY29tcHV0ZUV4aXRTaXRlRGF0YShwcm9maWxlZEJsb2NrLCBieXRlY29k
ZUluZGV4KTsKLSAgICAKLSAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IG1hcC5nZXQo
Q29kZU9yaWdpbihieXRlY29kZUluZGV4KSk7CisgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0lu
Zm8gPSBtYXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkpLmNhbGxMaW5rSW5mbzsKICAg
ICBpZiAoIWNhbGxMaW5rSW5mbykgewogICAgICAgICBpZiAoZXhpdFNpdGVEYXRhLnRha2VzU2xv
d1BhdGgpCiAgICAgICAgICAgICByZXR1cm4gdGFrZXNTbG93UGF0aCgpOwpAQCAtMTAwLDYgKzk5
LDEyIEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm8KICNlbmRpZgog
fQogCitDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKKyAgICBDb2Rl
QmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIGNvbnN0IElDU3Rh
dHVzTWFwJiBtYXApCit7CisgICAgcmV0dXJuIGNvbXB1dGVGb3IocHJvZmlsZWRCbG9jaywgYnl0
ZWNvZGVJbmRleCwgbWFwLCBjb21wdXRlRXhpdFNpdGVEYXRhKHByb2ZpbGVkQmxvY2ssIGJ5dGVj
b2RlSW5kZXgpKTsKK30KKwogQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0YSBDYWxsTGlua1N0
YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YShDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YTsKQEAg
LTEwNywxMSArMTEyLDIxIEBAIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgQ2FsbExpbmtT
dGEKICAgICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gcHJvZmlsZWRCbG9jay0+dW5s
aW5rZWRDb2RlQmxvY2soKTsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9j
ay0+bV9sb2NrKTsKIAotICAgIGV4aXRTaXRlRGF0YS50YWtlc1Nsb3dQYXRoID0KLSAgICAgICAg
Y29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRl
Y29kZUluZGV4LCBCYWRUeXBlKSkKLSAgICAgICAgfHwgY29kZUJsb2NrLT5oYXNFeGl0U2l0ZShs
b2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRFeGVjdXRhYmxl
KSk7Ci0gICAgZXhpdFNpdGVEYXRhLmJhZEZ1bmN0aW9uID0KLSAgICAgICAgY29kZUJsb2NrLT5o
YXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBC
YWRDZWxsKSk7CisgICAgYXV0byB0YWtlc1Nsb3dQYXRoID0gWyZdIChFeGl0aW5nSW5saW5lS2lu
ZCBpbmxpbmVLaW5kKSAtPiBFeGl0RmxhZyB7CisgICAgICAgIHJldHVybiBFeGl0RmxhZygKKyAg
ICAgICAgICAgIGNvZGVCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhp
dFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkVHlwZSwgRXhpdEZyb21Bbnl0aGluZywgaW5saW5lS2lu
ZCkpCisgICAgICAgICAgICB8fCBjb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpG
cmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZEV4ZWN1dGFibGUsIEV4aXRGcm9tQW55
dGhpbmcsIGlubGluZUtpbmQpKSwKKyAgICAgICAgICAgIGlubGluZUtpbmQpOworICAgIH07Cisg
ICAgCisgICAgYXV0byBiYWRGdW5jdGlvbiA9IFsmXSAoRXhpdGluZ0lubGluZUtpbmQgaW5saW5l
S2luZCkgLT4gRXhpdEZsYWcgeworICAgICAgICByZXR1cm4gRXhpdEZsYWcoY29kZUJsb2NrLT5o
YXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBC
YWRDZWxsLCBFeGl0RnJvbUFueXRoaW5nLCBpbmxpbmVLaW5kKSksIGlubGluZUtpbmQpOworICAg
IH07CisgICAgCisgICAgZXhpdFNpdGVEYXRhLnRha2VzU2xvd1BhdGggfD0gdGFrZXNTbG93UGF0
aChFeGl0RnJvbU5vdElubGluZWQpOworICAgIGV4aXRTaXRlRGF0YS50YWtlc1Nsb3dQYXRoIHw9
IHRha2VzU2xvd1BhdGgoRXhpdEZyb21JbmxpbmVkKTsKKyAgICBleGl0U2l0ZURhdGEuYmFkRnVu
Y3Rpb24gfD0gYmFkRnVuY3Rpb24oRXhpdEZyb21Ob3RJbmxpbmVkKTsKKyAgICBleGl0U2l0ZURh
dGEuYmFkRnVuY3Rpb24gfD0gYmFkRnVuY3Rpb24oRXhpdEZyb21JbmxpbmVkKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29k
ZUluZGV4KTsKQEAgLTEzNSw2ICsxNTAsMTAgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0
dXM6OmNvbXB1dGVGbwogQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9t
Q2FsbExpbmtJbmZvKAogICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENhbGxMaW5rSW5m
byYgY2FsbExpbmtJbmZvKQogeworICAgIC8vIFdlIGNhbm5vdCB0ZWxsIHlvdSBhbnl0aGluZyBh
Ym91dCBkaXJlY3QgY2FsbHMuCisgICAgaWYgKGNhbGxMaW5rSW5mby5pc0RpcmVjdCgpKQorICAg
ICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoKTsKKyAgICAKICAgICBpZiAoY2FsbExpbmtJbmZv
LmNsZWFyZWRCeUdDKCkpCiAgICAgICAgIHJldHVybiB0YWtlc1Nsb3dQYXRoKCk7CiAgICAgCkBA
IC0xNTgsNiArMTc3LDE5IEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRl
RnIKICAgICBpZiAoUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUqIHN0dWIgPSBjYWxsTGlua0lu
Zm8uc3R1YigpKSB7CiAgICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOwogICAgICAgICAKKyAg
ICAgICAgaWYgKCFzdHViLT5oYXNFZGdlcygpKSB7CisgICAgICAgICAgICAvLyBUaGlzIG1lYW5z
IHdlIGhhdmUgYW4gRlRMIHByb2ZpbGUsIHdoaWNoIGhhcyBpbmNvbXBsZXRlIGluZm9ybWF0aW9u
LgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIEl0J3Mgbm90IGNsZWFyIGlmIHRha2Vz
U2xvd1BhdGgoKSBvciBDYWxsTGlua1N0YXR1cygpIGFyZSBhcHByb3ByaWF0ZSBoZXJlLCBidXQg
SQorICAgICAgICAgICAgLy8gdGhpbmsgdGhhdCB0YWtlc1Nsb3dQYXRoKCkgaXMgYSBuYXJyb3cg
d2lubmVyLgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIEVpdGhlciB3YXksIHRoaXMg
aXMgdGVsbGluZyB1cyB0aGF0IHRoZSBGVEwgaGFkIGJlZW4gbGVkIHRvIGJlbGlldmUgdGhhdCBp
dCdzCisgICAgICAgICAgICAvLyBwcm9maXRhYmxlIG5vdCB0byBpbmxpbmUgYW55dGhpbmcuCisg
ICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gCisgICAgICAgICAgICByZXR1cm4gdGFrZXNT
bG93UGF0aCgpOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBDYWxsRWRnZUxpc3QgZWRn
ZXMgPSBzdHViLT5lZGdlcygpOwogICAgICAgICAKICAgICAgICAgLy8gTm93IHRoYXQgd2UndmUg
bG9hZGVkIHRoZSBlZGdlcyBsaXN0LCB0aGVyZSBhcmUgbm8gZnVydGhlciBjb25jdXJyZW5jeSBj
b25jZXJucy4gV2Ugd2lsbApAQCAtMjI3LDgzICsyNTksMTIyIEBAIENhbGxMaW5rU3RhdHVzIENh
bGxMaW5rU3RhdHVzOjpjb21wdXRlRnIKIAogQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6
OmNvbXB1dGVGb3IoCiAgICAgY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIENvZGVC
bG9jayogcHJvZmlsZWRCbG9jaywgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sCi0gICAgRXhp
dFNpdGVEYXRhIGV4aXRTaXRlRGF0YSkKKyAgICBFeGl0U2l0ZURhdGEgZXhpdFNpdGVEYXRhLCBF
eGl0aW5nSW5saW5lS2luZCBpbmxpbmVLaW5kKQogewogICAgIENhbGxMaW5rU3RhdHVzIHJlc3Vs
dCA9IGNvbXB1dGVGb3IobG9ja2VyLCBwcm9maWxlZEJsb2NrLCBjYWxsTGlua0luZm8pOwotICAg
IGlmIChleGl0U2l0ZURhdGEuYmFkRnVuY3Rpb24pIHsKLSAgICAgICAgaWYgKHJlc3VsdC5pc0Jh
c2VkT25TdHViKCkpIHsKKyAgICByZXN1bHQuYWNjb3VudEZvckV4aXRzKGV4aXRTaXRlRGF0YSwg
aW5saW5lS2luZCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZgorCit2b2lkIENhbGxM
aW5rU3RhdHVzOjphY2NvdW50Rm9yRXhpdHMoRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YSwgRXhp
dGluZ0lubGluZUtpbmQgaW5saW5lS2luZCkKK3sKKyAgICBpZiAoZXhpdFNpdGVEYXRhLmJhZEZ1
bmN0aW9uLmlzU2V0KGlubGluZUtpbmQpKSB7CisgICAgICAgIGlmIChpc0Jhc2VkT25TdHViKCkp
IHsKICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYSBwb2x5bW9ycGhpYyBzdHViLCB0aGVuIGhh
dmluZyBhbiBleGl0IHNpdGUgaXMgbm90IHF1aXRlIHNvIHVzZWZ1bC4gSW4KICAgICAgICAgICAg
IC8vIG1vc3QgY2FzZXMsIHRoZSBpbmZvcm1hdGlvbiBpbiB0aGUgc3R1YiBoYXMgaGlnaGVyIGZp
ZGVsaXR5LgotICAgICAgICAgICAgcmVzdWx0Lm1ha2VDbG9zdXJlQ2FsbCgpOworICAgICAgICAg
ICAgbWFrZUNsb3N1cmVDYWxsKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBX
ZSBtaWdodCBub3QgaGF2ZSBhIHBvbHltb3JwaGljIHN0dWIgZm9yIGFueSBudW1iZXIgb2YgcmVh
c29ucy4gV2hlbiB0aGlzIGhhcHBlbnMsIHdlCiAgICAgICAgICAgICAvLyBhcmUgaW4gbGVzcyBj
ZXJ0YWluIHRlcnJpdG9yeSwgc28gZXhpdCBzaXRlcyBtZWFuIGEgbG90LgotICAgICAgICAgICAg
cmVzdWx0Lm1fY291bGRUYWtlU2xvd1BhdGggPSB0cnVlOworICAgICAgICAgICAgbV9jb3VsZFRh
a2VTbG93UGF0aCA9IHRydWU7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKGV4aXRTaXRlRGF0
YS50YWtlc1Nsb3dQYXRoKQotICAgICAgICByZXN1bHQubV9jb3VsZFRha2VTbG93UGF0aCA9IHRy
dWU7CiAgICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBpZiAoZXhpdFNpdGVEYXRhLnRha2Vz
U2xvd1BhdGguaXNTZXQoaW5saW5lS2luZCkpCisgICAgICAgIG1fY291bGRUYWtlU2xvd1BhdGgg
PSB0cnVlOwogfQotI2VuZGlmCiAKLXZvaWQgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVERkdTdGF0
dXNlcygKLSAgICBDb2RlQmxvY2sqIGRmZ0NvZGVCbG9jaywgQ2FsbExpbmtTdGF0dXM6OkNvbnRl
eHRNYXAmIG1hcCkKK0NhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAor
ICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLAorICAg
IGNvbnN0IElDU3RhdHVzTWFwJiBiYXNlbGluZU1hcCwgY29uc3QgSUNTdGF0dXNDb250ZXh0U3Rh
Y2smIG9wdGltaXplZFN0YWNrKQogewotI2lmIEVOQUJMRShERkdfSklUKQotICAgIFJFTEVBU0Vf
QVNTRVJUKGRmZ0NvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCk7Ci0gICAg
Q29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IGRmZ0NvZGVCbG9jay0+YWx0ZXJuYXRpdmUo
KTsKLSAgICBmb3IgKGF1dG8gaXRlciA9IGRmZ0NvZGVCbG9jay0+Y2FsbExpbmtJbmZvc0JlZ2lu
KCk7ICEhaXRlcjsgKytpdGVyKSB7Ci0gICAgICAgIENhbGxMaW5rSW5mbyYgaW5mbyA9ICoqaXRl
cjsKLSAgICAgICAgaWYgKGluZm8uaXNEaXJlY3QoKSkgewotICAgICAgICAgICAgLy8gSWYgdGhl
IERGRyB3YXMgYWJsZSB0byBnZXQgYSBkaXJlY3QgY2FsbCB0aGVuIHByb2JhYmx5IHNvIHdpbGwg
d2UuIEhvd2V2ZXIsIHRoZXJlIGlzCi0gICAgICAgICAgICAvLyBhIHJlbW90ZSBjaGFuY2UgdGhh
dCBpdCdzIGJhZCBuZXdzIHRvIGxvc2UgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCB0aGUgREZHIGRp
ZC4gV2UnZAotICAgICAgICAgICAgLy8gaWRlYWxseSBsaWtlIHRvIGp1c3Qga25vdyB0aGF0IHRo
ZSBERkcgaGFkIGVtaXR0ZWQgYSBEaXJlY3RDYWxsLgotICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIH0KLSAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gaW5mby5jb2RlT3JpZ2lu
KCk7Ci0gICAgICAgIAotICAgICAgICAvLyBDaGVjayBpZiB3ZSBoYWQgYWxyZWFkeSBwcmV2aW91
c2x5IG1hZGUgYSB0ZXJyaWJsZSBtaXN0YWtlIGluIHRoZSBGVEwgZm9yIHRoaXMKLSAgICAgICAg
Ly8gY29kZSBvcmlnaW4uIE5vdGUgdGhhdCB0aGlzIGlzIGFwcHJveGltYXRlIGJlY2F1c2Ugd2Ug
Y291bGQgaGF2ZSBhIG1vbm92YXJpYW50Ci0gICAgICAgIC8vIGlubGluZSBpbiB0aGUgRlRMIHRo
YXQgZW5kZWQgdXAgZmFpbGluZy4gV2Ugc2hvdWxkIGZpeCB0aGF0IGF0IHNvbWUgcG9pbnQgYnkK
LSAgICAgICAgLy8gaGF2aW5nIGRhdGEgc3RydWN0dXJlcyB0byB0cmFjayB0aGUgY29udGV4dCBv
ZiBmcmVxdWVudCBleGl0cy4gVGhpcyBpcyBjdXJyZW50bHkKLSAgICAgICAgLy8gY2hhbGxlbmdp
bmcgYmVjYXVzZSBpdCB3b3VsZCByZXF1aXJlIGNyZWF0aW5nIGEgQ29kZU9yaWdpbi1iYXNlZCBk
YXRhYmFzZSBpbgotICAgICAgICAvLyBiYXNlbGluZSBDb2RlQmxvY2tzLCBidXQgdGhvc2UgQ29k
ZUJsb2NrcyBkb24ndCByZWFsbHkgaGF2ZSBhIHBsYWNlIHRvIHB1dCB0aGUKLSAgICAgICAgLy8g
SW5saW5lQ2FsbEZyYW1lcy4KLSAgICAgICAgQ29kZUJsb2NrKiBjdXJyZW50QmFzZWxpbmUgPQot
ICAgICAgICAgICAgYmFzZWxpbmVDb2RlQmxvY2tGb3JPcmlnaW5BbmRCYXNlbGluZUNvZGVCbG9j
ayhjb2RlT3JpZ2luLCBiYXNlbGluZUNvZGVCbG9jayk7Ci0gICAgICAgIEV4aXRTaXRlRGF0YSBl
eGl0U2l0ZURhdGEgPSBjb21wdXRlRXhpdFNpdGVEYXRhKGN1cnJlbnRCYXNlbGluZSwgY29kZU9y
aWdpbi5ieXRlY29kZUluZGV4KTsKLSAgICAgICAgCi0gICAgICAgIHsKLSAgICAgICAgICAgIENv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoZGZnQ29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAg
ICAgbWFwLmFkZChpbmZvLmNvZGVPcmlnaW4oKSwgY29tcHV0ZUZvcihsb2NrZXIsIGRmZ0NvZGVC
bG9jaywgaW5mbywgZXhpdFNpdGVEYXRhKSk7Ci0gICAgICAgIH0KKyAgICBpZiAoQ2FsbExpbmtT
dGF0dXNJbnRlcm5hbDo6dmVyYm9zZSkKKyAgICAgICAgZGF0YUxvZygiRmlndXJpbmcgb3V0IGNh
bGwgcHJvZmlsaW5nIGZvciAiLCBjb2RlT3JpZ2luLCAiXG4iKTsKKyAgICBFeGl0U2l0ZURhdGEg
ZXhpdFNpdGVEYXRhID0gY29tcHV0ZUV4aXRTaXRlRGF0YShwcm9maWxlZEJsb2NrLCBjb2RlT3Jp
Z2luLmJ5dGVjb2RlSW5kZXgpOworICAgIGlmIChDYWxsTGlua1N0YXR1c0ludGVybmFsOjp2ZXJi
b3NlKSB7CisgICAgICAgIGRhdGFMb2coInRha2VzU2xvd1BhdGggPSAiLCBleGl0U2l0ZURhdGEu
dGFrZXNTbG93UGF0aCwgIlxuIik7CisgICAgICAgIGRhdGFMb2coImJhZEZ1bmN0aW9uID0gIiwg
ZXhpdFNpdGVEYXRhLmJhZEZ1bmN0aW9uLCAiXG4iKTsKICAgICB9Ci0jZWxzZQotICAgIFVOVVNF
RF9QQVJBTShkZmdDb2RlQmxvY2spOwotI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQogICAgIAot
ICAgIGlmIChDYWxsTGlua1N0YXR1c0ludGVybmFsOjp2ZXJib3NlKSB7Ci0gICAgICAgIGRhdGFM
b2coIkNvbnRleHQgbWFwOlxuIik7Ci0gICAgICAgIENvbnRleHRNYXA6Oml0ZXJhdG9yIGl0ZXIg
PSBtYXAuYmVnaW4oKTsKLSAgICAgICAgQ29udGV4dE1hcDo6aXRlcmF0b3IgZW5kID0gbWFwLmVu
ZCgpOwotICAgICAgICBmb3IgKDsgaXRlciAhPSBlbmQ7ICsraXRlcikgewotICAgICAgICAgICAg
ZGF0YUxvZygiICAgICIsIGl0ZXItPmtleSwgIjpcbiIpOwotICAgICAgICAgICAgZGF0YUxvZygi
ICAgICAgICAiLCBpdGVyLT52YWx1ZSwgIlxuIik7CisgICAgZm9yIChjb25zdCBJQ1N0YXR1c0Nv
bnRleHQqIGNvbnRleHQgOiBvcHRpbWl6ZWRTdGFjaykgeworICAgICAgICBpZiAoQ2FsbExpbmtT
dGF0dXNJbnRlcm5hbDo6dmVyYm9zZSkKKyAgICAgICAgICAgIGRhdGFMb2coIkV4YW1pbmluZyBz
dGF0dXMgaW4gIiwgcG9pbnRlckR1bXAoY29udGV4dC0+b3B0aW1pemVkQ29kZUJsb2NrKSwgIlxu
Iik7CisgICAgICAgIElDU3RhdHVzIHN0YXR1cyA9IGNvbnRleHQtPmdldChjb2RlT3JpZ2luKTsK
KyAgICAgICAgCisgICAgICAgIC8vIElmIHdlIGhhdmUgYm90aCBhIENhbGxMaW5rU3RhdHVzIGFu
ZCBhIGNhbGxMaW5rSW5mbyBmb3IgdGhlIHNhbWUgb3JpZ2luLCB0aGVuIGl0IG1lYW5zIG9uZQor
ICAgICAgICAvLyBvZiB0d28gdGhpbmdzOgorICAgICAgICAvLworICAgICAgICAvLyAxKSBXZSBp
bml0aWFsbHkgdGhvdWdodCB0aGF0IHdlJ2QgYmUgYWJsZSB0byBpbmxpbmUgdGhpcyBjYWxsIHNv
IHdlIHJlY29yZGVkIGEgc3RhdHVzIGJ1dAorICAgICAgICAvLyAgICB0aGVuIHdlIHJlYWxpemVk
IHRoYXQgaXQgd2FzIHBvaW50bGVzcyBhbmQgZ2F2ZSB1cCBhbmQgZW1pdHRlZCBhIG5vcm1hbCBj
YWxsIGFueXdheS4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gMikgV2UgZGlkIGEgcG9seW1vcnBo
aWMgY2FsbCBpbmxpbmUgdGhhdCBoYWQgYSBzbG93IHBhdGggY2FzZS4KKyAgICAgICAgLy8KKyAg
ICAgICAgLy8gSW4gdGhlIGZpcnN0IGNhc2UsIGl0J3MgZXNzZW50aWFsIHRoYXQgd2UgdXNlIHRo
ZSBjYWxsTGlua0luZm8sIHNpbmNlIHRoZSBzdGF0dXMgbWF5IGJlCisgICAgICAgIC8vIHBvbHlt
b3JwaGljIGJ1dCB0aGUgbGluayBpbmZvIGJlbmVmaXRzIGZyb20gcG9seXZhcmlhbnQgcHJvZmls
aW5nLgorICAgICAgICAvLworICAgICAgICAvLyBJbiB0aGUgc2Vjb25kIGNhc2UsIGl0J3MgZXNz
ZW50aWFsIHRoYXQgd2UgdXNlIHRoZSBzdGF0dXMsIHNpbmNlIHRoZSBjYWxsTGlua0luZm8KKyAg
ICAgICAgLy8gY29ycmVzcG9uZHMgdG8gdGhlIHNsb3cgY2FzZS4KKyAgICAgICAgLy8KKyAgICAg
ICAgLy8gSXQgd291bGQgYmUgYW5ub3lpbmcgdG8gZGlzdGluZ3Vpc2ggdGhvc2UgdHdvIGNhc2Vz
LiBIb3dldmVyLCB3ZSBrbm93IHRoYXQ6CisgICAgICAgIC8vCisgICAgICAgIC8vIElmIHRoZSBm
aXJzdCBjYXNlIGhhcHBlbnMgaW4gdGhlIEZUTCwgdGhlbiBpdCBtZWFucyB0aGF0IGV2ZW4gd2l0
aCBwb2x5dmFyaWFudCBwcm9maWxpbmcsCisgICAgICAgIC8vIHdlIGZhaWxlZCB0byBkbyBhbnl0
aGluZyB1c2VmdWwuIFRoYXQgc3VnZ2VzdHMgdGhhdCBpbiB0aGUgRlRMLCBpdCdzIE9LIHRvIHBy
aW9yaXRpemUgdGhlCisgICAgICAgIC8vIHN0YXR1cy4gVGhhdCBzdGF0dXMgd2lsbCBhZ2FpbiB0
ZWxsIHVzIHRvIG5vdCBkbyBhbnl0aGluZyB1c2VmdWwuCisgICAgICAgIC8vCisgICAgICAgIC8v
IFRoZSBzZWNvbmQgY2FzZSBvbmx5IGhhcHBlbnMgaW4gdGhlIEZUTC4KKyAgICAgICAgLy8KKyAg
ICAgICAgLy8gVGhlcmVmb3JlLCB3ZSBwcmVmZXIgdGhlIHN0YXR1cyBpbiB0aGUgRlRMIGFuZCB0
aGUgaW5mbyBpbiB0aGUgREZHLgorICAgICAgICAvLworICAgICAgICAvLyBMdWNraWx5LCB0aGlz
IGNhc2UgZG9lc24ndCBtYXR0ZXIgZm9yIHRoZSBvdGhlciBJQ1N0YXR1c2VzLCBzaW5jZSB0aGV5
IG5ldmVyIGRvIHRoZQorICAgICAgICAvLyBmYXN0LXBhdGgtc2xvdy1wYXRoIGNvbnRyb2wtZmxv
dy1kaWFtb25kIHN0eWxlIG9mIElDIGlubGluaW5nLiBJdCdzIGVpdGhlciBhbGwgZmFzdCBwYXRo
CisgICAgICAgIC8vIG9yIGl0J3MgYSBmdWxsIElDLiBTbywgZm9yIHRoZW0sIGlmIHRoZXJlIGlz
IGFuIElDIHN0YXR1cyB0aGVuIGl0IG1lYW5zIGNhc2UgKDEpLgorICAgICAgICAKKyAgICAgICAg
Ym9vbCBjaGVja1N0YXR1c0ZpcnN0ID0gY29udGV4dC0+b3B0aW1pemVkQ29kZUJsb2NrLT5qaXRU
eXBlKCkgPT0gSklUQ29kZTo6RlRMSklUOworICAgICAgICAKKyAgICAgICAgYXV0byBjaGVja0lu
Zm8gPSBbJl0gKCkgLT4gQ2FsbExpbmtTdGF0dXMgeworICAgICAgICAgICAgaWYgKCFzdGF0dXMu
Y2FsbExpbmtJbmZvKQorICAgICAgICAgICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygpOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoQ2FsbExpbmtTdGF0dXNJbnRlcm5hbDo6dmVy
Ym9zZSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJIYXZlIENhbGxMaW5rSW5mbyB3aXRoIENv
ZGVPcmlnaW4gPSAiLCBzdGF0dXMuY2FsbExpbmtJbmZvLT5jb2RlT3JpZ2luKCksICJcbiIpOwor
ICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb250ZXh0LT5vcHRpbWl6ZWRD
b2RlQmxvY2stPm1fbG9jayk7CisgICAgICAgICAgICBDYWxsTGlua1N0YXR1cyByZXN1bHQgPSBj
b21wdXRlRm9yKAorICAgICAgICAgICAgICAgIGxvY2tlciwgY29udGV4dC0+b3B0aW1pemVkQ29k
ZUJsb2NrLCAqc3RhdHVzLmNhbGxMaW5rSW5mbywgZXhpdFNpdGVEYXRhLAorICAgICAgICAgICAg
ICAgIGNvZGVPcmlnaW4uZXhpdGluZ0lubGluZUtpbmQoKSk7CisgICAgICAgICAgICBpZiAoQ2Fs
bExpbmtTdGF0dXNJbnRlcm5hbDo6dmVyYm9zZSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJH
b3QgcmVzdWx0OiAiLCByZXN1bHQsICJcbiIpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gY2hlY2tTdGF0dXMgPSBbJl0gKCkg
LT4gQ2FsbExpbmtTdGF0dXMgeworICAgICAgICAgICAgaWYgKCFzdGF0dXMuY2FsbFN0YXR1cykK
KyAgICAgICAgICAgICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoKTsKKyAgICAgICAgICAgIENh
bGxMaW5rU3RhdHVzIHJlc3VsdCA9ICpzdGF0dXMuY2FsbFN0YXR1czsKKyAgICAgICAgICAgIGlm
IChDYWxsTGlua1N0YXR1c0ludGVybmFsOjp2ZXJib3NlKQorICAgICAgICAgICAgICAgIGRhdGFM
b2coIkhhdmUgY2FsbFN0YXR1czogIiwgcmVzdWx0LCAiXG4iKTsKKyAgICAgICAgICAgIHJlc3Vs
dC5hY2NvdW50Rm9yRXhpdHMoZXhpdFNpdGVEYXRhLCBjb2RlT3JpZ2luLmV4aXRpbmdJbmxpbmVL
aW5kKCkpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfTsKKyAgICAgICAg
CisgICAgICAgIGlmIChjaGVja1N0YXR1c0ZpcnN0KSB7CisgICAgICAgICAgICBpZiAoQ2FsbExp
bmtTdGF0dXMgcmVzdWx0ID0gY2hlY2tTdGF0dXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgICAgICAgICAgaWYgKENhbGxMaW5rU3RhdHVzIHJlc3VsdCA9IGNoZWNrSW5m
bygpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKENhbGxMaW5rU3RhdHVzIHJlc3Vs
dCA9IGNoZWNrSW5mbygpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgaWYg
KENhbGxMaW5rU3RhdHVzIHJlc3VsdCA9IGNoZWNrU3RhdHVzKCkpCisgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KLX0KLQotQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNv
bXB1dGVGb3IoCi0gICAgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBDb2RlT3JpZ2luIGNvZGVP
cmlnaW4sCi0gICAgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBiYXNlbGluZU1hcCwgY29uc3QgQ2Fs
bExpbmtTdGF0dXM6OkNvbnRleHRNYXAmIGRmZ01hcCkKLXsKLSAgICBhdXRvIGl0ZXIgPSBkZmdN
YXAuZmluZChjb2RlT3JpZ2luKTsKLSAgICBpZiAoaXRlciAhPSBkZmdNYXAuZW5kKCkpCi0gICAg
ICAgIHJldHVybiBpdGVyLT52YWx1ZTsKICAgICAKLSAgICByZXR1cm4gY29tcHV0ZUZvcihwcm9m
aWxlZEJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIGJhc2VsaW5lTWFwKTsKKyAgICBD
YWxsTGlua1N0YXR1cyByZXN1bHQgPSBjb21wdXRlRm9yKHByb2ZpbGVkQmxvY2ssIGNvZGVPcmln
aW4uYnl0ZWNvZGVJbmRleCwgYmFzZWxpbmVNYXAsIGV4aXRTaXRlRGF0YSk7CisgICAgaWYgKENh
bGxMaW5rU3RhdHVzSW50ZXJuYWw6OnZlcmJvc2UpCisgICAgICAgIGRhdGFMb2coIkNvbXB1dGVk
IGZyb20gYmFzZWxpbmU6ICIsIHJlc3VsdCwgIlxuIik7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAogdm9pZCBDYWxsTGlua1N0YXR1czo6c2V0UHJvdmVuQ29uc3RhbnRDYWxsZWUoQ2FsbFZhcmlh
bnQgdmFyaWFudCkKQEAgLTMyNyw2ICszOTgsMjQgQEAgdm9pZCBDYWxsTGlua1N0YXR1czo6bWFr
ZUNsb3N1cmVDYWxsKCkKICAgICBtX3ZhcmlhbnRzID0gZGVzcGVjaWZpZWRWYXJpYW50TGlzdCht
X3ZhcmlhbnRzKTsKIH0KIAorYm9vbCBDYWxsTGlua1N0YXR1czo6ZmluYWxpemUoKQoreworICAg
IGZvciAoQ2FsbFZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKSB7CisgICAgICAgIGlmICgh
dmFyaWFudC5maW5hbGl6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDYWxsTGlua1N0YXR1czo6ZmlsdGVyKFZNJiB2bSwg
SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBtX3ZhcmlhbnRzLnJlbW92ZUFsbE1hdGNoaW5nKAorICAg
ICAgICBbJl0gKENhbGxWYXJpYW50JiB2YXJpYW50KSAtPiBib29sIHsKKyAgICAgICAgICAgIHZh
cmlhbnQuZmlsdGVyKHZtLCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gIXZhcmlhbnQ7Cisg
ICAgICAgIH0pOworfQorCiB2b2lkIENhbGxMaW5rU3RhdHVzOjpkdW1wKFByaW50U3RyZWFtJiBv
dXQpIGNvbnN0CiB7CiAgICAgaWYgKCFpc1NldCgpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAkocmV2aXNpb24gMjMyMjI3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJDYWxsVmFyaWFudC5oIgogI2lu
Y2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJDb25jdXJyZW50SlNMb2NrLmgiCisjaW5j
bHVkZSAiRXhpdEZsYWcuaCIKKyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgogI2luY2x1ZGUgIkpT
Q0pTVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC02MCwzOSArNjIsMzMgQEAgcHVibGlj
OgogICAgIHsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVG
b3IoCi0gICAgICAgIENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIGNvbnN0IENh
bGxMaW5rSW5mb01hcCYpOwotCiAgICAgc3RydWN0IEV4aXRTaXRlRGF0YSB7Ci0gICAgICAgIGJv
b2wgdGFrZXNTbG93UGF0aCB7IGZhbHNlIH07Ci0gICAgICAgIGJvb2wgYmFkRnVuY3Rpb24geyBm
YWxzZSB9OworICAgICAgICBFeGl0RmxhZyB0YWtlc1Nsb3dQYXRoOworICAgICAgICBFeGl0Rmxh
ZyBiYWRGdW5jdGlvbjsKICAgICB9OwogICAgIHN0YXRpYyBFeGl0U2l0ZURhdGEgY29tcHV0ZUV4
aXRTaXRlRGF0YShDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKICAgICAKKyAg
ICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCB1bnNpZ25lZCBi
eXRlY29kZUluZGV4LCBjb25zdCBJQ1N0YXR1c01hcCYsIEV4aXRTaXRlRGF0YSk7CisgICAgc3Rh
dGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCwgY29uc3QgSUNTdGF0dXNNYXAmKTsKKwogI2lmIEVOQUJMRShKSVQpCiAgICAgLy8g
Q29tcHV0ZXMgdGhlIHN0YXR1cyBhc3N1bWluZyB0aGF0IHdlIG5ldmVyIHRvb2sgc2xvdyBwYXRo
IGFuZCBuZXZlciBwcmV2aW91c2x5CiAgICAgLy8gZXhpdGVkLgogICAgIHN0YXRpYyBDYWxsTGlu
a1N0YXR1cyBjb21wdXRlRm9yKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayos
IENhbGxMaW5rSW5mbyYpOworICAgIAorICAgIC8vIENvbXB1dGVzIHRoZSBzdGF0dXMgYWNjb3Vu
dGluZyBmb3IgZXhpdHMuCiAgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoCi0g
ICAgICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayosIENhbGxMaW5rSW5m
byYsIEV4aXRTaXRlRGF0YSk7CisgICAgICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENv
ZGVCbG9jayosIENhbGxMaW5rSW5mbyYsIEV4aXRTaXRlRGF0YSwgRXhpdGluZ0lubGluZUtpbmQg
PSBFeGl0RnJvbUFueUlubGluZUtpbmQpOwogI2VuZGlmCiAgICAgCi0gICAgdHlwZWRlZiBIYXNo
TWFwPENvZGVPcmlnaW4sIENhbGxMaW5rU3RhdHVzLCBDb2RlT3JpZ2luQXBwcm94aW1hdGVIYXNo
PiBDb250ZXh0TWFwOwotICAgIAotICAgIC8vIENvbXB1dGVzIGFsbCBvZiB0aGUgc3RhdHVzZXMg
b2YgdGhlIERGRyBjb2RlIGJsb2NrLiBEb2Vzbid0IGluY2x1ZGUgc3RhdHVzZXMgdGhhdCBoYWQK
LSAgICAvLyBubyBpbmZvcm1hdGlvbi4gQ3VycmVudGx5IHdlIHVzZSB0aGlzIHdoZW4gY29tcGls
aW5nIEZUTCBjb2RlLCB0byBlbmFibGUgcG9seXZhcmlhbnQKLSAgICAvLyBpbmxpbmluZy4KLSAg
ICBzdGF0aWMgdm9pZCBjb21wdXRlREZHU3RhdHVzZXMoQ29kZUJsb2NrKiBkZmdDb2RlQmxvY2ss
IENvbnRleHRNYXAmKTsKLSAgICAKLSAgICAvLyBIZWxwZXIgdGhhdCBmaXJzdCBjb25zdWx0cyB0
aGUgQ29udGV4dE1hcCBhbmQgdGhlbiBkb2VzIGNvbXB1dGVGb3IoKS4KICAgICBzdGF0aWMgQ2Fs
bExpbmtTdGF0dXMgY29tcHV0ZUZvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwg
Y29uc3QgQ2FsbExpbmtJbmZvTWFwJiwgY29uc3QgQ29udGV4dE1hcCYpOworICAgICAgICBDb2Rl
QmxvY2sqLCBDb2RlT3JpZ2luLCBjb25zdCBJQ1N0YXR1c01hcCYsIGNvbnN0IElDU3RhdHVzQ29u
dGV4dFN0YWNrJik7CiAgICAgCiAgICAgdm9pZCBzZXRQcm92ZW5Db25zdGFudENhbGxlZShDYWxs
VmFyaWFudCk7CiAgICAgCiAgICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuICFtX3Zhcmlh
bnRzLmlzRW1wdHkoKSB8fCBtX2NvdWxkVGFrZVNsb3dQYXRoOyB9CiAgICAgCi0gICAgYm9vbCBv
cGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQoKTsgfQorICAgIGV4cGxpY2l0IG9wZXJh
dG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBpc1NldCgpOyB9CiAgICAgCiAgICAgYm9vbCBjb3Vs
ZFRha2VTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bGRUYWtlU2xvd1BhdGg7IH0KICAg
ICAKQEAgLTExMCw2ICsxMDYsMTAgQEAgcHVibGljOgogICAgIAogICAgIHVuc2lnbmVkIG1heE51
bUFyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fbWF4TnVtQXJndW1lbnRzOyB9CiAgICAgCisg
ICAgYm9vbCBmaW5hbGl6ZSgpOworICAgIAorICAgIHZvaWQgZmlsdGVyKFZNJiwgSlNWYWx1ZSk7
CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgCiBwcml2YXRl
OgpAQCAtMTIxLDYgKzEyMSw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNvbnN0IENvbmN1cnJlbnRK
U0xvY2tlciYsIENhbGxMaW5rSW5mbyYpOwogI2VuZGlmCiAgICAgCisgICAgdm9pZCBhY2NvdW50
Rm9yRXhpdHMoRXhpdFNpdGVEYXRhLCBFeGl0aW5nSW5saW5lS2luZCk7CisgICAgCiAgICAgQ2Fs
bFZhcmlhbnRMaXN0IG1fdmFyaWFudHM7CiAgICAgYm9vbCBtX2NvdWxkVGFrZVNsb3dQYXRoIHsg
ZmFsc2UgfTsKICAgICBib29sIG1faXNQcm92ZWQgeyBmYWxzZSB9OwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuY3BwCShyZXZpc2lvbiAyMzIy
MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDYgKzMxLDM1IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCiti
b29sIENhbGxWYXJpYW50OjpmaW5hbGl6ZSgpCit7CisgICAgaWYgKG1fY2FsbGVlICYmICFIZWFw
Ojppc01hcmtlZChtX2NhbGxlZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwordm9pZCBDYWxsVmFyaWFudDo6ZmlsdGVyKFZNJiB2bSwgSlNWYWx1ZSB2YWx1
ZSkKK3sKKyAgICBpZiAoISp0aGlzKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKCFp
c0Nsb3N1cmVDYWxsKCkpIHsKKyAgICAgICAgaWYgKG5vbkV4ZWN1dGFibGVDYWxsZWUoKSAhPSB2
YWx1ZSkKKyAgICAgICAgICAgICp0aGlzID0gQ2FsbFZhcmlhbnQoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICAKKyAgICBpZiAoSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0R5bmFtaWND
YXN0PEpTRnVuY3Rpb24qPih2bSwgdmFsdWUpKSB7CisgICAgICAgIGlmIChmdW5jdGlvbi0+ZXhl
Y3V0YWJsZSgpID09IGV4ZWN1dGFibGUoKSkKKyAgICAgICAgICAgICp0aGlzID0gQ2FsbFZhcmlh
bnQoZnVuY3Rpb24pOworICAgICAgICBlbHNlCisgICAgICAgICAgICAqdGhpcyA9IENhbGxWYXJp
YW50KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgKnRoaXMgPSBDYWxsVmFy
aWFudCgpOworfQorCiB2b2lkIENhbGxWYXJpYW50OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNv
bnN0CiB7CiAgICAgaWYgKCEqdGhpcykgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxWYXJpYW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxWYXJpYW50LmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTcx
LDcgKzcxLDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAgCi0gICAgYm9vbCBvcGVyYXRv
ciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsZWU7IH0KKyAgICBleHBsaWNpdCBvcGVyYXRvciBi
b29sKCkgY29uc3QgeyByZXR1cm4gISFtX2NhbGxlZTsgfQogICAgIAogICAgIC8vIElmIHRoaXMg
dmFyaWFudCByZWZlcnMgdG8gYSBmdW5jdGlvbiwgY2hhbmdlIGl0IHRvIHJlZmVyIHRvIGl0cyBl
eGVjdXRhYmxlLgogICAgIEFMV0FZU19JTkxJTkUgQ2FsbFZhcmlhbnQgZGVzcGVjaWZpZWRDbG9z
dXJlKCkgY29uc3QKQEAgLTEzNiw2ICsxMzYsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAgICAgCisgICAgYm9vbCBmaW5hbGl6ZSgpOworICAgIAorICAgIHZv
aWQgZmlsdGVyKFZNJiwgSlNWYWx1ZSk7CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0OwogICAgIAogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBj
b25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsMjQgKzIzOCwyMCBAQCB2b2lkIENv
ZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKCkKIAogdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQ
cmludFN0cmVhbSYgb3V0KQogewotICAgIFN0dWJJbmZvTWFwIHN0dWJJbmZvczsKLSAgICBDYWxs
TGlua0luZm9NYXAgY2FsbExpbmtJbmZvczsKLSAgICBnZXRTdHViSW5mb01hcChzdHViSW5mb3Mp
OwotICAgIGdldENhbGxMaW5rSW5mb01hcChjYWxsTGlua0luZm9zKTsKLSAgICBCeXRlY29kZUR1
bXBlcjxDb2RlQmxvY2s+OjpkdW1wQmxvY2sodGhpcywgaW5zdHJ1Y3Rpb25zKCksIG91dCwgc3R1
YkluZm9zLCBjYWxsTGlua0luZm9zKTsKKyAgICBJQ1N0YXR1c01hcCBzdGF0dXNNYXA7CisgICAg
Z2V0SUNTdGF0dXNNYXAoc3RhdHVzTWFwKTsKKyAgICBCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+
OjpkdW1wQmxvY2sodGhpcywgaW5zdHJ1Y3Rpb25zKCksIG91dCwgc3RhdHVzTWFwKTsKIH0KIAot
dm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0
cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFw
JiBzdHViSW5mb3MsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYgY2FsbExpbmtJbmZvcykKK3ZvaWQg
Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rp
b24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3Rh
dHVzTWFwKQogewotICAgIEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBCeXRlY29kZSh0
aGlzLCBvdXQsIGJlZ2luLCBpdCwgc3R1YkluZm9zLCBjYWxsTGlua0luZm9zKTsKKyAgICBCeXRl
Y29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wQnl0ZWNvZGUodGhpcywgb3V0LCBiZWdpbiwgaXQs
IHN0YXR1c01hcCk7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCi0gICAgUHJp
bnRTdHJlYW0mIG91dCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsCi0gICAgY29uc3QgU3R1Yklu
Zm9NYXAmIHN0dWJJbmZvcywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBjYWxsTGlua0luZm9zKQor
dm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCB1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBjb25z
dCBJbnN0cnVjdGlvbiogaXQgPSAmaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdOwotICAg
IGR1bXBCeXRlY29kZShvdXQsIGluc3RydWN0aW9ucygpLmJlZ2luKCksIGl0LCBzdHViSW5mb3Ms
IGNhbGxMaW5rSW5mb3MpOworICAgIGR1bXBCeXRlY29kZShvdXQsIGluc3RydWN0aW9ucygpLmJl
Z2luKCksIGl0LCBzdGF0dXNNYXApOwogfQogCiAjZGVmaW5lIEZPUl9FQUNIX01FTUJFUl9WRUNU
T1IobWFjcm8pIFwKQEAgLTExNjYsNiArMTE2Miw5IEBAIHZvaWQgQ29kZUJsb2NrOjpwcm9wYWdh
dGVUcmFuc2l0aW9ucyhjb24KICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBpZiAoSklUQ29kZTo6
aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpIHsKICAgICAgICAgREZHOjpDb21tb25EYXRhKiBk
ZmdDb21tb24gPSBtX2ppdENvZGUtPmRmZ0NvbW1vbigpOworICAgICAgICAKKyAgICAgICAgZGZn
Q29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLm1hcmtJZkNoZWFwKHZpc2l0b3IpOworICAgICAgICAK
ICAgICAgICAgZm9yIChhdXRvJiB3ZWFrUmVmZXJlbmNlIDogZGZnQ29tbW9uLT53ZWFrU3RydWN0
dXJlUmVmZXJlbmNlcykKICAgICAgICAgICAgIHdlYWtSZWZlcmVuY2UtPm1hcmtJZkNoZWFwKHZp
c2l0b3IpOwogCkBAIC0xMzk3LDU3ICsxMzk2LDQzIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6
ZVVuY29uZGl0aW9uYWxseSgKICAgICAgICAgZmluYWxpemVCYXNlbGluZUpJVElubGluZUNhY2hl
cygpOwogI2VuZGlmCiAKLSAgICBWTTo6U3BhY2VBbmRGaW5hbGl6ZXJTZXQ6OmZpbmFsaXplclNl
dEZvcigqc3Vic3BhY2UoKSkucmVtb3ZlKHRoaXMpOwotfQotCi12b2lkIENvZGVCbG9jazo6Z2V0
U3R1YkluZm9NYXAoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgU3R1YkluZm9NYXAmIHJlc3Vs
dCkKLXsKLSNpZiBFTkFCTEUoSklUKQotICAgIGlmIChKSVRDb2RlOjppc0pJVChqaXRUeXBlKCkp
KQotICAgICAgICB0b0hhc2hNYXAobV9zdHViSW5mb3MsIGdldFN0cnVjdHVyZVN0dWJJbmZvQ29k
ZU9yaWdpbiwgcmVzdWx0KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHJlc3VsdCk7Ci0jZW5k
aWYKLX0KLQotdm9pZCBDb2RlQmxvY2s6OmdldFN0dWJJbmZvTWFwKFN0dWJJbmZvTWFwJiByZXN1
bHQpCi17Ci0gICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIGdldFN0
dWJJbmZvTWFwKGxvY2tlciwgcmVzdWx0KTsKLX0KLQotdm9pZCBDb2RlQmxvY2s6OmdldENhbGxM
aW5rSW5mb01hcChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDYWxsTGlua0luZm9NYXAmIHJl
c3VsdCkKLXsKLSNpZiBFTkFCTEUoSklUKQotICAgIGlmIChKSVRDb2RlOjppc0pJVChqaXRUeXBl
KCkpKQotICAgICAgICB0b0hhc2hNYXAobV9jYWxsTGlua0luZm9zLCBnZXRDYWxsTGlua0luZm9D
b2RlT3JpZ2luLCByZXN1bHQpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKLSNl
bmRpZgotfQorICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0VHlwZSgpKSkgewor
ICAgICAgICBERkc6OkNvbW1vbkRhdGEqIGRmZ0NvbW1vbiA9IG1faml0Q29kZS0+ZGZnQ29tbW9u
KCk7CisgICAgICAgIGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5maW5hbGl6ZSgpOworICAg
IH0KIAotdm9pZCBDb2RlQmxvY2s6OmdldENhbGxMaW5rSW5mb01hcChDYWxsTGlua0luZm9NYXAm
IHJlc3VsdCkKLXsKLSAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAg
Z2V0Q2FsbExpbmtJbmZvTWFwKGxvY2tlciwgcmVzdWx0KTsKKyAgICBWTTo6U3BhY2VBbmRGaW5h
bGl6ZXJTZXQ6OmZpbmFsaXplclNldEZvcigqc3Vic3BhY2UoKSkucmVtb3ZlKHRoaXMpOwogfQog
Ci12b2lkIENvZGVCbG9jazo6Z2V0QnlWYWxJbmZvTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tl
ciYsIEJ5VmFsSW5mb01hcCYgcmVzdWx0KQordm9pZCBDb2RlQmxvY2s6OmdldElDU3RhdHVzTWFw
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIElDU3RhdHVzTWFwJiByZXN1bHQpCiB7CiAjaWYg
RU5BQkxFKEpJVCkKICAgICBpZiAoSklUQ29kZTo6aXNKSVQoaml0VHlwZSgpKSkgewotICAgICAg
ICBmb3IgKGF1dG8qIGJ5VmFsSW5mbyA6IG1fYnlWYWxJbmZvcykKLSAgICAgICAgICAgIHJlc3Vs
dC5hZGQoQ29kZU9yaWdpbihieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXgpLCBieVZhbEluZm8pOwor
ICAgICAgICBmb3IgKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA6IG1fc3R1YkluZm9zKQor
ICAgICAgICAgICAgcmVzdWx0LmFkZChzdHViSW5mby0+Y29kZU9yaWdpbiwgSUNTdGF0dXMoKSku
aXRlcmF0b3ItPnZhbHVlLnN0dWJJbmZvID0gc3R1YkluZm87CisgICAgICAgIGZvciAoQ2FsbExp
bmtJbmZvKiBjYWxsTGlua0luZm8gOiBtX2NhbGxMaW5rSW5mb3MpCisgICAgICAgICAgICByZXN1
bHQuYWRkKGNhbGxMaW5rSW5mby0+Y29kZU9yaWdpbigpLCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+
dmFsdWUuY2FsbExpbmtJbmZvID0gY2FsbExpbmtJbmZvOworICAgICAgICBmb3IgKEJ5VmFsSW5m
byogYnlWYWxJbmZvIDogbV9ieVZhbEluZm9zKQorICAgICAgICAgICAgcmVzdWx0LmFkZChDb2Rl
T3JpZ2luKGJ5VmFsSW5mby0+Ynl0ZWNvZGVJbmRleCksIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52
YWx1ZS5ieVZhbEluZm8gPSBieVZhbEluZm87CisgICAgICAgIGlmIChKSVRDb2RlOjppc09wdGlt
aXppbmdKSVQoaml0VHlwZSgpKSkgeworICAgICAgICAgICAgREZHOjpDb21tb25EYXRhKiBkZmdD
b21tb24gPSBtX2ppdENvZGUtPmRmZ0NvbW1vbigpOworICAgICAgICAgICAgZm9yIChhdXRvJiBw
YWlyIDogZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLmNhbGxzKQorICAgICAgICAgICAgICAg
IHJlc3VsdC5hZGQocGFpci5maXJzdCwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLmNhbGxT
dGF0dXMgPSBwYWlyLnNlY29uZC5nZXQoKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcGFpciA6
IGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5nZXRzKQorICAgICAgICAgICAgICAgIHJlc3Vs
dC5hZGQocGFpci5maXJzdCwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLmdldFN0YXR1cyA9
IHBhaXIuc2Vjb25kLmdldCgpOworICAgICAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogZGZnQ29t
bW9uLT5yZWNvcmRlZFN0YXR1c2VzLnB1dHMpCisgICAgICAgICAgICAgICAgcmVzdWx0LmFkZChw
YWlyLmZpcnN0LCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUucHV0U3RhdHVzID0gcGFpci5z
ZWNvbmQuZ2V0KCk7CisgICAgICAgIH0KICAgICB9CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShy
ZXN1bHQpOwogI2VuZGlmCiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpnZXRCeVZhbEluZm9NYXAoQnlW
YWxJbmZvTWFwJiByZXN1bHQpCit2b2lkIENvZGVCbG9jazo6Z2V0SUNTdGF0dXNNYXAoSUNTdGF0
dXNNYXAmIHJlc3VsdCkKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7
Ci0gICAgZ2V0QnlWYWxJbmZvTWFwKGxvY2tlciwgcmVzdWx0KTsKKyAgICBnZXRJQ1N0YXR1c01h
cChsb2NrZXIsIHJlc3VsdCk7CiB9CiAKICNpZiBFTkFCTEUoSklUKQpAQCAtMTUxNCw3ICsxNDk5
LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnJlc2V0SklURGF0YSgpCiAgICAgCiAgICAgLy8gV2UgY2Fu
IGNsZWFyIHRoZXNlIGJlY2F1c2Ugbm8gb3RoZXIgdGhyZWFkIHdpbGwgaGF2ZSByZWZlcmVuY2Vz
IHRvIGFueSBzdHViIGluZm9zLCBjYWxsCiAgICAgLy8gbGluayBpbmZvcywgb3IgYnkgdmFsIGlu
Zm9zIGlmIHdlIGRvbid0IGhhdmUgSklUIGNvZGUuIEF0dGVtcHRzIHRvIHF1ZXJ5IHRoZXNlIGRh
dGEKLSAgICAvLyBzdHJ1Y3R1cmVzIHVzaW5nIHRoZSBjb25jdXJyZW50IEFQSSAoZ2V0U3R1Yklu
Zm9NYXAgYW5kIGZyaWVuZHMpIHdpbGwgcmV0dXJuIG5vdGhpbmcgaWYgd2UKKyAgICAvLyBzdHJ1
Y3R1cmVzIHVzaW5nIHRoZSBjb25jdXJyZW50IEFQSSAoZ2V0SUNTdGF0dXNNYXAgYW5kIGZyaWVu
ZHMpIHdpbGwgcmV0dXJuIG5vdGhpbmcgaWYgd2UKICAgICAvLyBkb24ndCBoYXZlIEpJVCBjb2Rl
LgogICAgIG1fc3R1YkluZm9zLmNsZWFyKCk7CiAgICAgbV9jYWxsTGlua0luZm9zLmNsZWFyKCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZp
c2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJFeHByZXNzaW9u
UmFuZ2VJbmZvLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAi
SGFuZGxlckluZm8uaCIKKyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgogI2luY2x1ZGUgIkluc3Ry
dWN0aW9uLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVENvZGVNYXAuaCIK
QEAgLTk2LDggKzk3LDYgQEAgZW51bSBjbGFzcyBBY2Nlc3NUeXBlIDogaW50OF90OwogCiBzdHJ1
Y3QgQXJpdGhQcm9maWxlOwogCi10eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdpbiwgU3RydWN0dXJl
U3R1YkluZm8qLCBDb2RlT3JpZ2luQXBwcm94aW1hdGVIYXNoPiBTdHViSW5mb01hcDsKLQogZW51
bSBSZW9wdGltaXphdGlvbk1vZGUgeyBEb250Q291bnRSZW9wdGltaXphdGlvbiwgQ291bnRSZW9w
dGltaXphdGlvbiB9OwogCiBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKQEAgLTE5
Niw4ICsxOTUsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGR1bXBCeXRlY29kZSgpOwogICAgIHZv
aWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJik7Ci0gICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJp
bnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlv
biomIGl0LCBjb25zdCBTdHViSW5mb01hcCYgPSBTdHViSW5mb01hcCgpLCBjb25zdCBDYWxsTGlu
a0luZm9NYXAmID0gQ2FsbExpbmtJbmZvTWFwKCkpOwotICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFBy
aW50U3RyZWFtJiBvdXQsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBTdHViSW5mb01h
cCYgPSBTdHViSW5mb01hcCgpLCBjb25zdCBDYWxsTGlua0luZm9NYXAmID0gQ2FsbExpbmtJbmZv
TWFwKCkpOworICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IElu
c3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgSUNTdGF0dXNN
YXAmID0gSUNTdGF0dXNNYXAoKSk7CisgICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0m
IG91dCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IElDU3RhdHVzTWFwJiA9IElDU3Rh
dHVzTWFwKCkpOwogCiAgICAgdm9pZCBkdW1wRXhjZXB0aW9uSGFuZGxlcnMoUHJpbnRTdHJlYW0m
KTsKICAgICB2b2lkIHByaW50U3RydWN0dXJlcyhQcmludFN0cmVhbSYsIGNvbnN0IEluc3RydWN0
aW9uKik7CkBAIC0yMzcsMTQgKzIzNiw4IEBAIHB1YmxpYzoKIAogICAgIHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQ+IGJ5dGVjb2RlT2Zmc2V0RnJvbUNhbGxTaXRlSW5kZXgoQ2FsbFNpdGVJbmRleCk7
CiAKLSAgICB2b2lkIGdldFN0dWJJbmZvTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFN0
dWJJbmZvTWFwJiByZXN1bHQpOwotICAgIHZvaWQgZ2V0U3R1YkluZm9NYXAoU3R1YkluZm9NYXAm
IHJlc3VsdCk7Ci0gICAgCi0gICAgdm9pZCBnZXRDYWxsTGlua0luZm9NYXAoY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyJiwgQ2FsbExpbmtJbmZvTWFwJiByZXN1bHQpOwotICAgIHZvaWQgZ2V0Q2Fs
bExpbmtJbmZvTWFwKENhbGxMaW5rSW5mb01hcCYgcmVzdWx0KTsKLQotICAgIHZvaWQgZ2V0QnlW
YWxJbmZvTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5VmFsSW5mb01hcCYgcmVzdWx0
KTsKLSAgICB2b2lkIGdldEJ5VmFsSW5mb01hcChCeVZhbEluZm9NYXAmIHJlc3VsdCk7CisgICAg
dm9pZCBnZXRJQ1N0YXR1c01hcChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBJQ1N0YXR1c01h
cCYgcmVzdWx0KTsKKyAgICB2b2lkIGdldElDU3RhdHVzTWFwKElDU3RhdHVzTWFwJiByZXN1bHQp
OwogICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgSklUQWRkSUMqIGFkZEpJVEFkZElDKEFyaXRo
UHJvZmlsZSosIEluc3RydWN0aW9uKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZU9yaWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
Niw3ICs0Niw3IEBAIHVuc2lnbmVkIENvZGVPcmlnaW46OmlubGluZURlcHRoKCkgY29uc3QKICAg
ICByZXR1cm4gaW5saW5lRGVwdGhGb3JDYWxsRnJhbWUoaW5saW5lQ2FsbEZyYW1lKTsKIH0KIAot
Ym9vbCBDb2RlT3JpZ2luOjppc0FwcHJveGltYXRlbHlFcXVhbFRvKGNvbnN0IENvZGVPcmlnaW4m
IG90aGVyKSBjb25zdAorYm9vbCBDb2RlT3JpZ2luOjppc0FwcHJveGltYXRlbHlFcXVhbFRvKGNv
bnN0IENvZGVPcmlnaW4mIG90aGVyLCBJbmxpbmVDYWxsRnJhbWUqIHRlcm1pbmFsKSBjb25zdAog
ewogICAgIENvZGVPcmlnaW4gYSA9ICp0aGlzOwogICAgIENvZGVPcmlnaW4gYiA9IG90aGVyOwpA
QCAtNjgsMTAgKzY4LDEyIEBAIGJvb2wgQ29kZU9yaWdpbjo6aXNBcHByb3hpbWF0ZWx5RXF1YWxU
bygKICAgICAgICAgaWYgKGEuYnl0ZWNvZGVJbmRleCAhPSBiLmJ5dGVjb2RlSW5kZXgpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgICAgICBpZiAoKCEhYS5pbmxpbmVD
YWxsRnJhbWUpICE9ICghIWIuaW5saW5lQ2FsbEZyYW1lKSkKKyAgICAgICAgYm9vbCBhSGFzSW5s
aW5lQ2FsbEZyYW1lID0gISFhLmlubGluZUNhbGxGcmFtZSAmJiBhLmlubGluZUNhbGxGcmFtZSAh
PSB0ZXJtaW5hbDsKKyAgICAgICAgYm9vbCBiSGFzSW5saW5lQ2FsbEZyYW1lID0gISFiLmlubGlu
ZUNhbGxGcmFtZTsKKyAgICAgICAgaWYgKGFIYXNJbmxpbmVDYWxsRnJhbWUgIT0gYkhhc0lubGlu
ZUNhbGxGcmFtZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgICAg
IGlmICghYS5pbmxpbmVDYWxsRnJhbWUpCisgICAgICAgIGlmICghYUhhc0lubGluZUNhbGxGcmFt
ZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAKICAgICAgICAgaWYgKGEuaW5s
aW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay5nZXQoKSAhPSBiLmlubGluZUNhbGxGcmFt
ZS0+YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkpCkBAIC04Miw3ICs4NCw3IEBAIGJvb2wgQ29kZU9y
aWdpbjo6aXNBcHByb3hpbWF0ZWx5RXF1YWxUbygKICAgICB9CiB9CiAKLXVuc2lnbmVkIENvZGVP
cmlnaW46OmFwcHJveGltYXRlSGFzaCgpIGNvbnN0Cit1bnNpZ25lZCBDb2RlT3JpZ2luOjphcHBy
b3hpbWF0ZUhhc2goSW5saW5lQ2FsbEZyYW1lKiB0ZXJtaW5hbCkgY29uc3QKIHsKICAgICBpZiAo
IWlzU2V0KCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtOTcsNiArOTksOSBAQCB1bnNpZ25lZCBD
b2RlT3JpZ2luOjphcHByb3hpbWF0ZUhhc2goKSBjCiAgICAgICAgIGlmICghY29kZU9yaWdpbi5p
bmxpbmVDYWxsRnJhbWUpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAKKyAg
ICAgICAgaWYgKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lID09IHRlcm1pbmFsKQorICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgCiAgICAgICAgIHJlc3VsdCArPSBXVEY6OlB0
ckhhc2g8SlNDZWxsKj46Omhhc2goY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5l
Q29kZUJsb2NrLmdldCgpKTsKICAgICAgICAgCiAgICAgICAgIGNvZGVPcmlnaW4gPSBjb2RlT3Jp
Z2luLmlubGluZUNhbGxGcmFtZS0+ZGlyZWN0Q2FsbGVyOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb2RlQmxvY2tIYXNo
LmgiCisjaW5jbHVkZSAiRXhpdGluZ0lubGluZUtpbmQuaCIKICNpbmNsdWRlIDxsaW1pdHMuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgpA
QCAtODgsMTUgKzg5LDIwIEBAIHN0cnVjdCBDb2RlT3JpZ2luIHsKICAgICAKICAgICBzdGF0aWMg
dW5zaWduZWQgaW5saW5lRGVwdGhGb3JDYWxsRnJhbWUoSW5saW5lQ2FsbEZyYW1lKik7CiAgICAg
CisgICAgRXhpdGluZ0lubGluZUtpbmQgZXhpdGluZ0lubGluZUtpbmQoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIGlubGluZUNhbGxGcmFtZSA/IEV4aXRGcm9tSW5saW5lZCA6IEV4aXRG
cm9tTm90SW5saW5lZDsKKyAgICB9CisgICAgCiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0Owog
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2RlT3JpZ2luJiBvdGhlcikgY29uc3Q7CiAgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IENvZGVPcmlnaW4mIG90aGVyKSBjb25zdCB7IHJldHVybiAh
KCp0aGlzID09IG90aGVyKTsgfQogICAgIAogICAgIC8vIFRoaXMgY2hlY2tzIGlmIHRoZSB0d28g
Y29kZSBvcmlnaW5zIGNvcnJlc3BvbmQgdG8gdGhlIHNhbWUgc3RhY2sgdHJhY2Ugc25pcHBldHMs
CiAgICAgLy8gYnV0IGlnbm9yZSB3aGV0aGVyIHRoZSBJbmxpbmVDYWxsRnJhbWUncyBhcmUgaWRl
bnRpY2FsLgotICAgIGJvb2wgaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhjb25zdCBDb2RlT3JpZ2lu
JiBvdGhlcikgY29uc3Q7CisgICAgYm9vbCBpc0FwcHJveGltYXRlbHlFcXVhbFRvKGNvbnN0IENv
ZGVPcmlnaW4mIG90aGVyLCBJbmxpbmVDYWxsRnJhbWUqIHRlcm1pbmFsID0gbnVsbHB0cikgY29u
c3Q7CiAgICAgCi0gICAgdW5zaWduZWQgYXBwcm94aW1hdGVIYXNoKCkgY29uc3Q7CisgICAgdW5z
aWduZWQgYXBwcm94aW1hdGVIYXNoKElubGluZUNhbGxGcmFtZSogdGVybWluYWwgPSBudWxscHRy
KSBjb25zdDsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlvbj4KICAgICB2b2lkIHdh
bGtVcElubGluZVN0YWNrKGNvbnN0IEZ1bmN0aW9uJik7CkBAIC0xMDYsNyArMTEyLDcgQEAgc3Ry
dWN0IENvZGVPcmlnaW4gewogICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZHVtcChQ
cmludFN0cmVhbSYpIGNvbnN0OwogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYs
IER1bXBDb250ZXh0KikgY29uc3Q7Ci0KKyAgICAKIHByaXZhdGU6CiAgICAgc3RhdGljIElubGlu
ZUNhbGxGcmFtZSogZGVsZXRlZE1hcmtlcigpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCShyZXZpc2lvbiAyMzIy
MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKIAogdm9pZCBGcmVxdWVudEV4aXRTaXRlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KCJiYyMiLCBtX2J5dGVjb2RlT2Zmc2V0LCAiOiAiLCBt
X2tpbmQsICIvIiwgbV9qaXRUeXBlKTsKKyAgICBvdXQucHJpbnQoImJjIyIsIG1fYnl0ZWNvZGVP
ZmZzZXQsICI6ICIsIG1fa2luZCwgIi8iLCBtX2ppdFR5cGUsICIvIiwgbV9pbmxpbmVLaW5kKTsK
IH0KIAogRXhpdFByb2ZpbGU6OkV4aXRQcm9maWxlKCkgeyB9CkBAIC00Myw4ICs0MywxMCBAQCBF
eGl0UHJvZmlsZTo6fkV4aXRQcm9maWxlKCkgeyB9CiAKIGJvb2wgRXhpdFByb2ZpbGU6OmFkZChD
b2RlQmxvY2sqIG93bmVyLCBjb25zdCBGcmVxdWVudEV4aXRTaXRlJiBzaXRlKQogeworICAgIFJF
TEVBU0VfQVNTRVJUKHNpdGUuaml0VHlwZSgpICE9IEV4aXRGcm9tQW55dGhpbmcpOworICAgIFJF
TEVBU0VfQVNTRVJUKHNpdGUuaW5saW5lS2luZCgpICE9IEV4aXRGcm9tQW55SW5saW5lS2luZCk7
CisKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG93bmVyLT51bmxpbmtlZENvZGVCbG9j
aygpLT5tX2xvY2spOwotICAgIEFTU0VSVChzaXRlLmppdFR5cGUoKSAhPSBFeGl0RnJvbUFueXRo
aW5nKTsKIAogICAgIENPREVCTE9DS19MT0dfRVZFTlQob3duZXIsICJmcmVxdWVudEV4aXQiLCAo
c2l0ZSkpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4
aXRQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0RGR0V4aXRQcm9maWxlLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ29uY3VycmVudEpTTG9jay5oIgogI2luY2x1ZGUg
IkV4aXRLaW5kLmgiCisjaW5jbHVkZSAiRXhpdGluZ0lubGluZUtpbmQuaCIKICNpbmNsdWRlICJF
eGl0aW5nSklUVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgpAQCAtNDEsNiArNDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9ieXRlY29k
ZU9mZnNldCgwKSAvLyAwID0gZW1wdHkgdmFsdWUKICAgICAgICAgLCBtX2tpbmQoRXhpdEtpbmRV
bnNldCkKICAgICAgICAgLCBtX2ppdFR5cGUoRXhpdEZyb21Bbnl0aGluZykKKyAgICAgICAgLCBt
X2lubGluZUtpbmQoRXhpdEZyb21BbnlJbmxpbmVLaW5kKQogICAgIHsKICAgICB9CiAgICAgCkBA
IC00OCwxMyArNTAsMTUgQEAgcHVibGljOgogICAgICAgICA6IG1fYnl0ZWNvZGVPZmZzZXQoMSkg
Ly8gMSA9IGRlbGV0ZWQgdmFsdWUKICAgICAgICAgLCBtX2tpbmQoRXhpdEtpbmRVbnNldCkKICAg
ICAgICAgLCBtX2ppdFR5cGUoRXhpdEZyb21Bbnl0aGluZykKKyAgICAgICAgLCBtX2lubGluZUtp
bmQoRXhpdEZyb21BbnlJbmxpbmVLaW5kKQogICAgIHsKICAgICB9CiAgICAgCi0gICAgZXhwbGlj
aXQgRnJlcXVlbnRFeGl0U2l0ZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRXhpdEtpbmQga2lu
ZCwgRXhpdGluZ0pJVFR5cGUgaml0VHlwZSA9IEV4aXRGcm9tQW55dGhpbmcpCisgICAgZXhwbGlj
aXQgRnJlcXVlbnRFeGl0U2l0ZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRXhpdEtpbmQga2lu
ZCwgRXhpdGluZ0pJVFR5cGUgaml0VHlwZSA9IEV4aXRGcm9tQW55dGhpbmcsIEV4aXRpbmdJbmxp
bmVLaW5kIGlubGluZUtpbmQgPSBFeGl0RnJvbUFueUlubGluZUtpbmQpCiAgICAgICAgIDogbV9i
eXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkKICAgICAgICAgLCBtX2tpbmQoa2luZCkKICAg
ICAgICAgLCBtX2ppdFR5cGUoaml0VHlwZSkKKyAgICAgICAgLCBtX2lubGluZUtpbmQoaW5saW5l
S2luZCkKICAgICB7CiAgICAgICAgIGlmIChtX2tpbmQgPT0gQXJndW1lbnRzRXNjYXBlZCkgewog
ICAgICAgICAgICAgLy8gQ291bnQgdGhpcyBvbmUgZ2xvYmFsbHkuIEl0IGRvZXNuJ3QgbWF0dGVy
IHdoZXJlIGluIHRoZSBjb2RlIGJsb2NrIHRoZSBhcmd1bWVudHMgZXhjYXBlZDsKQEAgLTY1LDEw
ICs2OSwxMSBAQCBwdWJsaWM6CiAgICAgCiAgICAgLy8gVXNlIHRoaXMgY29uc3RydWN0b3IgaWYg
eW91IHdpc2ggZm9yIHRoZSBleGl0IHNpdGUgdG8gYmUgY291bnRlZCBnbG9iYWxseSB3aXRoaW4g
aXRzCiAgICAgLy8gY29kZSBibG9jay4KLSAgICBleHBsaWNpdCBGcmVxdWVudEV4aXRTaXRlKEV4
aXRLaW5kIGtpbmQsIEV4aXRpbmdKSVRUeXBlIGppdFR5cGUgPSBFeGl0RnJvbUFueXRoaW5nKQor
ICAgIGV4cGxpY2l0IEZyZXF1ZW50RXhpdFNpdGUoRXhpdEtpbmQga2luZCwgRXhpdGluZ0pJVFR5
cGUgaml0VHlwZSA9IEV4aXRGcm9tQW55dGhpbmcsIEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtp
bmQgPSBFeGl0RnJvbUFueUlubGluZUtpbmQpCiAgICAgICAgIDogbV9ieXRlY29kZU9mZnNldCgw
KQogICAgICAgICAsIG1fa2luZChraW5kKQogICAgICAgICAsIG1faml0VHlwZShqaXRUeXBlKQor
ICAgICAgICAsIG1faW5saW5lS2luZChpbmxpbmVLaW5kKQogICAgIHsKICAgICB9CiAgICAgCkBA
IC04MSw3ICs4Niw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX2J5dGVjb2Rl
T2Zmc2V0ID09IG90aGVyLm1fYnl0ZWNvZGVPZmZzZXQKICAgICAgICAgICAgICYmIG1fa2luZCA9
PSBvdGhlci5tX2tpbmQKLSAgICAgICAgICAgICYmIG1faml0VHlwZSA9PSBvdGhlci5tX2ppdFR5
cGU7CisgICAgICAgICAgICAmJiBtX2ppdFR5cGUgPT0gb3RoZXIubV9qaXRUeXBlCisgICAgICAg
ICAgICAmJiBtX2lubGluZUtpbmQgPT0gb3RoZXIubV9pbmxpbmVLaW5kOwogICAgIH0KICAgICAK
ICAgICBib29sIHN1YnN1bWVzKGNvbnN0IEZyZXF1ZW50RXhpdFNpdGUmIG90aGVyKSBjb25zdApA
QCAtOTAsMTkgKzk2LDI0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgaWYgKG1fa2luZCAhPSBvdGhlci5tX2tpbmQpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIGlmIChtX2ppdFR5cGUgPT0gRXhpdEZyb21Bbnl0aGluZykKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICByZXR1cm4gbV9qaXRUeXBlID09IG90aGVyLm1faml0
VHlwZTsKKyAgICAgICAgaWYgKG1faml0VHlwZSAhPSBFeGl0RnJvbUFueXRoaW5nCisgICAgICAg
ICAgICAmJiBtX2ppdFR5cGUgIT0gb3RoZXIubV9qaXRUeXBlKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBpZiAobV9pbmxpbmVLaW5kICE9IEV4aXRGcm9tQW55SW5saW5lS2lu
ZAorICAgICAgICAgICAgJiYgbV9pbmxpbmVLaW5kICE9IG90aGVyLm1faW5saW5lS2luZCkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAg
IAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6
aW50SGFzaChtX2J5dGVjb2RlT2Zmc2V0KSArIG1fa2luZCArIHN0YXRpY19jYXN0PHN0ZDo6dW5k
ZXJseWluZ190eXBlX3Q8RXhpdGluZ0pJVFR5cGU+PihtX2ppdFR5cGUpICogNzsKKyAgICAgICAg
cmV0dXJuIFdURjo6aW50SGFzaChtX2J5dGVjb2RlT2Zmc2V0KSArIG1fa2luZCArIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihtX2ppdFR5cGUpICogNyArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2lu
bGluZUtpbmQpICogMTE7CiAgICAgfQogICAgIAogICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
KCkgY29uc3QgeyByZXR1cm4gbV9ieXRlY29kZU9mZnNldDsgfQogICAgIEV4aXRLaW5kIGtpbmQo
KSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KICAgICBFeGl0aW5nSklUVHlwZSBqaXRUeXBlKCkg
Y29uc3QgeyByZXR1cm4gbV9qaXRUeXBlOyB9CisgICAgRXhpdGluZ0lubGluZUtpbmQgaW5saW5l
S2luZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lS2luZDsgfQogICAgIAogICAgIEZyZXF1ZW50
RXhpdFNpdGUgd2l0aEpJVFR5cGUoRXhpdGluZ0pJVFR5cGUgaml0VHlwZSkgY29uc3QKICAgICB7
CkBAIC0xMTEsNiArMTIyLDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAKKyAgICBGcmVxdWVudEV4aXRTaXRlIHdpdGhJbmxpbmVLaW5kKEV4aXRpbmdJbmxpbmVL
aW5kIGlubGluZUtpbmQpIGNvbnN0CisgICAgeworICAgICAgICBGcmVxdWVudEV4aXRTaXRlIHJl
c3VsdCA9ICp0aGlzOworICAgICAgICByZXN1bHQubV9pbmxpbmVLaW5kID0gaW5saW5lS2luZDsK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBib29sIGlzSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2tpbmQgPT0gRXhpdEtp
bmRVbnNldCAmJiBtX2J5dGVjb2RlT2Zmc2V0OwpAQCAtMTIyLDYgKzE0MCw3IEBAIHByaXZhdGU6
CiAgICAgdW5zaWduZWQgbV9ieXRlY29kZU9mZnNldDsKICAgICBFeGl0S2luZCBtX2tpbmQ7CiAg
ICAgRXhpdGluZ0pJVFR5cGUgbV9qaXRUeXBlOworICAgIEV4aXRpbmdJbmxpbmVLaW5kIG1faW5s
aW5lS2luZDsKIH07CiAKIHN0cnVjdCBGcmVxdWVudEV4aXRTaXRlSGFzaCB7CkBAIC0xOTIsMTAg
KzIxMSwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNFeGl0U2l0ZShjb25zdCBGcmVxdWVudEV4
aXRTaXRlJiBzaXRlKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKHNpdGUuaml0VHlwZSgpID09
IEV4aXRGcm9tQW55dGhpbmcpIHsKLSAgICAgICAgICAgIHJldHVybiBoYXNFeGl0U2l0ZShzaXRl
LndpdGhKSVRUeXBlKEV4aXRGcm9tREZHKSkKLSAgICAgICAgICAgICAgICB8fCBoYXNFeGl0U2l0
ZShzaXRlLndpdGhKSVRUeXBlKEV4aXRGcm9tRlRMKSk7CisgICAgICAgICAgICByZXR1cm4gaGFz
RXhpdFNpdGVXaXRoU3BlY2lmaWNKSVRUeXBlKHNpdGUud2l0aEpJVFR5cGUoRXhpdEZyb21ERkcp
KQorICAgICAgICAgICAgICAgIHx8IGhhc0V4aXRTaXRlV2l0aFNwZWNpZmljSklUVHlwZShzaXRl
LndpdGhKSVRUeXBlKEV4aXRGcm9tRlRMKSk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1f
ZnJlcXVlbnRFeGl0U2l0ZXMuZmluZChzaXRlKSAhPSBtX2ZyZXF1ZW50RXhpdFNpdGVzLmVuZCgp
OworICAgICAgICByZXR1cm4gaGFzRXhpdFNpdGVXaXRoU3BlY2lmaWNKSVRUeXBlKHNpdGUpOwog
ICAgIH0KICAgICAKICAgICBib29sIGhhc0V4aXRTaXRlKEV4aXRLaW5kIGtpbmQpIGNvbnN0CkBA
IC0yMDgsNiArMjI3LDIwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGhhc0V4aXRTaXRlKEZy
ZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwga2luZCkpOwogICAgIH0KIHByaXZhdGU6Cisg
ICAgYm9vbCBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0pJVFR5cGUoY29uc3QgRnJlcXVlbnRFeGl0
U2l0ZSYgc2l0ZSkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChzaXRlLmlubGluZUtpbmQoKSA9
PSBFeGl0RnJvbUFueUlubGluZUtpbmQpIHsKKyAgICAgICAgICAgIHJldHVybiBoYXNFeGl0U2l0
ZVdpdGhTcGVjaWZpY0lubGluZUtpbmQoc2l0ZS53aXRoSW5saW5lS2luZChFeGl0RnJvbU5vdElu
bGluZWQpKQorICAgICAgICAgICAgICAgIHx8IGhhc0V4aXRTaXRlV2l0aFNwZWNpZmljSW5saW5l
S2luZChzaXRlLndpdGhJbmxpbmVLaW5kKEV4aXRGcm9tSW5saW5lZCkpOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0lubGluZUtpbmQoc2l0ZSk7Cisg
ICAgfQorICAgIAorICAgIGJvb2wgaGFzRXhpdFNpdGVXaXRoU3BlY2lmaWNJbmxpbmVLaW5kKGNv
bnN0IEZyZXF1ZW50RXhpdFNpdGUmIHNpdGUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9mcmVxdWVudEV4aXRTaXRlcy5maW5kKHNpdGUpICE9IG1fZnJlcXVlbnRFeGl0U2l0ZXMuZW5k
KCk7CisgICAgfQorICAgIAogICAgIEhhc2hTZXQ8RnJlcXVlbnRFeGl0U2l0ZT4gbV9mcmVxdWVu
dEV4aXRTaXRlczsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9F
eGl0RmxhZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V4aXRGbGFnLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRXhpdEZsYWcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkV4aXRGbGFnLmgiCisKKyNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVy
Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCit2b2lkIEV4aXRGbGFnOjpkdW1wKFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0Cit7CisgICAgaWYgKCFtX2JpdHMpIHsKKyAgICAgICAgb3V0LnByaW50KCJm
YWxzZSIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIENvbW1hUHJpbnRlciBj
b21tYSgifCIpOworICAgIGlmIChpc1NldChFeGl0RnJvbU5vdElubGluZWQpKQorICAgICAgICBv
dXQucHJpbnQoY29tbWEsICJub3RJbmxpbmVkIik7CisgICAgaWYgKGlzU2V0KEV4aXRGcm9tSW5s
aW5lZCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgImlubGluZWQiKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0
RmxhZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0
RmxhZy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9F
eGl0RmxhZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiRXhpdGluZ0lubGluZUtpbmQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV4aXRG
bGFnIHsKK3B1YmxpYzoKKyAgICBFeGl0RmxhZygpIHsgfQorICAgIAorICAgIEV4aXRGbGFnKGJv
b2wgdmFsdWUsIEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQpCisgICAgeworICAgICAgICBp
ZiAoIXZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgc3dpdGNo
IChpbmxpbmVLaW5kKSB7CisgICAgICAgIGNhc2UgRXhpdEZyb21BbnlJbmxpbmVLaW5kOgorICAg
ICAgICAgICAgbV9iaXRzID0gdHJ1ZU5vdElubGluZWQgfCB0cnVlSW5saW5lZDsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEV4aXRGcm9tTm90SW5saW5lZDoKKyAgICAgICAgICAg
IG1fYml0cyA9IHRydWVOb3RJbmxpbmVkOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgRXhpdEZyb21JbmxpbmVkOgorICAgICAgICAgICAgbV9iaXRzID0gdHJ1ZUlubGluZWQ7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBFeGl0RmxhZyBv
cGVyYXRvcnwoY29uc3QgRXhpdEZsYWcmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgRXhp
dEZsYWcgcmVzdWx0OworICAgICAgICByZXN1bHQubV9iaXRzID0gbV9iaXRzIHwgb3RoZXIubV9i
aXRzOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICBFeGl0RmxhZyYg
b3BlcmF0b3J8PShjb25zdCBFeGl0RmxhZyYgb3RoZXIpCisgICAgeworICAgICAgICAqdGhpcyA9
ICp0aGlzIHwgb3RoZXI7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisgICAgCisgICAg
RXhpdEZsYWcgb3BlcmF0b3ImKGNvbnN0IEV4aXRGbGFnJiBvdGhlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIEV4aXRGbGFnIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1fYml0cyA9IG1fYml0cyAm
IG90aGVyLm1fYml0czsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAg
RXhpdEZsYWcmIG9wZXJhdG9yJj0oY29uc3QgRXhpdEZsYWcmIG90aGVyKQorICAgIHsKKyAgICAg
ICAgKnRoaXMgPSAqdGhpcyAmIG90aGVyOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQor
ICAgIAorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuICEhbV9iaXRzOworICAgIH0KKyAgICAKKyAgICBib29sIGlzU2V0KEV4aXRpbmdJbmxp
bmVLaW5kIGlubGluZUtpbmQpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISEoKnRoaXMg
JiBFeGl0RmxhZyh0cnVlLCBpbmxpbmVLaW5kKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgZHVt
cChQcmludFN0cmVhbSYpIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHVpbnQ4X3QgdHJ1ZU5vdElubGluZWQgPSAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWlu
dDhfdCB0cnVlSW5saW5lZCA9IDI7CisgICAgCisgICAgdWludDhfdCBtX2JpdHMgeyAwIH07Cit9
OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0V4aXRpbmdJbmxpbmVLaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuY3BwCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0aW5nSW5saW5lS2luZC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRXhpdGlu
Z0lubGluZUtpbmQuaCIKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3Bh
Y2UgV1RGIHsKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwordm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiBvdXQsIEV4aXRpbmdJbmxpbmVLaW5kIHR5cGUpCit7CisgICAgc3dpdGNoICh0
eXBlKSB7CisgICAgY2FzZSBFeGl0RnJvbUFueUlubGluZUtpbmQ6CisgICAgICAgIG91dC5wcmlu
dCgiRnJvbUFueUlubGluZUtpbmQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRXhpdEZy
b21Ob3RJbmxpbmVkOgorICAgICAgICBvdXQucHJpbnQoIkZyb21Ob3RJbmxpbmVkIik7CisgICAg
ICAgIHJldHVybjsKKyAgICBjYXNlIEV4aXRGcm9tSW5saW5lZDoKKyAgICAgICAgb3V0LnByaW50
KCJGcm9tSW5saW5lZCIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lu
bGluZUtpbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3Bh
Y2UgSlNDIHsKKworZW51bSBFeGl0aW5nSW5saW5lS2luZCA6IHVpbnQ4X3QgeworICAgIEV4aXRG
cm9tQW55SW5saW5lS2luZCwKKyAgICBFeGl0RnJvbU5vdElubGluZWQsCisgICAgRXhpdEZyb21J
bmxpbmVkLAorfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBXVEYgeworCitj
bGFzcyBQcmludFN0cmVhbTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6
RXhpdGluZ0lubGluZUtpbmQpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHJl
dmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlk
U3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTYgKzUxLDYgQEAgYm9vbCBHZXRCeUlk
U3RhdHVzOjphcHBlbmRWYXJpYW50KGNvbnN0IAogICAgIHJldHVybiBhcHBlbmRJQ1N0YXR1c1Zh
cmlhbnQobV92YXJpYW50cywgdmFyaWFudCk7CiB9CiAKLSNpZiBFTkFCTEUoREZHX0pJVCkKLWJv
b2wgR2V0QnlJZFN0YXR1czo6aGFzRXhpdFNpdGUoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1
bnNpZ25lZCBieXRlY29kZUluZGV4KQotewotICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtl
ZENvZGVCbG9jayA9IHByb2ZpbGVkQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCk7Ci0gICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcih1bmxpbmtlZENvZGVCbG9jay0+bV9sb2NrKTsKLSAgICBy
ZXR1cm4gdW5saW5rZWRDb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVu
dEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZENhY2hlKSkKLSAgICAgICAgfHwgdW5saW5rZWRD
b2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVj
b2RlSW5kZXgsIEJhZENvbnN0YW50Q2FjaGUpKTsKLX0KLSNlbmRpZgotCiBHZXRCeUlkU3RhdHVz
IEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2Nr
LCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogewogICAg
IFZNJiB2bSA9ICpwcm9maWxlZEJsb2NrLT52bSgpOwpAQCAtMTA1LDcgKzk1LDcgQEAgR2V0QnlJ
ZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbQogICAgIH0KIH0KIAotR2V0QnlJZFN0
YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywg
U3R1YkluZm9NYXAmIG1hcCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCkKK0dldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxv
Y2sqIHByb2ZpbGVkQmxvY2ssIElDU3RhdHVzTWFwJiBtYXAsIHVuc2lnbmVkIGJ5dGVjb2RlSW5k
ZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIEV4aXRGbGFnIGRpZEV4aXQsIENhbGxMaW5rU3Rh
dHVzOjpFeGl0U2l0ZURhdGEgY2FsbEV4aXRTaXRlRGF0YSkKIHsKICAgICBDb25jdXJyZW50SlNM
b2NrZXIgbG9ja2VyKHByb2ZpbGVkQmxvY2stPm1fbG9jayk7CiAKQEAgLTExMywxMiArMTAzLDEx
IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKIAogI2lmIEVOQUJM
RShERkdfSklUKQogICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0
ZUZlZWRiYWNrKAotICAgICAgICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssIG1hcC5nZXQoQ29kZU9y
aWdpbihieXRlY29kZUluZGV4KSksIHVpZCwKLSAgICAgICAgQ2FsbExpbmtTdGF0dXM6OmNvbXB1
dGVFeGl0U2l0ZURhdGEocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCkpOworICAgICAgICBs
b2NrZXIsIHByb2ZpbGVkQmxvY2ssIG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4KSku
c3R1YkluZm8sIHVpZCwKKyAgICAgICAgY2FsbEV4aXRTaXRlRGF0YSk7CiAgICAgCi0gICAgaWYg
KCFyZXN1bHQudGFrZXNTbG93UGF0aCgpCi0gICAgICAgICYmIGhhc0V4aXRTaXRlKHByb2ZpbGVk
QmxvY2ssIGJ5dGVjb2RlSW5kZXgpKQotICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhyZXN1
bHQubWFrZXNDYWxscygpID8gTWFrZXNDYWxscyA6IFRha2VzU2xvd1BhdGgsIHRydWUpOworICAg
IGlmIChkaWRFeGl0KQorICAgICAgICByZXR1cm4gcmVzdWx0LnNsb3dWZXJzaW9uKCk7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShtYXApOwogI2VuZGlmCkBAIC0xMzYsOCArMTI1LDggQEAgR2V0
QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yUwogICAgICAgICBsb2NrZXIsIHBy
b2ZpbGVkQmxvY2ssIHN0dWJJbmZvLCB1aWQsCiAgICAgICAgIENhbGxMaW5rU3RhdHVzOjpjb21w
dXRlRXhpdFNpdGVEYXRhKHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkp
OwogCi0gICAgaWYgKCFyZXN1bHQudGFrZXNTbG93UGF0aCgpICYmIEdldEJ5SWRTdGF0dXM6Omhh
c0V4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkpCi0gICAg
ICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKHJlc3VsdC5tYWtlc0NhbGxzKCkgPyBHZXRCeUlkU3Rh
dHVzOjpNYWtlc0NhbGxzIDogR2V0QnlJZFN0YXR1czo6VGFrZXNTbG93UGF0aCwgdHJ1ZSk7Cisg
ICAgaWYgKCFyZXN1bHQudGFrZXNTbG93UGF0aCgpICYmIGhhc0JhZENhY2hlRXhpdFNpdGUocHJv
ZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KSkKKyAgICAgICAgcmV0dXJuIHJl
c3VsdC5zbG93VmVyc2lvbigpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5kaWYgLy8gRU5B
QkxFKERGR19KSVQpCkBAIC0zMTQsNDAgKzMwMywzNSBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRT
dGF0dXM6OmNvbXB1dGVGb3JTCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogR2V0QnlJZFN0YXR1
cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAotICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9j
aywgQ29kZUJsb2NrKiBkZmdCbG9jaywgU3R1YkluZm9NYXAmIGJhc2VsaW5lTWFwLAotICAgIFN0
dWJJbmZvTWFwJiBkZmdNYXAsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCkKKyAgICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIElDU3RhdHVzTWFwJiBiYXNl
bGluZU1hcCwKKyAgICBJQ1N0YXR1c0NvbnRleHRTdGFjayYgaWNDb250ZXh0U3RhY2ssIENvZGVP
cmlnaW4gY29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKLSNpZiBFTkFCTEUo
REZHX0pJVCkKLSAgICBpZiAoZGZnQmxvY2spIHsKLSAgICAgICAgQ2FsbExpbmtTdGF0dXM6OkV4
aXRTaXRlRGF0YSBleGl0U2l0ZURhdGE7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgIGV4
aXRTaXRlRGF0YSA9IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKAotICAgICAg
ICAgICAgICAgIHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7Ci0gICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgIEdldEJ5SWRTdGF0dXMgcmVzdWx0OwotICAgICAgICB7
Ci0gICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGRmZ0Jsb2NrLT5tX2xvY2sp
OwotICAgICAgICAgICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRl
RmVlZGJhY2soCi0gICAgICAgICAgICAgICAgbG9ja2VyLCBkZmdCbG9jaywgZGZnTWFwLmdldChj
b2RlT3JpZ2luKSwgdWlkLCBleGl0U2l0ZURhdGEpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KHJlc3VsdC50YWtlc1Nsb3dQYXRoKCkpCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgY2FsbEV4aXRTaXRlRGF0YSA9CisgICAgICAg
IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKHByb2ZpbGVkQmxvY2ssIGNvZGVP
cmlnaW4uYnl0ZWNvZGVJbmRleCk7CisgICAgRXhpdEZsYWcgZGlkRXhpdCA9IGhhc0JhZENhY2hl
RXhpdFNpdGUocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsKICAgICAK
LSAgICAgICAgaWYgKGhhc0V4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNv
ZGVJbmRleCkpCi0gICAgICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRo
LCB0cnVlKTsKKyAgICBmb3IgKElDU3RhdHVzQ29udGV4dCogY29udGV4dCA6IGljQ29udGV4dFN0
YWNrKSB7CisgICAgICAgIElDU3RhdHVzIHN0YXR1cyA9IGNvbnRleHQtPmdldChjb2RlT3JpZ2lu
KTsKICAgICAgICAgCi0gICAgICAgIGlmIChyZXN1bHQuaXNTZXQoKSkKKyAgICAgICAgYXV0byB3
aXRoRXhpdHMgPSBbJl0gKGNvbnN0IEdldEJ5SWRTdGF0dXMmIHJlc3VsdCkgLT4gR2V0QnlJZFN0
YXR1cyB7CisgICAgICAgICAgICBpZiAoZGlkRXhpdC5pc1NldChjb2RlT3JpZ2luLmV4aXRpbmdJ
bmxpbmVLaW5kKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQuc2xvd1ZlcnNpb24o
KTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotI2Vsc2UKLSAgICBVTlVTRURf
UEFSQU0oZGZnQmxvY2spOwotICAgIFVOVVNFRF9QQVJBTShkZmdNYXApOwotI2VuZGlmCisgICAg
ICAgIH07CiAKLSAgICByZXR1cm4gY29tcHV0ZUZvcihwcm9maWxlZEJsb2NrLCBiYXNlbGluZU1h
cCwgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCB1aWQpOworICAgICAgICBpZiAoc3RhdHVzLnN0
dWJJbmZvKSB7CisgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvbnRleHQt
Pm9wdGltaXplZENvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgIEdldEJ5SWRTdGF0dXMg
cmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCisgICAg
ICAgICAgICAgICAgbG9ja2VyLCBjb250ZXh0LT5vcHRpbWl6ZWRDb2RlQmxvY2ssIHN0YXR1cy5z
dHViSW5mbywgdWlkLCBjYWxsRXhpdFNpdGVEYXRhKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQu
aXNTZXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gd2l0aEV4aXRzKHJlc3VsdCk7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChzdGF0dXMuZ2V0U3RhdHVzKQorICAgICAgICAg
ICAgcmV0dXJuIHdpdGhFeGl0cygqc3RhdHVzLmdldFN0YXR1cyk7CisgICAgfQorICAgICAgICAK
KyAgICByZXR1cm4gY29tcHV0ZUZvcihwcm9maWxlZEJsb2NrLCBiYXNlbGluZU1hcCwgY29kZU9y
aWdpbi5ieXRlY29kZUluZGV4LCB1aWQsIGRpZEV4aXQsIGNhbGxFeGl0U2l0ZURhdGEpOwogfQog
CiBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoY29uc3QgU3RydWN0dXJl
U2V0JiBzZXQsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCkBAIC00MTQsNiArMzk4LDExIEBAIGJv
b2wgR2V0QnlJZFN0YXR1czo6bWFrZXNDYWxscygpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCitHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OnNsb3dWZXJzaW9uKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhtYWtlc0NhbGxzKCkgPyBNYWtlc0NhbGxzIDogVGFr
ZXNTbG93UGF0aCwgd2FzU2VlbkluSklUKCkpOworfQorCiB2b2lkIEdldEJ5SWRTdGF0dXM6OmZp
bHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCkKIHsKICAgICBpZiAobV9zdGF0ZSAhPSBTaW1w
bGUpCkBAIC00MjMsNiArNDEyLDI1IEBAIHZvaWQgR2V0QnlJZFN0YXR1czo6ZmlsdGVyKGNvbnN0
IFN0cnVjdHUKICAgICAgICAgbV9zdGF0ZSA9IE5vSW5mb3JtYXRpb247CiB9CiAKK3ZvaWQgR2V0
QnlJZFN0YXR1czo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgZm9y
IChHZXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IG1fdmFyaWFudHMpCisgICAgICAgIHZhcmlhbnQu
bWFya0lmQ2hlYXAodmlzaXRvcik7Cit9CisKK2Jvb2wgR2V0QnlJZFN0YXR1czo6ZmluYWxpemUo
KQoreworICAgIGZvciAoR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKSB7Cisg
ICAgICAgIGlmICghdmFyaWFudC5maW5hbGl6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgICBpZiAobV9tb2R1bGVOYW1lc3BhY2VPYmplY3QgJiYgIUhlYXA6OmlzTWFy
a2VkKG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmIChtX21vZHVsZUVudmlyb25tZW50ICYmICFIZWFwOjppc01hcmtlZChtX21vZHVsZUVudmly
b25tZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCiB2
b2lkIEdldEJ5SWRTdGF0dXM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBv
dXQucHJpbnQoIigiKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRC
eUlkU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0dldEJ5SWRTdGF0dXMuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgs
OSBAQAogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5o
IgogI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKKyNpbmNsdWRlICJFeGl0RmxhZy5oIgog
I2luY2x1ZGUgIkdldEJ5SWRWYXJpYW50LmgiCisjaW5jbHVkZSAiSUNTdGF0dXNNYXAuaCIKICNp
bmNsdWRlICJTY29wZU9mZnNldC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQwLDggKzQyLDYg
QEAgY2xhc3MgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q7CiBjbGFzcyBNb2R1bGVOYW1lc3BhY2VB
Y2Nlc3NDYXNlOwogY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CiAKLXR5cGVkZWYgSGFzaE1hcDxD
b2RlT3JpZ2luLCBTdHJ1Y3R1cmVTdHViSW5mbyosIENvZGVPcmlnaW5BcHByb3hpbWF0ZUhhc2g+
IFN0dWJJbmZvTWFwOwotCiBjbGFzcyBHZXRCeUlkU3RhdHVzIHsKIHB1YmxpYzoKICAgICBlbnVt
IFN0YXRlIHsKQEAgLTgxLDEwICs4MSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIG1fdmFyaWFudHMu
YXBwZW5kKHZhcmlhbnQpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgR2V0QnlJZFN0YXR1cyBj
b21wdXRlRm9yKENvZGVCbG9jayosIFN0dWJJbmZvTWFwJiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRl
eCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7CisgICAgc3RhdGljIEdldEJ5SWRTdGF0dXMgY29t
cHV0ZUZvcihDb2RlQmxvY2sqLCBJQ1N0YXR1c01hcCYsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgs
IFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIEV4aXRGbGFnLCBDYWxsTGlua1N0YXR1czo6RXhpdFNp
dGVEYXRhKTsKICAgICBzdGF0aWMgR2V0QnlJZFN0YXR1cyBjb21wdXRlRm9yKGNvbnN0IFN0cnVj
dHVyZVNldCYsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogICAgIAotICAgIHN0YXRpYyBHZXRC
eUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBDb2RlQmxvY2sq
IGRmZ0Jsb2NrLCBTdHViSW5mb01hcCYgYmFzZWxpbmVNYXAsIFN0dWJJbmZvTWFwJiBkZmdNYXAs
IENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOworICAgIHN0YXRpYyBHZXRCeUlk
U3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJQ1N0YXR1c01hcCYg
YmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4dFN0YWNrJiBkZmdDb250ZXh0U3RhY2ssIENvZGVP
cmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAg
ICAgc3RhdGljIEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZvclN0dWJJbmZvKGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYsIENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8q
LCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKQEAgLTEwNiw2ICsxMDYsOCBA
QCBwdWJsaWM6CiAgICAgYm9vbCB0YWtlc1Nsb3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZSA9PSBUYWtlc1Nsb3dQYXRoIHx8IG1fc3RhdGUgPT0gTWFrZXNDYWxscyB8fCBtX3N0YXRlID09
IEN1c3RvbSB8fCBtX3N0YXRlID09IE1vZHVsZU5hbWVzcGFjZTsgfQogICAgIGJvb2wgbWFrZXND
YWxscygpIGNvbnN0OwogICAgIAorICAgIEdldEJ5SWRTdGF0dXMgc2xvd1ZlcnNpb24oKSBjb25z
dDsKKyAgICAKICAgICBib29sIHdhc1NlZW5JbkpJVCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzU2Vl
bkluSklUOyB9CiAgICAgCiAgICAgLy8gQXR0ZW1wdHMgdG8gcmVkdWNlIHRoZSBzZXQgb2YgdmFy
aWFudHMgdG8gZml0IHRoZSBnaXZlbiBzdHJ1Y3R1cmUgc2V0LiBUaGlzIG1heSBiZSBhcHByb3hp
bWF0ZS4KQEAgLTExNSwxMiArMTE3LDEyIEBAIHB1YmxpYzoKICAgICBKU01vZHVsZUVudmlyb25t
ZW50KiBtb2R1bGVFbnZpcm9ubWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlRW52aXJvbm1l
bnQ7IH0KICAgICBTY29wZU9mZnNldCBzY29wZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nv
cGVPZmZzZXQ7IH0KICAgICAKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7Cisg
ICAgYm9vbCBmaW5hbGl6ZSgpOyAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGlzIGdldHMgdG8gbGl2ZS4K
KyAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKIHByaXZhdGU6
Ci0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAgc3RhdGljIGJvb2wgaGFzRXhpdFNpdGUoQ29kZUJs
b2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7Ci0jZW5kaWYKICNpZiBFTkFCTEUoSklUKQog
ICAgIEdldEJ5SWRTdGF0dXMoY29uc3QgTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZSYpOwogICAg
IHN0YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZl
ZWRiYWNrKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJp
YW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0
QnlJZFZhcmlhbnQuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsNiAr
MTM1LDI0IEBAIGJvb2wgR2V0QnlJZFZhcmlhbnQ6OmF0dGVtcHRUb01lcmdlKGNvbnMKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBHZXRCeUlkVmFyaWFudDo6bWFya0lmQ2hlYXAoU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCit7CisgICAgbV9zdHJ1Y3R1cmVTZXQubWFya0lmQ2hlYXAodmlzaXRv
cik7Cit9CisKK2Jvb2wgR2V0QnlJZFZhcmlhbnQ6OmZpbmFsaXplKCkKK3sKKyAgICBpZiAoIW1f
c3RydWN0dXJlU2V0LmlzU3RpbGxBbGl2ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCFtX2NvbmRpdGlvblNldC5hcmVTdGlsbExpdmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmIChtX2NhbGxMaW5rU3RhdHVzICYmICFtX2NhbGxMaW5rU3RhdHVzLT5maW5hbGl6
ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1faW50cmluc2ljRnVuY3Rpb24g
JiYgIUhlYXA6OmlzTWFya2VkKG1faW50cmluc2ljRnVuY3Rpb24pKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgR2V0QnlJZFZhcmlhbnQ6OmR1bXAo
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBkdW1wSW5Db250ZXh0KG91dCwgMCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQu
aAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dEJ5SWRWYXJpYW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDYgKzczLDkgQEAgcHVibGljOgog
CiAgICAgYm9vbCBhdHRlbXB0VG9NZXJnZShjb25zdCBHZXRCeUlkVmFyaWFudCYgb3RoZXIpOwog
ICAgIAorICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKTsKKyAgICBib29sIGZpbmFs
aXplKCk7CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgdm9p
ZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25zdDsKICAgICAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFwLmNw
cAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0
dXNNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIklDU3RhdHVzTWFwLmgiCisKKyNpbmNsdWRlICJJbmxpbmVDYWxsRnJhbWUuaCIKKyNp
bmNsdWRlICJUZXJtaW5hdGVkQ29kZU9yaWdpbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworSUNT
dGF0dXMgSUNTdGF0dXNDb250ZXh0OjpnZXQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luKSBjb25zdAor
eworICAgIHJldHVybiBtYXAuZ2V0PFRlcm1pbmF0ZWRDb2RlT3JpZ2luSGFzaFRyYW5zbGF0b3I+
KAorICAgICAgICBUZXJtaW5hdGVkQ29kZU9yaWdpbihjb2RlT3JpZ2luLCBpbmxpbmVDYWxsRnJh
bWUpKTsKK30KKworYm9vbCBJQ1N0YXR1c0NvbnRleHQ6OmlzSW5saW5lZChDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4pIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1l
ICYmIGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lICE9IGlubGluZUNhbGxGcmFtZTsKK30KKwor
RXhpdGluZ0lubGluZUtpbmQgSUNTdGF0dXNDb250ZXh0OjppbmxpbmVLaW5kKENvZGVPcmlnaW4g
Y29kZU9yaWdpbikgY29uc3QKK3sKKyAgICByZXR1cm4gaXNJbmxpbmVkKGNvZGVPcmlnaW4pID8g
RXhpdEZyb21JbmxpbmVkIDogRXhpdEZyb21Ob3RJbmxpbmVkOworfQorCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFw
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVz
TWFwLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lD
U3RhdHVzTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkNvZGVPcmlnaW4uaCIKKyNpbmNsdWRlICJFeGl0aW5nSW5saW5lS2luZC5oIgorI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBDYWxsTGlua0lu
Zm87CitjbGFzcyBDYWxsTGlua1N0YXR1czsKK2NsYXNzIENvZGVCbG9jazsKK2NsYXNzIEdldEJ5
SWRTdGF0dXM7CitjbGFzcyBQdXRCeUlkU3RhdHVzOworY2xhc3MgU3RydWN0dXJlU3R1YkluZm87
CitzdHJ1Y3QgQnlWYWxJbmZvOworCitzdHJ1Y3QgSUNTdGF0dXMgeworICAgIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbyB7IG51bGxwdHIgfTsKKyAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5r
SW5mbyB7IG51bGxwdHIgfTsKKyAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyB7IG51bGxwdHIgfTsK
KyAgICBDYWxsTGlua1N0YXR1cyogY2FsbFN0YXR1cyB7IG51bGxwdHIgfTsKKyAgICBHZXRCeUlk
U3RhdHVzKiBnZXRTdGF0dXMgeyBudWxscHRyIH07CisgICAgUHV0QnlJZFN0YXR1cyogcHV0U3Rh
dHVzIHsgbnVsbHB0ciB9OworfTsKKwordHlwZWRlZiBIYXNoTWFwPENvZGVPcmlnaW4sIElDU3Rh
dHVzLCBDb2RlT3JpZ2luQXBwcm94aW1hdGVIYXNoPiBJQ1N0YXR1c01hcDsKKworc3RydWN0IElD
U3RhdHVzQ29udGV4dCB7CisgICAgSUNTdGF0dXMgZ2V0KENvZGVPcmlnaW4pIGNvbnN0OworICAg
IGJvb2wgaXNJbmxpbmVkKENvZGVPcmlnaW4pIGNvbnN0OworICAgIEV4aXRpbmdJbmxpbmVLaW5k
IGlubGluZUtpbmQoQ29kZU9yaWdpbikgY29uc3Q7CisgICAgCisgICAgSW5saW5lQ2FsbEZyYW1l
KiBpbmxpbmVDYWxsRnJhbWUgeyBudWxscHRyIH07CisgICAgQ29kZUJsb2NrKiBvcHRpbWl6ZWRD
b2RlQmxvY2sgeyBudWxscHRyIH07CisgICAgSUNTdGF0dXNNYXAgbWFwOworfTsKKwordHlwZWRl
ZiBWZWN0b3I8SUNTdGF0dXNDb250ZXh0KiwgOD4gSUNTdGF0dXNDb250ZXh0U3RhY2s7CisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SUNTdGF0dXNVdGlscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0lDU3RhdHVzVXRpbHMuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c1V0aWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJQ1N0YXR1c1V0aWxzLmgiCisKKyNpbmNs
dWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJFeGl0RmxhZy5oIgorI2luY2x1ZGUgIlVubGlu
a2VkQ29kZUJsb2NrLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitFeGl0RmxhZyBoYXNCYWRDYWNo
ZUV4aXRTaXRlKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRl
eCkKK3sKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5r
ZWRDb2RlQmxvY2sgPSBwcm9maWxlZEJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpOworICAgIENv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIodW5saW5rZWRDb2RlQmxvY2stPm1fbG9jayk7CisgICAg
YXV0byBleGl0RmxhZyA9IFsmXSAoRXhpdEtpbmQgZXhpdEtpbmQpIC0+IEV4aXRGbGFnIHsKKyAg
ICAgICAgYXV0byB3aXRoSW5saW5lZCA9IFsmXSAoRXhpdGluZ0lubGluZUtpbmQgaW5saW5lS2lu
ZCkgLT4gRXhpdEZsYWcgeworICAgICAgICAgICAgcmV0dXJuIEV4aXRGbGFnKHVubGlua2VkQ29k
ZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29k
ZUluZGV4LCBleGl0S2luZCwgRXhpdEZyb21Bbnl0aGluZywgaW5saW5lS2luZCkpLCBpbmxpbmVL
aW5kKTsKKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIHdpdGhJbmxpbmVkKEV4aXRGcm9tTm90
SW5saW5lZCkgfCB3aXRoSW5saW5lZChFeGl0RnJvbUlubGluZWQpOworICAgIH07CisgICAgcmV0
dXJuIGV4aXRGbGFnKEJhZENhY2hlKSB8IGV4aXRGbGFnKEJhZENvbnN0YW50Q2FjaGUpOworI2Vs
c2UKKyAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CisgICAgVU5VU0VEX1BBUkFNKGJ5
dGVjb2RlSW5kZXgpOworICAgIHJldHVybiBFeGl0RmxhZygpOworI2VuZGlmCit9CisKK30gLy8g
bmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNT
dGF0dXNVdGlscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9JQ1N0YXR1c1V0aWxzLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JQ1N0YXR1c1V0aWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1
LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJFeGl0RmxhZy5oIgorCiBuYW1lc3Bh
Y2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVmFyaWFudFZlY3RvclR5cGUsIHR5cGVuYW1l
IFZhcmlhbnRUeXBlPgpAQCAtNTksNSArNjEsNyBAQCB2b2lkIGZpbHRlcklDU3RhdHVzVmFyaWFu
dHMoVmFyaWFudFZlY3RvCiAgICAgICAgIH0pOwogfQogCitFeGl0RmxhZyBoYXNCYWRDYWNoZUV4
aXRTaXRlKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM5LDEzICszOSwxMyBAQCB2b2lkIEluc3RhbmNlT2ZTdGF0dXM6OmFw
cGVuZFZhcmlhbnQoY29uCiB9CiAKIEluc3RhbmNlT2ZTdGF0dXMgSW5zdGFuY2VPZlN0YXR1czo6
Y29tcHV0ZUZvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3R1YkluZm9NYXAmIGluZm9N
YXAsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIElD
U3RhdHVzTWFwJiBpbmZvTWFwLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQogewogICAgIENvbmN1
cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwogICAgIAogICAgIEluc3Rh
bmNlT2ZTdGF0dXMgcmVzdWx0OwogI2lmIEVOQUJMRShERkdfSklUKQotICAgIHJlc3VsdCA9IGNv
bXB1dGVGb3JTdHViSW5mbyhsb2NrZXIsIGluZm9NYXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJ
bmRleCkpKTsKKyAgICByZXN1bHQgPSBjb21wdXRlRm9yU3R1YkluZm8obG9ja2VyLCBpbmZvTWFw
LmdldChDb2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgpKS5zdHViSW5mbyk7CiAKICAgICBpZiAoIXJl
c3VsdC50YWtlc1Nsb3dQYXRoKCkpIHsKICAgICAgICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlu
a2VkQ29kZUJsb2NrID0gY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5oCShy
ZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFu
Y2VPZlN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRl
ICJDb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAiQ29uY3VycmVudEpTTG9jay5oIgorI2luY2x1ZGUg
IklDU3RhdHVzTWFwLmgiCiAjaW5jbHVkZSAiSW5zdGFuY2VPZlZhcmlhbnQuaCIKIAogbmFtZXNw
YWNlIEpTQyB7CkBAIC0zNSw4ICszNiw2IEBAIGNsYXNzIEFjY2Vzc0Nhc2U7CiBjbGFzcyBDb2Rl
QmxvY2s7CiBjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsKIAotdHlwZWRlZiBIYXNoTWFwPENvZGVP
cmlnaW4sIFN0cnVjdHVyZVN0dWJJbmZvKiwgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFzaD4gU3R1
YkluZm9NYXA7Ci0KIGNsYXNzIEluc3RhbmNlT2ZTdGF0dXMgewogcHVibGljOgogICAgIGVudW0g
U3RhdGUgewpAQCAtNjEsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChzdGF0ZSA9
PSBOb0luZm9ybWF0aW9uIHx8IHN0YXRlID09IFRha2VzU2xvd1BhdGgpOwogICAgIH0KICAgICAK
LSAgICBzdGF0aWMgSW5zdGFuY2VPZlN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIFN0dWJJ
bmZvTWFwJiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CisgICAgc3RhdGljIEluc3RhbmNlT2ZT
dGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCBJQ1N0YXR1c01hcCYsIHVuc2lnbmVkIGJ5dGVj
b2RlSW5kZXgpOwogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIHN0YXRpYyBJbnN0YW5j
ZU9mU3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mbyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBT
dHJ1Y3R1cmVTdHViSW5mbyopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1BvbHlQcm90b0FjY2Vzc0NoYWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmgJKHJldmlzaW9uIDIzMjIyNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFz
cyBKU0NlbGw7CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsKIGNsYXNzIEpTT2JqZWN0OwogY2xhc3Mg
UHJvcGVydHlTbG90OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QdXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2
ICsyOSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29tcGxleEdldFN0
YXR1cy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlckFjY2Vzc0Nhc2UuaCIKKyNpbmNsdWRlICJJ
Q1N0YXR1c1V0aWxzLmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiTG93TGV2
ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKQEAgLTU1LDEyICs1Niw5
IEBAIGJvb2wgUHV0QnlJZFN0YXR1czo6YXBwZW5kVmFyaWFudChjb25zdCAKIH0KIAogI2lmIEVO
QUJMRShERkdfSklUKQotYm9vbCBQdXRCeUlkU3RhdHVzOjpoYXNFeGl0U2l0ZShDb2RlQmxvY2sq
IHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCitFeGl0RmxhZyBQdXRCeUlk
U3RhdHVzOjpoYXNFeGl0U2l0ZShDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5
dGVjb2RlSW5kZXgpCiB7Ci0gICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2Nr
ID0gcHJvZmlsZWRCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKTsKLSAgICBDb25jdXJyZW50SlNM
b2NrZXIgbG9ja2VyKHVubGlua2VkQ29kZUJsb2NrLT5tX2xvY2spOwotICAgIHJldHVybiB1bmxp
bmtlZENvZGVCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUo
Ynl0ZWNvZGVJbmRleCwgQmFkQ2FjaGUpKQotICAgICAgICB8fCB1bmxpbmtlZENvZGVCbG9jay0+
aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwg
QmFkQ29uc3RhbnRDYWNoZSkpOworICAgIHJldHVybiBoYXNCYWRDYWNoZUV4aXRTaXRlKHByb2Zp
bGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpOwogfQogI2VuZGlmCiAKQEAgLTExMCw3ICsxMDgsNyBA
QCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tCiAgICAgICAgIHN0cnVj
dHVyZSwgbmV3U3RydWN0dXJlLCBjb25kaXRpb25TZXQsIG9mZnNldCwgbmV3U3RydWN0dXJlLT5p
bmZlcnJlZFR5cGVEZXNjcmlwdG9yRm9yKHVpZCkpOwogfQogCi1QdXRCeUlkU3RhdHVzIFB1dEJ5
SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBTdHViSW5mb01h
cCYgbWFwLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQor
UHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmls
ZWRCbG9jaywgSUNTdGF0dXNNYXAmIG1hcCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgVW5pcXVl
ZFN0cmluZ0ltcGwqIHVpZCwgRXhpdEZsYWcgZGlkRXhpdCwgQ2FsbExpbmtTdGF0dXM6OkV4aXRT
aXRlRGF0YSBjYWxsRXhpdFNpdGVEYXRhKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2Nr
ZXIocHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKICAgICAKQEAgLTExOCwxMyArMTE2LDEyIEBAIFB1
dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICBVTlVTRURfUEFSQU0o
Ynl0ZWNvZGVJbmRleCk7CiAgICAgVU5VU0VEX1BBUkFNKHVpZCk7CiAjaWYgRU5BQkxFKERGR19K
SVQpCi0gICAgaWYgKGhhc0V4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpKQor
ICAgIGlmIChkaWRFeGl0KQogICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQ
YXRoKTsKICAgICAKLSAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gPSBtYXAuZ2V0KENv
ZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkpOworICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5m
byA9IG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4KSkuc3R1YkluZm87CiAgICAgUHV0
QnlJZFN0YXR1cyByZXN1bHQgPSBjb21wdXRlRm9yU3R1YkluZm8oCi0gICAgICAgIGxvY2tlciwg
cHJvZmlsZWRCbG9jaywgc3R1YkluZm8sIHVpZCwKLSAgICAgICAgQ2FsbExpbmtTdGF0dXM6OmNv
bXB1dGVFeGl0U2l0ZURhdGEocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCkpOworICAgICAg
ICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssIHN0dWJJbmZvLCB1aWQsIGNhbGxFeGl0U2l0ZURhdGEp
OwogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9m
aWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCB1aWQpOwogICAgIApAQCAtMjY0LDM4ICsyNjEsMzQg
QEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yUwogfQogI2VuZGlmCiAK
LVB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIGJhc2Vs
aW5lQmxvY2ssIENvZGVCbG9jayogZGZnQmxvY2ssIFN0dWJJbmZvTWFwJiBiYXNlbGluZU1hcCwg
U3R1YkluZm9NYXAmIGRmZ01hcCwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkKQorUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVC
bG9jayogYmFzZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAmIGJhc2VsaW5lTWFwLCBJQ1N0YXR1c0Nv
bnRleHRTdGFjayYgY29udGV4dFN0YWNrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIFVuaXF1ZWRT
dHJpbmdJbXBsKiB1aWQpCiB7Ci0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAgaWYgKGRmZ0Jsb2Nr
KSB7Ci0gICAgICAgIGlmIChoYXNFeGl0U2l0ZShiYXNlbGluZUJsb2NrLCBjb2RlT3JpZ2luLmJ5
dGVjb2RlSW5kZXgpKQotICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93
UGF0aCk7Ci0gICAgICAgIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgZXhpdFNpdGVEYXRh
OwotICAgICAgICB7Ci0gICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGJhc2Vs
aW5lQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICBleGl0U2l0ZURhdGEgPSBDYWxsTGlua1N0
YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YSgKLSAgICAgICAgICAgICAgICBiYXNlbGluZUJsb2Nr
LCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpOwotICAgICAgICB9Ci0gICAgICAgICAgICAKLSAg
ICAgICAgUHV0QnlJZFN0YXR1cyByZXN1bHQ7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIENvbmN1
cnJlbnRKU0xvY2tlciBsb2NrZXIoZGZnQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICByZXN1
bHQgPSBjb21wdXRlRm9yU3R1YkluZm8oCi0gICAgICAgICAgICAgICAgbG9ja2VyLCBkZmdCbG9j
aywgZGZnTWFwLmdldChjb2RlT3JpZ2luKSwgdWlkLCBleGl0U2l0ZURhdGEpOworICAgIENhbGxM
aW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgY2FsbEV4aXRTaXRlRGF0YSA9CisgICAgICAgIENhbGxM
aW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKGJhc2VsaW5lQmxvY2ssIGNvZGVPcmlnaW4u
Ynl0ZWNvZGVJbmRleCk7CisgICAgRXhpdEZsYWcgZGlkRXhpdCA9IGhhc0V4aXRTaXRlKGJhc2Vs
aW5lQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7CisgICAgCisgICAgZm9yIChJQ1N0
YXR1c0NvbnRleHQqIGNvbnRleHQgOiBjb250ZXh0U3RhY2spIHsKKyAgICAgICAgSUNTdGF0dXMg
c3RhdHVzID0gY29udGV4dC0+Z2V0KGNvZGVPcmlnaW4pOworICAgICAgICAKKyAgICAgICAgYXV0
byB3aXRoRXhpdHMgPSBbJl0gKGNvbnN0IFB1dEJ5SWRTdGF0dXMmIHJlc3VsdCkgLT4gUHV0QnlJ
ZFN0YXR1cyB7CisgICAgICAgICAgICBpZiAoZGlkRXhpdC5pc1NldChjb2RlT3JpZ2luLmV4aXRp
bmdJbmxpbmVLaW5kKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQuc2xvd1ZlcnNp
b24oKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH07CisgICAgICAgIAor
ICAgICAgICBpZiAoc3RhdHVzLnN0dWJJbmZvKSB7CisgICAgICAgICAgICBDb25jdXJyZW50SlNM
b2NrZXIgbG9ja2VyKGNvbnRleHQtPm9wdGltaXplZENvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAg
ICAgICAgIFB1dEJ5SWRTdGF0dXMgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvKAorICAgICAg
ICAgICAgICAgIGxvY2tlciwgY29udGV4dC0+b3B0aW1pemVkQ29kZUJsb2NrLCBzdGF0dXMuc3R1
YkluZm8sIHVpZCwgY2FsbEV4aXRTaXRlRGF0YSk7CisgICAgICAgICAgICBpZiAocmVzdWx0Lmlz
U2V0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhFeGl0cyhyZXN1bHQpOwogICAgICAg
ICB9CiAgICAgICAgIAotICAgICAgICAvLyBXZSB1c2UgVGFrZXNTbG93UGF0aCBpbiBzb21lIGNh
c2VzIHdoZXJlIHRoZSBzdHViIHdhcyB1bnNldC4gVGhhdCdzIHdlaXJkIGFuZAotICAgICAgICAv
LyBpdCB3b3VsZCBiZSBiZXR0ZXIgbm90IHRvIGRvIHRoYXQuIEJ1dCBpdCBtZWFucyB0aGF0IHdl
IGhhdmUgdG8gZGVmZW5kCi0gICAgICAgIC8vIG91cnNlbHZlcyBoZXJlLgotICAgICAgICBpZiAo
cmVzdWx0LmlzU2ltcGxlKCkpCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICBp
ZiAoc3RhdHVzLnB1dFN0YXR1cykKKyAgICAgICAgICAgIHJldHVybiB3aXRoRXhpdHMoKnN0YXR1
cy5wdXRTdGF0dXMpOwogICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGRmZ0Jsb2NrKTsK
LSAgICBVTlVTRURfUEFSQU0oZGZnTWFwKTsKLSNlbmRpZgogCi0gICAgcmV0dXJuIGNvbXB1dGVG
b3IoYmFzZWxpbmVCbG9jaywgYmFzZWxpbmVNYXAsIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwg
dWlkKTsKKyAgICByZXR1cm4gY29tcHV0ZUZvcihiYXNlbGluZUJsb2NrLCBiYXNlbGluZU1hcCwg
Y29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCB1aWQsIGRpZEV4aXQsIGNhbGxFeGl0U2l0ZURhdGEp
OwogfQogCiBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RydWN0dXJlU2V0JiBzZXQsIFVuaXF1ZWRTdHJp
bmdJbXBsKiB1aWQsIGJvb2wgaXNEaXJlY3QpCkBAIC0zOTgsNiArMzkxLDM1IEBAIGJvb2wgUHV0
QnlJZFN0YXR1czo6bWFrZXNDYWxscygpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitQ
dXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OnNsb3dWZXJzaW9uKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gUHV0QnlJZFN0YXR1cyhtYWtlc0NhbGxzKCkgPyBNYWtlc0NhbGxzIDogVGFrZXNTbG93
UGF0aCk7Cit9CisKK3ZvaWQgUHV0QnlJZFN0YXR1czo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCit7CisgICAgZm9yIChQdXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IG1fdmFyaWFu
dHMpCisgICAgICAgIHZhcmlhbnQubWFya0lmQ2hlYXAodmlzaXRvcik7Cit9CisKK2Jvb2wgUHV0
QnlJZFN0YXR1czo6ZmluYWxpemUoKQoreworICAgIGZvciAoUHV0QnlJZFZhcmlhbnQmIHZhcmlh
bnQgOiBtX3ZhcmlhbnRzKSB7CisgICAgICAgIGlmICghdmFyaWFudC5maW5hbGl6ZSgpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9p
ZCBQdXRCeUlkU3RhdHVzOjpmaWx0ZXIoY29uc3QgU3RydWN0dXJlU2V0JiBzZXQpCit7CisgICAg
aWYgKG1fc3RhdGUgIT0gU2ltcGxlKQorICAgICAgICByZXR1cm47CisgICAgZmlsdGVySUNTdGF0
dXNWYXJpYW50cyhtX3ZhcmlhbnRzLCBzZXQpOworICAgIGlmIChtX3ZhcmlhbnRzLmlzRW1wdHko
KSkKKyAgICAgICAgbV9zdGF0ZSA9IE5vSW5mb3JtYXRpb247Cit9CisKIHZvaWQgUHV0QnlJZFN0
YXR1czo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIHN3aXRjaCAobV9zdGF0
ZSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0
YXR1cy5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHV0QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCisjaW5jbHVkZSAiRXhpdEZs
YWcuaCIKKyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgogI2luY2x1ZGUgIlB1dEJ5SWRWYXJpYW50
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNjksMTAgKzcxLDEwIEBAIHB1YmxpYzoKICAgICAg
ICAgbV92YXJpYW50cy5hcHBlbmQodmFyaWFudCk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBQ
dXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgU3R1YkluZm9NYXAmLCB1bnNpZ25l
ZCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKKyAgICBzdGF0aWMgUHV0
QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIElDU3RhdHVzTWFwJiwgdW5zaWduZWQg
Ynl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgRXhpdEZsYWcsIENhbGxMaW5r
U3RhdHVzOjpFeGl0U2l0ZURhdGEpOwogICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVG
b3IoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJ1Y3R1cmVTZXQmLCBVbmlxdWVkU3RyaW5nSW1w
bCogdWlkLCBib29sIGlzRGlyZWN0KTsKICAgICAKLSAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBj
b21wdXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgQ29kZUJsb2NrKiBkZmdCbG9jaywg
U3R1YkluZm9NYXAmIGJhc2VsaW5lTWFwLCBTdHViSW5mb01hcCYgZGZnTWFwLCBDb2RlT3JpZ2lu
LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKKyAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21w
dXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAmIGJhc2VsaW5lTWFw
LCBJQ1N0YXR1c0NvbnRleHRTdGFjayYgY29udGV4dFN0YWNrLCBDb2RlT3JpZ2luLCBVbmlxdWVk
U3RyaW5nSW1wbCogdWlkKTsKIAogI2lmIEVOQUJMRShKSVQpCiAgICAgc3RhdGljIFB1dEJ5SWRT
dGF0dXMgY29tcHV0ZUZvclN0dWJJbmZvKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVC
bG9jayogYmFzZWxpbmVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qLCBDb2RlT3JpZ2luLCBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkKTsKQEAgLTg1LDE3ICs4NywyMiBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc1NpbXBsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gU2ltcGxlOyB9CiAgICAgYm9v
bCB0YWtlc1Nsb3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBUYWtlc1Nsb3dQYXRo
IHx8IG1fc3RhdGUgPT0gTWFrZXNDYWxsczsgfQogICAgIGJvb2wgbWFrZXNDYWxscygpIGNvbnN0
OworICAgIFB1dEJ5SWRTdGF0dXMgc2xvd1ZlcnNpb24oKSBjb25zdDsKICAgICAKICAgICBzaXpl
X3QgbnVtVmFyaWFudHMoKSBjb25zdCB7IHJldHVybiBtX3ZhcmlhbnRzLnNpemUoKTsgfQogICAg
IGNvbnN0IFZlY3RvcjxQdXRCeUlkVmFyaWFudCwgMT4mIHZhcmlhbnRzKCkgY29uc3QgeyByZXR1
cm4gbV92YXJpYW50czsgfQogICAgIGNvbnN0IFB1dEJ5SWRWYXJpYW50JiBhdChzaXplX3QgaW5k
ZXgpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFudHNbaW5kZXhdOyB9CiAgICAgY29uc3QgUHV0QnlJ
ZFZhcmlhbnQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBhdChpbmRl
eCk7IH0KICAgICAKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7CisgICAgYm9v
bCBmaW5hbGl6ZSgpOworICAgIHZvaWQgZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYpOworICAg
IAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIAogcHJpdmF0ZToKICNp
ZiBFTkFCTEUoREZHX0pJVCkKLSAgICBzdGF0aWMgYm9vbCBoYXNFeGl0U2l0ZShDb2RlQmxvY2sq
LCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKyAgICBzdGF0aWMgRXhpdEZsYWcgaGFzRXhpdFNp
dGUoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CiAjZW5kaWYKICNpZiBFTkFC
TEUoSklUKQogICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mbygKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50
LmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1B1dEJ5SWRWYXJpYW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMDYsNiArMjA2LDI2IEBA
IGJvb2wgUHV0QnlJZFZhcmlhbnQ6OmF0dGVtcHRUb01lcmdlVHJhbnMKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAordm9pZCBQdXRCeUlkVmFyaWFudDo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCit7CisgICAgbV9vbGRTdHJ1Y3R1cmUubWFya0lmQ2hlYXAodmlzaXRvcik7CisgICAg
aWYgKG1fbmV3U3RydWN0dXJlKQorICAgICAgICBtX25ld1N0cnVjdHVyZS0+bWFya0lmQ2hlYXAo
dmlzaXRvcik7Cit9CisKK2Jvb2wgUHV0QnlJZFZhcmlhbnQ6OmZpbmFsaXplKCkKK3sKKyAgICBp
ZiAoIW1fb2xkU3RydWN0dXJlLmlzU3RpbGxBbGl2ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKG1fbmV3U3RydWN0dXJlICYmICFIZWFwOjppc01hcmtlZChtX25ld1N0cnVjdHVy
ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fY29uZGl0aW9uU2V0LmFyZVN0
aWxsTGl2ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fY2FsbExpbmtTdGF0
dXMgJiYgIW1fY2FsbExpbmtTdGF0dXMtPmZpbmFsaXplKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBQdXRCeUlkVmFyaWFudDo6ZHVtcChQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIGR1bXBJbkNvbnRleHQob3V0LCAwKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5oCShy
ZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJ
ZFZhcmlhbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03MywxNyArNzMsMTcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gbV9vbGRTdHJ1Y3R1cmU7CiAgICAgfQogICAgIAotICAgIGNvbnN0IFN0
cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBz
dHJ1Y3R1cmUoKTsKLSAgICB9Ci0gICAgCiAgICAgY29uc3QgU3RydWN0dXJlU2V0JiBvbGRTdHJ1
Y3R1cmUoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKGtpbmQoKSA9PSBUcmFuc2l0aW9u
IHx8IGtpbmQoKSA9PSBSZXBsYWNlIHx8IGtpbmQoKSA9PSBTZXR0ZXIpOwogICAgICAgICByZXR1
cm4gbV9vbGRTdHJ1Y3R1cmU7CiAgICAgfQogICAgIAorICAgIGNvbnN0IFN0cnVjdHVyZVNldCYg
c3RydWN0dXJlU2V0KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBvbGRTdHJ1Y3R1cmUo
KTsKKyAgICB9CisgICAgCiAgICAgU3RydWN0dXJlU2V0JiBvbGRTdHJ1Y3R1cmUoKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGtpbmQoKSA9PSBUcmFuc2l0aW9uIHx8IGtpbmQoKSA9PSBSZXBsYWNl
IHx8IGtpbmQoKSA9PSBTZXR0ZXIpOwpAQCAtMTI5LDYgKzEyOSw5IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgYXR0ZW1wdFRvTWVyZ2UoY29uc3QgUHV0QnlJZFZhcmlhbnQmIG90aGVyKTsKICAgICAK
KyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7CisgICAgYm9vbCBmaW5hbGl6ZSgp
OworICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIHZvaWQgZHVt
cEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0KikgY29uc3Q7CiAKQEAgLTEzNyw3
ICsxNDAsNyBAQCBwcml2YXRlOgogICAgIAogICAgIEtpbmQgbV9raW5kOwogICAgIFN0cnVjdHVy
ZVNldCBtX29sZFN0cnVjdHVyZTsKLSAgICBTdHJ1Y3R1cmUqIG1fbmV3U3RydWN0dXJlOworICAg
IFN0cnVjdHVyZSogbV9uZXdTdHJ1Y3R1cmUgeyBudWxscHRyIH07CiAgICAgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb25TZXQgbV9jb25kaXRpb25TZXQ7CiAgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZz
ZXQ7CiAgICAgSW5mZXJyZWRUeXBlOjpEZXNjcmlwdG9yIG1fcmVxdWlyZWRUeXBlOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2Vz
LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVj
b3JkZWRTdGF0dXNlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlJlY29yZGVkU3RhdHVzZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K1JlY29yZGVkU3RhdHVzZXMmIFJlY29yZGVkU3RhdHVzZXM6Om9wZXJhdG9yPShSZWNvcmRlZFN0
YXR1c2VzJiYgb3RoZXIpCit7CisgICAgY2FsbHMgPSBXVEZNb3ZlKG90aGVyLmNhbGxzKTsKKyAg
ICBnZXRzID0gV1RGTW92ZShvdGhlci5nZXRzKTsKKyAgICBwdXRzID0gV1RGTW92ZShvdGhlci5w
dXRzKTsKKyAgICBzaHJpbmtUb0ZpdCgpOworICAgIHJldHVybiAqdGhpczsKK30KKworUmVjb3Jk
ZWRTdGF0dXNlczo6UmVjb3JkZWRTdGF0dXNlcyhSZWNvcmRlZFN0YXR1c2VzJiYgb3RoZXIpCit7
CisgICAgKnRoaXMgPSBXVEZNb3ZlKG90aGVyKTsKK30KKworQ2FsbExpbmtTdGF0dXMqIFJlY29y
ZGVkU3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmln
aW4sIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBzdGF0dXMpCit7CisgICAgYXV0byBzdGF0dXNQdHIg
PSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxMaW5rU3RhdHVzPihzdGF0dXMpOworICAgIENhbGxMaW5r
U3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7CisgICAgY2FsbHMuYXBwZW5kKHN0ZDo6
bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3RhdHVzUHRyKSkpOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK0dldEJ5SWRTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZEdldEJ5SWRT
dGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgY29uc3QgR2V0QnlJZFN0YXR1cyYg
c3RhdHVzKQoreworICAgIGF1dG8gc3RhdHVzUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxHZXRCeUlk
U3RhdHVzPihzdGF0dXMpOworICAgIEdldEJ5SWRTdGF0dXMqIHJlc3VsdCA9IHN0YXR1c1B0ci5n
ZXQoKTsKKyAgICBnZXRzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihjb2RlT3JpZ2luLCBXVEZNb3Zl
KHN0YXR1c1B0cikpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorICAgIAorUHV0QnlJZFN0YXR1
cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkUHV0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBj
b2RlT3JpZ2luLCBjb25zdCBQdXRCeUlkU3RhdHVzJiBzdGF0dXMpCit7CisgICAgYXV0byBzdGF0
dXNQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPFB1dEJ5SWRTdGF0dXM+KHN0YXR1cyk7CisgICAgUHV0
QnlJZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOworICAgIHB1dHMuYXBwZW5kKHN0
ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3RhdHVzUHRyKSkpOworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK3ZvaWQgUmVjb3JkZWRTdGF0dXNlczo6bWFya0lmQ2hlYXAoU2xvdFZp
c2l0b3ImIHNsb3RWaXNpdG9yKQoreworICAgIGZvciAoYXV0byYgcGFpciA6IGdldHMpCisgICAg
ICAgIHBhaXIuc2Vjb25kLT5tYXJrSWZDaGVhcChzbG90VmlzaXRvcik7CisgICAgZm9yIChhdXRv
JiBwYWlyIDogcHV0cykKKyAgICAgICAgcGFpci5zZWNvbmQtPm1hcmtJZkNoZWFwKHNsb3RWaXNp
dG9yKTsKK30KKwordm9pZCBSZWNvcmRlZFN0YXR1c2VzOjpmaW5hbGl6ZVdpdGhvdXREZWxldGlu
ZygpCit7CisgICAgYXV0byBmaW5hbGl6ZSA9IFtdIChhdXRvJiB2ZWN0b3IpIHsKKyAgICAgICAg
Zm9yIChhdXRvJiBwYWlyIDogdmVjdG9yKSB7CisgICAgICAgICAgICBpZiAoIXBhaXIuc2Vjb25k
LT5maW5hbGl6ZSgpKQorICAgICAgICAgICAgICAgICpwYWlyLnNlY29uZCA9IHsgfTsKKyAgICAg
ICAgfQorICAgIH07CisgICAgZm9yRWFjaFZlY3RvcihmaW5hbGl6ZSk7Cit9CisKK3ZvaWQgUmVj
b3JkZWRTdGF0dXNlczo6ZmluYWxpemUoKQoreworICAgIGF1dG8gZmluYWxpemUgPSBbXSAoYXV0
byYgdmVjdG9yKSB7CisgICAgICAgIHZlY3Rvci5yZW1vdmVBbGxNYXRjaGluZygKKyAgICAgICAg
ICAgIFsmXSAoYXV0byYgcGFpcikgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgcmV0dXJuICEq
cGFpci5zZWNvbmQgfHwgIXBhaXIuc2Vjb25kLT5maW5hbGl6ZSgpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIHZlY3Rvci5zaHJpbmtUb0ZpdCgpOworICAgIH07CisgICAgZm9yRWFjaFZlY3Rv
cihmaW5hbGl6ZSk7Cit9CisKK3ZvaWQgUmVjb3JkZWRTdGF0dXNlczo6c2hyaW5rVG9GaXQoKQor
eworICAgIGZvckVhY2hWZWN0b3IoW10gKGF1dG8mIHZlY3RvcikgeyB2ZWN0b3Iuc2hyaW5rVG9G
aXQoKTsgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmgJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ2FsbExpbmtT
dGF0dXMuaCIKKyNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgiCisjaW5jbHVkZSAiUHV0QnlJZFN0
YXR1cy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IFJlY29yZGVkU3RhdHVzZXMgewor
ICAgIFJlY29yZGVkU3RhdHVzZXMoKSB7IH0KKyAgICAKKyAgICBSZWNvcmRlZFN0YXR1c2VzJiBv
cGVyYXRvcj0oY29uc3QgUmVjb3JkZWRTdGF0dXNlcyYgb3RoZXIpID0gZGVsZXRlOworICAgIAor
ICAgIFJlY29yZGVkU3RhdHVzZXMmIG9wZXJhdG9yPShSZWNvcmRlZFN0YXR1c2VzJiYgb3RoZXIp
OworICAgIAorICAgIFJlY29yZGVkU3RhdHVzZXMoY29uc3QgUmVjb3JkZWRTdGF0dXNlcyYgb3Ro
ZXIpID0gZGVsZXRlOworICAgIAorICAgIFJlY29yZGVkU3RhdHVzZXMoUmVjb3JkZWRTdGF0dXNl
cyYmIG90aGVyKTsKKyAgICAKKyAgICBDYWxsTGlua1N0YXR1cyogYWRkQ2FsbExpbmtTdGF0dXMo
Y29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0IENhbGxMaW5rU3RhdHVzJik7CisgICAgR2V0QnlJZFN0
YXR1cyogYWRkR2V0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29uc3QgR2V0QnlJZFN0
YXR1cyYpOworICAgIFB1dEJ5SWRTdGF0dXMqIGFkZFB1dEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9y
aWdpbiYsIGNvbnN0IFB1dEJ5SWRTdGF0dXMmKTsKKyAgICAKKyAgICB2b2lkIG1hcmtJZkNoZWFw
KFNsb3RWaXNpdG9yJiBzbG90VmlzaXRvcik7CisgICAgCisgICAgdm9pZCBmaW5hbGl6ZVdpdGhv
dXREZWxldGluZygpOworICAgIHZvaWQgZmluYWxpemUoKTsKKyAgICAKKyAgICB2b2lkIHNocmlu
a1RvRml0KCk7CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZv
ckVhY2hWZWN0b3IoY29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIGZ1bmMoY2FsbHMp
OworICAgICAgICBmdW5jKGdldHMpOworICAgICAgICBmdW5jKHB1dHMpOworICAgIH0KKyAgICAK
KyAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxDYWxsTGlu
a1N0YXR1cz4+PiBjYWxsczsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6
dW5pcXVlX3B0cjxHZXRCeUlkU3RhdHVzPj4+IGdldHM7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxD
b2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8UHV0QnlJZFN0YXR1cz4+PiBwdXRzOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTZXQuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zMSw2ICszMSwyMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAordm9pZCBTdHJ1Y3R1cmVTZXQ6
Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9yKSBjb25zdAoreworICAgIGZvciAoU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgOiAqdGhpcykKKyAgICAgICAgc3RydWN0dXJlLT5tYXJrSWZDaGVh
cCh2aXNpdG9yKTsKK30KKworYm9vbCBTdHJ1Y3R1cmVTZXQ6OmlzU3RpbGxBbGl2ZSgpIGNvbnN0
Cit7CisgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6ICp0aGlzKSB7CisgICAgICAgIGlm
ICghSGVhcDo6aXNNYXJrZWQoc3RydWN0dXJlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgU3RydWN0dXJlU2V0OjpkdW1wSW5D
b250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAogewog
ICAgIENvbW1hUHJpbnRlciBjb21tYTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU2V0LmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMtMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTU4LDYgKzU4LDkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG9ubHlFbnRy
eSgpOwogICAgIH0KKworICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKSBjb25zdDsK
KyAgICBib29sIGlzU3RpbGxBbGl2ZSgpIGNvbnN0OwogICAgIAogICAgIHZvaWQgZHVtcEluQ29u
dGV4dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0KikgY29uc3Q7CiAgICAgdm9pZCBkdW1wKFBy
aW50U3RyZWFtJikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VGVybWluYXRlZENvZGVPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVGVybWluYXRlZENvZGVPcmlnaW4uaAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVGVybWluYXRlZENvZGVPcmlnaW4uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IElubGluZUNhbGxGcmFtZTsKKworc3RydWN0IFRl
cm1pbmF0ZWRDb2RlT3JpZ2luIHsKKyAgICBUZXJtaW5hdGVkQ29kZU9yaWdpbigpIHsgfQorICAg
IAorICAgIFRlcm1pbmF0ZWRDb2RlT3JpZ2luKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4s
IElubGluZUNhbGxGcmFtZSogdGVybWluYWwpCisgICAgICAgIDogY29kZU9yaWdpbihjb2RlT3Jp
Z2luKQorICAgICAgICAsIHRlcm1pbmFsKHRlcm1pbmFsKQorICAgIHsKKyAgICB9CisgICAgCisg
ICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luOworICAgIElubGluZUNhbGxGcmFtZSogdGVybWluYWwg
eyBudWxscHRyIH07Cit9OworCitzdHJ1Y3QgVGVybWluYXRlZENvZGVPcmlnaW5IYXNoVHJhbnNs
YXRvciB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVGVybWluYXRlZENvZGVPcmln
aW4mIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlLmNvZGVPcmlnaW4uYXBwcm94
aW1hdGVIYXNoKHZhbHVlLnRlcm1pbmFsKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIGJvb2wg
ZXF1YWwoY29uc3QgQ29kZU9yaWdpbiYgYSwgY29uc3QgVGVybWluYXRlZENvZGVPcmlnaW4mIGIp
CisgICAgeworICAgICAgICByZXR1cm4gYi5jb2RlT3JpZ2luLmlzQXBwcm94aW1hdGVseUVxdWFs
VG8oYSwgYi50ZXJtaW5hbCk7CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMzQ5OSw2ICszNDk5LDI1IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHkKICAgICBjYXNlIFpvbWJpZUhpbnQ6CiAgICAgY2FzZSBFeGl0T0s6CiAgICAgICAg
IGJyZWFrOworICAgICAgICAKKyAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAgICAg
ICBpZiAoSlNWYWx1ZSB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdmFsdWUpCisg
ICAgICAgICAgICBub2RlLT5jYWxsTGlua1N0YXR1cygpLT5maWx0ZXIobV92bSwgdmFsdWUpOwor
ICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgY2FzZSBGaWx0ZXJHZXRCeUlkU3RhdHVzOiB7
CisgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKQorICAgICAgICAgICAg
bm9kZS0+Z2V0QnlJZFN0YXR1cygpLT5maWx0ZXIodmFsdWUubV9zdHJ1Y3R1cmUudG9TdHJ1Y3R1
cmVTZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBGaWx0
ZXJQdXRCeUlkU3RhdHVzOiB7CisgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc0Zpbml0
ZSgpKQorICAgICAgICAgICAgbm9kZS0+cHV0QnlJZFN0YXR1cygpLT5maWx0ZXIodmFsdWUubV9z
dHJ1Y3R1cmUudG9TdHJ1Y3R1cmVTZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAg
IGNhc2UgQ2hlY2tUeXBlSW5mb0ZsYWdzOiB7CiAgICAgICAgIGNvbnN0IEFic3RyYWN0VmFsdWUm
IGFic3RyYWN0VmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAy
MzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTA4Miw5ICsxMDgyLDggQEAgcHJpdmF0ZToKICAgICAgICAg
Ly8gY29kZSBibG9jayBoYWQgZ2F0aGVyZWQuCiAgICAgICAgIExhenlPcGVyYW5kVmFsdWVQcm9m
aWxlUGFyc2VyIG1fbGF6eU9wZXJhbmRzOwogICAgICAgICAKLSAgICAgICAgQ2FsbExpbmtJbmZv
TWFwIG1fY2FsbExpbmtJbmZvczsKLSAgICAgICAgU3R1YkluZm9NYXAgbV9zdHViSW5mb3M7Ci0g
ICAgICAgIEJ5VmFsSW5mb01hcCBtX2J5VmFsSW5mb3M7CisgICAgICAgIElDU3RhdHVzTWFwIG1f
YmFzZWxpbmVNYXA7CisgICAgICAgIElDU3RhdHVzQ29udGV4dCBtX29wdGltaXplZENvbnRleHQ7
CiAgICAgICAgIAogICAgICAgICAvLyBQb2ludGVycyB0byB0aGUgYXJndW1lbnQgcG9zaXRpb24g
dHJhY2tlcnMgZm9yIHRoaXMgc2xpY2Ugb2YgY29kZS4KICAgICAgICAgVmVjdG9yPEFyZ3VtZW50
UG9zaXRpb24qPiBtX2FyZ3VtZW50UG9zaXRpb25zOwpAQCAtMTEwMiwxMCArMTEwMSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWU6OktpbmQsCiAgICAgICAgICAgICBC
YXNpY0Jsb2NrKiBjb250aW51YXRpb25CbG9jayk7CiAgICAgICAgIAotICAgICAgICB+SW5saW5l
U3RhY2tFbnRyeSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1fYnl0ZUNvZGVQYXJzZXItPm1f
aW5saW5lU3RhY2tUb3AgPSBtX2NhbGxlcjsKLSAgICAgICAgfQorICAgICAgICB+SW5saW5lU3Rh
Y2tFbnRyeSgpOwogICAgICAgICAKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlbWFwT3BlcmFu
ZChWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkgY29uc3QKICAgICAgICAgewpAQCAtMTEyMCw2ICsx
MTE2LDggQEAgcHJpdmF0ZToKICAgICAKICAgICBJbmxpbmVTdGFja0VudHJ5KiBtX2lubGluZVN0
YWNrVG9wOwogICAgIAorICAgIElDU3RhdHVzQ29udGV4dFN0YWNrIG1faWNDb250ZXh0U3RhY2s7
CisgICAgCiAgICAgc3RydWN0IERlbGF5ZWRTZXRMb2NhbCB7CiAgICAgICAgIENvZGVPcmlnaW4g
bV9vcmlnaW47CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBtX29wZXJhbmQ7CkBAIC0xMTQ2LDEw
ICsxMTQ0LDYgQEAgcHJpdmF0ZToKICAgICAKICAgICBWZWN0b3I8RGVsYXllZFNldExvY2FsLCAy
PiBtX3NldExvY2FsUXVldWU7CiAKLSAgICBDb2RlQmxvY2sqIG1fZGZnQ29kZUJsb2NrOwotICAg
IENhbGxMaW5rU3RhdHVzOjpDb250ZXh0TWFwIG1fY2FsbENvbnRleHRNYXA7Ci0gICAgU3R1Yklu
Zm9NYXAgbV9kZmdTdHViSW5mb3M7Ci0gICAgCiAgICAgSW5zdHJ1Y3Rpb24qIG1fY3VycmVudElu
c3RydWN0aW9uOwogICAgIGJvb2wgbV9oYXNEZWJ1Z2dlckVuYWJsZWQ7CiB9OwpAQCAtMTIxNCw3
ICsxMjA4LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFycwogCiAg
ICAgQ2FsbExpbmtTdGF0dXMgY2FsbExpbmtTdGF0dXMgPSBDYWxsTGlua1N0YXR1czo6Y29tcHV0
ZUZvcigKICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBjdXJyZW50
Q29kZU9yaWdpbigpLAotICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxMaW5rSW5mb3Ms
IG1fY2FsbENvbnRleHRNYXApOworICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5l
TWFwLCBtX2ljQ29udGV4dFN0YWNrKTsKIAogICAgIElubGluZUNhbGxGcmFtZTo6S2luZCBraW5k
ID0gSW5saW5lQ2FsbEZyYW1lOjpraW5kRm9yKGNhbGxNb2RlKTsKIApAQCAtMTI0Miw2ICsxMjM2
LDggQEAgQnl0ZUNvZGVQYXJzZXI6OlRlcm1pbmFsaXR5IEJ5dGVDb2RlUGFycwogICAgIC8vIElm
IHdlIGhhdmUgcHJvZmlsaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgY2FsbCwgYW5kIGl0IGRp
ZCBub3QgYmVoYXZlIHRvbyBwb2x5bW9ycGhpY2FsbHksCiAgICAgLy8gd2UgbWF5IGJlIGFibGUg
dG8gaW5saW5lIGl0LCBvciBpbiB0aGUgY2FzZSBvZiByZWN1cnNpdmUgdGFpbCBjYWxscyB0dXJu
IGl0IGludG8gYSBqdW1wLgogICAgIGlmIChjYWxsTGlua1N0YXR1cy5jYW5PcHRpbWl6ZSgpKSB7
CisgICAgICAgIGFkZFRvR3JhcGgoRmlsdGVyQ2FsbExpbmtTdGF0dXMsIE9wSW5mbyhtX2dyYXBo
Lm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFkZENhbGxMaW5rU3RhdHVzKGN1cnJlbnRDb2RlT3Jp
Z2luKCksIGNhbGxMaW5rU3RhdHVzKSksIGNhbGxUYXJnZXQpOworICAgICAgICAKICAgICAgICAg
VmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50
KDAsIHJlZ2lzdGVyT2Zmc2V0KTsKICAgICAgICAgYXV0byBvcHRpbWl6YXRpb25SZXN1bHQgPSBo
YW5kbGVJbmxpbmluZyhjYWxsVGFyZ2V0LCByZXN1bHQsIGNhbGxMaW5rU3RhdHVzLCByZWdpc3Rl
ck9mZnNldCwgdGhpc0FyZ3VtZW50LAogICAgICAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIG1fY3VycmVudEluZGV4ICsgaW5zdHJ1Y3Rpb25TaXplLCBvcCwga2luZCwgcHJlZGlj
dGlvbik7CkBAIC0xMjc5LDEyICsxMjc1LDE0IEBAIEJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0
eSBCeXRlQ29kZVBhcnMKICAgICAKICAgICBDYWxsTGlua1N0YXR1cyBjYWxsTGlua1N0YXR1cyA9
IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5t
X3Byb2ZpbGVkQmxvY2ssIGN1cnJlbnRDb2RlT3JpZ2luKCksCi0gICAgICAgIG1faW5saW5lU3Rh
Y2tUb3AtPm1fY2FsbExpbmtJbmZvcywgbV9jYWxsQ29udGV4dE1hcCk7CisgICAgICAgIG1faW5s
aW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2spOwogICAgIHJlZmlu
ZVN0YXRpY2FsbHkoY2FsbExpbmtTdGF0dXMsIGNhbGxUYXJnZXQpOwogICAgIAogICAgIFZFUkJP
U0VfTE9HKCIgICAgVmFyYXJncyBjYWxsIGxpbmsgc3RhdHVzIGF0ICIsIGN1cnJlbnRDb2RlT3Jp
Z2luKCksICI6ICIsIGNhbGxMaW5rU3RhdHVzLCAiXG4iKTsKICAgICAKICAgICBpZiAoY2FsbExp
bmtTdGF0dXMuY2FuT3B0aW1pemUoKSkgeworICAgICAgICBhZGRUb0dyYXBoKEZpbHRlckNhbGxM
aW5rU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcy5hZGRDYWxs
TGlua1N0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBjYWxsTGlua1N0YXR1cykpLCBjYWxsVGFy
Z2V0KTsKKyAgICAgICAgCiAgICAgICAgIGlmIChoYW5kbGVWYXJhcmdzSW5saW5pbmcoY2FsbFRh
cmdldCwgcmVzdWx0LAogICAgICAgICAgICAgY2FsbExpbmtTdGF0dXMsIGZpcnN0RnJlZVJlZywg
VmlydHVhbFJlZ2lzdGVyKHRoaXNSZWcpLCBWaXJ0dWFsUmVnaXN0ZXIoYXJndW1lbnRzKSwKICAg
ICAgICAgICAgIGZpcnN0VmFyQXJnT2Zmc2V0LCBvcCwKQEAgLTMzMTgsOSArMzMxNiwxMiBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVET01KSVRHZXR0ZXIoCiAgICAgaWYgKCFjaGVjayh2
YXJpYW50LmNvbmRpdGlvblNldCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGFkZFRv
R3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJp
YW50LnN0cnVjdHVyZVNldCgpKSksIHRoaXNOb2RlKTsKLQorICAgIAogICAgIC8vIFdlIGRvIG5v
dCBuZWVkIHRvIGVtaXQgQ2hlY2tDZWxsIHRoaW5neSBoZXJlLiBXaGVuIHRoZSBjdXN0b20gYWNj
ZXNzb3IgaXMgcmVwbGFjZWQgdG8gZGlmZmVyZW50IG9uZSwgU3RydWN0dXJlIHRyYW5zaXRpb24g
b2NjdXJzLgogICAgIGFkZFRvR3JhcGgoQ2hlY2tTdWJDbGFzcywgT3BJbmZvKGRvbUF0dHJpYnV0
ZS5jbGFzc0luZm8pLCB0aGlzTm9kZSk7CisgICAgCisgICAgYm9vbCB3YXNTZWVuSW5KSVQgPSB0
cnVlOworICAgIGFkZFRvR3JhcGgoRmlsdGVyR2V0QnlJZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgu
bV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkR2V0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdp
bigpLCBHZXRCeUlkU3RhdHVzKEdldEJ5SWRTdGF0dXM6OkN1c3RvbSwgd2FzU2VlbkluSklULCB2
YXJpYW50KSkpLCB0aGlzTm9kZSk7CiAKICAgICBDYWxsRE9NR2V0dGVyRGF0YSogY2FsbERPTUdl
dHRlckRhdGEgPSBtX2dyYXBoLm1fY2FsbERPTUdldHRlckRhdGEuYWRkKCk7CiAgICAgY2FsbERP
TUdldHRlckRhdGEtPmN1c3RvbUFjY2Vzc29yR2V0dGVyID0gdmFyaWFudC5jdXN0b21BY2Nlc3Nv
ckdldHRlcigpOwpAQCAtMzM1Miw2ICszMzUzLDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlTW9kdWxlTmFtZXNwYQogICAgIGlmIChtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxl
Lmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDZWxsKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGFkZFRvR3JhcGgoQ2hlY2tDZWxsLCBPcEluZm8obV9ncmFwaC5mcmVlemUoZ2V0
QnlJZC5tb2R1bGVOYW1lc3BhY2VPYmplY3QoKSkpLCBFZGdlKGJhc2UsIENlbGxVc2UpKTsKKyAg
ICAKKyAgICBhZGRUb0dyYXBoKEZpbHRlckdldEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1f
cGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFkZEdldEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4o
KSwgZ2V0QnlJZCkpLCBiYXNlKTsKIAogICAgIC8vIElkZWFsbHkgd2Ugd291bGRuJ3QgaGF2ZSB0
byBkbyB0aGlzIFBoYW50b20uIEJ1dDoKICAgICAvLwpAQCAtNDAwNywxNCArNDAxMCwyNSBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIAorICAgIC8vIEZJWE1FOiBJZiB3ZSB1c2UgdGhlIEdldEJ5SWRTdGF0dXMgZm9yIGFu
eXRoaW5nIHRoZW4gd2Ugc2hvdWxkIHJlY29yZCBpdCBhbmQgaW5zZXJ0IGEgbm9kZQorICAgIC8v
IGFmdGVyIGV2ZXJ5dGhpbmcgZWxzZSAobGlrZSB0aGUgR2V0QnlPZmZzZXQgb3Igd2hhdGV2ZXIp
IHRoYXQgd2lsbCBmaWx0ZXIgdGhlIHJlY29yZGVkCisgICAgLy8gR2V0QnlJZFN0YXR1cy4gVGhh
dCBtZWFucyB0aGF0IHRoZSBjb25zdGFudCBmb2xkZXIgYWxzbyBuZWVkcyB0byBkbyB0aGUgc2Ft
ZSEKKyAgICAKICAgICBpZiAoZ2V0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpID4gMSkgewogICAg
ICAgICBpZiAoZ2V0QnlJZFN0YXR1cy5tYWtlc0NhbGxzKCkgfHwgIWlzRlRMKG1fZ3JhcGgubV9w
bGFuLm1vZGUpCi0gICAgICAgICAgICB8fCAhT3B0aW9uczo6dXNlUG9seW1vcnBoaWNBY2Nlc3NJ
bmxpbmluZygpKSB7CisgICAgICAgICAgICB8fCAhT3B0aW9uczo6dXNlUG9seW1vcnBoaWNBY2Nl
c3NJbmxpbmluZygpCisgICAgICAgICAgICB8fCBnZXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkg
PiBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemUoKSkgeworICAg
ICAgICAgICAgaWYgKGZhbHNlICYmIGdldEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSA+IE9wdGlv
bnM6Om1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6ZSgpKSB7CisgICAgICAgICAg
ICAgICAgZGF0YUxvZygiQXQgIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CisgICAgICAg
ICAgICAgICAgZGF0YUxvZygiR2l2aW5nIHVwIG9uOiAiLCBnZXRCeUlkU3RhdHVzLCAiXG4iKTsK
KyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoZGVzdGluYXRp
b25PcGVyYW5kKSwKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKGdldEJ5SWQsIE9wSW5mbyhp
ZGVudGlmaWVyTnVtYmVyKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBiYXNlKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIGFkZFRvR3JhcGgoRmlsdGVy
R2V0QnlJZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRk
R2V0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBnZXRCeUlkU3RhdHVzKSksIGJhc2Up
OworICAgICAgICAKICAgICAgICAgVmVjdG9yPE11bHRpR2V0QnlPZmZzZXRDYXNlLCAyPiBjYXNl
czsKICAgICAgICAgCiAgICAgICAgIC8vIDEpIEVtaXQgcHJvdG90eXBlIHN0cnVjdHVyZSBjaGVj
a3MgZm9yIGFsbCBjaGFpbnMuIFRoaXMgY291bGQgc29ydCBvZiBtYXliZSBub3QgYmUKQEAgLTQw
NTYsMTAgKzQwNzAsMTIgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoTXVsdGlHZXRCeU9mZnNldCwgT3BJbmZvKGRhdGEpLCBPcElu
Zm8ocHJlZGljdGlvbiksIGJhc2UpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGFk
ZFRvR3JhcGgoRmlsdGVyR2V0QnlJZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29y
ZGVkU3RhdHVzZXMuYWRkR2V0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBnZXRCeUlk
U3RhdHVzKSksIGJhc2UpOwogICAgIAogICAgIEFTU0VSVChnZXRCeUlkU3RhdHVzLm51bVZhcmlh
bnRzKCkgPT0gMSk7CiAgICAgR2V0QnlJZFZhcmlhbnQgdmFyaWFudCA9IGdldEJ5SWRTdGF0dXNb
MF07Ci0gICAgICAgICAgICAgICAgCisgICAgCiAgICAgTm9kZSogbG9hZGVkVmFsdWUgPSBsb2Fk
KHByZWRpY3Rpb24sIGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIHZhcmlhbnQpOwogICAgIGlmICgh
bG9hZGVkVmFsdWUpIHsKICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihkZXN0aW5hdGlvbk9w
ZXJhbmQpLApAQCAtNDE1MCw3ICs0MTY2LDEwIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZVB1dEJ5SWQoCiAgICAgCiAgICAgaWYgKHB1dEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSA+IDEp
IHsKICAgICAgICAgaWYgKCFpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSB8fCBwdXRCeUlkU3Rh
dHVzLm1ha2VzQ2FsbHMoKQotICAgICAgICAgICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3JwaGlj
QWNjZXNzSW5saW5pbmcoKSkgeworICAgICAgICAgICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3Jw
aGljQWNjZXNzSW5saW5pbmcoKQorICAgICAgICAgICAgfHwgcHV0QnlJZFN0YXR1cy5udW1WYXJp
YW50cygpID4gT3B0aW9uczo6bWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplKCkp
IHsKKyAgICAgICAgICAgIGlmIChmYWxzZSAmJiBwdXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkg
PiBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemUoKSkKKyAgICAg
ICAgICAgICAgICBkYXRhTG9nKCJHaXZpbmcgdXAgb246ICIsIHB1dEJ5SWRTdGF0dXMsICJcbiIp
OwogICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUs
IHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQpAQCAtNDE2OCw2ICs0MTg3LDggQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJ
ZCgKICAgICAgICAgCiAgICAgICAgIGlmIChVTkxJS0VMWShtX2dyYXBoLmNvbXBpbGF0aW9uKCkp
KQogICAgICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5ub3RpY2VJbmxpbmVkUHV0QnlJ
ZCgpOworICAgICAgICAKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJQdXRCeUlkU3RhdHVzLCBP
cEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcy5hZGRQdXRCeUlkU3RhdHVzKGN1
cnJlbnRDb2RlT3JpZ2luKCksIHB1dEJ5SWRTdGF0dXMpKSwgYmFzZSk7CiAKICAgICAgICAgZm9y
IChjb25zdCBQdXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IHB1dEJ5SWRTdGF0dXMudmFyaWFudHMo
KSkgewogICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlckluZmVycmVkVHlwZSh2YXJpYW50LnJl
cXVpcmVkVHlwZSgpKTsKQEAgLTQxODksNiArNDIxMCw4IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZVB1dEJ5SWQoCiAgICAgCiAgICAgc3dpdGNoICh2YXJpYW50LmtpbmQoKSkgewogICAg
IGNhc2UgUHV0QnlJZFZhcmlhbnQ6OlJlcGxhY2U6IHsKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0
ZXJQdXRCeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcy5h
ZGRQdXRCeUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIHB1dEJ5SWRTdGF0dXMpKSwgYmFz
ZSk7CisgICAgICAgIAogICAgICAgICBzdG9yZShiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YXJp
YW50LCB2YWx1ZSk7CiAgICAgICAgIGlmIChVTkxJS0VMWShtX2dyYXBoLmNvbXBpbGF0aW9uKCkp
KQogICAgICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5ub3RpY2VJbmxpbmVkUHV0QnlJ
ZCgpOwpAQCAtNDE5Niw2ICs0MjE5LDggQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0
QnlJZCgKICAgICB9CiAgICAgCiAgICAgY2FzZSBQdXRCeUlkVmFyaWFudDo6VHJhbnNpdGlvbjog
eworICAgICAgICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBo
Lm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFkZFB1dEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmln
aW4oKSwgcHV0QnlJZFN0YXR1cykpLCBiYXNlKTsKKyAgICAgICAgCiAgICAgICAgIGFkZFRvR3Jh
cGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50
Lm9sZFN0cnVjdHVyZSgpKSksIGJhc2UpOwogICAgICAgICBpZiAoIWNoZWNrKHZhcmlhbnQuY29u
ZGl0aW9uU2V0KCkpKSB7CiAgICAgICAgICAgICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVy
TnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3QpOwpAQCAtNDI2Myw2ICs0Mjg4
LDggQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICB9CiAgICAgICAg
IAogICAgIGNhc2UgUHV0QnlJZFZhcmlhbnQ6OlNldHRlcjogeworICAgICAgICBhZGRUb0dyYXBo
KEZpbHRlclB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1
c2VzLmFkZFB1dEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0YXR1cykp
LCBiYXNlKTsKKyAgICAgICAgCiAgICAgICAgIE5vZGUqIGxvYWRlZFZhbHVlID0gbG9hZChTcGVj
Q2VsbE90aGVyLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YXJpYW50KTsKICAgICAgICAgaWYg
KCFsb2FkZWRWYWx1ZSkgewogICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmll
ck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0KTsKQEAgLTQ3OTEsNyArNDgx
OCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAg
ICAgIGF1dG8mIGJ5dGVjb2RlID0gKnJlaW50ZXJwcmV0X2Nhc3Q8T3BJbnN0YW5jZW9mKj4oY3Vy
cmVudEluc3RydWN0aW9uKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgSW5zdGFuY2VPZlN0
YXR1cyBzdGF0dXMgPSBJbnN0YW5jZU9mU3RhdHVzOjpjb21wdXRlRm9yKAotICAgICAgICAgICAg
ICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgbV9pbmxpbmVTdGFja1RvcC0+
bV9zdHViSW5mb3MsCisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrLCBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLAogICAgICAgICAgICAgICAg
IG1fY3VycmVudEluZGV4KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgTm9kZSogdmFsdWUg
PSBnZXQoVmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLnZhbHVlKCkpKTsKQEAgLTUwMjQsNyArNTA1
MSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAg
ICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSAwOwogICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgICAgIEJ5VmFsSW5mbyogYnlWYWxJ
bmZvID0gbV9pbmxpbmVTdGFja1RvcC0+bV9ieVZhbEluZm9zLmdldChDb2RlT3JpZ2luKGN1cnJl
bnRDb2RlT3JpZ2luKCkuYnl0ZWNvZGVJbmRleCkpOworICAgICAgICAgICAgICAgIEJ5VmFsSW5m
byogYnlWYWxJbmZvID0gbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcC5nZXQoQ29kZU9y
aWdpbihjdXJyZW50Q29kZU9yaWdpbigpLmJ5dGVjb2RlSW5kZXgpKS5ieVZhbEluZm87CiAgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IFdoZW4gdGhlIGJ5dGVjb2RlIGlzIG5vdCBjb21waWxlZCBp
biB0aGUgYmFzZWxpbmUgSklULCBieVZhbEluZm8gYmVjb21lcyBudWxsLgogICAgICAgICAgICAg
ICAgIC8vIEF0IHRoYXQgdGltZSwgdGhlcmUgaXMgbm8gaW5mb3JtYXRpb24uCiAgICAgICAgICAg
ICAgICAgaWYgKGJ5VmFsSW5mbwpAQCAtNTA5Myw3ICs1MTIwLDcgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIFB1dEJ5SWRTdGF0dXMg
cHV0QnlJZFN0YXR1czsKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIENv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2Nr
LT5tX2xvY2spOwotICAgICAgICAgICAgICAgICAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IG1f
aW5saW5lU3RhY2tUb3AtPm1fYnlWYWxJbmZvcy5nZXQoQ29kZU9yaWdpbihjdXJyZW50Q29kZU9y
aWdpbigpLmJ5dGVjb2RlSW5kZXgpKTsKKyAgICAgICAgICAgICAgICAgICAgQnlWYWxJbmZvKiBi
eVZhbEluZm8gPSBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLmdldChDb2RlT3JpZ2lu
KGN1cnJlbnRDb2RlT3JpZ2luKCkuYnl0ZWNvZGVJbmRleCkpLmJ5VmFsSW5mbzsKICAgICAgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IFdoZW4gdGhlIGJ5dGVjb2RlIGlzIG5vdCBjb21waWxlZCBp
biB0aGUgYmFzZWxpbmUgSklULCBieVZhbEluZm8gYmVjb21lcyBudWxsLgogICAgICAgICAgICAg
ICAgICAgICAvLyBBdCB0aGF0IHRpbWUsIHRoZXJlIGlzIG5vIGluZm9ybWF0aW9uLgogICAgICAg
ICAgICAgICAgICAgICBpZiAoYnlWYWxJbmZvIApAQCAtNTE5OSw4ICs1MjI2LDggQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50
aWZpZXJOdW1iZXJdOwogICAgICAgICAgICAgR2V0QnlJZFN0YXR1cyBnZXRCeUlkU3RhdHVzID0g
R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKLSAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNr
VG9wLT5tX3Byb2ZpbGVkQmxvY2ssIG1fZGZnQ29kZUJsb2NrLAotICAgICAgICAgICAgICAgIG1f
aW5saW5lU3RhY2tUb3AtPm1fc3R1YkluZm9zLCBtX2RmZ1N0dWJJbmZvcywKKyAgICAgICAgICAg
ICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssCisgICAgICAgICAgICAgICAg
bV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywKICAgICAg
ICAgICAgICAgICBjdXJyZW50Q29kZU9yaWdpbigpLCB1aWQpOwogCiAgICAgICAgICAgICBBY2Nl
c3NUeXBlIHR5cGUgPSBBY2Nlc3NUeXBlOjpHZXQ7CkBAIC01MjQzLDggKzUyNzAsOCBAQCB2b2lk
IEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBib29sIGRp
cmVjdCA9IGN1cnJlbnRJbnN0cnVjdGlvbls4XS51LnB1dEJ5SWRGbGFncyAmIFB1dEJ5SWRJc0Rp
cmVjdDsKIAogICAgICAgICAgICAgUHV0QnlJZFN0YXR1cyBwdXRCeUlkU3RhdHVzID0gUHV0QnlJ
ZFN0YXR1czo6Y29tcHV0ZUZvcigKLSAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5t
X3Byb2ZpbGVkQmxvY2ssIG1fZGZnQ29kZUJsb2NrLAotICAgICAgICAgICAgICAgIG1faW5saW5l
U3RhY2tUb3AtPm1fc3R1YkluZm9zLCBtX2RmZ1N0dWJJbmZvcywKKyAgICAgICAgICAgICAgICBt
X2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssCisgICAgICAgICAgICAgICAgbV9pbmxp
bmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRleHRTdGFjaywKICAgICAgICAgICAg
ICAgICBjdXJyZW50Q29kZU9yaWdpbigpLCBtX2dyYXBoLmlkZW50aWZpZXJzKClbaWRlbnRpZmll
ck51bWJlcl0pOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBoYW5kbGVQdXRCeUlkKGJhc2Us
IGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBkaXJlY3QpOwpAQCAtNjYw
MywxMiArNjYzMCwxOSBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5l
CiAgICAgICAgIC8vIFdlIGRvIHRoaXMgd2hpbGUgaG9sZGluZyB0aGUgbG9jayBiZWNhdXNlIHdl
IHdhbnQgdG8gZW5jb3VyYWdlIFN0cnVjdHVyZVN0dWJJbmZvJ3MKICAgICAgICAgLy8gdG8gYmUg
cG90ZW50aWFsbHkgYWRkZWQgdG8gb3BlcmF0aW9ucyBhbmQgYmVjYXVzZSB0aGUgcHJvZmlsZWQg
YmxvY2sgY291bGQgYmUgaW4gdGhlCiAgICAgICAgIC8vIG1pZGRsZSBvZiBMTEludC0+SklUIHRp
ZXItdXAgaW4gd2hpY2ggY2FzZSB3ZSB3b3VsZCBiZSBhZGRpbmcgdGhlIGluZm8ncyByaWdodCBu
b3cuCi0gICAgICAgIGlmIChtX3Byb2ZpbGVkQmxvY2stPmhhc0Jhc2VsaW5lSklUUHJvZmlsaW5n
KCkpIHsKLSAgICAgICAgICAgIG1fcHJvZmlsZWRCbG9jay0+Z2V0U3R1YkluZm9NYXAobG9ja2Vy
LCBtX3N0dWJJbmZvcyk7Ci0gICAgICAgICAgICBtX3Byb2ZpbGVkQmxvY2stPmdldENhbGxMaW5r
SW5mb01hcChsb2NrZXIsIG1fY2FsbExpbmtJbmZvcyk7Ci0gICAgICAgICAgICBtX3Byb2ZpbGVk
QmxvY2stPmdldEJ5VmFsSW5mb01hcChsb2NrZXIsIG1fYnlWYWxJbmZvcyk7CisgICAgICAgIGlm
IChtX3Byb2ZpbGVkQmxvY2stPmhhc0Jhc2VsaW5lSklUUHJvZmlsaW5nKCkpCisgICAgICAgICAg
ICBtX3Byb2ZpbGVkQmxvY2stPmdldElDU3RhdHVzTWFwKGxvY2tlciwgbV9iYXNlbGluZU1hcCk7
CisgICAgfQorICAgIAorICAgIGlmIChPcHRpb25zOjp1c2VQb2x5dmFyaWFudERldmlydHVhbGl6
YXRpb24oKSkgeworICAgICAgICBDb2RlQmxvY2sqIG9wdGltaXplZEJsb2NrID0gbV9wcm9maWxl
ZEJsb2NrLT5yZXBsYWNlbWVudCgpOworICAgICAgICBtX29wdGltaXplZENvbnRleHQub3B0aW1p
emVkQ29kZUJsb2NrID0gb3B0aW1pemVkQmxvY2s7CisgICAgICAgIGlmIChvcHRpbWl6ZWRCbG9j
aykgeworICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihvcHRpbWl6ZWRCbG9j
ay0+bV9sb2NrKTsKKyAgICAgICAgICAgIG9wdGltaXplZEJsb2NrLT5nZXRJQ1N0YXR1c01hcChs
b2NrZXIsIG1fb3B0aW1pemVkQ29udGV4dC5tYXApOwogICAgICAgICB9CiAgICAgfQorICAgIGJ5
dGVDb2RlUGFyc2VyLT5tX2ljQ29udGV4dFN0YWNrLmFwcGVuZCgmbV9vcHRpbWl6ZWRDb250ZXh0
KTsKICAgICAKICAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNXaXRoRml4dXAgPSBz
dGQ6Om1heDxpbnQ+KGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBjb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSk7CiAKQEAgLTY2MTgsNiArNjY1Miw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxp
bmVTdGFja0VudHJ5OjpJbmxpbmUKICAgICAgICAgQVNTRVJUKGlubGluZUNhbGxGcmFtZVN0YXJ0
LmlzVmFsaWQoKSk7CiAgICAgICAgIAogICAgICAgICBtX2lubGluZUNhbGxGcmFtZSA9IGJ5dGVD
b2RlUGFyc2VyLT5tX2dyYXBoLm1fcGxhbi5pbmxpbmVDYWxsRnJhbWVzLT5hZGQoKTsKKyAgICAg
ICAgbV9vcHRpbWl6ZWRDb250ZXh0LmlubGluZUNhbGxGcmFtZSA9IG1faW5saW5lQ2FsbEZyYW1l
OwogCiAgICAgICAgIC8vIFRoZSBvd25lciBpcyB0aGUgbWFjaGluZSBjb2RlIGJsb2NrLCBhbmQg
d2UgYWxyZWFkeSBoYXZlIGEgYmFycmllciBvbiB0aGF0IHdoZW4gdGhlCiAgICAgICAgIC8vIHBs
YW4gZmluaXNoZXMuCkBAIC02NjczLDYgKzY3MDgsMTMgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGlu
ZVN0YWNrRW50cnk6OklubGluZQogICAgIGJ5dGVDb2RlUGFyc2VyLT5tX2lubGluZVN0YWNrVG9w
ID0gdGhpczsKIH0KIAorQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6On5JbmxpbmVT
dGFja0VudHJ5KCkKK3sKKyAgICBtX2J5dGVDb2RlUGFyc2VyLT5tX2lubGluZVN0YWNrVG9wID0g
bV9jYWxsZXI7CisgICAgUkVMRUFTRV9BU1NFUlQobV9ieXRlQ29kZVBhcnNlci0+bV9pY0NvbnRl
eHRTdGFjay5sYXN0KCkgPT0gJm1fb3B0aW1pemVkQ29udGV4dCk7CisgICAgbV9ieXRlQ29kZVBh
cnNlci0+bV9pY0NvbnRleHRTdGFjay5yZW1vdmVMYXN0KCk7Cit9CisKIHZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQ29kZUJsb2NrKCkKIHsKICAgICBjbGVhckNhY2hlcygpOwpAQCAtNjc2OSwx
NSArNjgxMSw2IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlKCkKICAgICAKICAgICBWRVJC
T1NFX0xPRygiUGFyc2luZyAiLCAqbV9jb2RlQmxvY2ssICJcbiIpOwogICAgIAotICAgIG1fZGZn
Q29kZUJsb2NrID0gbV9ncmFwaC5tX3BsYW4ucHJvZmlsZWRERkdDb2RlQmxvY2s7Ci0gICAgaWYg
KGlzRlRMKG1fZ3JhcGgubV9wbGFuLm1vZGUpICYmIG1fZGZnQ29kZUJsb2NrCi0gICAgICAgICYm
IE9wdGlvbnM6OnVzZVBvbHl2YXJpYW50RGV2aXJ0dWFsaXphdGlvbigpKSB7Ci0gICAgICAgIGlm
IChPcHRpb25zOjp1c2VQb2x5dmFyaWFudENhbGxJbmxpbmluZygpKQotICAgICAgICAgICAgQ2Fs
bExpbmtTdGF0dXM6OmNvbXB1dGVERkdTdGF0dXNlcyhtX2RmZ0NvZGVCbG9jaywgbV9jYWxsQ29u
dGV4dE1hcCk7Ci0gICAgICAgIGlmIChPcHRpb25zOjp1c2VQb2x5dmFyaWFudEJ5SWRJbmxpbmlu
ZygpKQotICAgICAgICAgICAgbV9kZmdDb2RlQmxvY2stPmdldFN0dWJJbmZvTWFwKG1fZGZnU3R1
YkluZm9zKTsKLSAgICB9Ci0gICAgCiAgICAgSW5saW5lU3RhY2tFbnRyeSBpbmxpbmVTdGFja0Vu
dHJ5KAogICAgICAgICB0aGlzLCBtX2NvZGVCbG9jaywgbV9wcm9maWxlZEJsb2NrLCAwLCBWaXJ0
dWFsUmVnaXN0ZXIoKSwgVmlydHVhbFJlZ2lzdGVyKCksCiAgICAgICAgIG1fY29kZUJsb2NrLT5u
dW1QYXJhbWV0ZXJzKCksIElubGluZUNhbGxGcmFtZTo6Q2FsbCwgbnVsbHB0cik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMjMyMjI3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0Niw2ICs0NDYsOSBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlCiAgICAgY2FzZSBQcm9maWxlQ29udHJvbEZsb3c6CiAgICAgY2FzZSBQdXRIaW50
OgogICAgIGNhc2UgSW5pdGlhbGl6ZUVudHJ5cG9pbnRBcmd1bWVudHM6CisgICAgY2FzZSBGaWx0
ZXJDYWxsTGlua1N0YXR1czoKKyAgICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0dXM6CisgICAgY2Fz
ZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICB3cml0ZShTaWRlU3RhdGUpOwogICAgICAg
ICByZXR1cm47CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyc0V4aXRTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03NSw2ICs3NSw5IEBAIGJvb2wgY2xvYmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBo
LCBOb2QKICAgICBjYXNlIEZlbmNlZFN0b3JlQmFycmllcjoKICAgICBjYXNlIEFsbG9jYXRlUHJv
cGVydHlTdG9yYWdlOgogICAgIGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKKyAgICBj
YXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoK
KyAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgIC8vIFRoZXNlIGRvIGNsb2Ji
ZXIgbWVtb3J5LCBidXQgbm90aGluZyB0aGF0IGlzIG9ic2VydmFibGUuIEl0IG1heSBiZSBuaWNl
IHRvIHNlcGFyYXRlIHRoZQogICAgICAgICAvLyBoZWFwcyBpbnRvIHRob3NlIHRoYXQgYXJlIG9i
c2VydmFibGUgYW5kIHRob3NlIHRoYXQgYXJlbid0LCBidXQgd2UgZG9uJ3QgZG8gdGhhdCByaWdo
dCBub3cuCiAgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQ4NDQwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1v
bkRhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1v
bkRhdGEuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb21tb25EYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRl
ICJJbmxpbmVDYWxsRnJhbWVTZXQuaCIKICNpbmNsdWRlICJKU0Nhc3QuaCIKICNpbmNsdWRlICJQ
cm9maWxlckNvbXBpbGF0aW9uLmgiCisjaW5jbHVkZSAiUmVjb3JkZWRTdGF0dXNlcy5oIgogI2lu
Y2x1ZGUgPHd0Zi9CYWcuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIApAQCAtMTI1
LDYgKzEyNiw3IEBAIHB1YmxpYzoKICAgICBCYWc8Q29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBv
aW50PiB3YXRjaHBvaW50czsKICAgICBCYWc8QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50PiBh
ZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnRzOwogICAgIEJhZzxBZGFwdGl2ZUluZmVycmVkUHJv
cGVydHlWYWx1ZVdhdGNocG9pbnQ+IGFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hw
b2ludHM7CisgICAgUmVjb3JkZWRTdGF0dXNlcyByZWNvcmRlZFN0YXR1c2VzOwogICAgIFZlY3Rv
cjxKdW1wUmVwbGFjZW1lbnQ+IGp1bXBSZXBsYWNlbWVudHM7CiAgICAgCiAgICAgU2NyYXRjaEJ1
ZmZlciogY2F0Y2hPU1JFbnRyeUJ1ZmZlcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMzIy
MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTU3LDcgKzU1NywxNSBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIGF1dG8gYWRkRmlsdGVyU3RhdHVzID0gWyZdICgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIEZpbHRlckdldEJ5SWRTdGF0dXMsIG5vZGUtPm9y
aWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNv
cmRlZFN0YXR1c2VzLmFkZEdldEJ5SWRTdGF0dXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBzdGF0
dXMpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2UoY2hpbGQpKTsKKyAgICAgICAgICAg
ICAgICB9OworICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChzdGF0dXMubnVt
VmFyaWFudHMoKSA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAgIGFkZEZpbHRlclN0YXR1cygp
OwogICAgICAgICAgICAgICAgICAgICBlbWl0R2V0QnlPZmZzZXQoaW5kZXhJbkJsb2NrLCBub2Rl
LCBiYXNlVmFsdWUsIHN0YXR1c1swXSwgaWRlbnRpZmllck51bWJlcik7CiAgICAgICAgICAgICAg
ICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTU2
Niw2ICs1NzQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGlmICghaXNGVEwobV9ncmFw
aC5tX3BsYW4ubW9kZSkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgIGFkZEZpbHRlclN0YXR1cygpOwogICAgICAgICAgICAgICAg
IE11bHRpR2V0QnlPZmZzZXREYXRhKiBkYXRhID0gbV9ncmFwaC5tX211bHRpR2V0QnlPZmZzZXRE
YXRhLmFkZCgpOwogICAgICAgICAgICAgICAgIGZvciAoY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZh
cmlhbnQgOiBzdGF0dXMudmFyaWFudHMoKSkgewogICAgICAgICAgICAgICAgICAgICBkYXRhLT5j
YXNlcy5hcHBlbmQoCkBAIC02MzksNiArNjQ4LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgaWYgKCFhbGxHb29kKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAg
ICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBGaWx0ZXJQdXRCeUlkU3RhdHVz
LCBub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLm1fcGxh
bi5yZWNvcmRlZFN0YXR1c2VzLmFkZFB1dEJ5SWRTdGF0dXMobm9kZS0+b3JpZ2luLnNlbWFudGlj
LCBzdGF0dXMpKSwKKyAgICAgICAgICAgICAgICAgICAgRWRnZShjaGlsZCkpOworICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChzdGF0dXMubnVtVmFyaWFudHMoKSA9PSAxKSB7
CiAgICAgICAgICAgICAgICAgICAgIGVtaXRQdXRCeU9mZnNldChpbmRleEluQmxvY2ssIG5vZGUs
IGJhc2VWYWx1ZSwgc3RhdHVzWzBdLCBpZGVudGlmaWVyTnVtYmVyKTsKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
CShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMiw2ICszMTIsOSBAQCBib29sIGRvZXNHQyhHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBBdG9taWNzWG9yOgogICAgIGNhc2UgQXRv
bWljc0lzTG9ja0ZyZWU6CiAgICAgY2FzZSBNYXRjaFN0cnVjdHVyZToKKyAgICBjYXNlIEZpbHRl
ckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICBjYXNl
IEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNhc2Ug
UHVzaFdpdGhTY29wZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1
cFBoYXNlLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzOCw2ICsyMTM4LDkgQEAg
cHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRHbG9iYWxUaGlzOgogICAgICAgICBjYXNlIEV4dHJh
Y3RWYWx1ZUZyb21XZWFrTWFwR2V0OgogICAgICAgICBjYXNlIENQVUludHJpbnNpYzoKKyAgICAg
ICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJHZXRCeUlk
U3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgICAgICBi
cmVhazsKICNlbHNlCiAgICAgICAgIGRlZmF1bHQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1Niw2ICszNTYsMTIgQEAg
dm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdAogICAgICAgICBvdXQucHJp
bnQoY29tbWEsICJpZ25vcmVMYXN0SW5kZXhJc1dyaXRhYmxlID0gIiwgbm9kZS0+aWdub3JlTGFz
dEluZGV4SXNXcml0YWJsZSgpKTsKICAgICBpZiAobm9kZS0+aXNDb25zdGFudCgpKQogICAgICAg
ICBvdXQucHJpbnQoY29tbWEsIHBvaW50ZXJEdW1wSW5Db250ZXh0KG5vZGUtPmNvbnN0YW50KCks
IGNvbnRleHQpKTsKKyAgICBpZiAobm9kZS0+aGFzQ2FsbExpbmtTdGF0dXMoKSkKKyAgICAgICAg
b3V0LnByaW50KGNvbW1hLCAqbm9kZS0+Y2FsbExpbmtTdGF0dXMoKSk7CisgICAgaWYgKG5vZGUt
Pmhhc0dldEJ5SWRTdGF0dXMoKSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAqbm9kZS0+Z2V0
QnlJZFN0YXR1cygpKTsKKyAgICBpZiAobm9kZS0+aGFzUHV0QnlJZFN0YXR1cygpKQorICAgICAg
ICBvdXQucHJpbnQoY29tbWEsICpub2RlLT5wdXRCeUlkU3RhdHVzKCkpOwogICAgIGlmIChub2Rl
LT5pc0p1bXAoKSkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiVDoiLCAqbm9kZS0+dGFyZ2V0
QmxvY2soKSk7CiAgICAgaWYgKG5vZGUtPmlzQnJhbmNoKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw2
ICsxMDEsOSBAQCBFeGl0TW9kZSBtYXlFeGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5vZGUqCiAgICAg
Y2FzZSBQdXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0Ogog
ICAgIGNhc2UgTnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseToKKyAgICBjYXNlIEZpbHRlckNh
bGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICBjYXNlIEZp
bHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTdHJDYXQ6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMjMyMjI3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
NjksNiArMjc2OSwzOSBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChvcCgpID09IFRocm93U3Rh
dGljRXJyb3IpOwogICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8dWludDMyX3Q+KCk7CiAgICAg
fQorICAgIAorICAgIGJvb2wgaGFzQ2FsbExpbmtTdGF0dXMoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG9wKCkgPT0gRmlsdGVyQ2FsbExpbmtTdGF0dXM7CisgICAgfQorICAgIAorICAgIENhbGxM
aW5rU3RhdHVzKiBjYWxsTGlua1N0YXR1cygpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzQ2Fs
bExpbmtTdGF0dXMoKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mby5hczxDYWxsTGlua1N0YXR1
cyo+KCk7CisgICAgfQorICAgIAorICAgIGJvb2wgaGFzR2V0QnlJZFN0YXR1cygpCisgICAgewor
ICAgICAgICByZXR1cm4gb3AoKSA9PSBGaWx0ZXJHZXRCeUlkU3RhdHVzOworICAgIH0KKyAgICAK
KyAgICBHZXRCeUlkU3RhdHVzKiBnZXRCeUlkU3RhdHVzKCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChoYXNHZXRCeUlkU3RhdHVzKCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8R2V0QnlJ
ZFN0YXR1cyo+KCk7CisgICAgfQorICAgIAorICAgIGJvb2wgaGFzUHV0QnlJZFN0YXR1cygpCisg
ICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBGaWx0ZXJQdXRCeUlkU3RhdHVzOworICAgIH0K
KyAgICAKKyAgICBQdXRCeUlkU3RhdHVzKiBwdXRCeUlkU3RhdHVzKCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChoYXNQdXRCeUlkU3RhdHVzKCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8
UHV0QnlJZFN0YXR1cyo+KCk7CisgICAgfQogCiAgICAgdm9pZCBkdW1wQ2hpbGRyZW4oUHJpbnRT
dHJlYW0mIG91dCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5NCwxMSArMzk0LDggQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEdldEFyZ3VtZW50LCBOb2RlUmVzdWx0
SlMpIFwKICAgICBcCiAgICAgbWFjcm8oTmV3RnVuY3Rpb24sIE5vZGVSZXN1bHRKUykgXAotICAg
IFwKICAgICBtYWNybyhOZXdHZW5lcmF0b3JGdW5jdGlvbiwgTm9kZVJlc3VsdEpTKSBcCi0gICAg
XAogICAgIG1hY3JvKE5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24sIE5vZGVSZXN1bHRKUykgXAot
ICAgIFwKICAgICBtYWNybyhOZXdBc3luY0Z1bmN0aW9uLCBOb2RlUmVzdWx0SlMpIFwKICAgICBc
CiAgICAgLyogQmxvY2sgdGVybWluYWxzLiAqL1wKQEAgLTQ3NSw2ICs0NzIsMTEgQEAgbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIFwKICAgICAvKiBVc2VkIGZvciAkdm0gcGVy
Zm9ybWFuY2UgZGVidWdnaW5nICovIFwKICAgICBtYWNybyhDUFVJbnRyaW5zaWMsIE5vZGVSZXN1
bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBcCisgICAgLyogVXNlZCB0byBwcm92aWRl
IGZlZWRiYWNrIHRvIHRoZSBJQyBwcm9maWxlci4gKi8gXAorICAgIG1hY3JvKEZpbHRlckNhbGxM
aW5rU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oRmlsdGVyR2V0QnlJZFN0
YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEZpbHRlclB1dEJ5SWRTdGF0dXMs
IE5vZGVNdXN0R2VuZXJhdGUpIFwKIAogCiAvLyBUaGlzIGVudW0gZ2VuZXJhdGVzIGEgbW9ub3Rv
bmljYWxseSBpbmNyZWFzaW5nIGlkIGZvciBhbGwgTm9kZSB0eXBlcywKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdEJhc2UuY3BwCShyZXZpc2lvbiAyMzIyMjcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRCYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC00MiwxMSArNDIsMTcgQEAgdm9pZCBPU1JFeGl0QmFzZTo6Y29uc2lkZXJB
ZGRpbmdBc0ZyZXF1ZQogICAgICAgICBiYXNlbGluZUNvZGVCbG9ja0Zvck9yaWdpbkFuZEJhc2Vs
aW5lQ29kZUJsb2NrKAogICAgICAgICAgICAgbV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGUsIHBy
b2ZpbGVkQ29kZUJsb2NrKTsKICAgICBpZiAoc291cmNlUHJvZmlsZWRDb2RlQmxvY2spIHsKKyAg
ICAgICAgRXhpdGluZ0lubGluZUtpbmQgaW5saW5lS2luZDsKKyAgICAgICAgaWYgKG1fY29kZU9y
aWdpbkZvckV4aXRQcm9maWxlLmlubGluZUNhbGxGcmFtZSkKKyAgICAgICAgICAgIGlubGluZUtp
bmQgPSBFeGl0RnJvbUlubGluZWQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlubGluZUtp
bmQgPSBFeGl0RnJvbU5vdElubGluZWQ7CisgICAgICAgIAogICAgICAgICBGcmVxdWVudEV4aXRT
aXRlIHNpdGU7CiAgICAgICAgIGlmIChtX3dhc0hvaXN0ZWQpCi0gICAgICAgICAgICBzaXRlID0g
RnJlcXVlbnRFeGl0U2l0ZShIb2lzdGluZ0ZhaWxlZCwgaml0VHlwZSk7CisgICAgICAgICAgICBz
aXRlID0gRnJlcXVlbnRFeGl0U2l0ZShIb2lzdGluZ0ZhaWxlZCwgaml0VHlwZSwgaW5saW5lS2lu
ZCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNpdGUgPSBGcmVxdWVudEV4aXRTaXRlKG1f
Y29kZU9yaWdpbkZvckV4aXRQcm9maWxlLmJ5dGVjb2RlSW5kZXgsIG1fa2luZCwgaml0VHlwZSk7
CisgICAgICAgICAgICBzaXRlID0gRnJlcXVlbnRFeGl0U2l0ZShtX2NvZGVPcmlnaW5Gb3JFeGl0
UHJvZmlsZS5ieXRlY29kZUluZGV4LCBtX2tpbmQsIGppdFR5cGUsIGlubGluZUtpbmQpOwogICAg
ICAgICBFeGl0UHJvZmlsZTo6YWRkKHNvdXJjZVByb2ZpbGVkQ29kZUJsb2NrLCBzaXRlKTsKICAg
ICB9CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRp
b25TaW5raW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDIzMjIyNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQ
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1Niw2ICs3NTYsNyBAQCBwcml2YXRlOgogICAg
ICAgICB9CiAKICAgICAgICAgcHJvbW90ZUxvY2FsSGVhcCgpOworICAgICAgICByZW1vdmVJQ1N0
YXR1c0ZpbHRlcnMoKTsKIAogICAgICAgICBpZiAoT3B0aW9uczo6dmFsaWRhdGVHcmFwaEF0RWFj
aFBoYXNlKCkpCiAgICAgICAgICAgICBERkc6OnZhbGlkYXRlKG1fZ3JhcGgsIER1bXBHcmFwaCwg
Z3JhcGhCZWZvcmVTaW5raW5nKTsKQEAgLTEwODgsNiArMTA4OSwxMSBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIFB1dEhpbnQ6CiAgICAgICAgICAgICAvLyBIYW5kbGVkIGJ5IE9TUiBhdmFpbGFi
aWxpdHkgYW5hbHlzaXMKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAg
IGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0
YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgorICAgICAgICAgICAgYnJl
YWs7CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIG1fZ3JhcGguZG9Ub0NoaWxkcmVu
KApAQCAtMjMzMSw2ICsyMzM3LDI0IEBAIHByaXZhdGU6CiAKICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CisgICAgCisgICAgdm9pZCByZW1vdmVJQ1N0YXR1c0Zp
bHRlcnMoKQorICAgIHsKKyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGgu
YmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgeworICAgICAgICAgICAgZm9yIChOb2RlKiBub2RlIDog
KmJsb2NrKSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgICAg
ICAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICAgICAgICAgICAgICBjYXNl
IEZpbHRlckdldEJ5SWRTdGF0dXM6CisgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlk
U3RhdHVzOgorICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPmlzUGhhbnRv
bUFsbG9jYXRpb24oKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZVdpdGhv
dXRDaGVja3MoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQogCiAgICAgLy8gVGhpcyBpcyBhIGdyZWF0
IHdheSBvZiBhc2tpbmcgdmFsdWUtPmlzU3RpbGxWYWxpZCgpIHdpdGhvdXQgaGF2aW5nIHRvIHdv
cnJ5IGFib3V0IGdldHRpbmcKICAgICAvLyBkaWZmZXJlbnQgYW5zd2Vycy4gSXQgdHVybnMgb3V0
IHRoYXQgdGhpcyBhbmFseXNpcyB3b3JrcyBPSyByZWdhcmRsZXNzIG9mIHdoYXQgdGhpcwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCShyZXZpc2lvbiAyMzIyMjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNTU1LDYgKzU1NSw3IEBAIHZvaWQgUGxhbjo6cmVhbGx5QWRkKENvbW1vbkRhdGEqIGNvbW1v
bkQKICAgICBpZGVudGlmaWVycy5yZWFsbHlBZGQoKnZtLCBjb21tb25EYXRhKTsKICAgICB3ZWFr
UmVmZXJlbmNlcy5yZWFsbHlBZGQoKnZtLCBjb21tb25EYXRhKTsKICAgICB0cmFuc2l0aW9ucy5y
ZWFsbHlBZGQoKnZtLCBjb21tb25EYXRhKTsKKyAgICBjb21tb25EYXRhLT5yZWNvcmRlZFN0YXR1
c2VzID0gV1RGTW92ZShyZWNvcmRlZFN0YXR1c2VzKTsKIH0KIAogdm9pZCBQbGFuOjpub3RpZnlD
b21waWxpbmcoKQpAQCAtNjMzLDYgKzYzNCw4IEBAIHZvaWQgUGxhbjo6Y2hlY2tMaXZlbmVzc0Fu
ZFZpc2l0Q2hpbGRyZW4KICAgICBjbGVhbk11c3RIYW5kbGVWYWx1ZXNJZk5lY2Vzc2FyeSgpOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IG11c3RIYW5kbGVWYWx1ZXMuc2l6ZSgpOyBpLS07KQogICAg
ICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG11c3RIYW5kbGVWYWx1ZXNbaV0pOworICAg
IAorICAgIHJlY29yZGVkU3RhdHVzZXMubWFya0lmQ2hlYXAodmlzaXRvcik7CiAKICAgICB2aXNp
dG9yLmFwcGVuZFVuYmFycmllcmVkKGNvZGVCbG9jayk7CiAgICAgdmlzaXRvci5hcHBlbmRVbmJh
cnJpZXJlZChjb2RlQmxvY2stPmFsdGVybmF0aXZlKCkpOwpAQCAtNjQ5LDYgKzY1MiwxMSBAQCB2
b2lkIFBsYW46OmNoZWNrTGl2ZW5lc3NBbmRWaXNpdENoaWxkcmVuCiAgICAgdHJhbnNpdGlvbnMu
dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKIH0KIAordm9pZCBQbGFuOjpmaW5hbGl6ZUluR0MoKQor
eworICAgIHJlY29yZGVkU3RhdHVzZXMuZmluYWxpemVXaXRob3V0RGVsZXRpbmcoKTsKK30KKwog
Ym9vbCBQbGFuOjppc0tub3duVG9CZUxpdmVEdXJpbmdHQygpCiB7CiAgICAgaWYgKHN0YWdlID09
IENhbmNlbGxlZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5oCShyZXZpc2lv
biAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJEZWZlcnJlZENvbXBpbGF0aW9u
Q2FsbGJhY2suaCIKICNpbmNsdWRlICJPcGVyYW5kcy5oIgogI2luY2x1ZGUgIlByb2ZpbGVyQ29t
cGlsYXRpb24uaCIKKyNpbmNsdWRlICJSZWNvcmRlZFN0YXR1c2VzLmgiCiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIApAQCAt
NzIsNiArNzMsNyBAQCBzdHJ1Y3QgUGxhbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlCiAg
ICAgdm9pZCBpdGVyYXRlQ29kZUJsb2Nrc0ZvckdDKGNvbnN0IEZ1bmMmKTsKICAgICB2b2lkIGNo
ZWNrTGl2ZW5lc3NBbmRWaXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CiAgICAgYm9vbCBpc0tu
b3duVG9CZUxpdmVEdXJpbmdHQygpOworICAgIHZvaWQgZmluYWxpemVJbkdDKCk7CiAgICAgdm9p
ZCBjYW5jZWwoKTsKIAogICAgIGJvb2wgY2FuVGllclVwQW5kT1NSRW50ZXIoKSBjb25zdCB7IHJl
dHVybiAhdGllclVwQW5kT1NSRW50ZXJCeXRlY29kZXMuaXNFbXB0eSgpOyB9CkBAIC0xMDQsNiAr
MTA2LDcgQEAgc3RydWN0IFBsYW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZQogICAgIERl
c2lyZWRJZGVudGlmaWVycyBpZGVudGlmaWVyczsKICAgICBEZXNpcmVkV2Vha1JlZmVyZW5jZXMg
d2Vha1JlZmVyZW5jZXM7CiAgICAgRGVzaXJlZFRyYW5zaXRpb25zIHRyYW5zaXRpb25zOworICAg
IFJlY29yZGVkU3RhdHVzZXMgcmVjb3JkZWRTdGF0dXNlczsKICAgICAKICAgICBib29sIHdpbGxU
cnlUb1RpZXJVcCB7IGZhbHNlIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZp
c2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwNiw2ICsxMjA2LDkgQEAg
cHJpdmF0ZToKICAgICAgICAgY2FzZSBJbml0aWFsaXplRW50cnlwb2ludEFyZ3VtZW50czoKICAg
ICAgICAgY2FzZSBXZWFrU2V0QWRkOgogICAgICAgICBjYXNlIFdlYWtNYXBTZXQ6CisgICAgICAg
IGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0
YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAKICAgICAgICAgLy8gVGhpcyBnZXRzIGlnbm9yZWQgYmVjYXVzZSBp
dCBvbmx5IHByZXRlbmRzIHRvIHByb2R1Y2UgYSB2YWx1ZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNDc4LDYgKzQ3OCwxMyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5
cGUmIHN0CiAgICAgICAgIC8vIGFscmVhZHkgZm9yY2UgdGhlc2UgdGhpbmdzIHRvIGJlIG9yZGVy
ZWQgcHJlY2lzZWx5LiBJJ20ganVzdCBub3QgY29uZmlkZW50IGVub3VnaCBpbiBteQogICAgICAg
ICAvLyBlZmZlY3QgYmFzZWQgbWVtb3J5IG1vZGVsIHRvIHJlbHkgc29sZWx5IG9uIHRoYXQgcmln
aHQgbm93LgogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgIGNhc2UgRmlsdGVy
Q2FsbExpbmtTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJHZXRCeUlkU3RhdHVzOgorICAgIGNhc2Ug
RmlsdGVyUHV0QnlJZFN0YXR1czoKKyAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0aGVzZSB0byBi
ZSBtb3ZlZCBhbnl3aGVyZSBvdGhlciB0aGFuIHdoZXJlIHdlIHB1dCB0aGVtLCBzaW5jZSB3ZSB3
YW50IHRoZW0KKyAgICAgICAgLy8gdG8gY2FwdHVyZSAicHJvZmlsaW5nIiBhdCB0aGUgcG9pbnQg
aW4gY29udHJvbCBmbG93IGhlcmUgdGhlIHVzZXIgcHV0IHRoZW0uCisgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlT
dG9yYWdlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MDMzLDYgKzQwMzMsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmVPckVtcHR5OgogICAgICAgICBERkdfQ1JBU0go
bV9qaXQuZ3JhcGgoKSwgbm9kZSwgIkNoZWNrU3RydWN0dXJlT3JFbXB0eSBvbmx5IHVzZWQgaW4g
NjQtYml0IERGRyIpOwogICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgY2FzZSBGaWx0ZXJD
YWxsTGlua1N0YXR1czoKKyAgICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0dXM6CisgICAgY2FzZSBG
aWx0ZXJQdXRCeUlkU3RhdHVzOgorICAgICAgICBicmVhazsKIAogICAgIGNhc2UgTGFzdE5vZGVU
eXBlOgogICAgIGNhc2UgUGhpOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NjI2LDYgKzQ2MjYsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEZpbHRlckNhbGxMaW5r
U3RhdHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlclB1
dEJ5SWRTdGF0dXM6CisgICAgICAgIG5vUmVzdWx0KG5vZGUpOworICAgICAgICBicmVhazsKKwog
I2Vsc2UgLy8gRU5BQkxFKEZUTF9KSVQpCiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAg
ICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAJKHJldmlzaW9u
IDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rp
b25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04OTgsMTAgKzg5OCwxNCBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIFRhaWxDYWxsOiB7CiAgICAgICAgICAgICBFeGVjdXRhYmxlQmFzZSog
ZXhlY3V0YWJsZSA9IG51bGxwdHI7CiAgICAgICAgICAgICBFZGdlIGNhbGxlZSA9IG1fZ3JhcGgu
dmFyQXJnQ2hpbGQobV9ub2RlLCAwKTsKLSAgICAgICAgICAgIGlmIChKU0Z1bmN0aW9uKiBmdW5j
dGlvbiA9IGNhbGxlZS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU0Z1bmN0aW9uKj4odm0oKSkpCisg
ICAgICAgICAgICBDYWxsVmFyaWFudCBjYWxsVmFyaWFudDsKKyAgICAgICAgICAgIGlmIChKU0Z1
bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxlZS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU0Z1bmN0aW9u
Kj4odm0oKSkpIHsKICAgICAgICAgICAgICAgICBleGVjdXRhYmxlID0gZnVuY3Rpb24tPmV4ZWN1
dGFibGUoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNhbGxlZS0+aXNGdW5jdGlvbkFsbG9jYXRp
b24oKSkKKyAgICAgICAgICAgICAgICBjYWxsVmFyaWFudCA9IENhbGxWYXJpYW50KGZ1bmN0aW9u
KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoY2FsbGVlLT5pc0Z1bmN0aW9uQWxsb2NhdGlvbigp
KSB7CiAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZSA9IGNhbGxlZS0+Y2FzdE9wZXJhbmQ8RnVu
Y3Rpb25FeGVjdXRhYmxlKj4oKTsKKyAgICAgICAgICAgICAgICBjYWxsVmFyaWFudCA9IENhbGxW
YXJpYW50KGV4ZWN1dGFibGUpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAg
ICAgICBpZiAoIWV4ZWN1dGFibGUpCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC05MTksNiAr
OTIzLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAKKyAgICAgICAgICAgIG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRk
Q2FsbExpbmtTdGF0dXMobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMsIENhbGxMaW5rU3RhdHVzKGNh
bGxWYXJpYW50KSk7CisgICAgICAgICAgICAKICAgICAgICAgICAgIG1fbm9kZS0+Y29udmVydFRv
RGlyZWN0Q2FsbChtX2dyYXBoLmZyZWV6ZShleGVjdXRhYmxlKSk7CiAgICAgICAgICAgICBtX2No
YW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5Myw4
ICszOTMsMTAgQEAgdm9pZCBXb3JrbGlzdDo6cmVtb3ZlRGVhZFBsYW5zKFZNJiB2bSkKICAgICAg
ICAgICAgIFBsYW4qIHBsYW4gPSBpdGVyLT52YWx1ZS5nZXQoKTsKICAgICAgICAgICAgIGlmIChw
bGFuLT52bSAhPSAmdm0pCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBp
ZiAocGxhbi0+aXNLbm93blRvQmVMaXZlRHVyaW5nR0MoKSkKKyAgICAgICAgICAgIGlmIChwbGFu
LT5pc0tub3duVG9CZUxpdmVEdXJpbmdHQygpKSB7CisgICAgICAgICAgICAgICAgcGxhbi0+Zmlu
YWxpemVJbkdDKCk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChwbGFuLT5zdGFnZSAhPSBQbGFuOjpDYW5jZWxsZWQp
OyAvLyBTaG91bGQgbm90IGJlIGNhbmNlbGxlZCwgeWV0LgogICAgICAgICAgICAgQVNTRVJUKCFk
ZWFkUGxhbktleXMuY29udGFpbnMocGxhbi0+a2V5KCkpKTsKICAgICAgICAgICAgIGRlYWRQbGFu
S2V5cy5hZGQocGxhbi0+a2V5KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgJKHJldmlzaW9uIDIzMjIyNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgRlRMIHsKICAgICBtYWNybyhEaXJlY3RBcmd1bWVudHNfbWluQ2FwYWNpdHksIERpcmVjdEFy
Z3VtZW50czo6b2Zmc2V0T2ZNaW5DYXBhY2l0eSgpKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1l
bnRzX21hcHBlZEFyZ3VtZW50cywgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZk1hcHBlZEFyZ3Vt
ZW50cygpKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX21vZGlmaWVkQXJndW1lbnRzRGVz
Y3JpcHRvciwgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZk1vZGlmaWVkQXJndW1lbnRzRGVzY3Jp
cHRvcigpKSBcCisgICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9hbGxvY2F0b3IsIEZ1bmN0aW9u
UmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9j
YXRpb25Qcm9maWxlOjpvZmZzZXRPZkFsbG9jYXRvcigpKSBcCisgICAgbWFjcm8oRnVuY3Rpb25S
YXJlRGF0YV9zdHJ1Y3R1cmUsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZlN0cnVjdHVy
ZSgpKSBcCiAgICAgbWFjcm8oR2V0dGVyU2V0dGVyX2dldHRlciwgR2V0dGVyU2V0dGVyOjpvZmZz
ZXRPZkdldHRlcigpKSBcCiAgICAgbWFjcm8oR2V0dGVyU2V0dGVyX3NldHRlciwgR2V0dGVyU2V0
dGVyOjpvZmZzZXRPZlNldHRlcigpKSBcCiAgICAgbWFjcm8oSlNBcnJheUJ1ZmZlclZpZXdfbGVu
Z3RoLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkgXApAQCAtMTEyLDEwICsx
MTQsMTAgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3JvKFN0cmlu
Z0ltcGxfbGVuZ3RoLCBTdHJpbmdJbXBsOjpsZW5ndGhNZW1vcnlPZmZzZXQoKSkgXAogICAgIG1h
Y3JvKFN0cnVjdHVyZV9jbGFzc0luZm8sIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpIFwK
ICAgICBtYWNybyhTdHJ1Y3R1cmVfZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVj
dE9mZnNldCgpKSBcCisgICAgbWFjcm8oU3RydWN0dXJlX2luZGV4aW5nTW9kZUluY2x1ZGluZ0hp
c3RvcnksIFN0cnVjdHVyZTo6aW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeU9mZnNldCgpKSBc
CisgICAgbWFjcm8oU3RydWN0dXJlX2lubGluZUNhcGFjaXR5LCBTdHJ1Y3R1cmU6OmlubGluZUNh
cGFjaXR5T2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfcHJvdG90eXBlLCBTdHJ1Y3R1
cmU6OnByb3RvdHlwZU9mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlX3N0cnVjdHVyZUlE
LCBTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KCkpIFwKLSAgICBtYWNybyhTdHJ1Y3R1cmVf
aW5saW5lQ2FwYWNpdHksIFN0cnVjdHVyZTo6aW5saW5lQ2FwYWNpdHlPZmZzZXQoKSkgXAotICAg
IG1hY3JvKFN0cnVjdHVyZV9pbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5LCBTdHJ1Y3R1cmU6
OmluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnlPZmZzZXQoKSkgXAogICAgIG1hY3JvKEhhc2hN
YXBJbXBsX2NhcGFjaXR5LCBIYXNoTWFwSW1wbDxIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXRE
YXRhS2V5Pj46Om9mZnNldE9mQ2FwYWNpdHkoKSkgXAogICAgIG1hY3JvKEhhc2hNYXBJbXBsX2J1
ZmZlciwgIEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+Pjo6
b2Zmc2V0T2ZCdWZmZXIoKSkgXAogICAgIG1hY3JvKEhhc2hNYXBJbXBsX2hlYWQsICBIYXNoTWFw
SW1wbDxIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46Om9mZnNldE9mSGVhZCgp
KSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1MSw2ICszNTEsMTAgQEAgaW5saW5l
IENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgUHV0QnlWYWxEaXJl
Y3Q6CiAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgIGNhc2UgTWF0Y2hTdHJ1Y3R1cmU6
CisgICAgY2FzZSBDcmVhdGVUaGlzOgorICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6Cisg
ICAgY2FzZSBGaWx0ZXJHZXRCeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1
czoKICAgICAgICAgLy8gVGhlc2UgYXJlIE9LLgogICAgICAgICBicmVhazsKIApAQCAtMzYyLDcg
KzM2Niw2IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICAg
ICAgYnJlYWs7CiAKICAgICBjYXNlIElkZW50aXR5V2l0aFByb2ZpbGU6Ci0gICAgY2FzZSBDcmVh
dGVUaGlzOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJV
cEFuZE9TUkVudGVyOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIz
MjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODQ3LDYgKzg0Nyw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2Ug
TmV3QXJyYXlXaXRoU3ByZWFkOgogICAgICAgICAgICAgY29tcGlsZU5ld0FycmF5V2l0aFNwcmVh
ZCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ3JlYXRlVGhpczoKKyAgICAg
ICAgICAgIGNvbXBpbGVDcmVhdGVUaGlzKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBTcHJlYWQ6CiAgICAgICAgICAgICBjb21waWxlU3ByZWFkKCk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTEzMTIsNiArMTMxNSw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQm90dG9t
VmFsdWU6CiAgICAgICAgIGNhc2UgS2lsbFN0YWNrOgogICAgICAgICBjYXNlIEluaXRpYWxpemVF
bnRyeXBvaW50QXJndW1lbnRzOgorICAgICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgor
ICAgICAgICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVyUHV0
QnlJZFN0YXR1czoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIlVucmVjb2duaXplZCBub2RlIGluIEZU
TCBiYWNrZW5kIik7CkBAIC01NjYyLDYgKzU2NjgsNDAgQEAgcHJpdmF0ZToKIAogICAgICAgICBz
ZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgfQorICAgIAorICAgIHZvaWQgY29tcGlsZUNyZWF0ZVRo
aXMoKQorICAgIHsKKyAgICAgICAgTFZhbHVlIGNhbGxlZSA9IGxvd0NlbGwobV9ub2RlLT5jaGls
ZDEoKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNGdW5jdGlvbkJsb2NrID0gbV9vdXQubmV3
QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgaGFzUmFyZURhdGEgPSBtX291dC5uZXdCbG9j
aygpOworICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7Cisg
ICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAg
ICAgICAgbV9vdXQuYnJhbmNoKGlzRnVuY3Rpb24oY2FsbGVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+
Y2hpbGQxKCkpKSwgdXN1YWxseShpc0Z1bmN0aW9uQmxvY2spLCByYXJlbHkoc2xvd1BhdGgpKTsK
KworICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzRnVuY3Rp
b25CbG9jaywgaGFzUmFyZURhdGEpOworICAgICAgICBMVmFsdWUgcmFyZURhdGEgPSBtX291dC5s
b2FkUHRyKGNhbGxlZSwgbV9oZWFwcy5KU0Z1bmN0aW9uX3JhcmVEYXRhKTsKKyAgICAgICAgbV9v
dXQuYnJhbmNoKG1fb3V0LmlzWmVybzY0KHJhcmVEYXRhKSwgcmFyZWx5KHNsb3dQYXRoKSwgdXN1
YWxseShoYXNSYXJlRGF0YSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGhhc1JhcmVEYXRh
LCBzbG93UGF0aCk7CisgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBtX291dC5sb2FkUHRyKHJh
cmVEYXRhLCBtX2hlYXBzLkZ1bmN0aW9uUmFyZURhdGFfYWxsb2NhdG9yKTsKKyAgICAgICAgTFZh
bHVlIHN0cnVjdHVyZSA9IG1fb3V0LmxvYWRQdHIocmFyZURhdGEsIG1faGVhcHMuRnVuY3Rpb25S
YXJlRGF0YV9zdHJ1Y3R1cmUpOworICAgICAgICBMVmFsdWUgYnV0dGVyZmx5ID0gbV9vdXQuY29u
c3RJbnRQdHIoMCk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5h
bmNob3IoYWxsb2NhdGVPYmplY3QoYWxsb2NhdG9yLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSwgc2xv
d1BhdGgpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1f
b3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24pOworICAgICAgICBWYWx1ZUZyb21C
bG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbCgKKyAgICAgICAgICAgIEludDY0
LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uQ3JlYXRlVGhpcyksIG1fY2FsbEZyYW1lLCBjYWxs
ZWUsIG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT5pbmxpbmVDYXBhY2l0eSgpKSkpOworICAgICAg
ICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29u
dGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5waGko
SW50NjQsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpOworCisgICAgICAgIG11dGF0b3JGZW5jZSgp
OworICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CisgICAgfQogCiAgICAgdm9pZCBjb21waWxl
U3ByZWFkKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3Jw
aGljQ2FsbFN0dWJSb3V0aW5lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcAkocmV2aXNpb24gMjMyMjI3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDEwICs5NiwyMiBAQCBDYWxsVmFyaWFudExpc3QgUG9s
eW1vcnBoaWNDYWxsU3R1YlJvdXRpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorYm9vbCBQb2x5
bW9ycGhpY0NhbGxTdHViUm91dGluZTo6aGFzRWRnZXMoKSBjb25zdAoreworICAgIC8vIFRoZSBG
VEwgZG9lcyBub3QgY291bnQgZWRnZXMgaW4gaXRzIHBvbHkgY2FsbCBzdHViIHJvdXRpbmVzLiBJ
ZiB0aGUgRlRMIHdlbnQgcG9seSBjYWxsLCB0aGVuCisgICAgLy8gaXQncyBub3QgbWVhbmluZ2Z1
bCB0byBrZWVwIHByb2ZpbGluZyAtIHdlIGNhbiBqdXN0IGxlYXZlIGl0IGF0IHRoYXQuIFJlbWVt
YmVyLCB0aGUgRlRMIHdvdWxkCisgICAgLy8gaGF2ZSBoYWQgZnVsbCBlZGdlIHByb2ZpbGluZyBm
cm9tIHRoZSBERkcsIGFuZCBiYXNlZCBvbiB0aGlzIGluZm9ybWF0aW9uLCBpdCB3b3VsZCBoYXZl
CisgICAgLy8gZGVjaWRlZCB0byBnbyBwb2x5LgorICAgIC8vCisgICAgLy8gVGhlcmUgcHJvYmFi
bHkgYXJlIHZlcnktZGlmZmljdWx0LXRvLWltYWdpbmUgY29ybmVyIGNhc2VzIHdoZXJlIHRoZSBG
VEwgbm90IGRvaW5nIGVkZ2UKKyAgICAvLyBwcm9maWxpbmcgaXMgYmFkIGZvciBwb2x5dmFyaWFu
dCBpbmxpbmluZy4gQnV0IHBvbHl2YXJpYW50IGlubGluaW5nIGlzIHByb2ZpdGFibGUgc29tZXRp
bWVzCisgICAgLy8gd2hpbGUgbm90IGhhdmluZyB0byBpbmNyZW1lbnQgY291bnRzIGlzIHByb2Zp
dGFibGUgYWx3YXlzLiBTbywgd2UgbGV0IHRoZSBGVEwgcnVuIGZhc3RlciBhbmQKKyAgICAvLyBu
b3Qga2VlcCBjb3VudHMuCisgICAgcmV0dXJuICEhbV9mYXN0Q291bnRzOworfQorCiBDYWxsRWRn
ZUxpc3QgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6OmVkZ2VzKCkgY29uc3QKIHsKLSAgICAv
LyBXZSB3b3VsZG4ndCBoYXZlIHRoZXNlIGlmIHRoaXMgd2FzIGFuIEZUTCBzdHViIHJvdXRpbmUu
IFdlIHNob3VsZG4ndCBiZSBhc2tpbmcgZm9yIHByb2ZpbGluZwotICAgIC8vIGZyb20gdGhlIEZU
TC4KICAgICBSRUxFQVNFX0FTU0VSVChtX2Zhc3RDb3VudHMpOwogICAgIAogICAgIENhbGxFZGdl
TGlzdCByZXN1bHQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGlj
Q2FsbFN0dWJSb3V0aW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmgJKHdvcmtp
bmcgY29weSkKQEAgLTkwLDYgKzkwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflBvbHltb3Jw
aGljQ2FsbFN0dWJSb3V0aW5lKCk7CiAgICAgCiAgICAgQ2FsbFZhcmlhbnRMaXN0IHZhcmlhbnRz
KCkgY29uc3Q7CisgICAgYm9vbCBoYXNFZGdlcygpIGNvbnN0OwogICAgIENhbGxFZGdlTGlzdCBl
ZGdlcygpIGNvbnN0OwogCiAgICAgdm9pZCBjbGVhckNhbGxOb2Rlc0ZvcihDYWxsTGlua0luZm8q
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVjb2Rl
U2VxdWVuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9Qcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTItMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTQ5LDEyICs0OSwxMiBAQCBCeXRlY29kZVNlcXVlbmNlOjpCeXRl
Y29kZVNlcXVlbmNlKENvZGVCCiAgICAgICAgIG1faGVhZGVyLmFwcGVuZChvdXQudG9DU3RyaW5n
KCkpOwogICAgIH0KICAgICAKLSAgICBTdHViSW5mb01hcCBzdHViSW5mb3M7Ci0gICAgY29kZUJs
b2NrLT5nZXRTdHViSW5mb01hcChzdHViSW5mb3MpOworICAgIElDU3RhdHVzTWFwIHN0YXR1c01h
cDsKKyAgICBjb2RlQmxvY2stPmdldElDU3RhdHVzTWFwKHN0YXR1c01hcCk7CiAgICAgCiAgICAg
Zm9yICh1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gMDsgYnl0ZWNvZGVJbmRleCA8IGNvZGVCbG9j
ay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOykgewogICAgICAgICBvdXQucmVzZXQoKTsKLSAgICAg
ICAgY29kZUJsb2NrLT5kdW1wQnl0ZWNvZGUob3V0LCBieXRlY29kZUluZGV4LCBzdHViSW5mb3Mp
OworICAgICAgICBjb2RlQmxvY2stPmR1bXBCeXRlY29kZShvdXQsIGJ5dGVjb2RlSW5kZXgsIHN0
YXR1c01hcCk7CiAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gSW50ZXJwcmV0ZXI6OmdldE9w
Y29kZUlEKGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVJbmRleF0udS5vcGNvZGUp
OwogICAgICAgICBtX3NlcXVlbmNlLmFwcGVuZChCeXRlY29kZShieXRlY29kZUluZGV4LCBvcGNv
ZGVJRCwgb3V0LnRvQ1N0cmluZygpKSk7CiAgICAgICAgIGJ5dGVjb2RlSW5kZXggKz0gb3Bjb2Rl
TGVuZ3RoKG9wY29kZUlEKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjc1LDYgKzI3NSw3IEBAIGNvbnN0ZXhwciBi
b29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW4KICAgICB2KHVuc2lnbmVkLCBtYXhBY2Nlc3NW
YXJpYW50TGlzdFNpemUsIDgsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwgdXNlUG9s
eXZhcmlhbnREZXZpcnR1YWxpemF0aW9uLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2
KGJvb2wsIHVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcsIHRydWUsIE5vcm1hbCwgbnVsbHB0
cikgXAorICAgIHYodW5zaWduZWQsIG1heFBvbHltb3JwaGljQWNjZXNzSW5saW5pbmdMaXN0U2l6
ZSwgOCwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihib29sLCB1c2VQb2x5bW9ycGhpY0NhbGxJ
bmxpbmluZywgdHJ1ZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihib29sLCB1c2VQb2x5bW9y
cGhpY0NhbGxJbmxpbmluZ0Zvck5vblN0dWJTdGF0dXMsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIp
IFwKICAgICB2KHVuc2lnbmVkLCBtYXhQb2x5bW9ycGhpY0NhbGxWYXJpYW50TGlzdFNpemUsIDE1
LCBOb3JtYWwsIG51bGxwdHIpIFwKQEAgLTMyMiw5ICszMjMsNiBAQCBjb25zdGV4cHIgYm9vbCBl
bmFibGVXZWJBc3NlbWJseVN0cmVhbWluCiAgICAgXAogICAgIHYodW5zaWduZWQsIG1heGltdW1W
YXJhcmdzRm9ySW5saW5pbmcsIDEwMCwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgXAotICAgIHYo
Ym9vbCwgdXNlUG9seXZhcmlhbnRDYWxsSW5saW5pbmcsIHRydWUsIE5vcm1hbCwgbnVsbHB0cikg
XAotICAgIHYoYm9vbCwgdXNlUG9seXZhcmlhbnRCeUlkSW5saW5pbmcsIHRydWUsIE5vcm1hbCwg
bnVsbHB0cikgXAotICAgIFwKICAgICB2KGJvb2wsIHVzZU1heGltYWxGbHVzaEluc2VydGlvblBo
YXNlLCBmYWxzZSwgTm9ybWFsLCAiU2V0dGluZyB0byB0cnVlIGFsbG93cyB0aGUgREZHJ3MgTWF4
aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UgdG8gcnVuLiIpIFwKICAgICBcCiAgICAgdih1bnNpZ25l
ZCwgbWF4aW11bUJpbmFyeVN0cmluZ1N3aXRjaENhc2VMZW5ndGgsIDUwLCBOb3JtYWwsIG51bGxw
dHIpIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341848</attachid>
            <date>2018-06-02 11:35:22 -0700</date>
            <delta_ts>2018-06-02 12:45:13 -0700</delta_ts>
            <desc>it works!</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>182917</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4NiBA
QAorMjAxOC0wNi0wMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IFdlIHNob3VsZCBzdXBwb3J0IENyZWF0ZVRoaXMgaW4gdGhlIEZUTAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0OTA0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBUaGlzIHN0YXJ0ZWQgd2l0
aCBTYWFtJ3MgcGF0Y2ggdG8gaW1wbGVtZW50IENyZWF0ZVRoaXMgaW4gdGhlIEZUTCwgYnV0IHR1
cm5lZCBpbnRvIGEgdHlwZQorICAgICAgICBpbmZlcmVuY2UgYWR2ZW50dXJlLgorICAgICAgICAK
KyAgICAgICAgQ3JlYXRlVGhpcyBpbiB0aGUgRlRMIHdhcyBhIG1hc3NpdmUgcmVncmVzc2lvbiBp
biByYXl0cmFjZSBiZWNhdXNlIGl0IGRpc3R1cmJlZCB0aGF0CisgICAgICAgIGJlbmNobWFyaydz
IGV4dHJlbWVseSBwZXJ2ZXJzZSB3YXkgb2Ygd2lubmluZyBhdCB0eXBlIGluZmVyZW5jZToKKyAg
ICAgICAgCisgICAgICAgIC0gVGhlIGJlbmNobWFyayB3YW50ZWQgcG9seXZhcmlhbnQgZGV2aXJ0
dWFsaXphdGlvbiBvZiBhbiBvYmplY3QgY29uc3RydWN0aW9uIGhlbHBlci4gQnV0LAorICAgICAg
ICAgIHRoZSBwb2x5dmFyaWFudCBwcm9maWxlciB3YXNuJ3QgcG93ZXJmdWwgZW5vdWdoIHRvIHJl
bGlhYmx5IGRldmlydHVhbGl6ZSB0aGF0IGNvZGUuIFNvLCB0aGUKKyAgICAgICAgICBiZW5jaG1h
cmsgd2FzIGZhbGxpbmcgYmFjayB0byBvdGhlciBtZWNoYW5pc21zLi4uCisgICAgICAgIAorICAg
ICAgICAtIFRoZSBjb25zdHJ1Y3Rpb24gaGVscGVyIGNvdWxkIG5vdCB0aWVyIHVwIGludG8gdGhl
IEZUTC4gV2hlbiB0aGUgREZHIGNvbXBpbGVkIGl0LCBpdCB3b3VsZAorICAgICAgICAgIHNlZSB0
aGF0IHRoZSBJQyBoYWQgNCBjYXNlcy4gVGhhdCdzIHRvbyBwb2x5bW9ycGhpYyBmb3IgdGhlIERG
Ry4gU28sIHRoZSBERkcgd291bGQgZW1pdCBhCisgICAgICAgICAgR2V0QnlJZC4gU2hvcnRseSBh
ZnRlciB0aGUgREZHIGNvbXBpbGUsIHRoYXQgZ2V0X2J5X2lkIHdvdWxkIHNlZSBtYW55IG1vcmUg
Y2FzZXMsIGJ1dCBub3cKKyAgICAgICAgICB0aGF0IHRoZSBoZWxwZXIgd2FzIGNvbXBpbGVkIGJ5
IHRoZSBERkcsIHRoZSBiYXNlbGluZSBnZXRfYnlfaWQgd291bGQgbm90IHNlZSB0aG9zZSBjYXNl
cy4KKyAgICAgICAgICBUaGUgREZHJ3MgR2V0QnlJZCB3b3VsZCAiaGlkZSIgdGhvc2UgY2FzZXMu
IFRoZSBudW1iZXIgb2YgY2FzZXMgdGhlIERGRydzIEdldEJ5SWQgd291bGQgc2VlCisgICAgICAg
ICAgaXMgbGFyZ2VyIHRoYW4gb3VyIHBvbHltb3JwaGljIGxpc3QgbGltaXQgKGxpbWl0ID0gOCwg
Y2FzZSBjb3VudCA9IDEzLCBJIHRoaW5rKS4KKyAgICAgICAgICAKKyAgICAgICAgICBOb3RlIHRo
YXQgaWYgdGhlIEZUTCBjb21waWxlcyB0aGF0IGNvbnN0cnVjdGlvbiBoZWxwZXIsIGl0IHNlZXMg
dGhlIDQgY2FzZXMsIHR1cm5zIHRoZW0KKyAgICAgICAgICBpbnRvIGEgTXVsdGlHZXRCeU9mZnNl
dCwgdGhlbiBzdWZmZXJzIGZyb20gZXhpdHMgd2hlbiB0aGUgbmV3IGNhc2VzIGhpdCwgYW5kIHRo
ZW4gZXhpdHMgdG8KKyAgICAgICAgICBiYXNlbGluZSwgd2hpY2ggdGhlbiBzZWVzIHRob3NlIGNh
c2VzLiBMdWNraWx5LCB0aGUgRlRMIHdhcyBub3QgY29tcGlsaW5nIHRoZSBjb25zdHJ1Y3Rpb24K
KyAgICAgICAgICBoZWxwZXIgYmVjYXVzZSBpdCBoYWQgYSBDcmVhdGVUaGlzLgorICAgICAgICAK
KyAgICAgICAgLSBDb21waWxhdGlvbnMgdGhhdCBpbmxpbmVkIHRoZSBjb25zdHJ1Y3Rpb24gaGVs
cGVyIHdvdWxkIGhhdmUgZ290dGVuIHN1cGVyIGx1Y2t5IHdpdGgKKyAgICAgICAgICBwYXJzZS10
aW1lIGNvbnN0YW50IGZvbGRpbmcsIHNvIHRoZXkga25ldyB3aGF0IHN0cnVjdHVyZSB0aGUgaW5w
dXQgdG8gdGhlIGdldF9ieV9pZCB3b3VsZAorICAgICAgICAgIGhhdmUgYXQgcGFyc2UgdGltZS4g
VGhpcyBpcyBvbmx5IHByb2ZpdGFibGUgaWYgdGhlIGdldF9ieV9pZCBwYXJzaW5nIGNvbXB1dGVk
IGEKKyAgICAgICAgICBHZXRCeUlkU3RhdHVzIHRoYXQgaGFkIGEgZmluaXRlIG51bWJlciBvZiBj
YXNlcy4gQmVjYXVzZSB0aGUgMTMgY2FzZXMgd2VyZSBiZWluZyBoaWRkZW4gYnkKKyAgICAgICAg
ICB0aGUgREZHIEdldEJ5SWQgYW5kIEdldEJ5SWRTdGF0dXMgd291bGQgb25seSBsb29rIGF0IHRo
ZSBiYXNlbGluZSBnZXRfYnlfaWQsIHdoaWNoIGhhZCA0CisgICAgICAgICAgY2FzZXMsIHdlIHdv
dWxkIGluZGVlZCBnZXQgYSBmaW5pdGUgbnVtYmVyIG9mIGNhc2VzLiBUaGUgcGFyc2VyIHdvdWxk
IHRoZW4gcHJ1bmUgdGhvc2UKKyAgICAgICAgICBjYXNlcyB0byBqdXN0IG9uZSAtIGJhc2VkIG9u
IGl0cyBrbm93bGVkZ2Ugb2YgdGhlIHN0cnVjdHVyZSAtIGFuZCB0aGF0IHdvdWxkIHJlc3VsdCBp
biB0aGF0CisgICAgICAgICAgZ2V0X2J5X2lkIGJlaW5nIGZvbGRlZCBhdCBwYXJzZSB0aW1lIHRv
IGEgY29uc3RhbnQuCisgICAgICAgIAorICAgICAgICAtIFRoZSBzdWJzZXF1ZW50IG9wX2NhbGwg
d291bGQgaW5saW5lIGJhc2VkIG9uIHBhcnNlLXRpbWUga25vd2xlZGdlIG9mIHRoYXQgY29uc3Rh
bnQuCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGNvbXByZWhlbnNpdmVseSBmaXhlcyB0
aGVzZSBpc3N1ZXMsIGFzIHdlbGwgYXMgb3RoZXIgaXNzdWVzIHRoYXQgY29tZSB1cCBhbG9uZyB0
aGUKKyAgICAgICAgd2F5OgorICAgICAgICAKKyAgICAgICAgLSBQb2x5dmFyaWFudCBwcm9maWxp
bmcgbm93IGNvbnN1bHRzIGV2ZXJ5IERGRyBvciBGVEwgY29kZSBibG9jayB0aGF0IHBhcnRpY2lw
YXRlZCBpbiBhbnkKKyAgICAgICAgICBzdWJzZXQgb2YgdGhlIGlubGluZSBzdGFjayB0aGF0IGlu
Y2x1ZGVzIHRoZSBJQyB3ZSdyZSBwcm9maWxpbmcuIEZvciBleGFtcGxlLCBpZiB3ZSBoYXZlCisg
ICAgICAgICAgYW4gaW5saW5lIHN0YWNrIGxpa2UgZm9vLT5iYXItPmJheiwgd2l0aCBiYXogb24g
dG9wLCB0aGVuIHdlIHdpbGwgY29uc3VsdCBERkcgb3IgRlRMCisgICAgICAgICAgY29tcGlsYXRp
b25zIGZvciBmb28sIGJhciwgYW5kIGJhei4gSW4gZm9vLCB3ZSdsbCBsb29rIHVwIGZvby0+YmFy
LT5iYXo7IGluIGJhciB3ZSdsbCBsb29rCisgICAgICAgICAgdXAgYmFyLT5iYXo7IGV0Yy4gVGhp
cyBmaXhlcyB0d28gcHJvYmxlbXMgZW5jb3VudGVyZWQgaW4gcmF5dHJhY2UuIEZpcnN0LCBpdCBl
bnN1cmVzIHRoYXQKKyAgICAgICAgICBhIERGRyBHZXRCeUlkIGNhbm5vdCBoaWRlIGFueXRoaW5n
IGZyb20gdGhlIHByb2ZpbGluZyBvZiB0aGF0IGdldF9ieV9pZCwgc2luY2UgdGhlCisgICAgICAg
ICAgcG9seXZhcmlhbnQgcHJvZmlsaW5nIGNvZGUgd2lsbCBhbHdheXMgY29uc3VsdCBpdC4gU2Vj
b25kLCBpdCBlbmFibGVzIHJheXRyYWNlIHRvIGJlbmVmaXQKKyAgICAgICAgICBmcm9tIHBvbHl2
YXJpYW50IHByb2ZsaW5nLiBQcmV2aW91c2x5LCB0aGUgcG9seXZhcmlhbnQgcHJvZmlsZXIgd291
bGQgb25seSBsb29rIGF0IHRoZQorICAgICAgICAgIHByZXZpb3VzIERGRyBjb21waWxhdGlvbiBv
ZiBmb28gYW5kIGxvb2sgdXAgZm9vLT5iYXItPmJhei4gQnV0IHRoYXQgb25seSB3b3JrcyBpZiBE
RkctZm9vCisgICAgICAgICAgaGFkIGlubGluZWQgYmFyIGFuZCB0aGVuIGJhei4gSXQgbWF5IG5v
dCBoYXZlIGRvbmUgdGhhdCwgYmVjYXVzZSB0aG9zZSBjYWxscyBjb3VsZCBoYXZlCisgICAgICAg
ICAgcmVxdWlyZWQgcG9seXZhcmlhbnQgcHJvZmlsaW5nIHRoYXQgd2FzIG9ubHkgYXZhaWxhYmxl
IGluIHRoZSBGVEwuCisgICAgICAgIAorICAgICAgICAtIElubGluaW5nIGFuIGlubGluZSBjYWNo
ZSBub3cgcHJlc2VydmVzIGFzIG11Y2ggaW5mb3JtYXRpb24gYXMgcHJvZmlsaW5nLiBPbmUgY2hh
bGxlbmdlIG9mCisgICAgICAgICAgcG9seXZhcmlhbnQgcHJvZmlsaW5nIGlzIHRoYXQgdGhlIEZU
TCBjb21waWxlIGZvciBiYXIgKHRoYXQgaW5jbHVkZXMgYmFyLT5iYXopIGNvdWxkIGhhdmUKKyAg
ICAgICAgICBpbmxpbmVkIGFuIGlubGluZSBjYWNoZSBiYXNlZCBvbiBwb2x5dmFyaWFudCBwcm9m
aWxpbmcuIFNvLCB3aGVuIHRoZSBGVEwgY29tcGlsZSBmb3IgZm9vCisgICAgICAgICAgKHRoYXQg
aW5jbHVkZXMgZm9vLT5iYXItPmJheikgYXNrcyBiYXIgd2hhdCBpdCBrbm93cyBhYm91dCB0aGF0
IElDIGluc2lkZSBiYXItPmJheiwgaXQgd2lsbAorICAgICAgICAgIHNheSAiSSBkb24ndCBoYXZl
IHN1Y2ggYW4gSUMiLiBBdCB0aGlzIHBvaW50IHRoZSBERkcgY29tcGlsYXRpb24gdGhhdCBpbmNs
dWRlZCB0aGF0IElDIHRoYXQKKyAgICAgICAgICBnYXZlIHVzIHRoZSBpbmZvcm1hdGlvbiB0aGF0
IHdlIHVzZWQgdG8gaW5saW5lIHRoZSBJQyBpcyBubyBsb25nZXIgYWxpdmUuIFRvIGtlZXAgdXMg
ZnJvbQorICAgICAgICAgIGxvc2luZyB0aGUgaW5mb3JtYXRpb24gd2UgbGVhcm5lZCBhYm91dCB0
aGUgSUMsIHRoZXJlIGlzIG5vdyBhIFJlY29yZGVkU3RhdHVzZXMgZGF0YQorICAgICAgICAgIHN0
cnVjdHVyZSB0aGF0IHByZXNlcnZlcyB0aGUgc3RhdHVzZXMgd2UgdXNlIGZvciBpbmxpbmluZyBJ
Q3MuIFdlIGFsc28gZmlsdGVyIHRob3NlCisgICAgICAgICAgc3RhdHVzZXMgYWNjb3JkaW5nIHRv
IHRoaW5ncyB3ZSBsZWFybiBmcm9tIEFJLiBUaGlzIGZ1cnRoZXIgcmVkdWNlcyB0aGUgcmlzayBv
ZiBpbmZvcm1hdGlvbgorICAgICAgICAgIGFib3V0IGFuIElDIGJlaW5nIGZvcmdvdHRlbi4KKyAg
ICAgICAgCisgICAgICAgIC0gRXhpdCBwcm9maWxpbmcgbm93IGNvbnNpZGVycyB3aGV0aGVyIG9y
IG5vdCBhbiBleGl0IGhhcHBlbmVkIGZyb20gaW5saW5lIGNvZGUuIFRoaXMKKyAgICAgICAgICBw
cm90ZWN0cyB1cyBpbiB0aGUgY2FzZSB3aGVyZSB0aGUgbm90LWlubGluZWQgdmVyc2lvbiBvZiBh
biBJQyBleGl0ZWQgYSBsb3QgYmVjYXVzZSBvZgorICAgICAgICAgIHBvbHltb3JwaGlzbSB0aGF0
IGRvZXNuJ3QgZXhpc3QgaW4gdGhlIGlubGluZWQgdmVyc2lvbi4gU28sIHdoZW4gdXNpbmcgcG9s
eXZhcmlhbnQKKyAgICAgICAgICBwcm9maWxpbmcgZGF0YSwgd2UgY29uc2lkZXIgb25seSBpbmxp
bmVkIGV4aXRzLgorICAgICAgICAKKyAgICAgICAgQWx0b2dldGhlciB0aGlzIHBhdGNoIGlzIHBl
cmZvcm1hbmNlLW5ldXRyYWwgaW4gcnVuLWpzYy1iZW5jaG1hcmtzLCBleGNlcHQgZm9yIHNwZWVk
LXVwcyBpbgorICAgICAgICBtaWNyb2JlbmNobWFya3MuIE9jdGFuZS9ib3llciBzcGVlZHMgdXAg
YnkgNC43JSwgYnV0IEknbSBub3Qgc3VyZSBpZiB0aGF0J3MgcmVhbC4KKworICAgICAgICAqIENN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogYnl0ZWNvZGUvQnlW
YWxJbmZvLmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50R2V0QnlJZENhY2hlU3RhdHVzKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludFB1dEJ5SWRDYWNoZVN0
YXR1cyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRJbkJ5SWRD
YWNoZVN0YXR1cyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcENh
bGxMaW5rU3RhdHVzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVEdW1wZXI8Q29kZUJsb2NrPjo6
ZHVtcENhbGxMaW5rU3RhdHVzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+
OjpwcmludENhbGxPcCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVt
cEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQmxv
Y2spOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVyLmg6CisgICAgICAgICogYnl0
ZWNvZGUvQ2FsbExpbmtJbmZvLmg6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMu
Y3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAg
IChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKToKKyAgICAgICAgKEpT
Qzo6Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tQ2FsbExpbmtJbmZvKToKKyAgICAgICAgKEpT
Qzo6Q2FsbExpbmtTdGF0dXM6OmFjY291bnRGb3JFeGl0cyk6CisgICAgICAgIChKU0M6OkNhbGxM
aW5rU3RhdHVzOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpmaWx0
ZXIpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZURGR1N0YXR1c2VzKTog
RGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oOgorICAgICAgICAo
SlNDOjpDYWxsTGlua1N0YXR1czo6b3BlcmF0b3IgYm9vbCBjb25zdCk6CisgICAgICAgIChKU0M6
OkNhbGxMaW5rU3RhdHVzOjpvcGVyYXRvciEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGJ5
dGVjb2RlL0NhbGxWYXJpYW50LmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6OmZpbmFs
aXplKToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6OmZpbHRlcik6CisgICAgICAgICogYnl0
ZWNvZGUvQ2FsbFZhcmlhbnQuaDoKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6Om9wZXJhdG9y
IGJvb2wgY29uc3QpOgorICAgICAgICAoSlNDOjpDYWxsVmFyaWFudDo6b3BlcmF0b3IhIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
cHJvcGFnYXRlVHJhbnNpdGlvbnMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXpl
VW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpnZXRJQ1N0YXR1c01h
cCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cmVzZXRKSVREYXRhKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpnZXRTdHViSW5mb01hcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6Z2V0Q2FsbExpbmtJbmZvTWFwKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpnZXRCeVZhbEluZm9NYXApOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0Nv
ZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVPcmlnaW4uY3BwOgorICAgICAgICAo
SlNDOjpDb2RlT3JpZ2luOjppc0FwcHJveGltYXRlbHlFcXVhbFRvIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6Q29kZU9yaWdpbjo6YXBwcm94aW1hdGVIYXNoIGNvbnN0KToKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlT3JpZ2luLmg6CisgICAgICAgIChKU0M6OkNvZGVPcmlnaW46OmV4aXRpbmdJbmxp
bmVLaW5kIGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6RnJlcXVlbnRFeGl0U2l0ZTo6ZHVtcCBjb25zdCk6CisgICAgICAg
IChKU0M6OkRGRzo6RXhpdFByb2ZpbGU6OmFkZCk6CisgICAgICAgICogYnl0ZWNvZGUvREZHRXhp
dFByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpGcmVxdWVudEV4aXRTaXRlOjpGcmVxdWVu
dEV4aXRTaXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpGcmVxdWVudEV4aXRTaXRlOjpvcGVyYXRv
cj09IGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpGcmVxdWVudEV4aXRTaXRlOjpzdWJzdW1l
cyBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6RnJlcXVlbnRFeGl0U2l0ZTo6aGFzaCBjb25z
dCk6CisgICAgICAgIChKU0M6OkRGRzo6RnJlcXVlbnRFeGl0U2l0ZTo6aW5saW5lS2luZCBjb25z
dCk6CisgICAgICAgIChKU0M6OkRGRzo6RnJlcXVlbnRFeGl0U2l0ZTo6d2l0aElubGluZUtpbmQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OlF1ZXJ5YWJsZUV4aXRQcm9maWxlOjpoYXNFeGl0
U2l0ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6UXVlcnlhYmxlRXhpdFByb2ZpbGU6Omhh
c0V4aXRTaXRlV2l0aFNwZWNpZmljSklUVHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6
UXVlcnlhYmxlRXhpdFByb2ZpbGU6Omhhc0V4aXRTaXRlV2l0aFNwZWNpZmljSW5saW5lS2luZCBj
b25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvRXhpdEZsYWcuY3BwOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6RXhpdEZsYWc6OmR1bXAgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4aXRGbGFn
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpFeGl0RmxhZzo6RXhpdEZsYWcpOgorICAgICAgICAo
SlNDOjpFeGl0RmxhZzo6b3BlcmF0b3J8IGNvbnN0KToKKyAgICAgICAgKEpTQzo6RXhpdEZsYWc6
Om9wZXJhdG9yfD0pOgorICAgICAgICAoSlNDOjpFeGl0RmxhZzo6b3BlcmF0b3ImIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6RXhpdEZsYWc6Om9wZXJhdG9yJj0pOgorICAgICAgICAoSlNDOjpFeGl0
RmxhZzo6b3BlcmF0b3IgYm9vbCBjb25zdCk6CisgICAgICAgIChKU0M6OkV4aXRGbGFnOjppc1Nl
dCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvRXhp
dGluZ0lubGluZUtpbmQuaDogQWRkZWQuCisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFN0YXR1
cy5jcHA6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAg
ICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm8pOgorICAgICAgICAoSlND
OjpHZXRCeUlkU3RhdHVzOjpzbG93VmVyc2lvbiBjb25zdCk6CisgICAgICAgIChKU0M6OkdldEJ5
SWRTdGF0dXM6Om1hcmtJZkNoZWFwKToKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Zmlu
YWxpemUpOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpoYXNFeGl0U2l0ZSk6IERlbGV0
ZWQuCisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oOgorICAgICAgICAqIGJ5dGVj
b2RlL0dldEJ5SWRWYXJpYW50LmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFZhcmlhbnQ6Om1h
cmtJZkNoZWFwKToKKyAgICAgICAgKEpTQzo6R2V0QnlJZFZhcmlhbnQ6OmZpbmFsaXplKToKKyAg
ICAgICAgKiBieXRlY29kZS9HZXRCeUlkVmFyaWFudC5oOgorICAgICAgICAqIGJ5dGVjb2RlL0lD
U3RhdHVzTWFwLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OklDU3RhdHVzQ29udGV4dDo6Z2V0
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6SUNTdGF0dXNDb250ZXh0Ojppc0lubGluZWQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpJQ1N0YXR1c0NvbnRleHQ6OmlubGluZUtpbmQgY29uc3QpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0lDU3RhdHVzTWFwLmg6IEFkZGVkLgorICAgICAgICAqIGJ5dGVjb2Rl
L0lDU3RhdHVzVXRpbHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6aGFzQmFkQ2FjaGVFeGl0
U2l0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvSUNTdGF0dXNVdGlscy5oOgorICAgICAgICAqIGJ5
dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpJbnN0YW5jZU9mU3Rh
dHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0YW5jZU9mU3RhdHVzLmg6
CisgICAgICAgICogYnl0ZWNvZGUvUG9seVByb3RvQWNjZXNzQ2hhaW4uaDoKKyAgICAgICAgKiBi
eXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6
aGFzRXhpdFNpdGUpOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKToK
KyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6c2xvd1ZlcnNpb24gY29uc3QpOgorICAgICAg
ICAoSlNDOjpQdXRCeUlkU3RhdHVzOjptYXJrSWZDaGVhcCk6CisgICAgICAgIChKU0M6OlB1dEJ5
SWRTdGF0dXM6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6ZmlsdGVy
KToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNv
ZGUvUHV0QnlJZFZhcmlhbnQuY3BwOgorICAgICAgICAoSlNDOjpQdXRCeUlkVmFyaWFudDo6bWFy
a0lmQ2hlYXApOgorICAgICAgICAoSlNDOjpQdXRCeUlkVmFyaWFudDo6ZmluYWxpemUpOgorICAg
ICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRWYXJpYW50Lmg6CisgICAgICAgIChKU0M6OlB1dEJ5SWRW
YXJpYW50OjpzdHJ1Y3R1cmVTZXQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1JlY29yZGVk
U3RhdHVzZXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6b3Bl
cmF0b3I9KToKKyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6UmVjb3JkZWRTdGF0dXNl
cyk6CisgICAgICAgIChKU0M6OlJlY29yZGVkU3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKToK
KyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6YWRkR2V0QnlJZFN0YXR1cyk6CisgICAg
ICAgIChKU0M6OlJlY29yZGVkU3RhdHVzZXM6OmFkZFB1dEJ5SWRTdGF0dXMpOgorICAgICAgICAo
SlNDOjpSZWNvcmRlZFN0YXR1c2VzOjptYXJrSWZDaGVhcCk6CisgICAgICAgIChKU0M6OlJlY29y
ZGVkU3RhdHVzZXM6OmZpbmFsaXplV2l0aG91dERlbGV0aW5nKToKKyAgICAgICAgKEpTQzo6UmVj
b3JkZWRTdGF0dXNlczo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1c2Vz
OjpzaHJpbmtUb0ZpdCk6CisgICAgICAgICogYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6UmVjb3JkZWRTdGF0dXNlcyk6
CisgICAgICAgIChKU0M6OlJlY29yZGVkU3RhdHVzZXM6OmZvckVhY2hWZWN0b3IpOgorICAgICAg
ICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVNldC5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVNl
dDo6bWFya0lmQ2hlYXAgY29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTZXQ6OmlzU3Rp
bGxBbGl2ZSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU2V0Lmg6CisgICAg
ICAgICogYnl0ZWNvZGUvVGVybWluYXRlZENvZGVPcmlnaW4uaDogQWRkZWQuCisgICAgICAgIChK
U0M6OlRlcm1pbmF0ZWRDb2RlT3JpZ2luOjpUZXJtaW5hdGVkQ29kZU9yaWdpbik6CisgICAgICAg
IChKU0M6OlRlcm1pbmF0ZWRDb2RlT3JpZ2luSGFzaFRyYW5zbGF0b3I6Omhhc2gpOgorICAgICAg
ICAoSlNDOjpUZXJtaW5hdGVkQ29kZU9yaWdpbkhhc2hUcmFuc2xhdG9yOjplcXVhbCk6CisgICAg
ICAgICogYnl0ZWNvZGUvV2F0Y2hwb2ludC5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJu
YWwpOgorICAgICAgICAqIGJ5dGVjb2RlL1dhdGNocG9pbnQuaDoKKyAgICAgICAgKiBkZmcvREZH
QWJzdHJhY3RJbnRlcnByZXRlci5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmZpbHRlcklDU3RhdHVzKToKKyAg
ICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlVmFyYXJnc0NhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVET01KSVRHZXR0ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpoYW5kbGVNb2R1bGVOYW1lc3BhY2VMb2FkKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZVB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6SW5saW5l
U3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6On5JbmxpbmVTdGFja0VudHJ5KToKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2UpOgorICAgICAgICAqIGRmZy9ERkdDbG9i
YmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZn
L0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyc0V4
aXRTdGF0ZSk6CisgICAgICAgICogZGZnL0RGR0NvbW1vbkRhdGEuaDoKKyAgICAgICAgKiBkZmcv
REZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50
Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZHRGVzaXJlZFdh
dGNocG9pbnRzLmg6CisgICAgICAgIChKU0M6OkRGRzo6U2V0UG9pbnRlckFkYXB0b3I6Omhhc0Jl
ZW5JbnZhbGlkYXRlZCk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZH
R3JhcGguY3BwOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpkdW1wKToKKyAgICAgICAgKiBk
ZmcvREZHTWF5RXhpdC5jcHA6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpoYXNDYWxsTGlua1N0YXR1cyk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9k
ZTo6Y2FsbExpbmtTdGF0dXMpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dldEJ5SWRT
dGF0dXMpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmdldEJ5SWRTdGF0dXMpOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6Omhhc1B1dEJ5SWRTdGF0dXMpOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6OnB1dEJ5SWRTdGF0dXMpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAg
ICAgICAqIGRmZy9ERkdPU1JFeGl0QmFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhp
dEJhc2U6OmNvbnNpZGVyQWRkaW5nQXNGcmVxdWVudEV4aXRTaXRlU2xvdyk6CisgICAgICAgICog
ZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9E
RkdQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQbGFuOjpyZWFsbHlBZGQpOgorICAgICAg
ICAoSlNDOjpERkc6OlBsYW46OmNoZWNrTGl2ZW5lc3NBbmRWaXNpdENoaWxkcmVuKToKKyAgICAg
ICAgKEpTQzo6REZHOjpQbGFuOjpmaW5hbGl6ZUluR0MpOgorICAgICAgICAqIGRmZy9ERkdQbGFu
Lmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAg
ICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVU
b0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlTm9k
ZSk6CisgICAgICAgICogZGZnL0RGR1dvcmtsaXN0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpX
b3JrbGlzdDo6cmVtb3ZlRGVhZFBsYW5zKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMu
Y3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDcmVhdGVUaGlz
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUZpbHRlcklD
U3RhdHVzKToKKyAgICAgICAgKiBqaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwOgor
ICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZTo6aGFzRWRnZXMgY29uc3Qp
OgorICAgICAgICAoSlNDOjpQb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZTo6ZWRnZXMgY29uc3Qp
OgorICAgICAgICAqIGppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5oOgorICAgICAgICAq
IHByb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5jcHA6CisgICAgICAgIChKU0M6OlBy
b2ZpbGVyOjpCeXRlY29kZVNlcXVlbmNlOjpCeXRlY29kZVNlcXVlbmNlKToKKyAgICAgICAgKiBy
dW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvblJhcmVE
YXRhOjppbml0aWFsaXplT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUpOgorICAgICAgICAqIHJ1bnRp
bWUvT3B0aW9ucy5oOgorCiAyMDE4LTA1LTI2ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgogCiAgICAgICAgIFtKU0NdIFJlbmFtZSBBcnJheSNmbGF0dGVuIHRvIGZsYXQK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIzMjIyNykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNDQwLDYgKzQ0MCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUEKICAgICBieXRlY29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmgKICAgICBieXRlY29k
ZS9FeGVjdXRpb25Db3VudGVyLmgKICAgICBieXRlY29kZS9FeGl0S2luZC5oCisgICAgYnl0ZWNv
ZGUvRXhpdGluZ0lubGluZUtpbmQuaAogICAgIGJ5dGVjb2RlL0V4aXRpbmdKSVRUeXBlLmgKICAg
ICBieXRlY29kZS9FeHByZXNzaW9uUmFuZ2VJbmZvLmgKICAgICBieXRlY29kZS9IYW5kbGVySW5m
by5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyMzIyMjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIx
MiwxMyArMjEyLDE3IEBAIGJ5dGVjb2RlL0RpcmVjdEV2YWxDb2RlQ2FjaGUuY3BwCiBieXRlY29k
ZS9FdmFsQ29kZUJsb2NrLmNwcAogYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5j
cHAKIGJ5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIuY3BwCitieXRlY29kZS9FeGl0RmxhZy5jcHAK
IGJ5dGVjb2RlL0V4aXRLaW5kLmNwcAorYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuY3BwCiBi
eXRlY29kZS9FeGl0aW5nSklUVHlwZS5jcHAKIGJ5dGVjb2RlL0Z1bGxDb2RlT3JpZ2luLmNwcAog
Ynl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suY3BwCiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNw
cAogYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCiBieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlLmNwcAorYnl0ZWNvZGUvSUNTdGF0dXNNYXAuY3BwCitieXRlY29kZS9JQ1N0YXR1c1V0
aWxzLmNwcAogYnl0ZWNvZGUvSW5saW5lQWNjZXNzLmNwcAogYnl0ZWNvZGUvSW5saW5lQ2FsbEZy
YW1lLmNwcAogYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1lU2V0LmNwcApAQCAtMjQ1LDYgKzI0OSw3
IEBAIGJ5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2UuY3BwCiBieXRlY29kZS9QdXRCeUlkRmxh
Z3MuY3BwCiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAogYnl0ZWNvZGUvUHV0QnlJZFZhcmlh
bnQuY3BwCitieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAogYnl0ZWNvZGUvUmVkdWNlV2hp
dGVzcGFjZS5jcHAKIGJ5dGVjb2RlL1NwZWNpYWxQb2ludGVyLmNwcAogYnl0ZWNvZGUvU3BlY3Vs
YXRlZFR5cGUuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI5Nyw2ICsyOTcsMTEgQEAKIAkJ
MEY0MjZBNDkxNDYwQ0JCNzAwMTMxRjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0MjZBNDYxNDYwQ0JBQjAwMTMx
RjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGNDI2QTRCMTQ2MENENkUwMDEzMUY4RiAvKiBEYXRhRm9ybWF0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQyNkE0
QTE0NjBDRDZCMDAxMzFGOEYgLyogRGF0YUZvcm1hdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDMxNzM4MTQ2QkFDNjkwMDdFMzg5MCAvKiBM
aXN0YWJsZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ0QTdCMDIw
QkY2ODYyMDAyMkIxNzEgLyogRXhpdEZsYWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDRBN0FFMjBCRjY4NUYwMDIyQjE3MSAvKiBFeGl0RmxhZy5o
ICovOyB9OworCQkwRjQ0QTdCMTIwQkY2OEM5MDAyMkIxNzEgLyogRXhpdGluZ0lubGluZUtpbmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDRBN0E3
MjBCRjY4NUQwMDIyQjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDRBN0IyMjBCRjY4Q0UwMDIyQjE3
MSAvKiBJQ1N0YXR1c01hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0NEE3QUYyMEJGNjg1RjAwMjJCMTcxIC8qIElDU3RhdHVzTWFwLmggKi87IH07
CisJCTBGNDRBN0IzMjBCRjY4RDEwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ0QTdBQTIwQkY2ODVF
MDAyMkIxNzEgLyogUmVjb3JkZWRTdGF0dXNlcy5oICovOyB9OworCQkwRjQ0QTdCNDIwQkY2OEQ5
MDAyMkIxNzEgLyogVGVybWluYXRlZENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDRBN0E4MjBCRjY4NUUwMDIyQjE3MSAvKiBUZXJt
aW5hdGVkQ29kZU9yaWdpbi5oICovOyB9OwogCQkwRjQ1NzAzOTFCRTQ0QzkxMDA2MkE2MjkgLyog
QWlyRWxpbWluYXRlRGVhZENvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNDU3MDM3MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFk
Q29kZS5oICovOyB9OwogCQkwRjQ1NzAzRDFCRTQ1RjBBMDA2MkE2MjkgLyogQWlyUmVwb3J0VXNl
ZFJlZ2lzdGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY0NTcwM0IxQkU0NUYwQTAwNjJBNjI5IC8qIEFpclJlcG9ydFVzZWRSZWdpc3RlcnMuaCAq
LzsgfTsKIAkJMEY0NTcwNDExQkU1ODRDQTAwNjJBNjI5IC8qIEIzVGltaW5nU2NvcGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDU3MDNGMUJFNTg0
Q0EwMDYyQTYyOSAvKiBCM1RpbWluZ1Njb3BlLmggKi87IH07CkBAIC0yMjg3LDYgKzIyOTIsMTYg
QEAKIAkJMEY0MjZBNEExNDYwQ0Q2QjAwMTMxRjhGIC8qIERhdGFGb3JtYXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YUZvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjQyQjNDMDIwMUVCNTA5MDAzNTcwMzEgLyogQWxsb2NhdG9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFsbG9jYXRvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJs
ZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGlzdGFibGVIYW5k
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDRBN0E3MjBCRjY4NUQwMDIy
QjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBFeGl0aW5nSW5saW5lS2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjQ0QTdBODIwQkY2ODVFMDAyMkIxNzEgLyogVGVybWluYXRlZENvZGVPcmlnaW4uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVybWluYXRlZENvZGVPcmlnaW4uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NEE3QTkyMEJGNjg1RTAwMjJCMTcxIC8qIEV4aXRG
bGFnLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4aXRGbGFnLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcx
IC8qIFJlY29yZGVkU3RhdHVzZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVjb3JkZWRTdGF0dXNlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ0QTdB
QjIwQkY2ODVFMDAyMkIxNzEgLyogSUNTdGF0dXNNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSUNTdGF0dXNNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjQ0QTdBQzIwQkY2ODVGMDAyMkIxNzEgLyogRXhpdGluZ0lubGluZUtpbmQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXhpdGluZ0lubGluZUtpbmQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ0QTdBRDIwQkY2ODVGMDAyMkIx
NzEgLyogUmVjb3JkZWRTdGF0dXNlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZWNvcmRlZFN0YXR1c2VzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY0NEE3QUUyMEJGNjg1RjAwMjJCMTcxIC8qIEV4aXRGbGFnLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEV4aXRGbGFnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGNDRBN0FGMjBCRjY4NUYwMDIyQjE3MSAvKiBJQ1N0YXR1c01hcC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJQ1N0YXR1c01hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjQ0QTdCNTIwQzBCRTNGMDAyMkIxNzEgLyogSUNTdGF0dXNVdGlscy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJQ1N0YXR1c1V0aWxzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NTcwMzYxQkU0NEM5MTAwNjJBNjI5IC8q
IEFpckVsaW1pbmF0ZURlYWRDb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEFpckVsaW1pbmF0ZURlYWRDb2RlLmNwcDsgcGF0aCA9IGIzL2Fpci9BaXJFbGltaW5h
dGVEZWFkQ29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDU3MDM3MUJF
NDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBBaXJFbGltaW5hdGVEZWFkQ29kZS5oOyBwYXRoID0gYjMvYWlyL0Fp
ckVsaW1pbmF0ZURlYWRDb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDU3
MDNBMUJFNDVGMEEwMDYyQTYyOSAvKiBBaXJSZXBvcnRVc2VkUmVnaXN0ZXJzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpclJlcG9ydFVzZWRSZWdpc3RlcnMuY3Bw
OyBwYXRoID0gYjMvYWlyL0FpclJlcG9ydFVzZWRSZWdpc3RlcnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzY1OCw2ICs3NjczLDEwIEBACiAJCQkJMEY2MEZFOEUxRkZDMzZG
RDAwMDMzMjBBIC8qIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCAqLywKIAkJCQkwRjU2QTFE
NDE1MDAxQ0YyMDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5jcHAgKi8sCiAJCQkJMEY1NkEx
RDExNTAwMEYzMTAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNvdW50ZXIuaCAqLywKKwkJCQkwRjQ0QTdB
OTIwQkY2ODVFMDAyMkIxNzEgLyogRXhpdEZsYWcuY3BwICovLAorCQkJCTBGNDRBN0FFMjBCRjY4
NUYwMDIyQjE3MSAvKiBFeGl0RmxhZy5oICovLAorCQkJCTBGNDRBN0FDMjBCRjY4NUYwMDIyQjE3
MSAvKiBFeGl0aW5nSW5saW5lS2luZC5jcHAgKi8sCisJCQkJMEY0NEE3QTcyMEJGNjg1RDAwMjJC
MTcxIC8qIEV4aXRpbmdJbmxpbmVLaW5kLmggKi8sCiAJCQkJMEYwMzMyQkYxOEFERkFFMTAwNUY5
NzlBIC8qIEV4aXRpbmdKSVRUeXBlLmNwcCAqLywKIAkJCQkwRjNBQzc1MzE4OEU1RUM4MDAzMjAy
OUYgLyogRXhpdGluZ0pJVFR5cGUuaCAqLywKIAkJCQkwRkIxMDU4MjE2NzU0ODBDMDBGOEFCNkUg
LyogRXhpdEtpbmQuY3BwICovLApAQCAtNzY3NCw2ICs3NjkzLDkgQEAKIAkJCQkwRjAzMzJDMjE4
QjAxNzYzMDA1Rjk3OUEgLyogR2V0QnlJZFZhcmlhbnQuaCAqLywKIAkJCQkxNEFEOTEwODFEQ0E5
Mjk0MDAxNEY5RkUgLyogR2xvYmFsQ29kZUJsb2NrLmggKi8sCiAJCQkJMEYwQjgzQTgxNEJDRjU1
RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi8sCisJCQkJMEY0NEE3QUIyMEJGNjg1RTAwMjJC
MTcxIC8qIElDU3RhdHVzTWFwLmNwcCAqLywKKwkJCQkwRjQ0QTdBRjIwQkY2ODVGMDAyMkIxNzEg
LyogSUNTdGF0dXNNYXAuaCAqLywKKwkJCQkwRjQ0QTdCNTIwQzBCRTNGMDAyMkIxNzEgLyogSUNT
dGF0dXNVdGlscy5jcHAgKi8sCiAJCQkJMEZCMzk5QkQyMEFGNkIzODAwMTdFMjEzIC8qIElDU3Rh
dHVzVXRpbHMuaCAqLywKIAkJCQk3OTA1QkI2NjFEMTIwNTBFMDAxOUZFNTcgLyogSW5saW5lQWNj
ZXNzLmNwcCAqLywKIAkJCQk3OTA1QkI2NzFEMTIwNTBFMDAxOUZFNTcgLyogSW5saW5lQWNjZXNz
LmggKi8sCkBAIC03NzMwLDYgKzc3NTIsOCBAQAogCQkJCTBGOTNCNEE3MThCOTJDNEQwMDE3OEEz
RiAvKiBQdXRCeUlkVmFyaWFudC5jcHAgKi8sCiAJCQkJMEY5M0I0QTgxOEI5MkM0RDAwMTc4QTNG
IC8qIFB1dEJ5SWRWYXJpYW50LmggKi8sCiAJCQkJMEY5RkM4QzExNEUxQjVGQjAwRDUyQUUwIC8q
IFB1dEtpbmQuaCAqLywKKwkJCQkwRjQ0QTdBRDIwQkY2ODVGMDAyMkIxNzEgLyogUmVjb3JkZWRT
dGF0dXNlcy5jcHAgKi8sCisJCQkJMEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcxIC8qIFJlY29yZGVk
U3RhdHVzZXMuaCAqLywKIAkJCQkwRkY2MEFCRjE2NzQwRjgxMDAwMjk3NzkgLyogUmVkdWNlV2hp
dGVzcGFjZS5jcHAgKi8sCiAJCQkJMEZGNjBBQzAxNjc0MEY4MTAwMDI5Nzc5IC8qIFJlZHVjZVdo
aXRlc3BhY2UuaCAqLywKIAkJCQkwRjU1NDFBRjE2MTNDMUZCMDBDRTNFMjUgLyogU3BlY2lhbFBv
aW50ZXIuY3BwICovLApAQCAtNzc0NCw2ICs3NzY4LDcgQEAKIAkJCQlCQ0NGMEQwNzBFRjBBQUI5
MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1YkluZm8uaCAqLywKIAkJCQkwRjRBMzhGNzFDOEUxM0RG
MDAxOTAzMTggLyogU3VwZXJTYW1wbGVyLmNwcCAqLywKIAkJCQkwRjRBMzhGODFDOEUxM0RGMDAx
OTAzMTggLyogU3VwZXJTYW1wbGVyLmggKi8sCisJCQkJMEY0NEE3QTgyMEJGNjg1RTAwMjJCMTcx
IC8qIFRlcm1pbmF0ZWRDb2RlT3JpZ2luLmggKi8sCiAJCQkJMEYyRDRERTUxOTgzMkRBQzAwN0Q0
QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgKi8sCiAJCQkJMEYyRDRERTYxOTgzMkRBQzAwN0Q0QjE5
IC8qIFRvVGhpc1N0YXR1cy5oICovLAogCQkJCTBGOTUyQUJBMUI0ODdBNzcwMEMzNjdDNSAvKiBU
cmFja2VkUmVmZXJlbmNlcy5jcHAgKi8sCkBAIC04NDAxLDYgKzg0MjYsNyBAQAogCQkJCTUzRDQ0
NERDMURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUzNDFGQzcyMURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJDNjNCMjFFNjBBRTQ3MDBDMTM4MzkgLyogQjNXaWR0
aC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NEE3QjIyMEJGNjhDRTAwMjJCMTcxIC8qIElDU3Rh
dHVzTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MjY3OEY4RjFBMDMxMDA5MDA2QTMwNkQgLyog
QmFzaWNCbG9ja0xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDdCODNBQzBFNkRCOEM5
MDA0Nzc1QTQgLyogQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg2OTc2RTVGMUZBM0U4QkMwMEU3QzRFMSAvKiBCaWdJbnRDb25zdHJ1Y3Rvci5oIGluIEhl
YWRlcnMgKi8sCkBAIC04NjIwLDYgKzg2NDYsNyBAQAogCQkJCTg2RUM5REM2MTMyOERGODIwMDJC
MkFENyAvKiBERkdHZW5lcmF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQzlEQzgx
MzI4REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJGQ0NG
QTE4QTYwMDcwMDAxQTI3RjggLyogREZHR3JhcGhTYWZlcG9pbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGNDRBN0IxMjBCRjY4QzkwMDIyQjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZCMTc2NjExOTZCOEY5RTAwOTEwNTJBIC8qIERGR0hlYXBMb2NhdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDODQxNjkxQkE4QzMyMTAwNjE4MzdEIC8qIERGR0lu
ZmVycmVkVHlwZUNoZWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxNEUyMTE4MTI1NzBCMDA5
QjZCNEQgLyogREZHSW5saW5lQ2FjaGVXcmFwcGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTg3NzAs
NiArODc5Nyw3IEBACiAJCQkJQTdBOEFGMzgxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0MzJBcnJh
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzkxN0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0
NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NDMxN0VBOUY1OTAwQUJCMjE3IC8q
IEZQUkluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDRBN0IzMjBCRjY4RDEwMDIyQjE3MSAv
KiBSZWNvcmRlZFN0YXR1c2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzRFREJGNzFEQjVGRkM5
MDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU1MTNBNjFE
NUE2ODJDMDBDMzJCRDggLyogRnJlZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjU4NUUx
MUVFMDgwNUEwMDk1MTc2RCAvKiBGcmVlTGlzdElubGluZXMuaCBpbiBIZWFkZXJzICovLApAQCAt
OTExOSw2ICs5MTQ3LDcgQEAKIAkJCQk3MDEzQ0E4QzFCNDkxQTk0MDBDQUU2MTMgLyogSlNKb2Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKU0xleGlj
YWxFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjMwRTE2RjVDRDAwQjM0
NDYwIC8qIEpTTG9jay5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NEE3QjAyMEJGNjg2MjAwMjJC
MTcxIC8qIEV4aXRGbGFnLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjVENzA5QzE2REU5OUY0MDBG
Q0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBNEJCN0YzMThB
NDExNzkwMDhBMEZDRCAvKiBKU01hbmFnZWRWYWx1ZUludGVybmFsLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNzAwODc0MjE3Q0JFOEVCMDBDM0U2NDMgLyogSlNNYXAuaCBpbiBIZWFkZXJzICovLApA
QCAtOTQzNSw2ICs5NDY0LDcgQEAKIAkJCQlBNzI5OURBMjE3RDEyODQ4MDA1RjVGRjkgLyogU2V0
UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVFOTg0MTFBODg2NUI3MDA3NTRFOTMg
LyogU2V0dXBWYXJhcmdzRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCURDMTdFODE4MUM5Qzkx
RDkwMDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ0QTdC
NDIwQkY2OEQ5MDAyMkIxNzEgLyogVGVybWluYXRlZENvZGVPcmlnaW4uaCBpbiBIZWFkZXJzICov
LAogCQkJCURDMTdFODE5MUM5QzkxREIwMDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuSW5saW5lcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzMDIyRDMxRTNENzNBNTAwQkFDNDkzIC8qIFNpZ2lsbENy
YXNoQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNEQ4Qzc4MUZDQTNDRkEwMDFEMzJB
QyAvKiBTaW1wbGVNYXJraW5nQ29uc3RyYWludC5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCShyZXZpc2lvbiAyMzIyMjcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2NiwxMiArMjY2LDYgQEAgaW5saW5lIHVuc2lnbmVkIGdldEJ5VmFsSW5mb0J5
dGVjb2RlSW5kZQogICAgIHJldHVybiBpbmZvLT5ieXRlY29kZUluZGV4OwogfQogCi10eXBlZGVm
IEhhc2hNYXA8Q29kZU9yaWdpbiwgQnlWYWxJbmZvKiwgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFz
aD4gQnlWYWxJbmZvTWFwOwotCi0jZWxzZSAvLyBFTkFCTEUoSklUKQotCi10eXBlZGVmIEhhc2hN
YXA8aW50LCB2b2lkKj4gQnlWYWxJbmZvTWFwOwotCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVEdW1wZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTQyNyw3ICs0MjcsNyBAQCBzdGF0aWMgdm9pZCBkdW1wQ2hhaW4oUHJpbnRTdHJlYW0mIG91
dCwgCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgotdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9j
az46OnByaW50R2V0QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlv
biwgY29uc3QgU3R1YkluZm9NYXAmIG1hcCkKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpw
cmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNv
bnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rp
b24gPSBpbnN0cnVjdGlvbnNCZWdpbigpICsgbG9jYXRpb247CiAKQEAgLTQ0Nyw3ICs0NDcsNyBA
QCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRHZXRCeUlkCiAgICAgfQogCiAjaWYg
RU5BQkxFKEpJVCkKLSAgICBpZiAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJQdHIgPSBtYXAuZ2V0
KENvZGVPcmlnaW4obG9jYXRpb24pKSkgeworICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YlB0ciA9IHN0YXR1c01hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpLnN0dWJJbmZvKSB7CiAg
ICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9ICpzdHViUHRyOwogICAgICAgICBp
ZiAoc3R1YkluZm8ucmVzZXRCeUdDKQogICAgICAgICAgICAgb3V0LnByaW50KCIgKFJlc2V0IEJ5
IEdDKSIpOwpAQCAtNDg4LDEyICs0ODgsMTIgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46
OnByaW50R2V0QnlJZAogICAgICAgICBvdXQucHJpbnRmKCIpIik7CiAgICAgfQogI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0obWFwKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdHVzTWFwKTsKICNlbmRp
ZgogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+
OjpwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24s
IGNvbnN0IFN0dWJJbmZvTWFwJiBtYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJp
bnRQdXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25z
dCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQogewogICAgIGNvbnN0IGF1dG8qIGluc3RydWN0aW9u
ID0gaW5zdHJ1Y3Rpb25zQmVnaW4oKSArIGxvY2F0aW9uOwogCkBAIC01MjEsNyArNTIxLDcgQEAg
dm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50UHV0QnlJZAogICAgIH0KIAogI2lmIEVO
QUJMRShKSVQpCi0gICAgaWYgKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViUHRyID0gbWFwLmdldChD
b2RlT3JpZ2luKGxvY2F0aW9uKSkpIHsKKyAgICBpZiAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJQ
dHIgPSBzdGF0dXNNYXAuZ2V0KENvZGVPcmlnaW4obG9jYXRpb24pKS5zdHViSW5mbykgewogICAg
ICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSAqc3R1YlB0cjsKICAgICAgICAgaWYg
KHN0dWJJbmZvLnJlc2V0QnlHQykKICAgICAgICAgICAgIG91dC5wcmludCgiIChSZXNldCBCeSBH
QykiKTsKQEAgLTU0NywxMiArNTQ3LDEyIEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpw
cmludFB1dEJ5SWQKICAgICAgICAgb3V0LnByaW50ZigiKSIpOwogICAgIH0KICNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKG1hcCk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXR1c01hcCk7CiAjZW5kaWYK
IH0KIAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6
cHJpbnRJbkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNv
bnN0IFN0dWJJbmZvTWFwJiBtYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRJ
bkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IElD
U3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb24gPSBp
bnN0cnVjdGlvbnNCZWdpbigpICsgbG9jYXRpb247CiAKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lk
IEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRJbkJ5SWRDCiAgICAgVU5VU0VEX1BBUkFNKGlk
ZW50KTsgLy8gdGVsbCB0aGUgY29tcGlsZXIgdG8gc2h1dCB1cCBpbiBjZXJ0YWluIHBsYXRmb3Jt
IGNvbmZpZ3VyYXRpb25zLgogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJQdHIgPSBtYXAuZ2V0KENvZGVPcmlnaW4obG9jYXRpb24pKSkgeworICAgIGlm
IChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YlB0ciA9IHN0YXR1c01hcC5nZXQoQ29kZU9yaWdpbihs
b2NhdGlvbikpLnN0dWJJbmZvKSB7CiAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
byA9ICpzdHViUHRyOwogICAgICAgICBpZiAoc3R1YkluZm8ucmVzZXRCeUdDKQogICAgICAgICAg
ICAgb3V0LnByaW50KCIgKFJlc2V0IEJ5IEdDKSIpOwpAQCAtNjAwLDI2ICs2MDAsMjYgQEAgdm9p
ZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50SW5CeUlkQwogICAgIH0KICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKG91dCk7Ci0gICAgVU5VU0VEX1BBUkFNKG1hcCk7CisgICAgVU5VU0VEX1BB
UkFNKHN0YXR1c01hcCk7CiAjZW5kaWYKIH0KIAogI2lmIEVOQUJMRShKSVQpCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQ2FsbExpbmtT
dGF0dXMoUHJpbnRTdHJlYW0mLCB1bnNpZ25lZCwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJikKK3Zv
aWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQ2FsbExpbmtTdGF0dXMoUHJpbnRTdHJlYW0m
LCB1bnNpZ25lZCwgY29uc3QgSUNTdGF0dXNNYXAmKQogewogfQogCiB0ZW1wbGF0ZTw+Ci12b2lk
IEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBDYWxsTGlua1N0YXR1cyhQcmludFN0cmVh
bSYgb3V0LCB1bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBtYXApCit2
b2lkIEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBDYWxsTGlua1N0YXR1cyhQcmludFN0
cmVhbSYgb3V0LCB1bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01h
cCkKIHsKICAgICBpZiAoYmxvY2soKS0+aml0VHlwZSgpICE9IEpJVENvZGU6OkZUTEpJVCkKLSAg
ICAgICAgb3V0LnByaW50KCIgc3RhdHVzKCIsIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKGJs
b2NrKCksIGxvY2F0aW9uLCBtYXApLCAiKSIpOworICAgICAgICBvdXQucHJpbnQoIiBzdGF0dXMo
IiwgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoYmxvY2soKSwgbG9jYXRpb24sIHN0YXR1c01h
cCksICIpIik7CiB9CiAjZW5kaWYKIAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVj
b2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0
aW9uLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgY2hhciog
b3AsIENhY2hlRHVtcE1vZGUgY2FjaGVEdW1wTW9kZSwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGlu
ZywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBtYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2Nr
Pjo6cHJpbnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCB0eXBl
bmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgY2hhciogb3AsIENhY2hlRHVtcE1v
ZGUgY2FjaGVEdW1wTW9kZSwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZywgY29uc3QgSUNTdGF0
dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBpbnQgZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAg
ICAgaW50IGZ1bmMgPSAoKytpdCktPnUub3BlcmFuZDsKQEAgLTYzOCw3ICs2MzgsNyBAQCB2b2lk
IEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRDYWxsT3AoCiAgICAgICAgICAgICAgICAgb3V0
LnByaW50ZigiIGxsaW50KCVwKSIsIG9iamVjdCk7CiAgICAgICAgIH0KICNpZiBFTkFCTEUoSklU
KQotICAgICAgICBpZiAoQ2FsbExpbmtJbmZvKiBpbmZvID0gbWFwLmdldChDb2RlT3JpZ2luKGxv
Y2F0aW9uKSkpIHsKKyAgICAgICAgaWYgKENhbGxMaW5rSW5mbyogaW5mbyA9IHN0YXR1c01hcC5n
ZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpLmNhbGxMaW5rSW5mbykgewogICAgICAgICAgICAgaWYg
KGluZm8tPmhhdmVMYXN0U2VlbkNhbGxlZSgpKSB7CiAgICAgICAgICAgICAgICAgSlNPYmplY3Qq
IG9iamVjdCA9IGluZm8tPmxhc3RTZWVuQ2FsbGVlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGF1
dG8qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4oKnZtKCksIG9iamVjdCkp
CkBAIC02NDgsOSArNjQ4LDkgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50Q2Fs
bE9wKAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgZHVtcENhbGxMaW5rU3Rh
dHVzKG91dCwgbG9jYXRpb24sIG1hcCk7CisgICAgICAgIGR1bXBDYWxsTGlua1N0YXR1cyhvdXQs
IGxvY2F0aW9uLCBzdGF0dXNNYXApOwogI2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKG1hcCk7
CisgICAgICAgIFVOVVNFRF9QQVJBTShzdGF0dXNNYXApOwogI2VuZGlmCiAgICAgfQogICAgICsr
aXQ7CkBAIC02NzgsNyArNjc4LDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50
TG9jYXRpbwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8
QmxvY2s+OjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQmxv
Y2s6Okluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9u
KiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiBzdHViSW5mb3MsIGNvbnN0IENhbGxMaW5rSW5mb01h
cCYgY2FsbExpbmtJbmZvcykKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNv
ZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiBi
ZWdpbiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3Rh
dHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgaW50IGxvY2F0aW9uID0gaXQgLSBiZWdpbjsKICAg
ICBib29sIGhhc1ByaW50ZWRQcm9maWxpbmcgPSBmYWxzZTsKQEAgLTEwNzEsNyArMTA3MSw3IEBA
IHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgaW50IGlk
MCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBs
b2NhdGlvbiwgaXQsICJpbl9ieV9pZCIpOwogICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVz
IiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBpZE5h
bWUoaWQwLCBpZGVudGlmaWVyKGlkMCkpLmRhdGEoKSk7Ci0gICAgICAgIHByaW50SW5CeUlkQ2Fj
aGVTdGF0dXMob3V0LCBsb2NhdGlvbiwgc3R1YkluZm9zKTsKKyAgICAgICAgcHJpbnRJbkJ5SWRD
YWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdGF0dXNNYXApOwogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgY2FzZSBvcF9pbl9ieV92YWw6IHsKQEAgLTEwOTUsNyArMTA5NSw3IEBAIHZvaWQg
Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiZ2V0X2J5X2lkX2RpcmVjdCIpOwogICAgICAgICBv
dXQucHJpbnRmKCIlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVy
TmFtZShyMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBpZGVudGlmaWVyKGlkMCkpLmRhdGEoKSk7CiAg
ICAgICAgIGl0ICs9IDI7IC8vIEluY3JlbWVudCB1cCB0byB0aGUgdmFsdWUgcHJvZmlsZXIuCi0g
ICAgICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0dWJJbmZvcyk7
CisgICAgICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0YXR1c01h
cCk7CiAgICAgICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmls
aW5nKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTEwNCw3ICsxMTA0LDcgQEAgdm9pZCBC
eXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZQogICAgIGNhc2Ugb3BfZ2V0X2J5X2lk
X3Vuc2V0OgogICAgIGNhc2Ugb3BfZ2V0X2FycmF5X2xlbmd0aDogewogICAgICAgICBwcmludEdl
dEJ5SWRPcChvdXQsIGxvY2F0aW9uLCBpdCk7Ci0gICAgICAgIHByaW50R2V0QnlJZENhY2hlU3Rh
dHVzKG91dCwgbG9jYXRpb24sIHN0dWJJbmZvcyk7CisgICAgICAgIHByaW50R2V0QnlJZENhY2hl
U3RhdHVzKG91dCwgbG9jYXRpb24sIHN0YXR1c01hcCk7CiAgICAgICAgIGR1bXBWYWx1ZVByb2Zp
bGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQpAQCAtMTEzMCw3ICsxMTMwLDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBC
eXRlY29kZQogICAgIH0KICAgICBjYXNlIG9wX3B1dF9ieV9pZDogewogICAgICAgICBwcmludFB1
dEJ5SWRPcChvdXQsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZCIpOwotICAgICAgICBwcmludFB1
dEJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdHViSW5mb3MpOworICAgICAgICBwcmlu
dFB1dEJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdGF0dXNNYXApOwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBvcF9wdXRfYnlfaWRfd2l0aF90aGlzOiB7CkBAIC0xNDc2
LDE1ICsxNDc2LDE1IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3BfY2FsbDogewotICAgICAgICBwcmlu
dENhbGxPcChvdXQsIGxvY2F0aW9uLCBpdCwgImNhbGwiLCBEdW1wQ2FjaGVzLCBoYXNQcmludGVk
UHJvZmlsaW5nLCBjYWxsTGlua0luZm9zKTsKKyAgICAgICAgcHJpbnRDYWxsT3Aob3V0LCBsb2Nh
dGlvbiwgaXQsICJjYWxsIiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgc3RhdHVz
TWFwKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3BfdGFpbF9jYWxsOiB7Ci0g
ICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAidGFpbF9jYWxsIiwgRHVtcENh
Y2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgY2FsbExpbmtJbmZvcyk7CisgICAgICAgIHByaW50
Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAidGFpbF9jYWxsIiwgRHVtcENhY2hlcywgaGFzUHJp
bnRlZFByb2ZpbGluZywgc3RhdHVzTWFwKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNh
c2Ugb3BfY2FsbF9ldmFsOiB7Ci0gICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0
LCAiY2FsbF9ldmFsIiwgRG9udER1bXBDYWNoZXMsIGhhc1ByaW50ZWRQcm9maWxpbmcsIGNhbGxM
aW5rSW5mb3MpOworICAgICAgICBwcmludENhbGxPcChvdXQsIGxvY2F0aW9uLCBpdCwgImNhbGxf
ZXZhbCIsIERvbnREdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmlsaW5nLCBzdGF0dXNNYXApOwog
ICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTE1MjMsNyArMTUyMyw3IEBAIHZvaWQgQnl0ZWNv
ZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IGNhc2Ugb3BfY29uc3RydWN0OiB7Ci0gICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24s
IGl0LCAiY29uc3RydWN0IiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgY2FsbExp
bmtJbmZvcyk7CisgICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAiY29uc3Ry
dWN0IiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgc3RhdHVzTWFwKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3Bfc3RyY2F0OiB7CkBAIC0xNzc4LDEwICsxNzc4
LDEwIEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKIH0KIAogdGVt
cGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6ZHVtcEJ5dGVj
b2RlKEJsb2NrKiBibG9jaywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQmxvY2s6
Okluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiYg
aXQsIGNvbnN0IFN0dWJJbmZvTWFwJiBzdHViSW5mb3MsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYg
Y2FsbExpbmtJbmZvcykKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUo
QmxvY2sqIGJsb2NrLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5z
dHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwg
Y29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBCeXRlY29kZUR1bXBlciBkdW1w
ZXIoYmxvY2ssIGJlZ2luKTsKLSAgICBkdW1wZXIuZHVtcEJ5dGVjb2RlKG91dCwgYmVnaW4sIGl0
LCBzdHViSW5mb3MsIGNhbGxMaW5rSW5mb3MpOworICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0
LCBiZWdpbiwgaXQsIHN0YXR1c01hcCk7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgpAQCAt
MTg5MCw3ICsxODkwLDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBTdHJpbmdT
dwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+
OjpkdW1wQmxvY2soQmxvY2sqIGJsb2NrLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJ
bnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgU3R1Yklu
Zm9NYXAmIHN0dWJJbmZvcywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBjYWxsTGlua0luZm9zKQor
dm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCbG9jayhCbG9jayogYmxvY2ssIGNvbnN0
IHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBQcmlu
dFN0cmVhbSYgb3V0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQogewogICAgIHNpemVf
dCBpbnN0cnVjdGlvbkNvdW50ID0gMDsKIApAQCAtMTkxMCw3ICsxOTEwLDcgQEAgdm9pZCBCeXRl
Y29kZUR1bXBlcjxCbG9jaz46OmR1bXBCbG9jayhCbAogICAgIGNvbnN0IGF1dG8qIGVuZCA9IGlu
c3RydWN0aW9ucy5lbmQoKTsKICAgICBCeXRlY29kZUR1bXBlcjxCbG9jaz4gZHVtcGVyKGJsb2Nr
LCBiZWdpbik7CiAgICAgZm9yIChjb25zdCBhdXRvKiBpdCA9IGJlZ2luOyBpdCAhPSBlbmQ7ICsr
aXQpCi0gICAgICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0LCBiZWdpbiwgaXQsIHN0dWJJbmZv
cywgY2FsbExpbmtJbmZvcyk7CisgICAgICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0LCBiZWdp
biwgaXQsIHN0YXR1c01hcCk7CiAKICAgICBkdW1wZXIuZHVtcElkZW50aWZpZXJzKG91dCk7CiAg
ICAgZHVtcGVyLmR1bXBDb25zdGFudHMob3V0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1
enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjYsNiArMjcsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDYWxsTGlua0lu
Zm8uaCIKKyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJ
bmZvLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzcsOCArMzksOCBAQCBjbGFzcyBCeXRlY29k
ZUR1bXBlciB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rp
b24gSW5zdHJ1Y3Rpb247CiAKLSAgICBzdGF0aWMgdm9pZCBkdW1wQnl0ZWNvZGUoQmxvY2sqLCBQ
cmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0
aW9uKiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiA9IFN0dWJJbmZvTWFwKCksIGNvbnN0IENhbGxM
aW5rSW5mb01hcCYgPSBDYWxsTGlua0luZm9NYXAoKSk7Ci0gICAgc3RhdGljIHZvaWQgZHVtcEJs
b2NrKEJsb2NrKiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiwg
UHJpbnRTdHJlYW0mIG91dCwgY29uc3QgU3R1YkluZm9NYXAmID0gU3R1YkluZm9NYXAoKSwgY29u
c3QgQ2FsbExpbmtJbmZvTWFwJiA9IENhbGxMaW5rSW5mb01hcCgpKTsKKyAgICBzdGF0aWMgdm9p
ZCBkdW1wQnl0ZWNvZGUoQmxvY2sqLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlv
biogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0
dXNNYXAgPSBJQ1N0YXR1c01hcCgpKTsKKyAgICBzdGF0aWMgdm9pZCBkdW1wQmxvY2soQmxvY2sq
LCBjb25zdCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmLCBQcmludFN0cmVh
bSYgb3V0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwID0gSUNTdGF0dXNNYXAoKSk7CiAK
IHByaXZhdGU6CiAgICAgQnl0ZWNvZGVEdW1wZXIoQmxvY2sqIGJsb2NrLCBjb25zdCBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4pCkBAIC02OSwxNCArNzEsMTQgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHByaW50Q29uZGl0aW9uYWxKdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3Ry
dWN0aW9uKiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgaW50IGxvY2F0aW9uLCBjb25zdCBjaGFy
KiBvcCk7CiAgICAgdm9pZCBwcmludENvbXBhcmVKdW1wKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0
IEluc3RydWN0aW9uKiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgaW50IGxvY2F0aW9uLCBjb25z
dCBjaGFyKiBvcCk7CiAgICAgdm9pZCBwcmludEdldEJ5SWRPcChQcmludFN0cmVhbSYgb3V0LCBp
bnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQpOwotICAgIHZvaWQgcHJpbnRHZXRC
eUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBTdHVi
SW5mb01hcCYpOwotICAgIHZvaWQgcHJpbnRQdXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0m
IG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBTdHViSW5mb01hcCYpOwotICAgIHZvaWQgcHJpbnRJ
bkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IFN0
dWJJbmZvTWFwJik7CisgICAgdm9pZCBwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVh
bSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IElDU3RhdHVzTWFwJik7CisgICAgdm9pZCBwcmlu
dFB1dEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0
IElDU3RhdHVzTWFwJik7CisgICAgdm9pZCBwcmludEluQnlJZENhY2hlU3RhdHVzKFByaW50U3Ry
ZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmKTsKICAgICBlbnVtIENh
Y2hlRHVtcE1vZGUgeyBEdW1wQ2FjaGVzLCBEb250RHVtcENhY2hlcyB9OwotICAgIHZvaWQgcHJp
bnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlv
biomIGl0LCBjb25zdCBjaGFyKiBvcCwgQ2FjaGVEdW1wTW9kZSwgYm9vbCYgaGFzUHJpbnRlZFBy
b2ZpbGluZywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJik7CisgICAgdm9pZCBwcmludENhbGxPcChQ
cmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNv
bnN0IGNoYXIqIG9wLCBDYWNoZUR1bXBNb2RlLCBib29sJiBoYXNQcmludGVkUHJvZmlsaW5nLCBj
b25zdCBJQ1N0YXR1c01hcCYpOwogICAgIHZvaWQgcHJpbnRQdXRCeUlkT3AoUHJpbnRTdHJlYW0m
IG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBv
cCk7CiAgICAgdm9pZCBwcmludExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQoUHJpbnRTdHJl
YW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFy
KiBvcCwgaW50IG9wZXJhbmQpOwotICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBv
dXQsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29u
c3QgU3R1YkluZm9NYXAmLCBjb25zdCBDYWxsTGlua0luZm9NYXAmKTsKKyAgICB2b2lkIGR1bXBC
eXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0
IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJik7CiAKICAgICB2b2lkIGR1bXBW
YWx1ZVByb2ZpbGluZyhQcmludFN0cmVhbSYsIGNvbnN0IEluc3RydWN0aW9uKiYsIGJvb2wmIGhh
c1ByaW50ZWRQcm9maWxpbmcpOwogICAgIHZvaWQgZHVtcEFycmF5UHJvZmlsaW5nKFByaW50U3Ry
ZWFtJiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZyk7CkBA
IC04NSw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCogYWN0dWFsUG9pbnRlckZvcihTcGVj
aWFsOjpQb2ludGVyKSBjb25zdDsKIAogI2lmIEVOQUJMRShKSVQpCi0gICAgdm9pZCBkdW1wQ2Fs
bExpbmtTdGF0dXMoUHJpbnRTdHJlYW0mLCB1bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgQ2FsbExp
bmtJbmZvTWFwJik7CisgICAgdm9pZCBkdW1wQ2FsbExpbmtTdGF0dXMoUHJpbnRTdHJlYW0mLCB1
bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmKTsKICNlbmRpZgogCiAgICAgQmxv
Y2sqIG1fYmxvY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExp
bmtJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rSW5mby5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1MiwxMiArMzUyLDYg
QEAgaW5saW5lIENvZGVPcmlnaW4gZ2V0Q2FsbExpbmtJbmZvQ29kZU9yaQogICAgIHJldHVybiBj
YWxsTGlua0luZm8uY29kZU9yaWdpbigpOwogfQogCi10eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdp
biwgQ2FsbExpbmtJbmZvKiwgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFzaD4gQ2FsbExpbmtJbmZv
TWFwOwotCi0jZWxzZSAvLyBFTkFCTEUoSklUKQotCi10eXBlZGVmIEhhc2hNYXA8aW50LCB2b2lk
Kj4gQ2FsbExpbmtJbmZvTWFwOwotCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogfSAvLyBuYW1l
c3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtT
dGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua1N0YXR1cy5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcg
Kzc3LDggQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcgogfQogCiBD
YWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKLSAgICBDb2RlQmxvY2sq
IHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIGNvbnN0IENhbGxMaW5rSW5m
b01hcCYgbWFwKQorICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCwgY29uc3QgSUNTdGF0dXNNYXAmIG1hcCwKKyAgICBFeGl0U2l0ZURhdGEgZXhpdFNp
dGVEYXRhKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jay0+
bV9sb2NrKTsKICAgICAKQEAgLTg1LDkgKzg2LDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtT
dGF0dXM6OmNvbXB1dGVGbwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICAgICBV
TlVTRURfUEFSQU0obWFwKTsKICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBFeGl0U2l0ZURhdGEg
ZXhpdFNpdGVEYXRhID0gY29tcHV0ZUV4aXRTaXRlRGF0YShwcm9maWxlZEJsb2NrLCBieXRlY29k
ZUluZGV4KTsKLSAgICAKLSAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IG1hcC5nZXQo
Q29kZU9yaWdpbihieXRlY29kZUluZGV4KSk7CisgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0lu
Zm8gPSBtYXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkpLmNhbGxMaW5rSW5mbzsKICAg
ICBpZiAoIWNhbGxMaW5rSW5mbykgewogICAgICAgICBpZiAoZXhpdFNpdGVEYXRhLnRha2VzU2xv
d1BhdGgpCiAgICAgICAgICAgICByZXR1cm4gdGFrZXNTbG93UGF0aCgpOwpAQCAtMTAwLDYgKzk5
LDEyIEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm8KICNlbmRpZgog
fQogCitDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKKyAgICBDb2Rl
QmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIGNvbnN0IElDU3Rh
dHVzTWFwJiBtYXApCit7CisgICAgcmV0dXJuIGNvbXB1dGVGb3IocHJvZmlsZWRCbG9jaywgYnl0
ZWNvZGVJbmRleCwgbWFwLCBjb21wdXRlRXhpdFNpdGVEYXRhKHByb2ZpbGVkQmxvY2ssIGJ5dGVj
b2RlSW5kZXgpKTsKK30KKwogQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0YSBDYWxsTGlua1N0
YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YShDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YTsKQEAg
LTEwNywxMSArMTEyLDIxIEBAIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgQ2FsbExpbmtT
dGEKICAgICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gcHJvZmlsZWRCbG9jay0+dW5s
aW5rZWRDb2RlQmxvY2soKTsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9j
ay0+bV9sb2NrKTsKIAotICAgIGV4aXRTaXRlRGF0YS50YWtlc1Nsb3dQYXRoID0KLSAgICAgICAg
Y29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRl
Y29kZUluZGV4LCBCYWRUeXBlKSkKLSAgICAgICAgfHwgY29kZUJsb2NrLT5oYXNFeGl0U2l0ZShs
b2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRFeGVjdXRhYmxl
KSk7Ci0gICAgZXhpdFNpdGVEYXRhLmJhZEZ1bmN0aW9uID0KLSAgICAgICAgY29kZUJsb2NrLT5o
YXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBC
YWRDZWxsKSk7CisgICAgYXV0byB0YWtlc1Nsb3dQYXRoID0gWyZdIChFeGl0aW5nSW5saW5lS2lu
ZCBpbmxpbmVLaW5kKSAtPiBFeGl0RmxhZyB7CisgICAgICAgIHJldHVybiBFeGl0RmxhZygKKyAg
ICAgICAgICAgIGNvZGVCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhp
dFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkVHlwZSwgRXhpdEZyb21Bbnl0aGluZywgaW5saW5lS2lu
ZCkpCisgICAgICAgICAgICB8fCBjb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpG
cmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZEV4ZWN1dGFibGUsIEV4aXRGcm9tQW55
dGhpbmcsIGlubGluZUtpbmQpKSwKKyAgICAgICAgICAgIGlubGluZUtpbmQpOworICAgIH07Cisg
ICAgCisgICAgYXV0byBiYWRGdW5jdGlvbiA9IFsmXSAoRXhpdGluZ0lubGluZUtpbmQgaW5saW5l
S2luZCkgLT4gRXhpdEZsYWcgeworICAgICAgICByZXR1cm4gRXhpdEZsYWcoY29kZUJsb2NrLT5o
YXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBC
YWRDZWxsLCBFeGl0RnJvbUFueXRoaW5nLCBpbmxpbmVLaW5kKSksIGlubGluZUtpbmQpOworICAg
IH07CisgICAgCisgICAgZXhpdFNpdGVEYXRhLnRha2VzU2xvd1BhdGggfD0gdGFrZXNTbG93UGF0
aChFeGl0RnJvbU5vdElubGluZWQpOworICAgIGV4aXRTaXRlRGF0YS50YWtlc1Nsb3dQYXRoIHw9
IHRha2VzU2xvd1BhdGgoRXhpdEZyb21JbmxpbmVkKTsKKyAgICBleGl0U2l0ZURhdGEuYmFkRnVu
Y3Rpb24gfD0gYmFkRnVuY3Rpb24oRXhpdEZyb21Ob3RJbmxpbmVkKTsKKyAgICBleGl0U2l0ZURh
dGEuYmFkRnVuY3Rpb24gfD0gYmFkRnVuY3Rpb24oRXhpdEZyb21JbmxpbmVkKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29k
ZUluZGV4KTsKQEAgLTEzNSw2ICsxNTAsMTAgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0
dXM6OmNvbXB1dGVGbwogQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9t
Q2FsbExpbmtJbmZvKAogICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENhbGxMaW5rSW5m
byYgY2FsbExpbmtJbmZvKQogeworICAgIC8vIFdlIGNhbm5vdCB0ZWxsIHlvdSBhbnl0aGluZyBh
Ym91dCBkaXJlY3QgY2FsbHMuCisgICAgaWYgKGNhbGxMaW5rSW5mby5pc0RpcmVjdCgpKQorICAg
ICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoKTsKKyAgICAKICAgICBpZiAoY2FsbExpbmtJbmZv
LmNsZWFyZWRCeUdDKCkpCiAgICAgICAgIHJldHVybiB0YWtlc1Nsb3dQYXRoKCk7CiAgICAgCkBA
IC0xNTgsNiArMTc3LDE5IEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRl
RnIKICAgICBpZiAoUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUqIHN0dWIgPSBjYWxsTGlua0lu
Zm8uc3R1YigpKSB7CiAgICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOwogICAgICAgICAKKyAg
ICAgICAgaWYgKCFzdHViLT5oYXNFZGdlcygpKSB7CisgICAgICAgICAgICAvLyBUaGlzIG1lYW5z
IHdlIGhhdmUgYW4gRlRMIHByb2ZpbGUsIHdoaWNoIGhhcyBpbmNvbXBsZXRlIGluZm9ybWF0aW9u
LgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIEl0J3Mgbm90IGNsZWFyIGlmIHRha2Vz
U2xvd1BhdGgoKSBvciBDYWxsTGlua1N0YXR1cygpIGFyZSBhcHByb3ByaWF0ZSBoZXJlLCBidXQg
SQorICAgICAgICAgICAgLy8gdGhpbmsgdGhhdCB0YWtlc1Nsb3dQYXRoKCkgaXMgYSBuYXJyb3cg
d2lubmVyLgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIEVpdGhlciB3YXksIHRoaXMg
aXMgdGVsbGluZyB1cyB0aGF0IHRoZSBGVEwgaGFkIGJlZW4gbGVkIHRvIGJlbGlldmUgdGhhdCBp
dCdzCisgICAgICAgICAgICAvLyBwcm9maXRhYmxlIG5vdCB0byBpbmxpbmUgYW55dGhpbmcuCisg
ICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gCisgICAgICAgICAgICByZXR1cm4gdGFrZXNT
bG93UGF0aCgpOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBDYWxsRWRnZUxpc3QgZWRn
ZXMgPSBzdHViLT5lZGdlcygpOwogICAgICAgICAKICAgICAgICAgLy8gTm93IHRoYXQgd2UndmUg
bG9hZGVkIHRoZSBlZGdlcyBsaXN0LCB0aGVyZSBhcmUgbm8gZnVydGhlciBjb25jdXJyZW5jeSBj
b25jZXJucy4gV2Ugd2lsbApAQCAtMjI3LDgzICsyNTksMTIyIEBAIENhbGxMaW5rU3RhdHVzIENh
bGxMaW5rU3RhdHVzOjpjb21wdXRlRnIKIAogQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6
OmNvbXB1dGVGb3IoCiAgICAgY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBsb2NrZXIsIENvZGVC
bG9jayogcHJvZmlsZWRCbG9jaywgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0luZm8sCi0gICAgRXhp
dFNpdGVEYXRhIGV4aXRTaXRlRGF0YSkKKyAgICBFeGl0U2l0ZURhdGEgZXhpdFNpdGVEYXRhLCBF
eGl0aW5nSW5saW5lS2luZCBpbmxpbmVLaW5kKQogewogICAgIENhbGxMaW5rU3RhdHVzIHJlc3Vs
dCA9IGNvbXB1dGVGb3IobG9ja2VyLCBwcm9maWxlZEJsb2NrLCBjYWxsTGlua0luZm8pOwotICAg
IGlmIChleGl0U2l0ZURhdGEuYmFkRnVuY3Rpb24pIHsKLSAgICAgICAgaWYgKHJlc3VsdC5pc0Jh
c2VkT25TdHViKCkpIHsKKyAgICByZXN1bHQuYWNjb3VudEZvckV4aXRzKGV4aXRTaXRlRGF0YSwg
aW5saW5lS2luZCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZgorCit2b2lkIENhbGxM
aW5rU3RhdHVzOjphY2NvdW50Rm9yRXhpdHMoRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YSwgRXhp
dGluZ0lubGluZUtpbmQgaW5saW5lS2luZCkKK3sKKyAgICBpZiAoZXhpdFNpdGVEYXRhLmJhZEZ1
bmN0aW9uLmlzU2V0KGlubGluZUtpbmQpKSB7CisgICAgICAgIGlmIChpc0Jhc2VkT25TdHViKCkp
IHsKICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYSBwb2x5bW9ycGhpYyBzdHViLCB0aGVuIGhh
dmluZyBhbiBleGl0IHNpdGUgaXMgbm90IHF1aXRlIHNvIHVzZWZ1bC4gSW4KICAgICAgICAgICAg
IC8vIG1vc3QgY2FzZXMsIHRoZSBpbmZvcm1hdGlvbiBpbiB0aGUgc3R1YiBoYXMgaGlnaGVyIGZp
ZGVsaXR5LgotICAgICAgICAgICAgcmVzdWx0Lm1ha2VDbG9zdXJlQ2FsbCgpOworICAgICAgICAg
ICAgbWFrZUNsb3N1cmVDYWxsKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBX
ZSBtaWdodCBub3QgaGF2ZSBhIHBvbHltb3JwaGljIHN0dWIgZm9yIGFueSBudW1iZXIgb2YgcmVh
c29ucy4gV2hlbiB0aGlzIGhhcHBlbnMsIHdlCiAgICAgICAgICAgICAvLyBhcmUgaW4gbGVzcyBj
ZXJ0YWluIHRlcnJpdG9yeSwgc28gZXhpdCBzaXRlcyBtZWFuIGEgbG90LgotICAgICAgICAgICAg
cmVzdWx0Lm1fY291bGRUYWtlU2xvd1BhdGggPSB0cnVlOworICAgICAgICAgICAgbV9jb3VsZFRh
a2VTbG93UGF0aCA9IHRydWU7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKGV4aXRTaXRlRGF0
YS50YWtlc1Nsb3dQYXRoKQotICAgICAgICByZXN1bHQubV9jb3VsZFRha2VTbG93UGF0aCA9IHRy
dWU7CiAgICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBpZiAoZXhpdFNpdGVEYXRhLnRha2Vz
U2xvd1BhdGguaXNTZXQoaW5saW5lS2luZCkpCisgICAgICAgIG1fY291bGRUYWtlU2xvd1BhdGgg
PSB0cnVlOwogfQotI2VuZGlmCiAKLXZvaWQgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVERkdTdGF0
dXNlcygKLSAgICBDb2RlQmxvY2sqIGRmZ0NvZGVCbG9jaywgQ2FsbExpbmtTdGF0dXM6OkNvbnRl
eHRNYXAmIG1hcCkKK0NhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAor
ICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLAorICAg
IGNvbnN0IElDU3RhdHVzTWFwJiBiYXNlbGluZU1hcCwgY29uc3QgSUNTdGF0dXNDb250ZXh0U3Rh
Y2smIG9wdGltaXplZFN0YWNrKQogewotI2lmIEVOQUJMRShERkdfSklUKQotICAgIFJFTEVBU0Vf
QVNTRVJUKGRmZ0NvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCk7Ci0gICAg
Q29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IGRmZ0NvZGVCbG9jay0+YWx0ZXJuYXRpdmUo
KTsKLSAgICBmb3IgKGF1dG8gaXRlciA9IGRmZ0NvZGVCbG9jay0+Y2FsbExpbmtJbmZvc0JlZ2lu
KCk7ICEhaXRlcjsgKytpdGVyKSB7Ci0gICAgICAgIENhbGxMaW5rSW5mbyYgaW5mbyA9ICoqaXRl
cjsKLSAgICAgICAgaWYgKGluZm8uaXNEaXJlY3QoKSkgewotICAgICAgICAgICAgLy8gSWYgdGhl
IERGRyB3YXMgYWJsZSB0byBnZXQgYSBkaXJlY3QgY2FsbCB0aGVuIHByb2JhYmx5IHNvIHdpbGwg
d2UuIEhvd2V2ZXIsIHRoZXJlIGlzCi0gICAgICAgICAgICAvLyBhIHJlbW90ZSBjaGFuY2UgdGhh
dCBpdCdzIGJhZCBuZXdzIHRvIGxvc2UgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCB0aGUgREZHIGRp
ZC4gV2UnZAotICAgICAgICAgICAgLy8gaWRlYWxseSBsaWtlIHRvIGp1c3Qga25vdyB0aGF0IHRo
ZSBERkcgaGFkIGVtaXR0ZWQgYSBEaXJlY3RDYWxsLgotICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIH0KLSAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gaW5mby5jb2RlT3JpZ2lu
KCk7Ci0gICAgICAgIAotICAgICAgICAvLyBDaGVjayBpZiB3ZSBoYWQgYWxyZWFkeSBwcmV2aW91
c2x5IG1hZGUgYSB0ZXJyaWJsZSBtaXN0YWtlIGluIHRoZSBGVEwgZm9yIHRoaXMKLSAgICAgICAg
Ly8gY29kZSBvcmlnaW4uIE5vdGUgdGhhdCB0aGlzIGlzIGFwcHJveGltYXRlIGJlY2F1c2Ugd2Ug
Y291bGQgaGF2ZSBhIG1vbm92YXJpYW50Ci0gICAgICAgIC8vIGlubGluZSBpbiB0aGUgRlRMIHRo
YXQgZW5kZWQgdXAgZmFpbGluZy4gV2Ugc2hvdWxkIGZpeCB0aGF0IGF0IHNvbWUgcG9pbnQgYnkK
LSAgICAgICAgLy8gaGF2aW5nIGRhdGEgc3RydWN0dXJlcyB0byB0cmFjayB0aGUgY29udGV4dCBv
ZiBmcmVxdWVudCBleGl0cy4gVGhpcyBpcyBjdXJyZW50bHkKLSAgICAgICAgLy8gY2hhbGxlbmdp
bmcgYmVjYXVzZSBpdCB3b3VsZCByZXF1aXJlIGNyZWF0aW5nIGEgQ29kZU9yaWdpbi1iYXNlZCBk
YXRhYmFzZSBpbgotICAgICAgICAvLyBiYXNlbGluZSBDb2RlQmxvY2tzLCBidXQgdGhvc2UgQ29k
ZUJsb2NrcyBkb24ndCByZWFsbHkgaGF2ZSBhIHBsYWNlIHRvIHB1dCB0aGUKLSAgICAgICAgLy8g
SW5saW5lQ2FsbEZyYW1lcy4KLSAgICAgICAgQ29kZUJsb2NrKiBjdXJyZW50QmFzZWxpbmUgPQot
ICAgICAgICAgICAgYmFzZWxpbmVDb2RlQmxvY2tGb3JPcmlnaW5BbmRCYXNlbGluZUNvZGVCbG9j
ayhjb2RlT3JpZ2luLCBiYXNlbGluZUNvZGVCbG9jayk7Ci0gICAgICAgIEV4aXRTaXRlRGF0YSBl
eGl0U2l0ZURhdGEgPSBjb21wdXRlRXhpdFNpdGVEYXRhKGN1cnJlbnRCYXNlbGluZSwgY29kZU9y
aWdpbi5ieXRlY29kZUluZGV4KTsKLSAgICAgICAgCi0gICAgICAgIHsKLSAgICAgICAgICAgIENv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoZGZnQ29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAg
ICAgbWFwLmFkZChpbmZvLmNvZGVPcmlnaW4oKSwgY29tcHV0ZUZvcihsb2NrZXIsIGRmZ0NvZGVC
bG9jaywgaW5mbywgZXhpdFNpdGVEYXRhKSk7Ci0gICAgICAgIH0KKyAgICBpZiAoQ2FsbExpbmtT
dGF0dXNJbnRlcm5hbDo6dmVyYm9zZSkKKyAgICAgICAgZGF0YUxvZygiRmlndXJpbmcgb3V0IGNh
bGwgcHJvZmlsaW5nIGZvciAiLCBjb2RlT3JpZ2luLCAiXG4iKTsKKyAgICBFeGl0U2l0ZURhdGEg
ZXhpdFNpdGVEYXRhID0gY29tcHV0ZUV4aXRTaXRlRGF0YShwcm9maWxlZEJsb2NrLCBjb2RlT3Jp
Z2luLmJ5dGVjb2RlSW5kZXgpOworICAgIGlmIChDYWxsTGlua1N0YXR1c0ludGVybmFsOjp2ZXJi
b3NlKSB7CisgICAgICAgIGRhdGFMb2coInRha2VzU2xvd1BhdGggPSAiLCBleGl0U2l0ZURhdGEu
dGFrZXNTbG93UGF0aCwgIlxuIik7CisgICAgICAgIGRhdGFMb2coImJhZEZ1bmN0aW9uID0gIiwg
ZXhpdFNpdGVEYXRhLmJhZEZ1bmN0aW9uLCAiXG4iKTsKICAgICB9Ci0jZWxzZQotICAgIFVOVVNF
RF9QQVJBTShkZmdDb2RlQmxvY2spOwotI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQogICAgIAot
ICAgIGlmIChDYWxsTGlua1N0YXR1c0ludGVybmFsOjp2ZXJib3NlKSB7Ci0gICAgICAgIGRhdGFM
b2coIkNvbnRleHQgbWFwOlxuIik7Ci0gICAgICAgIENvbnRleHRNYXA6Oml0ZXJhdG9yIGl0ZXIg
PSBtYXAuYmVnaW4oKTsKLSAgICAgICAgQ29udGV4dE1hcDo6aXRlcmF0b3IgZW5kID0gbWFwLmVu
ZCgpOwotICAgICAgICBmb3IgKDsgaXRlciAhPSBlbmQ7ICsraXRlcikgewotICAgICAgICAgICAg
ZGF0YUxvZygiICAgICIsIGl0ZXItPmtleSwgIjpcbiIpOwotICAgICAgICAgICAgZGF0YUxvZygi
ICAgICAgICAiLCBpdGVyLT52YWx1ZSwgIlxuIik7CisgICAgZm9yIChjb25zdCBJQ1N0YXR1c0Nv
bnRleHQqIGNvbnRleHQgOiBvcHRpbWl6ZWRTdGFjaykgeworICAgICAgICBpZiAoQ2FsbExpbmtT
dGF0dXNJbnRlcm5hbDo6dmVyYm9zZSkKKyAgICAgICAgICAgIGRhdGFMb2coIkV4YW1pbmluZyBz
dGF0dXMgaW4gIiwgcG9pbnRlckR1bXAoY29udGV4dC0+b3B0aW1pemVkQ29kZUJsb2NrKSwgIlxu
Iik7CisgICAgICAgIElDU3RhdHVzIHN0YXR1cyA9IGNvbnRleHQtPmdldChjb2RlT3JpZ2luKTsK
KyAgICAgICAgCisgICAgICAgIC8vIElmIHdlIGhhdmUgYm90aCBhIENhbGxMaW5rU3RhdHVzIGFu
ZCBhIGNhbGxMaW5rSW5mbyBmb3IgdGhlIHNhbWUgb3JpZ2luLCB0aGVuIGl0IG1lYW5zIG9uZQor
ICAgICAgICAvLyBvZiB0d28gdGhpbmdzOgorICAgICAgICAvLworICAgICAgICAvLyAxKSBXZSBp
bml0aWFsbHkgdGhvdWdodCB0aGF0IHdlJ2QgYmUgYWJsZSB0byBpbmxpbmUgdGhpcyBjYWxsIHNv
IHdlIHJlY29yZGVkIGEgc3RhdHVzIGJ1dAorICAgICAgICAvLyAgICB0aGVuIHdlIHJlYWxpemVk
IHRoYXQgaXQgd2FzIHBvaW50bGVzcyBhbmQgZ2F2ZSB1cCBhbmQgZW1pdHRlZCBhIG5vcm1hbCBj
YWxsIGFueXdheS4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gMikgV2UgZGlkIGEgcG9seW1vcnBo
aWMgY2FsbCBpbmxpbmUgdGhhdCBoYWQgYSBzbG93IHBhdGggY2FzZS4KKyAgICAgICAgLy8KKyAg
ICAgICAgLy8gSW4gdGhlIGZpcnN0IGNhc2UsIGl0J3MgZXNzZW50aWFsIHRoYXQgd2UgdXNlIHRo
ZSBjYWxsTGlua0luZm8sIHNpbmNlIHRoZSBzdGF0dXMgbWF5IGJlCisgICAgICAgIC8vIHBvbHlt
b3JwaGljIGJ1dCB0aGUgbGluayBpbmZvIGJlbmVmaXRzIGZyb20gcG9seXZhcmlhbnQgcHJvZmls
aW5nLgorICAgICAgICAvLworICAgICAgICAvLyBJbiB0aGUgc2Vjb25kIGNhc2UsIGl0J3MgZXNz
ZW50aWFsIHRoYXQgd2UgdXNlIHRoZSBzdGF0dXMsIHNpbmNlIHRoZSBjYWxsTGlua0luZm8KKyAg
ICAgICAgLy8gY29ycmVzcG9uZHMgdG8gdGhlIHNsb3cgY2FzZS4KKyAgICAgICAgLy8KKyAgICAg
ICAgLy8gSXQgd291bGQgYmUgYW5ub3lpbmcgdG8gZGlzdGluZ3Vpc2ggdGhvc2UgdHdvIGNhc2Vz
LiBIb3dldmVyLCB3ZSBrbm93IHRoYXQ6CisgICAgICAgIC8vCisgICAgICAgIC8vIElmIHRoZSBm
aXJzdCBjYXNlIGhhcHBlbnMgaW4gdGhlIEZUTCwgdGhlbiBpdCBtZWFucyB0aGF0IGV2ZW4gd2l0
aCBwb2x5dmFyaWFudCBwcm9maWxpbmcsCisgICAgICAgIC8vIHdlIGZhaWxlZCB0byBkbyBhbnl0
aGluZyB1c2VmdWwuIFRoYXQgc3VnZ2VzdHMgdGhhdCBpbiB0aGUgRlRMLCBpdCdzIE9LIHRvIHBy
aW9yaXRpemUgdGhlCisgICAgICAgIC8vIHN0YXR1cy4gVGhhdCBzdGF0dXMgd2lsbCBhZ2FpbiB0
ZWxsIHVzIHRvIG5vdCBkbyBhbnl0aGluZyB1c2VmdWwuCisgICAgICAgIC8vCisgICAgICAgIC8v
IFRoZSBzZWNvbmQgY2FzZSBvbmx5IGhhcHBlbnMgaW4gdGhlIEZUTC4KKyAgICAgICAgLy8KKyAg
ICAgICAgLy8gVGhlcmVmb3JlLCB3ZSBwcmVmZXIgdGhlIHN0YXR1cyBpbiB0aGUgRlRMIGFuZCB0
aGUgaW5mbyBpbiB0aGUgREZHLgorICAgICAgICAvLworICAgICAgICAvLyBMdWNraWx5LCB0aGlz
IGNhc2UgZG9lc24ndCBtYXR0ZXIgZm9yIHRoZSBvdGhlciBJQ1N0YXR1c2VzLCBzaW5jZSB0aGV5
IG5ldmVyIGRvIHRoZQorICAgICAgICAvLyBmYXN0LXBhdGgtc2xvdy1wYXRoIGNvbnRyb2wtZmxv
dy1kaWFtb25kIHN0eWxlIG9mIElDIGlubGluaW5nLiBJdCdzIGVpdGhlciBhbGwgZmFzdCBwYXRo
CisgICAgICAgIC8vIG9yIGl0J3MgYSBmdWxsIElDLiBTbywgZm9yIHRoZW0sIGlmIHRoZXJlIGlz
IGFuIElDIHN0YXR1cyB0aGVuIGl0IG1lYW5zIGNhc2UgKDEpLgorICAgICAgICAKKyAgICAgICAg
Ym9vbCBjaGVja1N0YXR1c0ZpcnN0ID0gY29udGV4dC0+b3B0aW1pemVkQ29kZUJsb2NrLT5qaXRU
eXBlKCkgPT0gSklUQ29kZTo6RlRMSklUOworICAgICAgICAKKyAgICAgICAgYXV0byBjaGVja0lu
Zm8gPSBbJl0gKCkgLT4gQ2FsbExpbmtTdGF0dXMgeworICAgICAgICAgICAgaWYgKCFzdGF0dXMu
Y2FsbExpbmtJbmZvKQorICAgICAgICAgICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygpOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoQ2FsbExpbmtTdGF0dXNJbnRlcm5hbDo6dmVy
Ym9zZSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJIYXZlIENhbGxMaW5rSW5mbyB3aXRoIENv
ZGVPcmlnaW4gPSAiLCBzdGF0dXMuY2FsbExpbmtJbmZvLT5jb2RlT3JpZ2luKCksICJcbiIpOwor
ICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb250ZXh0LT5vcHRpbWl6ZWRD
b2RlQmxvY2stPm1fbG9jayk7CisgICAgICAgICAgICBDYWxsTGlua1N0YXR1cyByZXN1bHQgPSBj
b21wdXRlRm9yKAorICAgICAgICAgICAgICAgIGxvY2tlciwgY29udGV4dC0+b3B0aW1pemVkQ29k
ZUJsb2NrLCAqc3RhdHVzLmNhbGxMaW5rSW5mbywgZXhpdFNpdGVEYXRhLAorICAgICAgICAgICAg
ICAgIGNvZGVPcmlnaW4uZXhpdGluZ0lubGluZUtpbmQoKSk7CisgICAgICAgICAgICBpZiAoQ2Fs
bExpbmtTdGF0dXNJbnRlcm5hbDo6dmVyYm9zZSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJH
b3QgcmVzdWx0OiAiLCByZXN1bHQsICJcbiIpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gY2hlY2tTdGF0dXMgPSBbJl0gKCkg
LT4gQ2FsbExpbmtTdGF0dXMgeworICAgICAgICAgICAgaWYgKCFzdGF0dXMuY2FsbFN0YXR1cykK
KyAgICAgICAgICAgICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoKTsKKyAgICAgICAgICAgIENh
bGxMaW5rU3RhdHVzIHJlc3VsdCA9ICpzdGF0dXMuY2FsbFN0YXR1czsKKyAgICAgICAgICAgIGlm
IChDYWxsTGlua1N0YXR1c0ludGVybmFsOjp2ZXJib3NlKQorICAgICAgICAgICAgICAgIGRhdGFM
b2coIkhhdmUgY2FsbFN0YXR1czogIiwgcmVzdWx0LCAiXG4iKTsKKyAgICAgICAgICAgIHJlc3Vs
dC5hY2NvdW50Rm9yRXhpdHMoZXhpdFNpdGVEYXRhLCBjb2RlT3JpZ2luLmV4aXRpbmdJbmxpbmVL
aW5kKCkpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfTsKKyAgICAgICAg
CisgICAgICAgIGlmIChjaGVja1N0YXR1c0ZpcnN0KSB7CisgICAgICAgICAgICBpZiAoQ2FsbExp
bmtTdGF0dXMgcmVzdWx0ID0gY2hlY2tTdGF0dXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgICAgICAgICAgaWYgKENhbGxMaW5rU3RhdHVzIHJlc3VsdCA9IGNoZWNrSW5m
bygpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKENhbGxMaW5rU3RhdHVzIHJlc3Vs
dCA9IGNoZWNrSW5mbygpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgaWYg
KENhbGxMaW5rU3RhdHVzIHJlc3VsdCA9IGNoZWNrU3RhdHVzKCkpCisgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KLX0KLQotQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNv
bXB1dGVGb3IoCi0gICAgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBDb2RlT3JpZ2luIGNvZGVP
cmlnaW4sCi0gICAgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBiYXNlbGluZU1hcCwgY29uc3QgQ2Fs
bExpbmtTdGF0dXM6OkNvbnRleHRNYXAmIGRmZ01hcCkKLXsKLSAgICBhdXRvIGl0ZXIgPSBkZmdN
YXAuZmluZChjb2RlT3JpZ2luKTsKLSAgICBpZiAoaXRlciAhPSBkZmdNYXAuZW5kKCkpCi0gICAg
ICAgIHJldHVybiBpdGVyLT52YWx1ZTsKICAgICAKLSAgICByZXR1cm4gY29tcHV0ZUZvcihwcm9m
aWxlZEJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIGJhc2VsaW5lTWFwKTsKKyAgICBD
YWxsTGlua1N0YXR1cyByZXN1bHQgPSBjb21wdXRlRm9yKHByb2ZpbGVkQmxvY2ssIGNvZGVPcmln
aW4uYnl0ZWNvZGVJbmRleCwgYmFzZWxpbmVNYXAsIGV4aXRTaXRlRGF0YSk7CisgICAgaWYgKENh
bGxMaW5rU3RhdHVzSW50ZXJuYWw6OnZlcmJvc2UpCisgICAgICAgIGRhdGFMb2coIkNvbXB1dGVk
IGZyb20gYmFzZWxpbmU6ICIsIHJlc3VsdCwgIlxuIik7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAogdm9pZCBDYWxsTGlua1N0YXR1czo6c2V0UHJvdmVuQ29uc3RhbnRDYWxsZWUoQ2FsbFZhcmlh
bnQgdmFyaWFudCkKQEAgLTMyNyw2ICszOTgsMjQgQEAgdm9pZCBDYWxsTGlua1N0YXR1czo6bWFr
ZUNsb3N1cmVDYWxsKCkKICAgICBtX3ZhcmlhbnRzID0gZGVzcGVjaWZpZWRWYXJpYW50TGlzdCht
X3ZhcmlhbnRzKTsKIH0KIAorYm9vbCBDYWxsTGlua1N0YXR1czo6ZmluYWxpemUoKQoreworICAg
IGZvciAoQ2FsbFZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKSB7CisgICAgICAgIGlmICgh
dmFyaWFudC5maW5hbGl6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDYWxsTGlua1N0YXR1czo6ZmlsdGVyKFZNJiB2bSwg
SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBtX3ZhcmlhbnRzLnJlbW92ZUFsbE1hdGNoaW5nKAorICAg
ICAgICBbJl0gKENhbGxWYXJpYW50JiB2YXJpYW50KSAtPiBib29sIHsKKyAgICAgICAgICAgIHZh
cmlhbnQuZmlsdGVyKHZtLCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gIXZhcmlhbnQ7Cisg
ICAgICAgIH0pOworfQorCiB2b2lkIENhbGxMaW5rU3RhdHVzOjpkdW1wKFByaW50U3RyZWFtJiBv
dXQpIGNvbnN0CiB7CiAgICAgaWYgKCFpc1NldCgpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAkocmV2aXNpb24gMjMyMjI3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJDYWxsVmFyaWFudC5oIgogI2lu
Y2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJDb25jdXJyZW50SlNMb2NrLmgiCisjaW5j
bHVkZSAiRXhpdEZsYWcuaCIKKyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgogI2luY2x1ZGUgIkpT
Q0pTVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC02MCwzOSArNjIsMzMgQEAgcHVibGlj
OgogICAgIHsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVG
b3IoCi0gICAgICAgIENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIGNvbnN0IENh
bGxMaW5rSW5mb01hcCYpOwotCiAgICAgc3RydWN0IEV4aXRTaXRlRGF0YSB7Ci0gICAgICAgIGJv
b2wgdGFrZXNTbG93UGF0aCB7IGZhbHNlIH07Ci0gICAgICAgIGJvb2wgYmFkRnVuY3Rpb24geyBm
YWxzZSB9OworICAgICAgICBFeGl0RmxhZyB0YWtlc1Nsb3dQYXRoOworICAgICAgICBFeGl0Rmxh
ZyBiYWRGdW5jdGlvbjsKICAgICB9OwogICAgIHN0YXRpYyBFeGl0U2l0ZURhdGEgY29tcHV0ZUV4
aXRTaXRlRGF0YShDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKICAgICAKKyAg
ICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCB1bnNpZ25lZCBi
eXRlY29kZUluZGV4LCBjb25zdCBJQ1N0YXR1c01hcCYsIEV4aXRTaXRlRGF0YSk7CisgICAgc3Rh
dGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCwgY29uc3QgSUNTdGF0dXNNYXAmKTsKKwogI2lmIEVOQUJMRShKSVQpCiAgICAgLy8g
Q29tcHV0ZXMgdGhlIHN0YXR1cyBhc3N1bWluZyB0aGF0IHdlIG5ldmVyIHRvb2sgc2xvdyBwYXRo
IGFuZCBuZXZlciBwcmV2aW91c2x5CiAgICAgLy8gZXhpdGVkLgogICAgIHN0YXRpYyBDYWxsTGlu
a1N0YXR1cyBjb21wdXRlRm9yKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayos
IENhbGxMaW5rSW5mbyYpOworICAgIAorICAgIC8vIENvbXB1dGVzIHRoZSBzdGF0dXMgYWNjb3Vu
dGluZyBmb3IgZXhpdHMuCiAgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoCi0g
ICAgICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayosIENhbGxMaW5rSW5m
byYsIEV4aXRTaXRlRGF0YSk7CisgICAgICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENv
ZGVCbG9jayosIENhbGxMaW5rSW5mbyYsIEV4aXRTaXRlRGF0YSwgRXhpdGluZ0lubGluZUtpbmQg
PSBFeGl0RnJvbUFueUlubGluZUtpbmQpOwogI2VuZGlmCiAgICAgCi0gICAgdHlwZWRlZiBIYXNo
TWFwPENvZGVPcmlnaW4sIENhbGxMaW5rU3RhdHVzLCBDb2RlT3JpZ2luQXBwcm94aW1hdGVIYXNo
PiBDb250ZXh0TWFwOwotICAgIAotICAgIC8vIENvbXB1dGVzIGFsbCBvZiB0aGUgc3RhdHVzZXMg
b2YgdGhlIERGRyBjb2RlIGJsb2NrLiBEb2Vzbid0IGluY2x1ZGUgc3RhdHVzZXMgdGhhdCBoYWQK
LSAgICAvLyBubyBpbmZvcm1hdGlvbi4gQ3VycmVudGx5IHdlIHVzZSB0aGlzIHdoZW4gY29tcGls
aW5nIEZUTCBjb2RlLCB0byBlbmFibGUgcG9seXZhcmlhbnQKLSAgICAvLyBpbmxpbmluZy4KLSAg
ICBzdGF0aWMgdm9pZCBjb21wdXRlREZHU3RhdHVzZXMoQ29kZUJsb2NrKiBkZmdDb2RlQmxvY2ss
IENvbnRleHRNYXAmKTsKLSAgICAKLSAgICAvLyBIZWxwZXIgdGhhdCBmaXJzdCBjb25zdWx0cyB0
aGUgQ29udGV4dE1hcCBhbmQgdGhlbiBkb2VzIGNvbXB1dGVGb3IoKS4KICAgICBzdGF0aWMgQ2Fs
bExpbmtTdGF0dXMgY29tcHV0ZUZvcigKLSAgICAgICAgQ29kZUJsb2NrKiwgQ29kZU9yaWdpbiwg
Y29uc3QgQ2FsbExpbmtJbmZvTWFwJiwgY29uc3QgQ29udGV4dE1hcCYpOworICAgICAgICBDb2Rl
QmxvY2sqLCBDb2RlT3JpZ2luLCBjb25zdCBJQ1N0YXR1c01hcCYsIGNvbnN0IElDU3RhdHVzQ29u
dGV4dFN0YWNrJik7CiAgICAgCiAgICAgdm9pZCBzZXRQcm92ZW5Db25zdGFudENhbGxlZShDYWxs
VmFyaWFudCk7CiAgICAgCiAgICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuICFtX3Zhcmlh
bnRzLmlzRW1wdHkoKSB8fCBtX2NvdWxkVGFrZVNsb3dQYXRoOyB9CiAgICAgCi0gICAgYm9vbCBv
cGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQoKTsgfQorICAgIGV4cGxpY2l0IG9wZXJh
dG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBpc1NldCgpOyB9CiAgICAgCiAgICAgYm9vbCBjb3Vs
ZFRha2VTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bGRUYWtlU2xvd1BhdGg7IH0KICAg
ICAKQEAgLTExMCw2ICsxMDYsMTAgQEAgcHVibGljOgogICAgIAogICAgIHVuc2lnbmVkIG1heE51
bUFyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fbWF4TnVtQXJndW1lbnRzOyB9CiAgICAgCisg
ICAgYm9vbCBmaW5hbGl6ZSgpOworICAgIAorICAgIHZvaWQgZmlsdGVyKFZNJiwgSlNWYWx1ZSk7
CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgCiBwcml2YXRl
OgpAQCAtMTIxLDYgKzEyMSw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNvbnN0IENvbmN1cnJlbnRK
U0xvY2tlciYsIENhbGxMaW5rSW5mbyYpOwogI2VuZGlmCiAgICAgCisgICAgdm9pZCBhY2NvdW50
Rm9yRXhpdHMoRXhpdFNpdGVEYXRhLCBFeGl0aW5nSW5saW5lS2luZCk7CisgICAgCiAgICAgQ2Fs
bFZhcmlhbnRMaXN0IG1fdmFyaWFudHM7CiAgICAgYm9vbCBtX2NvdWxkVGFrZVNsb3dQYXRoIHsg
ZmFsc2UgfTsKICAgICBib29sIG1faXNQcm92ZWQgeyBmYWxzZSB9OwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuY3BwCShyZXZpc2lvbiAyMzIy
MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDYgKzMxLDM1IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCiti
b29sIENhbGxWYXJpYW50OjpmaW5hbGl6ZSgpCit7CisgICAgaWYgKG1fY2FsbGVlICYmICFIZWFw
Ojppc01hcmtlZChtX2NhbGxlZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwordm9pZCBDYWxsVmFyaWFudDo6ZmlsdGVyKFZNJiB2bSwgSlNWYWx1ZSB2YWx1
ZSkKK3sKKyAgICBpZiAoISp0aGlzKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKCFp
c0Nsb3N1cmVDYWxsKCkpIHsKKyAgICAgICAgaWYgKG5vbkV4ZWN1dGFibGVDYWxsZWUoKSAhPSB2
YWx1ZSkKKyAgICAgICAgICAgICp0aGlzID0gQ2FsbFZhcmlhbnQoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICAKKyAgICBpZiAoSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0R5bmFtaWND
YXN0PEpTRnVuY3Rpb24qPih2bSwgdmFsdWUpKSB7CisgICAgICAgIGlmIChmdW5jdGlvbi0+ZXhl
Y3V0YWJsZSgpID09IGV4ZWN1dGFibGUoKSkKKyAgICAgICAgICAgICp0aGlzID0gQ2FsbFZhcmlh
bnQoZnVuY3Rpb24pOworICAgICAgICBlbHNlCisgICAgICAgICAgICAqdGhpcyA9IENhbGxWYXJp
YW50KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgKnRoaXMgPSBDYWxsVmFy
aWFudCgpOworfQorCiB2b2lkIENhbGxWYXJpYW50OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNv
bnN0CiB7CiAgICAgaWYgKCEqdGhpcykgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxWYXJpYW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxWYXJpYW50LmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTcx
LDcgKzcxLDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAgCi0gICAgYm9vbCBvcGVyYXRv
ciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsZWU7IH0KKyAgICBleHBsaWNpdCBvcGVyYXRvciBi
b29sKCkgY29uc3QgeyByZXR1cm4gISFtX2NhbGxlZTsgfQogICAgIAogICAgIC8vIElmIHRoaXMg
dmFyaWFudCByZWZlcnMgdG8gYSBmdW5jdGlvbiwgY2hhbmdlIGl0IHRvIHJlZmVyIHRvIGl0cyBl
eGVjdXRhYmxlLgogICAgIEFMV0FZU19JTkxJTkUgQ2FsbFZhcmlhbnQgZGVzcGVjaWZpZWRDbG9z
dXJlKCkgY29uc3QKQEAgLTEzNiw2ICsxMzYsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAgICAgCisgICAgYm9vbCBmaW5hbGl6ZSgpOworICAgIAorICAgIHZv
aWQgZmlsdGVyKFZNJiwgSlNWYWx1ZSk7CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0OwogICAgIAogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBj
b25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsMjQgKzIzOCwyMCBAQCB2b2lkIENv
ZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKCkKIAogdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQ
cmludFN0cmVhbSYgb3V0KQogewotICAgIFN0dWJJbmZvTWFwIHN0dWJJbmZvczsKLSAgICBDYWxs
TGlua0luZm9NYXAgY2FsbExpbmtJbmZvczsKLSAgICBnZXRTdHViSW5mb01hcChzdHViSW5mb3Mp
OwotICAgIGdldENhbGxMaW5rSW5mb01hcChjYWxsTGlua0luZm9zKTsKLSAgICBCeXRlY29kZUR1
bXBlcjxDb2RlQmxvY2s+OjpkdW1wQmxvY2sodGhpcywgaW5zdHJ1Y3Rpb25zKCksIG91dCwgc3R1
YkluZm9zLCBjYWxsTGlua0luZm9zKTsKKyAgICBJQ1N0YXR1c01hcCBzdGF0dXNNYXA7CisgICAg
Z2V0SUNTdGF0dXNNYXAoc3RhdHVzTWFwKTsKKyAgICBCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+
OjpkdW1wQmxvY2sodGhpcywgaW5zdHJ1Y3Rpb25zKCksIG91dCwgc3RhdHVzTWFwKTsKIH0KIAot
dm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0
cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFw
JiBzdHViSW5mb3MsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYgY2FsbExpbmtJbmZvcykKK3ZvaWQg
Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rp
b24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3Rh
dHVzTWFwKQogewotICAgIEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBCeXRlY29kZSh0
aGlzLCBvdXQsIGJlZ2luLCBpdCwgc3R1YkluZm9zLCBjYWxsTGlua0luZm9zKTsKKyAgICBCeXRl
Y29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wQnl0ZWNvZGUodGhpcywgb3V0LCBiZWdpbiwgaXQs
IHN0YXR1c01hcCk7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCi0gICAgUHJp
bnRTdHJlYW0mIG91dCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsCi0gICAgY29uc3QgU3R1Yklu
Zm9NYXAmIHN0dWJJbmZvcywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBjYWxsTGlua0luZm9zKQor
dm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCB1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBjb25z
dCBJbnN0cnVjdGlvbiogaXQgPSAmaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdOwotICAg
IGR1bXBCeXRlY29kZShvdXQsIGluc3RydWN0aW9ucygpLmJlZ2luKCksIGl0LCBzdHViSW5mb3Ms
IGNhbGxMaW5rSW5mb3MpOworICAgIGR1bXBCeXRlY29kZShvdXQsIGluc3RydWN0aW9ucygpLmJl
Z2luKCksIGl0LCBzdGF0dXNNYXApOwogfQogCiAjZGVmaW5lIEZPUl9FQUNIX01FTUJFUl9WRUNU
T1IobWFjcm8pIFwKQEAgLTExNjYsNiArMTE2Miw5IEBAIHZvaWQgQ29kZUJsb2NrOjpwcm9wYWdh
dGVUcmFuc2l0aW9ucyhjb24KICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBpZiAoSklUQ29kZTo6
aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpIHsKICAgICAgICAgREZHOjpDb21tb25EYXRhKiBk
ZmdDb21tb24gPSBtX2ppdENvZGUtPmRmZ0NvbW1vbigpOworICAgICAgICAKKyAgICAgICAgZGZn
Q29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLm1hcmtJZkNoZWFwKHZpc2l0b3IpOworICAgICAgICAK
ICAgICAgICAgZm9yIChhdXRvJiB3ZWFrUmVmZXJlbmNlIDogZGZnQ29tbW9uLT53ZWFrU3RydWN0
dXJlUmVmZXJlbmNlcykKICAgICAgICAgICAgIHdlYWtSZWZlcmVuY2UtPm1hcmtJZkNoZWFwKHZp
c2l0b3IpOwogCkBAIC0xMzk3LDU3ICsxMzk2LDQzIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6
ZVVuY29uZGl0aW9uYWxseSgKICAgICAgICAgZmluYWxpemVCYXNlbGluZUpJVElubGluZUNhY2hl
cygpOwogI2VuZGlmCiAKLSAgICBWTTo6U3BhY2VBbmRGaW5hbGl6ZXJTZXQ6OmZpbmFsaXplclNl
dEZvcigqc3Vic3BhY2UoKSkucmVtb3ZlKHRoaXMpOwotfQotCi12b2lkIENvZGVCbG9jazo6Z2V0
U3R1YkluZm9NYXAoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgU3R1YkluZm9NYXAmIHJlc3Vs
dCkKLXsKLSNpZiBFTkFCTEUoSklUKQotICAgIGlmIChKSVRDb2RlOjppc0pJVChqaXRUeXBlKCkp
KQotICAgICAgICB0b0hhc2hNYXAobV9zdHViSW5mb3MsIGdldFN0cnVjdHVyZVN0dWJJbmZvQ29k
ZU9yaWdpbiwgcmVzdWx0KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHJlc3VsdCk7Ci0jZW5k
aWYKLX0KLQotdm9pZCBDb2RlQmxvY2s6OmdldFN0dWJJbmZvTWFwKFN0dWJJbmZvTWFwJiByZXN1
bHQpCi17Ci0gICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgIGdldFN0
dWJJbmZvTWFwKGxvY2tlciwgcmVzdWx0KTsKLX0KLQotdm9pZCBDb2RlQmxvY2s6OmdldENhbGxM
aW5rSW5mb01hcChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDYWxsTGlua0luZm9NYXAmIHJl
c3VsdCkKLXsKLSNpZiBFTkFCTEUoSklUKQotICAgIGlmIChKSVRDb2RlOjppc0pJVChqaXRUeXBl
KCkpKQotICAgICAgICB0b0hhc2hNYXAobV9jYWxsTGlua0luZm9zLCBnZXRDYWxsTGlua0luZm9D
b2RlT3JpZ2luLCByZXN1bHQpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKLSNl
bmRpZgotfQorICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0VHlwZSgpKSkgewor
ICAgICAgICBERkc6OkNvbW1vbkRhdGEqIGRmZ0NvbW1vbiA9IG1faml0Q29kZS0+ZGZnQ29tbW9u
KCk7CisgICAgICAgIGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5maW5hbGl6ZSgpOworICAg
IH0KIAotdm9pZCBDb2RlQmxvY2s6OmdldENhbGxMaW5rSW5mb01hcChDYWxsTGlua0luZm9NYXAm
IHJlc3VsdCkKLXsKLSAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAg
Z2V0Q2FsbExpbmtJbmZvTWFwKGxvY2tlciwgcmVzdWx0KTsKKyAgICBWTTo6U3BhY2VBbmRGaW5h
bGl6ZXJTZXQ6OmZpbmFsaXplclNldEZvcigqc3Vic3BhY2UoKSkucmVtb3ZlKHRoaXMpOwogfQog
Ci12b2lkIENvZGVCbG9jazo6Z2V0QnlWYWxJbmZvTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tl
ciYsIEJ5VmFsSW5mb01hcCYgcmVzdWx0KQordm9pZCBDb2RlQmxvY2s6OmdldElDU3RhdHVzTWFw
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIElDU3RhdHVzTWFwJiByZXN1bHQpCiB7CiAjaWYg
RU5BQkxFKEpJVCkKICAgICBpZiAoSklUQ29kZTo6aXNKSVQoaml0VHlwZSgpKSkgewotICAgICAg
ICBmb3IgKGF1dG8qIGJ5VmFsSW5mbyA6IG1fYnlWYWxJbmZvcykKLSAgICAgICAgICAgIHJlc3Vs
dC5hZGQoQ29kZU9yaWdpbihieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXgpLCBieVZhbEluZm8pOwor
ICAgICAgICBmb3IgKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA6IG1fc3R1YkluZm9zKQor
ICAgICAgICAgICAgcmVzdWx0LmFkZChzdHViSW5mby0+Y29kZU9yaWdpbiwgSUNTdGF0dXMoKSku
aXRlcmF0b3ItPnZhbHVlLnN0dWJJbmZvID0gc3R1YkluZm87CisgICAgICAgIGZvciAoQ2FsbExp
bmtJbmZvKiBjYWxsTGlua0luZm8gOiBtX2NhbGxMaW5rSW5mb3MpCisgICAgICAgICAgICByZXN1
bHQuYWRkKGNhbGxMaW5rSW5mby0+Y29kZU9yaWdpbigpLCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+
dmFsdWUuY2FsbExpbmtJbmZvID0gY2FsbExpbmtJbmZvOworICAgICAgICBmb3IgKEJ5VmFsSW5m
byogYnlWYWxJbmZvIDogbV9ieVZhbEluZm9zKQorICAgICAgICAgICAgcmVzdWx0LmFkZChDb2Rl
T3JpZ2luKGJ5VmFsSW5mby0+Ynl0ZWNvZGVJbmRleCksIElDU3RhdHVzKCkpLml0ZXJhdG9yLT52
YWx1ZS5ieVZhbEluZm8gPSBieVZhbEluZm87CisgICAgICAgIGlmIChKSVRDb2RlOjppc09wdGlt
aXppbmdKSVQoaml0VHlwZSgpKSkgeworICAgICAgICAgICAgREZHOjpDb21tb25EYXRhKiBkZmdD
b21tb24gPSBtX2ppdENvZGUtPmRmZ0NvbW1vbigpOworICAgICAgICAgICAgZm9yIChhdXRvJiBw
YWlyIDogZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLmNhbGxzKQorICAgICAgICAgICAgICAg
IHJlc3VsdC5hZGQocGFpci5maXJzdCwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLmNhbGxT
dGF0dXMgPSBwYWlyLnNlY29uZC5nZXQoKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcGFpciA6
IGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5nZXRzKQorICAgICAgICAgICAgICAgIHJlc3Vs
dC5hZGQocGFpci5maXJzdCwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLmdldFN0YXR1cyA9
IHBhaXIuc2Vjb25kLmdldCgpOworICAgICAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogZGZnQ29t
bW9uLT5yZWNvcmRlZFN0YXR1c2VzLnB1dHMpCisgICAgICAgICAgICAgICAgcmVzdWx0LmFkZChw
YWlyLmZpcnN0LCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUucHV0U3RhdHVzID0gcGFpci5z
ZWNvbmQuZ2V0KCk7CisgICAgICAgIH0KICAgICB9CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShy
ZXN1bHQpOwogI2VuZGlmCiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpnZXRCeVZhbEluZm9NYXAoQnlW
YWxJbmZvTWFwJiByZXN1bHQpCit2b2lkIENvZGVCbG9jazo6Z2V0SUNTdGF0dXNNYXAoSUNTdGF0
dXNNYXAmIHJlc3VsdCkKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9jayk7
Ci0gICAgZ2V0QnlWYWxJbmZvTWFwKGxvY2tlciwgcmVzdWx0KTsKKyAgICBnZXRJQ1N0YXR1c01h
cChsb2NrZXIsIHJlc3VsdCk7CiB9CiAKICNpZiBFTkFCTEUoSklUKQpAQCAtMTUxNCw3ICsxNDk5
LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnJlc2V0SklURGF0YSgpCiAgICAgCiAgICAgLy8gV2UgY2Fu
IGNsZWFyIHRoZXNlIGJlY2F1c2Ugbm8gb3RoZXIgdGhyZWFkIHdpbGwgaGF2ZSByZWZlcmVuY2Vz
IHRvIGFueSBzdHViIGluZm9zLCBjYWxsCiAgICAgLy8gbGluayBpbmZvcywgb3IgYnkgdmFsIGlu
Zm9zIGlmIHdlIGRvbid0IGhhdmUgSklUIGNvZGUuIEF0dGVtcHRzIHRvIHF1ZXJ5IHRoZXNlIGRh
dGEKLSAgICAvLyBzdHJ1Y3R1cmVzIHVzaW5nIHRoZSBjb25jdXJyZW50IEFQSSAoZ2V0U3R1Yklu
Zm9NYXAgYW5kIGZyaWVuZHMpIHdpbGwgcmV0dXJuIG5vdGhpbmcgaWYgd2UKKyAgICAvLyBzdHJ1
Y3R1cmVzIHVzaW5nIHRoZSBjb25jdXJyZW50IEFQSSAoZ2V0SUNTdGF0dXNNYXAgYW5kIGZyaWVu
ZHMpIHdpbGwgcmV0dXJuIG5vdGhpbmcgaWYgd2UKICAgICAvLyBkb24ndCBoYXZlIEpJVCBjb2Rl
LgogICAgIG1fc3R1YkluZm9zLmNsZWFyKCk7CiAgICAgbV9jYWxsTGlua0luZm9zLmNsZWFyKCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZp
c2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJFeHByZXNzaW9u
UmFuZ2VJbmZvLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRhYmxlLmgiCiAjaW5jbHVkZSAi
SGFuZGxlckluZm8uaCIKKyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgogI2luY2x1ZGUgIkluc3Ry
dWN0aW9uLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVENvZGVNYXAuaCIK
QEAgLTk2LDggKzk3LDYgQEAgZW51bSBjbGFzcyBBY2Nlc3NUeXBlIDogaW50OF90OwogCiBzdHJ1
Y3QgQXJpdGhQcm9maWxlOwogCi10eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdpbiwgU3RydWN0dXJl
U3R1YkluZm8qLCBDb2RlT3JpZ2luQXBwcm94aW1hdGVIYXNoPiBTdHViSW5mb01hcDsKLQogZW51
bSBSZW9wdGltaXphdGlvbk1vZGUgeyBEb250Q291bnRSZW9wdGltaXphdGlvbiwgQ291bnRSZW9w
dGltaXphdGlvbiB9OwogCiBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKQEAgLTE5
Niw4ICsxOTUsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGR1bXBCeXRlY29kZSgpOwogICAgIHZv
aWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJik7Ci0gICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJp
bnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlv
biomIGl0LCBjb25zdCBTdHViSW5mb01hcCYgPSBTdHViSW5mb01hcCgpLCBjb25zdCBDYWxsTGlu
a0luZm9NYXAmID0gQ2FsbExpbmtJbmZvTWFwKCkpOwotICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFBy
aW50U3RyZWFtJiBvdXQsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBTdHViSW5mb01h
cCYgPSBTdHViSW5mb01hcCgpLCBjb25zdCBDYWxsTGlua0luZm9NYXAmID0gQ2FsbExpbmtJbmZv
TWFwKCkpOworICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IElu
c3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgSUNTdGF0dXNN
YXAmID0gSUNTdGF0dXNNYXAoKSk7CisgICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0m
IG91dCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IElDU3RhdHVzTWFwJiA9IElDU3Rh
dHVzTWFwKCkpOwogCiAgICAgdm9pZCBkdW1wRXhjZXB0aW9uSGFuZGxlcnMoUHJpbnRTdHJlYW0m
KTsKICAgICB2b2lkIHByaW50U3RydWN0dXJlcyhQcmludFN0cmVhbSYsIGNvbnN0IEluc3RydWN0
aW9uKik7CkBAIC0yMzcsMTQgKzIzNiw4IEBAIHB1YmxpYzoKIAogICAgIHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQ+IGJ5dGVjb2RlT2Zmc2V0RnJvbUNhbGxTaXRlSW5kZXgoQ2FsbFNpdGVJbmRleCk7
CiAKLSAgICB2b2lkIGdldFN0dWJJbmZvTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFN0
dWJJbmZvTWFwJiByZXN1bHQpOwotICAgIHZvaWQgZ2V0U3R1YkluZm9NYXAoU3R1YkluZm9NYXAm
IHJlc3VsdCk7Ci0gICAgCi0gICAgdm9pZCBnZXRDYWxsTGlua0luZm9NYXAoY29uc3QgQ29uY3Vy
cmVudEpTTG9ja2VyJiwgQ2FsbExpbmtJbmZvTWFwJiByZXN1bHQpOwotICAgIHZvaWQgZ2V0Q2Fs
bExpbmtJbmZvTWFwKENhbGxMaW5rSW5mb01hcCYgcmVzdWx0KTsKLQotICAgIHZvaWQgZ2V0QnlW
YWxJbmZvTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5VmFsSW5mb01hcCYgcmVzdWx0
KTsKLSAgICB2b2lkIGdldEJ5VmFsSW5mb01hcChCeVZhbEluZm9NYXAmIHJlc3VsdCk7CisgICAg
dm9pZCBnZXRJQ1N0YXR1c01hcChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBJQ1N0YXR1c01h
cCYgcmVzdWx0KTsKKyAgICB2b2lkIGdldElDU3RhdHVzTWFwKElDU3RhdHVzTWFwJiByZXN1bHQp
OwogICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgSklUQWRkSUMqIGFkZEpJVEFkZElDKEFyaXRo
UHJvZmlsZSosIEluc3RydWN0aW9uKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZU9yaWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
Niw3ICs0Niw3IEBAIHVuc2lnbmVkIENvZGVPcmlnaW46OmlubGluZURlcHRoKCkgY29uc3QKICAg
ICByZXR1cm4gaW5saW5lRGVwdGhGb3JDYWxsRnJhbWUoaW5saW5lQ2FsbEZyYW1lKTsKIH0KIAot
Ym9vbCBDb2RlT3JpZ2luOjppc0FwcHJveGltYXRlbHlFcXVhbFRvKGNvbnN0IENvZGVPcmlnaW4m
IG90aGVyKSBjb25zdAorYm9vbCBDb2RlT3JpZ2luOjppc0FwcHJveGltYXRlbHlFcXVhbFRvKGNv
bnN0IENvZGVPcmlnaW4mIG90aGVyLCBJbmxpbmVDYWxsRnJhbWUqIHRlcm1pbmFsKSBjb25zdAog
ewogICAgIENvZGVPcmlnaW4gYSA9ICp0aGlzOwogICAgIENvZGVPcmlnaW4gYiA9IG90aGVyOwpA
QCAtNjgsMTAgKzY4LDEyIEBAIGJvb2wgQ29kZU9yaWdpbjo6aXNBcHByb3hpbWF0ZWx5RXF1YWxU
bygKICAgICAgICAgaWYgKGEuYnl0ZWNvZGVJbmRleCAhPSBiLmJ5dGVjb2RlSW5kZXgpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgICAgICBpZiAoKCEhYS5pbmxpbmVD
YWxsRnJhbWUpICE9ICghIWIuaW5saW5lQ2FsbEZyYW1lKSkKKyAgICAgICAgYm9vbCBhSGFzSW5s
aW5lQ2FsbEZyYW1lID0gISFhLmlubGluZUNhbGxGcmFtZSAmJiBhLmlubGluZUNhbGxGcmFtZSAh
PSB0ZXJtaW5hbDsKKyAgICAgICAgYm9vbCBiSGFzSW5saW5lQ2FsbEZyYW1lID0gISFiLmlubGlu
ZUNhbGxGcmFtZTsKKyAgICAgICAgaWYgKGFIYXNJbmxpbmVDYWxsRnJhbWUgIT0gYkhhc0lubGlu
ZUNhbGxGcmFtZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAgICAg
IGlmICghYS5pbmxpbmVDYWxsRnJhbWUpCisgICAgICAgIGlmICghYUhhc0lubGluZUNhbGxGcmFt
ZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAKICAgICAgICAgaWYgKGEuaW5s
aW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay5nZXQoKSAhPSBiLmlubGluZUNhbGxGcmFt
ZS0+YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkpCkBAIC04Miw3ICs4NCw3IEBAIGJvb2wgQ29kZU9y
aWdpbjo6aXNBcHByb3hpbWF0ZWx5RXF1YWxUbygKICAgICB9CiB9CiAKLXVuc2lnbmVkIENvZGVP
cmlnaW46OmFwcHJveGltYXRlSGFzaCgpIGNvbnN0Cit1bnNpZ25lZCBDb2RlT3JpZ2luOjphcHBy
b3hpbWF0ZUhhc2goSW5saW5lQ2FsbEZyYW1lKiB0ZXJtaW5hbCkgY29uc3QKIHsKICAgICBpZiAo
IWlzU2V0KCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtOTcsNiArOTksOSBAQCB1bnNpZ25lZCBD
b2RlT3JpZ2luOjphcHByb3hpbWF0ZUhhc2goKSBjCiAgICAgICAgIGlmICghY29kZU9yaWdpbi5p
bmxpbmVDYWxsRnJhbWUpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAKKyAg
ICAgICAgaWYgKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lID09IHRlcm1pbmFsKQorICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgCiAgICAgICAgIHJlc3VsdCArPSBXVEY6OlB0
ckhhc2g8SlNDZWxsKj46Omhhc2goY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmJhc2VsaW5l
Q29kZUJsb2NrLmdldCgpKTsKICAgICAgICAgCiAgICAgICAgIGNvZGVPcmlnaW4gPSBjb2RlT3Jp
Z2luLmlubGluZUNhbGxGcmFtZS0+ZGlyZWN0Q2FsbGVyOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb2RlQmxvY2tIYXNo
LmgiCisjaW5jbHVkZSAiRXhpdGluZ0lubGluZUtpbmQuaCIKICNpbmNsdWRlIDxsaW1pdHMuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgpA
QCAtODgsMTUgKzg5LDIwIEBAIHN0cnVjdCBDb2RlT3JpZ2luIHsKICAgICAKICAgICBzdGF0aWMg
dW5zaWduZWQgaW5saW5lRGVwdGhGb3JDYWxsRnJhbWUoSW5saW5lQ2FsbEZyYW1lKik7CiAgICAg
CisgICAgRXhpdGluZ0lubGluZUtpbmQgZXhpdGluZ0lubGluZUtpbmQoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIGlubGluZUNhbGxGcmFtZSA/IEV4aXRGcm9tSW5saW5lZCA6IEV4aXRG
cm9tTm90SW5saW5lZDsKKyAgICB9CisgICAgCiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0Owog
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2RlT3JpZ2luJiBvdGhlcikgY29uc3Q7CiAgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IENvZGVPcmlnaW4mIG90aGVyKSBjb25zdCB7IHJldHVybiAh
KCp0aGlzID09IG90aGVyKTsgfQogICAgIAogICAgIC8vIFRoaXMgY2hlY2tzIGlmIHRoZSB0d28g
Y29kZSBvcmlnaW5zIGNvcnJlc3BvbmQgdG8gdGhlIHNhbWUgc3RhY2sgdHJhY2Ugc25pcHBldHMs
CiAgICAgLy8gYnV0IGlnbm9yZSB3aGV0aGVyIHRoZSBJbmxpbmVDYWxsRnJhbWUncyBhcmUgaWRl
bnRpY2FsLgotICAgIGJvb2wgaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhjb25zdCBDb2RlT3JpZ2lu
JiBvdGhlcikgY29uc3Q7CisgICAgYm9vbCBpc0FwcHJveGltYXRlbHlFcXVhbFRvKGNvbnN0IENv
ZGVPcmlnaW4mIG90aGVyLCBJbmxpbmVDYWxsRnJhbWUqIHRlcm1pbmFsID0gbnVsbHB0cikgY29u
c3Q7CiAgICAgCi0gICAgdW5zaWduZWQgYXBwcm94aW1hdGVIYXNoKCkgY29uc3Q7CisgICAgdW5z
aWduZWQgYXBwcm94aW1hdGVIYXNoKElubGluZUNhbGxGcmFtZSogdGVybWluYWwgPSBudWxscHRy
KSBjb25zdDsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlvbj4KICAgICB2b2lkIHdh
bGtVcElubGluZVN0YWNrKGNvbnN0IEZ1bmN0aW9uJik7CkBAIC0xMDYsNyArMTEyLDcgQEAgc3Ry
dWN0IENvZGVPcmlnaW4gewogICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZHVtcChQ
cmludFN0cmVhbSYpIGNvbnN0OwogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYs
IER1bXBDb250ZXh0KikgY29uc3Q7Ci0KKyAgICAKIHByaXZhdGU6CiAgICAgc3RhdGljIElubGlu
ZUNhbGxGcmFtZSogZGVsZXRlZE1hcmtlcigpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCShyZXZpc2lvbiAyMzIy
MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKIAogdm9pZCBGcmVxdWVudEV4aXRTaXRlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KCJiYyMiLCBtX2J5dGVjb2RlT2Zmc2V0LCAiOiAiLCBt
X2tpbmQsICIvIiwgbV9qaXRUeXBlKTsKKyAgICBvdXQucHJpbnQoImJjIyIsIG1fYnl0ZWNvZGVP
ZmZzZXQsICI6ICIsIG1fa2luZCwgIi8iLCBtX2ppdFR5cGUsICIvIiwgbV9pbmxpbmVLaW5kKTsK
IH0KIAogRXhpdFByb2ZpbGU6OkV4aXRQcm9maWxlKCkgeyB9CkBAIC00Myw4ICs0MywxMCBAQCBF
eGl0UHJvZmlsZTo6fkV4aXRQcm9maWxlKCkgeyB9CiAKIGJvb2wgRXhpdFByb2ZpbGU6OmFkZChD
b2RlQmxvY2sqIG93bmVyLCBjb25zdCBGcmVxdWVudEV4aXRTaXRlJiBzaXRlKQogeworICAgIFJF
TEVBU0VfQVNTRVJUKHNpdGUuaml0VHlwZSgpICE9IEV4aXRGcm9tQW55dGhpbmcpOworICAgIFJF
TEVBU0VfQVNTRVJUKHNpdGUuaW5saW5lS2luZCgpICE9IEV4aXRGcm9tQW55SW5saW5lS2luZCk7
CisKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG93bmVyLT51bmxpbmtlZENvZGVCbG9j
aygpLT5tX2xvY2spOwotICAgIEFTU0VSVChzaXRlLmppdFR5cGUoKSAhPSBFeGl0RnJvbUFueXRo
aW5nKTsKIAogICAgIENPREVCTE9DS19MT0dfRVZFTlQob3duZXIsICJmcmVxdWVudEV4aXQiLCAo
c2l0ZSkpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4
aXRQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0RGR0V4aXRQcm9maWxlLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ29uY3VycmVudEpTTG9jay5oIgogI2luY2x1ZGUg
IkV4aXRLaW5kLmgiCisjaW5jbHVkZSAiRXhpdGluZ0lubGluZUtpbmQuaCIKICNpbmNsdWRlICJF
eGl0aW5nSklUVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgpAQCAtNDEsNiArNDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9ieXRlY29k
ZU9mZnNldCgwKSAvLyAwID0gZW1wdHkgdmFsdWUKICAgICAgICAgLCBtX2tpbmQoRXhpdEtpbmRV
bnNldCkKICAgICAgICAgLCBtX2ppdFR5cGUoRXhpdEZyb21Bbnl0aGluZykKKyAgICAgICAgLCBt
X2lubGluZUtpbmQoRXhpdEZyb21BbnlJbmxpbmVLaW5kKQogICAgIHsKICAgICB9CiAgICAgCkBA
IC00OCwxMyArNTAsMTUgQEAgcHVibGljOgogICAgICAgICA6IG1fYnl0ZWNvZGVPZmZzZXQoMSkg
Ly8gMSA9IGRlbGV0ZWQgdmFsdWUKICAgICAgICAgLCBtX2tpbmQoRXhpdEtpbmRVbnNldCkKICAg
ICAgICAgLCBtX2ppdFR5cGUoRXhpdEZyb21Bbnl0aGluZykKKyAgICAgICAgLCBtX2lubGluZUtp
bmQoRXhpdEZyb21BbnlJbmxpbmVLaW5kKQogICAgIHsKICAgICB9CiAgICAgCi0gICAgZXhwbGlj
aXQgRnJlcXVlbnRFeGl0U2l0ZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRXhpdEtpbmQga2lu
ZCwgRXhpdGluZ0pJVFR5cGUgaml0VHlwZSA9IEV4aXRGcm9tQW55dGhpbmcpCisgICAgZXhwbGlj
aXQgRnJlcXVlbnRFeGl0U2l0ZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRXhpdEtpbmQga2lu
ZCwgRXhpdGluZ0pJVFR5cGUgaml0VHlwZSA9IEV4aXRGcm9tQW55dGhpbmcsIEV4aXRpbmdJbmxp
bmVLaW5kIGlubGluZUtpbmQgPSBFeGl0RnJvbUFueUlubGluZUtpbmQpCiAgICAgICAgIDogbV9i
eXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkKICAgICAgICAgLCBtX2tpbmQoa2luZCkKICAg
ICAgICAgLCBtX2ppdFR5cGUoaml0VHlwZSkKKyAgICAgICAgLCBtX2lubGluZUtpbmQoaW5saW5l
S2luZCkKICAgICB7CiAgICAgICAgIGlmIChtX2tpbmQgPT0gQXJndW1lbnRzRXNjYXBlZCkgewog
ICAgICAgICAgICAgLy8gQ291bnQgdGhpcyBvbmUgZ2xvYmFsbHkuIEl0IGRvZXNuJ3QgbWF0dGVy
IHdoZXJlIGluIHRoZSBjb2RlIGJsb2NrIHRoZSBhcmd1bWVudHMgZXhjYXBlZDsKQEAgLTY1LDEw
ICs2OSwxMSBAQCBwdWJsaWM6CiAgICAgCiAgICAgLy8gVXNlIHRoaXMgY29uc3RydWN0b3IgaWYg
eW91IHdpc2ggZm9yIHRoZSBleGl0IHNpdGUgdG8gYmUgY291bnRlZCBnbG9iYWxseSB3aXRoaW4g
aXRzCiAgICAgLy8gY29kZSBibG9jay4KLSAgICBleHBsaWNpdCBGcmVxdWVudEV4aXRTaXRlKEV4
aXRLaW5kIGtpbmQsIEV4aXRpbmdKSVRUeXBlIGppdFR5cGUgPSBFeGl0RnJvbUFueXRoaW5nKQor
ICAgIGV4cGxpY2l0IEZyZXF1ZW50RXhpdFNpdGUoRXhpdEtpbmQga2luZCwgRXhpdGluZ0pJVFR5
cGUgaml0VHlwZSA9IEV4aXRGcm9tQW55dGhpbmcsIEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtp
bmQgPSBFeGl0RnJvbUFueUlubGluZUtpbmQpCiAgICAgICAgIDogbV9ieXRlY29kZU9mZnNldCgw
KQogICAgICAgICAsIG1fa2luZChraW5kKQogICAgICAgICAsIG1faml0VHlwZShqaXRUeXBlKQor
ICAgICAgICAsIG1faW5saW5lS2luZChpbmxpbmVLaW5kKQogICAgIHsKICAgICB9CiAgICAgCkBA
IC04MSw3ICs4Niw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX2J5dGVjb2Rl
T2Zmc2V0ID09IG90aGVyLm1fYnl0ZWNvZGVPZmZzZXQKICAgICAgICAgICAgICYmIG1fa2luZCA9
PSBvdGhlci5tX2tpbmQKLSAgICAgICAgICAgICYmIG1faml0VHlwZSA9PSBvdGhlci5tX2ppdFR5
cGU7CisgICAgICAgICAgICAmJiBtX2ppdFR5cGUgPT0gb3RoZXIubV9qaXRUeXBlCisgICAgICAg
ICAgICAmJiBtX2lubGluZUtpbmQgPT0gb3RoZXIubV9pbmxpbmVLaW5kOwogICAgIH0KICAgICAK
ICAgICBib29sIHN1YnN1bWVzKGNvbnN0IEZyZXF1ZW50RXhpdFNpdGUmIG90aGVyKSBjb25zdApA
QCAtOTAsMTkgKzk2LDI0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgaWYgKG1fa2luZCAhPSBvdGhlci5tX2tpbmQpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIGlmIChtX2ppdFR5cGUgPT0gRXhpdEZyb21Bbnl0aGluZykKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICByZXR1cm4gbV9qaXRUeXBlID09IG90aGVyLm1faml0
VHlwZTsKKyAgICAgICAgaWYgKG1faml0VHlwZSAhPSBFeGl0RnJvbUFueXRoaW5nCisgICAgICAg
ICAgICAmJiBtX2ppdFR5cGUgIT0gb3RoZXIubV9qaXRUeXBlKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBpZiAobV9pbmxpbmVLaW5kICE9IEV4aXRGcm9tQW55SW5saW5lS2lu
ZAorICAgICAgICAgICAgJiYgbV9pbmxpbmVLaW5kICE9IG90aGVyLm1faW5saW5lS2luZCkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAg
IAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6
aW50SGFzaChtX2J5dGVjb2RlT2Zmc2V0KSArIG1fa2luZCArIHN0YXRpY19jYXN0PHN0ZDo6dW5k
ZXJseWluZ190eXBlX3Q8RXhpdGluZ0pJVFR5cGU+PihtX2ppdFR5cGUpICogNzsKKyAgICAgICAg
cmV0dXJuIFdURjo6aW50SGFzaChtX2J5dGVjb2RlT2Zmc2V0KSArIG1fa2luZCArIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihtX2ppdFR5cGUpICogNyArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2lu
bGluZUtpbmQpICogMTE7CiAgICAgfQogICAgIAogICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
KCkgY29uc3QgeyByZXR1cm4gbV9ieXRlY29kZU9mZnNldDsgfQogICAgIEV4aXRLaW5kIGtpbmQo
KSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KICAgICBFeGl0aW5nSklUVHlwZSBqaXRUeXBlKCkg
Y29uc3QgeyByZXR1cm4gbV9qaXRUeXBlOyB9CisgICAgRXhpdGluZ0lubGluZUtpbmQgaW5saW5l
S2luZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lS2luZDsgfQogICAgIAogICAgIEZyZXF1ZW50
RXhpdFNpdGUgd2l0aEpJVFR5cGUoRXhpdGluZ0pJVFR5cGUgaml0VHlwZSkgY29uc3QKICAgICB7
CkBAIC0xMTEsNiArMTIyLDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAKKyAgICBGcmVxdWVudEV4aXRTaXRlIHdpdGhJbmxpbmVLaW5kKEV4aXRpbmdJbmxpbmVL
aW5kIGlubGluZUtpbmQpIGNvbnN0CisgICAgeworICAgICAgICBGcmVxdWVudEV4aXRTaXRlIHJl
c3VsdCA9ICp0aGlzOworICAgICAgICByZXN1bHQubV9pbmxpbmVLaW5kID0gaW5saW5lS2luZDsK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBib29sIGlzSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2tpbmQgPT0gRXhpdEtp
bmRVbnNldCAmJiBtX2J5dGVjb2RlT2Zmc2V0OwpAQCAtMTIyLDYgKzE0MCw3IEBAIHByaXZhdGU6
CiAgICAgdW5zaWduZWQgbV9ieXRlY29kZU9mZnNldDsKICAgICBFeGl0S2luZCBtX2tpbmQ7CiAg
ICAgRXhpdGluZ0pJVFR5cGUgbV9qaXRUeXBlOworICAgIEV4aXRpbmdJbmxpbmVLaW5kIG1faW5s
aW5lS2luZDsKIH07CiAKIHN0cnVjdCBGcmVxdWVudEV4aXRTaXRlSGFzaCB7CkBAIC0xOTIsMTAg
KzIxMSwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNFeGl0U2l0ZShjb25zdCBGcmVxdWVudEV4
aXRTaXRlJiBzaXRlKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKHNpdGUuaml0VHlwZSgpID09
IEV4aXRGcm9tQW55dGhpbmcpIHsKLSAgICAgICAgICAgIHJldHVybiBoYXNFeGl0U2l0ZShzaXRl
LndpdGhKSVRUeXBlKEV4aXRGcm9tREZHKSkKLSAgICAgICAgICAgICAgICB8fCBoYXNFeGl0U2l0
ZShzaXRlLndpdGhKSVRUeXBlKEV4aXRGcm9tRlRMKSk7CisgICAgICAgICAgICByZXR1cm4gaGFz
RXhpdFNpdGVXaXRoU3BlY2lmaWNKSVRUeXBlKHNpdGUud2l0aEpJVFR5cGUoRXhpdEZyb21ERkcp
KQorICAgICAgICAgICAgICAgIHx8IGhhc0V4aXRTaXRlV2l0aFNwZWNpZmljSklUVHlwZShzaXRl
LndpdGhKSVRUeXBlKEV4aXRGcm9tRlRMKSk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1f
ZnJlcXVlbnRFeGl0U2l0ZXMuZmluZChzaXRlKSAhPSBtX2ZyZXF1ZW50RXhpdFNpdGVzLmVuZCgp
OworICAgICAgICByZXR1cm4gaGFzRXhpdFNpdGVXaXRoU3BlY2lmaWNKSVRUeXBlKHNpdGUpOwog
ICAgIH0KICAgICAKICAgICBib29sIGhhc0V4aXRTaXRlKEV4aXRLaW5kIGtpbmQpIGNvbnN0CkBA
IC0yMDgsNiArMjI3LDIwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGhhc0V4aXRTaXRlKEZy
ZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwga2luZCkpOwogICAgIH0KIHByaXZhdGU6Cisg
ICAgYm9vbCBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0pJVFR5cGUoY29uc3QgRnJlcXVlbnRFeGl0
U2l0ZSYgc2l0ZSkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChzaXRlLmlubGluZUtpbmQoKSA9
PSBFeGl0RnJvbUFueUlubGluZUtpbmQpIHsKKyAgICAgICAgICAgIHJldHVybiBoYXNFeGl0U2l0
ZVdpdGhTcGVjaWZpY0lubGluZUtpbmQoc2l0ZS53aXRoSW5saW5lS2luZChFeGl0RnJvbU5vdElu
bGluZWQpKQorICAgICAgICAgICAgICAgIHx8IGhhc0V4aXRTaXRlV2l0aFNwZWNpZmljSW5saW5l
S2luZChzaXRlLndpdGhJbmxpbmVLaW5kKEV4aXRGcm9tSW5saW5lZCkpOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0lubGluZUtpbmQoc2l0ZSk7Cisg
ICAgfQorICAgIAorICAgIGJvb2wgaGFzRXhpdFNpdGVXaXRoU3BlY2lmaWNJbmxpbmVLaW5kKGNv
bnN0IEZyZXF1ZW50RXhpdFNpdGUmIHNpdGUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9mcmVxdWVudEV4aXRTaXRlcy5maW5kKHNpdGUpICE9IG1fZnJlcXVlbnRFeGl0U2l0ZXMuZW5k
KCk7CisgICAgfQorICAgIAogICAgIEhhc2hTZXQ8RnJlcXVlbnRFeGl0U2l0ZT4gbV9mcmVxdWVu
dEV4aXRTaXRlczsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9F
eGl0RmxhZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0V4aXRGbGFnLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRXhpdEZsYWcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkV4aXRGbGFnLmgiCisKKyNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVy
Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCit2b2lkIEV4aXRGbGFnOjpkdW1wKFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0Cit7CisgICAgaWYgKCFtX2JpdHMpIHsKKyAgICAgICAgb3V0LnByaW50KCJm
YWxzZSIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIENvbW1hUHJpbnRlciBj
b21tYSgifCIpOworICAgIGlmIChpc1NldChFeGl0RnJvbU5vdElubGluZWQpKQorICAgICAgICBv
dXQucHJpbnQoY29tbWEsICJub3RJbmxpbmVkIik7CisgICAgaWYgKGlzU2V0KEV4aXRGcm9tSW5s
aW5lZCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgImlubGluZWQiKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0
RmxhZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0
RmxhZy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9F
eGl0RmxhZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiRXhpdGluZ0lubGluZUtpbmQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV4aXRG
bGFnIHsKK3B1YmxpYzoKKyAgICBFeGl0RmxhZygpIHsgfQorICAgIAorICAgIEV4aXRGbGFnKGJv
b2wgdmFsdWUsIEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQpCisgICAgeworICAgICAgICBp
ZiAoIXZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgc3dpdGNo
IChpbmxpbmVLaW5kKSB7CisgICAgICAgIGNhc2UgRXhpdEZyb21BbnlJbmxpbmVLaW5kOgorICAg
ICAgICAgICAgbV9iaXRzID0gdHJ1ZU5vdElubGluZWQgfCB0cnVlSW5saW5lZDsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEV4aXRGcm9tTm90SW5saW5lZDoKKyAgICAgICAgICAg
IG1fYml0cyA9IHRydWVOb3RJbmxpbmVkOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgRXhpdEZyb21JbmxpbmVkOgorICAgICAgICAgICAgbV9iaXRzID0gdHJ1ZUlubGluZWQ7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBFeGl0RmxhZyBv
cGVyYXRvcnwoY29uc3QgRXhpdEZsYWcmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgRXhp
dEZsYWcgcmVzdWx0OworICAgICAgICByZXN1bHQubV9iaXRzID0gbV9iaXRzIHwgb3RoZXIubV9i
aXRzOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICBFeGl0RmxhZyYg
b3BlcmF0b3J8PShjb25zdCBFeGl0RmxhZyYgb3RoZXIpCisgICAgeworICAgICAgICAqdGhpcyA9
ICp0aGlzIHwgb3RoZXI7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisgICAgCisgICAg
RXhpdEZsYWcgb3BlcmF0b3ImKGNvbnN0IEV4aXRGbGFnJiBvdGhlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIEV4aXRGbGFnIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1fYml0cyA9IG1fYml0cyAm
IG90aGVyLm1fYml0czsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAg
RXhpdEZsYWcmIG9wZXJhdG9yJj0oY29uc3QgRXhpdEZsYWcmIG90aGVyKQorICAgIHsKKyAgICAg
ICAgKnRoaXMgPSAqdGhpcyAmIG90aGVyOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQor
ICAgIAorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuICEhbV9iaXRzOworICAgIH0KKyAgICAKKyAgICBib29sIGlzU2V0KEV4aXRpbmdJbmxp
bmVLaW5kIGlubGluZUtpbmQpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISEoKnRoaXMg
JiBFeGl0RmxhZyh0cnVlLCBpbmxpbmVLaW5kKSk7CisgICAgfQorICAgIAorICAgIHZvaWQgZHVt
cChQcmludFN0cmVhbSYpIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHVpbnQ4X3QgdHJ1ZU5vdElubGluZWQgPSAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWlu
dDhfdCB0cnVlSW5saW5lZCA9IDI7CisgICAgCisgICAgdWludDhfdCBtX2JpdHMgeyAwIH07Cit9
OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0V4aXRpbmdJbmxpbmVLaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuY3BwCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0aW5nSW5saW5lS2luZC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRXhpdGlu
Z0lubGluZUtpbmQuaCIKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3Bh
Y2UgV1RGIHsKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwordm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiBvdXQsIEV4aXRpbmdJbmxpbmVLaW5kIHR5cGUpCit7CisgICAgc3dpdGNoICh0
eXBlKSB7CisgICAgY2FzZSBFeGl0RnJvbUFueUlubGluZUtpbmQ6CisgICAgICAgIG91dC5wcmlu
dCgiRnJvbUFueUlubGluZUtpbmQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRXhpdEZy
b21Ob3RJbmxpbmVkOgorICAgICAgICBvdXQucHJpbnQoIkZyb21Ob3RJbmxpbmVkIik7CisgICAg
ICAgIHJldHVybjsKKyAgICBjYXNlIEV4aXRGcm9tSW5saW5lZDoKKyAgICAgICAgb3V0LnByaW50
KCJGcm9tSW5saW5lZCIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lu
bGluZUtpbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3Bh
Y2UgSlNDIHsKKworZW51bSBFeGl0aW5nSW5saW5lS2luZCA6IHVpbnQ4X3QgeworICAgIEV4aXRG
cm9tQW55SW5saW5lS2luZCwKKyAgICBFeGl0RnJvbU5vdElubGluZWQsCisgICAgRXhpdEZyb21J
bmxpbmVkLAorfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBXVEYgeworCitj
bGFzcyBQcmludFN0cmVhbTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpTQzo6
RXhpdGluZ0lubGluZUtpbmQpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHJl
dmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlk
U3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTYgKzUxLDYgQEAgYm9vbCBHZXRCeUlk
U3RhdHVzOjphcHBlbmRWYXJpYW50KGNvbnN0IAogICAgIHJldHVybiBhcHBlbmRJQ1N0YXR1c1Zh
cmlhbnQobV92YXJpYW50cywgdmFyaWFudCk7CiB9CiAKLSNpZiBFTkFCTEUoREZHX0pJVCkKLWJv
b2wgR2V0QnlJZFN0YXR1czo6aGFzRXhpdFNpdGUoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1
bnNpZ25lZCBieXRlY29kZUluZGV4KQotewotICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtl
ZENvZGVCbG9jayA9IHByb2ZpbGVkQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCk7Ci0gICAgQ29u
Y3VycmVudEpTTG9ja2VyIGxvY2tlcih1bmxpbmtlZENvZGVCbG9jay0+bV9sb2NrKTsKLSAgICBy
ZXR1cm4gdW5saW5rZWRDb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVu
dEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZENhY2hlKSkKLSAgICAgICAgfHwgdW5saW5rZWRD
b2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVj
b2RlSW5kZXgsIEJhZENvbnN0YW50Q2FjaGUpKTsKLX0KLSNlbmRpZgotCiBHZXRCeUlkU3RhdHVz
IEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2Nr
LCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogewogICAg
IFZNJiB2bSA9ICpwcm9maWxlZEJsb2NrLT52bSgpOwpAQCAtMTA1LDcgKzk1LDcgQEAgR2V0QnlJ
ZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbQogICAgIH0KIH0KIAotR2V0QnlJZFN0
YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywg
U3R1YkluZm9NYXAmIG1hcCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCkKK0dldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxv
Y2sqIHByb2ZpbGVkQmxvY2ssIElDU3RhdHVzTWFwJiBtYXAsIHVuc2lnbmVkIGJ5dGVjb2RlSW5k
ZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIEV4aXRGbGFnIGRpZEV4aXQsIENhbGxMaW5rU3Rh
dHVzOjpFeGl0U2l0ZURhdGEgY2FsbEV4aXRTaXRlRGF0YSkKIHsKICAgICBDb25jdXJyZW50SlNM
b2NrZXIgbG9ja2VyKHByb2ZpbGVkQmxvY2stPm1fbG9jayk7CiAKQEAgLTExMywxMiArMTAzLDEx
IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKIAogI2lmIEVOQUJM
RShERkdfSklUKQogICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0
ZUZlZWRiYWNrKAotICAgICAgICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssIG1hcC5nZXQoQ29kZU9y
aWdpbihieXRlY29kZUluZGV4KSksIHVpZCwKLSAgICAgICAgQ2FsbExpbmtTdGF0dXM6OmNvbXB1
dGVFeGl0U2l0ZURhdGEocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCkpOworICAgICAgICBs
b2NrZXIsIHByb2ZpbGVkQmxvY2ssIG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4KSku
c3R1YkluZm8sIHVpZCwKKyAgICAgICAgY2FsbEV4aXRTaXRlRGF0YSk7CiAgICAgCi0gICAgaWYg
KCFyZXN1bHQudGFrZXNTbG93UGF0aCgpCi0gICAgICAgICYmIGhhc0V4aXRTaXRlKHByb2ZpbGVk
QmxvY2ssIGJ5dGVjb2RlSW5kZXgpKQotICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhyZXN1
bHQubWFrZXNDYWxscygpID8gTWFrZXNDYWxscyA6IFRha2VzU2xvd1BhdGgsIHRydWUpOworICAg
IGlmIChkaWRFeGl0KQorICAgICAgICByZXR1cm4gcmVzdWx0LnNsb3dWZXJzaW9uKCk7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShtYXApOwogI2VuZGlmCkBAIC0xMzYsOCArMTI1LDggQEAgR2V0
QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yUwogICAgICAgICBsb2NrZXIsIHBy
b2ZpbGVkQmxvY2ssIHN0dWJJbmZvLCB1aWQsCiAgICAgICAgIENhbGxMaW5rU3RhdHVzOjpjb21w
dXRlRXhpdFNpdGVEYXRhKHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkp
OwogCi0gICAgaWYgKCFyZXN1bHQudGFrZXNTbG93UGF0aCgpICYmIEdldEJ5SWRTdGF0dXM6Omhh
c0V4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkpCi0gICAg
ICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKHJlc3VsdC5tYWtlc0NhbGxzKCkgPyBHZXRCeUlkU3Rh
dHVzOjpNYWtlc0NhbGxzIDogR2V0QnlJZFN0YXR1czo6VGFrZXNTbG93UGF0aCwgdHJ1ZSk7Cisg
ICAgaWYgKCFyZXN1bHQudGFrZXNTbG93UGF0aCgpICYmIGhhc0JhZENhY2hlRXhpdFNpdGUocHJv
ZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KSkKKyAgICAgICAgcmV0dXJuIHJl
c3VsdC5zbG93VmVyc2lvbigpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5kaWYgLy8gRU5B
QkxFKERGR19KSVQpCkBAIC0zMTQsNDAgKzMwMywzNSBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRT
dGF0dXM6OmNvbXB1dGVGb3JTCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogR2V0QnlJZFN0YXR1
cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAotICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9j
aywgQ29kZUJsb2NrKiBkZmdCbG9jaywgU3R1YkluZm9NYXAmIGJhc2VsaW5lTWFwLAotICAgIFN0
dWJJbmZvTWFwJiBkZmdNYXAsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCkKKyAgICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIElDU3RhdHVzTWFwJiBiYXNl
bGluZU1hcCwKKyAgICBJQ1N0YXR1c0NvbnRleHRTdGFjayYgaWNDb250ZXh0U3RhY2ssIENvZGVP
cmlnaW4gY29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKLSNpZiBFTkFCTEUo
REZHX0pJVCkKLSAgICBpZiAoZGZnQmxvY2spIHsKLSAgICAgICAgQ2FsbExpbmtTdGF0dXM6OkV4
aXRTaXRlRGF0YSBleGl0U2l0ZURhdGE7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgIGV4
aXRTaXRlRGF0YSA9IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKAotICAgICAg
ICAgICAgICAgIHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7Ci0gICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgIEdldEJ5SWRTdGF0dXMgcmVzdWx0OwotICAgICAgICB7
Ci0gICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGRmZ0Jsb2NrLT5tX2xvY2sp
OwotICAgICAgICAgICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRl
RmVlZGJhY2soCi0gICAgICAgICAgICAgICAgbG9ja2VyLCBkZmdCbG9jaywgZGZnTWFwLmdldChj
b2RlT3JpZ2luKSwgdWlkLCBleGl0U2l0ZURhdGEpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KHJlc3VsdC50YWtlc1Nsb3dQYXRoKCkpCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgY2FsbEV4aXRTaXRlRGF0YSA9CisgICAgICAg
IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKHByb2ZpbGVkQmxvY2ssIGNvZGVP
cmlnaW4uYnl0ZWNvZGVJbmRleCk7CisgICAgRXhpdEZsYWcgZGlkRXhpdCA9IGhhc0JhZENhY2hl
RXhpdFNpdGUocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsKICAgICAK
LSAgICAgICAgaWYgKGhhc0V4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNv
ZGVJbmRleCkpCi0gICAgICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRo
LCB0cnVlKTsKKyAgICBmb3IgKElDU3RhdHVzQ29udGV4dCogY29udGV4dCA6IGljQ29udGV4dFN0
YWNrKSB7CisgICAgICAgIElDU3RhdHVzIHN0YXR1cyA9IGNvbnRleHQtPmdldChjb2RlT3JpZ2lu
KTsKICAgICAgICAgCi0gICAgICAgIGlmIChyZXN1bHQuaXNTZXQoKSkKKyAgICAgICAgYXV0byB3
aXRoRXhpdHMgPSBbJl0gKGNvbnN0IEdldEJ5SWRTdGF0dXMmIHJlc3VsdCkgLT4gR2V0QnlJZFN0
YXR1cyB7CisgICAgICAgICAgICBpZiAoZGlkRXhpdC5pc1NldChjb2RlT3JpZ2luLmV4aXRpbmdJ
bmxpbmVLaW5kKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQuc2xvd1ZlcnNpb24o
KTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotI2Vsc2UKLSAgICBVTlVTRURf
UEFSQU0oZGZnQmxvY2spOwotICAgIFVOVVNFRF9QQVJBTShkZmdNYXApOwotI2VuZGlmCisgICAg
ICAgIH07CiAKLSAgICByZXR1cm4gY29tcHV0ZUZvcihwcm9maWxlZEJsb2NrLCBiYXNlbGluZU1h
cCwgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCB1aWQpOworICAgICAgICBpZiAoc3RhdHVzLnN0
dWJJbmZvKSB7CisgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvbnRleHQt
Pm9wdGltaXplZENvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgIEdldEJ5SWRTdGF0dXMg
cmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCisgICAg
ICAgICAgICAgICAgbG9ja2VyLCBjb250ZXh0LT5vcHRpbWl6ZWRDb2RlQmxvY2ssIHN0YXR1cy5z
dHViSW5mbywgdWlkLCBjYWxsRXhpdFNpdGVEYXRhKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQu
aXNTZXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gd2l0aEV4aXRzKHJlc3VsdCk7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChzdGF0dXMuZ2V0U3RhdHVzKQorICAgICAgICAg
ICAgcmV0dXJuIHdpdGhFeGl0cygqc3RhdHVzLmdldFN0YXR1cyk7CisgICAgfQorICAgICAgICAK
KyAgICByZXR1cm4gY29tcHV0ZUZvcihwcm9maWxlZEJsb2NrLCBiYXNlbGluZU1hcCwgY29kZU9y
aWdpbi5ieXRlY29kZUluZGV4LCB1aWQsIGRpZEV4aXQsIGNhbGxFeGl0U2l0ZURhdGEpOwogfQog
CiBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoY29uc3QgU3RydWN0dXJl
U2V0JiBzZXQsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCkBAIC00MTQsNiArMzk4LDExIEBAIGJv
b2wgR2V0QnlJZFN0YXR1czo6bWFrZXNDYWxscygpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCitHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OnNsb3dWZXJzaW9uKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhtYWtlc0NhbGxzKCkgPyBNYWtlc0NhbGxzIDogVGFr
ZXNTbG93UGF0aCwgd2FzU2VlbkluSklUKCkpOworfQorCiB2b2lkIEdldEJ5SWRTdGF0dXM6OmZp
bHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCkKIHsKICAgICBpZiAobV9zdGF0ZSAhPSBTaW1w
bGUpCkBAIC00MjMsNiArNDEyLDI1IEBAIHZvaWQgR2V0QnlJZFN0YXR1czo6ZmlsdGVyKGNvbnN0
IFN0cnVjdHUKICAgICAgICAgbV9zdGF0ZSA9IE5vSW5mb3JtYXRpb247CiB9CiAKK3ZvaWQgR2V0
QnlJZFN0YXR1czo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgZm9y
IChHZXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IG1fdmFyaWFudHMpCisgICAgICAgIHZhcmlhbnQu
bWFya0lmQ2hlYXAodmlzaXRvcik7Cit9CisKK2Jvb2wgR2V0QnlJZFN0YXR1czo6ZmluYWxpemUo
KQoreworICAgIGZvciAoR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKSB7Cisg
ICAgICAgIGlmICghdmFyaWFudC5maW5hbGl6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgICBpZiAobV9tb2R1bGVOYW1lc3BhY2VPYmplY3QgJiYgIUhlYXA6OmlzTWFy
a2VkKG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmIChtX21vZHVsZUVudmlyb25tZW50ICYmICFIZWFwOjppc01hcmtlZChtX21vZHVsZUVudmly
b25tZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCiB2
b2lkIEdldEJ5SWRTdGF0dXM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBv
dXQucHJpbnQoIigiKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRC
eUlkU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0dldEJ5SWRTdGF0dXMuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgs
OSBAQAogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5o
IgogI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKKyNpbmNsdWRlICJFeGl0RmxhZy5oIgog
I2luY2x1ZGUgIkdldEJ5SWRWYXJpYW50LmgiCisjaW5jbHVkZSAiSUNTdGF0dXNNYXAuaCIKICNp
bmNsdWRlICJTY29wZU9mZnNldC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQwLDggKzQyLDYg
QEAgY2xhc3MgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q7CiBjbGFzcyBNb2R1bGVOYW1lc3BhY2VB
Y2Nlc3NDYXNlOwogY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CiAKLXR5cGVkZWYgSGFzaE1hcDxD
b2RlT3JpZ2luLCBTdHJ1Y3R1cmVTdHViSW5mbyosIENvZGVPcmlnaW5BcHByb3hpbWF0ZUhhc2g+
IFN0dWJJbmZvTWFwOwotCiBjbGFzcyBHZXRCeUlkU3RhdHVzIHsKIHB1YmxpYzoKICAgICBlbnVt
IFN0YXRlIHsKQEAgLTgxLDEwICs4MSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIG1fdmFyaWFudHMu
YXBwZW5kKHZhcmlhbnQpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgR2V0QnlJZFN0YXR1cyBj
b21wdXRlRm9yKENvZGVCbG9jayosIFN0dWJJbmZvTWFwJiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRl
eCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7CisgICAgc3RhdGljIEdldEJ5SWRTdGF0dXMgY29t
cHV0ZUZvcihDb2RlQmxvY2sqLCBJQ1N0YXR1c01hcCYsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgs
IFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIEV4aXRGbGFnLCBDYWxsTGlua1N0YXR1czo6RXhpdFNp
dGVEYXRhKTsKICAgICBzdGF0aWMgR2V0QnlJZFN0YXR1cyBjb21wdXRlRm9yKGNvbnN0IFN0cnVj
dHVyZVNldCYsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogICAgIAotICAgIHN0YXRpYyBHZXRC
eUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBDb2RlQmxvY2sq
IGRmZ0Jsb2NrLCBTdHViSW5mb01hcCYgYmFzZWxpbmVNYXAsIFN0dWJJbmZvTWFwJiBkZmdNYXAs
IENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOworICAgIHN0YXRpYyBHZXRCeUlk
U3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJQ1N0YXR1c01hcCYg
YmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4dFN0YWNrJiBkZmdDb250ZXh0U3RhY2ssIENvZGVP
cmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAg
ICAgc3RhdGljIEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZvclN0dWJJbmZvKGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYsIENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8q
LCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKQEAgLTEwNiw2ICsxMDYsOCBA
QCBwdWJsaWM6CiAgICAgYm9vbCB0YWtlc1Nsb3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZSA9PSBUYWtlc1Nsb3dQYXRoIHx8IG1fc3RhdGUgPT0gTWFrZXNDYWxscyB8fCBtX3N0YXRlID09
IEN1c3RvbSB8fCBtX3N0YXRlID09IE1vZHVsZU5hbWVzcGFjZTsgfQogICAgIGJvb2wgbWFrZXND
YWxscygpIGNvbnN0OwogICAgIAorICAgIEdldEJ5SWRTdGF0dXMgc2xvd1ZlcnNpb24oKSBjb25z
dDsKKyAgICAKICAgICBib29sIHdhc1NlZW5JbkpJVCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzU2Vl
bkluSklUOyB9CiAgICAgCiAgICAgLy8gQXR0ZW1wdHMgdG8gcmVkdWNlIHRoZSBzZXQgb2YgdmFy
aWFudHMgdG8gZml0IHRoZSBnaXZlbiBzdHJ1Y3R1cmUgc2V0LiBUaGlzIG1heSBiZSBhcHByb3hp
bWF0ZS4KQEAgLTExNSwxMiArMTE3LDEyIEBAIHB1YmxpYzoKICAgICBKU01vZHVsZUVudmlyb25t
ZW50KiBtb2R1bGVFbnZpcm9ubWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlRW52aXJvbm1l
bnQ7IH0KICAgICBTY29wZU9mZnNldCBzY29wZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nv
cGVPZmZzZXQ7IH0KICAgICAKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7Cisg
ICAgYm9vbCBmaW5hbGl6ZSgpOyAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGlzIGdldHMgdG8gbGl2ZS4K
KyAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKIHByaXZhdGU6
Ci0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAgc3RhdGljIGJvb2wgaGFzRXhpdFNpdGUoQ29kZUJs
b2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7Ci0jZW5kaWYKICNpZiBFTkFCTEUoSklUKQog
ICAgIEdldEJ5SWRTdGF0dXMoY29uc3QgTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZSYpOwogICAg
IHN0YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZl
ZWRiYWNrKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJp
YW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0
QnlJZFZhcmlhbnQuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsNiAr
MTM1LDI0IEBAIGJvb2wgR2V0QnlJZFZhcmlhbnQ6OmF0dGVtcHRUb01lcmdlKGNvbnMKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBHZXRCeUlkVmFyaWFudDo6bWFya0lmQ2hlYXAoU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCit7CisgICAgbV9zdHJ1Y3R1cmVTZXQubWFya0lmQ2hlYXAodmlzaXRv
cik7Cit9CisKK2Jvb2wgR2V0QnlJZFZhcmlhbnQ6OmZpbmFsaXplKCkKK3sKKyAgICBpZiAoIW1f
c3RydWN0dXJlU2V0LmlzU3RpbGxBbGl2ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCFtX2NvbmRpdGlvblNldC5hcmVTdGlsbExpdmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGlmIChtX2NhbGxMaW5rU3RhdHVzICYmICFtX2NhbGxMaW5rU3RhdHVzLT5maW5hbGl6
ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1faW50cmluc2ljRnVuY3Rpb24g
JiYgIUhlYXA6OmlzTWFya2VkKG1faW50cmluc2ljRnVuY3Rpb24pKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgR2V0QnlJZFZhcmlhbnQ6OmR1bXAo
UHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBkdW1wSW5Db250ZXh0KG91dCwgMCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQu
aAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dEJ5SWRWYXJpYW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDYgKzczLDkgQEAgcHVibGljOgog
CiAgICAgYm9vbCBhdHRlbXB0VG9NZXJnZShjb25zdCBHZXRCeUlkVmFyaWFudCYgb3RoZXIpOwog
ICAgIAorICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKTsKKyAgICBib29sIGZpbmFs
aXplKCk7CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgdm9p
ZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25zdDsKICAgICAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFwLmNw
cAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0
dXNNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIklDU3RhdHVzTWFwLmgiCisKKyNpbmNsdWRlICJJbmxpbmVDYWxsRnJhbWUuaCIKKyNp
bmNsdWRlICJUZXJtaW5hdGVkQ29kZU9yaWdpbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworSUNT
dGF0dXMgSUNTdGF0dXNDb250ZXh0OjpnZXQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luKSBjb25zdAor
eworICAgIHJldHVybiBtYXAuZ2V0PFRlcm1pbmF0ZWRDb2RlT3JpZ2luSGFzaFRyYW5zbGF0b3I+
KAorICAgICAgICBUZXJtaW5hdGVkQ29kZU9yaWdpbihjb2RlT3JpZ2luLCBpbmxpbmVDYWxsRnJh
bWUpKTsKK30KKworYm9vbCBJQ1N0YXR1c0NvbnRleHQ6OmlzSW5saW5lZChDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4pIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1l
ICYmIGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lICE9IGlubGluZUNhbGxGcmFtZTsKK30KKwor
RXhpdGluZ0lubGluZUtpbmQgSUNTdGF0dXNDb250ZXh0OjppbmxpbmVLaW5kKENvZGVPcmlnaW4g
Y29kZU9yaWdpbikgY29uc3QKK3sKKyAgICByZXR1cm4gaXNJbmxpbmVkKGNvZGVPcmlnaW4pID8g
RXhpdEZyb21JbmxpbmVkIDogRXhpdEZyb21Ob3RJbmxpbmVkOworfQorCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFw
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVz
TWFwLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lD
U3RhdHVzTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkNvZGVPcmlnaW4uaCIKKyNpbmNsdWRlICJFeGl0aW5nSW5saW5lS2luZC5oIgorI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBDYWxsTGlua0lu
Zm87CitjbGFzcyBDYWxsTGlua1N0YXR1czsKK2NsYXNzIENvZGVCbG9jazsKK2NsYXNzIEdldEJ5
SWRTdGF0dXM7CitjbGFzcyBQdXRCeUlkU3RhdHVzOworY2xhc3MgU3RydWN0dXJlU3R1YkluZm87
CitzdHJ1Y3QgQnlWYWxJbmZvOworCitzdHJ1Y3QgSUNTdGF0dXMgeworICAgIFN0cnVjdHVyZVN0
dWJJbmZvKiBzdHViSW5mbyB7IG51bGxwdHIgfTsKKyAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5r
SW5mbyB7IG51bGxwdHIgfTsKKyAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyB7IG51bGxwdHIgfTsK
KyAgICBDYWxsTGlua1N0YXR1cyogY2FsbFN0YXR1cyB7IG51bGxwdHIgfTsKKyAgICBHZXRCeUlk
U3RhdHVzKiBnZXRTdGF0dXMgeyBudWxscHRyIH07CisgICAgUHV0QnlJZFN0YXR1cyogcHV0U3Rh
dHVzIHsgbnVsbHB0ciB9OworfTsKKwordHlwZWRlZiBIYXNoTWFwPENvZGVPcmlnaW4sIElDU3Rh
dHVzLCBDb2RlT3JpZ2luQXBwcm94aW1hdGVIYXNoPiBJQ1N0YXR1c01hcDsKKworc3RydWN0IElD
U3RhdHVzQ29udGV4dCB7CisgICAgSUNTdGF0dXMgZ2V0KENvZGVPcmlnaW4pIGNvbnN0OworICAg
IGJvb2wgaXNJbmxpbmVkKENvZGVPcmlnaW4pIGNvbnN0OworICAgIEV4aXRpbmdJbmxpbmVLaW5k
IGlubGluZUtpbmQoQ29kZU9yaWdpbikgY29uc3Q7CisgICAgCisgICAgSW5saW5lQ2FsbEZyYW1l
KiBpbmxpbmVDYWxsRnJhbWUgeyBudWxscHRyIH07CisgICAgQ29kZUJsb2NrKiBvcHRpbWl6ZWRD
b2RlQmxvY2sgeyBudWxscHRyIH07CisgICAgSUNTdGF0dXNNYXAgbWFwOworfTsKKwordHlwZWRl
ZiBWZWN0b3I8SUNTdGF0dXNDb250ZXh0KiwgOD4gSUNTdGF0dXNDb250ZXh0U3RhY2s7CisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SUNTdGF0dXNVdGlscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0lDU3RhdHVzVXRpbHMuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c1V0aWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJQ1N0YXR1c1V0aWxzLmgiCisKKyNpbmNs
dWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJFeGl0RmxhZy5oIgorI2luY2x1ZGUgIlVubGlu
a2VkQ29kZUJsb2NrLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitFeGl0RmxhZyBoYXNCYWRDYWNo
ZUV4aXRTaXRlKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRl
eCkKK3sKKyNpZiBFTkFCTEUoREZHX0pJVCkKKyAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5r
ZWRDb2RlQmxvY2sgPSBwcm9maWxlZEJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpOworICAgIENv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIodW5saW5rZWRDb2RlQmxvY2stPm1fbG9jayk7CisgICAg
YXV0byBleGl0RmxhZyA9IFsmXSAoRXhpdEtpbmQgZXhpdEtpbmQpIC0+IEV4aXRGbGFnIHsKKyAg
ICAgICAgYXV0byB3aXRoSW5saW5lZCA9IFsmXSAoRXhpdGluZ0lubGluZUtpbmQgaW5saW5lS2lu
ZCkgLT4gRXhpdEZsYWcgeworICAgICAgICAgICAgcmV0dXJuIEV4aXRGbGFnKHVubGlua2VkQ29k
ZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29k
ZUluZGV4LCBleGl0S2luZCwgRXhpdEZyb21Bbnl0aGluZywgaW5saW5lS2luZCkpLCBpbmxpbmVL
aW5kKTsKKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIHdpdGhJbmxpbmVkKEV4aXRGcm9tTm90
SW5saW5lZCkgfCB3aXRoSW5saW5lZChFeGl0RnJvbUlubGluZWQpOworICAgIH07CisgICAgcmV0
dXJuIGV4aXRGbGFnKEJhZENhY2hlKSB8IGV4aXRGbGFnKEJhZENvbnN0YW50Q2FjaGUpOworI2Vs
c2UKKyAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CisgICAgVU5VU0VEX1BBUkFNKGJ5
dGVjb2RlSW5kZXgpOworICAgIHJldHVybiBFeGl0RmxhZygpOworI2VuZGlmCit9CisKK30gLy8g
bmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNT
dGF0dXNVdGlscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9JQ1N0YXR1c1V0aWxzLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JQ1N0YXR1c1V0aWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1
LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJFeGl0RmxhZy5oIgorCiBuYW1lc3Bh
Y2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVmFyaWFudFZlY3RvclR5cGUsIHR5cGVuYW1l
IFZhcmlhbnRUeXBlPgpAQCAtNTksNSArNjEsNyBAQCB2b2lkIGZpbHRlcklDU3RhdHVzVmFyaWFu
dHMoVmFyaWFudFZlY3RvCiAgICAgICAgIH0pOwogfQogCitFeGl0RmxhZyBoYXNCYWRDYWNoZUV4
aXRTaXRlKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM5LDEzICszOSwxMyBAQCB2b2lkIEluc3RhbmNlT2ZTdGF0dXM6OmFw
cGVuZFZhcmlhbnQoY29uCiB9CiAKIEluc3RhbmNlT2ZTdGF0dXMgSW5zdGFuY2VPZlN0YXR1czo6
Y29tcHV0ZUZvcigKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3R1YkluZm9NYXAmIGluZm9N
YXAsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIElD
U3RhdHVzTWFwJiBpbmZvTWFwLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQogewogICAgIENvbmN1
cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwogICAgIAogICAgIEluc3Rh
bmNlT2ZTdGF0dXMgcmVzdWx0OwogI2lmIEVOQUJMRShERkdfSklUKQotICAgIHJlc3VsdCA9IGNv
bXB1dGVGb3JTdHViSW5mbyhsb2NrZXIsIGluZm9NYXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJ
bmRleCkpKTsKKyAgICByZXN1bHQgPSBjb21wdXRlRm9yU3R1YkluZm8obG9ja2VyLCBpbmZvTWFw
LmdldChDb2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgpKS5zdHViSW5mbyk7CiAKICAgICBpZiAoIXJl
c3VsdC50YWtlc1Nsb3dQYXRoKCkpIHsKICAgICAgICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlu
a2VkQ29kZUJsb2NrID0gY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5oCShy
ZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFu
Y2VPZlN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRl
ICJDb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAiQ29uY3VycmVudEpTTG9jay5oIgorI2luY2x1ZGUg
IklDU3RhdHVzTWFwLmgiCiAjaW5jbHVkZSAiSW5zdGFuY2VPZlZhcmlhbnQuaCIKIAogbmFtZXNw
YWNlIEpTQyB7CkBAIC0zNSw4ICszNiw2IEBAIGNsYXNzIEFjY2Vzc0Nhc2U7CiBjbGFzcyBDb2Rl
QmxvY2s7CiBjbGFzcyBTdHJ1Y3R1cmVTdHViSW5mbzsKIAotdHlwZWRlZiBIYXNoTWFwPENvZGVP
cmlnaW4sIFN0cnVjdHVyZVN0dWJJbmZvKiwgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFzaD4gU3R1
YkluZm9NYXA7Ci0KIGNsYXNzIEluc3RhbmNlT2ZTdGF0dXMgewogcHVibGljOgogICAgIGVudW0g
U3RhdGUgewpAQCAtNjEsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChzdGF0ZSA9
PSBOb0luZm9ybWF0aW9uIHx8IHN0YXRlID09IFRha2VzU2xvd1BhdGgpOwogICAgIH0KICAgICAK
LSAgICBzdGF0aWMgSW5zdGFuY2VPZlN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIFN0dWJJ
bmZvTWFwJiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CisgICAgc3RhdGljIEluc3RhbmNlT2ZT
dGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCBJQ1N0YXR1c01hcCYsIHVuc2lnbmVkIGJ5dGVj
b2RlSW5kZXgpOwogICAgIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIHN0YXRpYyBJbnN0YW5j
ZU9mU3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mbyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBT
dHJ1Y3R1cmVTdHViSW5mbyopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1BvbHlQcm90b0FjY2Vzc0NoYWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmgJKHJldmlzaW9uIDIzMjIyNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qb2x5UHJvdG9BY2Nlc3NDaGFpbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFz
cyBKU0NlbGw7CiBjbGFzcyBKU0dsb2JhbE9iamVjdDsKIGNsYXNzIEpTT2JqZWN0OwogY2xhc3Mg
UHJvcGVydHlTbG90OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QdXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2
ICsyOSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiQ29tcGxleEdldFN0
YXR1cy5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlckFjY2Vzc0Nhc2UuaCIKKyNpbmNsdWRlICJJ
Q1N0YXR1c1V0aWxzLmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiTG93TGV2
ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKQEAgLTU1LDEyICs1Niw5
IEBAIGJvb2wgUHV0QnlJZFN0YXR1czo6YXBwZW5kVmFyaWFudChjb25zdCAKIH0KIAogI2lmIEVO
QUJMRShERkdfSklUKQotYm9vbCBQdXRCeUlkU3RhdHVzOjpoYXNFeGl0U2l0ZShDb2RlQmxvY2sq
IHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCitFeGl0RmxhZyBQdXRCeUlk
U3RhdHVzOjpoYXNFeGl0U2l0ZShDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5
dGVjb2RlSW5kZXgpCiB7Ci0gICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2Nr
ID0gcHJvZmlsZWRCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKTsKLSAgICBDb25jdXJyZW50SlNM
b2NrZXIgbG9ja2VyKHVubGlua2VkQ29kZUJsb2NrLT5tX2xvY2spOwotICAgIHJldHVybiB1bmxp
bmtlZENvZGVCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUo
Ynl0ZWNvZGVJbmRleCwgQmFkQ2FjaGUpKQotICAgICAgICB8fCB1bmxpbmtlZENvZGVCbG9jay0+
aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwg
QmFkQ29uc3RhbnRDYWNoZSkpOworICAgIHJldHVybiBoYXNCYWRDYWNoZUV4aXRTaXRlKHByb2Zp
bGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpOwogfQogI2VuZGlmCiAKQEAgLTExMCw3ICsxMDgsNyBA
QCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tCiAgICAgICAgIHN0cnVj
dHVyZSwgbmV3U3RydWN0dXJlLCBjb25kaXRpb25TZXQsIG9mZnNldCwgbmV3U3RydWN0dXJlLT5p
bmZlcnJlZFR5cGVEZXNjcmlwdG9yRm9yKHVpZCkpOwogfQogCi1QdXRCeUlkU3RhdHVzIFB1dEJ5
SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBTdHViSW5mb01h
cCYgbWFwLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQor
UHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmls
ZWRCbG9jaywgSUNTdGF0dXNNYXAmIG1hcCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgVW5pcXVl
ZFN0cmluZ0ltcGwqIHVpZCwgRXhpdEZsYWcgZGlkRXhpdCwgQ2FsbExpbmtTdGF0dXM6OkV4aXRT
aXRlRGF0YSBjYWxsRXhpdFNpdGVEYXRhKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2Nr
ZXIocHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKICAgICAKQEAgLTExOCwxMyArMTE2LDEyIEBAIFB1
dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICBVTlVTRURfUEFSQU0o
Ynl0ZWNvZGVJbmRleCk7CiAgICAgVU5VU0VEX1BBUkFNKHVpZCk7CiAjaWYgRU5BQkxFKERGR19K
SVQpCi0gICAgaWYgKGhhc0V4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpKQor
ICAgIGlmIChkaWRFeGl0KQogICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQ
YXRoKTsKICAgICAKLSAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gPSBtYXAuZ2V0KENv
ZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkpOworICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5m
byA9IG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4KSkuc3R1YkluZm87CiAgICAgUHV0
QnlJZFN0YXR1cyByZXN1bHQgPSBjb21wdXRlRm9yU3R1YkluZm8oCi0gICAgICAgIGxvY2tlciwg
cHJvZmlsZWRCbG9jaywgc3R1YkluZm8sIHVpZCwKLSAgICAgICAgQ2FsbExpbmtTdGF0dXM6OmNv
bXB1dGVFeGl0U2l0ZURhdGEocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCkpOworICAgICAg
ICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssIHN0dWJJbmZvLCB1aWQsIGNhbGxFeGl0U2l0ZURhdGEp
OwogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9m
aWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCB1aWQpOwogICAgIApAQCAtMjY0LDM4ICsyNjEsMzQg
QEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yUwogfQogI2VuZGlmCiAK
LVB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIGJhc2Vs
aW5lQmxvY2ssIENvZGVCbG9jayogZGZnQmxvY2ssIFN0dWJJbmZvTWFwJiBiYXNlbGluZU1hcCwg
U3R1YkluZm9NYXAmIGRmZ01hcCwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkKQorUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVC
bG9jayogYmFzZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAmIGJhc2VsaW5lTWFwLCBJQ1N0YXR1c0Nv
bnRleHRTdGFjayYgY29udGV4dFN0YWNrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIFVuaXF1ZWRT
dHJpbmdJbXBsKiB1aWQpCiB7Ci0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAgaWYgKGRmZ0Jsb2Nr
KSB7Ci0gICAgICAgIGlmIChoYXNFeGl0U2l0ZShiYXNlbGluZUJsb2NrLCBjb2RlT3JpZ2luLmJ5
dGVjb2RlSW5kZXgpKQotICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93
UGF0aCk7Ci0gICAgICAgIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgZXhpdFNpdGVEYXRh
OwotICAgICAgICB7Ci0gICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGJhc2Vs
aW5lQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICBleGl0U2l0ZURhdGEgPSBDYWxsTGlua1N0
YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YSgKLSAgICAgICAgICAgICAgICBiYXNlbGluZUJsb2Nr
LCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpOwotICAgICAgICB9Ci0gICAgICAgICAgICAKLSAg
ICAgICAgUHV0QnlJZFN0YXR1cyByZXN1bHQ7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIENvbmN1
cnJlbnRKU0xvY2tlciBsb2NrZXIoZGZnQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICByZXN1
bHQgPSBjb21wdXRlRm9yU3R1YkluZm8oCi0gICAgICAgICAgICAgICAgbG9ja2VyLCBkZmdCbG9j
aywgZGZnTWFwLmdldChjb2RlT3JpZ2luKSwgdWlkLCBleGl0U2l0ZURhdGEpOworICAgIENhbGxM
aW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgY2FsbEV4aXRTaXRlRGF0YSA9CisgICAgICAgIENhbGxM
aW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKGJhc2VsaW5lQmxvY2ssIGNvZGVPcmlnaW4u
Ynl0ZWNvZGVJbmRleCk7CisgICAgRXhpdEZsYWcgZGlkRXhpdCA9IGhhc0V4aXRTaXRlKGJhc2Vs
aW5lQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7CisgICAgCisgICAgZm9yIChJQ1N0
YXR1c0NvbnRleHQqIGNvbnRleHQgOiBjb250ZXh0U3RhY2spIHsKKyAgICAgICAgSUNTdGF0dXMg
c3RhdHVzID0gY29udGV4dC0+Z2V0KGNvZGVPcmlnaW4pOworICAgICAgICAKKyAgICAgICAgYXV0
byB3aXRoRXhpdHMgPSBbJl0gKGNvbnN0IFB1dEJ5SWRTdGF0dXMmIHJlc3VsdCkgLT4gUHV0QnlJ
ZFN0YXR1cyB7CisgICAgICAgICAgICBpZiAoZGlkRXhpdC5pc1NldChjb2RlT3JpZ2luLmV4aXRp
bmdJbmxpbmVLaW5kKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQuc2xvd1ZlcnNp
b24oKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH07CisgICAgICAgIAor
ICAgICAgICBpZiAoc3RhdHVzLnN0dWJJbmZvKSB7CisgICAgICAgICAgICBDb25jdXJyZW50SlNM
b2NrZXIgbG9ja2VyKGNvbnRleHQtPm9wdGltaXplZENvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAg
ICAgICAgIFB1dEJ5SWRTdGF0dXMgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvKAorICAgICAg
ICAgICAgICAgIGxvY2tlciwgY29udGV4dC0+b3B0aW1pemVkQ29kZUJsb2NrLCBzdGF0dXMuc3R1
YkluZm8sIHVpZCwgY2FsbEV4aXRTaXRlRGF0YSk7CisgICAgICAgICAgICBpZiAocmVzdWx0Lmlz
U2V0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhFeGl0cyhyZXN1bHQpOwogICAgICAg
ICB9CiAgICAgICAgIAotICAgICAgICAvLyBXZSB1c2UgVGFrZXNTbG93UGF0aCBpbiBzb21lIGNh
c2VzIHdoZXJlIHRoZSBzdHViIHdhcyB1bnNldC4gVGhhdCdzIHdlaXJkIGFuZAotICAgICAgICAv
LyBpdCB3b3VsZCBiZSBiZXR0ZXIgbm90IHRvIGRvIHRoYXQuIEJ1dCBpdCBtZWFucyB0aGF0IHdl
IGhhdmUgdG8gZGVmZW5kCi0gICAgICAgIC8vIG91cnNlbHZlcyBoZXJlLgotICAgICAgICBpZiAo
cmVzdWx0LmlzU2ltcGxlKCkpCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICBp
ZiAoc3RhdHVzLnB1dFN0YXR1cykKKyAgICAgICAgICAgIHJldHVybiB3aXRoRXhpdHMoKnN0YXR1
cy5wdXRTdGF0dXMpOwogICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGRmZ0Jsb2NrKTsK
LSAgICBVTlVTRURfUEFSQU0oZGZnTWFwKTsKLSNlbmRpZgogCi0gICAgcmV0dXJuIGNvbXB1dGVG
b3IoYmFzZWxpbmVCbG9jaywgYmFzZWxpbmVNYXAsIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwg
dWlkKTsKKyAgICByZXR1cm4gY29tcHV0ZUZvcihiYXNlbGluZUJsb2NrLCBiYXNlbGluZU1hcCwg
Y29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCB1aWQsIGRpZEV4aXQsIGNhbGxFeGl0U2l0ZURhdGEp
OwogfQogCiBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RydWN0dXJlU2V0JiBzZXQsIFVuaXF1ZWRTdHJp
bmdJbXBsKiB1aWQsIGJvb2wgaXNEaXJlY3QpCkBAIC0zOTgsNiArMzkxLDM1IEBAIGJvb2wgUHV0
QnlJZFN0YXR1czo6bWFrZXNDYWxscygpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitQ
dXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OnNsb3dWZXJzaW9uKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gUHV0QnlJZFN0YXR1cyhtYWtlc0NhbGxzKCkgPyBNYWtlc0NhbGxzIDogVGFrZXNTbG93
UGF0aCk7Cit9CisKK3ZvaWQgUHV0QnlJZFN0YXR1czo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCit7CisgICAgZm9yIChQdXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IG1fdmFyaWFu
dHMpCisgICAgICAgIHZhcmlhbnQubWFya0lmQ2hlYXAodmlzaXRvcik7Cit9CisKK2Jvb2wgUHV0
QnlJZFN0YXR1czo6ZmluYWxpemUoKQoreworICAgIGZvciAoUHV0QnlJZFZhcmlhbnQmIHZhcmlh
bnQgOiBtX3ZhcmlhbnRzKSB7CisgICAgICAgIGlmICghdmFyaWFudC5maW5hbGl6ZSgpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9p
ZCBQdXRCeUlkU3RhdHVzOjpmaWx0ZXIoY29uc3QgU3RydWN0dXJlU2V0JiBzZXQpCit7CisgICAg
aWYgKG1fc3RhdGUgIT0gU2ltcGxlKQorICAgICAgICByZXR1cm47CisgICAgZmlsdGVySUNTdGF0
dXNWYXJpYW50cyhtX3ZhcmlhbnRzLCBzZXQpOworICAgIGlmIChtX3ZhcmlhbnRzLmlzRW1wdHko
KSkKKyAgICAgICAgbV9zdGF0ZSA9IE5vSW5mb3JtYXRpb247Cit9CisKIHZvaWQgUHV0QnlJZFN0
YXR1czo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIHN3aXRjaCAobV9zdGF0
ZSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0
YXR1cy5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHV0QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCisjaW5jbHVkZSAiRXhpdEZs
YWcuaCIKKyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgogI2luY2x1ZGUgIlB1dEJ5SWRWYXJpYW50
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNjksMTAgKzcxLDEwIEBAIHB1YmxpYzoKICAgICAg
ICAgbV92YXJpYW50cy5hcHBlbmQodmFyaWFudCk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBQ
dXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgU3R1YkluZm9NYXAmLCB1bnNpZ25l
ZCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKKyAgICBzdGF0aWMgUHV0
QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIElDU3RhdHVzTWFwJiwgdW5zaWduZWQg
Ynl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgRXhpdEZsYWcsIENhbGxMaW5r
U3RhdHVzOjpFeGl0U2l0ZURhdGEpOwogICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVG
b3IoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJ1Y3R1cmVTZXQmLCBVbmlxdWVkU3RyaW5nSW1w
bCogdWlkLCBib29sIGlzRGlyZWN0KTsKICAgICAKLSAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBj
b21wdXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgQ29kZUJsb2NrKiBkZmdCbG9jaywg
U3R1YkluZm9NYXAmIGJhc2VsaW5lTWFwLCBTdHViSW5mb01hcCYgZGZnTWFwLCBDb2RlT3JpZ2lu
LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKKyAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21w
dXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNTdGF0dXNNYXAmIGJhc2VsaW5lTWFw
LCBJQ1N0YXR1c0NvbnRleHRTdGFjayYgY29udGV4dFN0YWNrLCBDb2RlT3JpZ2luLCBVbmlxdWVk
U3RyaW5nSW1wbCogdWlkKTsKIAogI2lmIEVOQUJMRShKSVQpCiAgICAgc3RhdGljIFB1dEJ5SWRT
dGF0dXMgY29tcHV0ZUZvclN0dWJJbmZvKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVC
bG9jayogYmFzZWxpbmVCbG9jaywgU3RydWN0dXJlU3R1YkluZm8qLCBDb2RlT3JpZ2luLCBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkKTsKQEAgLTg1LDE3ICs4NywyMiBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc1NpbXBsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gU2ltcGxlOyB9CiAgICAgYm9v
bCB0YWtlc1Nsb3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBUYWtlc1Nsb3dQYXRo
IHx8IG1fc3RhdGUgPT0gTWFrZXNDYWxsczsgfQogICAgIGJvb2wgbWFrZXNDYWxscygpIGNvbnN0
OworICAgIFB1dEJ5SWRTdGF0dXMgc2xvd1ZlcnNpb24oKSBjb25zdDsKICAgICAKICAgICBzaXpl
X3QgbnVtVmFyaWFudHMoKSBjb25zdCB7IHJldHVybiBtX3ZhcmlhbnRzLnNpemUoKTsgfQogICAg
IGNvbnN0IFZlY3RvcjxQdXRCeUlkVmFyaWFudCwgMT4mIHZhcmlhbnRzKCkgY29uc3QgeyByZXR1
cm4gbV92YXJpYW50czsgfQogICAgIGNvbnN0IFB1dEJ5SWRWYXJpYW50JiBhdChzaXplX3QgaW5k
ZXgpIGNvbnN0IHsgcmV0dXJuIG1fdmFyaWFudHNbaW5kZXhdOyB9CiAgICAgY29uc3QgUHV0QnlJ
ZFZhcmlhbnQmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KSBjb25zdCB7IHJldHVybiBhdChpbmRl
eCk7IH0KICAgICAKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7CisgICAgYm9v
bCBmaW5hbGl6ZSgpOworICAgIHZvaWQgZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYpOworICAg
IAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIAogcHJpdmF0ZToKICNp
ZiBFTkFCTEUoREZHX0pJVCkKLSAgICBzdGF0aWMgYm9vbCBoYXNFeGl0U2l0ZShDb2RlQmxvY2sq
LCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKyAgICBzdGF0aWMgRXhpdEZsYWcgaGFzRXhpdFNp
dGUoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CiAjZW5kaWYKICNpZiBFTkFC
TEUoSklUKQogICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mbygKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50
LmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1B1dEJ5SWRWYXJpYW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMDYsNiArMjA2LDI2IEBA
IGJvb2wgUHV0QnlJZFZhcmlhbnQ6OmF0dGVtcHRUb01lcmdlVHJhbnMKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAordm9pZCBQdXRCeUlkVmFyaWFudDo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCit7CisgICAgbV9vbGRTdHJ1Y3R1cmUubWFya0lmQ2hlYXAodmlzaXRvcik7CisgICAg
aWYgKG1fbmV3U3RydWN0dXJlKQorICAgICAgICBtX25ld1N0cnVjdHVyZS0+bWFya0lmQ2hlYXAo
dmlzaXRvcik7Cit9CisKK2Jvb2wgUHV0QnlJZFZhcmlhbnQ6OmZpbmFsaXplKCkKK3sKKyAgICBp
ZiAoIW1fb2xkU3RydWN0dXJlLmlzU3RpbGxBbGl2ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKG1fbmV3U3RydWN0dXJlICYmICFIZWFwOjppc01hcmtlZChtX25ld1N0cnVjdHVy
ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIW1fY29uZGl0aW9uU2V0LmFyZVN0
aWxsTGl2ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fY2FsbExpbmtTdGF0
dXMgJiYgIW1fY2FsbExpbmtTdGF0dXMtPmZpbmFsaXplKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBQdXRCeUlkVmFyaWFudDo6ZHVtcChQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIGR1bXBJbkNvbnRleHQob3V0LCAwKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5oCShy
ZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJ
ZFZhcmlhbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03MywxNyArNzMsMTcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gbV9vbGRTdHJ1Y3R1cmU7CiAgICAgfQogICAgIAotICAgIGNvbnN0IFN0
cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBz
dHJ1Y3R1cmUoKTsKLSAgICB9Ci0gICAgCiAgICAgY29uc3QgU3RydWN0dXJlU2V0JiBvbGRTdHJ1
Y3R1cmUoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKGtpbmQoKSA9PSBUcmFuc2l0aW9u
IHx8IGtpbmQoKSA9PSBSZXBsYWNlIHx8IGtpbmQoKSA9PSBTZXR0ZXIpOwogICAgICAgICByZXR1
cm4gbV9vbGRTdHJ1Y3R1cmU7CiAgICAgfQogICAgIAorICAgIGNvbnN0IFN0cnVjdHVyZVNldCYg
c3RydWN0dXJlU2V0KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBvbGRTdHJ1Y3R1cmUo
KTsKKyAgICB9CisgICAgCiAgICAgU3RydWN0dXJlU2V0JiBvbGRTdHJ1Y3R1cmUoKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGtpbmQoKSA9PSBUcmFuc2l0aW9uIHx8IGtpbmQoKSA9PSBSZXBsYWNl
IHx8IGtpbmQoKSA9PSBTZXR0ZXIpOwpAQCAtMTI5LDYgKzEyOSw5IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgYXR0ZW1wdFRvTWVyZ2UoY29uc3QgUHV0QnlJZFZhcmlhbnQmIG90aGVyKTsKICAgICAK
KyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7CisgICAgYm9vbCBmaW5hbGl6ZSgp
OworICAgIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIHZvaWQgZHVt
cEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0KikgY29uc3Q7CiAKQEAgLTEzNyw3
ICsxNDAsNyBAQCBwcml2YXRlOgogICAgIAogICAgIEtpbmQgbV9raW5kOwogICAgIFN0cnVjdHVy
ZVNldCBtX29sZFN0cnVjdHVyZTsKLSAgICBTdHJ1Y3R1cmUqIG1fbmV3U3RydWN0dXJlOworICAg
IFN0cnVjdHVyZSogbV9uZXdTdHJ1Y3R1cmUgeyBudWxscHRyIH07CiAgICAgT2JqZWN0UHJvcGVy
dHlDb25kaXRpb25TZXQgbV9jb25kaXRpb25TZXQ7CiAgICAgUHJvcGVydHlPZmZzZXQgbV9vZmZz
ZXQ7CiAgICAgSW5mZXJyZWRUeXBlOjpEZXNjcmlwdG9yIG1fcmVxdWlyZWRUeXBlOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2Vz
LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVj
b3JkZWRTdGF0dXNlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlJlY29yZGVkU3RhdHVzZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K1JlY29yZGVkU3RhdHVzZXMmIFJlY29yZGVkU3RhdHVzZXM6Om9wZXJhdG9yPShSZWNvcmRlZFN0
YXR1c2VzJiYgb3RoZXIpCit7CisgICAgY2FsbHMgPSBXVEZNb3ZlKG90aGVyLmNhbGxzKTsKKyAg
ICBnZXRzID0gV1RGTW92ZShvdGhlci5nZXRzKTsKKyAgICBwdXRzID0gV1RGTW92ZShvdGhlci5w
dXRzKTsKKyAgICBzaHJpbmtUb0ZpdCgpOworICAgIHJldHVybiAqdGhpczsKK30KKworUmVjb3Jk
ZWRTdGF0dXNlczo6UmVjb3JkZWRTdGF0dXNlcyhSZWNvcmRlZFN0YXR1c2VzJiYgb3RoZXIpCit7
CisgICAgKnRoaXMgPSBXVEZNb3ZlKG90aGVyKTsKK30KKworQ2FsbExpbmtTdGF0dXMqIFJlY29y
ZGVkU3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmln
aW4sIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBzdGF0dXMpCit7CisgICAgYXV0byBzdGF0dXNQdHIg
PSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxMaW5rU3RhdHVzPihzdGF0dXMpOworICAgIENhbGxMaW5r
U3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7CisgICAgY2FsbHMuYXBwZW5kKHN0ZDo6
bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3RhdHVzUHRyKSkpOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK0dldEJ5SWRTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZEdldEJ5SWRT
dGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgY29uc3QgR2V0QnlJZFN0YXR1cyYg
c3RhdHVzKQoreworICAgIGF1dG8gc3RhdHVzUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxHZXRCeUlk
U3RhdHVzPihzdGF0dXMpOworICAgIEdldEJ5SWRTdGF0dXMqIHJlc3VsdCA9IHN0YXR1c1B0ci5n
ZXQoKTsKKyAgICBnZXRzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihjb2RlT3JpZ2luLCBXVEZNb3Zl
KHN0YXR1c1B0cikpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorICAgIAorUHV0QnlJZFN0YXR1
cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkUHV0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBj
b2RlT3JpZ2luLCBjb25zdCBQdXRCeUlkU3RhdHVzJiBzdGF0dXMpCit7CisgICAgYXV0byBzdGF0
dXNQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPFB1dEJ5SWRTdGF0dXM+KHN0YXR1cyk7CisgICAgUHV0
QnlJZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOworICAgIHB1dHMuYXBwZW5kKHN0
ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3RhdHVzUHRyKSkpOworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK3ZvaWQgUmVjb3JkZWRTdGF0dXNlczo6bWFya0lmQ2hlYXAoU2xvdFZp
c2l0b3ImIHNsb3RWaXNpdG9yKQoreworICAgIGZvciAoYXV0byYgcGFpciA6IGdldHMpCisgICAg
ICAgIHBhaXIuc2Vjb25kLT5tYXJrSWZDaGVhcChzbG90VmlzaXRvcik7CisgICAgZm9yIChhdXRv
JiBwYWlyIDogcHV0cykKKyAgICAgICAgcGFpci5zZWNvbmQtPm1hcmtJZkNoZWFwKHNsb3RWaXNp
dG9yKTsKK30KKwordm9pZCBSZWNvcmRlZFN0YXR1c2VzOjpmaW5hbGl6ZVdpdGhvdXREZWxldGlu
ZygpCit7CisgICAgYXV0byBmaW5hbGl6ZSA9IFtdIChhdXRvJiB2ZWN0b3IpIHsKKyAgICAgICAg
Zm9yIChhdXRvJiBwYWlyIDogdmVjdG9yKSB7CisgICAgICAgICAgICBpZiAoIXBhaXIuc2Vjb25k
LT5maW5hbGl6ZSgpKQorICAgICAgICAgICAgICAgICpwYWlyLnNlY29uZCA9IHsgfTsKKyAgICAg
ICAgfQorICAgIH07CisgICAgZm9yRWFjaFZlY3RvcihmaW5hbGl6ZSk7Cit9CisKK3ZvaWQgUmVj
b3JkZWRTdGF0dXNlczo6ZmluYWxpemUoKQoreworICAgIGF1dG8gZmluYWxpemUgPSBbXSAoYXV0
byYgdmVjdG9yKSB7CisgICAgICAgIHZlY3Rvci5yZW1vdmVBbGxNYXRjaGluZygKKyAgICAgICAg
ICAgIFsmXSAoYXV0byYgcGFpcikgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgcmV0dXJuICEq
cGFpci5zZWNvbmQgfHwgIXBhaXIuc2Vjb25kLT5maW5hbGl6ZSgpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIHZlY3Rvci5zaHJpbmtUb0ZpdCgpOworICAgIH07CisgICAgZm9yRWFjaFZlY3Rv
cihmaW5hbGl6ZSk7Cit9CisKK3ZvaWQgUmVjb3JkZWRTdGF0dXNlczo6c2hyaW5rVG9GaXQoKQor
eworICAgIGZvckVhY2hWZWN0b3IoW10gKGF1dG8mIHZlY3RvcikgeyB2ZWN0b3Iuc2hyaW5rVG9G
aXQoKTsgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmgJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ2FsbExpbmtT
dGF0dXMuaCIKKyNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgiCisjaW5jbHVkZSAiUHV0QnlJZFN0
YXR1cy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IFJlY29yZGVkU3RhdHVzZXMgewor
ICAgIFJlY29yZGVkU3RhdHVzZXMoKSB7IH0KKyAgICAKKyAgICBSZWNvcmRlZFN0YXR1c2VzJiBv
cGVyYXRvcj0oY29uc3QgUmVjb3JkZWRTdGF0dXNlcyYgb3RoZXIpID0gZGVsZXRlOworICAgIAor
ICAgIFJlY29yZGVkU3RhdHVzZXMmIG9wZXJhdG9yPShSZWNvcmRlZFN0YXR1c2VzJiYgb3RoZXIp
OworICAgIAorICAgIFJlY29yZGVkU3RhdHVzZXMoY29uc3QgUmVjb3JkZWRTdGF0dXNlcyYgb3Ro
ZXIpID0gZGVsZXRlOworICAgIAorICAgIFJlY29yZGVkU3RhdHVzZXMoUmVjb3JkZWRTdGF0dXNl
cyYmIG90aGVyKTsKKyAgICAKKyAgICBDYWxsTGlua1N0YXR1cyogYWRkQ2FsbExpbmtTdGF0dXMo
Y29uc3QgQ29kZU9yaWdpbiYsIGNvbnN0IENhbGxMaW5rU3RhdHVzJik7CisgICAgR2V0QnlJZFN0
YXR1cyogYWRkR2V0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29uc3QgR2V0QnlJZFN0
YXR1cyYpOworICAgIFB1dEJ5SWRTdGF0dXMqIGFkZFB1dEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9y
aWdpbiYsIGNvbnN0IFB1dEJ5SWRTdGF0dXMmKTsKKyAgICAKKyAgICB2b2lkIG1hcmtJZkNoZWFw
KFNsb3RWaXNpdG9yJiBzbG90VmlzaXRvcik7CisgICAgCisgICAgdm9pZCBmaW5hbGl6ZVdpdGhv
dXREZWxldGluZygpOworICAgIHZvaWQgZmluYWxpemUoKTsKKyAgICAKKyAgICB2b2lkIHNocmlu
a1RvRml0KCk7CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZv
ckVhY2hWZWN0b3IoY29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIGZ1bmMoY2FsbHMp
OworICAgICAgICBmdW5jKGdldHMpOworICAgICAgICBmdW5jKHB1dHMpOworICAgIH0KKyAgICAK
KyAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxDYWxsTGlu
a1N0YXR1cz4+PiBjYWxsczsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6
dW5pcXVlX3B0cjxHZXRCeUlkU3RhdHVzPj4+IGdldHM7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxD
b2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8UHV0QnlJZFN0YXR1cz4+PiBwdXRzOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TdHJ1Y3R1cmVTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9TdHJ1Y3R1cmVTZXQuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zMSw2ICszMSwyMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAordm9pZCBTdHJ1Y3R1cmVTZXQ6
Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9yKSBjb25zdAoreworICAgIGZvciAoU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgOiAqdGhpcykKKyAgICAgICAgc3RydWN0dXJlLT5tYXJrSWZDaGVh
cCh2aXNpdG9yKTsKK30KKworYm9vbCBTdHJ1Y3R1cmVTZXQ6OmlzU3RpbGxBbGl2ZSgpIGNvbnN0
Cit7CisgICAgZm9yIChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA6ICp0aGlzKSB7CisgICAgICAgIGlm
ICghSGVhcDo6aXNNYXJrZWQoc3RydWN0dXJlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgU3RydWN0dXJlU2V0OjpkdW1wSW5D
b250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25zdAogewog
ICAgIENvbW1hUHJpbnRlciBjb21tYTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9TdHJ1Y3R1cmVTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU2V0LmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMtMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTU4LDYgKzU4LDkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG9ubHlFbnRy
eSgpOwogICAgIH0KKworICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKSBjb25zdDsK
KyAgICBib29sIGlzU3RpbGxBbGl2ZSgpIGNvbnN0OwogICAgIAogICAgIHZvaWQgZHVtcEluQ29u
dGV4dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0KikgY29uc3Q7CiAgICAgdm9pZCBkdW1wKFBy
aW50U3RyZWFtJikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VGVybWluYXRlZENvZGVPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVGVybWluYXRlZENvZGVPcmlnaW4uaAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVGVybWluYXRlZENvZGVPcmlnaW4uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IElubGluZUNhbGxGcmFtZTsKKworc3RydWN0IFRl
cm1pbmF0ZWRDb2RlT3JpZ2luIHsKKyAgICBUZXJtaW5hdGVkQ29kZU9yaWdpbigpIHsgfQorICAg
IAorICAgIFRlcm1pbmF0ZWRDb2RlT3JpZ2luKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4s
IElubGluZUNhbGxGcmFtZSogdGVybWluYWwpCisgICAgICAgIDogY29kZU9yaWdpbihjb2RlT3Jp
Z2luKQorICAgICAgICAsIHRlcm1pbmFsKHRlcm1pbmFsKQorICAgIHsKKyAgICB9CisgICAgCisg
ICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luOworICAgIElubGluZUNhbGxGcmFtZSogdGVybWluYWwg
eyBudWxscHRyIH07Cit9OworCitzdHJ1Y3QgVGVybWluYXRlZENvZGVPcmlnaW5IYXNoVHJhbnNs
YXRvciB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgVGVybWluYXRlZENvZGVPcmln
aW4mIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlLmNvZGVPcmlnaW4uYXBwcm94
aW1hdGVIYXNoKHZhbHVlLnRlcm1pbmFsKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIGJvb2wg
ZXF1YWwoY29uc3QgQ29kZU9yaWdpbiYgYSwgY29uc3QgVGVybWluYXRlZENvZGVPcmlnaW4mIGIp
CisgICAgeworICAgICAgICByZXR1cm4gYi5jb2RlT3JpZ2luLmlzQXBwcm94aW1hdGVseUVxdWFs
VG8oYSwgYi50ZXJtaW5hbCk7CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5jcHAJKHJl
dmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBv
aW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAzLDMgKzIwMywyMyBAQCB2b2lkIERlZmVycmVk
V2F0Y2hwb2ludEZpcmU6OnRha2VXYXRjaHBvCiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCituYW1l
c3BhY2UgV1RGIHsKKwordm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6
V2F0Y2hwb2ludFN0YXRlIHN0YXRlKQoreworICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICBjYXNl
IEpTQzo6Q2xlYXJXYXRjaHBvaW50OgorICAgICAgICBvdXQucHJpbnQoIkNsZWFyV2F0Y2hwb2lu
dCIpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBKU0M6OklzV2F0Y2hlZDoKKyAgICAgICAg
b3V0LnByaW50KCJJc1dhdGNoZWQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSlNDOjpJ
c0ludmFsaWRhdGVkOgorICAgICAgICBvdXQucHJpbnQoIklzSW52YWxpZGF0ZWQiKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1dhdGNocG9pbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvV2F0Y2hwb2ludC5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NTAsMyArNDUw
LDEwIEBAIHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdU
RiB7CisKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OldhdGNocG9p
bnRTdGF0ZSk7CisKK30gLy8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMjMy
MjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMiw2ICsyMTIsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAg
UGhpQ2hpbGRyZW4qIHBoaUNoaWxkcmVuKCkgeyByZXR1cm4gbV9waGlDaGlsZHJlbi5nZXQoKTsg
fQogICAgIAorICAgIHZvaWQgZmlsdGVySUNTdGF0dXMoTm9kZSopOworICAgIAogcHJpdmF0ZToK
ICAgICB2b2lkIGNsb2JiZXJXb3JsZCgpOwogICAgIHZvaWQgZGlkRm9sZENsb2JiZXJXb3JsZCgp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNDk4LDYgKzM0OTgsOSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5CiAgICAgY2FzZSBMb29wSGludDoKICAgICBjYXNlIFpvbWJpZUhpbnQ6CiAg
ICAgY2FzZSBFeGl0T0s6CisgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICBjYXNl
IEZpbHRlckdldEJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAg
ICAgICBicmVhazsKIAogICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0ZsYWdzOiB7CkBAIC0zNjE4LDYg
KzM2MjEsMzUgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBBYnN0cmFjdFN0YXRlVHlwZT4KK3ZvaWQgQWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmZpbHRlcklDU3RhdHVzKE5vZGUqIG5vZGUpCit7
CisgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1
czoKKyAgICAgICAgaWYgKEpTVmFsdWUgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5t
X3ZhbHVlKQorICAgICAgICAgICAgbm9kZS0+Y2FsbExpbmtTdGF0dXMoKS0+ZmlsdGVyKG1fdm0s
IHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAgIGNhc2UgRmlsdGVyR2V0QnlJ
ZFN0YXR1czogeworICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICBpZiAodmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkKKyAg
ICAgICAgICAgIG5vZGUtPmdldEJ5SWRTdGF0dXMoKS0+ZmlsdGVyKHZhbHVlLm1fc3RydWN0dXJl
LnRvU3RydWN0dXJlU2V0KCkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAorICAg
IGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czogeworICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1
ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBpZiAodmFsdWUubV9zdHJ1Y3R1
cmUuaXNGaW5pdGUoKSkKKyAgICAgICAgICAgIG5vZGUtPnB1dEJ5SWRTdGF0dXMoKS0+ZmlsdGVy
KHZhbHVlLm1fc3RydWN0dXJlLnRvU3RydWN0dXJlU2V0KCkpOworICAgICAgICBicmVhazsKKyAg
ICB9CisKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEFic3RyYWN0
U3RhdGVUeXBlPgogYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgaW5kZXhJbkJsb2NrKQogewogICAgIHJldHVybiBleGVj
dXRlRWZmZWN0cyhpbmRleEluQmxvY2ssIG1fc3RhdGUuYmxvY2soKS0+YXQoaW5kZXhJbkJsb2Nr
KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwODIsOSArMTA4Miw4IEBA
IHByaXZhdGU6CiAgICAgICAgIC8vIGNvZGUgYmxvY2sgaGFkIGdhdGhlcmVkLgogICAgICAgICBM
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNlciBtX2xhenlPcGVyYW5kczsKICAgICAgICAgCi0g
ICAgICAgIENhbGxMaW5rSW5mb01hcCBtX2NhbGxMaW5rSW5mb3M7Ci0gICAgICAgIFN0dWJJbmZv
TWFwIG1fc3R1YkluZm9zOwotICAgICAgICBCeVZhbEluZm9NYXAgbV9ieVZhbEluZm9zOworICAg
ICAgICBJQ1N0YXR1c01hcCBtX2Jhc2VsaW5lTWFwOworICAgICAgICBJQ1N0YXR1c0NvbnRleHQg
bV9vcHRpbWl6ZWRDb250ZXh0OwogICAgICAgICAKICAgICAgICAgLy8gUG9pbnRlcnMgdG8gdGhl
IGFyZ3VtZW50IHBvc2l0aW9uIHRyYWNrZXJzIGZvciB0aGlzIHNsaWNlIG9mIGNvZGUuCiAgICAg
ICAgIFZlY3RvcjxBcmd1bWVudFBvc2l0aW9uKj4gbV9hcmd1bWVudFBvc2l0aW9uczsKQEAgLTEx
MDIsMTAgKzExMDEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lOjpL
aW5kLAogICAgICAgICAgICAgQmFzaWNCbG9jayogY29udGludWF0aW9uQmxvY2spOwogICAgICAg
ICAKLSAgICAgICAgfklubGluZVN0YWNrRW50cnkoKQotICAgICAgICB7Ci0gICAgICAgICAgICBt
X2J5dGVDb2RlUGFyc2VyLT5tX2lubGluZVN0YWNrVG9wID0gbV9jYWxsZXI7Ci0gICAgICAgIH0K
KyAgICAgICAgfklubGluZVN0YWNrRW50cnkoKTsKICAgICAgICAgCiAgICAgICAgIFZpcnR1YWxS
ZWdpc3RlciByZW1hcE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpIGNvbnN0CiAgICAg
ICAgIHsKQEAgLTExMjAsNiArMTExNiw4IEBAIHByaXZhdGU6CiAgICAgCiAgICAgSW5saW5lU3Rh
Y2tFbnRyeSogbV9pbmxpbmVTdGFja1RvcDsKICAgICAKKyAgICBJQ1N0YXR1c0NvbnRleHRTdGFj
ayBtX2ljQ29udGV4dFN0YWNrOworICAgIAogICAgIHN0cnVjdCBEZWxheWVkU2V0TG9jYWwgewog
ICAgICAgICBDb2RlT3JpZ2luIG1fb3JpZ2luOwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV9v
cGVyYW5kOwpAQCAtMTE0NiwxMCArMTE0NCw2IEBAIHByaXZhdGU6CiAgICAgCiAgICAgVmVjdG9y
PERlbGF5ZWRTZXRMb2NhbCwgMj4gbV9zZXRMb2NhbFF1ZXVlOwogCi0gICAgQ29kZUJsb2NrKiBt
X2RmZ0NvZGVCbG9jazsKLSAgICBDYWxsTGlua1N0YXR1czo6Q29udGV4dE1hcCBtX2NhbGxDb250
ZXh0TWFwOwotICAgIFN0dWJJbmZvTWFwIG1fZGZnU3R1YkluZm9zOwotICAgIAogICAgIEluc3Ry
dWN0aW9uKiBtX2N1cnJlbnRJbnN0cnVjdGlvbjsKICAgICBib29sIG1faGFzRGVidWdnZXJFbmFi
bGVkOwogfTsKQEAgLTEyMTQsNyArMTIwOCw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0
eSBCeXRlQ29kZVBhcnMKIAogICAgIENhbGxMaW5rU3RhdHVzIGNhbGxMaW5rU3RhdHVzID0gQ2Fs
bExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJv
ZmlsZWRCbG9jaywgY3VycmVudENvZGVPcmlnaW4oKSwKLSAgICAgICAgbV9pbmxpbmVTdGFja1Rv
cC0+bV9jYWxsTGlua0luZm9zLCBtX2NhbGxDb250ZXh0TWFwKTsKKyAgICAgICAgbV9pbmxpbmVT
dGFja1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRleHRTdGFjayk7CiAKICAgICBJbmxpbmVD
YWxsRnJhbWU6OktpbmQga2luZCA9IElubGluZUNhbGxGcmFtZTo6a2luZEZvcihjYWxsTW9kZSk7
CiAKQEAgLTEyNDIsNiArMTIzNiw4IEBAIEJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRl
Q29kZVBhcnMKICAgICAvLyBJZiB3ZSBoYXZlIHByb2ZpbGluZyBpbmZvcm1hdGlvbiBhYm91dCB0
aGlzIGNhbGwsIGFuZCBpdCBkaWQgbm90IGJlaGF2ZSB0b28gcG9seW1vcnBoaWNhbGx5LAogICAg
IC8vIHdlIG1heSBiZSBhYmxlIHRvIGlubGluZSBpdCwgb3IgaW4gdGhlIGNhc2Ugb2YgcmVjdXJz
aXZlIHRhaWwgY2FsbHMgdHVybiBpdCBpbnRvIGEganVtcC4KICAgICBpZiAoY2FsbExpbmtTdGF0
dXMuY2FuT3B0aW1pemUoKSkgeworICAgICAgICBhZGRUb0dyYXBoKEZpbHRlckNhbGxMaW5rU3Rh
dHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcy5hZGRDYWxsTGlua1N0
YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBjYWxsTGlua1N0YXR1cykpLCBjYWxsVGFyZ2V0KTsK
KyAgICAgICAgCiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQgPSB2aXJ0dWFs
UmVnaXN0ZXJGb3JBcmd1bWVudCgwLCByZWdpc3Rlck9mZnNldCk7CiAgICAgICAgIGF1dG8gb3B0
aW1pemF0aW9uUmVzdWx0ID0gaGFuZGxlSW5saW5pbmcoY2FsbFRhcmdldCwgcmVzdWx0LCBjYWxs
TGlua1N0YXR1cywgcmVnaXN0ZXJPZmZzZXQsIHRoaXNBcmd1bWVudCwKICAgICAgICAgICAgIGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBtX2N1cnJlbnRJbmRleCArIGluc3RydWN0aW9uU2l6
ZSwgb3AsIGtpbmQsIHByZWRpY3Rpb24pOwpAQCAtMTI3OSwxMiArMTI3NSwxNCBAQCBCeXRlQ29k
ZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzCiAgICAgCiAgICAgQ2FsbExpbmtTdGF0
dXMgY2FsbExpbmtTdGF0dXMgPSBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAg
bV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBjdXJyZW50Q29kZU9yaWdpbigpLAot
ICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxMaW5rSW5mb3MsIG1fY2FsbENvbnRleHRN
YXApOworICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4
dFN0YWNrKTsKICAgICByZWZpbmVTdGF0aWNhbGx5KGNhbGxMaW5rU3RhdHVzLCBjYWxsVGFyZ2V0
KTsKICAgICAKICAgICBWRVJCT1NFX0xPRygiICAgIFZhcmFyZ3MgY2FsbCBsaW5rIHN0YXR1cyBh
dCAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiOiAiLCBjYWxsTGlua1N0YXR1cywgIlxuIik7CiAg
ICAgCiAgICAgaWYgKGNhbGxMaW5rU3RhdHVzLmNhbk9wdGltaXplKCkpIHsKKyAgICAgICAgYWRk
VG9HcmFwaChGaWx0ZXJDYWxsTGlua1N0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29y
ZGVkU3RhdHVzZXMuYWRkQ2FsbExpbmtTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgY2FsbExp
bmtTdGF0dXMpKSwgY2FsbFRhcmdldCk7CisgICAgICAgIAogICAgICAgICBpZiAoaGFuZGxlVmFy
YXJnc0lubGluaW5nKGNhbGxUYXJnZXQsIHJlc3VsdCwKICAgICAgICAgICAgIGNhbGxMaW5rU3Rh
dHVzLCBmaXJzdEZyZWVSZWcsIFZpcnR1YWxSZWdpc3Rlcih0aGlzUmVnKSwgVmlydHVhbFJlZ2lz
dGVyKGFyZ3VtZW50cyksCiAgICAgICAgICAgICBmaXJzdFZhckFyZ09mZnNldCwgb3AsCkBAIC0z
MzE4LDkgKzMzMTYsMTIgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVy
KAogICAgIGlmICghY2hlY2sodmFyaWFudC5jb25kaXRpb25TZXQoKSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBhZGRUb0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5h
ZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSkpLCB0aGlzTm9kZSk7Ci0KKyAg
ICAKICAgICAvLyBXZSBkbyBub3QgbmVlZCB0byBlbWl0IENoZWNrQ2VsbCB0aGluZ3kgaGVyZS4g
V2hlbiB0aGUgY3VzdG9tIGFjY2Vzc29yIGlzIHJlcGxhY2VkIHRvIGRpZmZlcmVudCBvbmUsIFN0
cnVjdHVyZSB0cmFuc2l0aW9uIG9jY3Vycy4KICAgICBhZGRUb0dyYXBoKENoZWNrU3ViQ2xhc3Ms
IE9wSW5mbyhkb21BdHRyaWJ1dGUuY2xhc3NJbmZvKSwgdGhpc05vZGUpOworICAgIAorICAgIGJv
b2wgd2FzU2VlbkluSklUID0gdHJ1ZTsKKyAgICBhZGRUb0dyYXBoKEZpbHRlckdldEJ5SWRTdGF0
dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFkZEdldEJ5SWRTdGF0
dXMoY3VycmVudENvZGVPcmlnaW4oKSwgR2V0QnlJZFN0YXR1cyhHZXRCeUlkU3RhdHVzOjpDdXN0
b20sIHdhc1NlZW5JbkpJVCwgdmFyaWFudCkpKSwgdGhpc05vZGUpOwogCiAgICAgQ2FsbERPTUdl
dHRlckRhdGEqIGNhbGxET01HZXR0ZXJEYXRhID0gbV9ncmFwaC5tX2NhbGxET01HZXR0ZXJEYXRh
LmFkZCgpOwogICAgIGNhbGxET01HZXR0ZXJEYXRhLT5jdXN0b21BY2Nlc3NvckdldHRlciA9IHZh
cmlhbnQuY3VzdG9tQWNjZXNzb3JHZXR0ZXIoKTsKQEAgLTMzNTIsNiArMzM1Myw4IEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZU1vZHVsZU5hbWVzcGEKICAgICBpZiAobV9pbmxpbmVTdGFj
a1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2VsbCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZv
KG1fZ3JhcGguZnJlZXplKGdldEJ5SWQubW9kdWxlTmFtZXNwYWNlT2JqZWN0KCkpKSwgRWRnZShi
YXNlLCBDZWxsVXNlKSk7CisgICAgCisgICAgYWRkVG9HcmFwaChGaWx0ZXJHZXRCeUlkU3RhdHVz
LCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcy5hZGRHZXRCeUlkU3RhdHVz
KGN1cnJlbnRDb2RlT3JpZ2luKCksIGdldEJ5SWQpKSwgYmFzZSk7CiAKICAgICAvLyBJZGVhbGx5
IHdlIHdvdWxkbid0IGhhdmUgdG8gZG8gdGhpcyBQaGFudG9tLiBCdXQ6CiAgICAgLy8KQEAgLTQw
MDcsMTQgKzQwMTAsMjUgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKKyAgICAvLyBGSVhNRTogSWYgd2UgdXNlIHRoZSBH
ZXRCeUlkU3RhdHVzIGZvciBhbnl0aGluZyB0aGVuIHdlIHNob3VsZCByZWNvcmQgaXQgYW5kIGlu
c2VydCBhIG5vZGUKKyAgICAvLyBhZnRlciBldmVyeXRoaW5nIGVsc2UgKGxpa2UgdGhlIEdldEJ5
T2Zmc2V0IG9yIHdoYXRldmVyKSB0aGF0IHdpbGwgZmlsdGVyIHRoZSByZWNvcmRlZAorICAgIC8v
IEdldEJ5SWRTdGF0dXMuIFRoYXQgbWVhbnMgdGhhdCB0aGUgY29uc3RhbnQgZm9sZGVyIGFsc28g
bmVlZHMgdG8gZG8gdGhlIHNhbWUhCisgICAgCiAgICAgaWYgKGdldEJ5SWRTdGF0dXMubnVtVmFy
aWFudHMoKSA+IDEpIHsKICAgICAgICAgaWYgKGdldEJ5SWRTdGF0dXMubWFrZXNDYWxscygpIHx8
ICFpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKQotICAgICAgICAgICAgfHwgIU9wdGlvbnM6OnVz
ZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcoKSkgeworICAgICAgICAgICAgfHwgIU9wdGlvbnM6
OnVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcoKQorICAgICAgICAgICAgfHwgZ2V0QnlJZFN0
YXR1cy5udW1WYXJpYW50cygpID4gT3B0aW9uczo6bWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmlu
Z0xpc3RTaXplKCkpIHsKKyAgICAgICAgICAgIGlmIChmYWxzZSAmJiBnZXRCeUlkU3RhdHVzLm51
bVZhcmlhbnRzKCkgPiBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNp
emUoKSkgeworICAgICAgICAgICAgICAgIGRhdGFMb2coIkF0ICIsIGN1cnJlbnRDb2RlT3JpZ2lu
KCksICJcbiIpOworICAgICAgICAgICAgICAgIGRhdGFMb2coIkdpdmluZyB1cCBvbjogIiwgZ2V0
QnlJZFN0YXR1cywgIlxuIik7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBzZXQoVmlydHVh
bFJlZ2lzdGVyKGRlc3RpbmF0aW9uT3BlcmFuZCksCiAgICAgICAgICAgICAgICAgYWRkVG9HcmFw
aChnZXRCeUlkLCBPcEluZm8oaWRlbnRpZmllck51bWJlciksIE9wSW5mbyhwcmVkaWN0aW9uKSwg
YmFzZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAg
ICBhZGRUb0dyYXBoKEZpbHRlckdldEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5y
ZWNvcmRlZFN0YXR1c2VzLmFkZEdldEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgZ2V0
QnlJZFN0YXR1cykpLCBiYXNlKTsKKyAgICAgICAgCiAgICAgICAgIFZlY3RvcjxNdWx0aUdldEJ5
T2Zmc2V0Q2FzZSwgMj4gY2FzZXM7CiAgICAgICAgIAogICAgICAgICAvLyAxKSBFbWl0IHByb3Rv
dHlwZSBzdHJ1Y3R1cmUgY2hlY2tzIGZvciBhbGwgY2hhaW5zLiBUaGlzIGNvdWxkIHNvcnQgb2Yg
bWF5YmUgbm90IGJlCkBAIC00MDU2LDEwICs0MDcwLDEyIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUdldEJ5SWQoCiAgICAgICAgICAgICBhZGRUb0dyYXBoKE11bHRpR2V0QnlPZmZzZXQs
IE9wSW5mbyhkYXRhKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBiYXNlKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CisKKyAgICBhZGRUb0dyYXBoKEZpbHRlckdldEJ5SWRTdGF0dXMsIE9wSW5mbyht
X2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFkZEdldEJ5SWRTdGF0dXMoY3VycmVudENv
ZGVPcmlnaW4oKSwgZ2V0QnlJZFN0YXR1cykpLCBiYXNlKTsKICAgICAKICAgICBBU1NFUlQoZ2V0
QnlJZFN0YXR1cy5udW1WYXJpYW50cygpID09IDEpOwogICAgIEdldEJ5SWRWYXJpYW50IHZhcmlh
bnQgPSBnZXRCeUlkU3RhdHVzWzBdOwotICAgICAgICAgICAgICAgIAorICAgIAogICAgIE5vZGUq
IGxvYWRlZFZhbHVlID0gbG9hZChwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2
YXJpYW50KTsKICAgICBpZiAoIWxvYWRlZFZhbHVlKSB7CiAgICAgICAgIHNldChWaXJ0dWFsUmVn
aXN0ZXIoZGVzdGluYXRpb25PcGVyYW5kKSwKQEAgLTQxNTAsNyArNDE2NiwxMCBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgIAogICAgIGlmIChwdXRCeUlkU3RhdHVz
Lm51bVZhcmlhbnRzKCkgPiAxKSB7CiAgICAgICAgIGlmICghaXNGVEwobV9ncmFwaC5tX3BsYW4u
bW9kZSkgfHwgcHV0QnlJZFN0YXR1cy5tYWtlc0NhbGxzKCkKLSAgICAgICAgICAgIHx8ICFPcHRp
b25zOjp1c2VQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nKCkpIHsKKyAgICAgICAgICAgIHx8ICFP
cHRpb25zOjp1c2VQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nKCkKKyAgICAgICAgICAgIHx8IHB1
dEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSA+IE9wdGlvbnM6Om1heFBvbHltb3JwaGljQWNjZXNz
SW5saW5pbmdMaXN0U2l6ZSgpKSB7CisgICAgICAgICAgICBpZiAoZmFsc2UgJiYgcHV0QnlJZFN0
YXR1cy5udW1WYXJpYW50cygpID4gT3B0aW9uczo6bWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmlu
Z0xpc3RTaXplKCkpCisgICAgICAgICAgICAgICAgZGF0YUxvZygiR2l2aW5nIHVwIG9uOiAiLCBw
dXRCeUlkU3RhdHVzLCAiXG4iKTsKICAgICAgICAgICAgIGVtaXRQdXRCeUlkKGJhc2UsIGlkZW50
aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVjdCk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KQEAgLTQxNjgsNiArNDE4Nyw4IEBAIHZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgICAgIAogICAgICAgICBpZiAoVU5MSUtFTFkobV9n
cmFwaC5jb21waWxhdGlvbigpKSkKICAgICAgICAgICAgIG1fZ3JhcGguY29tcGlsYXRpb24oKS0+
bm90aWNlSW5saW5lZFB1dEJ5SWQoKTsKKyAgICAgICAgCisgICAgICAgIGFkZFRvR3JhcGgoRmls
dGVyUHV0QnlJZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMu
YWRkUHV0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBwdXRCeUlkU3RhdHVzKSksIGJh
c2UpOwogCiAgICAgICAgIGZvciAoY29uc3QgUHV0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBwdXRC
eUlkU3RhdHVzLnZhcmlhbnRzKCkpIHsKICAgICAgICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJJbmZl
cnJlZFR5cGUodmFyaWFudC5yZXF1aXJlZFR5cGUoKSk7CkBAIC00MTg5LDYgKzQyMTAsOCBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKAogICAgIAogICAgIHN3aXRjaCAodmFy
aWFudC5raW5kKCkpIHsKICAgICBjYXNlIFB1dEJ5SWRWYXJpYW50OjpSZXBsYWNlOiB7CisgICAg
ICAgIGFkZFRvR3JhcGgoRmlsdGVyUHV0QnlJZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFu
LnJlY29yZGVkU3RhdHVzZXMuYWRkUHV0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBw
dXRCeUlkU3RhdHVzKSksIGJhc2UpOworICAgICAgICAKICAgICAgICAgc3RvcmUoYmFzZSwgaWRl
bnRpZmllck51bWJlciwgdmFyaWFudCwgdmFsdWUpOwogICAgICAgICBpZiAoVU5MSUtFTFkobV9n
cmFwaC5jb21waWxhdGlvbigpKSkKICAgICAgICAgICAgIG1fZ3JhcGguY29tcGlsYXRpb24oKS0+
bm90aWNlSW5saW5lZFB1dEJ5SWQoKTsKQEAgLTQxOTYsNiArNDIxOSw4IEBAIHZvaWQgQnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgfQogICAgIAogICAgIGNhc2UgUHV0QnlJZFZh
cmlhbnQ6OlRyYW5zaXRpb246IHsKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJQdXRCeUlkU3Rh
dHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcy5hZGRQdXRCeUlkU3Rh
dHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIHB1dEJ5SWRTdGF0dXMpKSwgYmFzZSk7CisgICAgICAg
IAogICAgICAgICBhZGRUb0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRT
dHJ1Y3R1cmVTZXQodmFyaWFudC5vbGRTdHJ1Y3R1cmUoKSkpLCBiYXNlKTsKICAgICAgICAgaWYg
KCFjaGVjayh2YXJpYW50LmNvbmRpdGlvblNldCgpKSkgewogICAgICAgICAgICAgZW1pdFB1dEJ5
SWQoYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0
KTsKQEAgLTQyNjMsNiArNDI4OCw4IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5
SWQoCiAgICAgfQogICAgICAgICAKICAgICBjYXNlIFB1dEJ5SWRWYXJpYW50OjpTZXR0ZXI6IHsK
KyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJQdXRCeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5t
X3BsYW4ucmVjb3JkZWRTdGF0dXNlcy5hZGRQdXRCeUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2lu
KCksIHB1dEJ5SWRTdGF0dXMpKSwgYmFzZSk7CisgICAgICAgIAogICAgICAgICBOb2RlKiBsb2Fk
ZWRWYWx1ZSA9IGxvYWQoU3BlY0NlbGxPdGhlciwgYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFy
aWFudCk7CiAgICAgICAgIGlmICghbG9hZGVkVmFsdWUpIHsKICAgICAgICAgICAgIGVtaXRQdXRC
eUlkKGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIHZhbHVlLCBwdXRCeUlkU3RhdHVzLCBpc0RpcmVj
dCk7CkBAIC00NDk5LDYgKzQ1MjYsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KHVuc2lnbmVkCiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmZyZWV6ZShy
YXJlRGF0YSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC53YXRjaHBvaW50
cygpLmFkZExhemlseShyYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIFRoZSBjYWxsZWUgaXMgc3RpbGwgbGl2ZSB1cCB0byB0aGlzIHBvaW50LgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUGhhbnRvbSwgY2FsbGVlKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOb2RlKiBvYmplY3QgPSBhZGRUb0dyYXBoKE5ld09iamVj
dCwgT3BJbmZvKG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUoc3RydWN0dXJlKSkpOwpAQCAtNDc5
MSw3ICs0ODE5LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAog
ICAgICAgICAgICAgYXV0byYgYnl0ZWNvZGUgPSAqcmVpbnRlcnByZXRfY2FzdDxPcEluc3RhbmNl
b2YqPihjdXJyZW50SW5zdHJ1Y3Rpb24pOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBJbnN0
YW5jZU9mU3RhdHVzIHN0YXR1cyA9IEluc3RhbmNlT2ZTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAg
ICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBtX2lubGluZVN0
YWNrVG9wLT5tX3N0dWJJbmZvcywKKyAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5t
X3Byb2ZpbGVkQmxvY2ssIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsCiAgICAgICAg
ICAgICAgICAgbV9jdXJyZW50SW5kZXgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBOb2Rl
KiB2YWx1ZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUudmFsdWUoKSkpOwpAQCAtNTAy
NCw3ICs1MDUyLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAog
ICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IDA7CiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2lubGluZVN0YWNr
VG9wLT5tX3Byb2ZpbGVkQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICAgICAgQnlWYWxJbmZv
KiBieVZhbEluZm8gPSBtX2lubGluZVN0YWNrVG9wLT5tX2J5VmFsSW5mb3MuZ2V0KENvZGVPcmln
aW4oY3VycmVudENvZGVPcmlnaW4oKS5ieXRlY29kZUluZGV4KSk7CisgICAgICAgICAgICAgICAg
QnlWYWxJbmZvKiBieVZhbEluZm8gPSBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLmdl
dChDb2RlT3JpZ2luKGN1cnJlbnRDb2RlT3JpZ2luKCkuYnl0ZWNvZGVJbmRleCkpLmJ5VmFsSW5m
bzsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2hlbiB0aGUgYnl0ZWNvZGUgaXMgbm90IGNv
bXBpbGVkIGluIHRoZSBiYXNlbGluZSBKSVQsIGJ5VmFsSW5mbyBiZWNvbWVzIG51bGwuCiAgICAg
ICAgICAgICAgICAgLy8gQXQgdGhhdCB0aW1lLCB0aGVyZSBpcyBubyBpbmZvcm1hdGlvbi4KICAg
ICAgICAgICAgICAgICBpZiAoYnlWYWxJbmZvCkBAIC01MDkzLDcgKzUxMjEsNyBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgUHV0QnlJ
ZFN0YXR1cyBwdXRCeUlkU3RhdHVzOwogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2Zp
bGVkQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICAgICAgICAgIEJ5VmFsSW5mbyogYnlWYWxJ
bmZvID0gbV9pbmxpbmVTdGFja1RvcC0+bV9ieVZhbEluZm9zLmdldChDb2RlT3JpZ2luKGN1cnJl
bnRDb2RlT3JpZ2luKCkuYnl0ZWNvZGVJbmRleCkpOworICAgICAgICAgICAgICAgICAgICBCeVZh
bEluZm8qIGJ5VmFsSW5mbyA9IG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAuZ2V0KENv
ZGVPcmlnaW4oY3VycmVudENvZGVPcmlnaW4oKS5ieXRlY29kZUluZGV4KSkuYnlWYWxJbmZvOwog
ICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2hlbiB0aGUgYnl0ZWNvZGUgaXMgbm90IGNv
bXBpbGVkIGluIHRoZSBiYXNlbGluZSBKSVQsIGJ5VmFsSW5mbyBiZWNvbWVzIG51bGwuCiAgICAg
ICAgICAgICAgICAgICAgIC8vIEF0IHRoYXQgdGltZSwgdGhlcmUgaXMgbm8gaW5mb3JtYXRpb24u
CiAgICAgICAgICAgICAgICAgICAgIGlmIChieVZhbEluZm8gCkBAIC01MTk5LDggKzUyMjcsOCBA
QCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBoLmlkZW50aWZpZXJz
KClbaWRlbnRpZmllck51bWJlcl07CiAgICAgICAgICAgICBHZXRCeUlkU3RhdHVzIGdldEJ5SWRT
dGF0dXMgPSBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAotICAgICAgICAgICAgICAgIG1faW5s
aW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgbV9kZmdDb2RlQmxvY2ssCi0gICAgICAgICAg
ICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9zdHViSW5mb3MsIG1fZGZnU3R1YkluZm9zLAorICAg
ICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAg
ICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNr
LAogICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCksIHVpZCk7CiAKICAgICAgICAg
ICAgIEFjY2Vzc1R5cGUgdHlwZSA9IEFjY2Vzc1R5cGU6OkdldDsKQEAgLTUyNDMsOCArNTI3MSw4
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAg
IGJvb2wgZGlyZWN0ID0gY3VycmVudEluc3RydWN0aW9uWzhdLnUucHV0QnlJZEZsYWdzICYgUHV0
QnlJZElzRGlyZWN0OwogCiAgICAgICAgICAgICBQdXRCeUlkU3RhdHVzIHB1dEJ5SWRTdGF0dXMg
PSBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAotICAgICAgICAgICAgICAgIG1faW5saW5lU3Rh
Y2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgbV9kZmdDb2RlQmxvY2ssCi0gICAgICAgICAgICAgICAg
bV9pbmxpbmVTdGFja1RvcC0+bV9zdHViSW5mb3MsIG1fZGZnU3R1YkluZm9zLAorICAgICAgICAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywKKyAgICAgICAgICAgICAg
ICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrLAogICAg
ICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCksIG1fZ3JhcGguaWRlbnRpZmllcnMoKVtp
ZGVudGlmaWVyTnVtYmVyXSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGhhbmRsZVB1dEJ5
SWQoYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGRpcmVjdCk7
CkBAIC02NjAzLDEyICs2NjMxLDE5IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5
OjpJbmxpbmUKICAgICAgICAgLy8gV2UgZG8gdGhpcyB3aGlsZSBob2xkaW5nIHRoZSBsb2NrIGJl
Y2F1c2Ugd2Ugd2FudCB0byBlbmNvdXJhZ2UgU3RydWN0dXJlU3R1YkluZm8ncwogICAgICAgICAv
LyB0byBiZSBwb3RlbnRpYWxseSBhZGRlZCB0byBvcGVyYXRpb25zIGFuZCBiZWNhdXNlIHRoZSBw
cm9maWxlZCBibG9jayBjb3VsZCBiZSBpbiB0aGUKICAgICAgICAgLy8gbWlkZGxlIG9mIExMSW50
LT5KSVQgdGllci11cCBpbiB3aGljaCBjYXNlIHdlIHdvdWxkIGJlIGFkZGluZyB0aGUgaW5mbydz
IHJpZ2h0IG5vdy4KLSAgICAgICAgaWYgKG1fcHJvZmlsZWRCbG9jay0+aGFzQmFzZWxpbmVKSVRQ
cm9maWxpbmcoKSkgewotICAgICAgICAgICAgbV9wcm9maWxlZEJsb2NrLT5nZXRTdHViSW5mb01h
cChsb2NrZXIsIG1fc3R1YkluZm9zKTsKLSAgICAgICAgICAgIG1fcHJvZmlsZWRCbG9jay0+Z2V0
Q2FsbExpbmtJbmZvTWFwKGxvY2tlciwgbV9jYWxsTGlua0luZm9zKTsKLSAgICAgICAgICAgIG1f
cHJvZmlsZWRCbG9jay0+Z2V0QnlWYWxJbmZvTWFwKGxvY2tlciwgbV9ieVZhbEluZm9zKTsKKyAg
ICAgICAgaWYgKG1fcHJvZmlsZWRCbG9jay0+aGFzQmFzZWxpbmVKSVRQcm9maWxpbmcoKSkKKyAg
ICAgICAgICAgIG1fcHJvZmlsZWRCbG9jay0+Z2V0SUNTdGF0dXNNYXAobG9ja2VyLCBtX2Jhc2Vs
aW5lTWFwKTsKKyAgICB9CisgICAgCisgICAgaWYgKE9wdGlvbnM6OnVzZVBvbHl2YXJpYW50RGV2
aXJ0dWFsaXphdGlvbigpKSB7CisgICAgICAgIENvZGVCbG9jayogb3B0aW1pemVkQmxvY2sgPSBt
X3Byb2ZpbGVkQmxvY2stPnJlcGxhY2VtZW50KCk7CisgICAgICAgIG1fb3B0aW1pemVkQ29udGV4
dC5vcHRpbWl6ZWRDb2RlQmxvY2sgPSBvcHRpbWl6ZWRCbG9jazsKKyAgICAgICAgaWYgKG9wdGlt
aXplZEJsb2NrKSB7CisgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG9wdGlt
aXplZEJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgb3B0aW1pemVkQmxvY2stPmdldElDU3Rh
dHVzTWFwKGxvY2tlciwgbV9vcHRpbWl6ZWRDb250ZXh0Lm1hcCk7CiAgICAgICAgIH0KICAgICB9
CisgICAgYnl0ZUNvZGVQYXJzZXItPm1faWNDb250ZXh0U3RhY2suYXBwZW5kKCZtX29wdGltaXpl
ZENvbnRleHQpOwogICAgIAogICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1dpdGhG
aXh1cCA9IHN0ZDo6bWF4PGludD4oYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGNvZGVCbG9j
ay0+bnVtUGFyYW1ldGVycygpKTsKIApAQCAtNjYxOCw2ICs2NjUzLDcgQEAgQnl0ZUNvZGVQYXJz
ZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZQogICAgICAgICBBU1NFUlQoaW5saW5lQ2FsbEZy
YW1lU3RhcnQuaXNWYWxpZCgpKTsKICAgICAgICAgCiAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1l
ID0gYnl0ZUNvZGVQYXJzZXItPm1fZ3JhcGgubV9wbGFuLmlubGluZUNhbGxGcmFtZXMtPmFkZCgp
OworICAgICAgICBtX29wdGltaXplZENvbnRleHQuaW5saW5lQ2FsbEZyYW1lID0gbV9pbmxpbmVD
YWxsRnJhbWU7CiAKICAgICAgICAgLy8gVGhlIG93bmVyIGlzIHRoZSBtYWNoaW5lIGNvZGUgYmxv
Y2ssIGFuZCB3ZSBhbHJlYWR5IGhhdmUgYSBiYXJyaWVyIG9uIHRoYXQgd2hlbiB0aGUKICAgICAg
ICAgLy8gcGxhbiBmaW5pc2hlcy4KQEAgLTY2NzMsNiArNjcwOSwxMyBAQCBCeXRlQ29kZVBhcnNl
cjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lCiAgICAgYnl0ZUNvZGVQYXJzZXItPm1faW5saW5l
U3RhY2tUb3AgPSB0aGlzOwogfQogCitCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6
fklubGluZVN0YWNrRW50cnkoKQoreworICAgIG1fYnl0ZUNvZGVQYXJzZXItPm1faW5saW5lU3Rh
Y2tUb3AgPSBtX2NhbGxlcjsKKyAgICBSRUxFQVNFX0FTU0VSVChtX2J5dGVDb2RlUGFyc2VyLT5t
X2ljQ29udGV4dFN0YWNrLmxhc3QoKSA9PSAmbV9vcHRpbWl6ZWRDb250ZXh0KTsKKyAgICBtX2J5
dGVDb2RlUGFyc2VyLT5tX2ljQ29udGV4dFN0YWNrLnJlbW92ZUxhc3QoKTsKK30KKwogdm9pZCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQogewogICAgIGNsZWFyQ2FjaGVzKCk7CkBA
IC02NzY5LDE1ICs2ODEyLDYgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2UoKQogICAgIAog
ICAgIFZFUkJPU0VfTE9HKCJQYXJzaW5nICIsICptX2NvZGVCbG9jaywgIlxuIik7CiAgICAgCi0g
ICAgbV9kZmdDb2RlQmxvY2sgPSBtX2dyYXBoLm1fcGxhbi5wcm9maWxlZERGR0NvZGVCbG9jazsK
LSAgICBpZiAoaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkgJiYgbV9kZmdDb2RlQmxvY2sKLSAg
ICAgICAgJiYgT3B0aW9uczo6dXNlUG9seXZhcmlhbnREZXZpcnR1YWxpemF0aW9uKCkpIHsKLSAg
ICAgICAgaWYgKE9wdGlvbnM6OnVzZVBvbHl2YXJpYW50Q2FsbElubGluaW5nKCkpCi0gICAgICAg
ICAgICBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZURGR1N0YXR1c2VzKG1fZGZnQ29kZUJsb2NrLCBt
X2NhbGxDb250ZXh0TWFwKTsKLSAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVBvbHl2YXJpYW50QnlJ
ZElubGluaW5nKCkpCi0gICAgICAgICAgICBtX2RmZ0NvZGVCbG9jay0+Z2V0U3R1YkluZm9NYXAo
bV9kZmdTdHViSW5mb3MpOwotICAgIH0KLSAgICAKICAgICBJbmxpbmVTdGFja0VudHJ5IGlubGlu
ZVN0YWNrRW50cnkoCiAgICAgICAgIHRoaXMsIG1fY29kZUJsb2NrLCBtX3Byb2ZpbGVkQmxvY2ss
IDAsIFZpcnR1YWxSZWdpc3RlcigpLCBWaXJ0dWFsUmVnaXN0ZXIoKSwKICAgICAgICAgbV9jb2Rl
QmxvY2stPm51bVBhcmFtZXRlcnMoKSwgSW5saW5lQ2FsbEZyYW1lOjpDYWxsLCBudWxscHRyKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZpc2lv
biAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAko
d29ya2luZyBjb3B5KQpAQCAtNDQ2LDYgKzQ0Niw5IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIFByb2ZpbGVDb250cm9sRmxvdzoKICAgICBjYXNl
IFB1dEhpbnQ6CiAgICAgY2FzZSBJbml0aWFsaXplRW50cnlwb2ludEFyZ3VtZW50czoKKyAgICBj
YXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoK
KyAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgIHdyaXRlKFNpZGVTdGF0ZSk7
CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAkocmV2aXNpb24gMjMyMjI3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDkgQEAgYm9vbCBjbG9iYmVyc0V4aXRTdGF0ZShHcmFw
aCYgZ3JhcGgsIE5vZAogICAgIGNhc2UgRmVuY2VkU3RvcmVCYXJyaWVyOgogICAgIGNhc2UgQWxs
b2NhdGVQcm9wZXJ0eVN0b3JhZ2U6CiAgICAgY2FzZSBSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdl
OgorICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJHZXRCeUlk
U3RhdHVzOgorICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKICAgICAgICAgLy8gVGhlc2Ug
ZG8gY2xvYmJlciBtZW1vcnksIGJ1dCBub3RoaW5nIHRoYXQgaXMgb2JzZXJ2YWJsZS4gSXQgbWF5
IGJlIG5pY2UgdG8gc2VwYXJhdGUgdGhlCiAgICAgICAgIC8vIGhlYXBzIGludG8gdGhvc2UgdGhh
dCBhcmUgb2JzZXJ2YWJsZSBhbmQgdGhvc2UgdGhhdCBhcmVuJ3QsIGJ1dCB3ZSBkb24ndCBkbyB0
aGF0IHJpZ2h0IG5vdy4KICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDg0NDAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ29tbW9uRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ29tbW9uRGF0YS5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NvbW1vbkRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAog
I2luY2x1ZGUgIklubGluZUNhbGxGcmFtZVNldC5oIgogI2luY2x1ZGUgIkpTQ2FzdC5oIgogI2lu
Y2x1ZGUgIlByb2ZpbGVyQ29tcGlsYXRpb24uaCIKKyNpbmNsdWRlICJSZWNvcmRlZFN0YXR1c2Vz
LmgiCiAjaW5jbHVkZSA8d3RmL0JhZy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
CkBAIC0xMjUsNiArMTI2LDcgQEAgcHVibGljOgogICAgIEJhZzxDb2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQ+IHdhdGNocG9pbnRzOwogICAgIEJhZzxBZGFwdGl2ZVN0cnVjdHVyZVdhdGNo
cG9pbnQ+IGFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludHM7CiAgICAgQmFnPEFkYXB0aXZlSW5m
ZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludD4gYWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFs
dWVXYXRjaHBvaW50czsKKyAgICBSZWNvcmRlZFN0YXR1c2VzIHJlY29yZGVkU3RhdHVzZXM7CiAg
ICAgVmVjdG9yPEp1bXBSZXBsYWNlbWVudD4ganVtcFJlcGxhY2VtZW50czsKICAgICAKICAgICBT
Y3JhdGNoQnVmZmVyKiBjYXRjaE9TUkVudHJ5QnVmZmVyOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHJldmlz
aW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTcsNyArNTU3LDE1IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgYXV0byBhZGRGaWx0ZXJTdGF0dXMgPSBbJl0gKCkgeworICAg
ICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAg
ICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgRmlsdGVyR2V0QnlJZFN0YXR1cywg
bm9kZS0+b3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGgubV9w
bGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkR2V0QnlJZFN0YXR1cyhub2RlLT5vcmlnaW4uc2VtYW50
aWMsIHN0YXR1cykpLAorICAgICAgICAgICAgICAgICAgICAgICAgRWRnZShjaGlsZCkpOworICAg
ICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKHN0
YXR1cy5udW1WYXJpYW50cygpID09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgYWRkRmlsdGVy
U3RhdHVzKCk7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRHZXRCeU9mZnNldChpbmRleEluQmxv
Y2ssIG5vZGUsIGJhc2VWYWx1ZSwgc3RhdHVzWzBdLCBpZGVudGlmaWVyTnVtYmVyKTsKICAgICAg
ICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwpAQCAtNTY2LDYgKzU3NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaWYgKCFpc0ZU
TChtX2dyYXBoLm1fcGxhbi5tb2RlKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgYWRkRmlsdGVyU3RhdHVzKCk7CiAgICAgICAg
ICAgICAgICAgTXVsdGlHZXRCeU9mZnNldERhdGEqIGRhdGEgPSBtX2dyYXBoLm1fbXVsdGlHZXRC
eU9mZnNldERhdGEuYWRkKCk7CiAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBHZXRCeUlkVmFy
aWFudCYgdmFyaWFudCA6IHN0YXR1cy52YXJpYW50cygpKSB7CiAgICAgICAgICAgICAgICAgICAg
IGRhdGEtPmNhc2VzLmFwcGVuZCgKQEAgLTYzOSw2ICs2NDgsMTEgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgICAgICBpZiAoIWFsbEdvb2QpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUo
CisgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIEZpbHRlclB1dEJ5
SWRTdGF0dXMsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG1fZ3Jh
cGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkUHV0QnlJZFN0YXR1cyhub2RlLT5vcmlnaW4u
c2VtYW50aWMsIHN0YXR1cykpLAorICAgICAgICAgICAgICAgICAgICBFZGdlKGNoaWxkKSk7Cisg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cy5udW1WYXJpYW50cygp
ID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgZW1pdFB1dEJ5T2Zmc2V0KGluZGV4SW5CbG9j
aywgbm9kZSwgYmFzZVZhbHVlLCBzdGF0dXNbMF0sIGlkZW50aWZpZXJOdW1iZXIpOwogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RGVzaXJlZFdhdGNocG9pbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuaAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuaAkod29ya2luZyBjb3B5
KQpAQCAtNDYsNyArNDYsMTAgQEAgc3RydWN0IFNldFBvaW50ZXJBZGFwdG9yIHsKICAgICB7CiAg
ICAgICAgIHJldHVybiBzZXQtPmFkZChjb21tb24ud2F0Y2hwb2ludHMuYWRkKGNvZGVCbG9jaykp
OwogICAgIH0KLSAgICBzdGF0aWMgYm9vbCBoYXNCZWVuSW52YWxpZGF0ZWQoVCBzZXQpIHsgcmV0
dXJuIHNldC0+aGFzQmVlbkludmFsaWRhdGVkKCk7IH0KKyAgICBzdGF0aWMgYm9vbCBoYXNCZWVu
SW52YWxpZGF0ZWQoVCBzZXQpCisgICAgeworICAgICAgICByZXR1cm4gc2V0LT5oYXNCZWVuSW52
YWxpZGF0ZWQoKTsKKyAgICB9CiAgICAgc3RhdGljIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0
cmVhbSYgb3V0LCBUIHNldCwgRHVtcENvbnRleHQqKQogICAgIHsKICAgICAgICAgb3V0LnByaW50
KFJhd1BvaW50ZXIoc2V0KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMiw2ICszMTIsOSBAQCBib29sIGRvZXNH
QyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBBdG9taWNzWG9yOgogICAgIGNh
c2UgQXRvbWljc0lzTG9ja0ZyZWU6CiAgICAgY2FzZSBNYXRjaFN0cnVjdHVyZToKKyAgICBjYXNl
IEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKKyAg
ICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGNhc2UgUHVzaFdpdGhTY29wZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzOCw2ICsyMTM4
LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRHbG9iYWxUaGlzOgogICAgICAgICBjYXNl
IEV4dHJhY3RWYWx1ZUZyb21XZWFrTWFwR2V0OgogICAgICAgICBjYXNlIENQVUludHJpbnNpYzoK
KyAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJH
ZXRCeUlkU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAg
ICAgICBicmVhazsKICNlbHNlCiAgICAgICAgIGRlZmF1bHQ6CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1Niw2ICszNTYs
MTIgQEAgdm9pZCBHcmFwaDo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBjb25zdAogICAgICAgICBv
dXQucHJpbnQoY29tbWEsICJpZ25vcmVMYXN0SW5kZXhJc1dyaXRhYmxlID0gIiwgbm9kZS0+aWdu
b3JlTGFzdEluZGV4SXNXcml0YWJsZSgpKTsKICAgICBpZiAobm9kZS0+aXNDb25zdGFudCgpKQog
ICAgICAgICBvdXQucHJpbnQoY29tbWEsIHBvaW50ZXJEdW1wSW5Db250ZXh0KG5vZGUtPmNvbnN0
YW50KCksIGNvbnRleHQpKTsKKyAgICBpZiAobm9kZS0+aGFzQ2FsbExpbmtTdGF0dXMoKSkKKyAg
ICAgICAgb3V0LnByaW50KGNvbW1hLCAqbm9kZS0+Y2FsbExpbmtTdGF0dXMoKSk7CisgICAgaWYg
KG5vZGUtPmhhc0dldEJ5SWRTdGF0dXMoKSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAqbm9k
ZS0+Z2V0QnlJZFN0YXR1cygpKTsKKyAgICBpZiAobm9kZS0+aGFzUHV0QnlJZFN0YXR1cygpKQor
ICAgICAgICBvdXQucHJpbnQoY29tbWEsICpub2RlLT5wdXRCeUlkU3RhdHVzKCkpOwogICAgIGlm
IChub2RlLT5pc0p1bXAoKSkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiVDoiLCAqbm9kZS0+
dGFyZ2V0QmxvY2soKSk7CiAgICAgaWYgKG5vZGUtPmlzQnJhbmNoKCkpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwMSw2ICsxMDEsOSBAQCBFeGl0TW9kZSBtYXlFeGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5vZGUq
CiAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVz
dWx0OgogICAgIGNhc2UgTnVrZVN0cnVjdHVyZUFuZFNldEJ1dHRlcmZseToKKyAgICBjYXNlIEZp
bHRlckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICBj
YXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTdHJD
YXQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMjMyMjI3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI3NjksNiArMjc2OSwzOSBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChvcCgpID09IFRo
cm93U3RhdGljRXJyb3IpOwogICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8dWludDMyX3Q+KCk7
CiAgICAgfQorICAgIAorICAgIGJvb2wgaGFzQ2FsbExpbmtTdGF0dXMoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG9wKCkgPT0gRmlsdGVyQ2FsbExpbmtTdGF0dXM7CisgICAgfQorICAgIAorICAg
IENhbGxMaW5rU3RhdHVzKiBjYWxsTGlua1N0YXR1cygpCisgICAgeworICAgICAgICBBU1NFUlQo
aGFzQ2FsbExpbmtTdGF0dXMoKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mby5hczxDYWxsTGlu
a1N0YXR1cyo+KCk7CisgICAgfQorICAgIAorICAgIGJvb2wgaGFzR2V0QnlJZFN0YXR1cygpCisg
ICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBGaWx0ZXJHZXRCeUlkU3RhdHVzOworICAgIH0K
KyAgICAKKyAgICBHZXRCeUlkU3RhdHVzKiBnZXRCeUlkU3RhdHVzKCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChoYXNHZXRCeUlkU3RhdHVzKCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8
R2V0QnlJZFN0YXR1cyo+KCk7CisgICAgfQorICAgIAorICAgIGJvb2wgaGFzUHV0QnlJZFN0YXR1
cygpCisgICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBGaWx0ZXJQdXRCeUlkU3RhdHVzOwor
ICAgIH0KKyAgICAKKyAgICBQdXRCeUlkU3RhdHVzKiBwdXRCeUlkU3RhdHVzKCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChoYXNQdXRCeUlkU3RhdHVzKCkpOworICAgICAgICByZXR1cm4gbV9vcElu
Zm8uYXM8UHV0QnlJZFN0YXR1cyo+KCk7CisgICAgfQogCiAgICAgdm9pZCBkdW1wQ2hpbGRyZW4o
UHJpbnRTdHJlYW0mIG91dCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlVHlwZS5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5NCwxMSArMzk0LDggQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEdldEFyZ3VtZW50LCBOb2Rl
UmVzdWx0SlMpIFwKICAgICBcCiAgICAgbWFjcm8oTmV3RnVuY3Rpb24sIE5vZGVSZXN1bHRKUykg
XAotICAgIFwKICAgICBtYWNybyhOZXdHZW5lcmF0b3JGdW5jdGlvbiwgTm9kZVJlc3VsdEpTKSBc
Ci0gICAgXAogICAgIG1hY3JvKE5ld0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24sIE5vZGVSZXN1bHRK
UykgXAotICAgIFwKICAgICBtYWNybyhOZXdBc3luY0Z1bmN0aW9uLCBOb2RlUmVzdWx0SlMpIFwK
ICAgICBcCiAgICAgLyogQmxvY2sgdGVybWluYWxzLiAqL1wKQEAgLTQ3NSw2ICs0NzIsMTEgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIFwKICAgICAvKiBVc2VkIGZvciAk
dm0gcGVyZm9ybWFuY2UgZGVidWdnaW5nICovIFwKICAgICBtYWNybyhDUFVJbnRyaW5zaWMsIE5v
ZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBcCisgICAgLyogVXNlZCB0byBw
cm92aWRlIGZlZWRiYWNrIHRvIHRoZSBJQyBwcm9maWxlci4gKi8gXAorICAgIG1hY3JvKEZpbHRl
ckNhbGxMaW5rU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oRmlsdGVyR2V0
QnlJZFN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEZpbHRlclB1dEJ5SWRT
dGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKIAogCiAvLyBUaGlzIGVudW0gZ2VuZXJhdGVzIGEg
bW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIGlkIGZvciBhbGwgTm9kZSB0eXBlcywKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdEJhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdEJhc2UuY3BwCShyZXZpc2lvbiAy
MzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRCYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC00MiwxMSArNDIsMTcgQEAgdm9pZCBPU1JFeGl0QmFzZTo6Y29u
c2lkZXJBZGRpbmdBc0ZyZXF1ZQogICAgICAgICBiYXNlbGluZUNvZGVCbG9ja0Zvck9yaWdpbkFu
ZEJhc2VsaW5lQ29kZUJsb2NrKAogICAgICAgICAgICAgbV9jb2RlT3JpZ2luRm9yRXhpdFByb2Zp
bGUsIHByb2ZpbGVkQ29kZUJsb2NrKTsKICAgICBpZiAoc291cmNlUHJvZmlsZWRDb2RlQmxvY2sp
IHsKKyAgICAgICAgRXhpdGluZ0lubGluZUtpbmQgaW5saW5lS2luZDsKKyAgICAgICAgaWYgKG1f
Y29kZU9yaWdpbkZvckV4aXRQcm9maWxlLmlubGluZUNhbGxGcmFtZSkKKyAgICAgICAgICAgIGlu
bGluZUtpbmQgPSBFeGl0RnJvbUlubGluZWQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlu
bGluZUtpbmQgPSBFeGl0RnJvbU5vdElubGluZWQ7CisgICAgICAgIAogICAgICAgICBGcmVxdWVu
dEV4aXRTaXRlIHNpdGU7CiAgICAgICAgIGlmIChtX3dhc0hvaXN0ZWQpCi0gICAgICAgICAgICBz
aXRlID0gRnJlcXVlbnRFeGl0U2l0ZShIb2lzdGluZ0ZhaWxlZCwgaml0VHlwZSk7CisgICAgICAg
ICAgICBzaXRlID0gRnJlcXVlbnRFeGl0U2l0ZShIb2lzdGluZ0ZhaWxlZCwgaml0VHlwZSwgaW5s
aW5lS2luZCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNpdGUgPSBGcmVxdWVudEV4aXRT
aXRlKG1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlLmJ5dGVjb2RlSW5kZXgsIG1fa2luZCwgaml0
VHlwZSk7CisgICAgICAgICAgICBzaXRlID0gRnJlcXVlbnRFeGl0U2l0ZShtX2NvZGVPcmlnaW5G
b3JFeGl0UHJvZmlsZS5ieXRlY29kZUluZGV4LCBtX2tpbmQsIGppdFR5cGUsIGlubGluZUtpbmQp
OwogICAgICAgICBFeGl0UHJvZmlsZTo6YWRkKHNvdXJjZVByb2ZpbGVkQ29kZUJsb2NrLCBzaXRl
KTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFs
bG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDIz
MjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNp
bmtpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1Niw2ICs3NTYsNyBAQCBwcml2YXRl
OgogICAgICAgICB9CiAKICAgICAgICAgcHJvbW90ZUxvY2FsSGVhcCgpOworICAgICAgICByZW1v
dmVJQ1N0YXR1c0ZpbHRlcnMoKTsKIAogICAgICAgICBpZiAoT3B0aW9uczo6dmFsaWRhdGVHcmFw
aEF0RWFjaFBoYXNlKCkpCiAgICAgICAgICAgICBERkc6OnZhbGlkYXRlKG1fZ3JhcGgsIER1bXBH
cmFwaCwgZ3JhcGhCZWZvcmVTaW5raW5nKTsKQEAgLTEwODgsNiArMTA4OSwxMSBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIFB1dEhpbnQ6CiAgICAgICAgICAgICAvLyBIYW5kbGVkIGJ5IE9TUiBh
dmFpbGFiaWxpdHkgYW5hbHlzaXMKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisg
ICAgICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVyR2V0
QnlJZFN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgorICAgICAgICAg
ICAgYnJlYWs7CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIG1fZ3JhcGguZG9Ub0No
aWxkcmVuKApAQCAtMjMzMSw2ICsyMzM3LDI0IEBAIHByaXZhdGU6CiAKICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CisgICAgCisgICAgdm9pZCByZW1vdmVJQ1N0
YXR1c0ZpbHRlcnMoKQorICAgIHsKKyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1f
Z3JhcGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgeworICAgICAgICAgICAgZm9yIChOb2RlKiBu
b2RlIDogKmJsb2NrKSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Cisg
ICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICAgICAgICAgICAg
ICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0dXM6CisgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJQ
dXRCeUlkU3RhdHVzOgorICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPmlz
UGhhbnRvbUFsbG9jYXRpb24oKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92
ZVdpdGhvdXRDaGVja3MoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQogCiAgICAgLy8gVGhpcyBpcyBh
IGdyZWF0IHdheSBvZiBhc2tpbmcgdmFsdWUtPmlzU3RpbGxWYWxpZCgpIHdpdGhvdXQgaGF2aW5n
IHRvIHdvcnJ5IGFib3V0IGdldHRpbmcKICAgICAvLyBkaWZmZXJlbnQgYW5zd2Vycy4gSXQgdHVy
bnMgb3V0IHRoYXQgdGhpcyBhbmFseXNpcyB3b3JrcyBPSyByZWdhcmRsZXNzIG9mIHdoYXQgdGhp
cwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCShyZXZpc2lvbiAyMzIy
MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNTU1LDYgKzU1NSw3IEBAIHZvaWQgUGxhbjo6cmVhbGx5QWRkKENvbW1vbkRhdGEq
IGNvbW1vbkQKICAgICBpZGVudGlmaWVycy5yZWFsbHlBZGQoKnZtLCBjb21tb25EYXRhKTsKICAg
ICB3ZWFrUmVmZXJlbmNlcy5yZWFsbHlBZGQoKnZtLCBjb21tb25EYXRhKTsKICAgICB0cmFuc2l0
aW9ucy5yZWFsbHlBZGQoKnZtLCBjb21tb25EYXRhKTsKKyAgICBjb21tb25EYXRhLT5yZWNvcmRl
ZFN0YXR1c2VzID0gV1RGTW92ZShyZWNvcmRlZFN0YXR1c2VzKTsKIH0KIAogdm9pZCBQbGFuOjpu
b3RpZnlDb21waWxpbmcoKQpAQCAtNjMzLDYgKzYzNCw4IEBAIHZvaWQgUGxhbjo6Y2hlY2tMaXZl
bmVzc0FuZFZpc2l0Q2hpbGRyZW4KICAgICBjbGVhbk11c3RIYW5kbGVWYWx1ZXNJZk5lY2Vzc2Fy
eSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IG11c3RIYW5kbGVWYWx1ZXMuc2l6ZSgpOyBpLS07
KQogICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG11c3RIYW5kbGVWYWx1ZXNbaV0p
OworICAgIAorICAgIHJlY29yZGVkU3RhdHVzZXMubWFya0lmQ2hlYXAodmlzaXRvcik7CiAKICAg
ICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKGNvZGVCbG9jayk7CiAgICAgdmlzaXRvci5hcHBl
bmRVbmJhcnJpZXJlZChjb2RlQmxvY2stPmFsdGVybmF0aXZlKCkpOwpAQCAtNjQ5LDYgKzY1Miwx
MSBAQCB2b2lkIFBsYW46OmNoZWNrTGl2ZW5lc3NBbmRWaXNpdENoaWxkcmVuCiAgICAgdHJhbnNp
dGlvbnMudmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKIH0KIAordm9pZCBQbGFuOjpmaW5hbGl6ZUlu
R0MoKQoreworICAgIHJlY29yZGVkU3RhdHVzZXMuZmluYWxpemVXaXRob3V0RGVsZXRpbmcoKTsK
K30KKwogYm9vbCBQbGFuOjppc0tub3duVG9CZUxpdmVEdXJpbmdHQygpCiB7CiAgICAgaWYgKHN0
YWdlID09IENhbmNlbGxlZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxh
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5oCShy
ZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJEZWZlcnJlZENvbXBp
bGF0aW9uQ2FsbGJhY2suaCIKICNpbmNsdWRlICJPcGVyYW5kcy5oIgogI2luY2x1ZGUgIlByb2Zp
bGVyQ29tcGlsYXRpb24uaCIKKyNpbmNsdWRlICJSZWNvcmRlZFN0YXR1c2VzLmgiCiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4K
IApAQCAtNzIsNiArNzMsNyBAQCBzdHJ1Y3QgUGxhbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlCiAgICAgdm9pZCBpdGVyYXRlQ29kZUJsb2Nrc0ZvckdDKGNvbnN0IEZ1bmMmKTsKICAgICB2
b2lkIGNoZWNrTGl2ZW5lc3NBbmRWaXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CiAgICAgYm9v
bCBpc0tub3duVG9CZUxpdmVEdXJpbmdHQygpOworICAgIHZvaWQgZmluYWxpemVJbkdDKCk7CiAg
ICAgdm9pZCBjYW5jZWwoKTsKIAogICAgIGJvb2wgY2FuVGllclVwQW5kT1NSRW50ZXIoKSBjb25z
dCB7IHJldHVybiAhdGllclVwQW5kT1NSRW50ZXJCeXRlY29kZXMuaXNFbXB0eSgpOyB9CkBAIC0x
MDQsNiArMTA2LDcgQEAgc3RydWN0IFBsYW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZQog
ICAgIERlc2lyZWRJZGVudGlmaWVycyBpZGVudGlmaWVyczsKICAgICBEZXNpcmVkV2Vha1JlZmVy
ZW5jZXMgd2Vha1JlZmVyZW5jZXM7CiAgICAgRGVzaXJlZFRyYW5zaXRpb25zIHRyYW5zaXRpb25z
OworICAgIFJlY29yZGVkU3RhdHVzZXMgcmVjb3JkZWRTdGF0dXNlczsKICAgICAKICAgICBib29s
IHdpbGxUcnlUb1RpZXJVcCB7IGZhbHNlIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
CShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwNiw2ICsxMjA2
LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBJbml0aWFsaXplRW50cnlwb2ludEFyZ3VtZW50
czoKICAgICAgICAgY2FzZSBXZWFrU2V0QWRkOgogICAgICAgICBjYXNlIFdlYWtNYXBTZXQ6Cisg
ICAgICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVyR2V0
QnlJZFN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgLy8gVGhpcyBnZXRzIGlnbm9yZWQgYmVj
YXVzZSBpdCBvbmx5IHByZXRlbmRzIHRvIHByb2R1Y2UgYSB2YWx1ZS4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lvbiAyMzIyMjcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDc4LDYgKzQ3OCwxMyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RT
dGF0ZVR5cGUmIHN0CiAgICAgICAgIC8vIGFscmVhZHkgZm9yY2UgdGhlc2UgdGhpbmdzIHRvIGJl
IG9yZGVyZWQgcHJlY2lzZWx5LiBJJ20ganVzdCBub3QgY29uZmlkZW50IGVub3VnaCBpbiBteQog
ICAgICAgICAvLyBlZmZlY3QgYmFzZWQgbWVtb3J5IG1vZGVsIHRvIHJlbHkgc29sZWx5IG9uIHRo
YXQgcmlnaHQgbm93LgogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgIGNhc2Ug
RmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJHZXRCeUlkU3RhdHVzOgorICAg
IGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKKyAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0aGVz
ZSB0byBiZSBtb3ZlZCBhbnl3aGVyZSBvdGhlciB0aGFuIHdoZXJlIHdlIHB1dCB0aGVtLCBzaW5j
ZSB3ZSB3YW50IHRoZW0KKyAgICAgICAgLy8gdG8gY2FwdHVyZSAicHJvZmlsaW5nIiBhdCB0aGUg
cG9pbnQgaW4gY29udHJvbCBmbG93IGhlcmUgdGhlIHVzZXIgcHV0IHRoZW0uCisgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgY2FzZSBHZXRJbmRleGVkUHJv
cGVydHlTdG9yYWdlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00MDMzLDYgKzQwMzMsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmVPckVtcHR5OgogICAgICAgICBERkdf
Q1JBU0gobV9qaXQuZ3JhcGgoKSwgbm9kZSwgIkNoZWNrU3RydWN0dXJlT3JFbXB0eSBvbmx5IHVz
ZWQgaW4gNjQtYml0IERGRyIpOwogICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgY2FzZSBG
aWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0dXM6CisgICAg
Y2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgorICAgICAgICBtX2ludGVycHJldGVyLmZpbHRlcklD
U3RhdHVzKG5vZGUpOworICAgICAgICBub1Jlc3VsdChub2RlKTsKKyAgICAgICAgYnJlYWs7CiAK
ICAgICBjYXNlIExhc3ROb2RlVHlwZToKICAgICBjYXNlIFBoaToKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24g
MjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYyNiw2ICs0NjI2LDEzIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAg
Y2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0dXM6
CisgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgorICAgICAgICBtX2ludGVycHJldGVyLmZp
bHRlcklDU3RhdHVzKG5vZGUpOworICAgICAgICBub1Jlc3VsdChub2RlKTsKKyAgICAgICAgYnJl
YWs7CisKICNlbHNlIC8vIEVOQUJMRShGVExfSklUKQogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxv
b3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0dXJuOgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCShy
ZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3Ro
UmVkdWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODk4LDEwICs4OTgsMTQgQEAg
cHJpdmF0ZToKICAgICAgICAgY2FzZSBUYWlsQ2FsbDogewogICAgICAgICAgICAgRXhlY3V0YWJs
ZUJhc2UqIGV4ZWN1dGFibGUgPSBudWxscHRyOwogICAgICAgICAgICAgRWRnZSBjYWxsZWUgPSBt
X2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCk7Ci0gICAgICAgICAgICBpZiAoSlNGdW5jdGlv
biogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNGdW5jdGlvbio+KHZt
KCkpKQorICAgICAgICAgICAgQ2FsbFZhcmlhbnQgY2FsbFZhcmlhbnQ7CisgICAgICAgICAgICBp
ZiAoSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNG
dW5jdGlvbio+KHZtKCkpKSB7CiAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZSA9IGZ1bmN0aW9u
LT5leGVjdXRhYmxlKCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChjYWxsZWUtPmlzRnVuY3Rpb25B
bGxvY2F0aW9uKCkpCisgICAgICAgICAgICAgICAgY2FsbFZhcmlhbnQgPSBDYWxsVmFyaWFudChm
dW5jdGlvbik7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGNhbGxlZS0+aXNGdW5jdGlvbkFsbG9j
YXRpb24oKSkgewogICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBjYWxsZWUtPmNhc3RPcGVy
YW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCk7CisgICAgICAgICAgICAgICAgY2FsbFZhcmlhbnQg
PSBDYWxsVmFyaWFudChleGVjdXRhYmxlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIAog
ICAgICAgICAgICAgaWYgKCFleGVjdXRhYmxlKQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAt
OTE5LDYgKzkyMyw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQogICAgICAgICAgICAgCisgICAgICAgICAgICBtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1
c2VzLmFkZENhbGxMaW5rU3RhdHVzKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLCBDYWxsTGlua1N0
YXR1cyhjYWxsVmFyaWFudCkpOworICAgICAgICAgICAgCiAgICAgICAgICAgICBtX25vZGUtPmNv
bnZlcnRUb0RpcmVjdENhbGwobV9ncmFwaC5mcmVlemUoZXhlY3V0YWJsZSkpOwogICAgICAgICAg
ICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zOTMsOCArMzkzLDEwIEBAIHZvaWQgV29ya2xpc3Q6OnJlbW92ZURlYWRQbGFucyhWTSYgdm0p
CiAgICAgICAgICAgICBQbGFuKiBwbGFuID0gaXRlci0+dmFsdWUuZ2V0KCk7CiAgICAgICAgICAg
ICBpZiAocGxhbi0+dm0gIT0gJnZtKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgaWYgKHBsYW4tPmlzS25vd25Ub0JlTGl2ZUR1cmluZ0dDKCkpCisgICAgICAgICAgICBp
ZiAocGxhbi0+aXNLbm93blRvQmVMaXZlRHVyaW5nR0MoKSkgeworICAgICAgICAgICAgICAgIHBs
YW4tPmZpbmFsaXplSW5HQygpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgfQogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocGxhbi0+c3RhZ2UgIT0gUGxhbjo6Q2Fu
Y2VsbGVkKTsgLy8gU2hvdWxkIG5vdCBiZSBjYW5jZWxsZWQsIHlldC4KICAgICAgICAgICAgIEFT
U0VSVCghZGVhZFBsYW5LZXlzLmNvbnRhaW5zKHBsYW4tPmtleSgpKSk7CiAgICAgICAgICAgICBk
ZWFkUGxhbktleXMuYWRkKHBsYW4tPmtleSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCShyZXZpc2lvbiAy
MzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsOCBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX21pbkNhcGFjaXR5LCBE
aXJlY3RBcmd1bWVudHM6Om9mZnNldE9mTWluQ2FwYWNpdHkoKSkgXAogICAgIG1hY3JvKERpcmVj
dEFyZ3VtZW50c19tYXBwZWRBcmd1bWVudHMsIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZNYXBw
ZWRBcmd1bWVudHMoKSkgXAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19tb2RpZmllZEFyZ3Vt
ZW50c0Rlc2NyaXB0b3IsIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZNb2RpZmllZEFyZ3VtZW50
c0Rlc2NyaXB0b3IoKSkgXAorICAgIG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFfYWxsb2NhdG9yLCBG
dW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmpl
Y3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZBbGxvY2F0b3IoKSkgXAorICAgIG1hY3JvKEZ1
bmN0aW9uUmFyZURhdGFfc3RydWN0dXJlLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVj
dEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZT
dHJ1Y3R1cmUoKSkgXAogICAgIG1hY3JvKEdldHRlclNldHRlcl9nZXR0ZXIsIEdldHRlclNldHRl
cjo6b2Zmc2V0T2ZHZXR0ZXIoKSkgXAogICAgIG1hY3JvKEdldHRlclNldHRlcl9zZXR0ZXIsIEdl
dHRlclNldHRlcjo6b2Zmc2V0T2ZTZXR0ZXIoKSkgXAogICAgIG1hY3JvKEpTQXJyYXlCdWZmZXJW
aWV3X2xlbmd0aCwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpIFwKQEAgLTEx
MiwxMCArMTE0LDEwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNy
byhTdHJpbmdJbXBsX2xlbmd0aCwgU3RyaW5nSW1wbDo6bGVuZ3RoTWVtb3J5T2Zmc2V0KCkpIFwK
ICAgICBtYWNybyhTdHJ1Y3R1cmVfY2xhc3NJbmZvLCBTdHJ1Y3R1cmU6OmNsYXNzSW5mb09mZnNl
dCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlX2dsb2JhbE9iamVjdCwgU3RydWN0dXJlOjpnbG9i
YWxPYmplY3RPZmZzZXQoKSkgXAorICAgIG1hY3JvKFN0cnVjdHVyZV9pbmRleGluZ01vZGVJbmNs
dWRpbmdIaXN0b3J5LCBTdHJ1Y3R1cmU6OmluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnlPZmZz
ZXQoKSkgXAorICAgIG1hY3JvKFN0cnVjdHVyZV9pbmxpbmVDYXBhY2l0eSwgU3RydWN0dXJlOjpp
bmxpbmVDYXBhY2l0eU9mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlX3Byb3RvdHlwZSwg
U3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSkgXAogICAgIG1hY3JvKFN0cnVjdHVyZV9zdHJ1
Y3R1cmVJRCwgU3RydWN0dXJlOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSBcCi0gICAgbWFjcm8oU3Ry
dWN0dXJlX2lubGluZUNhcGFjaXR5LCBTdHJ1Y3R1cmU6OmlubGluZUNhcGFjaXR5T2Zmc2V0KCkp
IFwKLSAgICBtYWNybyhTdHJ1Y3R1cmVfaW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeSwgU3Ry
dWN0dXJlOjppbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5T2Zmc2V0KCkpIFwKICAgICBtYWNy
byhIYXNoTWFwSW1wbF9jYXBhY2l0eSwgSGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNoTWFw
QnVja2V0RGF0YUtleT4+OjpvZmZzZXRPZkNhcGFjaXR5KCkpIFwKICAgICBtYWNybyhIYXNoTWFw
SW1wbF9idWZmZXIsICBIYXNoTWFwSW1wbDxIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRh
S2V5Pj46Om9mZnNldE9mQnVmZmVyKCkpIFwKICAgICBtYWNybyhIYXNoTWFwSW1wbF9oZWFkLCAg
SGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT4+OjpvZmZzZXRP
ZkhlYWQoKSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcAkocmV2aXNpb24gMjMyMjI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTEsNiArMzUxLDEwIEBA
IGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIFB1dEJ5
VmFsRGlyZWN0OgogICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKICAgICBjYXNlIE1hdGNoU3Ry
dWN0dXJlOgorICAgIGNhc2UgQ3JlYXRlVGhpczoKKyAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3Rh
dHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlclB1dEJ5
SWRTdGF0dXM6CiAgICAgICAgIC8vIFRoZXNlIGFyZSBPSy4KICAgICAgICAgYnJlYWs7CiAKQEAg
LTM2Miw3ICszNjYsNiBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSog
CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBJZGVudGl0eVdpdGhQcm9maWxlOgotICAgIGNh
c2UgQ3JlYXRlVGhpczoKICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgogICAgIGNhc2UgQ2hl
Y2tUaWVyVXBBbmRPU1JFbnRlcjoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZp
c2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0Nyw2ICs4NDcsOSBAQCBwcml2YXRlOgogICAgICAg
ICBjYXNlIE5ld0FycmF5V2l0aFNwcmVhZDoKICAgICAgICAgICAgIGNvbXBpbGVOZXdBcnJheVdp
dGhTcHJlYWQoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENyZWF0ZVRoaXM6
CisgICAgICAgICAgICBjb21waWxlQ3JlYXRlVGhpcygpOworICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgU3ByZWFkOgogICAgICAgICAgICAgY29tcGlsZVNwcmVhZCgpOwogICAgICAg
ICAgICAgYnJlYWs7CkBAIC0xMjkwLDYgKzEyOTMsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IGNvbXBpbGVDYWxsRE9NR2V0dGVyKCk7CiAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICBj
YXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0
dXM6CisgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKKyAgICAgICAgICAgIGNvbXBp
bGVGaWx0ZXJJQ1N0YXR1cygpOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBQ
aGFudG9tTG9jYWw6CiAgICAgICAgIGNhc2UgTG9vcEhpbnQ6CiAgICAgICAgIGNhc2UgTW92SGlu
dDoKQEAgLTU2NjIsNiArNTY3MSw0MCBAQCBwcml2YXRlOgogCiAgICAgICAgIHNldEpTVmFsdWUo
cmVzdWx0KTsKICAgICB9CisgICAgCisgICAgdm9pZCBjb21waWxlQ3JlYXRlVGhpcygpCisgICAg
eworICAgICAgICBMVmFsdWUgY2FsbGVlID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKKwor
ICAgICAgICBMQmFzaWNCbG9jayBpc0Z1bmN0aW9uQmxvY2sgPSBtX291dC5uZXdCbG9jaygpOwor
ICAgICAgICBMQmFzaWNCbG9jayBoYXNSYXJlRGF0YSA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAg
ICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRoID0gbV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJh
c2ljQmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKKworICAgICAgICBtX291
dC5icmFuY2goaXNGdW5jdGlvbihjYWxsZWUsIHByb3ZlblR5cGUobV9ub2RlLT5jaGlsZDEoKSkp
LCB1c3VhbGx5KGlzRnVuY3Rpb25CbG9jayksIHJhcmVseShzbG93UGF0aCkpOworCisgICAgICAg
IExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaXNGdW5jdGlvbkJsb2NrLCBo
YXNSYXJlRGF0YSk7CisgICAgICAgIExWYWx1ZSByYXJlRGF0YSA9IG1fb3V0LmxvYWRQdHIoY2Fs
bGVlLCBtX2hlYXBzLkpTRnVuY3Rpb25fcmFyZURhdGEpOworICAgICAgICBtX291dC5icmFuY2go
bV9vdXQuaXNaZXJvNjQocmFyZURhdGEpLCByYXJlbHkoc2xvd1BhdGgpLCB1c3VhbGx5KGhhc1Jh
cmVEYXRhKSk7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oaGFzUmFyZURhdGEsIHNsb3dQYXRo
KTsKKyAgICAgICAgTFZhbHVlIGFsbG9jYXRvciA9IG1fb3V0LmxvYWRQdHIocmFyZURhdGEsIG1f
aGVhcHMuRnVuY3Rpb25SYXJlRGF0YV9hbGxvY2F0b3IpOworICAgICAgICBMVmFsdWUgc3RydWN0
dXJlID0gbV9vdXQubG9hZFB0cihyYXJlRGF0YSwgbV9oZWFwcy5GdW5jdGlvblJhcmVEYXRhX3N0
cnVjdHVyZSk7CisgICAgICAgIExWYWx1ZSBidXR0ZXJmbHkgPSBtX291dC5jb25zdEludFB0cigw
KTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihhbGxv
Y2F0ZU9iamVjdChhbGxvY2F0b3IsIHN0cnVjdHVyZSwgYnV0dGVyZmx5LCBzbG93UGF0aCkpOwor
ICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5k
VG8oc2xvd1BhdGgsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dS
ZXN1bHQgPSBtX291dC5hbmNob3Iodm1DYWxsKAorICAgICAgICAgICAgSW50NjQsIG1fb3V0Lm9w
ZXJhdGlvbihvcGVyYXRpb25DcmVhdGVUaGlzKSwgbV9jYWxsRnJhbWUsIGNhbGxlZSwgbV9vdXQu
Y29uc3RJbnQzMihtX25vZGUtPmlubGluZUNhcGFjaXR5KCkpKSk7CisgICAgICAgIG1fb3V0Lmp1
bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24s
IGxhc3ROZXh0KTsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LnBoaShJbnQ2NCwgZmFz
dFJlc3VsdCwgc2xvd1Jlc3VsdCk7CisKKyAgICAgICAgbXV0YXRvckZlbmNlKCk7CisgICAgICAg
IHNldEpTVmFsdWUocmVzdWx0KTsKKyAgICB9CiAKICAgICB2b2lkIGNvbXBpbGVTcHJlYWQoKQog
ICAgIHsKQEAgLTEyMTI4LDYgKzEyMTcxLDExIEBAIHByaXZhdGU6CiAgICAgICAgIHNldEpTVmFs
dWUocGF0Y2hwb2ludCk7CiAgICAgfQogICAgIAorICAgIHZvaWQgY29tcGlsZUZpbHRlcklDU3Rh
dHVzKCkKKyAgICB7CisgICAgICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVySUNTdGF0dXMobV9ub2Rl
KTsKKyAgICB9CisgICAgCiAgICAgdm9pZCBlbWl0U3dpdGNoRm9yTXVsdGlCeU9mZnNldChMVmFs
dWUgYmFzZSwgYm9vbCBzdHJ1Y3R1cmVzQ2hlY2tlZCwgVmVjdG9yPFN3aXRjaENhc2UsIDI+JiBj
YXNlcywgTEJhc2ljQmxvY2sgZXhpdCkKICAgICB7CiAgICAgICAgIGlmIChjYXNlcy5pc0VtcHR5
KCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1
YlJvdXRpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9s
eW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuY3BwCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTYsMTAgKzk2LDIyIEBAIENhbGxWYXJpYW50TGlzdCBQb2x5bW9ycGhpY0Nh
bGxTdHViUm91dGkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitib29sIFBvbHltb3JwaGljQ2Fs
bFN0dWJSb3V0aW5lOjpoYXNFZGdlcygpIGNvbnN0Cit7CisgICAgLy8gVGhlIEZUTCBkb2VzIG5v
dCBjb3VudCBlZGdlcyBpbiBpdHMgcG9seSBjYWxsIHN0dWIgcm91dGluZXMuIElmIHRoZSBGVEwg
d2VudCBwb2x5IGNhbGwsIHRoZW4KKyAgICAvLyBpdCdzIG5vdCBtZWFuaW5nZnVsIHRvIGtlZXAg
cHJvZmlsaW5nIC0gd2UgY2FuIGp1c3QgbGVhdmUgaXQgYXQgdGhhdC4gUmVtZW1iZXIsIHRoZSBG
VEwgd291bGQKKyAgICAvLyBoYXZlIGhhZCBmdWxsIGVkZ2UgcHJvZmlsaW5nIGZyb20gdGhlIERG
RywgYW5kIGJhc2VkIG9uIHRoaXMgaW5mb3JtYXRpb24sIGl0IHdvdWxkIGhhdmUKKyAgICAvLyBk
ZWNpZGVkIHRvIGdvIHBvbHkuCisgICAgLy8KKyAgICAvLyBUaGVyZSBwcm9iYWJseSBhcmUgdmVy
eS1kaWZmaWN1bHQtdG8taW1hZ2luZSBjb3JuZXIgY2FzZXMgd2hlcmUgdGhlIEZUTCBub3QgZG9p
bmcgZWRnZQorICAgIC8vIHByb2ZpbGluZyBpcyBiYWQgZm9yIHBvbHl2YXJpYW50IGlubGluaW5n
LiBCdXQgcG9seXZhcmlhbnQgaW5saW5pbmcgaXMgcHJvZml0YWJsZSBzb21ldGltZXMKKyAgICAv
LyB3aGlsZSBub3QgaGF2aW5nIHRvIGluY3JlbWVudCBjb3VudHMgaXMgcHJvZml0YWJsZSBhbHdh
eXMuIFNvLCB3ZSBsZXQgdGhlIEZUTCBydW4gZmFzdGVyIGFuZAorICAgIC8vIG5vdCBrZWVwIGNv
dW50cy4KKyAgICByZXR1cm4gISFtX2Zhc3RDb3VudHM7Cit9CisKIENhbGxFZGdlTGlzdCBQb2x5
bW9ycGhpY0NhbGxTdHViUm91dGluZTo6ZWRnZXMoKSBjb25zdAogewotICAgIC8vIFdlIHdvdWxk
bid0IGhhdmUgdGhlc2UgaWYgdGhpcyB3YXMgYW4gRlRMIHN0dWIgcm91dGluZS4gV2Ugc2hvdWxk
bid0IGJlIGFza2luZyBmb3IgcHJvZmlsaW5nCi0gICAgLy8gZnJvbSB0aGUgRlRMLgogICAgIFJF
TEVBU0VfQVNTRVJUKG1fZmFzdENvdW50cyk7CiAgICAgCiAgICAgQ2FsbEVkZ2VMaXN0IHJlc3Vs
dDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJv
dXRpbmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3Jw
aGljQ2FsbFN0dWJSb3V0aW5lLmgJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaAkod29ya2luZyBjb3B5KQpA
QCAtOTAsNiArOTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UG9seW1vcnBoaWNDYWxsU3R1
YlJvdXRpbmUoKTsKICAgICAKICAgICBDYWxsVmFyaWFudExpc3QgdmFyaWFudHMoKSBjb25zdDsK
KyAgICBib29sIGhhc0VkZ2VzKCkgY29uc3Q7CiAgICAgQ2FsbEVkZ2VMaXN0IGVkZ2VzKCkgY29u
c3Q7CiAKICAgICB2b2lkIGNsZWFyQ2FsbE5vZGVzRm9yKENhbGxMaW5rSW5mbyopOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVy
Qnl0ZWNvZGVTZXF1ZW5jZS5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNDksMTIgKzQ5LDEyIEBAIEJ5dGVjb2RlU2VxdWVuY2U6OkJ5dGVjb2RlU2VxdWVu
Y2UoQ29kZUIKICAgICAgICAgbV9oZWFkZXIuYXBwZW5kKG91dC50b0NTdHJpbmcoKSk7CiAgICAg
fQogICAgIAotICAgIFN0dWJJbmZvTWFwIHN0dWJJbmZvczsKLSAgICBjb2RlQmxvY2stPmdldFN0
dWJJbmZvTWFwKHN0dWJJbmZvcyk7CisgICAgSUNTdGF0dXNNYXAgc3RhdHVzTWFwOworICAgIGNv
ZGVCbG9jay0+Z2V0SUNTdGF0dXNNYXAoc3RhdHVzTWFwKTsKICAgICAKICAgICBmb3IgKHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXggPSAwOyBieXRlY29kZUluZGV4IDwgY29kZUJsb2NrLT5pbnN0cnVj
dGlvbnMoKS5zaXplKCk7KSB7CiAgICAgICAgIG91dC5yZXNldCgpOwotICAgICAgICBjb2RlQmxv
Y2stPmR1bXBCeXRlY29kZShvdXQsIGJ5dGVjb2RlSW5kZXgsIHN0dWJJbmZvcyk7CisgICAgICAg
IGNvZGVCbG9jay0+ZHVtcEJ5dGVjb2RlKG91dCwgYnl0ZWNvZGVJbmRleCwgc3RhdHVzTWFwKTsK
ICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoY29k
ZUJsb2NrLT5pbnN0cnVjdGlvbnMoKVtieXRlY29kZUluZGV4XS51Lm9wY29kZSk7CiAgICAgICAg
IG1fc2VxdWVuY2UuYXBwZW5kKEJ5dGVjb2RlKGJ5dGVjb2RlSW5kZXgsIG9wY29kZUlELCBvdXQu
dG9DU3RyaW5nKCkpKTsKICAgICAgICAgYnl0ZWNvZGVJbmRleCArPSBvcGNvZGVMZW5ndGgob3Bj
b2RlSUQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJl
RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25SYXJlRGF0YS5jcHAJKHJldmlzaW9uIDIzMjIyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw2
ICs4Miw5IEBAIEZ1bmN0aW9uUmFyZURhdGE6On5GdW5jdGlvblJhcmVEYXRhKCkKIAogdm9pZCBG
dW5jdGlvblJhcmVEYXRhOjppbml0aWFsaXplT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogcHJvdG90eXBlLCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHksIEpTRnVuY3Rpb24qIGNvbnN0cnVjdG9yKQogeworICAgIGlmICht
X29iamVjdEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludC5pc1N0aWxsVmFsaWQoKSkKKyAgICAg
ICAgbV9vYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQuc3RhcnRXYXRjaGluZygpOwor
ICAgIAogICAgIG1fb2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaW5pdGlhbGl6ZVByb2ZpbGUodm0s
IGdsb2JhbE9iamVjdCwgdGhpcywgcHJvdG90eXBlLCBpbmxpbmVDYXBhY2l0eSwgY29uc3RydWN0
b3IsIHRoaXMpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
cy5oCShyZXZpc2lvbiAyMzIyMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3NSw2ICsyNzUsNyBAQCBjb25zdGV4cHIgYm9v
bCBlbmFibGVXZWJBc3NlbWJseVN0cmVhbWluCiAgICAgdih1bnNpZ25lZCwgbWF4QWNjZXNzVmFy
aWFudExpc3RTaXplLCA4LCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KGJvb2wsIHVzZVBvbHl2
YXJpYW50RGV2aXJ0dWFsaXphdGlvbiwgdHJ1ZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihi
b29sLCB1c2VQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIp
IFwKKyAgICB2KHVuc2lnbmVkLCBtYXhQb2x5bW9ycGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemUs
IDgsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwgdXNlUG9seW1vcnBoaWNDYWxsSW5s
aW5pbmcsIHRydWUsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwgdXNlUG9seW1vcnBo
aWNDYWxsSW5saW5pbmdGb3JOb25TdHViU3RhdHVzLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBc
CiAgICAgdih1bnNpZ25lZCwgbWF4UG9seW1vcnBoaWNDYWxsVmFyaWFudExpc3RTaXplLCAxNSwg
Tm9ybWFsLCBudWxscHRyKSBcCkBAIC0zMjIsOSArMzIzLDYgQEAgY29uc3RleHByIGJvb2wgZW5h
YmxlV2ViQXNzZW1ibHlTdHJlYW1pbgogICAgIFwKICAgICB2KHVuc2lnbmVkLCBtYXhpbXVtVmFy
YXJnc0ZvcklubGluaW5nLCAxMDAsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIFwKLSAgICB2KGJv
b2wsIHVzZVBvbHl2YXJpYW50Q2FsbElubGluaW5nLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwK
LSAgICB2KGJvb2wsIHVzZVBvbHl2YXJpYW50QnlJZElubGluaW5nLCB0cnVlLCBOb3JtYWwsIG51
bGxwdHIpIFwKLSAgICBcCiAgICAgdihib29sLCB1c2VNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFz
ZSwgZmFsc2UsIE5vcm1hbCwgIlNldHRpbmcgdG8gdHJ1ZSBhbGxvd3MgdGhlIERGRydzIE1heGlt
YWxGbHVzaEluc2VydGlvblBoYXNlIHRvIHJ1bi4iKSBcCiAgICAgXAogICAgIHYodW5zaWduZWQs
IG1heGltdW1CaW5hcnlTdHJpbmdTd2l0Y2hDYXNlTGVuZ3RoLCA1MCwgTm9ybWFsLCBudWxscHRy
KSBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341849</attachid>
            <date>2018-06-02 12:45:13 -0700</date>
            <delta_ts>2018-06-02 13:54:45 -0700</delta_ts>
            <desc>rebased patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>199118</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMzI0NDEpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDMwIEBACisyMDE4LTA2LTAyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CisKKyAgICAgICAgV2Ugc2hvdWxkIHN1cHBvcnQgQ3JlYXRlVGhpcyBpbiB0aGUgRlRMCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ5MDQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1pY3JvYmVu
Y2htYXJrcy9wb2x5dmFyaWFudC1nZXQtYnktaWQtc2hvcnRlci10b3dlci5qczogQWRkZWQuCisg
ICAgICAgIChwb2x5dmFyaWFudCk6CisgICAgICAgIChGb28ucHJvdG90eXBlLmZ1bmMpOgorICAg
ICAgICAoRm9vKToKKyAgICAgICAgKGZvbyk6CisgICAgICAgIChCYXIucHJvdG90eXBlLmZ1bmMp
OgorICAgICAgICAoQmFyKToKKyAgICAgICAgKGJhcik6CisgICAgICAgICogbWljcm9iZW5jaG1h
cmtzL3BvbHl2YXJpYW50LWdldC1ieS1pZC10b3dlci5qczogQWRkZWQuCisgICAgICAgIChwb2x5
dmFyaWFudCk6CisgICAgICAgIChGb28ucHJvdG90eXBlLmZ1bmMpOgorICAgICAgICAoRm9vKToK
KyAgICAgICAgKGZvbyk6CisgICAgICAgIChCYXIucHJvdG90eXBlLmZ1bmMpOgorICAgICAgICAo
QmFyKToKKyAgICAgICAgKGJhcik6CisgICAgICAgIChCYXoucHJvdG90eXBlLmZ1bmMpOgorICAg
ICAgICAoQmF6KToKKyAgICAgICAgKGJheik6CisKIDIwMTgtMDYtMDIgIENhaW8gTGltYSAgPHRp
Y2Fpb2xpbWFAZ21haWwuY29tPgogCiAgICAgICAgIFtFU05leHRdW0JpZ0ludF0gSW1wbGVtZW50
IHN1cHBvcnQgZm9yIGFkZGl0aW9uIG9wZXJhdGlvbnMKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL3BvbHl2YXJpYW50LWdldC1ieS1pZC1zaG9ydGVyLXRvd2VyLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3BvbHl2YXJpYW50LWdldC1ieS1pZC1zaG9ydGVy
LXRvd2VyLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3BvbHl2
YXJpYW50LWdldC1ieS1pZC1zaG9ydGVyLXRvd2VyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDYgQEAKKyhmdW5jdGlvbigpIHsKKyAgICB2YXIgZ2xvYmFsTzsKKyAgICAKKyAgICBmdW5j
dGlvbiBwb2x5dmFyaWFudCgpCisgICAgeworICAgICAgICByZXR1cm4gZ2xvYmFsTy5mdW5jKCk7
CisgICAgfQorICAgIAorICAgIGNsYXNzIEZvbyB7CisgICAgICAgIGZ1bmMoKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gNDI7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgdmFy
IGZvb08gPSBuZXcgRm9vKCk7CisgICAgCisgICAgZnVuY3Rpb24gZm9vKCkKKyAgICB7CisgICAg
ICAgIGdsb2JhbE8gPSBmb29POworICAgICAgICByZXR1cm4gcG9seXZhcmlhbnQoKTsKKyAgICB9
CisgICAgCisgICAgY2xhc3MgQmFyIHsKKyAgICAgICAgZnVuYygpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBmb28oKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2YXIgYmFy
TyA9IG5ldyBCYXIoKTsKKyAgICAKKyAgICBmdW5jdGlvbiBiYXIoKQorICAgIHsKKyAgICAgICAg
Z2xvYmFsTyA9IGJhck87CisgICAgICAgIHJldHVybiBwb2x5dmFyaWFudCgpOworICAgIH0KKyAg
ICAKKyAgICB2YXIgY291bnQgPSAxMDAwMDAwOworICAgIHZhciByZXN1bHQgPSAwOworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgcmVzdWx0ICs9IGJhcigpOwor
ICAgIAorICAgIGlmIChyZXN1bHQgIT0gY291bnQgKiA0MikKKyAgICAgICAgdGhyb3cgIkVycm9y
OiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfSkoKTsKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL3BvbHl2YXJpYW50LWdldC1ieS1pZC10b3dlci5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9wb2x5dmFyaWFudC1nZXQtYnktaWQtdG93ZXIuanMJKG5vbmV4
aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seXZhcmlhbnQtZ2V0LWJ5LWlk
LXRvd2VyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjEgQEAKKyhmdW5jdGlvbigpIHsK
KyAgICB2YXIgZ2xvYmFsTzsKKyAgICAKKyAgICBmdW5jdGlvbiBwb2x5dmFyaWFudCgpCisgICAg
eworICAgICAgICByZXR1cm4gZ2xvYmFsTy5mdW5jKCk7CisgICAgfQorICAgIAorICAgIGNsYXNz
IEZvbyB7CisgICAgICAgIGZ1bmMoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gNDI7
CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgdmFyIGZvb08gPSBuZXcgRm9vKCk7CisgICAg
CisgICAgZnVuY3Rpb24gZm9vKCkKKyAgICB7CisgICAgICAgIGdsb2JhbE8gPSBmb29POworICAg
ICAgICByZXR1cm4gcG9seXZhcmlhbnQoKTsKKyAgICB9CisgICAgCisgICAgY2xhc3MgQmFyIHsK
KyAgICAgICAgZnVuYygpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmb28oKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2YXIgYmFyTyA9IG5ldyBCYXIoKTsKKyAgICAKKyAg
ICBmdW5jdGlvbiBiYXIoKQorICAgIHsKKyAgICAgICAgZ2xvYmFsTyA9IGJhck87CisgICAgICAg
IHJldHVybiBwb2x5dmFyaWFudCgpOworICAgIH0KKyAgICAKKyAgICBjbGFzcyBCYXogeworICAg
ICAgICBmdW5jKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGJhcigpOworICAgICAg
ICB9CisgICAgfQorICAgIAorICAgIHZhciBiYXpPID0gbmV3IEJheigpOworICAgIAorICAgIGZ1
bmN0aW9uIGJheigpCisgICAgeworICAgICAgICBnbG9iYWxPID0gYmF6TzsKKyAgICAgICAgcmV0
dXJuIHBvbHl2YXJpYW50KCk7CisgICAgfQorICAgIAorICAgIHZhciBjb3VudCA9IDEwMDAwMDA7
CisgICAgdmFyIHJlc3VsdCA9IDA7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytp
KQorICAgICAgICByZXN1bHQgKz0gYmF6KCk7CisgICAgCisgICAgaWYgKHJlc3VsdCAhPSBjb3Vu
dCAqIDQyKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9
KSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzI0NDEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
Mjg5IEBACisyMDE4LTA2LTAyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAg
ICAgICAgV2Ugc2hvdWxkIHN1cHBvcnQgQ3JlYXRlVGhpcyBpbiB0aGUgRlRMCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ5MDQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgc3RhcnRl
ZCB3aXRoIFNhYW0ncyBwYXRjaCB0byBpbXBsZW1lbnQgQ3JlYXRlVGhpcyBpbiB0aGUgRlRMLCBi
dXQgdHVybmVkIGludG8gYSB0eXBlCisgICAgICAgIGluZmVyZW5jZSBhZHZlbnR1cmUuCisgICAg
ICAgIAorICAgICAgICBDcmVhdGVUaGlzIGluIHRoZSBGVEwgd2FzIGEgbWFzc2l2ZSByZWdyZXNz
aW9uIGluIHJheXRyYWNlIGJlY2F1c2UgaXQgZGlzdHVyYmVkIHRoYXQKKyAgICAgICAgYmVuY2ht
YXJrJ3MgZXh0cmVtZWx5IHBlcnZlcnNlIHdheSBvZiB3aW5uaW5nIGF0IHR5cGUgaW5mZXJlbmNl
OgorICAgICAgICAKKyAgICAgICAgLSBUaGUgYmVuY2htYXJrIHdhbnRlZCBwb2x5dmFyaWFudCBk
ZXZpcnR1YWxpemF0aW9uIG9mIGFuIG9iamVjdCBjb25zdHJ1Y3Rpb24gaGVscGVyLiBCdXQsCisg
ICAgICAgICAgdGhlIHBvbHl2YXJpYW50IHByb2ZpbGVyIHdhc24ndCBwb3dlcmZ1bCBlbm91Z2gg
dG8gcmVsaWFibHkgZGV2aXJ0dWFsaXplIHRoYXQgY29kZS4gU28sIHRoZQorICAgICAgICAgIGJl
bmNobWFyayB3YXMgZmFsbGluZyBiYWNrIHRvIG90aGVyIG1lY2hhbmlzbXMuLi4KKyAgICAgICAg
CisgICAgICAgIC0gVGhlIGNvbnN0cnVjdGlvbiBoZWxwZXIgY291bGQgbm90IHRpZXIgdXAgaW50
byB0aGUgRlRMLiBXaGVuIHRoZSBERkcgY29tcGlsZWQgaXQsIGl0IHdvdWxkCisgICAgICAgICAg
c2VlIHRoYXQgdGhlIElDIGhhZCA0IGNhc2VzLiBUaGF0J3MgdG9vIHBvbHltb3JwaGljIGZvciB0
aGUgREZHLiBTbywgdGhlIERGRyB3b3VsZCBlbWl0IGEKKyAgICAgICAgICBHZXRCeUlkLiBTaG9y
dGx5IGFmdGVyIHRoZSBERkcgY29tcGlsZSwgdGhhdCBnZXRfYnlfaWQgd291bGQgc2VlIG1hbnkg
bW9yZSBjYXNlcywgYnV0IG5vdworICAgICAgICAgIHRoYXQgdGhlIGhlbHBlciB3YXMgY29tcGls
ZWQgYnkgdGhlIERGRywgdGhlIGJhc2VsaW5lIGdldF9ieV9pZCB3b3VsZCBub3Qgc2VlIHRob3Nl
IGNhc2VzLgorICAgICAgICAgIFRoZSBERkcncyBHZXRCeUlkIHdvdWxkICJoaWRlIiB0aG9zZSBj
YXNlcy4gVGhlIG51bWJlciBvZiBjYXNlcyB0aGUgREZHJ3MgR2V0QnlJZCB3b3VsZCBzZWUKKyAg
ICAgICAgICBpcyBsYXJnZXIgdGhhbiBvdXIgcG9seW1vcnBoaWMgbGlzdCBsaW1pdCAobGltaXQg
PSA4LCBjYXNlIGNvdW50ID0gMTMsIEkgdGhpbmspLgorICAgICAgICAgIAorICAgICAgICAgIE5v
dGUgdGhhdCBpZiB0aGUgRlRMIGNvbXBpbGVzIHRoYXQgY29uc3RydWN0aW9uIGhlbHBlciwgaXQg
c2VlcyB0aGUgNCBjYXNlcywgdHVybnMgdGhlbQorICAgICAgICAgIGludG8gYSBNdWx0aUdldEJ5
T2Zmc2V0LCB0aGVuIHN1ZmZlcnMgZnJvbSBleGl0cyB3aGVuIHRoZSBuZXcgY2FzZXMgaGl0LCBh
bmQgdGhlbiBleGl0cyB0bworICAgICAgICAgIGJhc2VsaW5lLCB3aGljaCB0aGVuIHNlZXMgdGhv
c2UgY2FzZXMuIEx1Y2tpbHksIHRoZSBGVEwgd2FzIG5vdCBjb21waWxpbmcgdGhlIGNvbnN0cnVj
dGlvbgorICAgICAgICAgIGhlbHBlciBiZWNhdXNlIGl0IGhhZCBhIENyZWF0ZVRoaXMuCisgICAg
ICAgIAorICAgICAgICAtIENvbXBpbGF0aW9ucyB0aGF0IGlubGluZWQgdGhlIGNvbnN0cnVjdGlv
biBoZWxwZXIgd291bGQgaGF2ZSBnb3R0ZW4gc3VwZXIgbHVja3kgd2l0aAorICAgICAgICAgIHBh
cnNlLXRpbWUgY29uc3RhbnQgZm9sZGluZywgc28gdGhleSBrbmV3IHdoYXQgc3RydWN0dXJlIHRo
ZSBpbnB1dCB0byB0aGUgZ2V0X2J5X2lkIHdvdWxkCisgICAgICAgICAgaGF2ZSBhdCBwYXJzZSB0
aW1lLiBUaGlzIGlzIG9ubHkgcHJvZml0YWJsZSBpZiB0aGUgZ2V0X2J5X2lkIHBhcnNpbmcgY29t
cHV0ZWQgYQorICAgICAgICAgIEdldEJ5SWRTdGF0dXMgdGhhdCBoYWQgYSBmaW5pdGUgbnVtYmVy
IG9mIGNhc2VzLiBCZWNhdXNlIHRoZSAxMyBjYXNlcyB3ZXJlIGJlaW5nIGhpZGRlbiBieQorICAg
ICAgICAgIHRoZSBERkcgR2V0QnlJZCBhbmQgR2V0QnlJZFN0YXR1cyB3b3VsZCBvbmx5IGxvb2sg
YXQgdGhlIGJhc2VsaW5lIGdldF9ieV9pZCwgd2hpY2ggaGFkIDQKKyAgICAgICAgICBjYXNlcywg
d2Ugd291bGQgaW5kZWVkIGdldCBhIGZpbml0ZSBudW1iZXIgb2YgY2FzZXMuIFRoZSBwYXJzZXIg
d291bGQgdGhlbiBwcnVuZSB0aG9zZQorICAgICAgICAgIGNhc2VzIHRvIGp1c3Qgb25lIC0gYmFz
ZWQgb24gaXRzIGtub3dsZWRnZSBvZiB0aGUgc3RydWN0dXJlIC0gYW5kIHRoYXQgd291bGQgcmVz
dWx0IGluIHRoYXQKKyAgICAgICAgICBnZXRfYnlfaWQgYmVpbmcgZm9sZGVkIGF0IHBhcnNlIHRp
bWUgdG8gYSBjb25zdGFudC4KKyAgICAgICAgCisgICAgICAgIC0gVGhlIHN1YnNlcXVlbnQgb3Bf
Y2FsbCB3b3VsZCBpbmxpbmUgYmFzZWQgb24gcGFyc2UtdGltZSBrbm93bGVkZ2Ugb2YgdGhhdCBj
b25zdGFudC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggY29tcHJlaGVuc2l2ZWx5IGZp
eGVzIHRoZXNlIGlzc3VlcywgYXMgd2VsbCBhcyBvdGhlciBpc3N1ZXMgdGhhdCBjb21lIHVwIGFs
b25nIHRoZQorICAgICAgICB3YXk6CisgICAgICAgIAorICAgICAgICAtIFBvbHl2YXJpYW50IHBy
b2ZpbGluZyBub3cgY29uc3VsdHMgZXZlcnkgREZHIG9yIEZUTCBjb2RlIGJsb2NrIHRoYXQgcGFy
dGljaXBhdGVkIGluIGFueQorICAgICAgICAgIHN1YnNldCBvZiB0aGUgaW5saW5lIHN0YWNrIHRo
YXQgaW5jbHVkZXMgdGhlIElDIHdlJ3JlIHByb2ZpbGluZy4gRm9yIGV4YW1wbGUsIGlmIHdlIGhh
dmUKKyAgICAgICAgICBhbiBpbmxpbmUgc3RhY2sgbGlrZSBmb28tPmJhci0+YmF6LCB3aXRoIGJh
eiBvbiB0b3AsIHRoZW4gd2Ugd2lsbCBjb25zdWx0IERGRyBvciBGVEwKKyAgICAgICAgICBjb21w
aWxhdGlvbnMgZm9yIGZvbywgYmFyLCBhbmQgYmF6LiBJbiBmb28sIHdlJ2xsIGxvb2sgdXAgZm9v
LT5iYXItPmJhejsgaW4gYmFyIHdlJ2xsIGxvb2sKKyAgICAgICAgICB1cCBiYXItPmJhejsgZXRj
LiBUaGlzIGZpeGVzIHR3byBwcm9ibGVtcyBlbmNvdW50ZXJlZCBpbiByYXl0cmFjZS4gRmlyc3Qs
IGl0IGVuc3VyZXMgdGhhdAorICAgICAgICAgIGEgREZHIEdldEJ5SWQgY2Fubm90IGhpZGUgYW55
dGhpbmcgZnJvbSB0aGUgcHJvZmlsaW5nIG9mIHRoYXQgZ2V0X2J5X2lkLCBzaW5jZSB0aGUKKyAg
ICAgICAgICBwb2x5dmFyaWFudCBwcm9maWxpbmcgY29kZSB3aWxsIGFsd2F5cyBjb25zdWx0IGl0
LiBTZWNvbmQsIGl0IGVuYWJsZXMgcmF5dHJhY2UgdG8gYmVuZWZpdAorICAgICAgICAgIGZyb20g
cG9seXZhcmlhbnQgcHJvZmxpbmcuIFByZXZpb3VzbHksIHRoZSBwb2x5dmFyaWFudCBwcm9maWxl
ciB3b3VsZCBvbmx5IGxvb2sgYXQgdGhlCisgICAgICAgICAgcHJldmlvdXMgREZHIGNvbXBpbGF0
aW9uIG9mIGZvbyBhbmQgbG9vayB1cCBmb28tPmJhci0+YmF6LiBCdXQgdGhhdCBvbmx5IHdvcmtz
IGlmIERGRy1mb28KKyAgICAgICAgICBoYWQgaW5saW5lZCBiYXIgYW5kIHRoZW4gYmF6LiBJdCBt
YXkgbm90IGhhdmUgZG9uZSB0aGF0LCBiZWNhdXNlIHRob3NlIGNhbGxzIGNvdWxkIGhhdmUKKyAg
ICAgICAgICByZXF1aXJlZCBwb2x5dmFyaWFudCBwcm9maWxpbmcgdGhhdCB3YXMgb25seSBhdmFp
bGFibGUgaW4gdGhlIEZUTC4KKyAgICAgICAgCisgICAgICAgIC0gSW5saW5pbmcgYW4gaW5saW5l
IGNhY2hlIG5vdyBwcmVzZXJ2ZXMgYXMgbXVjaCBpbmZvcm1hdGlvbiBhcyBwcm9maWxpbmcuIE9u
ZSBjaGFsbGVuZ2Ugb2YKKyAgICAgICAgICBwb2x5dmFyaWFudCBwcm9maWxpbmcgaXMgdGhhdCB0
aGUgRlRMIGNvbXBpbGUgZm9yIGJhciAodGhhdCBpbmNsdWRlcyBiYXItPmJheikgY291bGQgaGF2
ZQorICAgICAgICAgIGlubGluZWQgYW4gaW5saW5lIGNhY2hlIGJhc2VkIG9uIHBvbHl2YXJpYW50
IHByb2ZpbGluZy4gU28sIHdoZW4gdGhlIEZUTCBjb21waWxlIGZvciBmb28KKyAgICAgICAgICAo
dGhhdCBpbmNsdWRlcyBmb28tPmJhci0+YmF6KSBhc2tzIGJhciB3aGF0IGl0IGtub3dzIGFib3V0
IHRoYXQgSUMgaW5zaWRlIGJhci0+YmF6LCBpdCB3aWxsCisgICAgICAgICAgc2F5ICJJIGRvbid0
IGhhdmUgc3VjaCBhbiBJQyIuIEF0IHRoaXMgcG9pbnQgdGhlIERGRyBjb21waWxhdGlvbiB0aGF0
IGluY2x1ZGVkIHRoYXQgSUMgdGhhdAorICAgICAgICAgIGdhdmUgdXMgdGhlIGluZm9ybWF0aW9u
IHRoYXQgd2UgdXNlZCB0byBpbmxpbmUgdGhlIElDIGlzIG5vIGxvbmdlciBhbGl2ZS4gVG8ga2Vl
cCB1cyBmcm9tCisgICAgICAgICAgbG9zaW5nIHRoZSBpbmZvcm1hdGlvbiB3ZSBsZWFybmVkIGFi
b3V0IHRoZSBJQywgdGhlcmUgaXMgbm93IGEgUmVjb3JkZWRTdGF0dXNlcyBkYXRhCisgICAgICAg
ICAgc3RydWN0dXJlIHRoYXQgcHJlc2VydmVzIHRoZSBzdGF0dXNlcyB3ZSB1c2UgZm9yIGlubGlu
aW5nIElDcy4gV2UgYWxzbyBmaWx0ZXIgdGhvc2UKKyAgICAgICAgICBzdGF0dXNlcyBhY2NvcmRp
bmcgdG8gdGhpbmdzIHdlIGxlYXJuIGZyb20gQUkuIFRoaXMgZnVydGhlciByZWR1Y2VzIHRoZSBy
aXNrIG9mIGluZm9ybWF0aW9uCisgICAgICAgICAgYWJvdXQgYW4gSUMgYmVpbmcgZm9yZ290dGVu
LgorICAgICAgICAKKyAgICAgICAgLSBFeGl0IHByb2ZpbGluZyBub3cgY29uc2lkZXJzIHdoZXRo
ZXIgb3Igbm90IGFuIGV4aXQgaGFwcGVuZWQgZnJvbSBpbmxpbmUgY29kZS4gVGhpcworICAgICAg
ICAgIHByb3RlY3RzIHVzIGluIHRoZSBjYXNlIHdoZXJlIHRoZSBub3QtaW5saW5lZCB2ZXJzaW9u
IG9mIGFuIElDIGV4aXRlZCBhIGxvdCBiZWNhdXNlIG9mCisgICAgICAgICAgcG9seW1vcnBoaXNt
IHRoYXQgZG9lc24ndCBleGlzdCBpbiB0aGUgaW5saW5lZCB2ZXJzaW9uLiBTbywgd2hlbiB1c2lu
ZyBwb2x5dmFyaWFudAorICAgICAgICAgIHByb2ZpbGluZyBkYXRhLCB3ZSBjb25zaWRlciBvbmx5
IGlubGluZWQgZXhpdHMuCisgICAgICAgIAorICAgICAgICBBbHRvZ2V0aGVyIHRoaXMgcGF0Y2gg
aXMgcGVyZm9ybWFuY2UtbmV1dHJhbCBpbiBydW4tanNjLWJlbmNobWFya3MsIGV4Y2VwdCBmb3Ig
c3BlZWQtdXBzIGluCisgICAgICAgIG1pY3JvYmVuY2htYXJrcyBhbmQgYSBjb21waWxlIHRpbWUg
cmVncmVzc2lvbi4gT2N0YW5lL2JveWVyIHNwZWVkcyB1cCBieSA0LjclLCBidXQgSSdtIG5vdAor
ICAgICAgICBzdXJlIGlmIHRoYXQncyByZWFsLiBBbHNvLCBpdCdzIGEgMS4yJSByZWdyZXNzaW9u
IG9uIFY4U3BpZGVyLUNvbXBpbGVUaW1lLiBUaGF0J3MgYSBzbWFsbGVyCisgICAgICAgIHJlZ3Jl
c3Npb24gdGhhbiByZWNlbnQgY29tcGlsZSB0aW1lIHByb2dyZXNzaW9ucywgc28gSSB0aGluayB0
aGF0J3MgYW4gT0sgdHJhZGUtb2ZmLiBBbHNvLCBJCisgICAgICAgIHdvdWxkIGV4cGVjdCBhIGNv
bXBpbGUgdGltZSByZWdyZXNzaW9uIGFueXRpbWUgd2UgZmlsbCBpbiBGVEwgY292ZXJhZ2UuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAq
IGJ5dGVjb2RlL0J5VmFsSW5mby5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludEdldEJ5SWRD
YWNoZVN0YXR1cyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRQ
dXRCeUlkQ2FjaGVTdGF0dXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjxCbG9jaz46
OnByaW50SW5CeUlkQ2FjaGVTdGF0dXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjxC
bG9jaz46OmR1bXBDYWxsTGlua1N0YXR1cyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVy
PENvZGVCbG9jaz46OmR1bXBDYWxsTGlua1N0YXR1cyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
RHVtcGVyPEJsb2NrPjo6cHJpbnRDYWxsT3ApOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBl
cjxCbG9jaz46OmR1bXBCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyPEJs
b2NrPjo6ZHVtcEJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUR1bXBlci5oOgor
ICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5oOgorICAgICAgICAqIGJ5dGVjb2RlL0Nh
bGxMaW5rU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVG
b3IpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YSk6
CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJvbUNhbGxMaW5rSW5mbyk6
CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjphY2NvdW50Rm9yRXhpdHMpOgorICAgICAg
ICAoSlNDOjpDYWxsTGlua1N0YXR1czo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpDYWxsTGlu
a1N0YXR1czo6ZmlsdGVyKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVE
RkdTdGF0dXNlcyk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMu
aDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgor
ICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6b3BlcmF0b3IhIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBieXRlY29kZS9DYWxsVmFyaWFudC5jcHA6CisgICAgICAgIChKU0M6OkNhbGxW
YXJpYW50OjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpmaWx0ZXIpOgor
ICAgICAgICAqIGJ5dGVjb2RlL0NhbGxWYXJpYW50Lmg6CisgICAgICAgIChKU0M6OkNhbGxWYXJp
YW50OjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6Om9w
ZXJhdG9yISBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
Z2V0SUNTdGF0dXNNYXApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnJlc2V0SklURGF0YSk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Z2V0U3R1YkluZm9NYXApOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmdldENhbGxMaW5rSW5mb01hcCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6Z2V0QnlWYWxJbmZvTWFwKTogRGVsZXRlZC4KKyAgICAgICAg
KiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlT3JpZ2luLmNw
cDoKKyAgICAgICAgKEpTQzo6Q29kZU9yaWdpbjo6aXNBcHByb3hpbWF0ZWx5RXF1YWxUbyBjb25z
dCk6CisgICAgICAgIChKU0M6OkNvZGVPcmlnaW46OmFwcHJveGltYXRlSGFzaCBjb25zdCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQ29kZU9yaWdpbi5oOgorICAgICAgICAoSlNDOjpDb2RlT3JpZ2lu
OjpleGl0aW5nSW5saW5lS2luZCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvREZHRXhpdFBy
b2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZyZXF1ZW50RXhpdFNpdGU6OmR1bXAgY29u
c3QpOgorICAgICAgICAoSlNDOjpERkc6OkV4aXRQcm9maWxlOjphZGQpOgorICAgICAgICAqIGJ5
dGVjb2RlL0RGR0V4aXRQcm9maWxlLmg6CisgICAgICAgIChKU0M6OkRGRzo6RnJlcXVlbnRFeGl0
U2l0ZTo6RnJlcXVlbnRFeGl0U2l0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6RnJlcXVlbnRFeGl0
U2l0ZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6RnJlcXVlbnRFeGl0
U2l0ZTo6c3Vic3VtZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkZyZXF1ZW50RXhpdFNp
dGU6Omhhc2ggY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkZyZXF1ZW50RXhpdFNpdGU6Omlu
bGluZUtpbmQgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkZyZXF1ZW50RXhpdFNpdGU6Ondp
dGhJbmxpbmVLaW5kIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpRdWVyeWFibGVFeGl0UHJv
ZmlsZTo6aGFzRXhpdFNpdGUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OlF1ZXJ5YWJsZUV4
aXRQcm9maWxlOjpoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0pJVFR5cGUgY29uc3QpOgorICAgICAg
ICAoSlNDOjpERkc6OlF1ZXJ5YWJsZUV4aXRQcm9maWxlOjpoYXNFeGl0U2l0ZVdpdGhTcGVjaWZp
Y0lubGluZUtpbmQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4aXRGbGFnLmNwcDogQWRk
ZWQuCisgICAgICAgIChKU0M6OkV4aXRGbGFnOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBieXRl
Y29kZS9FeGl0RmxhZy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RXhpdEZsYWc6OkV4aXRGbGFn
KToKKyAgICAgICAgKEpTQzo6RXhpdEZsYWc6Om9wZXJhdG9yfCBjb25zdCk6CisgICAgICAgIChK
U0M6OkV4aXRGbGFnOjpvcGVyYXRvcnw9KToKKyAgICAgICAgKEpTQzo6RXhpdEZsYWc6Om9wZXJh
dG9yJiBjb25zdCk6CisgICAgICAgIChKU0M6OkV4aXRGbGFnOjpvcGVyYXRvciY9KToKKyAgICAg
ICAgKEpTQzo6RXhpdEZsYWc6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorICAgICAgICAoSlNDOjpF
eGl0RmxhZzo6aXNTZXQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4aXRpbmdJbmxpbmVL
aW5kLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAq
IGJ5dGVjb2RlL0V4aXRpbmdJbmxpbmVLaW5kLmg6IEFkZGVkLgorICAgICAgICAqIGJ5dGVjb2Rl
L0dldEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRl
Rm9yKToKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKToK
KyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6c2xvd1ZlcnNpb24gY29uc3QpOgorICAgICAg
ICAoSlNDOjpHZXRCeUlkU3RhdHVzOjptYXJrSWZDaGVhcCk6CisgICAgICAgIChKU0M6OkdldEJ5
SWRTdGF0dXM6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6aGFzRXhp
dFNpdGUpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaDoKKyAg
ICAgICAgKiBieXRlY29kZS9HZXRCeUlkVmFyaWFudC5jcHA6CisgICAgICAgIChKU0M6OkdldEJ5
SWRWYXJpYW50OjptYXJrSWZDaGVhcCk6CisgICAgICAgIChKU0M6OkdldEJ5SWRWYXJpYW50Ojpm
aW5hbGl6ZSk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuaDoKKyAgICAgICAg
KiBieXRlY29kZS9JQ1N0YXR1c01hcC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpJQ1N0YXR1
c0NvbnRleHQ6OmdldCBjb25zdCk6CisgICAgICAgIChKU0M6OklDU3RhdHVzQ29udGV4dDo6aXNJ
bmxpbmVkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SUNTdGF0dXNDb250ZXh0OjppbmxpbmVLaW5k
IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JQ1N0YXR1c01hcC5oOiBBZGRlZC4KKyAgICAg
ICAgKiBieXRlY29kZS9JQ1N0YXR1c1V0aWxzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6Omhh
c0JhZENhY2hlRXhpdFNpdGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0lDU3RhdHVzVXRpbHMuaDoK
KyAgICAgICAgKiBieXRlY29kZS9JbnN0YW5jZU9mU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6
SW5zdGFuY2VPZlN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdGFu
Y2VPZlN0YXR1cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmg6
CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OlB1
dEJ5SWRTdGF0dXM6Omhhc0V4aXRTaXRlKToKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6
Y29tcHV0ZUZvcik6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OnNsb3dWZXJzaW9uIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6bWFya0lmQ2hlYXApOgorICAgICAg
ICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OlB1dEJ5SWRT
dGF0dXM6OmZpbHRlcik6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oOgorICAg
ICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJ
ZFZhcmlhbnQ6Om1hcmtJZkNoZWFwKToKKyAgICAgICAgKEpTQzo6UHV0QnlJZFZhcmlhbnQ6OmZp
bmFsaXplKToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkVmFyaWFudC5oOgorICAgICAgICAo
SlNDOjpQdXRCeUlkVmFyaWFudDo6c3RydWN0dXJlU2V0IGNvbnN0KToKKyAgICAgICAgKiBieXRl
Y29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlJlY29yZGVk
U3RhdHVzZXM6Om9wZXJhdG9yPSk6CisgICAgICAgIChKU0M6OlJlY29yZGVkU3RhdHVzZXM6OlJl
Y29yZGVkU3RhdHVzZXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1c2VzOjphZGRDYWxs
TGlua1N0YXR1cyk6CisgICAgICAgIChKU0M6OlJlY29yZGVkU3RhdHVzZXM6OmFkZEdldEJ5SWRT
dGF0dXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1c2VzOjphZGRQdXRCeUlkU3RhdHVz
KToKKyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6bWFya0lmQ2hlYXApOgorICAgICAg
ICAoSlNDOjpSZWNvcmRlZFN0YXR1c2VzOjpmaW5hbGl6ZVdpdGhvdXREZWxldGluZyk6CisgICAg
ICAgIChKU0M6OlJlY29yZGVkU3RhdHVzZXM6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6UmVj
b3JkZWRTdGF0dXNlczo6c2hyaW5rVG9GaXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1JlY29yZGVk
U3RhdHVzZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OlJlY29yZGVkU3RhdHVzZXM6OlJlY29y
ZGVkU3RhdHVzZXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1c2VzOjpmb3JFYWNoVmVj
dG9yKToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTZXQuY3BwOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmVTZXQ6Om1hcmtJZkNoZWFwIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlU2V0Ojppc1N0aWxsQWxpdmUgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVy
ZVNldC5oOgorICAgICAgICAqIGJ5dGVjb2RlL1Rlcm1pbmF0ZWRDb2RlT3JpZ2luLmg6IEFkZGVk
LgorICAgICAgICAoSlNDOjpUZXJtaW5hdGVkQ29kZU9yaWdpbjo6VGVybWluYXRlZENvZGVPcmln
aW4pOgorICAgICAgICAoSlNDOjpUZXJtaW5hdGVkQ29kZU9yaWdpbkhhc2hUcmFuc2xhdG9yOjpo
YXNoKToKKyAgICAgICAgKEpTQzo6VGVybWluYXRlZENvZGVPcmlnaW5IYXNoVHJhbnNsYXRvcjo6
ZXF1YWwpOgorICAgICAgICAqIGJ5dGVjb2RlL1dhdGNocG9pbnQuY3BwOgorICAgICAgICAoV1RG
OjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBieXRlY29kZS9XYXRjaHBvaW50Lmg6CisgICAg
ICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBkZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpmaWx0ZXJJ
Q1N0YXR1cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NDYWxsKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTW9kdWxlTmFtZXNwYWNlTG9hZCk6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQpOgorICAgICAgICAoSlNDOjpE
Rkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5Ojp+SW5saW5lU3RhY2tFbnRy
eSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlKToKKyAgICAgICAg
KiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgor
ICAgICAgICAqIGRmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Y2xvYmJlcnNFeGl0U3RhdGUpOgorICAgICAgICAqIGRmZy9ERkdDb21tb25EYXRhLmg6Cisg
ICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZn
L0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5oOgorICAgICAgICAoSlNDOjpERkc6OlNldFBvaW50ZXJB
ZGFwdG9yOjpoYXNCZWVuSW52YWxpZGF0ZWQpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAg
ICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZHVtcCk6
CisgICAgICAgICogZGZnL0RGR01heUV4aXQuY3BwOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6
CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQ2FsbExpbmtTdGF0dXMpOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6OmNhbGxMaW5rU3RhdHVzKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
OjpoYXNHZXRCeUlkU3RhdHVzKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpnZXRCeUlkU3Rh
dHVzKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNQdXRCeUlkU3RhdHVzKToKKyAgICAg
ICAgKEpTQzo6REZHOjpOb2RlOjpwdXRCeUlkU3RhdHVzKToKKyAgICAgICAgKiBkZmcvREZHTm9k
ZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdEJhc2UuY3BwOgorICAgICAgICAoSlND
OjpERkc6Ok9TUkV4aXRCYXNlOjpjb25zaWRlckFkZGluZ0FzRnJlcXVlbnRFeGl0U2l0ZVNsb3cp
OgorICAgICAgICAqIGRmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcDoKKyAg
ICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6cmVhbGx5
QWRkKToKKyAgICAgICAgKEpTQzo6REZHOjpQbGFuOjpjaGVja0xpdmVuZXNzQW5kVmlzaXRDaGls
ZHJlbik6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6ZmluYWxpemVJbkdDKToKKyAgICAgICAg
KiBkZmcvREZHUGxhbi5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0cmVuZ3RoUmVk
dWN0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cmVuZ3RoUmVkdWN0aW9uUGhh
c2U6OmhhbmRsZU5vZGUpOgorICAgICAgICAqIGRmZy9ERkdXb3JrbGlzdC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6V29ya2xpc3Q6OnJlbW92ZURlYWRQbGFucyk6CisgICAgICAgICogZnRsL0ZU
TEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRM
TG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlQ3JlYXRlVGhpcyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVGaWx0ZXJJQ1N0YXR1cyk6CisgICAgICAgICogaml0L1BvbHltb3JwaGljQ2FsbFN0dWJS
b3V0aW5lLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6Omhh
c0VkZ2VzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6
OmVkZ2VzIGNvbnN0KToKKyAgICAgICAgKiBqaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUu
aDoKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuY3BwOgorICAg
ICAgICAoSlNDOjpQcm9maWxlcjo6Qnl0ZWNvZGVTZXF1ZW5jZTo6Qnl0ZWNvZGVTZXF1ZW5jZSk6
CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6
RnVuY3Rpb25SYXJlRGF0YTo6aW5pdGlhbGl6ZU9iamVjdEFsbG9jYXRpb25Qcm9maWxlKToKKyAg
ICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKwogMjAxOC0wNi0wMiAgQ2FpbyBMaW1hICA8dGlj
YWlvbGltYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0VTTmV4dF1bQmlnSW50XSBJbXBsZW1lbnQg
c3VwcG9ydCBmb3IgYWRkaXRpb24gb3BlcmF0aW9ucwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjMyNDQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00NDAsNiArNDQwLDcgQEAgc2V0KEph
dmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQQogICAgIGJ5dGVjb2RlL0V4ZWN1dGFi
bGVUb0NvZGVCbG9ja0VkZ2UuaAogICAgIGJ5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIuaAogICAg
IGJ5dGVjb2RlL0V4aXRLaW5kLmgKKyAgICBieXRlY29kZS9FeGl0aW5nSW5saW5lS2luZC5oCiAg
ICAgYnl0ZWNvZGUvRXhpdGluZ0pJVFR5cGUuaAogICAgIGJ5dGVjb2RlL0V4cHJlc3Npb25SYW5n
ZUluZm8uaAogICAgIGJ5dGVjb2RlL0hhbmRsZXJJbmZvLmgKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQJKHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
b3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjEyLDEzICsyMTIsMTcgQEAgYnl0ZWNvZGUv
RGlyZWN0RXZhbENvZGVDYWNoZS5jcHAKIGJ5dGVjb2RlL0V2YWxDb2RlQmxvY2suY3BwCiBieXRl
Y29kZS9FeGVjdXRhYmxlVG9Db2RlQmxvY2tFZGdlLmNwcAogYnl0ZWNvZGUvRXhlY3V0aW9uQ291
bnRlci5jcHAKK2J5dGVjb2RlL0V4aXRGbGFnLmNwcAogYnl0ZWNvZGUvRXhpdEtpbmQuY3BwCiti
eXRlY29kZS9FeGl0aW5nSW5saW5lS2luZC5jcHAKIGJ5dGVjb2RlL0V4aXRpbmdKSVRUeXBlLmNw
cAogYnl0ZWNvZGUvRnVsbENvZGVPcmlnaW4uY3BwCiBieXRlY29kZS9GdW5jdGlvbkNvZGVCbG9j
ay5jcHAKIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCiBieXRlY29kZS9HZXRCeUlkVmFyaWFu
dC5jcHAKIGJ5dGVjb2RlL0dldHRlclNldHRlckFjY2Vzc0Nhc2UuY3BwCitieXRlY29kZS9JQ1N0
YXR1c01hcC5jcHAKK2J5dGVjb2RlL0lDU3RhdHVzVXRpbHMuY3BwCiBieXRlY29kZS9JbkJ5SWRT
dGF0dXMuY3BwCiBieXRlY29kZS9JbkJ5SWRWYXJpYW50LmNwcAogYnl0ZWNvZGUvSW5saW5lQWNj
ZXNzLmNwcApAQCAtMjQ3LDYgKzI1MSw3IEBAIGJ5dGVjb2RlL1Byb3h5YWJsZUFjY2Vzc0Nhc2Uu
Y3BwCiBieXRlY29kZS9QdXRCeUlkRmxhZ3MuY3BwCiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNw
cAogYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCitieXRlY29kZS9SZWNvcmRlZFN0YXR1c2Vz
LmNwcAogYnl0ZWNvZGUvUmVkdWNlV2hpdGVzcGFjZS5jcHAKIGJ5dGVjb2RlL1NwZWNpYWxQb2lu
dGVyLmNwcAogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMjMyNDQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTI5Nyw2ICsyOTcsMTEgQEAKIAkJMEY0MjZBNDkxNDYwQ0JCNzAwMTMxRjhGIC8qIFZpcnR1
YWxSZWdpc3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY0MjZBNDYxNDYwQ0JBQjAwMTMxRjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDI2QTRCMTQ2MENE
NkUwMDEzMUY4RiAvKiBEYXRhRm9ybWF0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjQyNkE0QTE0NjBDRDZCMDAxMzFGOEYgLyogRGF0YUZvcm1hdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDMx
NzM4MTQ2QkFDNjkwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAv
KiBMaXN0YWJsZUhhbmRsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkwRjQ0QTdCMDIwQkY2ODYyMDAyMkIxNzEgLyogRXhpdEZsYWcuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDRBN0FFMjBCRjY4
NUYwMDIyQjE3MSAvKiBFeGl0RmxhZy5oICovOyB9OworCQkwRjQ0QTdCMTIwQkY2OEM5MDAyMkIx
NzEgLyogRXhpdGluZ0lubGluZUtpbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNDRBN0E3MjBCRjY4NUQwMDIyQjE3MSAvKiBFeGl0aW5nSW5saW5l
S2luZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTBGNDRBN0IyMjBCRjY4Q0UwMDIyQjE3MSAvKiBJQ1N0YXR1c01hcC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NEE3QUYyMEJGNjg1RjAwMjJCMTcx
IC8qIElDU3RhdHVzTWFwLmggKi87IH07CisJCTBGNDRBN0IzMjBCRjY4RDEwMDIyQjE3MSAvKiBS
ZWNvcmRlZFN0YXR1c2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjQ0QTdBQTIwQkY2ODVFMDAyMkIxNzEgLyogUmVjb3JkZWRTdGF0dXNlcy5oICov
OyB9OworCQkwRjQ0QTdCNDIwQkY2OEQ5MDAyMkIxNzEgLyogVGVybWluYXRlZENvZGVPcmlnaW4u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDRBN0E4
MjBCRjY4NUUwMDIyQjE3MSAvKiBUZXJtaW5hdGVkQ29kZU9yaWdpbi5oICovOyB9OwogCQkwRjQ1
NzAzOTFCRTQ0QzkxMDA2MkE2MjkgLyogQWlyRWxpbWluYXRlRGVhZENvZGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDU3MDM3MUJFNDRDOTEwMDYy
QTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5oICovOyB9OwogCQkwRjQ1NzAzRDFCRTQ1RjBB
MDA2MkE2MjkgLyogQWlyUmVwb3J0VXNlZFJlZ2lzdGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NTcwM0IxQkU0NUYwQTAwNjJBNjI5IC8qIEFp
clJlcG9ydFVzZWRSZWdpc3RlcnMuaCAqLzsgfTsKIAkJMEY0NTcwNDExQkU1ODRDQTAwNjJBNjI5
IC8qIEIzVGltaW5nU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNDU3MDNGMUJFNTg0Q0EwMDYyQTYyOSAvKiBCM1RpbWluZ1Njb3BlLmggKi87
IH07CkBAIC0yMjg5LDYgKzIyOTQsMTYgQEAKIAkJMEY0MjZBNEExNDYwQ0Q2QjAwMTMxRjhGIC8q
IERhdGFGb3JtYXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YUZvcm1h
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQyQjNDMDIwMUVCNTA5MDAzNTcw
MzEgLyogQWxsb2NhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEFsbG9jYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDMxNzM2MTQ2
QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTGlzdGFibGVIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGNDRBN0E3MjBCRjY4NUQwMDIyQjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGl0aW5nSW5saW5lS2luZC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ0QTdBODIwQkY2ODVFMDAyMkIxNzEgLyogVGVybWlu
YXRlZENvZGVPcmlnaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVybWlu
YXRlZENvZGVPcmlnaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NEE3QTky
MEJGNjg1RTAwMjJCMTcxIC8qIEV4aXRGbGFnLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEV4aXRGbGFnLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcxIC8qIFJlY29yZGVkU3RhdHVzZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVjb3JkZWRTdGF0dXNlcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjQ0QTdBQjIwQkY2ODVFMDAyMkIxNzEgLyogSUNTdGF0dXNNYXAu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSUNTdGF0dXNNYXAuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ0QTdBQzIwQkY2ODVGMDAyMkIxNzEg
LyogRXhpdGluZ0lubGluZUtpbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRXhpdGluZ0lubGluZUtpbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjQ0QTdBRDIwQkY2ODVGMDAyMkIxNzEgLyogUmVjb3JkZWRTdGF0dXNlcy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWNvcmRlZFN0YXR1c2VzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NEE3QUUyMEJGNjg1RjAwMjJCMTcxIC8qIEV4
aXRGbGFnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4aXRGbGFnLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDRBN0FGMjBCRjY4NUYwMDIyQjE3MSAvKiBJ
Q1N0YXR1c01hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJQ1N0YXR1c01h
cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ0QTdCNTIwQzBCRTNGMDAyMkIx
NzEgLyogSUNTdGF0dXNVdGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJQ1N0YXR1c1V0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0
NTcwMzYxQkU0NEM5MTAwNjJBNjI5IC8qIEFpckVsaW1pbmF0ZURlYWRDb2RlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpckVsaW1pbmF0ZURlYWRDb2RlLmNwcDsg
cGF0aCA9IGIzL2Fpci9BaXJFbGltaW5hdGVEZWFkQ29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGNDU3MDM3MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFk
Q29kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJFbGltaW5hdGVEZWFk
Q29kZS5oOyBwYXRoID0gYjMvYWlyL0FpckVsaW1pbmF0ZURlYWRDb2RlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGNDU3MDNBMUJFNDVGMEEwMDYyQTYyOSAvKiBBaXJSZXBvcnRV
c2VkUmVnaXN0ZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFp
clJlcG9ydFVzZWRSZWdpc3RlcnMuY3BwOyBwYXRoID0gYjMvYWlyL0FpclJlcG9ydFVzZWRSZWdp
c3RlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzY2NCw2ICs3Njc5LDEw
IEBACiAJCQkJMEY2MEZFOEUxRkZDMzZGRDAwMDMzMjBBIC8qIEV4ZWN1dGFibGVUb0NvZGVCbG9j
a0VkZ2UuaCAqLywKIAkJCQkwRjU2QTFENDE1MDAxQ0YyMDAyOTkyQjEgLyogRXhlY3V0aW9uQ291
bnRlci5jcHAgKi8sCiAJCQkJMEY1NkExRDExNTAwMEYzMTAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNv
dW50ZXIuaCAqLywKKwkJCQkwRjQ0QTdBOTIwQkY2ODVFMDAyMkIxNzEgLyogRXhpdEZsYWcuY3Bw
ICovLAorCQkJCTBGNDRBN0FFMjBCRjY4NUYwMDIyQjE3MSAvKiBFeGl0RmxhZy5oICovLAorCQkJ
CTBGNDRBN0FDMjBCRjY4NUYwMDIyQjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5jcHAgKi8sCisJ
CQkJMEY0NEE3QTcyMEJGNjg1RDAwMjJCMTcxIC8qIEV4aXRpbmdJbmxpbmVLaW5kLmggKi8sCiAJ
CQkJMEYwMzMyQkYxOEFERkFFMTAwNUY5NzlBIC8qIEV4aXRpbmdKSVRUeXBlLmNwcCAqLywKIAkJ
CQkwRjNBQzc1MzE4OEU1RUM4MDAzMjAyOUYgLyogRXhpdGluZ0pJVFR5cGUuaCAqLywKIAkJCQkw
RkIxMDU4MjE2NzU0ODBDMDBGOEFCNkUgLyogRXhpdEtpbmQuY3BwICovLApAQCAtNzY4MCw2ICs3
Njk5LDkgQEAKIAkJCQkwRjAzMzJDMjE4QjAxNzYzMDA1Rjk3OUEgLyogR2V0QnlJZFZhcmlhbnQu
aCAqLywKIAkJCQkxNEFEOTEwODFEQ0E5Mjk0MDAxNEY5RkUgLyogR2xvYmFsQ29kZUJsb2NrLmgg
Ki8sCiAJCQkJMEYwQjgzQTgxNEJDRjU1RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi8sCisJ
CQkJMEY0NEE3QUIyMEJGNjg1RTAwMjJCMTcxIC8qIElDU3RhdHVzTWFwLmNwcCAqLywKKwkJCQkw
RjQ0QTdBRjIwQkY2ODVGMDAyMkIxNzEgLyogSUNTdGF0dXNNYXAuaCAqLywKKwkJCQkwRjQ0QTdC
NTIwQzBCRTNGMDAyMkIxNzEgLyogSUNTdGF0dXNVdGlscy5jcHAgKi8sCiAJCQkJMEZCMzk5QkQy
MEFGNkIzODAwMTdFMjEzIC8qIElDU3RhdHVzVXRpbHMuaCAqLywKIAkJCQlFMzMwNUZCMjIwQjBG
Nzg4MDBDRUI4MkIgLyogSW5CeUlkU3RhdHVzLmNwcCAqLywKIAkJCQlFMzMwNUZBRjIwQjBGNzg3
MDBDRUI4MkIgLyogSW5CeUlkU3RhdHVzLmggKi8sCkBAIC03NzQwLDYgKzc3NjIsOCBAQAogCQkJ
CTBGOTNCNEE3MThCOTJDNEQwMDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5jcHAgKi8sCiAJCQkJ
MEY5M0I0QTgxOEI5MkM0RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmggKi8sCiAJCQkJMEY5
RkM4QzExNEUxQjVGQjAwRDUyQUUwIC8qIFB1dEtpbmQuaCAqLywKKwkJCQkwRjQ0QTdBRDIwQkY2
ODVGMDAyMkIxNzEgLyogUmVjb3JkZWRTdGF0dXNlcy5jcHAgKi8sCisJCQkJMEY0NEE3QUEyMEJG
Njg1RTAwMjJCMTcxIC8qIFJlY29yZGVkU3RhdHVzZXMuaCAqLywKIAkJCQkwRkY2MEFCRjE2NzQw
RjgxMDAwMjk3NzkgLyogUmVkdWNlV2hpdGVzcGFjZS5jcHAgKi8sCiAJCQkJMEZGNjBBQzAxNjc0
MEY4MTAwMDI5Nzc5IC8qIFJlZHVjZVdoaXRlc3BhY2UuaCAqLywKIAkJCQkwRjU1NDFBRjE2MTND
MUZCMDBDRTNFMjUgLyogU3BlY2lhbFBvaW50ZXIuY3BwICovLApAQCAtNzc1NCw2ICs3Nzc4LDcg
QEAKIAkJCQlCQ0NGMEQwNzBFRjBBQUI5MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1YkluZm8uaCAq
LywKIAkJCQkwRjRBMzhGNzFDOEUxM0RGMDAxOTAzMTggLyogU3VwZXJTYW1wbGVyLmNwcCAqLywK
IAkJCQkwRjRBMzhGODFDOEUxM0RGMDAxOTAzMTggLyogU3VwZXJTYW1wbGVyLmggKi8sCisJCQkJ
MEY0NEE3QTgyMEJGNjg1RTAwMjJCMTcxIC8qIFRlcm1pbmF0ZWRDb2RlT3JpZ2luLmggKi8sCiAJ
CQkJMEYyRDRERTUxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgKi8sCiAJCQkJ
MEYyRDRERTYxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5oICovLAogCQkJCTBGOTUy
QUJBMUI0ODdBNzcwMEMzNjdDNSAvKiBUcmFja2VkUmVmZXJlbmNlcy5jcHAgKi8sCkBAIC04NDEw
LDYgKzg0MzUsNyBAQAogCQkJCTUzRDQ0NERDMURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dhc21BZGRy
ZXNzVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUzNDFGQzcyMURBQzM0M0MwMEU3RTRENyAv
KiBCM1dhc21Cb3VuZHNDaGVja1ZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJDNjNCMjFF
NjBBRTQ3MDBDMTM4MzkgLyogQjNXaWR0aC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NEE3QjIy
MEJGNjhDRTAwMjJCMTcxIC8qIElDU3RhdHVzTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MjY3
OEY4RjFBMDMxMDA5MDA2QTMwNkQgLyogQmFzaWNCbG9ja0xvY2F0aW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxNDdCODNBQzBFNkRCOEM5MDA0Nzc1QTQgLyogQmF0Y2hlZFRyYW5zaXRpb25PcHRp
bWl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2OTc2RTVGMUZBM0U4QkMwMEU3QzRFMSAvKiBC
aWdJbnRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCkBAIC04NjMwLDYgKzg2NTYsNyBAQAog
CQkJCTg2RUM5REM2MTMyOERGODIwMDJCMkFENyAvKiBERkdHZW5lcmF0aW9uSW5mby5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODZFQzlEQzgxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjJGQ0NGQTE4QTYwMDcwMDAxQTI3RjggLyogREZHR3JhcGhTYWZl
cG9pbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDRBN0IxMjBCRjY4QzkwMDIyQjE3MSAvKiBF
eGl0aW5nSW5saW5lS2luZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMTc2NjExOTZCOEY5RTAw
OTEwNTJBIC8qIERGR0hlYXBMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDODQxNjkx
QkE4QzMyMTAwNjE4MzdEIC8qIERGR0luZmVycmVkVHlwZUNoZWNrLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkIxNEUyMTE4MTI1NzBCMDA5QjZCNEQgLyogREZHSW5saW5lQ2FjaGVXcmFwcGVyLmgg
aW4gSGVhZGVycyAqLywKQEAgLTg3ODAsNiArODgwNyw3IEBACiAJCQkJQTdBOEFGMzgxN0FEQjVG
MzAwNUFCMTc0IC8qIEZsb2F0MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzkx
N0FEQjVGMzAwNUFCMTc0IC8qIEZsb2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYy
NEU1NDMxN0VBOUY1OTAwQUJCMjE3IC8qIEZQUkluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTBG
NDRBN0IzMjBCRjY4RDEwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFMzRFREJGNzFEQjVGRkM5MDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjU1MTNBNjFENUE2ODJDMDBDMzJCRDggLyogRnJlZUxpc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGNjU4NUUxMUVFMDgwNUEwMDk1MTc2RCAvKiBGcmVlTGlzdElubGlu
ZXMuaCBpbiBIZWFkZXJzICovLApAQCAtOTEyOSw2ICs5MTU3LDcgQEAKIAkJCQk3MDEzQ0E4QzFC
NDkxQTk0MDBDQUU2MTMgLyogSlNKb2IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE2MEUx
NkY1Q0QwMEIzNDQ2MCAvKiBKU0xleGljYWxFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMxOEM0MjMwRTE2RjVDRDAwQjM0NDYwIC8qIEpTTG9jay5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEY0NEE3QjAyMEJGNjg2MjAwMjJCMTcxIC8qIEV4aXRGbGFnLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDMjVENzA5QzE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTJBNEJCN0YzMThBNDExNzkwMDhBMEZDRCAvKiBKU01hbmFnZWRWYWx1ZUlu
dGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzAwODc0MjE3Q0JFOEVCMDBDM0U2NDMgLyog
SlNNYXAuaCBpbiBIZWFkZXJzICovLApAQCAtOTQ0NSw2ICs5NDc0LDcgQEAKIAkJCQlBNzI5OURB
MjE3RDEyODQ4MDA1RjVGRjkgLyogU2V0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkVFOTg0MTFBODg2NUI3MDA3NTRFOTMgLyogU2V0dXBWYXJhcmdzRnJhbWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCURDMTdFODE4MUM5QzkxRDkwMDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjQ0QTdCNDIwQkY2OEQ5MDAyMkIxNzEgLyogVGVybWluYXRlZENv
ZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCURDMTdFODE5MUM5QzkxREIwMDhBNkFCMyAv
KiBTaGFkb3dDaGlja2VuSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzMDIyRDMxRTNE
NzNBNTAwQkFDNDkzIC8qIFNpZ2lsbENyYXNoQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGNEQ4Qzc4MUZDQTNDRkEwMDFEMzJBQyAvKiBTaW1wbGVNYXJraW5nQ29uc3RyYWludC5oIGlu
IEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJ
bmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFs
SW5mby5oCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnlWYWxJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2NiwxMiArMjY2LDYgQEAgaW5saW5l
IHVuc2lnbmVkIGdldEJ5VmFsSW5mb0J5dGVjb2RlSW5kZQogICAgIHJldHVybiBpbmZvLT5ieXRl
Y29kZUluZGV4OwogfQogCi10eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdpbiwgQnlWYWxJbmZvKiwg
Q29kZU9yaWdpbkFwcHJveGltYXRlSGFzaD4gQnlWYWxJbmZvTWFwOwotCi0jZWxzZSAvLyBFTkFC
TEUoSklUKQotCi10eXBlZGVmIEhhc2hNYXA8aW50LCB2b2lkKj4gQnlWYWxJbmZvTWFwOwotCiAj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAJKHJldmlz
aW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1
bXBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDE3IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KLSAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyNyw3ICs0MjcsNyBAQCBzdGF0aWMgdm9pZCBk
dW1wQ2hhaW4oUHJpbnRTdHJlYW0mIG91dCwgCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgot
dm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50R2V0QnlJZENhY2hlU3RhdHVzKFByaW50
U3RyZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgU3R1YkluZm9NYXAmIG1hcCkKK3ZvaWQg
Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVh
bSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAg
ICAgY29uc3QgYXV0byogaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNCZWdpbigpICsgbG9jYXRp
b247CiAKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJp
bnRHZXRCeUlkCiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJQdHIgPSBtYXAuZ2V0KENvZGVPcmlnaW4obG9jYXRpb24pKSkgeworICAgIGlm
IChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YlB0ciA9IHN0YXR1c01hcC5nZXQoQ29kZU9yaWdpbihs
b2NhdGlvbikpLnN0dWJJbmZvKSB7CiAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
byA9ICpzdHViUHRyOwogICAgICAgICBpZiAoc3R1YkluZm8ucmVzZXRCeUdDKQogICAgICAgICAg
ICAgb3V0LnByaW50KCIgKFJlc2V0IEJ5IEdDKSIpOwpAQCAtNDg4LDEyICs0ODgsMTIgQEAgdm9p
ZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50R2V0QnlJZAogICAgICAgICBvdXQucHJpbnRm
KCIpIik7CiAgICAgfQogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0obWFwKTsKKyAgICBVTlVTRURf
UEFSQU0oc3RhdHVzTWFwKTsKICNlbmRpZgogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZv
aWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0
cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IFN0dWJJbmZvTWFwJiBtYXApCit2b2lkIEJ5
dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRQdXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0m
IG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQogewogICAg
IGNvbnN0IGF1dG8qIGluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zQmVnaW4oKSArIGxvY2F0aW9u
OwogCkBAIC01MjEsNyArNTIxLDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50
UHV0QnlJZAogICAgIH0KIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViUHRyID0gbWFwLmdldChDb2RlT3JpZ2luKGxvY2F0aW9uKSkpIHsKKyAgICBpZiAo
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJQdHIgPSBzdGF0dXNNYXAuZ2V0KENvZGVPcmlnaW4obG9j
YXRpb24pKS5zdHViSW5mbykgewogICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8g
PSAqc3R1YlB0cjsKICAgICAgICAgaWYgKHN0dWJJbmZvLnJlc2V0QnlHQykKICAgICAgICAgICAg
IG91dC5wcmludCgiIChSZXNldCBCeSBHQykiKTsKQEAgLTU0NywxMiArNTQ3LDEyIEBAIHZvaWQg
Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludFB1dEJ5SWQKICAgICAgICAgb3V0LnByaW50Zigi
KSIpOwogICAgIH0KICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKG1hcCk7CisgICAgVU5VU0VEX1BB
UkFNKHN0YXR1c01hcCk7CiAjZW5kaWYKIH0KIAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lk
IEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRJbkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVh
bSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IFN0dWJJbmZvTWFwJiBtYXApCit2b2lkIEJ5dGVj
b2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRJbkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0
LCBpbnQgbG9jYXRpb24sIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgY29u
c3QgYXV0byogaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNCZWdpbigpICsgbG9jYXRpb247CiAK
QEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRJbkJ5
SWRDCiAgICAgVU5VU0VEX1BBUkFNKGlkZW50KTsgLy8gdGVsbCB0aGUgY29tcGlsZXIgdG8gc2h1
dCB1cCBpbiBjZXJ0YWluIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb25zLgogCiAjaWYgRU5BQkxFKEpJ
VCkKLSAgICBpZiAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJQdHIgPSBtYXAuZ2V0KENvZGVPcmln
aW4obG9jYXRpb24pKSkgeworICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YlB0ciA9IHN0
YXR1c01hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpLnN0dWJJbmZvKSB7CiAgICAgICAgIFN0
cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9ICpzdHViUHRyOwogICAgICAgICBpZiAoc3R1Yklu
Zm8ucmVzZXRCeUdDKQogICAgICAgICAgICAgb3V0LnByaW50KCIgKFJlc2V0IEJ5IEdDKSIpOwpA
QCAtNjAwLDI2ICs2MDAsMjYgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50SW5C
eUlkQwogICAgIH0KICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG91dCk7Ci0gICAgVU5VU0VEX1BB
UkFNKG1hcCk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXR1c01hcCk7CiAjZW5kaWYKIH0KIAogI2lm
IEVOQUJMRShKSVQpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1w
ZXI8QmxvY2s+OjpkdW1wQ2FsbExpbmtTdGF0dXMoUHJpbnRTdHJlYW0mLCB1bnNpZ25lZCwgY29u
c3QgQ2FsbExpbmtJbmZvTWFwJikKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQ2Fs
bExpbmtTdGF0dXMoUHJpbnRTdHJlYW0mLCB1bnNpZ25lZCwgY29uc3QgSUNTdGF0dXNNYXAmKQog
ewogfQogCiB0ZW1wbGF0ZTw+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBD
YWxsTGlua1N0YXR1cyhQcmludFN0cmVhbSYgb3V0LCB1bnNpZ25lZCBsb2NhdGlvbiwgY29uc3Qg
Q2FsbExpbmtJbmZvTWFwJiBtYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1
bXBDYWxsTGlua1N0YXR1cyhQcmludFN0cmVhbSYgb3V0LCB1bnNpZ25lZCBsb2NhdGlvbiwgY29u
c3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBpZiAoYmxvY2soKS0+aml0VHlwZSgp
ICE9IEpJVENvZGU6OkZUTEpJVCkKLSAgICAgICAgb3V0LnByaW50KCIgc3RhdHVzKCIsIENhbGxM
aW5rU3RhdHVzOjpjb21wdXRlRm9yKGJsb2NrKCksIGxvY2F0aW9uLCBtYXApLCAiKSIpOworICAg
ICAgICBvdXQucHJpbnQoIiBzdGF0dXMoIiwgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoYmxv
Y2soKSwgbG9jYXRpb24sIHN0YXR1c01hcCksICIpIik7CiB9CiAjZW5kaWYKIAogdGVtcGxhdGU8
Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRDYWxsT3AoUHJp
bnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1
Y3Rpb24qJiBpdCwgY29uc3QgY2hhciogb3AsIENhY2hlRHVtcE1vZGUgY2FjaGVEdW1wTW9kZSwg
Ym9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBtYXApCit2
b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91dCwg
aW50IGxvY2F0aW9uLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwgY29u
c3QgY2hhciogb3AsIENhY2hlRHVtcE1vZGUgY2FjaGVEdW1wTW9kZSwgYm9vbCYgaGFzUHJpbnRl
ZFByb2ZpbGluZywgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBpbnQgZHN0
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgaW50IGZ1bmMgPSAoKytpdCktPnUub3BlcmFuZDsK
QEAgLTYzOCw3ICs2MzgsNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRDYWxs
T3AoCiAgICAgICAgICAgICAgICAgb3V0LnByaW50ZigiIGxsaW50KCVwKSIsIG9iamVjdCk7CiAg
ICAgICAgIH0KICNpZiBFTkFCTEUoSklUKQotICAgICAgICBpZiAoQ2FsbExpbmtJbmZvKiBpbmZv
ID0gbWFwLmdldChDb2RlT3JpZ2luKGxvY2F0aW9uKSkpIHsKKyAgICAgICAgaWYgKENhbGxMaW5r
SW5mbyogaW5mbyA9IHN0YXR1c01hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpLmNhbGxMaW5r
SW5mbykgewogICAgICAgICAgICAgaWYgKGluZm8tPmhhdmVMYXN0U2VlbkNhbGxlZSgpKSB7CiAg
ICAgICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGluZm8tPmxhc3RTZWVuQ2FsbGVlKCk7
CiAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1
bmN0aW9uKj4oKnZtKCksIG9iamVjdCkpCkBAIC02NDgsOSArNjQ4LDkgQEAgdm9pZCBCeXRlY29k
ZUR1bXBlcjxCbG9jaz46OnByaW50Q2FsbE9wKAogICAgICAgICAgICAgfQogICAgICAgICB9CiAK
LSAgICAgICAgZHVtcENhbGxMaW5rU3RhdHVzKG91dCwgbG9jYXRpb24sIG1hcCk7CisgICAgICAg
IGR1bXBDYWxsTGlua1N0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdGF0dXNNYXApOwogI2Vsc2UKLSAg
ICAgICAgVU5VU0VEX1BBUkFNKG1hcCk7CisgICAgICAgIFVOVVNFRF9QQVJBTShzdGF0dXNNYXAp
OwogI2VuZGlmCiAgICAgfQogICAgICsraXQ7CkBAIC02NzgsNyArNjc4LDcgQEAgdm9pZCBCeXRl
Y29kZUR1bXBlcjxCbG9jaz46OnByaW50TG9jYXRpbwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9j
az4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0m
IG91dCwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgdHlw
ZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiBzdHViSW5m
b3MsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYgY2FsbExpbmtJbmZvcykKK3ZvaWQgQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlwZW5h
bWUgQmxvY2s6Okluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3Ry
dWN0aW9uKiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgaW50IGxv
Y2F0aW9uID0gaXQgLSBiZWdpbjsKICAgICBib29sIGhhc1ByaW50ZWRQcm9maWxpbmcgPSBmYWxz
ZTsKQEAgLTEwNzEsNyArMTA3MSw3IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1w
Qnl0ZWNvZGUKICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBw
cmludExvY2F0aW9uQW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJpbl9ieV9pZCIpOwogICAgICAg
ICBvdXQucHJpbnRmKCIlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lz
dGVyTmFtZShyMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBpZGVudGlmaWVyKGlkMCkpLmRhdGEoKSk7
Ci0gICAgICAgIHByaW50SW5CeUlkQ2FjaGVTdGF0dXMob3V0LCBsb2NhdGlvbiwgc3R1YkluZm9z
KTsKKyAgICAgICAgcHJpbnRJbkJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdGF0dXNN
YXApOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBvcF9pbl9ieV92YWw6IHsKQEAg
LTEwOTUsNyArMTA5NSw3IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNv
ZGUKICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiZ2V0X2J5
X2lkX2RpcmVjdCIpOwogICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzIiwgcmVnaXN0ZXJO
YW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBpZGVu
dGlmaWVyKGlkMCkpLmRhdGEoKSk7CiAgICAgICAgIGl0ICs9IDI7IC8vIEluY3JlbWVudCB1cCB0
byB0aGUgdmFsdWUgcHJvZmlsZXIuCi0gICAgICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKG91
dCwgbG9jYXRpb24sIHN0dWJJbmZvcyk7CisgICAgICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVz
KG91dCwgbG9jYXRpb24sIHN0YXR1c01hcCk7CiAgICAgICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhv
dXQsIGl0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAt
MTEwNCw3ICsxMTA0LDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29k
ZQogICAgIGNhc2Ugb3BfZ2V0X2J5X2lkX3Vuc2V0OgogICAgIGNhc2Ugb3BfZ2V0X2FycmF5X2xl
bmd0aDogewogICAgICAgICBwcmludEdldEJ5SWRPcChvdXQsIGxvY2F0aW9uLCBpdCk7Ci0gICAg
ICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0dWJJbmZvcyk7Cisg
ICAgICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0YXR1c01hcCk7
CiAgICAgICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmlsaW5n
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTEzMCw3ICsxMTMwLDcgQEAgdm9pZCBCeXRl
Y29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZQogICAgIH0KICAgICBjYXNlIG9wX3B1dF9i
eV9pZDogewogICAgICAgICBwcmludFB1dEJ5SWRPcChvdXQsIGxvY2F0aW9uLCBpdCwgInB1dF9i
eV9pZCIpOwotICAgICAgICBwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBz
dHViSW5mb3MpOworICAgICAgICBwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9u
LCBzdGF0dXNNYXApOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBvcF9wdXRfYnlf
aWRfd2l0aF90aGlzOiB7CkBAIC0xNDc2LDE1ICsxNDc2LDE1IEBAIHZvaWQgQnl0ZWNvZGVEdW1w
ZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ug
b3BfY2FsbDogewotICAgICAgICBwcmludENhbGxPcChvdXQsIGxvY2F0aW9uLCBpdCwgImNhbGwi
LCBEdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmlsaW5nLCBjYWxsTGlua0luZm9zKTsKKyAgICAg
ICAgcHJpbnRDYWxsT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJjYWxsIiwgRHVtcENhY2hlcywgaGFz
UHJpbnRlZFByb2ZpbGluZywgc3RhdHVzTWFwKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IGNhc2Ugb3BfdGFpbF9jYWxsOiB7Ci0gICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24s
IGl0LCAidGFpbF9jYWxsIiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgY2FsbExp
bmtJbmZvcyk7CisgICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAidGFpbF9j
YWxsIiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgc3RhdHVzTWFwKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3BfY2FsbF9ldmFsOiB7Ci0gICAgICAgIHByaW50
Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAiY2FsbF9ldmFsIiwgRG9udER1bXBDYWNoZXMsIGhh
c1ByaW50ZWRQcm9maWxpbmcsIGNhbGxMaW5rSW5mb3MpOworICAgICAgICBwcmludENhbGxPcChv
dXQsIGxvY2F0aW9uLCBpdCwgImNhbGxfZXZhbCIsIERvbnREdW1wQ2FjaGVzLCBoYXNQcmludGVk
UHJvZmlsaW5nLCBzdGF0dXNNYXApOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTE1MjMs
NyArMTUyMyw3IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3BfY29uc3RydWN0OiB7Ci0gICAgICAgIHBy
aW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAiY29uc3RydWN0IiwgRHVtcENhY2hlcywgaGFz
UHJpbnRlZFByb2ZpbGluZywgY2FsbExpbmtJbmZvcyk7CisgICAgICAgIHByaW50Q2FsbE9wKG91
dCwgbG9jYXRpb24sIGl0LCAiY29uc3RydWN0IiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2Zp
bGluZywgc3RhdHVzTWFwKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3Bfc3Ry
Y2F0OiB7CkBAIC0xNzc4LDEwICsxNzc4LDEwIEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+
OjpkdW1wQnl0ZWNvZGUKIH0KIAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVjb2Rl
RHVtcGVyPEJsb2NrPjo6ZHVtcEJ5dGVjb2RlKEJsb2NrKiBibG9jaywgUHJpbnRTdHJlYW0mIG91
dCwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgdHlwZW5h
bWUgQmxvY2s6Okluc3RydWN0aW9uKiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiBzdHViSW5mb3Ms
IGNvbnN0IENhbGxMaW5rSW5mb01hcCYgY2FsbExpbmtJbmZvcykKK3ZvaWQgQnl0ZWNvZGVEdW1w
ZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUoQmxvY2sqIGJsb2NrLCBQcmludFN0cmVhbSYgb3V0LCBj
b25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCB0eXBlbmFtZSBC
bG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsK
ICAgICBCeXRlY29kZUR1bXBlciBkdW1wZXIoYmxvY2ssIGJlZ2luKTsKLSAgICBkdW1wZXIuZHVt
cEJ5dGVjb2RlKG91dCwgYmVnaW4sIGl0LCBzdHViSW5mb3MsIGNhbGxMaW5rSW5mb3MpOworICAg
IGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0LCBiZWdpbiwgaXQsIHN0YXR1c01hcCk7CiB9CiAKIHRl
bXBsYXRlPGNsYXNzIEJsb2NrPgpAQCAtMTg5MCw3ICsxODkwLDcgQEAgdm9pZCBCeXRlY29kZUR1
bXBlcjxCbG9jaz46OmR1bXBTdHJpbmdTdwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZv
aWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQmxvY2soQmxvY2sqIGJsb2NrLCBjb25zdCB0
eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucywgUHJpbnRT
dHJlYW0mIG91dCwgY29uc3QgU3R1YkluZm9NYXAmIHN0dWJJbmZvcywgY29uc3QgQ2FsbExpbmtJ
bmZvTWFwJiBjYWxsTGlua0luZm9zKQordm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBC
bG9jayhCbG9jayogYmxvY2ssIGNvbnN0IHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0
aW9ucyYgaW5zdHJ1Y3Rpb25zLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJQ1N0YXR1c01hcCYg
c3RhdHVzTWFwKQogewogICAgIHNpemVfdCBpbnN0cnVjdGlvbkNvdW50ID0gMDsKIApAQCAtMTkx
MCw3ICsxOTEwLDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCbG9jayhCbAog
ICAgIGNvbnN0IGF1dG8qIGVuZCA9IGluc3RydWN0aW9ucy5lbmQoKTsKICAgICBCeXRlY29kZUR1
bXBlcjxCbG9jaz4gZHVtcGVyKGJsb2NrLCBiZWdpbik7CiAgICAgZm9yIChjb25zdCBhdXRvKiBp
dCA9IGJlZ2luOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUo
b3V0LCBiZWdpbiwgaXQsIHN0dWJJbmZvcywgY2FsbExpbmtJbmZvcyk7CisgICAgICAgIGR1bXBl
ci5kdW1wQnl0ZWNvZGUob3V0LCBiZWdpbiwgaXQsIHN0YXR1c01hcCk7CiAKICAgICBkdW1wZXIu
ZHVtcElkZW50aWZpZXJzKG91dCk7CiAgICAgZHVtcGVyLmR1bXBDb25zdGFudHMob3V0KTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5o
CShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVEdW1wZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNiArMjcsNyBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJDYWxsTGlua0luZm8uaCIKKyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgog
I2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzcs
OCArMzksOCBAQCBjbGFzcyBCeXRlY29kZUR1bXBlciB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiB0
eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24gSW5zdHJ1Y3Rpb247CiAKLSAgICBzdGF0aWMgdm9p
ZCBkdW1wQnl0ZWNvZGUoQmxvY2sqLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlv
biogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiA9IFN0
dWJJbmZvTWFwKCksIGNvbnN0IENhbGxMaW5rSW5mb01hcCYgPSBDYWxsTGlua0luZm9NYXAoKSk7
Ci0gICAgc3RhdGljIHZvaWQgZHVtcEJsb2NrKEJsb2NrKiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6
OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiwgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgU3R1YkluZm9N
YXAmID0gU3R1YkluZm9NYXAoKSwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiA9IENhbGxMaW5rSW5m
b01hcCgpKTsKKyAgICBzdGF0aWMgdm9pZCBkdW1wQnl0ZWNvZGUoQmxvY2sqLCBQcmludFN0cmVh
bSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQs
IGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXAgPSBJQ1N0YXR1c01hcCgpKTsKKyAgICBzdGF0
aWMgdm9pZCBkdW1wQmxvY2soQmxvY2sqLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJ
bnN0cnVjdGlvbnMmLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVz
TWFwID0gSUNTdGF0dXNNYXAoKSk7CiAKIHByaXZhdGU6CiAgICAgQnl0ZWNvZGVEdW1wZXIoQmxv
Y2sqIGJsb2NrLCBjb25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4pCkBAIC02OSwx
NCArNzEsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByaW50Q29uZGl0aW9uYWxKdW1wKFByaW50
U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwg
aW50IGxvY2F0aW9uLCBjb25zdCBjaGFyKiBvcCk7CiAgICAgdm9pZCBwcmludENvbXBhcmVKdW1w
KFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiwgY29uc3QgSW5zdHJ1Y3Rpb24q
JiBpdCwgaW50IGxvY2F0aW9uLCBjb25zdCBjaGFyKiBvcCk7CiAgICAgdm9pZCBwcmludEdldEJ5
SWRPcChQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYg
aXQpOwotICAgIHZvaWQgcHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwg
aW50IGxvY2F0aW9uLCBjb25zdCBTdHViSW5mb01hcCYpOwotICAgIHZvaWQgcHJpbnRQdXRCeUlk
Q2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBTdHViSW5m
b01hcCYpOwotICAgIHZvaWQgcHJpbnRJbkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0
LCBpbnQgbG9jYXRpb24sIGNvbnN0IFN0dWJJbmZvTWFwJik7CisgICAgdm9pZCBwcmludEdldEJ5
SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IElDU3Rh
dHVzTWFwJik7CisgICAgdm9pZCBwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYg
b3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IElDU3RhdHVzTWFwJik7CisgICAgdm9pZCBwcmludElu
QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgSUNT
dGF0dXNNYXAmKTsKICAgICBlbnVtIENhY2hlRHVtcE1vZGUgeyBEdW1wQ2FjaGVzLCBEb250RHVt
cENhY2hlcyB9OwotICAgIHZvaWQgcHJpbnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxv
Y2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCwgQ2FjaGVEdW1w
TW9kZSwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJik7
CisgICAgdm9pZCBwcmludENhbGxPcChQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNv
bnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IGNoYXIqIG9wLCBDYWNoZUR1bXBNb2RlLCBib29s
JiBoYXNQcmludGVkUHJvZmlsaW5nLCBjb25zdCBJQ1N0YXR1c01hcCYpOwogICAgIHZvaWQgcHJp
bnRQdXRCeUlkT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVj
dGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCk7CiAgICAgdm9pZCBwcmludExvY2F0aW9uT3BBbmRS
ZWdpc3Rlck9wZXJhbmQoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0
cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCwgaW50IG9wZXJhbmQpOwotICAgIHZvaWQgZHVt
cEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29u
c3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgU3R1YkluZm9NYXAmLCBjb25zdCBDYWxsTGlua0lu
Zm9NYXAmKTsKKyAgICB2b2lkIGR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJ
bnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3RhdHVz
TWFwJik7CiAKICAgICB2b2lkIGR1bXBWYWx1ZVByb2ZpbGluZyhQcmludFN0cmVhbSYsIGNvbnN0
IEluc3RydWN0aW9uKiYsIGJvb2wmIGhhc1ByaW50ZWRQcm9maWxpbmcpOwogICAgIHZvaWQgZHVt
cEFycmF5UHJvZmlsaW5nKFByaW50U3RyZWFtJiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiwgYm9vbCYg
aGFzUHJpbnRlZFByb2ZpbGluZyk7CkBAIC04NSw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCogYWN0dWFsUG9pbnRlckZvcihTcGVjaWFsOjpQb2ludGVyKSBjb25zdDsKIAogI2lmIEVOQUJM
RShKSVQpCi0gICAgdm9pZCBkdW1wQ2FsbExpbmtTdGF0dXMoUHJpbnRTdHJlYW0mLCB1bnNpZ25l
ZCBsb2NhdGlvbiwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJik7CisgICAgdm9pZCBkdW1wQ2FsbExp
bmtTdGF0dXMoUHJpbnRTdHJlYW0mLCB1bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNN
YXAmKTsKICNlbmRpZgogCiAgICAgQmxvY2sqIG1fYmxvY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAyMzI0NDEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM1MiwxMiArMzUyLDYgQEAgaW5saW5lIENvZGVPcmlnaW4gZ2V0Q2FsbExpbmtJ
bmZvQ29kZU9yaQogICAgIHJldHVybiBjYWxsTGlua0luZm8uY29kZU9yaWdpbigpOwogfQogCi10
eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdpbiwgQ2FsbExpbmtJbmZvKiwgQ29kZU9yaWdpbkFwcHJv
eGltYXRlSGFzaD4gQ2FsbExpbmtJbmZvTWFwOwotCi0jZWxzZSAvLyBFTkFCTEUoSklUKQotCi10
eXBlZGVmIEhhc2hNYXA8aW50LCB2b2lkKj4gQ2FsbExpbmtJbmZvTWFwOwotCiAjZW5kaWYgLy8g
RU5BQkxFKEpJVCkKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHJldmlzaW9uIDIzMjQ0
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDggQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtT
dGF0dXM6OmNvbXB1dGVGcgogfQogCiBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29t
cHV0ZUZvcigKLSAgICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2Rl
SW5kZXgsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYgbWFwKQorICAgIENvZGVCbG9jayogcHJvZmls
ZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgY29uc3QgSUNTdGF0dXNNYXAmIG1hcCwK
KyAgICBFeGl0U2l0ZURhdGEgZXhpdFNpdGVEYXRhKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tl
ciBsb2NrZXIocHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKICAgICAKQEAgLTg1LDkgKzg2LDcgQEAg
Q2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGbwogICAgIFVOVVNFRF9QQVJB
TShieXRlY29kZUluZGV4KTsKICAgICBVTlVTRURfUEFSQU0obWFwKTsKICNpZiBFTkFCTEUoREZH
X0pJVCkKLSAgICBFeGl0U2l0ZURhdGEgZXhpdFNpdGVEYXRhID0gY29tcHV0ZUV4aXRTaXRlRGF0
YShwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4KTsKLSAgICAKLSAgICBDYWxsTGlua0luZm8q
IGNhbGxMaW5rSW5mbyA9IG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4KSk7CisgICAg
Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBtYXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJ
bmRleCkpLmNhbGxMaW5rSW5mbzsKICAgICBpZiAoIWNhbGxMaW5rSW5mbykgewogICAgICAgICBp
ZiAoZXhpdFNpdGVEYXRhLnRha2VzU2xvd1BhdGgpCiAgICAgICAgICAgICByZXR1cm4gdGFrZXNT
bG93UGF0aCgpOwpAQCAtMTAwLDYgKzk5LDEyIEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3Rh
dHVzOjpjb21wdXRlRm8KICNlbmRpZgogfQogCitDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1
czo6Y29tcHV0ZUZvcigKKyAgICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5
dGVjb2RlSW5kZXgsIGNvbnN0IElDU3RhdHVzTWFwJiBtYXApCit7CisgICAgcmV0dXJuIGNvbXB1
dGVGb3IocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgbWFwLCBjb21wdXRlRXhpdFNpdGVE
YXRhKHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpKTsKK30KKwogQ2FsbExpbmtTdGF0dXM6
OkV4aXRTaXRlRGF0YSBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YShDb2RlQmxv
Y2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgRXhpdFNp
dGVEYXRhIGV4aXRTaXRlRGF0YTsKQEAgLTEwNywxMSArMTEyLDIxIEBAIENhbGxMaW5rU3RhdHVz
OjpFeGl0U2l0ZURhdGEgQ2FsbExpbmtTdGEKICAgICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJs
b2NrID0gcHJvZmlsZWRCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKTsKICAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKIAotICAgIGV4aXRTaXRlRGF0YS50
YWtlc1Nsb3dQYXRoID0KLSAgICAgICAgY29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERG
Rzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRUeXBlKSkKLSAgICAgICAgfHwg
Y29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRl
Y29kZUluZGV4LCBCYWRFeGVjdXRhYmxlKSk7Ci0gICAgZXhpdFNpdGVEYXRhLmJhZEZ1bmN0aW9u
ID0KLSAgICAgICAgY29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRF
eGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRDZWxsKSk7CisgICAgYXV0byB0YWtlc1Nsb3dQYXRo
ID0gWyZdIChFeGl0aW5nSW5saW5lS2luZCBpbmxpbmVLaW5kKSAtPiBFeGl0RmxhZyB7CisgICAg
ICAgIHJldHVybiBFeGl0RmxhZygKKyAgICAgICAgICAgIGNvZGVCbG9jay0+aGFzRXhpdFNpdGUo
bG9ja2VyLCBERkc6OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkVHlwZSwgRXhp
dEZyb21Bbnl0aGluZywgaW5saW5lS2luZCkpCisgICAgICAgICAgICB8fCBjb2RlQmxvY2stPmhh
c0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJh
ZEV4ZWN1dGFibGUsIEV4aXRGcm9tQW55dGhpbmcsIGlubGluZUtpbmQpKSwKKyAgICAgICAgICAg
IGlubGluZUtpbmQpOworICAgIH07CisgICAgCisgICAgYXV0byBiYWRGdW5jdGlvbiA9IFsmXSAo
RXhpdGluZ0lubGluZUtpbmQgaW5saW5lS2luZCkgLT4gRXhpdEZsYWcgeworICAgICAgICByZXR1
cm4gRXhpdEZsYWcoY29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRF
eGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRDZWxsLCBFeGl0RnJvbUFueXRoaW5nLCBpbmxpbmVL
aW5kKSksIGlubGluZUtpbmQpOworICAgIH07CisgICAgCisgICAgZXhpdFNpdGVEYXRhLnRha2Vz
U2xvd1BhdGggfD0gdGFrZXNTbG93UGF0aChFeGl0RnJvbU5vdElubGluZWQpOworICAgIGV4aXRT
aXRlRGF0YS50YWtlc1Nsb3dQYXRoIHw9IHRha2VzU2xvd1BhdGgoRXhpdEZyb21JbmxpbmVkKTsK
KyAgICBleGl0U2l0ZURhdGEuYmFkRnVuY3Rpb24gfD0gYmFkRnVuY3Rpb24oRXhpdEZyb21Ob3RJ
bmxpbmVkKTsKKyAgICBleGl0U2l0ZURhdGEuYmFkRnVuY3Rpb24gfD0gYmFkRnVuY3Rpb24oRXhp
dEZyb21JbmxpbmVkKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwog
ICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKQEAgLTEzNSw2ICsxNTAsMTAgQEAgQ2Fs
bExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGbwogQ2FsbExpbmtTdGF0dXMgQ2Fs
bExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tQ2FsbExpbmtJbmZvKAogICAgIGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYsIENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQogeworICAgIC8vIFdlIGNh
bm5vdCB0ZWxsIHlvdSBhbnl0aGluZyBhYm91dCBkaXJlY3QgY2FsbHMuCisgICAgaWYgKGNhbGxM
aW5rSW5mby5pc0RpcmVjdCgpKQorICAgICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoKTsKKyAg
ICAKICAgICBpZiAoY2FsbExpbmtJbmZvLmNsZWFyZWRCeUdDKCkpCiAgICAgICAgIHJldHVybiB0
YWtlc1Nsb3dQYXRoKCk7CiAgICAgCkBAIC0xNTgsNiArMTc3LDE5IEBAIENhbGxMaW5rU3RhdHVz
IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnIKICAgICBpZiAoUG9seW1vcnBoaWNDYWxsU3R1YlJv
dXRpbmUqIHN0dWIgPSBjYWxsTGlua0luZm8uc3R1YigpKSB7CiAgICAgICAgIFdURjo6bG9hZExv
YWRGZW5jZSgpOwogICAgICAgICAKKyAgICAgICAgaWYgKCFzdHViLT5oYXNFZGdlcygpKSB7Cisg
ICAgICAgICAgICAvLyBUaGlzIG1lYW5zIHdlIGhhdmUgYW4gRlRMIHByb2ZpbGUsIHdoaWNoIGhh
cyBpbmNvbXBsZXRlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8v
IEl0J3Mgbm90IGNsZWFyIGlmIHRha2VzU2xvd1BhdGgoKSBvciBDYWxsTGlua1N0YXR1cygpIGFy
ZSBhcHByb3ByaWF0ZSBoZXJlLCBidXQgSQorICAgICAgICAgICAgLy8gdGhpbmsgdGhhdCB0YWtl
c1Nsb3dQYXRoKCkgaXMgYSBuYXJyb3cgd2lubmVyLgorICAgICAgICAgICAgLy8KKyAgICAgICAg
ICAgIC8vIEVpdGhlciB3YXksIHRoaXMgaXMgdGVsbGluZyB1cyB0aGF0IHRoZSBGVEwgaGFkIGJl
ZW4gbGVkIHRvIGJlbGlldmUgdGhhdCBpdCdzCisgICAgICAgICAgICAvLyBwcm9maXRhYmxlIG5v
dCB0byBpbmxpbmUgYW55dGhpbmcuCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gCisg
ICAgICAgICAgICByZXR1cm4gdGFrZXNTbG93UGF0aCgpOworICAgICAgICB9CisgICAgICAgIAog
ICAgICAgICBDYWxsRWRnZUxpc3QgZWRnZXMgPSBzdHViLT5lZGdlcygpOwogICAgICAgICAKICAg
ICAgICAgLy8gTm93IHRoYXQgd2UndmUgbG9hZGVkIHRoZSBlZGdlcyBsaXN0LCB0aGVyZSBhcmUg
bm8gZnVydGhlciBjb25jdXJyZW5jeSBjb25jZXJucy4gV2Ugd2lsbApAQCAtMjI3LDgzICsyNTks
MTIyIEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnIKIAogQ2FsbExp
bmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgY29uc3QgQ29uY3VycmVu
dEpTTG9ja2VyJiBsb2NrZXIsIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgQ2FsbExpbmtJbmZv
JiBjYWxsTGlua0luZm8sCi0gICAgRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YSkKKyAgICBFeGl0
U2l0ZURhdGEgZXhpdFNpdGVEYXRhLCBFeGl0aW5nSW5saW5lS2luZCBpbmxpbmVLaW5kKQogewog
ICAgIENhbGxMaW5rU3RhdHVzIHJlc3VsdCA9IGNvbXB1dGVGb3IobG9ja2VyLCBwcm9maWxlZEJs
b2NrLCBjYWxsTGlua0luZm8pOwotICAgIGlmIChleGl0U2l0ZURhdGEuYmFkRnVuY3Rpb24pIHsK
LSAgICAgICAgaWYgKHJlc3VsdC5pc0Jhc2VkT25TdHViKCkpIHsKKyAgICByZXN1bHQuYWNjb3Vu
dEZvckV4aXRzKGV4aXRTaXRlRGF0YSwgaW5saW5lS2luZCk7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKyNlbmRpZgorCit2b2lkIENhbGxMaW5rU3RhdHVzOjphY2NvdW50Rm9yRXhpdHMoRXhpdFNp
dGVEYXRhIGV4aXRTaXRlRGF0YSwgRXhpdGluZ0lubGluZUtpbmQgaW5saW5lS2luZCkKK3sKKyAg
ICBpZiAoZXhpdFNpdGVEYXRhLmJhZEZ1bmN0aW9uLmlzU2V0KGlubGluZUtpbmQpKSB7CisgICAg
ICAgIGlmIChpc0Jhc2VkT25TdHViKCkpIHsKICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYSBw
b2x5bW9ycGhpYyBzdHViLCB0aGVuIGhhdmluZyBhbiBleGl0IHNpdGUgaXMgbm90IHF1aXRlIHNv
IHVzZWZ1bC4gSW4KICAgICAgICAgICAgIC8vIG1vc3QgY2FzZXMsIHRoZSBpbmZvcm1hdGlvbiBp
biB0aGUgc3R1YiBoYXMgaGlnaGVyIGZpZGVsaXR5LgotICAgICAgICAgICAgcmVzdWx0Lm1ha2VD
bG9zdXJlQ2FsbCgpOworICAgICAgICAgICAgbWFrZUNsb3N1cmVDYWxsKCk7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAvLyBXZSBtaWdodCBub3QgaGF2ZSBhIHBvbHltb3JwaGljIHN0
dWIgZm9yIGFueSBudW1iZXIgb2YgcmVhc29ucy4gV2hlbiB0aGlzIGhhcHBlbnMsIHdlCiAgICAg
ICAgICAgICAvLyBhcmUgaW4gbGVzcyBjZXJ0YWluIHRlcnJpdG9yeSwgc28gZXhpdCBzaXRlcyBt
ZWFuIGEgbG90LgotICAgICAgICAgICAgcmVzdWx0Lm1fY291bGRUYWtlU2xvd1BhdGggPSB0cnVl
OworICAgICAgICAgICAgbV9jb3VsZFRha2VTbG93UGF0aCA9IHRydWU7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgaWYgKGV4aXRTaXRlRGF0YS50YWtlc1Nsb3dQYXRoKQotICAgICAgICByZXN1bHQu
bV9jb3VsZFRha2VTbG93UGF0aCA9IHRydWU7CiAgICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICBpZiAoZXhpdFNpdGVEYXRhLnRha2VzU2xvd1BhdGguaXNTZXQoaW5saW5lS2luZCkpCisgICAg
ICAgIG1fY291bGRUYWtlU2xvd1BhdGggPSB0cnVlOwogfQotI2VuZGlmCiAKLXZvaWQgQ2FsbExp
bmtTdGF0dXM6OmNvbXB1dGVERkdTdGF0dXNlcygKLSAgICBDb2RlQmxvY2sqIGRmZ0NvZGVCbG9j
aywgQ2FsbExpbmtTdGF0dXM6OkNvbnRleHRNYXAmIG1hcCkKK0NhbGxMaW5rU3RhdHVzIENhbGxM
aW5rU3RhdHVzOjpjb21wdXRlRm9yKAorICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luLAorICAgIGNvbnN0IElDU3RhdHVzTWFwJiBiYXNlbGluZU1hcCwg
Y29uc3QgSUNTdGF0dXNDb250ZXh0U3RhY2smIG9wdGltaXplZFN0YWNrKQogewotI2lmIEVOQUJM
RShERkdfSklUKQotICAgIFJFTEVBU0VfQVNTRVJUKGRmZ0NvZGVCbG9jay0+aml0VHlwZSgpID09
IEpJVENvZGU6OkRGR0pJVCk7Ci0gICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IGRm
Z0NvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKTsKLSAgICBmb3IgKGF1dG8gaXRlciA9IGRmZ0NvZGVC
bG9jay0+Y2FsbExpbmtJbmZvc0JlZ2luKCk7ICEhaXRlcjsgKytpdGVyKSB7Ci0gICAgICAgIENh
bGxMaW5rSW5mbyYgaW5mbyA9ICoqaXRlcjsKLSAgICAgICAgaWYgKGluZm8uaXNEaXJlY3QoKSkg
ewotICAgICAgICAgICAgLy8gSWYgdGhlIERGRyB3YXMgYWJsZSB0byBnZXQgYSBkaXJlY3QgY2Fs
bCB0aGVuIHByb2JhYmx5IHNvIHdpbGwgd2UuIEhvd2V2ZXIsIHRoZXJlIGlzCi0gICAgICAgICAg
ICAvLyBhIHJlbW90ZSBjaGFuY2UgdGhhdCBpdCdzIGJhZCBuZXdzIHRvIGxvc2UgaW5mb3JtYXRp
b24gYWJvdXQgd2hhdCB0aGUgREZHIGRpZC4gV2UnZAotICAgICAgICAgICAgLy8gaWRlYWxseSBs
aWtlIHRvIGp1c3Qga25vdyB0aGF0IHRoZSBERkcgaGFkIGVtaXR0ZWQgYSBEaXJlY3RDYWxsLgot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luID0gaW5mby5jb2RlT3JpZ2luKCk7Ci0gICAgICAgIAotICAgICAgICAvLyBDaGVjayBp
ZiB3ZSBoYWQgYWxyZWFkeSBwcmV2aW91c2x5IG1hZGUgYSB0ZXJyaWJsZSBtaXN0YWtlIGluIHRo
ZSBGVEwgZm9yIHRoaXMKLSAgICAgICAgLy8gY29kZSBvcmlnaW4uIE5vdGUgdGhhdCB0aGlzIGlz
IGFwcHJveGltYXRlIGJlY2F1c2Ugd2UgY291bGQgaGF2ZSBhIG1vbm92YXJpYW50Ci0gICAgICAg
IC8vIGlubGluZSBpbiB0aGUgRlRMIHRoYXQgZW5kZWQgdXAgZmFpbGluZy4gV2Ugc2hvdWxkIGZp
eCB0aGF0IGF0IHNvbWUgcG9pbnQgYnkKLSAgICAgICAgLy8gaGF2aW5nIGRhdGEgc3RydWN0dXJl
cyB0byB0cmFjayB0aGUgY29udGV4dCBvZiBmcmVxdWVudCBleGl0cy4gVGhpcyBpcyBjdXJyZW50
bHkKLSAgICAgICAgLy8gY2hhbGxlbmdpbmcgYmVjYXVzZSBpdCB3b3VsZCByZXF1aXJlIGNyZWF0
aW5nIGEgQ29kZU9yaWdpbi1iYXNlZCBkYXRhYmFzZSBpbgotICAgICAgICAvLyBiYXNlbGluZSBD
b2RlQmxvY2tzLCBidXQgdGhvc2UgQ29kZUJsb2NrcyBkb24ndCByZWFsbHkgaGF2ZSBhIHBsYWNl
IHRvIHB1dCB0aGUKLSAgICAgICAgLy8gSW5saW5lQ2FsbEZyYW1lcy4KLSAgICAgICAgQ29kZUJs
b2NrKiBjdXJyZW50QmFzZWxpbmUgPQotICAgICAgICAgICAgYmFzZWxpbmVDb2RlQmxvY2tGb3JP
cmlnaW5BbmRCYXNlbGluZUNvZGVCbG9jayhjb2RlT3JpZ2luLCBiYXNlbGluZUNvZGVCbG9jayk7
Ci0gICAgICAgIEV4aXRTaXRlRGF0YSBleGl0U2l0ZURhdGEgPSBjb21wdXRlRXhpdFNpdGVEYXRh
KGN1cnJlbnRCYXNlbGluZSwgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsKLSAgICAgICAgCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoZGZnQ29kZUJs
b2NrLT5tX2xvY2spOwotICAgICAgICAgICAgbWFwLmFkZChpbmZvLmNvZGVPcmlnaW4oKSwgY29t
cHV0ZUZvcihsb2NrZXIsIGRmZ0NvZGVCbG9jaywgaW5mbywgZXhpdFNpdGVEYXRhKSk7Ci0gICAg
ICAgIH0KKyAgICBpZiAoQ2FsbExpbmtTdGF0dXNJbnRlcm5hbDo6dmVyYm9zZSkKKyAgICAgICAg
ZGF0YUxvZygiRmlndXJpbmcgb3V0IGNhbGwgcHJvZmlsaW5nIGZvciAiLCBjb2RlT3JpZ2luLCAi
XG4iKTsKKyAgICBFeGl0U2l0ZURhdGEgZXhpdFNpdGVEYXRhID0gY29tcHV0ZUV4aXRTaXRlRGF0
YShwcm9maWxlZEJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpOworICAgIGlmIChDYWxs
TGlua1N0YXR1c0ludGVybmFsOjp2ZXJib3NlKSB7CisgICAgICAgIGRhdGFMb2coInRha2VzU2xv
d1BhdGggPSAiLCBleGl0U2l0ZURhdGEudGFrZXNTbG93UGF0aCwgIlxuIik7CisgICAgICAgIGRh
dGFMb2coImJhZEZ1bmN0aW9uID0gIiwgZXhpdFNpdGVEYXRhLmJhZEZ1bmN0aW9uLCAiXG4iKTsK
ICAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShkZmdDb2RlQmxvY2spOwotI2VuZGlmIC8v
IEVOQUJMRShERkdfSklUKQogICAgIAotICAgIGlmIChDYWxsTGlua1N0YXR1c0ludGVybmFsOjp2
ZXJib3NlKSB7Ci0gICAgICAgIGRhdGFMb2coIkNvbnRleHQgbWFwOlxuIik7Ci0gICAgICAgIENv
bnRleHRNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtYXAuYmVnaW4oKTsKLSAgICAgICAgQ29udGV4dE1h
cDo6aXRlcmF0b3IgZW5kID0gbWFwLmVuZCgpOwotICAgICAgICBmb3IgKDsgaXRlciAhPSBlbmQ7
ICsraXRlcikgewotICAgICAgICAgICAgZGF0YUxvZygiICAgICIsIGl0ZXItPmtleSwgIjpcbiIp
OwotICAgICAgICAgICAgZGF0YUxvZygiICAgICAgICAiLCBpdGVyLT52YWx1ZSwgIlxuIik7Cisg
ICAgZm9yIChjb25zdCBJQ1N0YXR1c0NvbnRleHQqIGNvbnRleHQgOiBvcHRpbWl6ZWRTdGFjaykg
eworICAgICAgICBpZiAoQ2FsbExpbmtTdGF0dXNJbnRlcm5hbDo6dmVyYm9zZSkKKyAgICAgICAg
ICAgIGRhdGFMb2coIkV4YW1pbmluZyBzdGF0dXMgaW4gIiwgcG9pbnRlckR1bXAoY29udGV4dC0+
b3B0aW1pemVkQ29kZUJsb2NrKSwgIlxuIik7CisgICAgICAgIElDU3RhdHVzIHN0YXR1cyA9IGNv
bnRleHQtPmdldChjb2RlT3JpZ2luKTsKKyAgICAgICAgCisgICAgICAgIC8vIElmIHdlIGhhdmUg
Ym90aCBhIENhbGxMaW5rU3RhdHVzIGFuZCBhIGNhbGxMaW5rSW5mbyBmb3IgdGhlIHNhbWUgb3Jp
Z2luLCB0aGVuIGl0IG1lYW5zIG9uZQorICAgICAgICAvLyBvZiB0d28gdGhpbmdzOgorICAgICAg
ICAvLworICAgICAgICAvLyAxKSBXZSBpbml0aWFsbHkgdGhvdWdodCB0aGF0IHdlJ2QgYmUgYWJs
ZSB0byBpbmxpbmUgdGhpcyBjYWxsIHNvIHdlIHJlY29yZGVkIGEgc3RhdHVzIGJ1dAorICAgICAg
ICAvLyAgICB0aGVuIHdlIHJlYWxpemVkIHRoYXQgaXQgd2FzIHBvaW50bGVzcyBhbmQgZ2F2ZSB1
cCBhbmQgZW1pdHRlZCBhIG5vcm1hbCBjYWxsIGFueXdheS4KKyAgICAgICAgLy8KKyAgICAgICAg
Ly8gMikgV2UgZGlkIGEgcG9seW1vcnBoaWMgY2FsbCBpbmxpbmUgdGhhdCBoYWQgYSBzbG93IHBh
dGggY2FzZS4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gSW4gdGhlIGZpcnN0IGNhc2UsIGl0J3Mg
ZXNzZW50aWFsIHRoYXQgd2UgdXNlIHRoZSBjYWxsTGlua0luZm8sIHNpbmNlIHRoZSBzdGF0dXMg
bWF5IGJlCisgICAgICAgIC8vIHBvbHltb3JwaGljIGJ1dCB0aGUgbGluayBpbmZvIGJlbmVmaXRz
IGZyb20gcG9seXZhcmlhbnQgcHJvZmlsaW5nLgorICAgICAgICAvLworICAgICAgICAvLyBJbiB0
aGUgc2Vjb25kIGNhc2UsIGl0J3MgZXNzZW50aWFsIHRoYXQgd2UgdXNlIHRoZSBzdGF0dXMsIHNp
bmNlIHRoZSBjYWxsTGlua0luZm8KKyAgICAgICAgLy8gY29ycmVzcG9uZHMgdG8gdGhlIHNsb3cg
Y2FzZS4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gSXQgd291bGQgYmUgYW5ub3lpbmcgdG8gZGlz
dGluZ3Vpc2ggdGhvc2UgdHdvIGNhc2VzLiBIb3dldmVyLCB3ZSBrbm93IHRoYXQ6CisgICAgICAg
IC8vCisgICAgICAgIC8vIElmIHRoZSBmaXJzdCBjYXNlIGhhcHBlbnMgaW4gdGhlIEZUTCwgdGhl
biBpdCBtZWFucyB0aGF0IGV2ZW4gd2l0aCBwb2x5dmFyaWFudCBwcm9maWxpbmcsCisgICAgICAg
IC8vIHdlIGZhaWxlZCB0byBkbyBhbnl0aGluZyB1c2VmdWwuIFRoYXQgc3VnZ2VzdHMgdGhhdCBp
biB0aGUgRlRMLCBpdCdzIE9LIHRvIHByaW9yaXRpemUgdGhlCisgICAgICAgIC8vIHN0YXR1cy4g
VGhhdCBzdGF0dXMgd2lsbCBhZ2FpbiB0ZWxsIHVzIHRvIG5vdCBkbyBhbnl0aGluZyB1c2VmdWwu
CisgICAgICAgIC8vCisgICAgICAgIC8vIFRoZSBzZWNvbmQgY2FzZSBvbmx5IGhhcHBlbnMgaW4g
dGhlIEZUTC4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gVGhlcmVmb3JlLCB3ZSBwcmVmZXIgdGhl
IHN0YXR1cyBpbiB0aGUgRlRMIGFuZCB0aGUgaW5mbyBpbiB0aGUgREZHLgorICAgICAgICAvLwor
ICAgICAgICAvLyBMdWNraWx5LCB0aGlzIGNhc2UgZG9lc24ndCBtYXR0ZXIgZm9yIHRoZSBvdGhl
ciBJQ1N0YXR1c2VzLCBzaW5jZSB0aGV5IG5ldmVyIGRvIHRoZQorICAgICAgICAvLyBmYXN0LXBh
dGgtc2xvdy1wYXRoIGNvbnRyb2wtZmxvdy1kaWFtb25kIHN0eWxlIG9mIElDIGlubGluaW5nLiBJ
dCdzIGVpdGhlciBhbGwgZmFzdCBwYXRoCisgICAgICAgIC8vIG9yIGl0J3MgYSBmdWxsIElDLiBT
bywgZm9yIHRoZW0sIGlmIHRoZXJlIGlzIGFuIElDIHN0YXR1cyB0aGVuIGl0IG1lYW5zIGNhc2Ug
KDEpLgorICAgICAgICAKKyAgICAgICAgYm9vbCBjaGVja1N0YXR1c0ZpcnN0ID0gY29udGV4dC0+
b3B0aW1pemVkQ29kZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6RlRMSklUOworICAgICAg
ICAKKyAgICAgICAgYXV0byBjaGVja0luZm8gPSBbJl0gKCkgLT4gQ2FsbExpbmtTdGF0dXMgewor
ICAgICAgICAgICAgaWYgKCFzdGF0dXMuY2FsbExpbmtJbmZvKQorICAgICAgICAgICAgICAgIHJl
dHVybiBDYWxsTGlua1N0YXR1cygpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoQ2Fs
bExpbmtTdGF0dXNJbnRlcm5hbDo6dmVyYm9zZSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJI
YXZlIENhbGxMaW5rSW5mbyB3aXRoIENvZGVPcmlnaW4gPSAiLCBzdGF0dXMuY2FsbExpbmtJbmZv
LT5jb2RlT3JpZ2luKCksICJcbiIpOworICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxv
Y2tlcihjb250ZXh0LT5vcHRpbWl6ZWRDb2RlQmxvY2stPm1fbG9jayk7CisgICAgICAgICAgICBD
YWxsTGlua1N0YXR1cyByZXN1bHQgPSBjb21wdXRlRm9yKAorICAgICAgICAgICAgICAgIGxvY2tl
ciwgY29udGV4dC0+b3B0aW1pemVkQ29kZUJsb2NrLCAqc3RhdHVzLmNhbGxMaW5rSW5mbywgZXhp
dFNpdGVEYXRhLAorICAgICAgICAgICAgICAgIGNvZGVPcmlnaW4uZXhpdGluZ0lubGluZUtpbmQo
KSk7CisgICAgICAgICAgICBpZiAoQ2FsbExpbmtTdGF0dXNJbnRlcm5hbDo6dmVyYm9zZSkKKyAg
ICAgICAgICAgICAgICBkYXRhTG9nKCJHb3QgcmVzdWx0OiAiLCByZXN1bHQsICJcbiIpOworICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIGF1
dG8gY2hlY2tTdGF0dXMgPSBbJl0gKCkgLT4gQ2FsbExpbmtTdGF0dXMgeworICAgICAgICAgICAg
aWYgKCFzdGF0dXMuY2FsbFN0YXR1cykKKyAgICAgICAgICAgICAgICByZXR1cm4gQ2FsbExpbmtT
dGF0dXMoKTsKKyAgICAgICAgICAgIENhbGxMaW5rU3RhdHVzIHJlc3VsdCA9ICpzdGF0dXMuY2Fs
bFN0YXR1czsKKyAgICAgICAgICAgIGlmIChDYWxsTGlua1N0YXR1c0ludGVybmFsOjp2ZXJib3Nl
KQorICAgICAgICAgICAgICAgIGRhdGFMb2coIkhhdmUgY2FsbFN0YXR1czogIiwgcmVzdWx0LCAi
XG4iKTsKKyAgICAgICAgICAgIHJlc3VsdC5hY2NvdW50Rm9yRXhpdHMoZXhpdFNpdGVEYXRhLCBj
b2RlT3JpZ2luLmV4aXRpbmdJbmxpbmVLaW5kKCkpOworICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIGlmIChjaGVja1N0YXR1c0ZpcnN0KSB7
CisgICAgICAgICAgICBpZiAoQ2FsbExpbmtTdGF0dXMgcmVzdWx0ID0gY2hlY2tTdGF0dXMoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgaWYgKENhbGxMaW5r
U3RhdHVzIHJlc3VsdCA9IGNoZWNrSW5mbygpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
aWYgKENhbGxMaW5rU3RhdHVzIHJlc3VsdCA9IGNoZWNrSW5mbygpKQorICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICAgICAgaWYgKENhbGxMaW5rU3RhdHVzIHJlc3VsdCA9IGNoZWNrU3Rh
dHVzKCkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KLX0KLQotQ2FsbExpbmtT
dGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgQ29kZUJsb2NrKiBwcm9maWxl
ZEJsb2NrLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sCi0gICAgY29uc3QgQ2FsbExpbmtJbmZvTWFw
JiBiYXNlbGluZU1hcCwgY29uc3QgQ2FsbExpbmtTdGF0dXM6OkNvbnRleHRNYXAmIGRmZ01hcCkK
LXsKLSAgICBhdXRvIGl0ZXIgPSBkZmdNYXAuZmluZChjb2RlT3JpZ2luKTsKLSAgICBpZiAoaXRl
ciAhPSBkZmdNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiBpdGVyLT52YWx1ZTsKICAgICAKLSAg
ICByZXR1cm4gY29tcHV0ZUZvcihwcm9maWxlZEJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5k
ZXgsIGJhc2VsaW5lTWFwKTsKKyAgICBDYWxsTGlua1N0YXR1cyByZXN1bHQgPSBjb21wdXRlRm9y
KHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgYmFzZWxpbmVNYXAsIGV4
aXRTaXRlRGF0YSk7CisgICAgaWYgKENhbGxMaW5rU3RhdHVzSW50ZXJuYWw6OnZlcmJvc2UpCisg
ICAgICAgIGRhdGFMb2coIkNvbXB1dGVkIGZyb20gYmFzZWxpbmU6ICIsIHJlc3VsdCwgIlxuIik7
CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZCBDYWxsTGlua1N0YXR1czo6c2V0UHJvdmVu
Q29uc3RhbnRDYWxsZWUoQ2FsbFZhcmlhbnQgdmFyaWFudCkKQEAgLTMyNyw2ICszOTgsMjQgQEAg
dm9pZCBDYWxsTGlua1N0YXR1czo6bWFrZUNsb3N1cmVDYWxsKCkKICAgICBtX3ZhcmlhbnRzID0g
ZGVzcGVjaWZpZWRWYXJpYW50TGlzdChtX3ZhcmlhbnRzKTsKIH0KIAorYm9vbCBDYWxsTGlua1N0
YXR1czo6ZmluYWxpemUoKQoreworICAgIGZvciAoQ2FsbFZhcmlhbnQmIHZhcmlhbnQgOiBtX3Zh
cmlhbnRzKSB7CisgICAgICAgIGlmICghdmFyaWFudC5maW5hbGl6ZSgpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDYWxsTGlu
a1N0YXR1czo6ZmlsdGVyKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBtX3ZhcmlhbnRz
LnJlbW92ZUFsbE1hdGNoaW5nKAorICAgICAgICBbJl0gKENhbGxWYXJpYW50JiB2YXJpYW50KSAt
PiBib29sIHsKKyAgICAgICAgICAgIHZhcmlhbnQuZmlsdGVyKHZtLCB2YWx1ZSk7CisgICAgICAg
ICAgICByZXR1cm4gIXZhcmlhbnQ7CisgICAgICAgIH0pOworfQorCiB2b2lkIENhbGxMaW5rU3Rh
dHVzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgaWYgKCFpc1NldCgpKSB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0
dXMuaAkocmV2aXNpb24gMjMyNDQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNs
dWRlICJDYWxsVmFyaWFudC5oIgogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJD
b25jdXJyZW50SlNMb2NrLmgiCisjaW5jbHVkZSAiRXhpdEZsYWcuaCIKKyNpbmNsdWRlICJJQ1N0
YXR1c01hcC5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBA
IC02MCwzOSArNjIsMzMgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAgCi0gICAgc3RhdGlj
IENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoCi0gICAgICAgIENvZGVCbG9jayosIHVuc2lnbmVk
IGJ5dGVjb2RlSW5kZXgsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYpOwotCiAgICAgc3RydWN0IEV4
aXRTaXRlRGF0YSB7Ci0gICAgICAgIGJvb2wgdGFrZXNTbG93UGF0aCB7IGZhbHNlIH07Ci0gICAg
ICAgIGJvb2wgYmFkRnVuY3Rpb24geyBmYWxzZSB9OworICAgICAgICBFeGl0RmxhZyB0YWtlc1Ns
b3dQYXRoOworICAgICAgICBFeGl0RmxhZyBiYWRGdW5jdGlvbjsKICAgICB9OwogICAgIHN0YXRp
YyBFeGl0U2l0ZURhdGEgY29tcHV0ZUV4aXRTaXRlRGF0YShDb2RlQmxvY2sqLCB1bnNpZ25lZCBi
eXRlY29kZUluZGV4KTsKICAgICAKKyAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZv
cihDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBjb25zdCBJQ1N0YXR1c01hcCYs
IEV4aXRTaXRlRGF0YSk7CisgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoQ29k
ZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgY29uc3QgSUNTdGF0dXNNYXAmKTsKKwog
I2lmIEVOQUJMRShKSVQpCiAgICAgLy8gQ29tcHV0ZXMgdGhlIHN0YXR1cyBhc3N1bWluZyB0aGF0
IHdlIG5ldmVyIHRvb2sgc2xvdyBwYXRoIGFuZCBuZXZlciBwcmV2aW91c2x5CiAgICAgLy8gZXhp
dGVkLgogICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYsIENvZGVCbG9jayosIENhbGxMaW5rSW5mbyYpOworICAgIAorICAgIC8vIENv
bXB1dGVzIHRoZSBzdGF0dXMgYWNjb3VudGluZyBmb3IgZXhpdHMuCiAgICAgc3RhdGljIENhbGxM
aW5rU3RhdHVzIGNvbXB1dGVGb3IoCi0gICAgICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYs
IENvZGVCbG9jayosIENhbGxMaW5rSW5mbyYsIEV4aXRTaXRlRGF0YSk7CisgICAgICAgIGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayosIENhbGxMaW5rSW5mbyYsIEV4aXRTaXRl
RGF0YSwgRXhpdGluZ0lubGluZUtpbmQgPSBFeGl0RnJvbUFueUlubGluZUtpbmQpOwogI2VuZGlm
CiAgICAgCi0gICAgdHlwZWRlZiBIYXNoTWFwPENvZGVPcmlnaW4sIENhbGxMaW5rU3RhdHVzLCBD
b2RlT3JpZ2luQXBwcm94aW1hdGVIYXNoPiBDb250ZXh0TWFwOwotICAgIAotICAgIC8vIENvbXB1
dGVzIGFsbCBvZiB0aGUgc3RhdHVzZXMgb2YgdGhlIERGRyBjb2RlIGJsb2NrLiBEb2Vzbid0IGlu
Y2x1ZGUgc3RhdHVzZXMgdGhhdCBoYWQKLSAgICAvLyBubyBpbmZvcm1hdGlvbi4gQ3VycmVudGx5
IHdlIHVzZSB0aGlzIHdoZW4gY29tcGlsaW5nIEZUTCBjb2RlLCB0byBlbmFibGUgcG9seXZhcmlh
bnQKLSAgICAvLyBpbmxpbmluZy4KLSAgICBzdGF0aWMgdm9pZCBjb21wdXRlREZHU3RhdHVzZXMo
Q29kZUJsb2NrKiBkZmdDb2RlQmxvY2ssIENvbnRleHRNYXAmKTsKLSAgICAKLSAgICAvLyBIZWxw
ZXIgdGhhdCBmaXJzdCBjb25zdWx0cyB0aGUgQ29udGV4dE1hcCBhbmQgdGhlbiBkb2VzIGNvbXB1
dGVGb3IoKS4KICAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcigKLSAgICAgICAg
Q29kZUJsb2NrKiwgQ29kZU9yaWdpbiwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiwgY29uc3QgQ29u
dGV4dE1hcCYpOworICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBjb25zdCBJQ1N0YXR1
c01hcCYsIGNvbnN0IElDU3RhdHVzQ29udGV4dFN0YWNrJik7CiAgICAgCiAgICAgdm9pZCBzZXRQ
cm92ZW5Db25zdGFudENhbGxlZShDYWxsVmFyaWFudCk7CiAgICAgCiAgICAgYm9vbCBpc1NldCgp
IGNvbnN0IHsgcmV0dXJuICFtX3ZhcmlhbnRzLmlzRW1wdHkoKSB8fCBtX2NvdWxkVGFrZVNsb3dQ
YXRoOyB9CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQo
KTsgfQorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBpc1NldCgp
OyB9CiAgICAgCiAgICAgYm9vbCBjb3VsZFRha2VTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y291bGRUYWtlU2xvd1BhdGg7IH0KICAgICAKQEAgLTExMCw2ICsxMDYsMTAgQEAgcHVibGljOgog
ICAgIAogICAgIHVuc2lnbmVkIG1heE51bUFyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fbWF4
TnVtQXJndW1lbnRzOyB9CiAgICAgCisgICAgYm9vbCBmaW5hbGl6ZSgpOworICAgIAorICAgIHZv
aWQgZmlsdGVyKFZNJiwgSlNWYWx1ZSk7CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgpAQCAtMTIxLDYgKzEyMSw4IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENhbGxMaW5rSW5mbyYpOwogI2VuZGlm
CiAgICAgCisgICAgdm9pZCBhY2NvdW50Rm9yRXhpdHMoRXhpdFNpdGVEYXRhLCBFeGl0aW5nSW5s
aW5lS2luZCk7CisgICAgCiAgICAgQ2FsbFZhcmlhbnRMaXN0IG1fdmFyaWFudHM7CiAgICAgYm9v
bCBtX2NvdWxkVGFrZVNsb3dQYXRoIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNQcm92ZWQgeyBm
YWxzZSB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZh
cmlhbnQuY3BwCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbFZhcmlhbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDYgKzMxLDM1IEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCitib29sIENhbGxWYXJpYW50OjpmaW5hbGl6ZSgpCit7Cisg
ICAgaWYgKG1fY2FsbGVlICYmICFIZWFwOjppc01hcmtlZChtX2NhbGxlZSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDYWxsVmFyaWFudDo6Zmls
dGVyKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAoISp0aGlzKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgaWYgKCFpc0Nsb3N1cmVDYWxsKCkpIHsKKyAgICAgICAgaWYgKG5v
bkV4ZWN1dGFibGVDYWxsZWUoKSAhPSB2YWx1ZSkKKyAgICAgICAgICAgICp0aGlzID0gQ2FsbFZh
cmlhbnQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoSlNGdW5jdGlv
biogZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgdmFsdWUpKSB7Cisg
ICAgICAgIGlmIChmdW5jdGlvbi0+ZXhlY3V0YWJsZSgpID09IGV4ZWN1dGFibGUoKSkKKyAgICAg
ICAgICAgICp0aGlzID0gQ2FsbFZhcmlhbnQoZnVuY3Rpb24pOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICAqdGhpcyA9IENhbGxWYXJpYW50KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgCisgICAgKnRoaXMgPSBDYWxsVmFyaWFudCgpOworfQorCiB2b2lkIENhbGxWYXJpYW50Ojpk
dW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgaWYgKCEqdGhpcykgewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgJKHJldmlzaW9u
IDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgIHsKICAgICB9
CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsZWU7IH0K
KyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2NhbGxlZTsg
fQogICAgIAogICAgIC8vIElmIHRoaXMgdmFyaWFudCByZWZlcnMgdG8gYSBmdW5jdGlvbiwgY2hh
bmdlIGl0IHRvIHJlZmVyIHRvIGl0cyBleGVjdXRhYmxlLgogICAgIEFMV0FZU19JTkxJTkUgQ2Fs
bFZhcmlhbnQgZGVzcGVjaWZpZWRDbG9zdXJlKCkgY29uc3QKQEAgLTEzNiw2ICsxMzYsMTAgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCisgICAgYm9vbCBm
aW5hbGl6ZSgpOworICAgIAorICAgIHZvaWQgZmlsdGVyKFZNJiwgSlNWYWx1ZSk7CisgICAgCiAg
ICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OwogICAgIAogICAgIGJvb2wgaXNI
YXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MzgsMjQgKzIzOCwyMCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKCkKIAogdm9pZCBD
b2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0KQogewotICAgIFN0dWJJbmZv
TWFwIHN0dWJJbmZvczsKLSAgICBDYWxsTGlua0luZm9NYXAgY2FsbExpbmtJbmZvczsKLSAgICBn
ZXRTdHViSW5mb01hcChzdHViSW5mb3MpOwotICAgIGdldENhbGxMaW5rSW5mb01hcChjYWxsTGlu
a0luZm9zKTsKLSAgICBCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wQmxvY2sodGhpcywg
aW5zdHJ1Y3Rpb25zKCksIG91dCwgc3R1YkluZm9zLCBjYWxsTGlua0luZm9zKTsKKyAgICBJQ1N0
YXR1c01hcCBzdGF0dXNNYXA7CisgICAgZ2V0SUNTdGF0dXNNYXAoc3RhdHVzTWFwKTsKKyAgICBC
eXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wQmxvY2sodGhpcywgaW5zdHJ1Y3Rpb25zKCks
IG91dCwgc3RhdHVzTWFwKTsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmlu
dFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9u
KiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiBzdHViSW5mb3MsIGNvbnN0IENhbGxMaW5rSW5mb01h
cCYgY2FsbExpbmtJbmZvcykKK3ZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJl
YW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0
LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQogewotICAgIEJ5dGVjb2RlRHVtcGVyPENv
ZGVCbG9jaz46OmR1bXBCeXRlY29kZSh0aGlzLCBvdXQsIGJlZ2luLCBpdCwgc3R1YkluZm9zLCBj
YWxsTGlua0luZm9zKTsKKyAgICBCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wQnl0ZWNv
ZGUodGhpcywgb3V0LCBiZWdpbiwgaXQsIHN0YXR1c01hcCk7CiB9CiAKLXZvaWQgQ29kZUJsb2Nr
OjpkdW1wQnl0ZWNvZGUoCi0gICAgUHJpbnRTdHJlYW0mIG91dCwgdW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQsCi0gICAgY29uc3QgU3R1YkluZm9NYXAmIHN0dWJJbmZvcywgY29uc3QgQ2FsbExpbmtJ
bmZvTWFwJiBjYWxsTGlua0luZm9zKQordm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmlu
dFN0cmVhbSYgb3V0LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgSUNTdGF0dXNNYXAm
IHN0YXR1c01hcCkKIHsKICAgICBjb25zdCBJbnN0cnVjdGlvbiogaXQgPSAmaW5zdHJ1Y3Rpb25z
KClbYnl0ZWNvZGVPZmZzZXRdOwotICAgIGR1bXBCeXRlY29kZShvdXQsIGluc3RydWN0aW9ucygp
LmJlZ2luKCksIGl0LCBzdHViSW5mb3MsIGNhbGxMaW5rSW5mb3MpOworICAgIGR1bXBCeXRlY29k
ZShvdXQsIGluc3RydWN0aW9ucygpLmJlZ2luKCksIGl0LCBzdGF0dXNNYXApOwogfQogCiAjZGVm
aW5lIEZPUl9FQUNIX01FTUJFUl9WRUNUT1IobWFjcm8pIFwKQEAgLTExNjYsNiArMTE2Miw5IEBA
IHZvaWQgQ29kZUJsb2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhjb24KICNpZiBFTkFCTEUoREZH
X0pJVCkKICAgICBpZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpIHsKICAg
ICAgICAgREZHOjpDb21tb25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENvZGUtPmRmZ0NvbW1vbigp
OworICAgICAgICAKKyAgICAgICAgZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLm1hcmtJZkNo
ZWFwKHZpc2l0b3IpOworICAgICAgICAKICAgICAgICAgZm9yIChhdXRvJiB3ZWFrUmVmZXJlbmNl
IDogZGZnQ29tbW9uLT53ZWFrU3RydWN0dXJlUmVmZXJlbmNlcykKICAgICAgICAgICAgIHdlYWtS
ZWZlcmVuY2UtPm1hcmtJZkNoZWFwKHZpc2l0b3IpOwogCkBAIC0xNDE2LDU3ICsxNDE1LDQ1IEBA
IHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICAgICAgICAgZmluYWxp
emVCYXNlbGluZUpJVElubGluZUNhY2hlcygpOwogI2VuZGlmCiAKLSAgICBWTTo6U3BhY2VBbmRG
aW5hbGl6ZXJTZXQ6OmZpbmFsaXplclNldEZvcigqc3Vic3BhY2UoKSkucmVtb3ZlKHRoaXMpOwot
fQotCi12b2lkIENvZGVCbG9jazo6Z2V0U3R1YkluZm9NYXAoY29uc3QgQ29uY3VycmVudEpTTG9j
a2VyJiwgU3R1YkluZm9NYXAmIHJlc3VsdCkKLXsKLSNpZiBFTkFCTEUoSklUKQotICAgIGlmIChK
SVRDb2RlOjppc0pJVChqaXRUeXBlKCkpKQotICAgICAgICB0b0hhc2hNYXAobV9zdHViSW5mb3Ms
IGdldFN0cnVjdHVyZVN0dWJJbmZvQ29kZU9yaWdpbiwgcmVzdWx0KTsKLSNlbHNlCi0gICAgVU5V
U0VEX1BBUkFNKHJlc3VsdCk7Ci0jZW5kaWYKLX0KLQotdm9pZCBDb2RlQmxvY2s6OmdldFN0dWJJ
bmZvTWFwKFN0dWJJbmZvTWFwJiByZXN1bHQpCi17Ci0gICAgQ29uY3VycmVudEpTTG9ja2VyIGxv
Y2tlcihtX2xvY2spOwotICAgIGdldFN0dWJJbmZvTWFwKGxvY2tlciwgcmVzdWx0KTsKLX0KLQot
dm9pZCBDb2RlQmxvY2s6OmdldENhbGxMaW5rSW5mb01hcChjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImLCBDYWxsTGlua0luZm9NYXAmIHJlc3VsdCkKLXsKLSNpZiBFTkFCTEUoSklUKQotICAgIGlm
IChKSVRDb2RlOjppc0pJVChqaXRUeXBlKCkpKQotICAgICAgICB0b0hhc2hNYXAobV9jYWxsTGlu
a0luZm9zLCBnZXRDYWxsTGlua0luZm9Db2RlT3JpZ2luLCByZXN1bHQpOwotI2Vsc2UKLSAgICBV
TlVTRURfUEFSQU0ocmVzdWx0KTsKLSNlbmRpZgotfQorICAgIGlmIChKSVRDb2RlOjppc09wdGlt
aXppbmdKSVQoaml0VHlwZSgpKSkgeworICAgICAgICBERkc6OkNvbW1vbkRhdGEqIGRmZ0NvbW1v
biA9IG1faml0Q29kZS0+ZGZnQ29tbW9uKCk7CisgICAgICAgIGRmZ0NvbW1vbi0+cmVjb3JkZWRT
dGF0dXNlcy5maW5hbGl6ZSgpOworICAgIH0KIAotdm9pZCBDb2RlQmxvY2s6OmdldENhbGxMaW5r
SW5mb01hcChDYWxsTGlua0luZm9NYXAmIHJlc3VsdCkKLXsKLSAgICBDb25jdXJyZW50SlNMb2Nr
ZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgZ2V0Q2FsbExpbmtJbmZvTWFwKGxvY2tlciwgcmVzdWx0
KTsKKyAgICBWTTo6U3BhY2VBbmRGaW5hbGl6ZXJTZXQ6OmZpbmFsaXplclNldEZvcigqc3Vic3Bh
Y2UoKSkucmVtb3ZlKHRoaXMpOwogfQogCi12b2lkIENvZGVCbG9jazo6Z2V0QnlWYWxJbmZvTWFw
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5VmFsSW5mb01hcCYgcmVzdWx0KQordm9pZCBD
b2RlQmxvY2s6OmdldElDU3RhdHVzTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIElDU3Rh
dHVzTWFwJiByZXN1bHQpCiB7CiAjaWYgRU5BQkxFKEpJVCkKICAgICBpZiAoSklUQ29kZTo6aXNK
SVQoaml0VHlwZSgpKSkgewotICAgICAgICBmb3IgKGF1dG8qIGJ5VmFsSW5mbyA6IG1fYnlWYWxJ
bmZvcykKLSAgICAgICAgICAgIHJlc3VsdC5hZGQoQ29kZU9yaWdpbihieVZhbEluZm8tPmJ5dGVj
b2RlSW5kZXgpLCBieVZhbEluZm8pOworICAgICAgICBmb3IgKFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbyA6IG1fc3R1YkluZm9zKQorICAgICAgICAgICAgcmVzdWx0LmFkZChzdHViSW5mby0+
Y29kZU9yaWdpbiwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLnN0dWJJbmZvID0gc3R1Yklu
Zm87CisgICAgICAgIGZvciAoQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gOiBtX2NhbGxMaW5r
SW5mb3MpCisgICAgICAgICAgICByZXN1bHQuYWRkKGNhbGxMaW5rSW5mby0+Y29kZU9yaWdpbigp
LCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUuY2FsbExpbmtJbmZvID0gY2FsbExpbmtJbmZv
OworICAgICAgICBmb3IgKEJ5VmFsSW5mbyogYnlWYWxJbmZvIDogbV9ieVZhbEluZm9zKQorICAg
ICAgICAgICAgcmVzdWx0LmFkZChDb2RlT3JpZ2luKGJ5VmFsSW5mby0+Ynl0ZWNvZGVJbmRleCks
IElDU3RhdHVzKCkpLml0ZXJhdG9yLT52YWx1ZS5ieVZhbEluZm8gPSBieVZhbEluZm87CisgICAg
ICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0VHlwZSgpKSkgeworICAgICAgICAg
ICAgREZHOjpDb21tb25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENvZGUtPmRmZ0NvbW1vbigpOwor
ICAgICAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2Vz
LmNhbGxzKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQocGFpci5maXJzdCwgSUNTdGF0dXMo
KSkuaXRlcmF0b3ItPnZhbHVlLmNhbGxTdGF0dXMgPSBwYWlyLnNlY29uZC5nZXQoKTsKKyAgICAg
ICAgICAgIGZvciAoYXV0byYgcGFpciA6IGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5nZXRz
KQorICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQocGFpci5maXJzdCwgSUNTdGF0dXMoKSkuaXRl
cmF0b3ItPnZhbHVlLmdldFN0YXR1cyA9IHBhaXIuc2Vjb25kLmdldCgpOworICAgICAgICAgICAg
Zm9yIChhdXRvJiBwYWlyIDogZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLnB1dHMpCisgICAg
ICAgICAgICAgICAgcmVzdWx0LmFkZChwYWlyLmZpcnN0LCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+
dmFsdWUucHV0U3RhdHVzID0gcGFpci5zZWNvbmQuZ2V0KCk7CisgICAgICAgICAgICBmb3IgKGF1
dG8mIHBhaXIgOiBkZmdDb21tb24tPnJlY29yZGVkU3RhdHVzZXMuaW5zKQorICAgICAgICAgICAg
ICAgIHJlc3VsdC5hZGQocGFpci5maXJzdCwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLmlu
U3RhdHVzID0gcGFpci5zZWNvbmQuZ2V0KCk7CisgICAgICAgIH0KICAgICB9CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShyZXN1bHQpOwogI2VuZGlmCiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpnZXRC
eVZhbEluZm9NYXAoQnlWYWxJbmZvTWFwJiByZXN1bHQpCit2b2lkIENvZGVCbG9jazo6Z2V0SUNT
dGF0dXNNYXAoSUNTdGF0dXNNYXAmIHJlc3VsdCkKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIg
bG9ja2VyKG1fbG9jayk7Ci0gICAgZ2V0QnlWYWxJbmZvTWFwKGxvY2tlciwgcmVzdWx0KTsKKyAg
ICBnZXRJQ1N0YXR1c01hcChsb2NrZXIsIHJlc3VsdCk7CiB9CiAKICNpZiBFTkFCTEUoSklUKQpA
QCAtMTUzMyw3ICsxNTIwLDcgQEAgdm9pZCBDb2RlQmxvY2s6OnJlc2V0SklURGF0YSgpCiAgICAg
CiAgICAgLy8gV2UgY2FuIGNsZWFyIHRoZXNlIGJlY2F1c2Ugbm8gb3RoZXIgdGhyZWFkIHdpbGwg
aGF2ZSByZWZlcmVuY2VzIHRvIGFueSBzdHViIGluZm9zLCBjYWxsCiAgICAgLy8gbGluayBpbmZv
cywgb3IgYnkgdmFsIGluZm9zIGlmIHdlIGRvbid0IGhhdmUgSklUIGNvZGUuIEF0dGVtcHRzIHRv
IHF1ZXJ5IHRoZXNlIGRhdGEKLSAgICAvLyBzdHJ1Y3R1cmVzIHVzaW5nIHRoZSBjb25jdXJyZW50
IEFQSSAoZ2V0U3R1YkluZm9NYXAgYW5kIGZyaWVuZHMpIHdpbGwgcmV0dXJuIG5vdGhpbmcgaWYg
d2UKKyAgICAvLyBzdHJ1Y3R1cmVzIHVzaW5nIHRoZSBjb25jdXJyZW50IEFQSSAoZ2V0SUNTdGF0
dXNNYXAgYW5kIGZyaWVuZHMpIHdpbGwgcmV0dXJuIG5vdGhpbmcgaWYgd2UKICAgICAvLyBkb24n
dCBoYXZlIEpJVCBjb2RlLgogICAgIG1fc3R1YkluZm9zLmNsZWFyKCk7CiAgICAgbV9jYWxsTGlu
a0luZm9zLmNsZWFyKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNs
dWRlICJFeHByZXNzaW9uUmFuZ2VJbmZvLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRhYmxl
LmgiCiAjaW5jbHVkZSAiSGFuZGxlckluZm8uaCIKKyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgog
I2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUg
IkpJVENvZGVNYXAuaCIKQEAgLTk2LDggKzk3LDYgQEAgZW51bSBjbGFzcyBBY2Nlc3NUeXBlIDog
aW50OF90OwogCiBzdHJ1Y3QgQXJpdGhQcm9maWxlOwogCi10eXBlZGVmIEhhc2hNYXA8Q29kZU9y
aWdpbiwgU3RydWN0dXJlU3R1YkluZm8qLCBDb2RlT3JpZ2luQXBwcm94aW1hdGVIYXNoPiBTdHVi
SW5mb01hcDsKLQogZW51bSBSZW9wdGltaXphdGlvbk1vZGUgeyBEb250Q291bnRSZW9wdGltaXph
dGlvbiwgQ291bnRSZW9wdGltaXphdGlvbiB9OwogCiBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMg
SlNDZWxsIHsKQEAgLTE5Niw4ICsxOTUsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGR1bXBCeXRl
Y29kZSgpOwogICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJik7Ci0gICAgdm9pZCBk
dW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBj
b25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBTdHViSW5mb01hcCYgPSBTdHViSW5mb01hcCgp
LCBjb25zdCBDYWxsTGlua0luZm9NYXAmID0gQ2FsbExpbmtJbmZvTWFwKCkpOwotICAgIHZvaWQg
ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBj
b25zdCBTdHViSW5mb01hcCYgPSBTdHViSW5mb01hcCgpLCBjb25zdCBDYWxsTGlua0luZm9NYXAm
ID0gQ2FsbExpbmtJbmZvTWFwKCkpOworICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFt
JiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwg
Y29uc3QgSUNTdGF0dXNNYXAmID0gSUNTdGF0dXNNYXAoKSk7CisgICAgdm9pZCBkdW1wQnl0ZWNv
ZGUoUHJpbnRTdHJlYW0mIG91dCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IElDU3Rh
dHVzTWFwJiA9IElDU3RhdHVzTWFwKCkpOwogCiAgICAgdm9pZCBkdW1wRXhjZXB0aW9uSGFuZGxl
cnMoUHJpbnRTdHJlYW0mKTsKICAgICB2b2lkIHByaW50U3RydWN0dXJlcyhQcmludFN0cmVhbSYs
IGNvbnN0IEluc3RydWN0aW9uKik7CkBAIC0yMzcsMTQgKzIzNiw4IEBAIHB1YmxpYzoKIAogICAg
IHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IGJ5dGVjb2RlT2Zmc2V0RnJvbUNhbGxTaXRlSW5kZXgo
Q2FsbFNpdGVJbmRleCk7CiAKLSAgICB2b2lkIGdldFN0dWJJbmZvTWFwKGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYsIFN0dWJJbmZvTWFwJiByZXN1bHQpOwotICAgIHZvaWQgZ2V0U3R1YkluZm9N
YXAoU3R1YkluZm9NYXAmIHJlc3VsdCk7Ci0gICAgCi0gICAgdm9pZCBnZXRDYWxsTGlua0luZm9N
YXAoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ2FsbExpbmtJbmZvTWFwJiByZXN1bHQpOwot
ICAgIHZvaWQgZ2V0Q2FsbExpbmtJbmZvTWFwKENhbGxMaW5rSW5mb01hcCYgcmVzdWx0KTsKLQot
ICAgIHZvaWQgZ2V0QnlWYWxJbmZvTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5VmFs
SW5mb01hcCYgcmVzdWx0KTsKLSAgICB2b2lkIGdldEJ5VmFsSW5mb01hcChCeVZhbEluZm9NYXAm
IHJlc3VsdCk7CisgICAgdm9pZCBnZXRJQ1N0YXR1c01hcChjb25zdCBDb25jdXJyZW50SlNMb2Nr
ZXImLCBJQ1N0YXR1c01hcCYgcmVzdWx0KTsKKyAgICB2b2lkIGdldElDU3RhdHVzTWFwKElDU3Rh
dHVzTWFwJiByZXN1bHQpOwogICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgSklUQWRkSUMqIGFk
ZEpJVEFkZElDKEFyaXRoUHJvZmlsZSosIEluc3RydWN0aW9uKik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCShyZXZpc2lvbiAyMzI0NDEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC00Niw3ICs0Niw3IEBAIHVuc2lnbmVkIENvZGVPcmlnaW46OmlubGluZURl
cHRoKCkgY29uc3QKICAgICByZXR1cm4gaW5saW5lRGVwdGhGb3JDYWxsRnJhbWUoaW5saW5lQ2Fs
bEZyYW1lKTsKIH0KIAotYm9vbCBDb2RlT3JpZ2luOjppc0FwcHJveGltYXRlbHlFcXVhbFRvKGNv
bnN0IENvZGVPcmlnaW4mIG90aGVyKSBjb25zdAorYm9vbCBDb2RlT3JpZ2luOjppc0FwcHJveGlt
YXRlbHlFcXVhbFRvKGNvbnN0IENvZGVPcmlnaW4mIG90aGVyLCBJbmxpbmVDYWxsRnJhbWUqIHRl
cm1pbmFsKSBjb25zdAogewogICAgIENvZGVPcmlnaW4gYSA9ICp0aGlzOwogICAgIENvZGVPcmln
aW4gYiA9IG90aGVyOwpAQCAtNjgsMTAgKzY4LDEyIEBAIGJvb2wgQ29kZU9yaWdpbjo6aXNBcHBy
b3hpbWF0ZWx5RXF1YWxUbygKICAgICAgICAgaWYgKGEuYnl0ZWNvZGVJbmRleCAhPSBiLmJ5dGVj
b2RlSW5kZXgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgICAgICBp
ZiAoKCEhYS5pbmxpbmVDYWxsRnJhbWUpICE9ICghIWIuaW5saW5lQ2FsbEZyYW1lKSkKKyAgICAg
ICAgYm9vbCBhSGFzSW5saW5lQ2FsbEZyYW1lID0gISFhLmlubGluZUNhbGxGcmFtZSAmJiBhLmlu
bGluZUNhbGxGcmFtZSAhPSB0ZXJtaW5hbDsKKyAgICAgICAgYm9vbCBiSGFzSW5saW5lQ2FsbEZy
YW1lID0gISFiLmlubGluZUNhbGxGcmFtZTsKKyAgICAgICAgaWYgKGFIYXNJbmxpbmVDYWxsRnJh
bWUgIT0gYkhhc0lubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgCi0gICAgICAgIGlmICghYS5pbmxpbmVDYWxsRnJhbWUpCisgICAgICAgIGlmICghYUhh
c0lubGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAKICAg
ICAgICAgaWYgKGEuaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay5nZXQoKSAhPSBi
LmlubGluZUNhbGxGcmFtZS0+YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkpCkBAIC04Miw3ICs4NCw3
IEBAIGJvb2wgQ29kZU9yaWdpbjo6aXNBcHByb3hpbWF0ZWx5RXF1YWxUbygKICAgICB9CiB9CiAK
LXVuc2lnbmVkIENvZGVPcmlnaW46OmFwcHJveGltYXRlSGFzaCgpIGNvbnN0Cit1bnNpZ25lZCBD
b2RlT3JpZ2luOjphcHByb3hpbWF0ZUhhc2goSW5saW5lQ2FsbEZyYW1lKiB0ZXJtaW5hbCkgY29u
c3QKIHsKICAgICBpZiAoIWlzU2V0KCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtOTcsNiArOTks
OSBAQCB1bnNpZ25lZCBDb2RlT3JpZ2luOjphcHByb3hpbWF0ZUhhc2goKSBjCiAgICAgICAgIGlm
ICghY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgICAgICAKKyAgICAgICAgaWYgKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lID09IHRl
cm1pbmFsKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgCiAgICAgICAgIHJl
c3VsdCArPSBXVEY6OlB0ckhhc2g8SlNDZWxsKj46Omhhc2goY29kZU9yaWdpbi5pbmxpbmVDYWxs
RnJhbWUtPmJhc2VsaW5lQ29kZUJsb2NrLmdldCgpKTsKICAgICAgICAgCiAgICAgICAgIGNvZGVP
cmlnaW4gPSBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+ZGlyZWN0Q2FsbGVyOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCShyZXZpc2lvbiAy
MzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJDb2RlQmxvY2tIYXNoLmgiCisjaW5jbHVkZSAiRXhpdGluZ0lubGluZUtpbmQuaCIKICNpbmNs
dWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Q
cmludFN0cmVhbS5oPgpAQCAtODgsMTUgKzg5LDIwIEBAIHN0cnVjdCBDb2RlT3JpZ2luIHsKICAg
ICAKICAgICBzdGF0aWMgdW5zaWduZWQgaW5saW5lRGVwdGhGb3JDYWxsRnJhbWUoSW5saW5lQ2Fs
bEZyYW1lKik7CiAgICAgCisgICAgRXhpdGluZ0lubGluZUtpbmQgZXhpdGluZ0lubGluZUtpbmQo
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGlubGluZUNhbGxGcmFtZSA/IEV4aXRGcm9t
SW5saW5lZCA6IEV4aXRGcm9tTm90SW5saW5lZDsKKyAgICB9CisgICAgCiAgICAgdW5zaWduZWQg
aGFzaCgpIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2RlT3JpZ2luJiBvdGhl
cikgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvZGVPcmlnaW4mIG90aGVyKSBj
b25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogICAgIAogICAgIC8vIFRoaXMgY2hl
Y2tzIGlmIHRoZSB0d28gY29kZSBvcmlnaW5zIGNvcnJlc3BvbmQgdG8gdGhlIHNhbWUgc3RhY2sg
dHJhY2Ugc25pcHBldHMsCiAgICAgLy8gYnV0IGlnbm9yZSB3aGV0aGVyIHRoZSBJbmxpbmVDYWxs
RnJhbWUncyBhcmUgaWRlbnRpY2FsLgotICAgIGJvb2wgaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhj
b25zdCBDb2RlT3JpZ2luJiBvdGhlcikgY29uc3Q7CisgICAgYm9vbCBpc0FwcHJveGltYXRlbHlF
cXVhbFRvKGNvbnN0IENvZGVPcmlnaW4mIG90aGVyLCBJbmxpbmVDYWxsRnJhbWUqIHRlcm1pbmFs
ID0gbnVsbHB0cikgY29uc3Q7CiAgICAgCi0gICAgdW5zaWduZWQgYXBwcm94aW1hdGVIYXNoKCkg
Y29uc3Q7CisgICAgdW5zaWduZWQgYXBwcm94aW1hdGVIYXNoKElubGluZUNhbGxGcmFtZSogdGVy
bWluYWwgPSBudWxscHRyKSBjb25zdDsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlv
bj4KICAgICB2b2lkIHdhbGtVcElubGluZVN0YWNrKGNvbnN0IEZ1bmN0aW9uJik7CkBAIC0xMDYs
NyArMTEyLDcgQEAgc3RydWN0IENvZGVPcmlnaW4gewogICAgIAogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIHZvaWQgZHVtcEluQ29udGV4
dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0KikgY29uc3Q7Ci0KKyAgICAKIHByaXZhdGU6CiAg
ICAgc3RhdGljIElubGluZUNhbGxGcmFtZSogZGVsZXRlZE1hcmtlcigpCiAgICAgewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3Bw
CShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZH
RXhpdFByb2ZpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogdm9pZCBGcmVxdWVudEV4aXRTaXRlOjpkdW1wKFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KCJiYyMiLCBtX2J5dGVjb2Rl
T2Zmc2V0LCAiOiAiLCBtX2tpbmQsICIvIiwgbV9qaXRUeXBlKTsKKyAgICBvdXQucHJpbnQoImJj
IyIsIG1fYnl0ZWNvZGVPZmZzZXQsICI6ICIsIG1fa2luZCwgIi8iLCBtX2ppdFR5cGUsICIvIiwg
bV9pbmxpbmVLaW5kKTsKIH0KIAogRXhpdFByb2ZpbGU6OkV4aXRQcm9maWxlKCkgeyB9CkBAIC00
Myw4ICs0MywxMCBAQCBFeGl0UHJvZmlsZTo6fkV4aXRQcm9maWxlKCkgeyB9CiAKIGJvb2wgRXhp
dFByb2ZpbGU6OmFkZChDb2RlQmxvY2sqIG93bmVyLCBjb25zdCBGcmVxdWVudEV4aXRTaXRlJiBz
aXRlKQogeworICAgIFJFTEVBU0VfQVNTRVJUKHNpdGUuaml0VHlwZSgpICE9IEV4aXRGcm9tQW55
dGhpbmcpOworICAgIFJFTEVBU0VfQVNTRVJUKHNpdGUuaW5saW5lS2luZCgpICE9IEV4aXRGcm9t
QW55SW5saW5lS2luZCk7CisKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG93bmVyLT51
bmxpbmtlZENvZGVCbG9jaygpLT5tX2xvY2spOwotICAgIEFTU0VSVChzaXRlLmppdFR5cGUoKSAh
PSBFeGl0RnJvbUFueXRoaW5nKTsKIAogICAgIENPREVCTE9DS19MT0dfRVZFTlQob3duZXIsICJm
cmVxdWVudEV4aXQiLCAoc2l0ZSkpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgJKHJldmlzaW9uIDIzMjQ0MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE0LCAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ29uY3VycmVudEpTTG9j
ay5oIgogI2luY2x1ZGUgIkV4aXRLaW5kLmgiCisjaW5jbHVkZSAiRXhpdGluZ0lubGluZUtpbmQu
aCIKICNpbmNsdWRlICJFeGl0aW5nSklUVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNDEsNiArNDIsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIDogbV9ieXRlY29kZU9mZnNldCgwKSAvLyAwID0gZW1wdHkgdmFsdWUKICAgICAgICAgLCBt
X2tpbmQoRXhpdEtpbmRVbnNldCkKICAgICAgICAgLCBtX2ppdFR5cGUoRXhpdEZyb21Bbnl0aGlu
ZykKKyAgICAgICAgLCBtX2lubGluZUtpbmQoRXhpdEZyb21BbnlJbmxpbmVLaW5kKQogICAgIHsK
ICAgICB9CiAgICAgCkBAIC00OCwxMyArNTAsMTUgQEAgcHVibGljOgogICAgICAgICA6IG1fYnl0
ZWNvZGVPZmZzZXQoMSkgLy8gMSA9IGRlbGV0ZWQgdmFsdWUKICAgICAgICAgLCBtX2tpbmQoRXhp
dEtpbmRVbnNldCkKICAgICAgICAgLCBtX2ppdFR5cGUoRXhpdEZyb21Bbnl0aGluZykKKyAgICAg
ICAgLCBtX2lubGluZUtpbmQoRXhpdEZyb21BbnlJbmxpbmVLaW5kKQogICAgIHsKICAgICB9CiAg
ICAgCi0gICAgZXhwbGljaXQgRnJlcXVlbnRFeGl0U2l0ZSh1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCwgRXhpdEtpbmQga2luZCwgRXhpdGluZ0pJVFR5cGUgaml0VHlwZSA9IEV4aXRGcm9tQW55dGhp
bmcpCisgICAgZXhwbGljaXQgRnJlcXVlbnRFeGl0U2l0ZSh1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCwgRXhpdEtpbmQga2luZCwgRXhpdGluZ0pJVFR5cGUgaml0VHlwZSA9IEV4aXRGcm9tQW55dGhp
bmcsIEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQgPSBFeGl0RnJvbUFueUlubGluZUtpbmQp
CiAgICAgICAgIDogbV9ieXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkKICAgICAgICAgLCBt
X2tpbmQoa2luZCkKICAgICAgICAgLCBtX2ppdFR5cGUoaml0VHlwZSkKKyAgICAgICAgLCBtX2lu
bGluZUtpbmQoaW5saW5lS2luZCkKICAgICB7CiAgICAgICAgIGlmIChtX2tpbmQgPT0gQXJndW1l
bnRzRXNjYXBlZCkgewogICAgICAgICAgICAgLy8gQ291bnQgdGhpcyBvbmUgZ2xvYmFsbHkuIEl0
IGRvZXNuJ3QgbWF0dGVyIHdoZXJlIGluIHRoZSBjb2RlIGJsb2NrIHRoZSBhcmd1bWVudHMgZXhj
YXBlZDsKQEAgLTY1LDEwICs2OSwxMSBAQCBwdWJsaWM6CiAgICAgCiAgICAgLy8gVXNlIHRoaXMg
Y29uc3RydWN0b3IgaWYgeW91IHdpc2ggZm9yIHRoZSBleGl0IHNpdGUgdG8gYmUgY291bnRlZCBn
bG9iYWxseSB3aXRoaW4gaXRzCiAgICAgLy8gY29kZSBibG9jay4KLSAgICBleHBsaWNpdCBGcmVx
dWVudEV4aXRTaXRlKEV4aXRLaW5kIGtpbmQsIEV4aXRpbmdKSVRUeXBlIGppdFR5cGUgPSBFeGl0
RnJvbUFueXRoaW5nKQorICAgIGV4cGxpY2l0IEZyZXF1ZW50RXhpdFNpdGUoRXhpdEtpbmQga2lu
ZCwgRXhpdGluZ0pJVFR5cGUgaml0VHlwZSA9IEV4aXRGcm9tQW55dGhpbmcsIEV4aXRpbmdJbmxp
bmVLaW5kIGlubGluZUtpbmQgPSBFeGl0RnJvbUFueUlubGluZUtpbmQpCiAgICAgICAgIDogbV9i
eXRlY29kZU9mZnNldCgwKQogICAgICAgICAsIG1fa2luZChraW5kKQogICAgICAgICAsIG1faml0
VHlwZShqaXRUeXBlKQorICAgICAgICAsIG1faW5saW5lS2luZChpbmxpbmVLaW5kKQogICAgIHsK
ICAgICB9CiAgICAgCkBAIC04MSw3ICs4Niw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJl
dHVybiBtX2J5dGVjb2RlT2Zmc2V0ID09IG90aGVyLm1fYnl0ZWNvZGVPZmZzZXQKICAgICAgICAg
ICAgICYmIG1fa2luZCA9PSBvdGhlci5tX2tpbmQKLSAgICAgICAgICAgICYmIG1faml0VHlwZSA9
PSBvdGhlci5tX2ppdFR5cGU7CisgICAgICAgICAgICAmJiBtX2ppdFR5cGUgPT0gb3RoZXIubV9q
aXRUeXBlCisgICAgICAgICAgICAmJiBtX2lubGluZUtpbmQgPT0gb3RoZXIubV9pbmxpbmVLaW5k
OwogICAgIH0KICAgICAKICAgICBib29sIHN1YnN1bWVzKGNvbnN0IEZyZXF1ZW50RXhpdFNpdGUm
IG90aGVyKSBjb25zdApAQCAtOTAsMTkgKzk2LDI0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgaWYgKG1fa2luZCAhPSBvdGhlci5tX2tpbmQpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChtX2ppdFR5cGUgPT0gRXhpdEZyb21Bbnl0
aGluZykKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICByZXR1cm4gbV9qaXRUeXBl
ID09IG90aGVyLm1faml0VHlwZTsKKyAgICAgICAgaWYgKG1faml0VHlwZSAhPSBFeGl0RnJvbUFu
eXRoaW5nCisgICAgICAgICAgICAmJiBtX2ppdFR5cGUgIT0gb3RoZXIubV9qaXRUeXBlKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAobV9pbmxpbmVLaW5kICE9IEV4aXRG
cm9tQW55SW5saW5lS2luZAorICAgICAgICAgICAgJiYgbV9pbmxpbmVLaW5kICE9IG90aGVyLm1f
aW5saW5lS2luZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogICAgIAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAgIHsKLSAgICAg
ICAgcmV0dXJuIFdURjo6aW50SGFzaChtX2J5dGVjb2RlT2Zmc2V0KSArIG1fa2luZCArIHN0YXRp
Y19jYXN0PHN0ZDo6dW5kZXJseWluZ190eXBlX3Q8RXhpdGluZ0pJVFR5cGU+PihtX2ppdFR5cGUp
ICogNzsKKyAgICAgICAgcmV0dXJuIFdURjo6aW50SGFzaChtX2J5dGVjb2RlT2Zmc2V0KSArIG1f
a2luZCArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2ppdFR5cGUpICogNyArIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtX2lubGluZUtpbmQpICogMTE7CiAgICAgfQogICAgIAogICAgIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9ieXRlY29kZU9mZnNldDsgfQogICAg
IEV4aXRLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KICAgICBFeGl0aW5nSklU
VHlwZSBqaXRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9qaXRUeXBlOyB9CisgICAgRXhpdGluZ0lu
bGluZUtpbmQgaW5saW5lS2luZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lS2luZDsgfQogICAg
IAogICAgIEZyZXF1ZW50RXhpdFNpdGUgd2l0aEpJVFR5cGUoRXhpdGluZ0pJVFR5cGUgaml0VHlw
ZSkgY29uc3QKICAgICB7CkBAIC0xMTEsNiArMTIyLDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBGcmVxdWVudEV4aXRTaXRlIHdpdGhJbmxpbmVLaW5k
KEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQpIGNvbnN0CisgICAgeworICAgICAgICBGcmVx
dWVudEV4aXRTaXRlIHJlc3VsdCA9ICp0aGlzOworICAgICAgICByZXN1bHQubV9pbmxpbmVLaW5k
ID0gaW5saW5lS2luZDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBib29s
IGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBt
X2tpbmQgPT0gRXhpdEtpbmRVbnNldCAmJiBtX2J5dGVjb2RlT2Zmc2V0OwpAQCAtMTIyLDYgKzE0
MCw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9ieXRlY29kZU9mZnNldDsKICAgICBFeGl0
S2luZCBtX2tpbmQ7CiAgICAgRXhpdGluZ0pJVFR5cGUgbV9qaXRUeXBlOworICAgIEV4aXRpbmdJ
bmxpbmVLaW5kIG1faW5saW5lS2luZDsKIH07CiAKIHN0cnVjdCBGcmVxdWVudEV4aXRTaXRlSGFz
aCB7CkBAIC0xOTIsMTAgKzIxMSwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNFeGl0U2l0ZShj
b25zdCBGcmVxdWVudEV4aXRTaXRlJiBzaXRlKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKHNp
dGUuaml0VHlwZSgpID09IEV4aXRGcm9tQW55dGhpbmcpIHsKLSAgICAgICAgICAgIHJldHVybiBo
YXNFeGl0U2l0ZShzaXRlLndpdGhKSVRUeXBlKEV4aXRGcm9tREZHKSkKLSAgICAgICAgICAgICAg
ICB8fCBoYXNFeGl0U2l0ZShzaXRlLndpdGhKSVRUeXBlKEV4aXRGcm9tRlRMKSk7CisgICAgICAg
ICAgICByZXR1cm4gaGFzRXhpdFNpdGVXaXRoU3BlY2lmaWNKSVRUeXBlKHNpdGUud2l0aEpJVFR5
cGUoRXhpdEZyb21ERkcpKQorICAgICAgICAgICAgICAgIHx8IGhhc0V4aXRTaXRlV2l0aFNwZWNp
ZmljSklUVHlwZShzaXRlLndpdGhKSVRUeXBlKEV4aXRGcm9tRlRMKSk7CiAgICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIG1fZnJlcXVlbnRFeGl0U2l0ZXMuZmluZChzaXRlKSAhPSBtX2ZyZXF1ZW50
RXhpdFNpdGVzLmVuZCgpOworICAgICAgICByZXR1cm4gaGFzRXhpdFNpdGVXaXRoU3BlY2lmaWNK
SVRUeXBlKHNpdGUpOwogICAgIH0KICAgICAKICAgICBib29sIGhhc0V4aXRTaXRlKEV4aXRLaW5k
IGtpbmQpIGNvbnN0CkBAIC0yMDgsNiArMjI3LDIwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGhhc0V4aXRTaXRlKEZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwga2luZCkpOwogICAg
IH0KIHByaXZhdGU6CisgICAgYm9vbCBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0pJVFR5cGUoY29u
c3QgRnJlcXVlbnRFeGl0U2l0ZSYgc2l0ZSkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChzaXRl
LmlubGluZUtpbmQoKSA9PSBFeGl0RnJvbUFueUlubGluZUtpbmQpIHsKKyAgICAgICAgICAgIHJl
dHVybiBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0lubGluZUtpbmQoc2l0ZS53aXRoSW5saW5lS2lu
ZChFeGl0RnJvbU5vdElubGluZWQpKQorICAgICAgICAgICAgICAgIHx8IGhhc0V4aXRTaXRlV2l0
aFNwZWNpZmljSW5saW5lS2luZChzaXRlLndpdGhJbmxpbmVLaW5kKEV4aXRGcm9tSW5saW5lZCkp
OworICAgICAgICB9CisgICAgICAgIHJldHVybiBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0lubGlu
ZUtpbmQoc2l0ZSk7CisgICAgfQorICAgIAorICAgIGJvb2wgaGFzRXhpdFNpdGVXaXRoU3BlY2lm
aWNJbmxpbmVLaW5kKGNvbnN0IEZyZXF1ZW50RXhpdFNpdGUmIHNpdGUpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gbV9mcmVxdWVudEV4aXRTaXRlcy5maW5kKHNpdGUpICE9IG1fZnJlcXVl
bnRFeGl0U2l0ZXMuZW5kKCk7CisgICAgfQorICAgIAogICAgIEhhc2hTZXQ8RnJlcXVlbnRFeGl0
U2l0ZT4gbV9mcmVxdWVudEV4aXRTaXRlczsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9FeGl0RmxhZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0V4aXRGbGFnLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEZsYWcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkV4aXRGbGFnLmgiCisKKyNpbmNsdWRlIDx3
dGYvQ29tbWFQcmludGVyLmg+CisKK25hbWVzcGFjZSBKU0MgeworCit2b2lkIEV4aXRGbGFnOjpk
dW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgaWYgKCFtX2JpdHMpIHsKKyAgICAg
ICAgb3V0LnByaW50KCJmYWxzZSIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAg
IENvbW1hUHJpbnRlciBjb21tYSgifCIpOworICAgIGlmIChpc1NldChFeGl0RnJvbU5vdElubGlu
ZWQpKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICJub3RJbmxpbmVkIik7CisgICAgaWYgKGlz
U2V0KEV4aXRGcm9tSW5saW5lZCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgImlubGluZWQi
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGl0RmxhZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9FeGl0RmxhZy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9FeGl0RmxhZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiRXhpdGluZ0lubGluZUtpbmQuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIEV4aXRGbGFnIHsKK3B1YmxpYzoKKyAgICBFeGl0RmxhZygpIHsgfQorICAgIAor
ICAgIEV4aXRGbGFnKGJvb2wgdmFsdWUsIEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQpCisg
ICAgeworICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAK
KyAgICAgICAgc3dpdGNoIChpbmxpbmVLaW5kKSB7CisgICAgICAgIGNhc2UgRXhpdEZyb21BbnlJ
bmxpbmVLaW5kOgorICAgICAgICAgICAgbV9iaXRzID0gdHJ1ZU5vdElubGluZWQgfCB0cnVlSW5s
aW5lZDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEV4aXRGcm9tTm90SW5saW5l
ZDoKKyAgICAgICAgICAgIG1fYml0cyA9IHRydWVOb3RJbmxpbmVkOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgRXhpdEZyb21JbmxpbmVkOgorICAgICAgICAgICAgbV9iaXRzID0g
dHJ1ZUlubGluZWQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICAK
KyAgICBFeGl0RmxhZyBvcGVyYXRvcnwoY29uc3QgRXhpdEZsYWcmIG90aGVyKSBjb25zdAorICAg
IHsKKyAgICAgICAgRXhpdEZsYWcgcmVzdWx0OworICAgICAgICByZXN1bHQubV9iaXRzID0gbV9i
aXRzIHwgb3RoZXIubV9iaXRzOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAK
KyAgICBFeGl0RmxhZyYgb3BlcmF0b3J8PShjb25zdCBFeGl0RmxhZyYgb3RoZXIpCisgICAgewor
ICAgICAgICAqdGhpcyA9ICp0aGlzIHwgb3RoZXI7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAg
ICB9CisgICAgCisgICAgRXhpdEZsYWcgb3BlcmF0b3ImKGNvbnN0IEV4aXRGbGFnJiBvdGhlcikg
Y29uc3QKKyAgICB7CisgICAgICAgIEV4aXRGbGFnIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1f
Yml0cyA9IG1fYml0cyAmIG90aGVyLm1fYml0czsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CisgICAgCisgICAgRXhpdEZsYWcmIG9wZXJhdG9yJj0oY29uc3QgRXhpdEZsYWcmIG90aGVy
KQorICAgIHsKKyAgICAgICAgKnRoaXMgPSAqdGhpcyAmIG90aGVyOworICAgICAgICByZXR1cm4g
KnRoaXM7CisgICAgfQorICAgIAorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuICEhbV9iaXRzOworICAgIH0KKyAgICAKKyAgICBib29sIGlz
U2V0KEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gISEoKnRoaXMgJiBFeGl0RmxhZyh0cnVlLCBpbmxpbmVLaW5kKSk7CisgICAgfQorICAg
IAorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAg
ICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgdHJ1ZU5vdElubGluZWQgPSAxOworICAgIHN0YXRp
YyBjb25zdGV4cHIgdWludDhfdCB0cnVlSW5saW5lZCA9IDI7CisgICAgCisgICAgdWludDhfdCBt
X2JpdHMgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRpbmdJbmxpbmVLaW5kLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuY3BwCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0aW5nSW5s
aW5lS2luZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiRXhpdGluZ0lubGluZUtpbmQuaCIKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVh
bS5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwordm9pZCBw
cmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEV4aXRpbmdJbmxpbmVLaW5kIHR5cGUpCit7
CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBFeGl0RnJvbUFueUlubGluZUtpbmQ6Cisg
ICAgICAgIG91dC5wcmludCgiRnJvbUFueUlubGluZUtpbmQiKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIGNhc2UgRXhpdEZyb21Ob3RJbmxpbmVkOgorICAgICAgICBvdXQucHJpbnQoIkZyb21Ob3RJ
bmxpbmVkIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEV4aXRGcm9tSW5saW5lZDoKKyAg
ICAgICAgb3V0LnByaW50KCJGcm9tSW5saW5lZCIpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdU
RgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtp
bmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGlu
Z0lubGluZUtpbmQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEg
b25jZQorCituYW1lc3BhY2UgSlNDIHsKKworZW51bSBFeGl0aW5nSW5saW5lS2luZCA6IHVpbnQ4
X3QgeworICAgIEV4aXRGcm9tQW55SW5saW5lS2luZCwKKyAgICBFeGl0RnJvbU5vdElubGluZWQs
CisgICAgRXhpdEZyb21JbmxpbmVkLAorfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVz
cGFjZSBXVEYgeworCitjbGFzcyBQcmludFN0cmVhbTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmlu
dFN0cmVhbSYsIEpTQzo6RXhpdGluZ0lubGluZUtpbmQpOworCit9IC8vIG5hbWVzcGFjZSBXVEYK
KworCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJ
ZFN0YXR1cy5jcHAJKHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTYgKzUxLDYg
QEAgYm9vbCBHZXRCeUlkU3RhdHVzOjphcHBlbmRWYXJpYW50KGNvbnN0IAogICAgIHJldHVybiBh
cHBlbmRJQ1N0YXR1c1ZhcmlhbnQobV92YXJpYW50cywgdmFyaWFudCk7CiB9CiAKLSNpZiBFTkFC
TEUoREZHX0pJVCkKLWJvb2wgR2V0QnlJZFN0YXR1czo6aGFzRXhpdFNpdGUoQ29kZUJsb2NrKiBw
cm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQotewotICAgIFVubGlua2VkQ29k
ZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IHByb2ZpbGVkQmxvY2stPnVubGlua2VkQ29kZUJs
b2NrKCk7Ci0gICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcih1bmxpbmtlZENvZGVCbG9jay0+
bV9sb2NrKTsKLSAgICByZXR1cm4gdW5saW5rZWRDb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tl
ciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZENhY2hlKSkKLSAgICAg
ICAgfHwgdW5saW5rZWRDb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVu
dEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZENvbnN0YW50Q2FjaGUpKTsKLX0KLSNlbmRpZgot
CiBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2Nr
KiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1w
bCogdWlkKQogewogICAgIFZNJiB2bSA9ICpwcm9maWxlZEJsb2NrLT52bSgpOwpAQCAtMTA1LDcg
Kzk1LDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbQogICAgIH0K
IH0KIAotR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayog
cHJvZmlsZWRCbG9jaywgU3R1YkluZm9NYXAmIG1hcCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwg
VW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK0dldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29t
cHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIElDU3RhdHVzTWFwJiBtYXAsIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIEV4aXRGbGFnIGRpZEV4
aXQsIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgY2FsbEV4aXRTaXRlRGF0YSkKIHsKICAg
ICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHByb2ZpbGVkQmxvY2stPm1fbG9jayk7CiAKQEAg
LTExMywxMiArMTAzLDExIEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZv
cigKIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5m
b1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKAotICAgICAgICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ss
IG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4KSksIHVpZCwKLSAgICAgICAgQ2FsbExp
bmtTdGF0dXM6OmNvbXB1dGVFeGl0U2l0ZURhdGEocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRl
eCkpOworICAgICAgICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssIG1hcC5nZXQoQ29kZU9yaWdpbihi
eXRlY29kZUluZGV4KSkuc3R1YkluZm8sIHVpZCwKKyAgICAgICAgY2FsbEV4aXRTaXRlRGF0YSk7
CiAgICAgCi0gICAgaWYgKCFyZXN1bHQudGFrZXNTbG93UGF0aCgpCi0gICAgICAgICYmIGhhc0V4
aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpKQotICAgICAgICByZXR1cm4gR2V0
QnlJZFN0YXR1cyhyZXN1bHQubWFrZXNDYWxscygpID8gTWFrZXNDYWxscyA6IFRha2VzU2xvd1Bh
dGgsIHRydWUpOworICAgIGlmIChkaWRFeGl0KQorICAgICAgICByZXR1cm4gcmVzdWx0LnNsb3dW
ZXJzaW9uKCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShtYXApOwogI2VuZGlmCkBAIC0xMzYs
OCArMTI1LDggQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yUwogICAg
ICAgICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssIHN0dWJJbmZvLCB1aWQsCiAgICAgICAgIENhbGxM
aW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4u
Ynl0ZWNvZGVJbmRleCkpOwogCi0gICAgaWYgKCFyZXN1bHQudGFrZXNTbG93UGF0aCgpICYmIEdl
dEJ5SWRTdGF0dXM6Omhhc0V4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNv
ZGVJbmRleCkpCi0gICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKHJlc3VsdC5tYWtlc0NhbGxz
KCkgPyBHZXRCeUlkU3RhdHVzOjpNYWtlc0NhbGxzIDogR2V0QnlJZFN0YXR1czo6VGFrZXNTbG93
UGF0aCwgdHJ1ZSk7CisgICAgaWYgKCFyZXN1bHQudGFrZXNTbG93UGF0aCgpICYmIGhhc0JhZENh
Y2hlRXhpdFNpdGUocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KSkKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdC5zbG93VmVyc2lvbigpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkBAIC0zMTQsNDAgKzMwMywzNSBAQCBHZXRCeUlk
U3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkK
IAogR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAotICAgIENvZGVCbG9j
ayogcHJvZmlsZWRCbG9jaywgQ29kZUJsb2NrKiBkZmdCbG9jaywgU3R1YkluZm9NYXAmIGJhc2Vs
aW5lTWFwLAotICAgIFN0dWJJbmZvTWFwJiBkZmdNYXAsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwg
VW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKKyAgICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIElD
U3RhdHVzTWFwJiBiYXNlbGluZU1hcCwKKyAgICBJQ1N0YXR1c0NvbnRleHRTdGFjayYgaWNDb250
ZXh0U3RhY2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkK
IHsKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBpZiAoZGZnQmxvY2spIHsKLSAgICAgICAgQ2Fs
bExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0YSBleGl0U2l0ZURhdGE7Ci0gICAgICAgIHsKLSAgICAg
ICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jay0+bV9sb2NrKTsK
LSAgICAgICAgICAgIGV4aXRTaXRlRGF0YSA9IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhpdFNp
dGVEYXRhKAotICAgICAgICAgICAgICAgIHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNv
ZGVJbmRleCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIEdldEJ5SWRTdGF0dXMgcmVz
dWx0OwotICAgICAgICB7Ci0gICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGRm
Z0Jsb2NrLT5tX2xvY2spOwotICAgICAgICAgICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZv
V2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCi0gICAgICAgICAgICAgICAgbG9ja2VyLCBkZmdCbG9j
aywgZGZnTWFwLmdldChjb2RlT3JpZ2luKSwgdWlkLCBleGl0U2l0ZURhdGEpOwotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKHJlc3VsdC50YWtlc1Nsb3dQYXRoKCkpCi0gICAgICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgY2FsbEV4aXRTaXRl
RGF0YSA9CisgICAgICAgIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKHByb2Zp
bGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7CisgICAgRXhpdEZsYWcgZGlkRXhp
dCA9IGhhc0JhZENhY2hlRXhpdFNpdGUocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29k
ZUluZGV4KTsKICAgICAKLSAgICAgICAgaWYgKGhhc0V4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGNv
ZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkpCi0gICAgICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1
cyhUYWtlc1Nsb3dQYXRoLCB0cnVlKTsKKyAgICBmb3IgKElDU3RhdHVzQ29udGV4dCogY29udGV4
dCA6IGljQ29udGV4dFN0YWNrKSB7CisgICAgICAgIElDU3RhdHVzIHN0YXR1cyA9IGNvbnRleHQt
PmdldChjb2RlT3JpZ2luKTsKICAgICAgICAgCi0gICAgICAgIGlmIChyZXN1bHQuaXNTZXQoKSkK
KyAgICAgICAgYXV0byB3aXRoRXhpdHMgPSBbJl0gKGNvbnN0IEdldEJ5SWRTdGF0dXMmIHJlc3Vs
dCkgLT4gR2V0QnlJZFN0YXR1cyB7CisgICAgICAgICAgICBpZiAoZGlkRXhpdC5pc1NldChjb2Rl
T3JpZ2luLmV4aXRpbmdJbmxpbmVLaW5kKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1
bHQuc2xvd1ZlcnNpb24oKTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotI2Vs
c2UKLSAgICBVTlVTRURfUEFSQU0oZGZnQmxvY2spOwotICAgIFVOVVNFRF9QQVJBTShkZmdNYXAp
OwotI2VuZGlmCisgICAgICAgIH07CiAKLSAgICByZXR1cm4gY29tcHV0ZUZvcihwcm9maWxlZEJs
b2NrLCBiYXNlbGluZU1hcCwgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCB1aWQpOworICAgICAg
ICBpZiAoc3RhdHVzLnN0dWJJbmZvKSB7CisgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIg
bG9ja2VyKGNvbnRleHQtPm9wdGltaXplZENvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAg
IEdldEJ5SWRTdGF0dXMgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRl
RmVlZGJhY2soCisgICAgICAgICAgICAgICAgbG9ja2VyLCBjb250ZXh0LT5vcHRpbWl6ZWRDb2Rl
QmxvY2ssIHN0YXR1cy5zdHViSW5mbywgdWlkLCBjYWxsRXhpdFNpdGVEYXRhKTsKKyAgICAgICAg
ICAgIGlmIChyZXN1bHQuaXNTZXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gd2l0aEV4aXRz
KHJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChzdGF0dXMuZ2V0U3Rh
dHVzKQorICAgICAgICAgICAgcmV0dXJuIHdpdGhFeGl0cygqc3RhdHVzLmdldFN0YXR1cyk7Cisg
ICAgfQorICAgICAgICAKKyAgICByZXR1cm4gY29tcHV0ZUZvcihwcm9maWxlZEJsb2NrLCBiYXNl
bGluZU1hcCwgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCB1aWQsIGRpZEV4aXQsIGNhbGxFeGl0
U2l0ZURhdGEpOwogfQogCiBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3Io
Y29uc3QgU3RydWN0dXJlU2V0JiBzZXQsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCkBAIC00MTQs
NiArMzk4LDExIEBAIGJvb2wgR2V0QnlJZFN0YXR1czo6bWFrZXNDYWxscygpIGNvbnN0CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCitHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OnNsb3dWZXJz
aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhtYWtlc0NhbGxzKCkgPyBN
YWtlc0NhbGxzIDogVGFrZXNTbG93UGF0aCwgd2FzU2VlbkluSklUKCkpOworfQorCiB2b2lkIEdl
dEJ5SWRTdGF0dXM6OmZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCkKIHsKICAgICBpZiAo
bV9zdGF0ZSAhPSBTaW1wbGUpCkBAIC00MjMsNiArNDEyLDI1IEBAIHZvaWQgR2V0QnlJZFN0YXR1
czo6ZmlsdGVyKGNvbnN0IFN0cnVjdHUKICAgICAgICAgbV9zdGF0ZSA9IE5vSW5mb3JtYXRpb247
CiB9CiAKK3ZvaWQgR2V0QnlJZFN0YXR1czo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCit7CisgICAgZm9yIChHZXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IG1fdmFyaWFudHMpCisg
ICAgICAgIHZhcmlhbnQubWFya0lmQ2hlYXAodmlzaXRvcik7Cit9CisKK2Jvb2wgR2V0QnlJZFN0
YXR1czo6ZmluYWxpemUoKQoreworICAgIGZvciAoR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBt
X3ZhcmlhbnRzKSB7CisgICAgICAgIGlmICghdmFyaWFudC5maW5hbGl6ZSgpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAobV9tb2R1bGVOYW1lc3BhY2VPYmplY3Qg
JiYgIUhlYXA6OmlzTWFya2VkKG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0KSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmIChtX21vZHVsZUVudmlyb25tZW50ICYmICFIZWFwOjppc01hcmtl
ZChtX21vZHVsZUVudmlyb25tZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVy
biB0cnVlOworfQorCiB2b2lkIEdldEJ5SWRTdGF0dXM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3QKIHsKICAgICBvdXQucHJpbnQoIigiKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAkocmV2aXNpb24gMjMyNDQxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNyArMjgsOSBAQAogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCiAjaW5jbHVk
ZSAiQ29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKKyNpbmNsdWRl
ICJFeGl0RmxhZy5oIgogI2luY2x1ZGUgIkdldEJ5SWRWYXJpYW50LmgiCisjaW5jbHVkZSAiSUNT
dGF0dXNNYXAuaCIKICNpbmNsdWRlICJTY29wZU9mZnNldC5oIgogCiBuYW1lc3BhY2UgSlNDIHsK
QEAgLTQwLDggKzQyLDYgQEAgY2xhc3MgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q7CiBjbGFzcyBN
b2R1bGVOYW1lc3BhY2VBY2Nlc3NDYXNlOwogY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CiAKLXR5
cGVkZWYgSGFzaE1hcDxDb2RlT3JpZ2luLCBTdHJ1Y3R1cmVTdHViSW5mbyosIENvZGVPcmlnaW5B
cHByb3hpbWF0ZUhhc2g+IFN0dWJJbmZvTWFwOwotCiBjbGFzcyBHZXRCeUlkU3RhdHVzIHsKIHB1
YmxpYzoKICAgICBlbnVtIFN0YXRlIHsKQEAgLTgxLDEwICs4MSwxMCBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fdmFyaWFudHMuYXBwZW5kKHZhcmlhbnQpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMg
R2V0QnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIFN0dWJJbmZvTWFwJiwgdW5zaWdu
ZWQgYnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7CisgICAgc3RhdGljIEdl
dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCBJQ1N0YXR1c01hcCYsIHVuc2lnbmVk
IGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIEV4aXRGbGFnLCBDYWxsTGlu
a1N0YXR1czo6RXhpdFNpdGVEYXRhKTsKICAgICBzdGF0aWMgR2V0QnlJZFN0YXR1cyBjb21wdXRl
Rm9yKGNvbnN0IFN0cnVjdHVyZVNldCYsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogICAgIAot
ICAgIHN0YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJs
b2NrLCBDb2RlQmxvY2sqIGRmZ0Jsb2NrLCBTdHViSW5mb01hcCYgYmFzZWxpbmVNYXAsIFN0dWJJ
bmZvTWFwJiBkZmdNYXAsIENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOworICAg
IHN0YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2Nr
LCBJQ1N0YXR1c01hcCYgYmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4dFN0YWNrJiBkZmdDb250
ZXh0U3RhY2ssIENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogCiAjaWYgRU5B
QkxFKERGR19KSVQpCiAgICAgc3RhdGljIEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZvclN0dWJJbmZv
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgU3Ry
dWN0dXJlU3R1YkluZm8qLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKQEAg
LTEwNiw2ICsxMDYsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCB0YWtlc1Nsb3dQYXRoKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0ZSA9PSBUYWtlc1Nsb3dQYXRoIHx8IG1fc3RhdGUgPT0gTWFrZXNDYWxs
cyB8fCBtX3N0YXRlID09IEN1c3RvbSB8fCBtX3N0YXRlID09IE1vZHVsZU5hbWVzcGFjZTsgfQog
ICAgIGJvb2wgbWFrZXNDYWxscygpIGNvbnN0OwogICAgIAorICAgIEdldEJ5SWRTdGF0dXMgc2xv
d1ZlcnNpb24oKSBjb25zdDsKKyAgICAKICAgICBib29sIHdhc1NlZW5JbkpJVCgpIGNvbnN0IHsg
cmV0dXJuIG1fd2FzU2VlbkluSklUOyB9CiAgICAgCiAgICAgLy8gQXR0ZW1wdHMgdG8gcmVkdWNl
IHRoZSBzZXQgb2YgdmFyaWFudHMgdG8gZml0IHRoZSBnaXZlbiBzdHJ1Y3R1cmUgc2V0LiBUaGlz
IG1heSBiZSBhcHByb3hpbWF0ZS4KQEAgLTExNSwxMiArMTE3LDEyIEBAIHB1YmxpYzoKICAgICBK
U01vZHVsZUVudmlyb25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
bW9kdWxlRW52aXJvbm1lbnQ7IH0KICAgICBTY29wZU9mZnNldCBzY29wZU9mZnNldCgpIGNvbnN0
IHsgcmV0dXJuIG1fc2NvcGVPZmZzZXQ7IH0KICAgICAKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNs
b3RWaXNpdG9yJik7CisgICAgYm9vbCBmaW5hbGl6ZSgpOyAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGlz
IGdldHMgdG8gbGl2ZS4KKyAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsK
ICAgICAKIHByaXZhdGU6Ci0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAgc3RhdGljIGJvb2wgaGFz
RXhpdFNpdGUoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7Ci0jZW5kaWYKICNp
ZiBFTkFCTEUoSklUKQogICAgIEdldEJ5SWRTdGF0dXMoY29uc3QgTW9kdWxlTmFtZXNwYWNlQWNj
ZXNzQ2FzZSYpOwogICAgIHN0YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mb1dp
dGhvdXRFeGl0U2l0ZUZlZWRiYWNrKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0dldEJ5SWRWYXJpYW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzUsNiArMTM1LDI0IEBAIGJvb2wgR2V0QnlJZFZhcmlhbnQ6OmF0dGVtcHRUb01l
cmdlKGNvbnMKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBHZXRCeUlkVmFyaWFudDo6bWFy
a0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgbV9zdHJ1Y3R1cmVTZXQubWFy
a0lmQ2hlYXAodmlzaXRvcik7Cit9CisKK2Jvb2wgR2V0QnlJZFZhcmlhbnQ6OmZpbmFsaXplKCkK
K3sKKyAgICBpZiAoIW1fc3RydWN0dXJlU2V0LmlzU3RpbGxBbGl2ZSgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaWYgKCFtX2NvbmRpdGlvblNldC5hcmVTdGlsbExpdmUoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtX2NhbGxMaW5rU3RhdHVzICYmICFtX2NhbGxMaW5r
U3RhdHVzLT5maW5hbGl6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1faW50
cmluc2ljRnVuY3Rpb24gJiYgIUhlYXA6OmlzTWFya2VkKG1faW50cmluc2ljRnVuY3Rpb24pKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgR2V0QnlJ
ZFZhcmlhbnQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBkdW1wSW5Db250
ZXh0KG91dCwgMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJ
ZFZhcmlhbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlJZFZhcmlhbnQuaAkocmV2aXNpb24gMjMyNDQxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDYgKzcz
LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBhdHRlbXB0VG9NZXJnZShjb25zdCBHZXRCeUlkVmFy
aWFudCYgb3RoZXIpOwogICAgIAorICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKTsK
KyAgICBib29sIGZpbmFsaXplKCk7CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikg
Y29uc3Q7CiAgICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQq
KSBjb25zdDsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0
YXR1c01hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0lDU3RhdHVzTWFwLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSUNTdGF0dXNNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCisKKyNpbmNsdWRlICJJbmxpbmVD
YWxsRnJhbWUuaCIKKyNpbmNsdWRlICJUZXJtaW5hdGVkQ29kZU9yaWdpbi5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworSUNTdGF0dXMgSUNTdGF0dXNDb250ZXh0OjpnZXQoQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luKSBjb25zdAoreworICAgIHJldHVybiBtYXAuZ2V0PFRlcm1pbmF0ZWRDb2RlT3JpZ2lu
SGFzaFRyYW5zbGF0b3I+KAorICAgICAgICBUZXJtaW5hdGVkQ29kZU9yaWdpbihjb2RlT3JpZ2lu
LCBpbmxpbmVDYWxsRnJhbWUpKTsKK30KKworYm9vbCBJQ1N0YXR1c0NvbnRleHQ6OmlzSW5saW5l
ZChDb2RlT3JpZ2luIGNvZGVPcmlnaW4pIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvZGVPcmlnaW4u
aW5saW5lQ2FsbEZyYW1lICYmIGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lICE9IGlubGluZUNh
bGxGcmFtZTsKK30KKworRXhpdGluZ0lubGluZUtpbmQgSUNTdGF0dXNDb250ZXh0OjppbmxpbmVL
aW5kKENvZGVPcmlnaW4gY29kZU9yaWdpbikgY29uc3QKK3sKKyAgICByZXR1cm4gaXNJbmxpbmVk
KGNvZGVPcmlnaW4pID8gRXhpdEZyb21JbmxpbmVkIDogRXhpdEZyb21Ob3RJbmxpbmVkOworfQor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0lDU3RhdHVzTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0lDU3RhdHVzTWFwLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKKyNpbmNsdWRlICJFeGl0aW5nSW5saW5l
S2luZC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBDYWxsTGlua0luZm87CitjbGFzcyBDYWxsTGlua1N0YXR1czsKK2NsYXNzIENvZGVCbG9j
azsKK2NsYXNzIEdldEJ5SWRTdGF0dXM7CitjbGFzcyBJbkJ5SWRTdGF0dXM7CitjbGFzcyBQdXRC
eUlkU3RhdHVzOworY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CitzdHJ1Y3QgQnlWYWxJbmZvOwor
CitzdHJ1Y3QgSUNTdGF0dXMgeworICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyB7IG51
bGxwdHIgfTsKKyAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyB7IG51bGxwdHIgfTsKKyAg
ICBCeVZhbEluZm8qIGJ5VmFsSW5mbyB7IG51bGxwdHIgfTsKKyAgICBDYWxsTGlua1N0YXR1cyog
Y2FsbFN0YXR1cyB7IG51bGxwdHIgfTsKKyAgICBHZXRCeUlkU3RhdHVzKiBnZXRTdGF0dXMgeyBu
dWxscHRyIH07CisgICAgSW5CeUlkU3RhdHVzKiBpblN0YXR1cyB7IG51bGxwdHIgfTsKKyAgICBQ
dXRCeUlkU3RhdHVzKiBwdXRTdGF0dXMgeyBudWxscHRyIH07Cit9OworCit0eXBlZGVmIEhhc2hN
YXA8Q29kZU9yaWdpbiwgSUNTdGF0dXMsIENvZGVPcmlnaW5BcHByb3hpbWF0ZUhhc2g+IElDU3Rh
dHVzTWFwOworCitzdHJ1Y3QgSUNTdGF0dXNDb250ZXh0IHsKKyAgICBJQ1N0YXR1cyBnZXQoQ29k
ZU9yaWdpbikgY29uc3Q7CisgICAgYm9vbCBpc0lubGluZWQoQ29kZU9yaWdpbikgY29uc3Q7Cisg
ICAgRXhpdGluZ0lubGluZUtpbmQgaW5saW5lS2luZChDb2RlT3JpZ2luKSBjb25zdDsKKyAgICAK
KyAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSB7IG51bGxwdHIgfTsKKyAgICBD
b2RlQmxvY2sqIG9wdGltaXplZENvZGVCbG9jayB7IG51bGxwdHIgfTsKKyAgICBJQ1N0YXR1c01h
cCBtYXA7Cit9OworCit0eXBlZGVmIFZlY3RvcjxJQ1N0YXR1c0NvbnRleHQqLCA4PiBJQ1N0YXR1
c0NvbnRleHRTdGFjazsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c1V0aWxzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNVdGlscy5jcHAJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzVXRpbHMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklDU3Rh
dHVzVXRpbHMuaCIKKworI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkV4aXRGbGFn
LmgiCisjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K0V4aXRGbGFnIGhhc0JhZENhY2hlRXhpdFNpdGUoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1
bnNpZ25lZCBieXRlY29kZUluZGV4KQoreworI2lmIEVOQUJMRShERkdfSklUKQorICAgIFVubGlu
a2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IHByb2ZpbGVkQmxvY2stPnVubGlua2Vk
Q29kZUJsb2NrKCk7CisgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcih1bmxpbmtlZENvZGVC
bG9jay0+bV9sb2NrKTsKKyAgICBhdXRvIGV4aXRGbGFnID0gWyZdIChFeGl0S2luZCBleGl0S2lu
ZCkgLT4gRXhpdEZsYWcgeworICAgICAgICBhdXRvIHdpdGhJbmxpbmVkID0gWyZdIChFeGl0aW5n
SW5saW5lS2luZCBpbmxpbmVLaW5kKSAtPiBFeGl0RmxhZyB7CisgICAgICAgICAgICByZXR1cm4g
RXhpdEZsYWcodW5saW5rZWRDb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVx
dWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIGV4aXRLaW5kLCBFeGl0RnJvbUFueXRoaW5nLCBp
bmxpbmVLaW5kKSksIGlubGluZUtpbmQpOworICAgICAgICB9OworICAgICAgICByZXR1cm4gd2l0
aElubGluZWQoRXhpdEZyb21Ob3RJbmxpbmVkKSB8IHdpdGhJbmxpbmVkKEV4aXRGcm9tSW5saW5l
ZCk7CisgICAgfTsKKyAgICByZXR1cm4gZXhpdEZsYWcoQmFkQ2FjaGUpIHwgZXhpdEZsYWcoQmFk
Q29uc3RhbnRDYWNoZSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsK
KyAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CisgICAgcmV0dXJuIEV4aXRGbGFnKCk7
CisjZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c1V0aWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzVXRpbHMuaAkocmV2aXNpb24gMjMyNDQxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzVXRpbHMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjUsNiArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkV4
aXRGbGFnLmgiCisKIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWYXJpYW50
VmVjdG9yVHlwZSwgdHlwZW5hbWUgVmFyaWFudFR5cGU+CkBAIC01OSw1ICs2MSw3IEBAIHZvaWQg
ZmlsdGVySUNTdGF0dXNWYXJpYW50cyhWYXJpYW50VmVjdG8KICAgICAgICAgfSk7CiB9CiAKK0V4
aXRGbGFnIGhhc0JhZENhY2hlRXhpdFNpdGUoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNp
Z25lZCBieXRlY29kZUluZGV4KTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRTdGF0dXMuY3BwCShyZXZpc2lv
biAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkU3RhdHVz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTggWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDE2ICs0MiwxNiBAQCBib29sIEluQnlJZFN0YXR1czo6
YXBwZW5kVmFyaWFudChjb25zdCBJCiAgICAgcmV0dXJuIGFwcGVuZElDU3RhdHVzVmFyaWFudCht
X3ZhcmlhbnRzLCB2YXJpYW50KTsKIH0KIAotSW5CeUlkU3RhdHVzIEluQnlJZFN0YXR1czo6Y29t
cHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIFN0dWJJbmZvTWFwJiBtYXAsIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitJbkJ5SWRTdGF0dXMg
SW5CeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgSUNTdGF0
dXNNYXAmIG1hcCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVp
ZCwgRXhpdEZsYWcgZGlkRXhpdCkKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHBy
b2ZpbGVkQmxvY2stPm1fbG9jayk7CiAKICAgICBJbkJ5SWRTdGF0dXMgcmVzdWx0OwogCiAjaWYg
RU5BQkxFKERGR19KSVQpCi0gICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4
aXRTaXRlRmVlZGJhY2sobG9ja2VyLCBtYXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkp
LCB1aWQpOworICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZl
ZWRiYWNrKGxvY2tlciwgbWFwLmdldChDb2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgpKS5zdHViSW5m
bywgdWlkKTsKIAotICAgIGlmICghcmVzdWx0LnRha2VzU2xvd1BhdGgoKSAmJiBoYXNFeGl0U2l0
ZShwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4KSkKKyAgICBpZiAoIXJlc3VsdC50YWtlc1Ns
b3dQYXRoKCkgJiYgZGlkRXhpdCkKICAgICAgICAgcmV0dXJuIEluQnlJZFN0YXR1cyhUYWtlc1Ns
b3dQYXRoKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG1hcCk7CkBAIC02MSw1NiArNjIsNDcg
QEAgSW5CeUlkU3RhdHVzIEluQnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDbwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLUluQnlJZFN0YXR1cyBJbkJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAg
Q29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBDb2RlQmxvY2sqIGRmZ0Jsb2NrLCBTdHViSW5mb01h
cCYgYmFzZWxpbmVNYXAsCi0gICAgU3R1YkluZm9NYXAmIGRmZ01hcCwgQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQorSW5CeUlkU3RhdHVzIEluQnlJZFN0YXR1
czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIElDU3RhdHVzTWFwJiBtYXAs
IHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7Ci0jaWYg
RU5BQkxFKERGR19KSVQpCi0gICAgaWYgKGRmZ0Jsb2NrKSB7Ci0gICAgICAgIENhbGxMaW5rU3Rh
dHVzOjpFeGl0U2l0ZURhdGEgZXhpdFNpdGVEYXRhOwotICAgICAgICB7Ci0gICAgICAgICAgICBD
b25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHByb2ZpbGVkQmxvY2stPm1fbG9jayk7Ci0gICAgICAg
ICAgICBleGl0U2l0ZURhdGEgPSBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YSgK
LSAgICAgICAgICAgICAgICBwcm9maWxlZEJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgp
OwotICAgICAgICB9Ci0KLSAgICAgICAgSW5CeUlkU3RhdHVzIHJlc3VsdDsKLSAgICAgICAgewot
ICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihkZmdCbG9jay0+bV9sb2NrKTsK
LSAgICAgICAgICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZl
ZWRiYWNrKGxvY2tlciwgZGZnTWFwLmdldChjb2RlT3JpZ2luKSwgdWlkKTsKLSAgICAgICAgfQor
ICAgIHJldHVybiBjb21wdXRlRm9yKHByb2ZpbGVkQmxvY2ssIG1hcCwgYnl0ZWNvZGVJbmRleCwg
dWlkLCBoYXNCYWRDYWNoZUV4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpKTsK
K30KIAotICAgICAgICBpZiAocmVzdWx0LnRha2VzU2xvd1BhdGgoKSkKK0luQnlJZFN0YXR1cyBJ
bkJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCisgICAgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBJ
Q1N0YXR1c01hcCYgYmFzZWxpbmVNYXAsCisgICAgSUNTdGF0dXNDb250ZXh0U3RhY2smIGNvbnRl
eHRTdGFjaywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQor
eworICAgIEV4aXRGbGFnIGRpZEV4aXQgPSBoYXNCYWRDYWNoZUV4aXRTaXRlKHByb2ZpbGVkQmxv
Y2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7CisgICAgCisgICAgZm9yIChJQ1N0YXR1c0Nv
bnRleHQqIGNvbnRleHQgOiBjb250ZXh0U3RhY2spIHsKKyAgICAgICAgSUNTdGF0dXMgc3RhdHVz
ID0gY29udGV4dC0+Z2V0KGNvZGVPcmlnaW4pOworICAgICAgICAKKyAgICAgICAgYXV0byB3aXRo
RXhpdHMgPSBbJl0gKGNvbnN0IEluQnlJZFN0YXR1cyYgcmVzdWx0KSAtPiBJbkJ5SWRTdGF0dXMg
eworICAgICAgICAgICAgaWYgKGRpZEV4aXQuaXNTZXQoY29kZU9yaWdpbi5leGl0aW5nSW5saW5l
S2luZCgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gSW5CeUlkU3RhdHVzKFRha2VzU2xvd1Bh
dGgpOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfTsKIAotICAgICAgICBp
ZiAoaGFzRXhpdFNpdGUocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KSkK
LSAgICAgICAgICAgIHJldHVybiBJbkJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCk7Ci0KLSAgICAg
ICAgaWYgKHJlc3VsdC5pc1NldCgpKQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAg
ICAgaWYgKHN0YXR1cy5zdHViSW5mbykgeworICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2Vy
IGxvY2tlcihjb250ZXh0LT5vcHRpbWl6ZWRDb2RlQmxvY2stPm1fbG9jayk7CisgICAgICAgICAg
ICBJbkJ5SWRTdGF0dXMgcmVzdWx0ID0KKyAgICAgICAgICAgICAgICBjb21wdXRlRm9yU3R1Yklu
Zm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayhsb2NrZXIsIHN0YXR1cy5zdHViSW5mbywgdWlkKTsK
KyAgICAgICAgICAgIGlmIChyZXN1bHQuaXNTZXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
d2l0aEV4aXRzKHJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChzdGF0
dXMuaW5TdGF0dXMpCisgICAgICAgICAgICByZXR1cm4gd2l0aEV4aXRzKCpzdGF0dXMuaW5TdGF0
dXMpOwogICAgIH0KLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGRmZ0Jsb2NrKTsKLSAgICBVTlVT
RURfUEFSQU0oZGZnTWFwKTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIGNvbXB1dGVGb3IocHJvZmls
ZWRCbG9jaywgYmFzZWxpbmVNYXAsIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgdWlkKTsKKyAg
ICAgICAgCisgICAgcmV0dXJuIGNvbXB1dGVGb3IocHJvZmlsZWRCbG9jaywgYmFzZWxpbmVNYXAs
IGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgdWlkLCBkaWRFeGl0KTsKIH0KIAogI2lmIEVOQUJM
RShERkdfSklUKQotYm9vbCBJbkJ5SWRTdGF0dXM6Omhhc0V4aXRTaXRlKENvZGVCbG9jayogcHJv
ZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKLXsKLSAgICBVbmxpbmtlZENvZGVC
bG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBwcm9maWxlZEJsb2NrLT51bmxpbmtlZENvZGVCbG9j
aygpOwotICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIodW5saW5rZWRDb2RlQmxvY2stPm1f
bG9jayk7Ci0gICAgcmV0dXJuIHVubGlua2VkQ29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIs
IERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRDYWNoZSkpCi0gICAgICAg
IHx8IHVubGlua2VkQ29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRF
eGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRDb25zdGFudENhY2hlKSk7Ci19Ci0KIEluQnlJZFN0
YXR1cyBJbkJ5SWRTdGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mbyhjb25zdCBDb25jdXJyZW50SlNM
b2NrZXImIGxvY2tlciwgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5m
byogc3R1YkluZm8sIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVp
ZCkKIHsKICAgICBJbkJ5SWRTdGF0dXMgcmVzdWx0ID0gSW5CeUlkU3RhdHVzOjpjb21wdXRlRm9y
U3R1YkluZm9XaXRob3V0RXhpdFNpdGVGZWVkYmFjayhsb2NrZXIsIHN0dWJJbmZvLCB1aWQpOwog
Ci0gICAgaWYgKCFyZXN1bHQudGFrZXNTbG93UGF0aCgpICYmIEluQnlJZFN0YXR1czo6aGFzRXhp
dFNpdGUocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KSkKKyAgICBpZiAo
IXJlc3VsdC50YWtlc1Nsb3dQYXRoKCkgJiYgaGFzQmFkQ2FjaGVFeGl0U2l0ZShwcm9maWxlZEJs
b2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpKQogICAgICAgICByZXR1cm4gSW5CeUlkU3Rh
dHVzKFRha2VzU2xvd1BhdGgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0yMTgsNiArMjEw
LDIxIEBAIHZvaWQgSW5CeUlkU3RhdHVzOjpmaWx0ZXIoY29uc3QgU3RydWN0dXIKICAgICAgICAg
bV9zdGF0ZSA9IE5vSW5mb3JtYXRpb247CiB9CiAKK3ZvaWQgSW5CeUlkU3RhdHVzOjptYXJrSWZD
aGVhcChTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBmb3IgKEluQnlJZFZhcmlhbnQmIHZh
cmlhbnQgOiBtX3ZhcmlhbnRzKQorICAgICAgICB2YXJpYW50Lm1hcmtJZkNoZWFwKHZpc2l0b3Ip
OworfQorCitib29sIEluQnlJZFN0YXR1czo6ZmluYWxpemUoKQoreworICAgIGZvciAoSW5CeUlk
VmFyaWFudCYgdmFyaWFudCA6IG1fdmFyaWFudHMpIHsKKyAgICAgICAgaWYgKCF2YXJpYW50LmZp
bmFsaXplKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0
cnVlOworfQorCiB2b2lkIEluQnlJZFN0YXR1czo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dAogewogICAgIG91dC5wcmludCgiKCIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0luQnlJZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbkJ5SWRTdGF0dXMuaAkocmV2aXNpb24gMjMyNDQxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxOCBZdXN1a2UgU3V6dWtpIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+LgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgs
NiArMjksNyBAQAogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCiAjaW5jbHVkZSAiQ29kZU9y
aWdpbi5oIgogI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKKyNpbmNsdWRlICJJQ1N0YXR1
c01hcC5oIgogI2luY2x1ZGUgIkluQnlJZFZhcmlhbnQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBA
IC0zNiw4ICszOCw2IEBAIGNsYXNzIEFjY2Vzc0Nhc2U7CiBjbGFzcyBDb2RlQmxvY2s7CiBjbGFz
cyBTdHJ1Y3R1cmVTdHViSW5mbzsKIAotdHlwZWRlZiBIYXNoTWFwPENvZGVPcmlnaW4sIFN0cnVj
dHVyZVN0dWJJbmZvKiwgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFzaD4gU3R1YkluZm9NYXA7Ci0K
IGNsYXNzIEluQnlJZFN0YXR1cyB7CiBwdWJsaWM6CiAgICAgZW51bSBTdGF0ZSB7CkBAIC01OSw4
ICs1OSw5IEBAIHB1YmxpYzoKICAgICAgICAgbV92YXJpYW50cy5hcHBlbmQodmFyaWFudCk7CiAg
ICAgfQogCi0gICAgc3RhdGljIEluQnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIFN0
dWJJbmZvTWFwJiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVp
ZCk7Ci0gICAgc3RhdGljIEluQnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayogYmFzZWxp
bmVCbG9jaywgQ29kZUJsb2NrKiBkZmdCbG9jaywgU3R1YkluZm9NYXAmIGJhc2VsaW5lTWFwLCBT
dHViSW5mb01hcCYgZGZnTWFwLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsK
KyAgICBzdGF0aWMgSW5CeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgSUNTdGF0dXNN
YXAmLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKKyAg
ICBzdGF0aWMgSW5CeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgSUNTdGF0dXNNYXAm
LCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBFeGl0Rmxh
Zyk7CisgICAgc3RhdGljIEluQnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayogYmFzZWxp
bmVCbG9jaywgSUNTdGF0dXNNYXAmIGJhc2VsaW5lTWFwLCBJQ1N0YXR1c0NvbnRleHRTdGFjayYg
Y29udGV4dFN0YWNrLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKIAogI2lm
IEVOQUJMRShERkdfSklUKQogICAgIHN0YXRpYyBJbkJ5SWRTdGF0dXMgY29tcHV0ZUZvclN0dWJJ
bmZvKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywg
U3RydWN0dXJlU3R1YkluZm8qLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsK
QEAgLTgxLDEyICs4MiwxNCBAQCBwdWJsaWM6CiAKICAgICAvLyBBdHRlbXB0cyB0byByZWR1Y2Ug
dGhlIHNldCBvZiB2YXJpYW50cyB0byBmaXQgdGhlIGdpdmVuIHN0cnVjdHVyZSBzZXQuIFRoaXMg
bWF5IGJlIGFwcHJveGltYXRlLgogICAgIHZvaWQgZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYp
OworICAgIAorICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKTsKKyAgICBib29sIGZp
bmFsaXplKCk7CiAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKIAogcHJpdmF0
ZToKICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBzdGF0aWMgYm9vbCBoYXNFeGl0U2l0ZShDb2Rl
QmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKICAgICBzdGF0aWMgSW5CeUlkU3RhdHVz
IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKGNvbnN0IENvbmN1cnJl
bnRKU0xvY2tlciYsIFN0cnVjdHVyZVN0dWJJbmZvKiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7
CiAjZW5kaWYKICAgICBib29sIGFwcGVuZFZhcmlhbnQoY29uc3QgSW5CeUlkVmFyaWFudCYpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFZhcmlhbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRWYXJpYW50
LmNwcAkocmV2aXNpb24gMjMyNDQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0luQnlJZFZhcmlhbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAxOCBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
LgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjMsNiArNjQsMjAgQEAgYm9vbCBJ
bkJ5SWRWYXJpYW50OjphdHRlbXB0VG9NZXJnZShjb25zdAogICAgIHJldHVybiB0cnVlOwogfQog
Cit2b2lkIEluQnlJZFZhcmlhbnQ6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQor
eworICAgIG1fc3RydWN0dXJlU2V0Lm1hcmtJZkNoZWFwKHZpc2l0b3IpOworfQorCitib29sIElu
QnlJZFZhcmlhbnQ6OmZpbmFsaXplKCkKK3sKKyAgICBpZiAoIW1fc3RydWN0dXJlU2V0LmlzU3Rp
bGxBbGl2ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX2NvbmRpdGlvblNl
dC5hcmVTdGlsbExpdmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVl
OworfQorCiB2b2lkIEluQnlJZFZhcmlhbnQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QK
IHsKICAgICBkdW1wSW5Db250ZXh0KG91dCwgMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSW5CeUlkVmFyaWFudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRWYXJpYW50LmgJKHJldmlzaW9uIDIzMjQ0MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRWYXJpYW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE4IFl1c3VrZSBTdXp1
a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC01NCw2ICs1NSw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzSGl0KCkgY29uc3QgeyByZXR1
cm4gb2Zmc2V0KCkgIT0gaW52YWxpZE9mZnNldDsgfQogCiAgICAgYm9vbCBhdHRlbXB0VG9NZXJn
ZShjb25zdCBJbkJ5SWRWYXJpYW50JiBvdGhlcik7CisgICAgCisgICAgdm9pZCBtYXJrSWZDaGVh
cChTbG90VmlzaXRvciYpOworICAgIGJvb2wgZmluYWxpemUoKTsKIAogICAgIHZvaWQgZHVtcChQ
cmludFN0cmVhbSYpIGNvbnN0OwogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYs
IER1bXBDb250ZXh0KikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSW5zdGFuY2VPZlN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0luc3RhbmNlT2ZTdGF0dXMuY3BwCShyZXZpc2lvbiAyMzI0NDEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJJbnN0YW5jZU9mU3RhdHVzLmgi
CiAKICNpbmNsdWRlICJJQ1N0YXR1c1V0aWxzLmgiCisjaW5jbHVkZSAiSW5zdGFuY2VPZkFjY2Vz
c0Nhc2UuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUG9seW1vcnBoaWNB
Y2Nlc3MuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgpAQCAtMzksMTMgKzQwLDEz
IEBAIHZvaWQgSW5zdGFuY2VPZlN0YXR1czo6YXBwZW5kVmFyaWFudChjb24KIH0KIAogSW5zdGFu
Y2VPZlN0YXR1cyBJbnN0YW5jZU9mU3RhdHVzOjpjb21wdXRlRm9yKAotICAgIENvZGVCbG9jayog
Y29kZUJsb2NrLCBTdHViSW5mb01hcCYgaW5mb01hcCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkK
KyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSUNTdGF0dXNNYXAmIGluZm9NYXAsIHVuc2lnbmVk
IGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxv
Y2stPm1fbG9jayk7CiAgICAgCiAgICAgSW5zdGFuY2VPZlN0YXR1cyByZXN1bHQ7CiAjaWYgRU5B
QkxFKERGR19KSVQpCi0gICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvKGxvY2tlciwgaW5m
b01hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4KSkpOworICAgIHJlc3VsdCA9IGNvbXB1
dGVGb3JTdHViSW5mbyhsb2NrZXIsIGluZm9NYXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRl
eCkpLnN0dWJJbmZvKTsKIAogICAgIGlmICghcmVzdWx0LnRha2VzU2xvd1BhdGgoKSkgewogICAg
ICAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBjb2RlQmxvY2stPnVu
bGlua2VkQ29kZUJsb2NrKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5zdGFuY2VPZlN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbnN0YW5jZU9mU3RhdHVzLmgJKHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0YW5jZU9mU3RhdHVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJD
b25jdXJyZW50SlNMb2NrLmgiCisjaW5jbHVkZSAiSUNTdGF0dXNNYXAuaCIKICNpbmNsdWRlICJJ
bnN0YW5jZU9mVmFyaWFudC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTM1LDggKzM2LDYgQEAg
Y2xhc3MgQWNjZXNzQ2FzZTsKIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIFN0cnVjdHVyZVN0dWJJ
bmZvOwogCi10eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdpbiwgU3RydWN0dXJlU3R1YkluZm8qLCBD
b2RlT3JpZ2luQXBwcm94aW1hdGVIYXNoPiBTdHViSW5mb01hcDsKLQogY2xhc3MgSW5zdGFuY2VP
ZlN0YXR1cyB7CiBwdWJsaWM6CiAgICAgZW51bSBTdGF0ZSB7CkBAIC02MSw3ICs2MCw3IEBAIHB1
YmxpYzoKICAgICAgICAgQVNTRVJUKHN0YXRlID09IE5vSW5mb3JtYXRpb24gfHwgc3RhdGUgPT0g
VGFrZXNTbG93UGF0aCk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBJbnN0YW5jZU9mU3RhdHVz
IGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgU3R1YkluZm9NYXAmLCB1bnNpZ25lZCBieXRlY29kZUlu
ZGV4KTsKKyAgICBzdGF0aWMgSW5zdGFuY2VPZlN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayos
IElDU3RhdHVzTWFwJiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CiAgICAgCiAjaWYgRU5BQkxF
KERGR19KSVQpCiAgICAgc3RhdGljIEluc3RhbmNlT2ZTdGF0dXMgY29tcHV0ZUZvclN0dWJJbmZv
KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIFN0cnVjdHVyZVN0dWJJbmZvKik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCShy
ZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJ
ZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJD
b2RlQmxvY2suaCIKICNpbmNsdWRlICJDb21wbGV4R2V0U3RhdHVzLmgiCiAjaW5jbHVkZSAiR2V0
dGVyU2V0dGVyQWNjZXNzQ2FzZS5oIgorI2luY2x1ZGUgIklDU3RhdHVzVXRpbHMuaCIKICNpbmNs
dWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgpAQCAtNTUsMTIgKzU2LDkgQEAgYm9vbCBQdXRCeUlkU3RhdHVz
OjphcHBlbmRWYXJpYW50KGNvbnN0IAogfQogCiAjaWYgRU5BQkxFKERGR19KSVQpCi1ib29sIFB1
dEJ5SWRTdGF0dXM6Omhhc0V4aXRTaXRlKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWdu
ZWQgYnl0ZWNvZGVJbmRleCkKK0V4aXRGbGFnIFB1dEJ5SWRTdGF0dXM6Omhhc0V4aXRTaXRlKENv
ZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKIHsKLSAgICBV
bmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBwcm9maWxlZEJsb2NrLT51bmxp
bmtlZENvZGVCbG9jaygpOwotICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIodW5saW5rZWRD
b2RlQmxvY2stPm1fbG9jayk7Ci0gICAgcmV0dXJuIHVubGlua2VkQ29kZUJsb2NrLT5oYXNFeGl0
U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRDYWNo
ZSkpCi0gICAgICAgIHx8IHVubGlua2VkQ29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERG
Rzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRDb25zdGFudENhY2hlKSk7Cisg
ICAgcmV0dXJuIGhhc0JhZENhY2hlRXhpdFNpdGUocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRl
eCk7CiB9CiAjZW5kaWYKIApAQCAtMTEwLDcgKzEwOCw3IEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJ
ZFN0YXR1czo6Y29tcHV0ZUZyb20KICAgICAgICAgc3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUsIGNv
bmRpdGlvblNldCwgb2Zmc2V0LCBuZXdTdHJ1Y3R1cmUtPmluZmVycmVkVHlwZURlc2NyaXB0b3JG
b3IodWlkKSk7CiB9CiAKLVB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihD
b2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIFN0dWJJbmZvTWFwJiBtYXAsIHVuc2lnbmVkIGJ5dGVj
b2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitQdXRCeUlkU3RhdHVzIFB1dEJ5SWRT
dGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBJQ1N0YXR1c01hcCYg
bWFwLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBFeGl0
RmxhZyBkaWRFeGl0LCBDYWxsTGlua1N0YXR1czo6RXhpdFNpdGVEYXRhIGNhbGxFeGl0U2l0ZURh
dGEpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihwcm9maWxlZEJsb2NrLT5tX2xv
Y2spOwogICAgIApAQCAtMTE4LDEzICsxMTYsMTIgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3Rh
dHVzOjpjb21wdXRlRm9yKAogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICAgICBV
TlVTRURfUEFSQU0odWlkKTsKICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBpZiAoaGFzRXhpdFNp
dGUocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCkpCisgICAgaWYgKGRpZEV4aXQpCiAgICAg
ICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgpOwogICAgIAotICAgIFN0cnVj
dHVyZVN0dWJJbmZvKiBzdHViSW5mbyA9IG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4
KSk7CisgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvID0gbWFwLmdldChDb2RlT3JpZ2lu
KGJ5dGVjb2RlSW5kZXgpKS5zdHViSW5mbzsKICAgICBQdXRCeUlkU3RhdHVzIHJlc3VsdCA9IGNv
bXB1dGVGb3JTdHViSW5mbygKLSAgICAgICAgbG9ja2VyLCBwcm9maWxlZEJsb2NrLCBzdHViSW5m
bywgdWlkLAotICAgICAgICBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YShwcm9m
aWxlZEJsb2NrLCBieXRlY29kZUluZGV4KSk7CisgICAgICAgIGxvY2tlciwgcHJvZmlsZWRCbG9j
aywgc3R1YkluZm8sIHVpZCwgY2FsbEV4aXRTaXRlRGF0YSk7CiAgICAgaWYgKCFyZXN1bHQpCiAg
ICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5k
ZXgsIHVpZCk7CiAgICAgCkBAIC0yNjQsMzggKzI2MSwzNCBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5
SWRTdGF0dXM6OmNvbXB1dGVGb3JTCiB9CiAjZW5kaWYKIAotUHV0QnlJZFN0YXR1cyBQdXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgQ29kZUJsb2NrKiBk
ZmdCbG9jaywgU3R1YkluZm9NYXAmIGJhc2VsaW5lTWFwLCBTdHViSW5mb01hcCYgZGZnTWFwLCBD
b2RlT3JpZ2luIGNvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitQdXRCeUlkU3Rh
dHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJ
Q1N0YXR1c01hcCYgYmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4dFN0YWNrJiBjb250ZXh0U3Rh
Y2ssIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKLSNp
ZiBFTkFCTEUoREZHX0pJVCkKLSAgICBpZiAoZGZnQmxvY2spIHsKLSAgICAgICAgaWYgKGhhc0V4
aXRTaXRlKGJhc2VsaW5lQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkpCi0gICAgICAg
ICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKLSAgICAgICAgQ2FsbExp
bmtTdGF0dXM6OkV4aXRTaXRlRGF0YSBleGl0U2l0ZURhdGE7Ci0gICAgICAgIHsKLSAgICAgICAg
ICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoYmFzZWxpbmVCbG9jay0+bV9sb2NrKTsKLSAg
ICAgICAgICAgIGV4aXRTaXRlRGF0YSA9IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVE
YXRhKAotICAgICAgICAgICAgICAgIGJhc2VsaW5lQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJ
bmRleCk7Ci0gICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICBQdXRCeUlkU3RhdHVzIHJl
c3VsdDsKLSAgICAgICAgewotICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihk
ZmdCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5m
bygKLSAgICAgICAgICAgICAgICBsb2NrZXIsIGRmZ0Jsb2NrLCBkZmdNYXAuZ2V0KGNvZGVPcmln
aW4pLCB1aWQsIGV4aXRTaXRlRGF0YSk7CisgICAgQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0
YSBjYWxsRXhpdFNpdGVEYXRhID0KKyAgICAgICAgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVFeGl0
U2l0ZURhdGEoYmFzZWxpbmVCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsKKyAgICBF
eGl0RmxhZyBkaWRFeGl0ID0gaGFzRXhpdFNpdGUoYmFzZWxpbmVCbG9jaywgY29kZU9yaWdpbi5i
eXRlY29kZUluZGV4KTsKKyAgICAKKyAgICBmb3IgKElDU3RhdHVzQ29udGV4dCogY29udGV4dCA6
IGNvbnRleHRTdGFjaykgeworICAgICAgICBJQ1N0YXR1cyBzdGF0dXMgPSBjb250ZXh0LT5nZXQo
Y29kZU9yaWdpbik7CisgICAgICAgIAorICAgICAgICBhdXRvIHdpdGhFeGl0cyA9IFsmXSAoY29u
c3QgUHV0QnlJZFN0YXR1cyYgcmVzdWx0KSAtPiBQdXRCeUlkU3RhdHVzIHsKKyAgICAgICAgICAg
IGlmIChkaWRFeGl0LmlzU2V0KGNvZGVPcmlnaW4uZXhpdGluZ0lubGluZUtpbmQoKSkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5zbG93VmVyc2lvbigpOworICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIGlmIChzdGF0dXMuc3R1
YkluZm8pIHsKKyAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29udGV4dC0+
b3B0aW1pemVkQ29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgUHV0QnlJZFN0YXR1cyBy
ZXN1bHQgPSBjb21wdXRlRm9yU3R1YkluZm8oCisgICAgICAgICAgICAgICAgbG9ja2VyLCBjb250
ZXh0LT5vcHRpbWl6ZWRDb2RlQmxvY2ssIHN0YXR1cy5zdHViSW5mbywgdWlkLCBjYWxsRXhpdFNp
dGVEYXRhKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQuaXNTZXQoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gd2l0aEV4aXRzKHJlc3VsdCk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAg
IC8vIFdlIHVzZSBUYWtlc1Nsb3dQYXRoIGluIHNvbWUgY2FzZXMgd2hlcmUgdGhlIHN0dWIgd2Fz
IHVuc2V0LiBUaGF0J3Mgd2VpcmQgYW5kCi0gICAgICAgIC8vIGl0IHdvdWxkIGJlIGJldHRlciBu
b3QgdG8gZG8gdGhhdC4gQnV0IGl0IG1lYW5zIHRoYXQgd2UgaGF2ZSB0byBkZWZlbmQKLSAgICAg
ICAgLy8gb3Vyc2VsdmVzIGhlcmUuCi0gICAgICAgIGlmIChyZXN1bHQuaXNTaW1wbGUoKSkKLSAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIGlmIChzdGF0dXMucHV0U3RhdHVzKQor
ICAgICAgICAgICAgcmV0dXJuIHdpdGhFeGl0cygqc3RhdHVzLnB1dFN0YXR1cyk7CiAgICAgfQot
I2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZGZnQmxvY2spOwotICAgIFVOVVNFRF9QQVJBTShkZmdN
YXApOwotI2VuZGlmCiAKLSAgICByZXR1cm4gY29tcHV0ZUZvcihiYXNlbGluZUJsb2NrLCBiYXNl
bGluZU1hcCwgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCB1aWQpOworICAgIHJldHVybiBjb21w
dXRlRm9yKGJhc2VsaW5lQmxvY2ssIGJhc2VsaW5lTWFwLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5k
ZXgsIHVpZCwgZGlkRXhpdCwgY2FsbEV4aXRTaXRlRGF0YSk7CiB9CiAKIFB1dEJ5SWRTdGF0dXMg
UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b25zdCBTdHJ1Y3R1cmVTZXQmIHNldCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgYm9vbCBpc0Rp
cmVjdCkKQEAgLTM5OCw2ICszOTEsMzUgQEAgYm9vbCBQdXRCeUlkU3RhdHVzOjptYWtlc0NhbGxz
KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK1B1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0
YXR1czo6c2xvd1ZlcnNpb24oKSBjb25zdAoreworICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKG1h
a2VzQ2FsbHMoKSA/IE1ha2VzQ2FsbHMgOiBUYWtlc1Nsb3dQYXRoKTsKK30KKwordm9pZCBQdXRC
eUlkU3RhdHVzOjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBmb3Ig
KFB1dEJ5SWRWYXJpYW50JiB2YXJpYW50IDogbV92YXJpYW50cykKKyAgICAgICAgdmFyaWFudC5t
YXJrSWZDaGVhcCh2aXNpdG9yKTsKK30KKworYm9vbCBQdXRCeUlkU3RhdHVzOjpmaW5hbGl6ZSgp
Cit7CisgICAgZm9yIChQdXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IG1fdmFyaWFudHMpIHsKKyAg
ICAgICAgaWYgKCF2YXJpYW50LmZpbmFsaXplKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFB1dEJ5SWRTdGF0dXM6OmZpbHRl
cihjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCkKK3sKKyAgICBpZiAobV9zdGF0ZSAhPSBTaW1wbGUp
CisgICAgICAgIHJldHVybjsKKyAgICBmaWx0ZXJJQ1N0YXR1c1ZhcmlhbnRzKG1fdmFyaWFudHMs
IHNldCk7CisgICAgaWYgKG1fdmFyaWFudHMuaXNFbXB0eSgpKQorICAgICAgICBtX3N0YXRlID0g
Tm9JbmZvcm1hdGlvbjsKK30KKwogdm9pZCBQdXRCeUlkU3RhdHVzOjpkdW1wKFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChtX3N0YXRlKSB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJKHJldmlzaW9uIDIzMjQ0
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
Q2FsbExpbmtTdGF0dXMuaCIKKyNpbmNsdWRlICJFeGl0RmxhZy5oIgorI2luY2x1ZGUgIklDU3Rh
dHVzTWFwLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFZhcmlhbnQuaCIKIAogbmFtZXNwYWNlIEpTQyB7
CkBAIC02OSwxMCArNzEsMTAgQEAgcHVibGljOgogICAgICAgICBtX3ZhcmlhbnRzLmFwcGVuZCh2
YXJpYW50KTsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZv
cihDb2RlQmxvY2sqLCBTdHViSW5mb01hcCYsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFVuaXF1
ZWRTdHJpbmdJbXBsKiB1aWQpOworICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3Io
Q29kZUJsb2NrKiwgSUNTdGF0dXNNYXAmLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBVbmlxdWVk
U3RyaW5nSW1wbCogdWlkLCBFeGl0RmxhZywgQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0YSk7
CiAgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihKU0dsb2JhbE9iamVjdCosIGNv
bnN0IFN0cnVjdHVyZVNldCYsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIGJvb2wgaXNEaXJlY3Qp
OwogICAgIAotICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBi
YXNlbGluZUJsb2NrLCBDb2RlQmxvY2sqIGRmZ0Jsb2NrLCBTdHViSW5mb01hcCYgYmFzZWxpbmVN
YXAsIFN0dWJJbmZvTWFwJiBkZmdNYXAsIENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQpOworICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNl
bGluZUJsb2NrLCBJQ1N0YXR1c01hcCYgYmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4dFN0YWNr
JiBjb250ZXh0U3RhY2ssIENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogCiAj
aWYgRU5BQkxFKEpJVCkKICAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yU3R1Yklu
Zm8oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBT
dHJ1Y3R1cmVTdHViSW5mbyosIENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwpA
QCAtODUsMTcgKzg3LDIyIEBAIHB1YmxpYzoKICAgICBib29sIGlzU2ltcGxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdGF0ZSA9PSBTaW1wbGU7IH0KICAgICBib29sIHRha2VzU2xvd1BhdGgoKSBjb25z
dCB7IHJldHVybiBtX3N0YXRlID09IFRha2VzU2xvd1BhdGggfHwgbV9zdGF0ZSA9PSBNYWtlc0Nh
bGxzOyB9CiAgICAgYm9vbCBtYWtlc0NhbGxzKCkgY29uc3Q7CisgICAgUHV0QnlJZFN0YXR1cyBz
bG93VmVyc2lvbigpIGNvbnN0OwogICAgIAogICAgIHNpemVfdCBudW1WYXJpYW50cygpIGNvbnN0
IHsgcmV0dXJuIG1fdmFyaWFudHMuc2l6ZSgpOyB9CiAgICAgY29uc3QgVmVjdG9yPFB1dEJ5SWRW
YXJpYW50LCAxPiYgdmFyaWFudHMoKSBjb25zdCB7IHJldHVybiBtX3ZhcmlhbnRzOyB9CiAgICAg
Y29uc3QgUHV0QnlJZFZhcmlhbnQmIGF0KHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV92
YXJpYW50c1tpbmRleF07IH0KICAgICBjb25zdCBQdXRCeUlkVmFyaWFudCYgb3BlcmF0b3JbXShz
aXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGF0KGluZGV4KTsgfQogICAgIAorICAgIHZvaWQg
bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKTsKKyAgICBib29sIGZpbmFsaXplKCk7CisgICAgdm9p
ZCBmaWx0ZXIoY29uc3QgU3RydWN0dXJlU2V0Jik7CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50
U3RyZWFtJikgY29uc3Q7CiAgICAgCiBwcml2YXRlOgogI2lmIEVOQUJMRShERkdfSklUKQotICAg
IHN0YXRpYyBib29sIGhhc0V4aXRTaXRlKENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5k
ZXgpOworICAgIHN0YXRpYyBFeGl0RmxhZyBoYXNFeGl0U2l0ZShDb2RlQmxvY2sqLCB1bnNpZ25l
ZCBieXRlY29kZUluZGV4KTsKICNlbmRpZgogI2lmIEVOQUJMRShKSVQpCiAgICAgc3RhdGljIFB1
dEJ5SWRTdGF0dXMgY29tcHV0ZUZvclN0dWJJbmZvKApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCShyZXZpc2lvbiAyMzI0NDEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTIwNiw2ICsyMDYsMjYgQEAgYm9vbCBQdXRCeUlkVmFyaWFudDo6
YXR0ZW1wdFRvTWVyZ2VUcmFucwogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIFB1dEJ5SWRW
YXJpYW50OjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBtX29sZFN0
cnVjdHVyZS5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKKyAgICBpZiAobV9uZXdTdHJ1Y3R1cmUpCisg
ICAgICAgIG1fbmV3U3RydWN0dXJlLT5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKK30KKworYm9vbCBQ
dXRCeUlkVmFyaWFudDo6ZmluYWxpemUoKQoreworICAgIGlmICghbV9vbGRTdHJ1Y3R1cmUuaXNT
dGlsbEFsaXZlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9uZXdTdHJ1Y3R1
cmUgJiYgIUhlYXA6OmlzTWFya2VkKG1fbmV3U3RydWN0dXJlKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmICghbV9jb25kaXRpb25TZXQuYXJlU3RpbGxMaXZlKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBpZiAobV9jYWxsTGlua1N0YXR1cyAmJiAhbV9jYWxsTGlua1N0YXR1
cy0+ZmluYWxpemUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOwor
fQorCiB2b2lkIFB1dEJ5SWRWYXJpYW50OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7
CiAgICAgZHVtcEluQ29udGV4dChvdXQsIDApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmgJKHJldmlzaW9uIDIzMjQ0MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTczLDE3ICs3MywxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX29sZFN0
cnVjdHVyZTsKICAgICB9CiAgICAgCi0gICAgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVT
ZXQoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0cnVjdHVyZSgpOwotICAgIH0KLSAg
ICAKICAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIG9sZFN0cnVjdHVyZSgpIGNvbnN0CiAgICAgewog
ICAgICAgICBBU1NFUlQoa2luZCgpID09IFRyYW5zaXRpb24gfHwga2luZCgpID09IFJlcGxhY2Ug
fHwga2luZCgpID09IFNldHRlcik7CiAgICAgICAgIHJldHVybiBtX29sZFN0cnVjdHVyZTsKICAg
ICB9CiAgICAgCisgICAgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG9sZFN0cnVjdHVyZSgpOworICAgIH0KKyAgICAKICAgICBT
dHJ1Y3R1cmVTZXQmIG9sZFN0cnVjdHVyZSgpCiAgICAgewogICAgICAgICBBU1NFUlQoa2luZCgp
ID09IFRyYW5zaXRpb24gfHwga2luZCgpID09IFJlcGxhY2UgfHwga2luZCgpID09IFNldHRlcik7
CkBAIC0xMjksNiArMTI5LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBhdHRlbXB0VG9NZXJnZShj
b25zdCBQdXRCeUlkVmFyaWFudCYgb3RoZXIpOwogICAgIAorICAgIHZvaWQgbWFya0lmQ2hlYXAo
U2xvdFZpc2l0b3ImKTsKKyAgICBib29sIGZpbmFsaXplKCk7CisgICAgCiAgICAgdm9pZCBkdW1w
KFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFt
JiwgRHVtcENvbnRleHQqKSBjb25zdDsKIApAQCAtMTM3LDcgKzE0MCw3IEBAIHByaXZhdGU6CiAg
ICAgCiAgICAgS2luZCBtX2tpbmQ7CiAgICAgU3RydWN0dXJlU2V0IG1fb2xkU3RydWN0dXJlOwot
ICAgIFN0cnVjdHVyZSogbV9uZXdTdHJ1Y3R1cmU7CisgICAgU3RydWN0dXJlKiBtX25ld1N0cnVj
dHVyZSB7IG51bGxwdHIgfTsKICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBtX2NvbmRp
dGlvblNldDsKICAgICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKICAgICBJbmZlcnJlZFR5cGU6
OkRlc2NyaXB0b3IgbV9yZXF1aXJlZFR5cGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDEyMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVjb3Jk
ZWRTdGF0dXNlcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworUmVjb3JkZWRTdGF0dXNlcyYgUmVj
b3JkZWRTdGF0dXNlczo6b3BlcmF0b3I9KFJlY29yZGVkU3RhdHVzZXMmJiBvdGhlcikKK3sKKyAg
ICBjYWxscyA9IFdURk1vdmUob3RoZXIuY2FsbHMpOworICAgIGdldHMgPSBXVEZNb3ZlKG90aGVy
LmdldHMpOworICAgIHB1dHMgPSBXVEZNb3ZlKG90aGVyLnB1dHMpOworICAgIGlucyA9IFdURk1v
dmUob3RoZXIuaW5zKTsKKyAgICBzaHJpbmtUb0ZpdCgpOworICAgIHJldHVybiAqdGhpczsKK30K
KworUmVjb3JkZWRTdGF0dXNlczo6UmVjb3JkZWRTdGF0dXNlcyhSZWNvcmRlZFN0YXR1c2VzJiYg
b3RoZXIpCit7CisgICAgKnRoaXMgPSBXVEZNb3ZlKG90aGVyKTsKK30KKworQ2FsbExpbmtTdGF0
dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4m
IGNvZGVPcmlnaW4sIGNvbnN0IENhbGxMaW5rU3RhdHVzJiBzdGF0dXMpCit7CisgICAgYXV0byBz
dGF0dXNQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPENhbGxMaW5rU3RhdHVzPihzdGF0dXMpOworICAg
IENhbGxMaW5rU3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7CisgICAgY2FsbHMuYXBw
ZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3RhdHVzUHRyKSkpOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK0dldEJ5SWRTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFk
ZEdldEJ5SWRTdGF0dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgY29uc3QgR2V0QnlJ
ZFN0YXR1cyYgc3RhdHVzKQoreworICAgIGF1dG8gc3RhdHVzUHRyID0gc3RkOjptYWtlX3VuaXF1
ZTxHZXRCeUlkU3RhdHVzPihzdGF0dXMpOworICAgIEdldEJ5SWRTdGF0dXMqIHJlc3VsdCA9IHN0
YXR1c1B0ci5nZXQoKTsKKyAgICBnZXRzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihjb2RlT3JpZ2lu
LCBXVEZNb3ZlKHN0YXR1c1B0cikpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorICAgIAorUHV0
QnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkUHV0QnlJZFN0YXR1cyhjb25zdCBDb2Rl
T3JpZ2luJiBjb2RlT3JpZ2luLCBjb25zdCBQdXRCeUlkU3RhdHVzJiBzdGF0dXMpCit7CisgICAg
YXV0byBzdGF0dXNQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPFB1dEJ5SWRTdGF0dXM+KHN0YXR1cyk7
CisgICAgUHV0QnlJZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOworICAgIHB1dHMu
YXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3RhdHVzUHRyKSkpOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0luQnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6
YWRkSW5CeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0IEluQnlJ
ZFN0YXR1cyYgc3RhdHVzKQoreworICAgIGF1dG8gc3RhdHVzUHRyID0gc3RkOjptYWtlX3VuaXF1
ZTxJbkJ5SWRTdGF0dXM+KHN0YXR1cyk7CisgICAgSW5CeUlkU3RhdHVzKiByZXN1bHQgPSBzdGF0
dXNQdHIuZ2V0KCk7CisgICAgaW5zLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihjb2RlT3JpZ2luLCBX
VEZNb3ZlKHN0YXR1c1B0cikpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIFJlY29y
ZGVkU3RhdHVzZXM6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiBzbG90VmlzaXRvcikKK3sKKyAg
ICBmb3IgKGF1dG8mIHBhaXIgOiBnZXRzKQorICAgICAgICBwYWlyLnNlY29uZC0+bWFya0lmQ2hl
YXAoc2xvdFZpc2l0b3IpOworICAgIGZvciAoYXV0byYgcGFpciA6IHB1dHMpCisgICAgICAgIHBh
aXIuc2Vjb25kLT5tYXJrSWZDaGVhcChzbG90VmlzaXRvcik7CisgICAgZm9yIChhdXRvJiBwYWly
IDogaW5zKQorICAgICAgICBwYWlyLnNlY29uZC0+bWFya0lmQ2hlYXAoc2xvdFZpc2l0b3IpOwor
fQorCit2b2lkIFJlY29yZGVkU3RhdHVzZXM6OmZpbmFsaXplV2l0aG91dERlbGV0aW5nKCkKK3sK
KyAgICAvLyBUaGlzIHZhcmlhbnQgb2YgZmluYWxpemUgZ2V0cyBjYWxsZWQgZnJvbSB3aXRoaW4g
Z3JhcGggc2FmZXBvaW50cyAtLSBzbyB0aGVyZSBtYXkgYmUgREZHIElSIGluCisgICAgLy8gc29t
ZSBjb21waWxlciB0aHJlYWQgdGhhdCBwb2ludHMgdG8gdGhlIHN0YXR1c2VzLiBUaGF0IHRocmVh
ZCBpcyBzdG9wcGVkIGF0IGEgc2FmZXBvaW50IHNvCisgICAgLy8gaXQncyBPSyB0byBlZGl0IGl0
cyBkYXRhIHN0cnVjdHVyZSwgYnV0IGl0J3Mgbm90IE9LIHRvIGRlbGV0ZSB0aGVtLiBIZW5jZSB3
ZSBkb24ndCByZW1vdmUKKyAgICAvLyBhbnl0aGluZyBmcm9tIHRoZSB2ZWN0b3Igb3IgZGVsZXRl
IHRoZSB1bmlxdWVfcHRycy4KKyAgICAKKyAgICBhdXRvIGZpbmFsaXplID0gW10gKGF1dG8mIHZl
Y3RvcikgeworICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiB2ZWN0b3IpIHsKKyAgICAgICAgICAg
IGlmICghcGFpci5zZWNvbmQtPmZpbmFsaXplKCkpCisgICAgICAgICAgICAgICAgKnBhaXIuc2Vj
b25kID0geyB9OworICAgICAgICB9CisgICAgfTsKKyAgICBmb3JFYWNoVmVjdG9yKGZpbmFsaXpl
KTsKK30KKwordm9pZCBSZWNvcmRlZFN0YXR1c2VzOjpmaW5hbGl6ZSgpCit7CisgICAgYXV0byBm
aW5hbGl6ZSA9IFtdIChhdXRvJiB2ZWN0b3IpIHsKKyAgICAgICAgdmVjdG9yLnJlbW92ZUFsbE1h
dGNoaW5nKAorICAgICAgICAgICAgWyZdIChhdXRvJiBwYWlyKSAtPiBib29sIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gISpwYWlyLnNlY29uZCB8fCAhcGFpci5zZWNvbmQtPmZpbmFsaXplKCk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgdmVjdG9yLnNocmlua1RvRml0KCk7CisgICAgfTsK
KyAgICBmb3JFYWNoVmVjdG9yKGZpbmFsaXplKTsKK30KKwordm9pZCBSZWNvcmRlZFN0YXR1c2Vz
OjpzaHJpbmtUb0ZpdCgpCit7CisgICAgZm9yRWFjaFZlY3RvcihbXSAoYXV0byYgdmVjdG9yKSB7
IHZlY3Rvci5zaHJpbmtUb0ZpdCgpOyB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVz
ZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVj
b3JkZWRTdGF0dXNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgorI2luY2x1ZGUgIkdldEJ5SWRTdGF0dXMuaCIKKyNp
bmNsdWRlICJJbkJ5SWRTdGF0dXMuaCIKKyNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgUmVjb3JkZWRTdGF0dXNlcyB7CisgICAgUmVjb3JkZWRT
dGF0dXNlcygpIHsgfQorICAgIAorICAgIFJlY29yZGVkU3RhdHVzZXMmIG9wZXJhdG9yPShjb25z
dCBSZWNvcmRlZFN0YXR1c2VzJiBvdGhlcikgPSBkZWxldGU7CisgICAgCisgICAgUmVjb3JkZWRT
dGF0dXNlcyYgb3BlcmF0b3I9KFJlY29yZGVkU3RhdHVzZXMmJiBvdGhlcik7CisgICAgCisgICAg
UmVjb3JkZWRTdGF0dXNlcyhjb25zdCBSZWNvcmRlZFN0YXR1c2VzJiBvdGhlcikgPSBkZWxldGU7
CisgICAgCisgICAgUmVjb3JkZWRTdGF0dXNlcyhSZWNvcmRlZFN0YXR1c2VzJiYgb3RoZXIpOwor
ICAgIAorICAgIENhbGxMaW5rU3RhdHVzKiBhZGRDYWxsTGlua1N0YXR1cyhjb25zdCBDb2RlT3Jp
Z2luJiwgY29uc3QgQ2FsbExpbmtTdGF0dXMmKTsKKyAgICBHZXRCeUlkU3RhdHVzKiBhZGRHZXRC
eUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mLCBjb25zdCBHZXRCeUlkU3RhdHVzJik7CisgICAg
UHV0QnlJZFN0YXR1cyogYWRkUHV0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29uc3Qg
UHV0QnlJZFN0YXR1cyYpOworICAgIEluQnlJZFN0YXR1cyogYWRkSW5CeUlkU3RhdHVzKGNvbnN0
IENvZGVPcmlnaW4mLCBjb25zdCBJbkJ5SWRTdGF0dXMmKTsKKyAgICAKKyAgICB2b2lkIG1hcmtJ
ZkNoZWFwKFNsb3RWaXNpdG9yJiBzbG90VmlzaXRvcik7CisgICAgCisgICAgdm9pZCBmaW5hbGl6
ZVdpdGhvdXREZWxldGluZygpOworICAgIHZvaWQgZmluYWxpemUoKTsKKyAgICAKKyAgICB2b2lk
IHNocmlua1RvRml0KCk7CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2
b2lkIGZvckVhY2hWZWN0b3IoY29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIGZ1bmMo
Y2FsbHMpOworICAgICAgICBmdW5jKGdldHMpOworICAgICAgICBmdW5jKHB1dHMpOworICAgICAg
ICBmdW5jKGlucyk7CisgICAgfQorICAgIAorICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29kZU9yaWdp
biwgc3RkOjp1bmlxdWVfcHRyPENhbGxMaW5rU3RhdHVzPj4+IGNhbGxzOworICAgIFZlY3Rvcjxz
dGQ6OnBhaXI8Q29kZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPEdldEJ5SWRTdGF0dXM+Pj4gZ2V0
czsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxQdXRC
eUlkU3RhdHVzPj4+IHB1dHM7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6
OnVuaXF1ZV9wdHI8SW5CeUlkU3RhdHVzPj4+IGluczsKK307CisKK30gLy8gbmFtZXNwYWNlIEpT
QworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U2V0LmNwcAkocmV2aXNpb24gMjMyNDQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1N0cnVjdHVyZVNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNiArMzEsMjEgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKK3ZvaWQgU3RydWN0dXJlU2V0OjptYXJrSWZDaGVhcChTbG90
VmlzaXRvciYgdmlzaXRvcikgY29uc3QKK3sKKyAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJl
IDogKnRoaXMpCisgICAgICAgIHN0cnVjdHVyZS0+bWFya0lmQ2hlYXAodmlzaXRvcik7Cit9CisK
K2Jvb2wgU3RydWN0dXJlU2V0Ojppc1N0aWxsQWxpdmUoKSBjb25zdAoreworICAgIGZvciAoU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgOiAqdGhpcykgeworICAgICAgICBpZiAoIUhlYXA6OmlzTWFya2Vk
KHN0cnVjdHVyZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVy
biB0cnVlOworfQorCiB2b2lkIFN0cnVjdHVyZVNldDo6ZHVtcEluQ29udGV4dChQcmludFN0cmVh
bSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QKIHsKICAgICBDb21tYVByaW50ZXIg
Y29tbWE7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVNldC5oCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvU3RydWN0dXJlU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDExLCAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01OCw2ICs1OCw5IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBvbmx5RW50cnkoKTsKICAgICB9CisKKyAg
ICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJikgY29uc3Q7CisgICAgYm9vbCBpc1N0aWxs
QWxpdmUoKSBjb25zdDsKICAgICAKICAgICB2b2lkIGR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0m
LCBEdW1wQ29udGV4dCopIGNvbnN0OwogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Rlcm1pbmF0ZWRDb2RlT3Jp
Z2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Rlcm1p
bmF0ZWRDb2RlT3JpZ2luLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1Rlcm1pbmF0ZWRDb2RlT3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK3N0cnVjdCBJbmxpbmVDYWxsRnJhbWU7CisKK3N0cnVjdCBUZXJtaW5hdGVkQ29kZU9yaWdp
biB7CisgICAgVGVybWluYXRlZENvZGVPcmlnaW4oKSB7IH0KKyAgICAKKyAgICBUZXJtaW5hdGVk
Q29kZU9yaWdpbihjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBJbmxpbmVDYWxsRnJhbWUq
IHRlcm1pbmFsKQorICAgICAgICA6IGNvZGVPcmlnaW4oY29kZU9yaWdpbikKKyAgICAgICAgLCB0
ZXJtaW5hbCh0ZXJtaW5hbCkKKyAgICB7CisgICAgfQorICAgIAorICAgIENvZGVPcmlnaW4gY29k
ZU9yaWdpbjsKKyAgICBJbmxpbmVDYWxsRnJhbWUqIHRlcm1pbmFsIHsgbnVsbHB0ciB9OworfTsK
Kworc3RydWN0IFRlcm1pbmF0ZWRDb2RlT3JpZ2luSGFzaFRyYW5zbGF0b3IgeworICAgIHN0YXRp
YyB1bnNpZ25lZCBoYXNoKGNvbnN0IFRlcm1pbmF0ZWRDb2RlT3JpZ2luJiB2YWx1ZSkKKyAgICB7
CisgICAgICAgIHJldHVybiB2YWx1ZS5jb2RlT3JpZ2luLmFwcHJveGltYXRlSGFzaCh2YWx1ZS50
ZXJtaW5hbCk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IENvZGVP
cmlnaW4mIGEsIGNvbnN0IFRlcm1pbmF0ZWRDb2RlT3JpZ2luJiBiKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGIuY29kZU9yaWdpbi5pc0FwcHJveGltYXRlbHlFcXVhbFRvKGEsIGIudGVybWluYWwp
OworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuY3BwCShyZXZpc2lvbiAyMzI0NDEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIwMywzICsyMDMsMjMgQEAgdm9pZCBEZWZlcnJlZFdhdGNocG9pbnRGaXJlOjp0
YWtlV2F0Y2hwbwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAorbmFtZXNwYWNlIFdURiB7CisKK3Zv
aWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OldhdGNocG9pbnRTdGF0ZSBz
dGF0ZSkKK3sKKyAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgY2FzZSBKU0M6OkNsZWFyV2F0Y2hw
b2ludDoKKyAgICAgICAgb3V0LnByaW50KCJDbGVhcldhdGNocG9pbnQiKTsKKyAgICAgICAgcmV0
dXJuOworICAgIGNhc2UgSlNDOjpJc1dhdGNoZWQ6CisgICAgICAgIG91dC5wcmludCgiSXNXYXRj
aGVkIik7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEpTQzo6SXNJbnZhbGlkYXRlZDoKKyAg
ICAgICAgb3V0LnByaW50KCJJc0ludmFsaWRhdGVkIik7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V1RGCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQu
aAkocmV2aXNpb24gMjMyNDQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dh
dGNocG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQ4LDMgKzQ0OCwxMCBAQCBwcml2YXRlOgog
fTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBXVEYgeworCit2b2lkIHByaW50
SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSlNDOjpXYXRjaHBvaW50U3RhdGUpOworCit9IC8v
IG5hbWVzcGFjZSBXVEYKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVyLmgJKHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTIsNiArMjEyLDggQEAgcHVibGljOgogICAgIAogICAgIFBoaUNoaWxkcmVuKiBwaGlD
aGlsZHJlbigpIHsgcmV0dXJuIG1fcGhpQ2hpbGRyZW4uZ2V0KCk7IH0KICAgICAKKyAgICB2b2lk
IGZpbHRlcklDU3RhdHVzKE5vZGUqKTsKKyAgICAKIHByaXZhdGU6CiAgICAgdm9pZCBjbG9iYmVy
V29ybGQoKTsKICAgICB2b2lkIGRpZEZvbGRDbG9iYmVyV29ybGQoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgJKHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzUwOSw2
ICszNTA5LDEwIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAg
ICBjYXNlIExvb3BIaW50OgogICAgIGNhc2UgWm9tYmllSGludDoKICAgICBjYXNlIEV4aXRPSzoK
KyAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0
YXR1czoKKyAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJJbkJ5
SWRTdGF0dXM6CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDaGVja1R5cGVJbmZvRmxhZ3M6
IHsKQEAgLTM2MjksNiArMzYzMyw0MiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFic3RyYWN0U3RhdGVUeXBlPgordm9p
ZCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZmlsdGVySUNTdGF0dXMo
Tm9kZSogbm9kZSkKK3sKKyAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKKyAgICBjYXNlIEZpbHRl
ckNhbGxMaW5rU3RhdHVzOgorICAgICAgICBpZiAoSlNWYWx1ZSB2YWx1ZSA9IGZvck5vZGUobm9k
ZS0+Y2hpbGQxKCkpLm1fdmFsdWUpCisgICAgICAgICAgICBub2RlLT5jYWxsTGlua1N0YXR1cygp
LT5maWx0ZXIobV92bSwgdmFsdWUpOworICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgY2Fz
ZSBGaWx0ZXJHZXRCeUlkU3RhdHVzOiB7CisgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0g
Zm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5p
c0Zpbml0ZSgpKQorICAgICAgICAgICAgbm9kZS0+Z2V0QnlJZFN0YXR1cygpLT5maWx0ZXIodmFs
dWUubV9zdHJ1Y3R1cmUudG9TdHJ1Y3R1cmVTZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICAgICAgCisgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6IHsKKyAgICAgICAgQWJzdHJh
Y3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgaWYgKHZh
bHVlLm1fc3RydWN0dXJlLmlzRmluaXRlKCkpCisgICAgICAgICAgICBub2RlLT5pbkJ5SWRTdGF0
dXMoKS0+ZmlsdGVyKHZhbHVlLm1fc3RydWN0dXJlLnRvU3RydWN0dXJlU2V0KCkpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgICAgIAorICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czog
eworICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICBpZiAodmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkKKyAgICAgICAgICAg
IG5vZGUtPnB1dEJ5SWRTdGF0dXMoKS0+ZmlsdGVyKHZhbHVlLm1fc3RydWN0dXJlLnRvU3RydWN0
dXJlU2V0KCkpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBkZWZhdWx0OgorICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIEFic3RyYWN0U3RhdGVUeXBlPgogYm9vbCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgaW5k
ZXhJbkJsb2NrKQogewogICAgIHJldHVybiBleGVjdXRlRWZmZWN0cyhpbmRleEluQmxvY2ssIG1f
c3RhdGUuYmxvY2soKS0+YXQoaW5kZXhJbkJsb2NrKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMjMyNDQxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwODAsOSArMTA4MCw4IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIGNvZGUg
YmxvY2sgaGFkIGdhdGhlcmVkLgogICAgICAgICBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNl
ciBtX2xhenlPcGVyYW5kczsKICAgICAgICAgCi0gICAgICAgIENhbGxMaW5rSW5mb01hcCBtX2Nh
bGxMaW5rSW5mb3M7Ci0gICAgICAgIFN0dWJJbmZvTWFwIG1fc3R1YkluZm9zOwotICAgICAgICBC
eVZhbEluZm9NYXAgbV9ieVZhbEluZm9zOworICAgICAgICBJQ1N0YXR1c01hcCBtX2Jhc2VsaW5l
TWFwOworICAgICAgICBJQ1N0YXR1c0NvbnRleHQgbV9vcHRpbWl6ZWRDb250ZXh0OwogICAgICAg
ICAKICAgICAgICAgLy8gUG9pbnRlcnMgdG8gdGhlIGFyZ3VtZW50IHBvc2l0aW9uIHRyYWNrZXJz
IGZvciB0aGlzIHNsaWNlIG9mIGNvZGUuCiAgICAgICAgIFZlY3RvcjxBcmd1bWVudFBvc2l0aW9u
Kj4gbV9hcmd1bWVudFBvc2l0aW9uczsKQEAgLTExMDAsMTAgKzEwOTksNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lOjpLaW5kLAogICAgICAgICAgICAgQmFzaWNCbG9j
ayogY29udGludWF0aW9uQmxvY2spOwogICAgICAgICAKLSAgICAgICAgfklubGluZVN0YWNrRW50
cnkoKQotICAgICAgICB7Ci0gICAgICAgICAgICBtX2J5dGVDb2RlUGFyc2VyLT5tX2lubGluZVN0
YWNrVG9wID0gbV9jYWxsZXI7Ci0gICAgICAgIH0KKyAgICAgICAgfklubGluZVN0YWNrRW50cnko
KTsKICAgICAgICAgCiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZW1hcE9wZXJhbmQoVmlydHVh
bFJlZ2lzdGVyIG9wZXJhbmQpIGNvbnN0CiAgICAgICAgIHsKQEAgLTExMTgsNiArMTExNCw4IEBA
IHByaXZhdGU6CiAgICAgCiAgICAgSW5saW5lU3RhY2tFbnRyeSogbV9pbmxpbmVTdGFja1RvcDsK
ICAgICAKKyAgICBJQ1N0YXR1c0NvbnRleHRTdGFjayBtX2ljQ29udGV4dFN0YWNrOworICAgIAog
ICAgIHN0cnVjdCBEZWxheWVkU2V0TG9jYWwgewogICAgICAgICBDb2RlT3JpZ2luIG1fb3JpZ2lu
OwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV9vcGVyYW5kOwpAQCAtMTE0NCwxMCArMTE0Miw2
IEBAIHByaXZhdGU6CiAgICAgCiAgICAgVmVjdG9yPERlbGF5ZWRTZXRMb2NhbCwgMj4gbV9zZXRM
b2NhbFF1ZXVlOwogCi0gICAgQ29kZUJsb2NrKiBtX2RmZ0NvZGVCbG9jazsKLSAgICBDYWxsTGlu
a1N0YXR1czo6Q29udGV4dE1hcCBtX2NhbGxDb250ZXh0TWFwOwotICAgIFN0dWJJbmZvTWFwIG1f
ZGZnU3R1YkluZm9zOwotICAgIAogICAgIEluc3RydWN0aW9uKiBtX2N1cnJlbnRJbnN0cnVjdGlv
bjsKICAgICBib29sIG1faGFzRGVidWdnZXJFbmFibGVkOwogfTsKQEAgLTEyMTIsNyArMTIwNiw3
IEBAIEJ5dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnMKIAogICAgIENhbGxM
aW5rU3RhdHVzIGNhbGxMaW5rU3RhdHVzID0gQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgY3VycmVudENvZGVPcmln
aW4oKSwKLSAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsTGlua0luZm9zLCBtX2NhbGxD
b250ZXh0TWFwKTsKKyAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwgbV9p
Y0NvbnRleHRTdGFjayk7CiAKICAgICBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCA9IElubGlu
ZUNhbGxGcmFtZTo6a2luZEZvcihjYWxsTW9kZSk7CiAKQEAgLTEyNDAsNiArMTIzNCw4IEBAIEJ5
dGVDb2RlUGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnMKICAgICAvLyBJZiB3ZSBoYXZl
IHByb2ZpbGluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIGNhbGwsIGFuZCBpdCBkaWQgbm90IGJl
aGF2ZSB0b28gcG9seW1vcnBoaWNhbGx5LAogICAgIC8vIHdlIG1heSBiZSBhYmxlIHRvIGlubGlu
ZSBpdCwgb3IgaW4gdGhlIGNhc2Ugb2YgcmVjdXJzaXZlIHRhaWwgY2FsbHMgdHVybiBpdCBpbnRv
IGEganVtcC4KICAgICBpZiAoY2FsbExpbmtTdGF0dXMuY2FuT3B0aW1pemUoKSkgeworICAgICAg
ICBhZGRUb0dyYXBoKEZpbHRlckNhbGxMaW5rU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4u
cmVjb3JkZWRTdGF0dXNlcy5hZGRDYWxsTGlua1N0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBj
YWxsTGlua1N0YXR1cykpLCBjYWxsVGFyZ2V0KTsKKyAgICAgICAgCiAgICAgICAgIFZpcnR1YWxS
ZWdpc3RlciB0aGlzQXJndW1lbnQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgwLCByZWdp
c3Rlck9mZnNldCk7CiAgICAgICAgIGF1dG8gb3B0aW1pemF0aW9uUmVzdWx0ID0gaGFuZGxlSW5s
aW5pbmcoY2FsbFRhcmdldCwgcmVzdWx0LCBjYWxsTGlua1N0YXR1cywgcmVnaXN0ZXJPZmZzZXQs
IHRoaXNBcmd1bWVudCwKICAgICAgICAgICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBt
X2N1cnJlbnRJbmRleCArIGluc3RydWN0aW9uU2l6ZSwgb3AsIGtpbmQsIHByZWRpY3Rpb24pOwpA
QCAtMTI3NywxMiArMTI3MywxNCBAQCBCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0ZUNv
ZGVQYXJzCiAgICAgCiAgICAgQ2FsbExpbmtTdGF0dXMgY2FsbExpbmtTdGF0dXMgPSBDYWxsTGlu
a1N0YXR1czo6Y29tcHV0ZUZvcigKICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrLCBjdXJyZW50Q29kZU9yaWdpbigpLAotICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5t
X2NhbGxMaW5rSW5mb3MsIG1fY2FsbENvbnRleHRNYXApOworICAgICAgICBtX2lubGluZVN0YWNr
VG9wLT5tX2Jhc2VsaW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrKTsKICAgICByZWZpbmVTdGF0aWNh
bGx5KGNhbGxMaW5rU3RhdHVzLCBjYWxsVGFyZ2V0KTsKICAgICAKICAgICBWRVJCT1NFX0xPRygi
ICAgIFZhcmFyZ3MgY2FsbCBsaW5rIHN0YXR1cyBhdCAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAi
OiAiLCBjYWxsTGlua1N0YXR1cywgIlxuIik7CiAgICAgCiAgICAgaWYgKGNhbGxMaW5rU3RhdHVz
LmNhbk9wdGltaXplKCkpIHsKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJDYWxsTGlua1N0YXR1
cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkQ2FsbExpbmtTdGF0
dXMoY3VycmVudENvZGVPcmlnaW4oKSwgY2FsbExpbmtTdGF0dXMpKSwgY2FsbFRhcmdldCk7Cisg
ICAgICAgIAogICAgICAgICBpZiAoaGFuZGxlVmFyYXJnc0lubGluaW5nKGNhbGxUYXJnZXQsIHJl
c3VsdCwKICAgICAgICAgICAgIGNhbGxMaW5rU3RhdHVzLCBmaXJzdEZyZWVSZWcsIFZpcnR1YWxS
ZWdpc3Rlcih0aGlzUmVnKSwgVmlydHVhbFJlZ2lzdGVyKGFyZ3VtZW50cyksCiAgICAgICAgICAg
ICBmaXJzdFZhckFyZ09mZnNldCwgb3AsCkBAIC0zMzE2LDkgKzMzMTQsMTIgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKAogICAgIGlmICghY2hlY2sodmFyaWFudC5j
b25kaXRpb25TZXQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBhZGRUb0dyYXBoKENo
ZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5zdHJ1
Y3R1cmVTZXQoKSkpLCB0aGlzTm9kZSk7Ci0KKyAgICAKICAgICAvLyBXZSBkbyBub3QgbmVlZCB0
byBlbWl0IENoZWNrQ2VsbCB0aGluZ3kgaGVyZS4gV2hlbiB0aGUgY3VzdG9tIGFjY2Vzc29yIGlz
IHJlcGxhY2VkIHRvIGRpZmZlcmVudCBvbmUsIFN0cnVjdHVyZSB0cmFuc2l0aW9uIG9jY3Vycy4K
ICAgICBhZGRUb0dyYXBoKENoZWNrU3ViQ2xhc3MsIE9wSW5mbyhkb21BdHRyaWJ1dGUuY2xhc3NJ
bmZvKSwgdGhpc05vZGUpOworICAgIAorICAgIGJvb2wgd2FzU2VlbkluSklUID0gdHJ1ZTsKKyAg
ICBhZGRUb0dyYXBoKEZpbHRlckdldEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5y
ZWNvcmRlZFN0YXR1c2VzLmFkZEdldEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgR2V0
QnlJZFN0YXR1cyhHZXRCeUlkU3RhdHVzOjpDdXN0b20sIHdhc1NlZW5JbkpJVCwgdmFyaWFudCkp
KSwgdGhpc05vZGUpOwogCiAgICAgQ2FsbERPTUdldHRlckRhdGEqIGNhbGxET01HZXR0ZXJEYXRh
ID0gbV9ncmFwaC5tX2NhbGxET01HZXR0ZXJEYXRhLmFkZCgpOwogICAgIGNhbGxET01HZXR0ZXJE
YXRhLT5jdXN0b21BY2Nlc3NvckdldHRlciA9IHZhcmlhbnQuY3VzdG9tQWNjZXNzb3JHZXR0ZXIo
KTsKQEAgLTMzNTAsNiArMzM1MSw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZU1vZHVs
ZU5hbWVzcGEKICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0
U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2VsbCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBhZGRUb0dyYXBoKENoZWNrQ2VsbCwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKGdldEJ5SWQubW9k
dWxlTmFtZXNwYWNlT2JqZWN0KCkpKSwgRWRnZShiYXNlLCBDZWxsVXNlKSk7CisgICAgCisgICAg
YWRkVG9HcmFwaChGaWx0ZXJHZXRCeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVj
b3JkZWRTdGF0dXNlcy5hZGRHZXRCeUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIGdldEJ5
SWQpKSwgYmFzZSk7CiAKICAgICAvLyBJZGVhbGx5IHdlIHdvdWxkbid0IGhhdmUgdG8gZG8gdGhp
cyBQaGFudG9tLiBCdXQ6CiAgICAgLy8KQEAgLTQwMDUsMTQgKzQwMDgsMjEgQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAK
KyAgICAvLyBGSVhNRTogSWYgd2UgdXNlIHRoZSBHZXRCeUlkU3RhdHVzIGZvciBhbnl0aGluZyB0
aGVuIHdlIHNob3VsZCByZWNvcmQgaXQgYW5kIGluc2VydCBhIG5vZGUKKyAgICAvLyBhZnRlciBl
dmVyeXRoaW5nIGVsc2UgKGxpa2UgdGhlIEdldEJ5T2Zmc2V0IG9yIHdoYXRldmVyKSB0aGF0IHdp
bGwgZmlsdGVyIHRoZSByZWNvcmRlZAorICAgIC8vIEdldEJ5SWRTdGF0dXMuIFRoYXQgbWVhbnMg
dGhhdCB0aGUgY29uc3RhbnQgZm9sZGVyIGFsc28gbmVlZHMgdG8gZG8gdGhlIHNhbWUhCisgICAg
CiAgICAgaWYgKGdldEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSA+IDEpIHsKICAgICAgICAgaWYg
KGdldEJ5SWRTdGF0dXMubWFrZXNDYWxscygpIHx8ICFpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2Rl
KQotICAgICAgICAgICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmco
KSkgeworICAgICAgICAgICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5p
bmcoKQorICAgICAgICAgICAgfHwgZ2V0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpID4gT3B0aW9u
czo6bWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplKCkpIHsKICAgICAgICAgICAg
IHNldChWaXJ0dWFsUmVnaXN0ZXIoZGVzdGluYXRpb25PcGVyYW5kKSwKICAgICAgICAgICAgICAg
ICBhZGRUb0dyYXBoKGdldEJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSwgT3BJbmZvKHBy
ZWRpY3Rpb24pLCBiYXNlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgCisgICAgICAgIGFkZFRvR3JhcGgoRmlsdGVyR2V0QnlJZFN0YXR1cywgT3BJbmZvKG1fZ3Jh
cGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkR2V0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9y
aWdpbigpLCBnZXRCeUlkU3RhdHVzKSksIGJhc2UpOworICAgICAgICAKICAgICAgICAgVmVjdG9y
PE11bHRpR2V0QnlPZmZzZXRDYXNlLCAyPiBjYXNlczsKICAgICAgICAgCiAgICAgICAgIC8vIDEp
IEVtaXQgcHJvdG90eXBlIHN0cnVjdHVyZSBjaGVja3MgZm9yIGFsbCBjaGFpbnMuIFRoaXMgY291
bGQgc29ydCBvZiBtYXliZSBub3QgYmUKQEAgLTQwNTQsMTAgKzQwNjQsMTIgQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICAgICAgICAgIGFkZFRvR3JhcGgoTXVsdGlH
ZXRCeU9mZnNldCwgT3BJbmZvKGRhdGEpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGFkZFRvR3JhcGgoRmlsdGVyR2V0QnlJZFN0YXR1
cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkR2V0QnlJZFN0YXR1
cyhjdXJyZW50Q29kZU9yaWdpbigpLCBnZXRCeUlkU3RhdHVzKSksIGJhc2UpOwogICAgIAogICAg
IEFTU0VSVChnZXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgPT0gMSk7CiAgICAgR2V0QnlJZFZh
cmlhbnQgdmFyaWFudCA9IGdldEJ5SWRTdGF0dXNbMF07Ci0gICAgICAgICAgICAgICAgCisgICAg
CiAgICAgTm9kZSogbG9hZGVkVmFsdWUgPSBsb2FkKHByZWRpY3Rpb24sIGJhc2UsIGlkZW50aWZp
ZXJOdW1iZXIsIHZhcmlhbnQpOwogICAgIGlmICghbG9hZGVkVmFsdWUpIHsKICAgICAgICAgc2V0
KFZpcnR1YWxSZWdpc3RlcihkZXN0aW5hdGlvbk9wZXJhbmQpLApAQCAtNDE0OCw3ICs0MTYwLDgg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICAKICAgICBpZiAocHV0
QnlJZFN0YXR1cy5udW1WYXJpYW50cygpID4gMSkgewogICAgICAgICBpZiAoIWlzRlRMKG1fZ3Jh
cGgubV9wbGFuLm1vZGUpIHx8IHB1dEJ5SWRTdGF0dXMubWFrZXNDYWxscygpCi0gICAgICAgICAg
ICB8fCAhT3B0aW9uczo6dXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZygpKSB7CisgICAgICAg
ICAgICB8fCAhT3B0aW9uczo6dXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZygpCisgICAgICAg
ICAgICB8fCBwdXRCeUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgPiBPcHRpb25zOjptYXhQb2x5bW9y
cGhpY0FjY2Vzc0lubGluaW5nTGlzdFNpemUoKSkgewogICAgICAgICAgICAgZW1pdFB1dEJ5SWQo
YmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0KTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNDE2Niw2ICs0MTc5LDggQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICAgICAgCiAgICAgICAgIGlmIChV
TkxJS0VMWShtX2dyYXBoLmNvbXBpbGF0aW9uKCkpKQogICAgICAgICAgICAgbV9ncmFwaC5jb21w
aWxhdGlvbigpLT5ub3RpY2VJbmxpbmVkUHV0QnlJZCgpOworICAgICAgICAKKyAgICAgICAgYWRk
VG9HcmFwaChGaWx0ZXJQdXRCeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3Jk
ZWRTdGF0dXNlcy5hZGRQdXRCeUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIHB1dEJ5SWRT
dGF0dXMpKSwgYmFzZSk7CiAKICAgICAgICAgZm9yIChjb25zdCBQdXRCeUlkVmFyaWFudCYgdmFy
aWFudCA6IHB1dEJ5SWRTdGF0dXMudmFyaWFudHMoKSkgewogICAgICAgICAgICAgbV9ncmFwaC5y
ZWdpc3RlckluZmVycmVkVHlwZSh2YXJpYW50LnJlcXVpcmVkVHlwZSgpKTsKQEAgLTQxODcsNiAr
NDIwMiw4IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgCiAgICAg
c3dpdGNoICh2YXJpYW50LmtpbmQoKSkgewogICAgIGNhc2UgUHV0QnlJZFZhcmlhbnQ6OlJlcGxh
Y2U6IHsKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJQdXRCeUlkU3RhdHVzLCBPcEluZm8obV9n
cmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcy5hZGRQdXRCeUlkU3RhdHVzKGN1cnJlbnRDb2Rl
T3JpZ2luKCksIHB1dEJ5SWRTdGF0dXMpKSwgYmFzZSk7CisgICAgICAgIAogICAgICAgICBzdG9y
ZShiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YXJpYW50LCB2YWx1ZSk7CiAgICAgICAgIGlmIChV
TkxJS0VMWShtX2dyYXBoLmNvbXBpbGF0aW9uKCkpKQogICAgICAgICAgICAgbV9ncmFwaC5jb21w
aWxhdGlvbigpLT5ub3RpY2VJbmxpbmVkUHV0QnlJZCgpOwpAQCAtNDE5NCw2ICs0MjExLDggQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICB9CiAgICAgCiAgICAgY2Fz
ZSBQdXRCeUlkVmFyaWFudDo6VHJhbnNpdGlvbjogeworICAgICAgICBhZGRUb0dyYXBoKEZpbHRl
clB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFk
ZFB1dEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0YXR1cykpLCBiYXNl
KTsKKyAgICAgICAgCiAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyht
X2dyYXBoLmFkZFN0cnVjdHVyZVNldCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSksIGJhc2UpOwog
ICAgICAgICBpZiAoIWNoZWNrKHZhcmlhbnQuY29uZGl0aW9uU2V0KCkpKSB7CiAgICAgICAgICAg
ICBlbWl0UHV0QnlJZChiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1
cywgaXNEaXJlY3QpOwpAQCAtNDI2MSw2ICs0MjgwLDggQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlUHV0QnlJZCgKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgUHV0QnlJZFZhcmlhbnQ6
OlNldHRlcjogeworICAgICAgICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE9wSW5m
byhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFkZFB1dEJ5SWRTdGF0dXMoY3VycmVu
dENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0YXR1cykpLCBiYXNlKTsKKyAgICAgICAgCiAgICAgICAg
IE5vZGUqIGxvYWRlZFZhbHVlID0gbG9hZChTcGVjQ2VsbE90aGVyLCBiYXNlLCBpZGVudGlmaWVy
TnVtYmVyLCB2YXJpYW50KTsKICAgICAgICAgaWYgKCFsb2FkZWRWYWx1ZSkgewogICAgICAgICAg
ICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0
dXMsIGlzRGlyZWN0KTsKQEAgLTQ0OTcsNiArNDUxOCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQmxvY2sodW5zaWduZWQKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3Jh
cGguZnJlZXplKHJhcmVEYXRhKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBo
LndhdGNocG9pbnRzKCkuYWRkTGF6aWx5KHJhcmVEYXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNo
cG9pbnRTZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gVGhlIGNhbGxlZSBpcyBzdGlsbCBsaXZlIHVwIHRvIHRoaXMgcG9p
bnQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxs
ZWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUqIG9iamVjdCA9IGFkZFRvR3Jh
cGgoTmV3T2JqZWN0LCBPcEluZm8obV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUp
KSk7CkBAIC00NzkyLDcgKzQ4MTQsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KHVuc2lnbmVkCiAgICAgICAgICAgICBhdXRvJiBieXRlY29kZSA9ICpyZWludGVycHJldF9jYXN0
PE9wSW5zdGFuY2VvZio+KGN1cnJlbnRJbnN0cnVjdGlvbik7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIEluc3RhbmNlT2ZTdGF0dXMgc3RhdHVzID0gSW5zdGFuY2VPZlN0YXR1czo6Y29tcHV0
ZUZvcigKLSAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ss
IG1faW5saW5lU3RhY2tUb3AtPm1fc3R1YkluZm9zLAorICAgICAgICAgICAgICAgIG1faW5saW5l
U3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1h
cCwKICAgICAgICAgICAgICAgICBtX2N1cnJlbnRJbmRleCk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIE5vZGUqIHZhbHVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS52YWx1ZSgp
KSk7CkBAIC01MDMxLDcgKzUwNTMsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KHVuc2lnbmVkCiAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gMDsKICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1f
aW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgICAg
ICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IG1faW5saW5lU3RhY2tUb3AtPm1fYnlWYWxJbmZvcy5n
ZXQoQ29kZU9yaWdpbihjdXJyZW50Q29kZU9yaWdpbigpLmJ5dGVjb2RlSW5kZXgpKTsKKyAgICAg
ICAgICAgICAgICBCeVZhbEluZm8qIGJ5VmFsSW5mbyA9IG1faW5saW5lU3RhY2tUb3AtPm1fYmFz
ZWxpbmVNYXAuZ2V0KENvZGVPcmlnaW4oY3VycmVudENvZGVPcmlnaW4oKS5ieXRlY29kZUluZGV4
KSkuYnlWYWxJbmZvOwogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXaGVuIHRoZSBieXRlY29k
ZSBpcyBub3QgY29tcGlsZWQgaW4gdGhlIGJhc2VsaW5lIEpJVCwgYnlWYWxJbmZvIGJlY29tZXMg
bnVsbC4KICAgICAgICAgICAgICAgICAvLyBBdCB0aGF0IHRpbWUsIHRoZXJlIGlzIG5vIGluZm9y
bWF0aW9uLgogICAgICAgICAgICAgICAgIGlmIChieVZhbEluZm8KQEAgLTUxMDAsNyArNTEyMiw3
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAg
ICAgICBQdXRCeUlkU3RhdHVzIHB1dEJ5SWRTdGF0dXM7CiAgICAgICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1faW5saW5lU3RhY2tU
b3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICAgICAgQnlWYWxJ
bmZvKiBieVZhbEluZm8gPSBtX2lubGluZVN0YWNrVG9wLT5tX2J5VmFsSW5mb3MuZ2V0KENvZGVP
cmlnaW4oY3VycmVudENvZGVPcmlnaW4oKS5ieXRlY29kZUluZGV4KSk7CisgICAgICAgICAgICAg
ICAgICAgIEJ5VmFsSW5mbyogYnlWYWxJbmZvID0gbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGlu
ZU1hcC5nZXQoQ29kZU9yaWdpbihjdXJyZW50Q29kZU9yaWdpbigpLmJ5dGVjb2RlSW5kZXgpKS5i
eVZhbEluZm87CiAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXaGVuIHRoZSBieXRlY29k
ZSBpcyBub3QgY29tcGlsZWQgaW4gdGhlIGJhc2VsaW5lIEpJVCwgYnlWYWxJbmZvIGJlY29tZXMg
bnVsbC4KICAgICAgICAgICAgICAgICAgICAgLy8gQXQgdGhhdCB0aW1lLCB0aGVyZSBpcyBubyBp
bmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICAgICAgaWYgKGJ5VmFsSW5mbyAKQEAgLTUyMDYs
OCArNTIyOCw4IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGgu
aWRlbnRpZmllcnMoKVtpZGVudGlmaWVyTnVtYmVyXTsKICAgICAgICAgICAgIEdldEJ5SWRTdGF0
dXMgZ2V0QnlJZFN0YXR1cyA9IEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgICAgICAg
ICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBtX2RmZ0NvZGVCbG9jaywK
LSAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3N0dWJJbmZvcywgbV9kZmdTdHVi
SW5mb3MsCisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2Nr
LAorICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWND
b250ZXh0U3RhY2ssCiAgICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSwgdWlkKTsK
IAogICAgICAgICAgICAgQWNjZXNzVHlwZSB0eXBlID0gQWNjZXNzVHlwZTo6R2V0OwpAQCAtNTI1
MCw4ICs1MjcyLDggQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAog
ICAgICAgICAgICAgYm9vbCBkaXJlY3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bOF0udS5wdXRCeUlk
RmxhZ3MgJiBQdXRCeUlkSXNEaXJlY3Q7CiAKICAgICAgICAgICAgIFB1dEJ5SWRTdGF0dXMgcHV0
QnlJZFN0YXR1cyA9IFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgICAgICAgICAgICAg
bV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBtX2RmZ0NvZGVCbG9jaywKLSAgICAg
ICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3N0dWJJbmZvcywgbV9kZmdTdHViSW5mb3Ms
CisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAorICAg
ICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0
U3RhY2ssCiAgICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSwgbV9ncmFwaC5pZGVu
dGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAg
aGFuZGxlUHV0QnlJZChiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1
cywgZGlyZWN0KTsKQEAgLTY0MzMsOCArNjQ1NSw4IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBt
X2dyYXBoLmlkZW50aWZpZXJzKClbaWRlbnRpZmllck51bWJlcl07CiAKICAgICAgICAgICAgIElu
QnlJZFN0YXR1cyBzdGF0dXMgPSBJbkJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgICAgICAg
ICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBtX2RmZ0NvZGVCbG9jaywK
LSAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3N0dWJJbmZvcywgbV9kZmdTdHVi
SW5mb3MsCisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2Nr
LAorICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWND
b250ZXh0U3RhY2ssCiAgICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSwgdWlkKTsK
IAogICAgICAgICAgICAgaWYgKHN0YXR1cy5pc1NpbXBsZSgpKSB7CkBAIC02NDU1LDYgKzY0Nzcs
OCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKGFsbE9LKSB7CisgICAgICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoRmlsdGVySW5CeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4u
cmVjb3JkZWRTdGF0dXNlcy5hZGRJbkJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgc3Rh
dHVzKSksIGJhc2UpOworICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg
Tm9kZSogbWF0Y2ggPSBhZGRUb0dyYXBoKE1hdGNoU3RydWN0dXJlLCBPcEluZm8oZGF0YSksIGJh
c2UpOwogICAgICAgICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBtYXRjaCk7CiAgICAgICAgICAgICAgICAgICAgIE5FWFRf
T1BDT0RFKG9wX2luX2J5X2lkKTsKQEAgLTY2MzksMTIgKzY2NjMsMTkgQEAgQnl0ZUNvZGVQYXJz
ZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZQogICAgICAgICAvLyBXZSBkbyB0aGlzIHdoaWxl
IGhvbGRpbmcgdGhlIGxvY2sgYmVjYXVzZSB3ZSB3YW50IHRvIGVuY291cmFnZSBTdHJ1Y3R1cmVT
dHViSW5mbydzCiAgICAgICAgIC8vIHRvIGJlIHBvdGVudGlhbGx5IGFkZGVkIHRvIG9wZXJhdGlv
bnMgYW5kIGJlY2F1c2UgdGhlIHByb2ZpbGVkIGJsb2NrIGNvdWxkIGJlIGluIHRoZQogICAgICAg
ICAvLyBtaWRkbGUgb2YgTExJbnQtPkpJVCB0aWVyLXVwIGluIHdoaWNoIGNhc2Ugd2Ugd291bGQg
YmUgYWRkaW5nIHRoZSBpbmZvJ3MgcmlnaHQgbm93LgotICAgICAgICBpZiAobV9wcm9maWxlZEJs
b2NrLT5oYXNCYXNlbGluZUpJVFByb2ZpbGluZygpKSB7Ci0gICAgICAgICAgICBtX3Byb2ZpbGVk
QmxvY2stPmdldFN0dWJJbmZvTWFwKGxvY2tlciwgbV9zdHViSW5mb3MpOwotICAgICAgICAgICAg
bV9wcm9maWxlZEJsb2NrLT5nZXRDYWxsTGlua0luZm9NYXAobG9ja2VyLCBtX2NhbGxMaW5rSW5m
b3MpOwotICAgICAgICAgICAgbV9wcm9maWxlZEJsb2NrLT5nZXRCeVZhbEluZm9NYXAobG9ja2Vy
LCBtX2J5VmFsSW5mb3MpOworICAgICAgICBpZiAobV9wcm9maWxlZEJsb2NrLT5oYXNCYXNlbGlu
ZUpJVFByb2ZpbGluZygpKQorICAgICAgICAgICAgbV9wcm9maWxlZEJsb2NrLT5nZXRJQ1N0YXR1
c01hcChsb2NrZXIsIG1fYmFzZWxpbmVNYXApOworICAgIH0KKyAgICAKKyAgICBpZiAoT3B0aW9u
czo6dXNlUG9seXZhcmlhbnREZXZpcnR1YWxpemF0aW9uKCkpIHsKKyAgICAgICAgQ29kZUJsb2Nr
KiBvcHRpbWl6ZWRCbG9jayA9IG1fcHJvZmlsZWRCbG9jay0+cmVwbGFjZW1lbnQoKTsKKyAgICAg
ICAgbV9vcHRpbWl6ZWRDb250ZXh0Lm9wdGltaXplZENvZGVCbG9jayA9IG9wdGltaXplZEJsb2Nr
OworICAgICAgICBpZiAob3B0aW1pemVkQmxvY2spIHsKKyAgICAgICAgICAgIENvbmN1cnJlbnRK
U0xvY2tlciBsb2NrZXIob3B0aW1pemVkQmxvY2stPm1fbG9jayk7CisgICAgICAgICAgICBvcHRp
bWl6ZWRCbG9jay0+Z2V0SUNTdGF0dXNNYXAobG9ja2VyLCBtX29wdGltaXplZENvbnRleHQubWFw
KTsKICAgICAgICAgfQogICAgIH0KKyAgICBieXRlQ29kZVBhcnNlci0+bV9pY0NvbnRleHRTdGFj
ay5hcHBlbmQoJm1fb3B0aW1pemVkQ29udGV4dCk7CiAgICAgCiAgICAgaW50IGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzV2l0aEZpeHVwID0gc3RkOjptYXg8aW50Pihhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcywgY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOwogCkBAIC02NjU0LDYgKzY2
ODUsNyBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lCiAgICAgICAg
IEFTU0VSVChpbmxpbmVDYWxsRnJhbWVTdGFydC5pc1ZhbGlkKCkpOwogICAgICAgICAKICAgICAg
ICAgbV9pbmxpbmVDYWxsRnJhbWUgPSBieXRlQ29kZVBhcnNlci0+bV9ncmFwaC5tX3BsYW4uaW5s
aW5lQ2FsbEZyYW1lcy0+YWRkKCk7CisgICAgICAgIG1fb3B0aW1pemVkQ29udGV4dC5pbmxpbmVD
YWxsRnJhbWUgPSBtX2lubGluZUNhbGxGcmFtZTsKIAogICAgICAgICAvLyBUaGUgb3duZXIgaXMg
dGhlIG1hY2hpbmUgY29kZSBibG9jaywgYW5kIHdlIGFscmVhZHkgaGF2ZSBhIGJhcnJpZXIgb24g
dGhhdCB3aGVuIHRoZQogICAgICAgICAvLyBwbGFuIGZpbmlzaGVzLgpAQCAtNjcwOSw2ICs2NzQx
LDEzIEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmUKICAgICBieXRl
Q29kZVBhcnNlci0+bV9pbmxpbmVTdGFja1RvcCA9IHRoaXM7CiB9CiAKK0J5dGVDb2RlUGFyc2Vy
OjpJbmxpbmVTdGFja0VudHJ5Ojp+SW5saW5lU3RhY2tFbnRyeSgpCit7CisgICAgbV9ieXRlQ29k
ZVBhcnNlci0+bV9pbmxpbmVTdGFja1RvcCA9IG1fY2FsbGVyOworICAgIFJFTEVBU0VfQVNTRVJU
KG1fYnl0ZUNvZGVQYXJzZXItPm1faWNDb250ZXh0U3RhY2subGFzdCgpID09ICZtX29wdGltaXpl
ZENvbnRleHQpOworICAgIG1fYnl0ZUNvZGVQYXJzZXItPm1faWNDb250ZXh0U3RhY2sucmVtb3Zl
TGFzdCgpOworfQorCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiB7CiAg
ICAgY2xlYXJDYWNoZXMoKTsKQEAgLTY4MDUsMTUgKzY4NDQsNiBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZSgpCiAgICAgCiAgICAgVkVSQk9TRV9MT0coIlBhcnNpbmcgIiwgKm1fY29kZUJs
b2NrLCAiXG4iKTsKICAgICAKLSAgICBtX2RmZ0NvZGVCbG9jayA9IG1fZ3JhcGgubV9wbGFuLnBy
b2ZpbGVkREZHQ29kZUJsb2NrOwotICAgIGlmIChpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSAm
JiBtX2RmZ0NvZGVCbG9jawotICAgICAgICAmJiBPcHRpb25zOjp1c2VQb2x5dmFyaWFudERldmly
dHVhbGl6YXRpb24oKSkgewotICAgICAgICBpZiAoT3B0aW9uczo6dXNlUG9seXZhcmlhbnRDYWxs
SW5saW5pbmcoKSkKLSAgICAgICAgICAgIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlREZHU3RhdHVz
ZXMobV9kZmdDb2RlQmxvY2ssIG1fY2FsbENvbnRleHRNYXApOwotICAgICAgICBpZiAoT3B0aW9u
czo6dXNlUG9seXZhcmlhbnRCeUlkSW5saW5pbmcoKSkKLSAgICAgICAgICAgIG1fZGZnQ29kZUJs
b2NrLT5nZXRTdHViSW5mb01hcChtX2RmZ1N0dWJJbmZvcyk7Ci0gICAgfQotICAgIAogICAgIElu
bGluZVN0YWNrRW50cnkgaW5saW5lU3RhY2tFbnRyeSgKICAgICAgICAgdGhpcywgbV9jb2RlQmxv
Y2ssIG1fcHJvZmlsZWRCbG9jaywgMCwgVmlydHVhbFJlZ2lzdGVyKCksIFZpcnR1YWxSZWdpc3Rl
cigpLAogICAgICAgICBtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBJbmxpbmVDYWxsRnJh
bWU6OkNhbGwsIG51bGxwdHIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgJKHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NDYsNiArNDQ2LDEwIEBAIHZv
aWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIFByb2ZpbGVD
b250cm9sRmxvdzoKICAgICBjYXNlIFB1dEhpbnQ6CiAgICAgY2FzZSBJbml0aWFsaXplRW50cnlw
b2ludEFyZ3VtZW50czoKKyAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2Ug
RmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CisgICAg
Y2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CiAgICAgICAgIHdyaXRlKFNpZGVTdGF0ZSk7CiAgICAg
ICAgIHJldHVybjsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAkocmV2aXNpb24gMjMyNDQxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc1LDYgKzc1LDEwIEBAIGJvb2wgY2xvYmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdy
YXBoLCBOb2QKICAgICBjYXNlIEZlbmNlZFN0b3JlQmFycmllcjoKICAgICBjYXNlIEFsbG9jYXRl
UHJvcGVydHlTdG9yYWdlOgogICAgIGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKKyAg
ICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1
czoKKyAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJJbkJ5SWRT
dGF0dXM6CiAgICAgICAgIC8vIFRoZXNlIGRvIGNsb2JiZXIgbWVtb3J5LCBidXQgbm90aGluZyB0
aGF0IGlzIG9ic2VydmFibGUuIEl0IG1heSBiZSBuaWNlIHRvIHNlcGFyYXRlIHRoZQogICAgICAg
ICAvLyBoZWFwcyBpbnRvIHRob3NlIHRoYXQgYXJlIG9ic2VydmFibGUgYW5kIHRob3NlIHRoYXQg
YXJlbid0LCBidXQgd2UgZG9uJ3QgZG8gdGhhdCByaWdodCBub3cuCiAgICAgICAgIC8vIEZJWE1F
OiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NDQwCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuaAkocmV2aXNpb24gMjMyNDQx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJJbmxpbmVDYWxsRnJhbWVTZXQuaCIK
ICNpbmNsdWRlICJKU0Nhc3QuaCIKICNpbmNsdWRlICJQcm9maWxlckNvbXBpbGF0aW9uLmgiCisj
aW5jbHVkZSAiUmVjb3JkZWRTdGF0dXNlcy5oIgogI2luY2x1ZGUgPHd0Zi9CYWcuaD4KICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KIApAQCAtMTI1LDYgKzEyNiw3IEBAIHB1YmxpYzoKICAg
ICBCYWc8Q29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50PiB3YXRjaHBvaW50czsKICAgICBC
YWc8QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50PiBhZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9p
bnRzOwogICAgIEJhZzxBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQ+IGFk
YXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludHM7CisgICAgUmVjb3JkZWRTdGF0
dXNlcyByZWNvcmRlZFN0YXR1c2VzOwogICAgIFZlY3RvcjxKdW1wUmVwbGFjZW1lbnQ+IGp1bXBS
ZXBsYWNlbWVudHM7CiAgICAgCiAgICAgU2NyYXRjaEJ1ZmZlciogY2F0Y2hPU1JFbnRyeUJ1ZmZl
cjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhh
c2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTU3LDcgKzU1NywxNSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGF1dG8gYWRkRmls
dGVyU3RhdHVzID0gWyZdICgpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQu
aW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05v
bmUsIEZpbHRlckdldEJ5SWRTdGF0dXMsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFkZEdldEJ5SWRT
dGF0dXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBzdGF0dXMpKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEVkZ2UoY2hpbGQpKTsKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIGlmIChzdGF0dXMubnVtVmFyaWFudHMoKSA9PSAxKSB7CisgICAg
ICAgICAgICAgICAgICAgIGFkZEZpbHRlclN0YXR1cygpOwogICAgICAgICAgICAgICAgICAgICBl
bWl0R2V0QnlPZmZzZXQoaW5kZXhJbkJsb2NrLCBub2RlLCBiYXNlVmFsdWUsIHN0YXR1c1swXSwg
aWRlbnRpZmllck51bWJlcik7CiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTU2Niw2ICs1NzQsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIGlmICghaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkpCiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGFk
ZEZpbHRlclN0YXR1cygpOwogICAgICAgICAgICAgICAgIE11bHRpR2V0QnlPZmZzZXREYXRhKiBk
YXRhID0gbV9ncmFwaC5tX211bHRpR2V0QnlPZmZzZXREYXRhLmFkZCgpOwogICAgICAgICAgICAg
ICAgIGZvciAoY29uc3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBzdGF0dXMudmFyaWFudHMo
KSkgewogICAgICAgICAgICAgICAgICAgICBkYXRhLT5jYXNlcy5hcHBlbmQoCkBAIC02MzksNiAr
NjQ4LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaWYgKCFhbGxHb29kKQogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBt
X2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxv
Y2ssIFNwZWNOb25lLCBGaWx0ZXJQdXRCeUlkU3RhdHVzLCBub2RlLT5vcmlnaW4sCisgICAgICAg
ICAgICAgICAgICAgIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFkZFB1
dEJ5SWRTdGF0dXMobm9kZS0+b3JpZ2luLnNlbWFudGljLCBzdGF0dXMpKSwKKyAgICAgICAgICAg
ICAgICAgICAgRWRnZShjaGlsZCkpOworICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
IGlmIChzdGF0dXMubnVtVmFyaWFudHMoKSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgIGVt
aXRQdXRCeU9mZnNldChpbmRleEluQmxvY2ssIG5vZGUsIGJhc2VWYWx1ZSwgc3RhdHVzWzBdLCBp
ZGVudGlmaWVyTnVtYmVyKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmgJKHJl
dmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZFdh
dGNocG9pbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDEwIEBAIHN0cnVjdCBTZXRQ
b2ludGVyQWRhcHRvciB7CiAgICAgewogICAgICAgICByZXR1cm4gc2V0LT5hZGQoY29tbW9uLndh
dGNocG9pbnRzLmFkZChjb2RlQmxvY2spKTsKICAgICB9Ci0gICAgc3RhdGljIGJvb2wgaGFzQmVl
bkludmFsaWRhdGVkKFQgc2V0KSB7IHJldHVybiBzZXQtPmhhc0JlZW5JbnZhbGlkYXRlZCgpOyB9
CisgICAgc3RhdGljIGJvb2wgaGFzQmVlbkludmFsaWRhdGVkKFQgc2V0KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHNldC0+aGFzQmVlbkludmFsaWRhdGVkKCk7CisgICAgfQogICAgIHN0YXRpYyB2
b2lkIGR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgVCBzZXQsIER1bXBDb250ZXh0KikK
ICAgICB7CiAgICAgICAgIG91dC5wcmludChSYXdQb2ludGVyKHNldCkpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24gMjMyNDQxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MTMsNiArMzEzLDEwIEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAg
ICBjYXNlIEF0b21pY3NYb3I6CiAgICAgY2FzZSBBdG9taWNzSXNMb2NrRnJlZToKICAgICBjYXNl
IE1hdGNoU3RydWN0dXJlOgorICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgY2Fz
ZSBGaWx0ZXJHZXRCeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKKyAg
ICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
Y2FzZSBQdXNoV2l0aFNjb3BlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTczLDYgKzIxNzMs
MTAgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRHbG9iYWxUaGlzOgogICAgICAgICBjYXNl
IEV4dHJhY3RWYWx1ZUZyb21XZWFrTWFwR2V0OgogICAgICAgICBjYXNlIENQVUludHJpbnNpYzoK
KyAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJH
ZXRCeUlkU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CisgICAgICAg
IGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgogICAgICAgICAgICAgYnJlYWs7CiAjZWxzZQogICAg
ICAgICBkZWZhdWx0OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJ
KHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGgu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTYsNiArMzU2LDE0IEBAIHZvaWQgR3JhcGg6OmR1bXAo
UHJpbnRTdHJlYW0mIG91dCwgY29uc3QKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiaWdub3Jl
TGFzdEluZGV4SXNXcml0YWJsZSA9ICIsIG5vZGUtPmlnbm9yZUxhc3RJbmRleElzV3JpdGFibGUo
KSk7CiAgICAgaWYgKG5vZGUtPmlzQ29uc3RhbnQoKSkKICAgICAgICAgb3V0LnByaW50KGNvbW1h
LCBwb2ludGVyRHVtcEluQ29udGV4dChub2RlLT5jb25zdGFudCgpLCBjb250ZXh0KSk7CisgICAg
aWYgKG5vZGUtPmhhc0NhbGxMaW5rU3RhdHVzKCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwg
Km5vZGUtPmNhbGxMaW5rU3RhdHVzKCkpOworICAgIGlmIChub2RlLT5oYXNHZXRCeUlkU3RhdHVz
KCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgKm5vZGUtPmdldEJ5SWRTdGF0dXMoKSk7Cisg
ICAgaWYgKG5vZGUtPmhhc0luQnlJZFN0YXR1cygpKQorICAgICAgICBvdXQucHJpbnQoY29tbWEs
ICpub2RlLT5pbkJ5SWRTdGF0dXMoKSk7CisgICAgaWYgKG5vZGUtPmhhc1B1dEJ5SWRTdGF0dXMo
KSkKKyAgICAgICAgb3V0LnByaW50KGNvbW1hLCAqbm9kZS0+cHV0QnlJZFN0YXR1cygpKTsKICAg
ICBpZiAobm9kZS0+aXNKdW1wKCkpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIlQ6IiwgKm5v
ZGUtPnRhcmdldEJsb2NrKCkpOwogICAgIGlmIChub2RlLT5pc0JyYW5jaCgpKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCShyZXZpc2lvbiAyMzI0NDEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDEsNiArMTAxLDEwIEBAIEV4aXRNb2RlIG1heUV4aXRJbXBsKEdyYXBoJiBncmFwaCwg
Tm9kZSoKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CiAgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNo
ZWRSZXN1bHQ6CiAgICAgY2FzZSBOdWtlU3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5OgorICAgIGNh
c2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJHZXRCeUlkU3RhdHVzOgor
ICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1
czoKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFN0ckNhdDoKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjc2OSw2ICsyNzY5LDUwIEBA
IHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG9wKCkgPT0gVGhyb3dTdGF0aWNFcnJvcik7CiAgICAg
ICAgIHJldHVybiBtX29wSW5mby5hczx1aW50MzJfdD4oKTsKICAgICB9CisgICAgCisgICAgYm9v
bCBoYXNDYWxsTGlua1N0YXR1cygpCisgICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBGaWx0
ZXJDYWxsTGlua1N0YXR1czsKKyAgICB9CisgICAgCisgICAgQ2FsbExpbmtTdGF0dXMqIGNhbGxM
aW5rU3RhdHVzKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNDYWxsTGlua1N0YXR1cygpKTsK
KyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPENhbGxMaW5rU3RhdHVzKj4oKTsKKyAgICB9Cisg
ICAgCisgICAgYm9vbCBoYXNHZXRCeUlkU3RhdHVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBv
cCgpID09IEZpbHRlckdldEJ5SWRTdGF0dXM7CisgICAgfQorICAgIAorICAgIEdldEJ5SWRTdGF0
dXMqIGdldEJ5SWRTdGF0dXMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc0dldEJ5SWRTdGF0
dXMoKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mby5hczxHZXRCeUlkU3RhdHVzKj4oKTsKKyAg
ICB9CisgICAgCisgICAgYm9vbCBoYXNJbkJ5SWRTdGF0dXMoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG9wKCkgPT0gRmlsdGVySW5CeUlkU3RhdHVzOworICAgIH0KKyAgICAKKyAgICBJbkJ5SWRT
dGF0dXMqIGluQnlJZFN0YXR1cygpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzSW5CeUlkU3Rh
dHVzKCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm8uYXM8SW5CeUlkU3RhdHVzKj4oKTsKKyAg
ICB9CisgICAgCisgICAgYm9vbCBoYXNQdXRCeUlkU3RhdHVzKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBvcCgpID09IEZpbHRlclB1dEJ5SWRTdGF0dXM7CisgICAgfQorICAgIAorICAgIFB1dEJ5
SWRTdGF0dXMqIHB1dEJ5SWRTdGF0dXMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc1B1dEJ5
SWRTdGF0dXMoKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mby5hczxQdXRCeUlkU3RhdHVzKj4o
KTsKKyAgICB9CiAKICAgICB2b2lkIGR1bXBDaGlsZHJlbihQcmludFN0cmVhbSYgb3V0KQogICAg
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9u
IDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMzk3LDExICszOTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IERGRyB7CiAgICAgbWFjcm8oR2V0QXJndW1lbnQsIE5vZGVSZXN1bHRKUykgXAogICAgIFwKICAg
ICBtYWNybyhOZXdGdW5jdGlvbiwgTm9kZVJlc3VsdEpTKSBcCi0gICAgXAogICAgIG1hY3JvKE5l
d0dlbmVyYXRvckZ1bmN0aW9uLCBOb2RlUmVzdWx0SlMpIFwKLSAgICBcCiAgICAgbWFjcm8oTmV3
QXN5bmNHZW5lcmF0b3JGdW5jdGlvbiwgTm9kZVJlc3VsdEpTKSBcCi0gICAgXAogICAgIG1hY3Jv
KE5ld0FzeW5jRnVuY3Rpb24sIE5vZGVSZXN1bHRKUykgXAogICAgIFwKICAgICAvKiBCbG9jayB0
ZXJtaW5hbHMuICovXApAQCAtNDc4LDYgKzQ3NSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIERGRyB7CiAgICAgXAogICAgIC8qIFVzZWQgZm9yICR2bSBwZXJmb3JtYW5jZSBkZWJ1Z2dp
bmcgKi8gXAogICAgIG1hY3JvKENQVUludHJpbnNpYywgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RH
ZW5lcmF0ZSkgXAorICAgIFwKKyAgICAvKiBVc2VkIHRvIHByb3ZpZGUgZmVlZGJhY2sgdG8gdGhl
IElDIHByb2ZpbGVyLiAqLyBcCisgICAgbWFjcm8oRmlsdGVyQ2FsbExpbmtTdGF0dXMsIE5vZGVN
dXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhGaWx0ZXJHZXRCeUlkU3RhdHVzLCBOb2RlTXVzdEdl
bmVyYXRlKSBcCisgICAgbWFjcm8oRmlsdGVySW5CeUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRl
KSBcCisgICAgbWFjcm8oRmlsdGVyUHV0QnlJZFN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAog
CiAKIC8vIFRoaXMgZW51bSBnZW5lcmF0ZXMgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaWQg
Zm9yIGFsbCBOb2RlIHR5cGVzLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFeGl0QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0QmFzZS5jcHAJKHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDExICs0
MiwxNyBAQCB2b2lkIE9TUkV4aXRCYXNlOjpjb25zaWRlckFkZGluZ0FzRnJlcXVlCiAgICAgICAg
IGJhc2VsaW5lQ29kZUJsb2NrRm9yT3JpZ2luQW5kQmFzZWxpbmVDb2RlQmxvY2soCiAgICAgICAg
ICAgICBtX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZSwgcHJvZmlsZWRDb2RlQmxvY2spOwogICAg
IGlmIChzb3VyY2VQcm9maWxlZENvZGVCbG9jaykgeworICAgICAgICBFeGl0aW5nSW5saW5lS2lu
ZCBpbmxpbmVLaW5kOworICAgICAgICBpZiAobV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGUuaW5s
aW5lQ2FsbEZyYW1lKQorICAgICAgICAgICAgaW5saW5lS2luZCA9IEV4aXRGcm9tSW5saW5lZDsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW5saW5lS2luZCA9IEV4aXRGcm9tTm90SW5saW5l
ZDsKKyAgICAgICAgCiAgICAgICAgIEZyZXF1ZW50RXhpdFNpdGUgc2l0ZTsKICAgICAgICAgaWYg
KG1fd2FzSG9pc3RlZCkKLSAgICAgICAgICAgIHNpdGUgPSBGcmVxdWVudEV4aXRTaXRlKEhvaXN0
aW5nRmFpbGVkLCBqaXRUeXBlKTsKKyAgICAgICAgICAgIHNpdGUgPSBGcmVxdWVudEV4aXRTaXRl
KEhvaXN0aW5nRmFpbGVkLCBqaXRUeXBlLCBpbmxpbmVLaW5kKTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgc2l0ZSA9IEZyZXF1ZW50RXhpdFNpdGUobV9jb2RlT3JpZ2luRm9yRXhpdFByb2Zp
bGUuYnl0ZWNvZGVJbmRleCwgbV9raW5kLCBqaXRUeXBlKTsKKyAgICAgICAgICAgIHNpdGUgPSBG
cmVxdWVudEV4aXRTaXRlKG1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlLmJ5dGVjb2RlSW5kZXgs
IG1fa2luZCwgaml0VHlwZSwgaW5saW5lS2luZCk7CiAgICAgICAgIEV4aXRQcm9maWxlOjphZGQo
c291cmNlUHJvZmlsZWRDb2RlQmxvY2ssIHNpdGUpOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9u
U2lua2luZ1BoYXNlLmNwcAkocmV2aXNpb24gMjMyNDQxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzU2LDYgKzc1Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBwcm9t
b3RlTG9jYWxIZWFwKCk7CisgICAgICAgIHJlbW92ZUlDU3RhdHVzRmlsdGVycygpOwogCiAgICAg
ICAgIGlmIChPcHRpb25zOjp2YWxpZGF0ZUdyYXBoQXRFYWNoUGhhc2UoKSkKICAgICAgICAgICAg
IERGRzo6dmFsaWRhdGUobV9ncmFwaCwgRHVtcEdyYXBoLCBncmFwaEJlZm9yZVNpbmtpbmcpOwpA
QCAtMTA4OCw2ICsxMDg5LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgUHV0SGludDoKICAg
ICAgICAgICAgIC8vIEhhbmRsZWQgYnkgT1NSIGF2YWlsYWJpbGl0eSBhbmFseXNpcwogICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0
YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJHZXRCeUlkU3RhdHVzOgorICAgICAgICBjYXNlIEZp
bHRlclB1dEJ5SWRTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAg
ICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIG1fZ3JhcGgu
ZG9Ub0NoaWxkcmVuKApAQCAtMjMzMSw2ICsyMzM4LDI1IEBAIHByaXZhdGU6CiAKICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CisgICAgCisgICAgdm9pZCByZW1v
dmVJQ1N0YXR1c0ZpbHRlcnMoKQorICAgIHsKKyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9j
ayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgeworICAgICAgICAgICAgZm9yIChO
b2RlKiBub2RlIDogKmJsb2NrKSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgp
KSB7CisgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICAgICAg
ICAgICAgICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0dXM6CisgICAgICAgICAgICAgICAgY2FzZSBG
aWx0ZXJQdXRCeUlkU3RhdHVzOgorICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3Rh
dHVzOgorICAgICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPmlzUGhhbnRvbUFs
bG9jYXRpb24oKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZVdpdGhvdXRD
aGVja3MoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQogCiAgICAgLy8gVGhpcyBpcyBhIGdyZWF0IHdh
eSBvZiBhc2tpbmcgdmFsdWUtPmlzU3RpbGxWYWxpZCgpIHdpdGhvdXQgaGF2aW5nIHRvIHdvcnJ5
IGFib3V0IGdldHRpbmcKICAgICAvLyBkaWZmZXJlbnQgYW5zd2Vycy4gSXQgdHVybnMgb3V0IHRo
YXQgdGhpcyBhbmFseXNpcyB3b3JrcyBPSyByZWdhcmRsZXNzIG9mIHdoYXQgdGhpcwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCShyZXZpc2lvbiAyMzI0NDEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NTU1LDYgKzU1NSw3IEBAIHZvaWQgUGxhbjo6cmVhbGx5QWRkKENvbW1vbkRhdGEqIGNvbW1vbkQK
ICAgICBpZGVudGlmaWVycy5yZWFsbHlBZGQoKnZtLCBjb21tb25EYXRhKTsKICAgICB3ZWFrUmVm
ZXJlbmNlcy5yZWFsbHlBZGQoKnZtLCBjb21tb25EYXRhKTsKICAgICB0cmFuc2l0aW9ucy5yZWFs
bHlBZGQoKnZtLCBjb21tb25EYXRhKTsKKyAgICBjb21tb25EYXRhLT5yZWNvcmRlZFN0YXR1c2Vz
ID0gV1RGTW92ZShyZWNvcmRlZFN0YXR1c2VzKTsKIH0KIAogdm9pZCBQbGFuOjpub3RpZnlDb21w
aWxpbmcoKQpAQCAtNjMzLDYgKzYzNCw4IEBAIHZvaWQgUGxhbjo6Y2hlY2tMaXZlbmVzc0FuZFZp
c2l0Q2hpbGRyZW4KICAgICBjbGVhbk11c3RIYW5kbGVWYWx1ZXNJZk5lY2Vzc2FyeSgpOwogICAg
IGZvciAodW5zaWduZWQgaSA9IG11c3RIYW5kbGVWYWx1ZXMuc2l6ZSgpOyBpLS07KQogICAgICAg
ICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG11c3RIYW5kbGVWYWx1ZXNbaV0pOworICAgIAor
ICAgIHJlY29yZGVkU3RhdHVzZXMubWFya0lmQ2hlYXAodmlzaXRvcik7CiAKICAgICB2aXNpdG9y
LmFwcGVuZFVuYmFycmllcmVkKGNvZGVCbG9jayk7CiAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJp
ZXJlZChjb2RlQmxvY2stPmFsdGVybmF0aXZlKCkpOwpAQCAtNjQ5LDYgKzY1MiwxMSBAQCB2b2lk
IFBsYW46OmNoZWNrTGl2ZW5lc3NBbmRWaXNpdENoaWxkcmVuCiAgICAgdHJhbnNpdGlvbnMudmlz
aXRDaGlsZHJlbih2aXNpdG9yKTsKIH0KIAordm9pZCBQbGFuOjpmaW5hbGl6ZUluR0MoKQorewor
ICAgIHJlY29yZGVkU3RhdHVzZXMuZmluYWxpemVXaXRob3V0RGVsZXRpbmcoKTsKK30KKwogYm9v
bCBQbGFuOjppc0tub3duVG9CZUxpdmVEdXJpbmdHQygpCiB7CiAgICAgaWYgKHN0YWdlID09IENh
bmNlbGxlZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5oCShyZXZpc2lvbiAy
MzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJEZWZlcnJlZENvbXBpbGF0aW9uQ2Fs
bGJhY2suaCIKICNpbmNsdWRlICJPcGVyYW5kcy5oIgogI2luY2x1ZGUgIlByb2ZpbGVyQ29tcGls
YXRpb24uaCIKKyNpbmNsdWRlICJSZWNvcmRlZFN0YXR1c2VzLmgiCiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIApAQCAtNzIs
NiArNzMsNyBAQCBzdHJ1Y3QgUGxhbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlCiAgICAg
dm9pZCBpdGVyYXRlQ29kZUJsb2Nrc0ZvckdDKGNvbnN0IEZ1bmMmKTsKICAgICB2b2lkIGNoZWNr
TGl2ZW5lc3NBbmRWaXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CiAgICAgYm9vbCBpc0tub3du
VG9CZUxpdmVEdXJpbmdHQygpOworICAgIHZvaWQgZmluYWxpemVJbkdDKCk7CiAgICAgdm9pZCBj
YW5jZWwoKTsKIAogICAgIGJvb2wgY2FuVGllclVwQW5kT1NSRW50ZXIoKSBjb25zdCB7IHJldHVy
biAhdGllclVwQW5kT1NSRW50ZXJCeXRlY29kZXMuaXNFbXB0eSgpOyB9CkBAIC0xMDQsNiArMTA2
LDcgQEAgc3RydWN0IFBsYW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZQogICAgIERlc2ly
ZWRJZGVudGlmaWVycyBpZGVudGlmaWVyczsKICAgICBEZXNpcmVkV2Vha1JlZmVyZW5jZXMgd2Vh
a1JlZmVyZW5jZXM7CiAgICAgRGVzaXJlZFRyYW5zaXRpb25zIHRyYW5zaXRpb25zOworICAgIFJl
Y29yZGVkU3RhdHVzZXMgcmVjb3JkZWRTdGF0dXNlczsKICAgICAKICAgICBib29sIHdpbGxUcnlU
b1RpZXJVcCB7IGZhbHNlIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lv
biAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIxMyw2ICsxMjEzLDEwIEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgSW5pdGlhbGl6ZUVudHJ5cG9pbnRBcmd1bWVudHM6CiAgICAg
ICAgIGNhc2UgV2Vha1NldEFkZDoKICAgICAgICAgY2FzZSBXZWFrTWFwU2V0OgorICAgICAgICBj
YXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0
dXM6CisgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0
ZXJJbkJ5SWRTdGF0dXM6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAg
ICAvLyBUaGlzIGdldHMgaWdub3JlZCBiZWNhdXNlIGl0IG9ubHkgcHJldGVuZHMgdG8gcHJvZHVj
ZSBhIHZhbHVlLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVj
dXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmgJKHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NzksNiArNDc5LDE0IEBAIGJv
b2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICAgICAgLy8gYWxyZWFk
eSBmb3JjZSB0aGVzZSB0aGluZ3MgdG8gYmUgb3JkZXJlZCBwcmVjaXNlbHkuIEknbSBqdXN0IG5v
dCBjb25maWRlbnQgZW5vdWdoIGluIG15CiAgICAgICAgIC8vIGVmZmVjdCBiYXNlZCBtZW1vcnkg
bW9kZWwgdG8gcmVseSBzb2xlbHkgb24gdGhhdCByaWdodCBub3cuCiAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgCisgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICBjYXNl
IEZpbHRlckdldEJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgorICAg
IGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRoZXNl
IHRvIGJlIG1vdmVkIGFueXdoZXJlIG90aGVyIHRoYW4gd2hlcmUgd2UgcHV0IHRoZW0sIHNpbmNl
IHdlIHdhbnQgdGhlbQorICAgICAgICAvLyB0byBjYXB0dXJlICJwcm9maWxpbmciIGF0IHRoZSBw
b2ludCBpbiBjb250cm9sIGZsb3cgaGVyZSB0aGUgdXNlciBwdXQgdGhlbS4KKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgY2FzZSBHZXRCeVZhbDoKICAgICBjYXNlIEdldEluZGV4ZWRQcm9w
ZXJ0eVN0b3JhZ2U6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQwMzcsNiArNDAzNywxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZU9yRW1wdHk6CiAgICAgICAgIERGR19D
UkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAiQ2hlY2tTdHJ1Y3R1cmVPckVtcHR5IG9ubHkgdXNl
ZCBpbiA2NC1iaXQgREZHIik7CiAgICAgICAgIGJyZWFrOworICAgICAgICAKKyAgICBjYXNlIEZp
bHRlckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICBj
YXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6Cisg
ICAgICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVySUNTdGF0dXMobm9kZSk7CisgICAgICAgIG5vUmVz
dWx0KG5vZGUpOworICAgICAgICBicmVhazsKIAogICAgIGNhc2UgTGFzdE5vZGVUeXBlOgogICAg
IGNhc2UgUGhpOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjMw
LDYgKzQ2MzAsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgor
ICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0
dXM6CisgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgIG1faW50ZXJwcmV0ZXIu
ZmlsdGVySUNTdGF0dXMobm9kZSk7CisgICAgICAgIG5vUmVzdWx0KG5vZGUpOworICAgICAgICBi
cmVhazsKKwogI2Vsc2UgLy8gRU5BQkxFKEZUTF9KSVQpCiAgICAgY2FzZSBDaGVja1RpZXJVcElu
TG9vcDoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAJ
KHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5n
dGhSZWR1Y3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04OTgsMTAgKzg5OCwxNCBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIFRhaWxDYWxsOiB7CiAgICAgICAgICAgICBFeGVjdXRh
YmxlQmFzZSogZXhlY3V0YWJsZSA9IG51bGxwdHI7CiAgICAgICAgICAgICBFZGdlIGNhbGxlZSA9
IG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAwKTsKLSAgICAgICAgICAgIGlmIChKU0Z1bmN0
aW9uKiBmdW5jdGlvbiA9IGNhbGxlZS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU0Z1bmN0aW9uKj4o
dm0oKSkpCisgICAgICAgICAgICBDYWxsVmFyaWFudCBjYWxsVmFyaWFudDsKKyAgICAgICAgICAg
IGlmIChKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IGNhbGxlZS0+ZHluYW1pY0Nhc3RDb25zdGFudDxK
U0Z1bmN0aW9uKj4odm0oKSkpIHsKICAgICAgICAgICAgICAgICBleGVjdXRhYmxlID0gZnVuY3Rp
b24tPmV4ZWN1dGFibGUoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNhbGxlZS0+aXNGdW5jdGlv
bkFsbG9jYXRpb24oKSkKKyAgICAgICAgICAgICAgICBjYWxsVmFyaWFudCA9IENhbGxWYXJpYW50
KGZ1bmN0aW9uKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoY2FsbGVlLT5pc0Z1bmN0aW9uQWxs
b2NhdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZSA9IGNhbGxlZS0+Y2FzdE9w
ZXJhbmQ8RnVuY3Rpb25FeGVjdXRhYmxlKj4oKTsKKyAgICAgICAgICAgICAgICBjYWxsVmFyaWFu
dCA9IENhbGxWYXJpYW50KGV4ZWN1dGFibGUpOworICAgICAgICAgICAgfQogICAgICAgICAgICAg
CiAgICAgICAgICAgICBpZiAoIWV4ZWN1dGFibGUpCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBA
IC05MTksNiArOTIzLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3Rh
dHVzZXMuYWRkQ2FsbExpbmtTdGF0dXMobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMsIENhbGxMaW5r
U3RhdHVzKGNhbGxWYXJpYW50KSk7CisgICAgICAgICAgICAKICAgICAgICAgICAgIG1fbm9kZS0+
Y29udmVydFRvRGlyZWN0Q2FsbChtX2dyYXBoLmZyZWV6ZShleGVjdXRhYmxlKSk7CiAgICAgICAg
ICAgICBtX2NoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAkocmV2aXNpb24gMjMyNDQxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM5Myw4ICszOTMsMTAgQEAgdm9pZCBXb3JrbGlzdDo6cmVtb3ZlRGVhZFBsYW5zKFZNJiB2
bSkKICAgICAgICAgICAgIFBsYW4qIHBsYW4gPSBpdGVyLT52YWx1ZS5nZXQoKTsKICAgICAgICAg
ICAgIGlmIChwbGFuLT52bSAhPSAmdm0pCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICBpZiAocGxhbi0+aXNLbm93blRvQmVMaXZlRHVyaW5nR0MoKSkKKyAgICAgICAgICAg
IGlmIChwbGFuLT5pc0tub3duVG9CZUxpdmVEdXJpbmdHQygpKSB7CisgICAgICAgICAgICAgICAg
cGxhbi0+ZmluYWxpemVJbkdDKCk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChwbGFuLT5zdGFnZSAhPSBQbGFuOjpD
YW5jZWxsZWQpOyAvLyBTaG91bGQgbm90IGJlIGNhbmNlbGxlZCwgeWV0LgogICAgICAgICAgICAg
QVNTRVJUKCFkZWFkUGxhbktleXMuY29udGFpbnMocGxhbi0+a2V5KCkpKTsKICAgICAgICAgICAg
IGRlYWRQbGFuS2V5cy5hZGQocGxhbi0+a2V5KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgJKHJldmlzaW9u
IDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw4IEBAIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNybyhEaXJlY3RBcmd1bWVudHNfbWluQ2FwYWNpdHks
IERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZNaW5DYXBhY2l0eSgpKSBcCiAgICAgbWFjcm8oRGly
ZWN0QXJndW1lbnRzX21hcHBlZEFyZ3VtZW50cywgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZk1h
cHBlZEFyZ3VtZW50cygpKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX21vZGlmaWVkQXJn
dW1lbnRzRGVzY3JpcHRvciwgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZk1vZGlmaWVkQXJndW1l
bnRzRGVzY3JpcHRvcigpKSBcCisgICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9hbGxvY2F0b3Is
IEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9i
amVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZkFsbG9jYXRvcigpKSBcCisgICAgbWFjcm8o
RnVuY3Rpb25SYXJlRGF0YV9zdHJ1Y3R1cmUsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRP
ZlN0cnVjdHVyZSgpKSBcCiAgICAgbWFjcm8oR2V0dGVyU2V0dGVyX2dldHRlciwgR2V0dGVyU2V0
dGVyOjpvZmZzZXRPZkdldHRlcigpKSBcCiAgICAgbWFjcm8oR2V0dGVyU2V0dGVyX3NldHRlciwg
R2V0dGVyU2V0dGVyOjpvZmZzZXRPZlNldHRlcigpKSBcCiAgICAgbWFjcm8oSlNBcnJheUJ1ZmZl
clZpZXdfbGVuZ3RoLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkgXApAQCAt
MTEyLDEwICsxMTQsMTAgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1h
Y3JvKFN0cmluZ0ltcGxfbGVuZ3RoLCBTdHJpbmdJbXBsOjpsZW5ndGhNZW1vcnlPZmZzZXQoKSkg
XAogICAgIG1hY3JvKFN0cnVjdHVyZV9jbGFzc0luZm8sIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zm
c2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU6Omds
b2JhbE9iamVjdE9mZnNldCgpKSBcCisgICAgbWFjcm8oU3RydWN0dXJlX2luZGV4aW5nTW9kZUlu
Y2x1ZGluZ0hpc3RvcnksIFN0cnVjdHVyZTo6aW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeU9m
ZnNldCgpKSBcCisgICAgbWFjcm8oU3RydWN0dXJlX2lubGluZUNhcGFjaXR5LCBTdHJ1Y3R1cmU6
OmlubGluZUNhcGFjaXR5T2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfcHJvdG90eXBl
LCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlX3N0
cnVjdHVyZUlELCBTdHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KCkpIFwKLSAgICBtYWNybyhT
dHJ1Y3R1cmVfaW5saW5lQ2FwYWNpdHksIFN0cnVjdHVyZTo6aW5saW5lQ2FwYWNpdHlPZmZzZXQo
KSkgXAotICAgIG1hY3JvKFN0cnVjdHVyZV9pbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5LCBT
dHJ1Y3R1cmU6OmluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnlPZmZzZXQoKSkgXAogICAgIG1h
Y3JvKEhhc2hNYXBJbXBsX2NhcGFjaXR5LCBIYXNoTWFwSW1wbDxIYXNoTWFwQnVja2V0PEhhc2hN
YXBCdWNrZXREYXRhS2V5Pj46Om9mZnNldE9mQ2FwYWNpdHkoKSkgXAogICAgIG1hY3JvKEhhc2hN
YXBJbXBsX2J1ZmZlciwgIEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERh
dGFLZXk+Pjo6b2Zmc2V0T2ZCdWZmZXIoKSkgXAogICAgIG1hY3JvKEhhc2hNYXBJbXBsX2hlYWQs
ICBIYXNoTWFwSW1wbDxIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46Om9mZnNl
dE9mSGVhZCgpKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBh
YmlsaXRpZXMuY3BwCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1Miw2ICszNTIsMTEg
QEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgUHV0
QnlWYWxEaXJlY3Q6CiAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgIGNhc2UgTWF0Y2hT
dHJ1Y3R1cmU6CisgICAgY2FzZSBDcmVhdGVUaGlzOgorICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtT
dGF0dXM6CisgICAgY2FzZSBGaWx0ZXJHZXRCeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyUHV0
QnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKICAgICAgICAgLy8gVGhl
c2UgYXJlIE9LLgogICAgICAgICBicmVhazsKIApAQCAtMzYzLDcgKzM2OCw2IEBAIGlubGluZSBD
YXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICAgICAgYnJlYWs7CiAKICAgICBj
YXNlIElkZW50aXR5V2l0aFByb2ZpbGU6Ci0gICAgY2FzZSBDcmVhdGVUaGlzOgogICAgIGNhc2Ug
Q2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgogICAg
IGNhc2UgQ2hlY2tUaWVyVXBBdFJldHVybjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODUwLDYgKzg1MCw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgTmV3QXJyYXlXaXRoU3ByZWFk
OgogICAgICAgICAgICAgY29tcGlsZU5ld0FycmF5V2l0aFNwcmVhZCgpOwogICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgQ3JlYXRlVGhpczoKKyAgICAgICAgICAgIGNvbXBpbGVDcmVh
dGVUaGlzKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTcHJlYWQ6CiAgICAg
ICAgICAgICBjb21waWxlU3ByZWFkKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEyOTIsNiAr
MTI5NSwxMiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIENhbGxET01HZXR0ZXI6CiAgICAgICAg
ICAgICBjb21waWxlQ2FsbERPTUdldHRlcigpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0
YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgorICAgICAgICBjYXNlIEZp
bHRlckluQnlJZFN0YXR1czoKKyAgICAgICAgICAgIGNvbXBpbGVGaWx0ZXJJQ1N0YXR1cygpOwor
ICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBQaGFudG9tTG9jYWw6CiAgICAgICAg
IGNhc2UgTG9vcEhpbnQ6CkBAIC01NjcwLDYgKzU2NzksNDAgQEAgcHJpdmF0ZToKIAogICAgICAg
ICBzZXRKU1ZhbHVlKHJlc3VsdCk7CiAgICAgfQorICAgIAorICAgIHZvaWQgY29tcGlsZUNyZWF0
ZVRoaXMoKQorICAgIHsKKyAgICAgICAgTFZhbHVlIGNhbGxlZSA9IGxvd0NlbGwobV9ub2RlLT5j
aGlsZDEoKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgaXNGdW5jdGlvbkJsb2NrID0gbV9vdXQu
bmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgaGFzUmFyZURhdGEgPSBtX291dC5uZXdC
bG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7
CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisK
KyAgICAgICAgbV9vdXQuYnJhbmNoKGlzRnVuY3Rpb24oY2FsbGVlLCBwcm92ZW5UeXBlKG1fbm9k
ZS0+Y2hpbGQxKCkpKSwgdXN1YWxseShpc0Z1bmN0aW9uQmxvY2spLCByYXJlbHkoc2xvd1BhdGgp
KTsKKworICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzRnVu
Y3Rpb25CbG9jaywgaGFzUmFyZURhdGEpOworICAgICAgICBMVmFsdWUgcmFyZURhdGEgPSBtX291
dC5sb2FkUHRyKGNhbGxlZSwgbV9oZWFwcy5KU0Z1bmN0aW9uX3JhcmVEYXRhKTsKKyAgICAgICAg
bV9vdXQuYnJhbmNoKG1fb3V0LmlzWmVybzY0KHJhcmVEYXRhKSwgcmFyZWx5KHNsb3dQYXRoKSwg
dXN1YWxseShoYXNSYXJlRGF0YSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGhhc1JhcmVE
YXRhLCBzbG93UGF0aCk7CisgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBtX291dC5sb2FkUHRy
KHJhcmVEYXRhLCBtX2hlYXBzLkZ1bmN0aW9uUmFyZURhdGFfYWxsb2NhdG9yKTsKKyAgICAgICAg
TFZhbHVlIHN0cnVjdHVyZSA9IG1fb3V0LmxvYWRQdHIocmFyZURhdGEsIG1faGVhcHMuRnVuY3Rp
b25SYXJlRGF0YV9zdHJ1Y3R1cmUpOworICAgICAgICBMVmFsdWUgYnV0dGVyZmx5ID0gbV9vdXQu
Y29uc3RJbnRQdHIoMCk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291
dC5hbmNob3IoYWxsb2NhdGVPYmplY3QoYWxsb2NhdG9yLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSwg
c2xvd1BhdGgpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAg
IG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24pOworICAgICAgICBWYWx1ZUZy
b21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbCgKKyAgICAgICAgICAgIElu
dDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uQ3JlYXRlVGhpcyksIG1fY2FsbEZyYW1lLCBj
YWxsZWUsIG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT5pbmxpbmVDYXBhY2l0eSgpKSkpOworICAg
ICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8o
Y29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5w
aGkoSW50NjQsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpOworCisgICAgICAgIG11dGF0b3JGZW5j
ZSgpOworICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CisgICAgfQogCiAgICAgdm9pZCBjb21w
aWxlU3ByZWFkKCkKICAgICB7CkBAIC0xMjEzNiw2ICsxMjE3OSwxMSBAQCBwcml2YXRlOgogICAg
ICAgICBzZXRKU1ZhbHVlKHBhdGNocG9pbnQpOwogICAgIH0KICAgICAKKyAgICB2b2lkIGNvbXBp
bGVGaWx0ZXJJQ1N0YXR1cygpCisgICAgeworICAgICAgICBtX2ludGVycHJldGVyLmZpbHRlcklD
U3RhdHVzKG1fbm9kZSk7CisgICAgfQorICAgIAogICAgIHZvaWQgZW1pdFN3aXRjaEZvck11bHRp
QnlPZmZzZXQoTFZhbHVlIGJhc2UsIGJvb2wgc3RydWN0dXJlc0NoZWNrZWQsIFZlY3RvcjxTd2l0
Y2hDYXNlLCAyPiYgY2FzZXMsIExCYXNpY0Jsb2NrIGV4aXQpCiAgICAgewogICAgICAgICBpZiAo
Y2FzZXMuaXNFbXB0eSgpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHlt
b3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcAkocmV2aXNpb24gMjMyNDQx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGlu
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDEwICs5NiwyMiBAQCBDYWxsVmFyaWFudExpc3Qg
UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorYm9vbCBQ
b2x5bW9ycGhpY0NhbGxTdHViUm91dGluZTo6aGFzRWRnZXMoKSBjb25zdAoreworICAgIC8vIFRo
ZSBGVEwgZG9lcyBub3QgY291bnQgZWRnZXMgaW4gaXRzIHBvbHkgY2FsbCBzdHViIHJvdXRpbmVz
LiBJZiB0aGUgRlRMIHdlbnQgcG9seSBjYWxsLCB0aGVuCisgICAgLy8gaXQncyBub3QgbWVhbmlu
Z2Z1bCB0byBrZWVwIHByb2ZpbGluZyAtIHdlIGNhbiBqdXN0IGxlYXZlIGl0IGF0IHRoYXQuIFJl
bWVtYmVyLCB0aGUgRlRMIHdvdWxkCisgICAgLy8gaGF2ZSBoYWQgZnVsbCBlZGdlIHByb2ZpbGlu
ZyBmcm9tIHRoZSBERkcsIGFuZCBiYXNlZCBvbiB0aGlzIGluZm9ybWF0aW9uLCBpdCB3b3VsZCBo
YXZlCisgICAgLy8gZGVjaWRlZCB0byBnbyBwb2x5LgorICAgIC8vCisgICAgLy8gVGhlcmUgcHJv
YmFibHkgYXJlIHZlcnktZGlmZmljdWx0LXRvLWltYWdpbmUgY29ybmVyIGNhc2VzIHdoZXJlIHRo
ZSBGVEwgbm90IGRvaW5nIGVkZ2UKKyAgICAvLyBwcm9maWxpbmcgaXMgYmFkIGZvciBwb2x5dmFy
aWFudCBpbmxpbmluZy4gQnV0IHBvbHl2YXJpYW50IGlubGluaW5nIGlzIHByb2ZpdGFibGUgc29t
ZXRpbWVzCisgICAgLy8gd2hpbGUgbm90IGhhdmluZyB0byBpbmNyZW1lbnQgY291bnRzIGlzIHBy
b2ZpdGFibGUgYWx3YXlzLiBTbywgd2UgbGV0IHRoZSBGVEwgcnVuIGZhc3RlciBhbmQKKyAgICAv
LyBub3Qga2VlcCBjb3VudHMuCisgICAgcmV0dXJuICEhbV9mYXN0Q291bnRzOworfQorCiBDYWxs
RWRnZUxpc3QgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6OmVkZ2VzKCkgY29uc3QKIHsKLSAg
ICAvLyBXZSB3b3VsZG4ndCBoYXZlIHRoZXNlIGlmIHRoaXMgd2FzIGFuIEZUTCBzdHViIHJvdXRp
bmUuIFdlIHNob3VsZG4ndCBiZSBhc2tpbmcgZm9yIHByb2ZpbGluZwotICAgIC8vIGZyb20gdGhl
IEZUTC4KICAgICBSRUxFQVNFX0FTU0VSVChtX2Zhc3RDb3VudHMpOwogICAgIAogICAgIENhbGxF
ZGdlTGlzdCByZXN1bHQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3Jw
aGljQ2FsbFN0dWJSb3V0aW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5oCShyZXZpc2lvbiAyMzI0NDEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmgJKHdv
cmtpbmcgY29weSkKQEAgLTkwLDYgKzkwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflBvbHlt
b3JwaGljQ2FsbFN0dWJSb3V0aW5lKCk7CiAgICAgCiAgICAgQ2FsbFZhcmlhbnRMaXN0IHZhcmlh
bnRzKCkgY29uc3Q7CisgICAgYm9vbCBoYXNFZGdlcygpIGNvbnN0OwogICAgIENhbGxFZGdlTGlz
dCBlZGdlcygpIGNvbnN0OwogCiAgICAgdm9pZCBjbGVhckNhbGxOb2Rlc0ZvcihDYWxsTGlua0lu
Zm8qKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVj
b2RlU2VxdWVuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9m
aWxlci9Qcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuY3BwCShyZXZpc2lvbiAyMzI0NDEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTItMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ5LDEyICs0OSwxMiBAQCBCeXRlY29kZVNlcXVlbmNlOjpC
eXRlY29kZVNlcXVlbmNlKENvZGVCCiAgICAgICAgIG1faGVhZGVyLmFwcGVuZChvdXQudG9DU3Ry
aW5nKCkpOwogICAgIH0KICAgICAKLSAgICBTdHViSW5mb01hcCBzdHViSW5mb3M7Ci0gICAgY29k
ZUJsb2NrLT5nZXRTdHViSW5mb01hcChzdHViSW5mb3MpOworICAgIElDU3RhdHVzTWFwIHN0YXR1
c01hcDsKKyAgICBjb2RlQmxvY2stPmdldElDU3RhdHVzTWFwKHN0YXR1c01hcCk7CiAgICAgCiAg
ICAgZm9yICh1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gMDsgYnl0ZWNvZGVJbmRleCA8IGNvZGVC
bG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOykgewogICAgICAgICBvdXQucmVzZXQoKTsKLSAg
ICAgICAgY29kZUJsb2NrLT5kdW1wQnl0ZWNvZGUob3V0LCBieXRlY29kZUluZGV4LCBzdHViSW5m
b3MpOworICAgICAgICBjb2RlQmxvY2stPmR1bXBCeXRlY29kZShvdXQsIGJ5dGVjb2RlSW5kZXgs
IHN0YXR1c01hcCk7CiAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gSW50ZXJwcmV0ZXI6Omdl
dE9wY29kZUlEKGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVJbmRleF0udS5vcGNv
ZGUpOwogICAgICAgICBtX3NlcXVlbmNlLmFwcGVuZChCeXRlY29kZShieXRlY29kZUluZGV4LCBv
cGNvZGVJRCwgb3V0LnRvQ1N0cmluZygpKSk7CiAgICAgICAgIGJ5dGVjb2RlSW5kZXggKz0gb3Bj
b2RlTGVuZ3RoKG9wY29kZUlEKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uUmFyZURhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODIsNiArODIsOSBAQCBGdW5jdGlvblJhcmVEYXRhOjp+RnVuY3Rpb25SYXJlRGF0
YSgpCiAKIHZvaWQgRnVuY3Rpb25SYXJlRGF0YTo6aW5pdGlhbGl6ZU9iamVjdEFsbG9jYXRpb25Q
cm9maWxlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHBy
b3RvdHlwZSwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCBKU0Z1bmN0aW9uKiBjb25zdHJ1Y3RvcikK
IHsKKyAgICBpZiAobV9vYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQuaXNTdGlsbFZh
bGlkKCkpCisgICAgICAgIG1fb2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50LnN0YXJ0
V2F0Y2hpbmcoKTsKKyAgICAKICAgICBtX29iamVjdEFsbG9jYXRpb25Qcm9maWxlLmluaXRpYWxp
emVQcm9maWxlKHZtLCBnbG9iYWxPYmplY3QsIHRoaXMsIHByb3RvdHlwZSwgaW5saW5lQ2FwYWNp
dHksIGNvbnN0cnVjdG9yLCB0aGlzKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMjMyNDQxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzUsNiArMjc1LDcgQEAg
Y29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbgogICAgIHYodW5zaWduZWQs
IG1heEFjY2Vzc1ZhcmlhbnRMaXN0U2l6ZSwgOCwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihi
b29sLCB1c2VQb2x5dmFyaWFudERldmlydHVhbGl6YXRpb24sIHRydWUsIE5vcm1hbCwgbnVsbHB0
cikgXAogICAgIHYoYm9vbCwgdXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZywgdHJ1ZSwgTm9y
bWFsLCBudWxscHRyKSBcCisgICAgdih1bnNpZ25lZCwgbWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxp
bmluZ0xpc3RTaXplLCA4LCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KGJvb2wsIHVzZVBvbHlt
b3JwaGljQ2FsbElubGluaW5nLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KGJvb2ws
IHVzZVBvbHltb3JwaGljQ2FsbElubGluaW5nRm9yTm9uU3R1YlN0YXR1cywgZmFsc2UsIE5vcm1h
bCwgbnVsbHB0cikgXAogICAgIHYodW5zaWduZWQsIG1heFBvbHltb3JwaGljQ2FsbFZhcmlhbnRM
aXN0U2l6ZSwgMTUsIE5vcm1hbCwgbnVsbHB0cikgXApAQCAtMzIyLDkgKzMyMyw2IEBAIGNvbnN0
ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW4KICAgICBcCiAgICAgdih1bnNpZ25l
ZCwgbWF4aW11bVZhcmFyZ3NGb3JJbmxpbmluZywgMTAwLCBOb3JtYWwsIG51bGxwdHIpIFwKICAg
ICBcCi0gICAgdihib29sLCB1c2VQb2x5dmFyaWFudENhbGxJbmxpbmluZywgdHJ1ZSwgTm9ybWFs
LCBudWxscHRyKSBcCi0gICAgdihib29sLCB1c2VQb2x5dmFyaWFudEJ5SWRJbmxpbmluZywgdHJ1
ZSwgTm9ybWFsLCBudWxscHRyKSBcCi0gICAgXAogICAgIHYoYm9vbCwgdXNlTWF4aW1hbEZsdXNo
SW5zZXJ0aW9uUGhhc2UsIGZhbHNlLCBOb3JtYWwsICJTZXR0aW5nIHRvIHRydWUgYWxsb3dzIHRo
ZSBERkcncyBNYXhpbWFsRmx1c2hJbnNlcnRpb25QaGFzZSB0byBydW4uIikgXAogICAgIFwKICAg
ICB2KHVuc2lnbmVkLCBtYXhpbXVtQmluYXJ5U3RyaW5nU3dpdGNoQ2FzZUxlbmd0aCwgNTAsIE5v
cm1hbCwgbnVsbHB0cikgXAo=
</data>
<flag name="review"
          id="360009"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341850</attachid>
            <date>2018-06-02 13:13:14 -0700</date>
            <delta_ts>2018-06-02 13:30:27 -0700</delta_ts>
            <desc>fix build</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>200759</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMzI0NDEpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDMwIEBACisyMDE4LTA2LTAyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CisKKyAgICAgICAgV2Ugc2hvdWxkIHN1cHBvcnQgQ3JlYXRlVGhpcyBpbiB0aGUgRlRMCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ5MDQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1pY3JvYmVu
Y2htYXJrcy9wb2x5dmFyaWFudC1nZXQtYnktaWQtc2hvcnRlci10b3dlci5qczogQWRkZWQuCisg
ICAgICAgIChwb2x5dmFyaWFudCk6CisgICAgICAgIChGb28ucHJvdG90eXBlLmZ1bmMpOgorICAg
ICAgICAoRm9vKToKKyAgICAgICAgKGZvbyk6CisgICAgICAgIChCYXIucHJvdG90eXBlLmZ1bmMp
OgorICAgICAgICAoQmFyKToKKyAgICAgICAgKGJhcik6CisgICAgICAgICogbWljcm9iZW5jaG1h
cmtzL3BvbHl2YXJpYW50LWdldC1ieS1pZC10b3dlci5qczogQWRkZWQuCisgICAgICAgIChwb2x5
dmFyaWFudCk6CisgICAgICAgIChGb28ucHJvdG90eXBlLmZ1bmMpOgorICAgICAgICAoRm9vKToK
KyAgICAgICAgKGZvbyk6CisgICAgICAgIChCYXIucHJvdG90eXBlLmZ1bmMpOgorICAgICAgICAo
QmFyKToKKyAgICAgICAgKGJhcik6CisgICAgICAgIChCYXoucHJvdG90eXBlLmZ1bmMpOgorICAg
ICAgICAoQmF6KToKKyAgICAgICAgKGJheik6CisKIDIwMTgtMDYtMDIgIENhaW8gTGltYSAgPHRp
Y2Fpb2xpbWFAZ21haWwuY29tPgogCiAgICAgICAgIFtFU05leHRdW0JpZ0ludF0gSW1wbGVtZW50
IHN1cHBvcnQgZm9yIGFkZGl0aW9uIG9wZXJhdGlvbnMKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL3BvbHl2YXJpYW50LWdldC1ieS1pZC1zaG9ydGVyLXRvd2VyLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3BvbHl2YXJpYW50LWdldC1ieS1pZC1zaG9ydGVy
LXRvd2VyLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3BvbHl2
YXJpYW50LWdldC1ieS1pZC1zaG9ydGVyLXRvd2VyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDYgQEAKKyhmdW5jdGlvbigpIHsKKyAgICB2YXIgZ2xvYmFsTzsKKyAgICAKKyAgICBmdW5j
dGlvbiBwb2x5dmFyaWFudCgpCisgICAgeworICAgICAgICByZXR1cm4gZ2xvYmFsTy5mdW5jKCk7
CisgICAgfQorICAgIAorICAgIGNsYXNzIEZvbyB7CisgICAgICAgIGZ1bmMoKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gNDI7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgdmFy
IGZvb08gPSBuZXcgRm9vKCk7CisgICAgCisgICAgZnVuY3Rpb24gZm9vKCkKKyAgICB7CisgICAg
ICAgIGdsb2JhbE8gPSBmb29POworICAgICAgICByZXR1cm4gcG9seXZhcmlhbnQoKTsKKyAgICB9
CisgICAgCisgICAgY2xhc3MgQmFyIHsKKyAgICAgICAgZnVuYygpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBmb28oKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2YXIgYmFy
TyA9IG5ldyBCYXIoKTsKKyAgICAKKyAgICBmdW5jdGlvbiBiYXIoKQorICAgIHsKKyAgICAgICAg
Z2xvYmFsTyA9IGJhck87CisgICAgICAgIHJldHVybiBwb2x5dmFyaWFudCgpOworICAgIH0KKyAg
ICAKKyAgICB2YXIgY291bnQgPSAxMDAwMDAwOworICAgIHZhciByZXN1bHQgPSAwOworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgcmVzdWx0ICs9IGJhcigpOwor
ICAgIAorICAgIGlmIChyZXN1bHQgIT0gY291bnQgKiA0MikKKyAgICAgICAgdGhyb3cgIkVycm9y
OiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfSkoKTsKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL3BvbHl2YXJpYW50LWdldC1ieS1pZC10b3dlci5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9wb2x5dmFyaWFudC1nZXQtYnktaWQtdG93ZXIuanMJKG5vbmV4
aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seXZhcmlhbnQtZ2V0LWJ5LWlk
LXRvd2VyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjEgQEAKKyhmdW5jdGlvbigpIHsK
KyAgICB2YXIgZ2xvYmFsTzsKKyAgICAKKyAgICBmdW5jdGlvbiBwb2x5dmFyaWFudCgpCisgICAg
eworICAgICAgICByZXR1cm4gZ2xvYmFsTy5mdW5jKCk7CisgICAgfQorICAgIAorICAgIGNsYXNz
IEZvbyB7CisgICAgICAgIGZ1bmMoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gNDI7
CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgdmFyIGZvb08gPSBuZXcgRm9vKCk7CisgICAg
CisgICAgZnVuY3Rpb24gZm9vKCkKKyAgICB7CisgICAgICAgIGdsb2JhbE8gPSBmb29POworICAg
ICAgICByZXR1cm4gcG9seXZhcmlhbnQoKTsKKyAgICB9CisgICAgCisgICAgY2xhc3MgQmFyIHsK
KyAgICAgICAgZnVuYygpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmb28oKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2YXIgYmFyTyA9IG5ldyBCYXIoKTsKKyAgICAKKyAg
ICBmdW5jdGlvbiBiYXIoKQorICAgIHsKKyAgICAgICAgZ2xvYmFsTyA9IGJhck87CisgICAgICAg
IHJldHVybiBwb2x5dmFyaWFudCgpOworICAgIH0KKyAgICAKKyAgICBjbGFzcyBCYXogeworICAg
ICAgICBmdW5jKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGJhcigpOworICAgICAg
ICB9CisgICAgfQorICAgIAorICAgIHZhciBiYXpPID0gbmV3IEJheigpOworICAgIAorICAgIGZ1
bmN0aW9uIGJheigpCisgICAgeworICAgICAgICBnbG9iYWxPID0gYmF6TzsKKyAgICAgICAgcmV0
dXJuIHBvbHl2YXJpYW50KCk7CisgICAgfQorICAgIAorICAgIHZhciBjb3VudCA9IDEwMDAwMDA7
CisgICAgdmFyIHJlc3VsdCA9IDA7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytp
KQorICAgICAgICByZXN1bHQgKz0gYmF6KCk7CisgICAgCisgICAgaWYgKHJlc3VsdCAhPSBjb3Vu
dCAqIDQyKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9
KSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzI0NDEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
Mjg5IEBACisyMDE4LTA2LTAyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAg
ICAgICAgV2Ugc2hvdWxkIHN1cHBvcnQgQ3JlYXRlVGhpcyBpbiB0aGUgRlRMCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ5MDQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgc3RhcnRl
ZCB3aXRoIFNhYW0ncyBwYXRjaCB0byBpbXBsZW1lbnQgQ3JlYXRlVGhpcyBpbiB0aGUgRlRMLCBi
dXQgdHVybmVkIGludG8gYSB0eXBlCisgICAgICAgIGluZmVyZW5jZSBhZHZlbnR1cmUuCisgICAg
ICAgIAorICAgICAgICBDcmVhdGVUaGlzIGluIHRoZSBGVEwgd2FzIGEgbWFzc2l2ZSByZWdyZXNz
aW9uIGluIHJheXRyYWNlIGJlY2F1c2UgaXQgZGlzdHVyYmVkIHRoYXQKKyAgICAgICAgYmVuY2ht
YXJrJ3MgZXh0cmVtZWx5IHBlcnZlcnNlIHdheSBvZiB3aW5uaW5nIGF0IHR5cGUgaW5mZXJlbmNl
OgorICAgICAgICAKKyAgICAgICAgLSBUaGUgYmVuY2htYXJrIHdhbnRlZCBwb2x5dmFyaWFudCBk
ZXZpcnR1YWxpemF0aW9uIG9mIGFuIG9iamVjdCBjb25zdHJ1Y3Rpb24gaGVscGVyLiBCdXQsCisg
ICAgICAgICAgdGhlIHBvbHl2YXJpYW50IHByb2ZpbGVyIHdhc24ndCBwb3dlcmZ1bCBlbm91Z2gg
dG8gcmVsaWFibHkgZGV2aXJ0dWFsaXplIHRoYXQgY29kZS4gU28sIHRoZQorICAgICAgICAgIGJl
bmNobWFyayB3YXMgZmFsbGluZyBiYWNrIHRvIG90aGVyIG1lY2hhbmlzbXMuLi4KKyAgICAgICAg
CisgICAgICAgIC0gVGhlIGNvbnN0cnVjdGlvbiBoZWxwZXIgY291bGQgbm90IHRpZXIgdXAgaW50
byB0aGUgRlRMLiBXaGVuIHRoZSBERkcgY29tcGlsZWQgaXQsIGl0IHdvdWxkCisgICAgICAgICAg
c2VlIHRoYXQgdGhlIElDIGhhZCA0IGNhc2VzLiBUaGF0J3MgdG9vIHBvbHltb3JwaGljIGZvciB0
aGUgREZHLiBTbywgdGhlIERGRyB3b3VsZCBlbWl0IGEKKyAgICAgICAgICBHZXRCeUlkLiBTaG9y
dGx5IGFmdGVyIHRoZSBERkcgY29tcGlsZSwgdGhhdCBnZXRfYnlfaWQgd291bGQgc2VlIG1hbnkg
bW9yZSBjYXNlcywgYnV0IG5vdworICAgICAgICAgIHRoYXQgdGhlIGhlbHBlciB3YXMgY29tcGls
ZWQgYnkgdGhlIERGRywgdGhlIGJhc2VsaW5lIGdldF9ieV9pZCB3b3VsZCBub3Qgc2VlIHRob3Nl
IGNhc2VzLgorICAgICAgICAgIFRoZSBERkcncyBHZXRCeUlkIHdvdWxkICJoaWRlIiB0aG9zZSBj
YXNlcy4gVGhlIG51bWJlciBvZiBjYXNlcyB0aGUgREZHJ3MgR2V0QnlJZCB3b3VsZCBzZWUKKyAg
ICAgICAgICBpcyBsYXJnZXIgdGhhbiBvdXIgcG9seW1vcnBoaWMgbGlzdCBsaW1pdCAobGltaXQg
PSA4LCBjYXNlIGNvdW50ID0gMTMsIEkgdGhpbmspLgorICAgICAgICAgIAorICAgICAgICAgIE5v
dGUgdGhhdCBpZiB0aGUgRlRMIGNvbXBpbGVzIHRoYXQgY29uc3RydWN0aW9uIGhlbHBlciwgaXQg
c2VlcyB0aGUgNCBjYXNlcywgdHVybnMgdGhlbQorICAgICAgICAgIGludG8gYSBNdWx0aUdldEJ5
T2Zmc2V0LCB0aGVuIHN1ZmZlcnMgZnJvbSBleGl0cyB3aGVuIHRoZSBuZXcgY2FzZXMgaGl0LCBh
bmQgdGhlbiBleGl0cyB0bworICAgICAgICAgIGJhc2VsaW5lLCB3aGljaCB0aGVuIHNlZXMgdGhv
c2UgY2FzZXMuIEx1Y2tpbHksIHRoZSBGVEwgd2FzIG5vdCBjb21waWxpbmcgdGhlIGNvbnN0cnVj
dGlvbgorICAgICAgICAgIGhlbHBlciBiZWNhdXNlIGl0IGhhZCBhIENyZWF0ZVRoaXMuCisgICAg
ICAgIAorICAgICAgICAtIENvbXBpbGF0aW9ucyB0aGF0IGlubGluZWQgdGhlIGNvbnN0cnVjdGlv
biBoZWxwZXIgd291bGQgaGF2ZSBnb3R0ZW4gc3VwZXIgbHVja3kgd2l0aAorICAgICAgICAgIHBh
cnNlLXRpbWUgY29uc3RhbnQgZm9sZGluZywgc28gdGhleSBrbmV3IHdoYXQgc3RydWN0dXJlIHRo
ZSBpbnB1dCB0byB0aGUgZ2V0X2J5X2lkIHdvdWxkCisgICAgICAgICAgaGF2ZSBhdCBwYXJzZSB0
aW1lLiBUaGlzIGlzIG9ubHkgcHJvZml0YWJsZSBpZiB0aGUgZ2V0X2J5X2lkIHBhcnNpbmcgY29t
cHV0ZWQgYQorICAgICAgICAgIEdldEJ5SWRTdGF0dXMgdGhhdCBoYWQgYSBmaW5pdGUgbnVtYmVy
IG9mIGNhc2VzLiBCZWNhdXNlIHRoZSAxMyBjYXNlcyB3ZXJlIGJlaW5nIGhpZGRlbiBieQorICAg
ICAgICAgIHRoZSBERkcgR2V0QnlJZCBhbmQgR2V0QnlJZFN0YXR1cyB3b3VsZCBvbmx5IGxvb2sg
YXQgdGhlIGJhc2VsaW5lIGdldF9ieV9pZCwgd2hpY2ggaGFkIDQKKyAgICAgICAgICBjYXNlcywg
d2Ugd291bGQgaW5kZWVkIGdldCBhIGZpbml0ZSBudW1iZXIgb2YgY2FzZXMuIFRoZSBwYXJzZXIg
d291bGQgdGhlbiBwcnVuZSB0aG9zZQorICAgICAgICAgIGNhc2VzIHRvIGp1c3Qgb25lIC0gYmFz
ZWQgb24gaXRzIGtub3dsZWRnZSBvZiB0aGUgc3RydWN0dXJlIC0gYW5kIHRoYXQgd291bGQgcmVz
dWx0IGluIHRoYXQKKyAgICAgICAgICBnZXRfYnlfaWQgYmVpbmcgZm9sZGVkIGF0IHBhcnNlIHRp
bWUgdG8gYSBjb25zdGFudC4KKyAgICAgICAgCisgICAgICAgIC0gVGhlIHN1YnNlcXVlbnQgb3Bf
Y2FsbCB3b3VsZCBpbmxpbmUgYmFzZWQgb24gcGFyc2UtdGltZSBrbm93bGVkZ2Ugb2YgdGhhdCBj
b25zdGFudC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggY29tcHJlaGVuc2l2ZWx5IGZp
eGVzIHRoZXNlIGlzc3VlcywgYXMgd2VsbCBhcyBvdGhlciBpc3N1ZXMgdGhhdCBjb21lIHVwIGFs
b25nIHRoZQorICAgICAgICB3YXk6CisgICAgICAgIAorICAgICAgICAtIFBvbHl2YXJpYW50IHBy
b2ZpbGluZyBub3cgY29uc3VsdHMgZXZlcnkgREZHIG9yIEZUTCBjb2RlIGJsb2NrIHRoYXQgcGFy
dGljaXBhdGVkIGluIGFueQorICAgICAgICAgIHN1YnNldCBvZiB0aGUgaW5saW5lIHN0YWNrIHRo
YXQgaW5jbHVkZXMgdGhlIElDIHdlJ3JlIHByb2ZpbGluZy4gRm9yIGV4YW1wbGUsIGlmIHdlIGhh
dmUKKyAgICAgICAgICBhbiBpbmxpbmUgc3RhY2sgbGlrZSBmb28tPmJhci0+YmF6LCB3aXRoIGJh
eiBvbiB0b3AsIHRoZW4gd2Ugd2lsbCBjb25zdWx0IERGRyBvciBGVEwKKyAgICAgICAgICBjb21w
aWxhdGlvbnMgZm9yIGZvbywgYmFyLCBhbmQgYmF6LiBJbiBmb28sIHdlJ2xsIGxvb2sgdXAgZm9v
LT5iYXItPmJhejsgaW4gYmFyIHdlJ2xsIGxvb2sKKyAgICAgICAgICB1cCBiYXItPmJhejsgZXRj
LiBUaGlzIGZpeGVzIHR3byBwcm9ibGVtcyBlbmNvdW50ZXJlZCBpbiByYXl0cmFjZS4gRmlyc3Qs
IGl0IGVuc3VyZXMgdGhhdAorICAgICAgICAgIGEgREZHIEdldEJ5SWQgY2Fubm90IGhpZGUgYW55
dGhpbmcgZnJvbSB0aGUgcHJvZmlsaW5nIG9mIHRoYXQgZ2V0X2J5X2lkLCBzaW5jZSB0aGUKKyAg
ICAgICAgICBwb2x5dmFyaWFudCBwcm9maWxpbmcgY29kZSB3aWxsIGFsd2F5cyBjb25zdWx0IGl0
LiBTZWNvbmQsIGl0IGVuYWJsZXMgcmF5dHJhY2UgdG8gYmVuZWZpdAorICAgICAgICAgIGZyb20g
cG9seXZhcmlhbnQgcHJvZmxpbmcuIFByZXZpb3VzbHksIHRoZSBwb2x5dmFyaWFudCBwcm9maWxl
ciB3b3VsZCBvbmx5IGxvb2sgYXQgdGhlCisgICAgICAgICAgcHJldmlvdXMgREZHIGNvbXBpbGF0
aW9uIG9mIGZvbyBhbmQgbG9vayB1cCBmb28tPmJhci0+YmF6LiBCdXQgdGhhdCBvbmx5IHdvcmtz
IGlmIERGRy1mb28KKyAgICAgICAgICBoYWQgaW5saW5lZCBiYXIgYW5kIHRoZW4gYmF6LiBJdCBt
YXkgbm90IGhhdmUgZG9uZSB0aGF0LCBiZWNhdXNlIHRob3NlIGNhbGxzIGNvdWxkIGhhdmUKKyAg
ICAgICAgICByZXF1aXJlZCBwb2x5dmFyaWFudCBwcm9maWxpbmcgdGhhdCB3YXMgb25seSBhdmFp
bGFibGUgaW4gdGhlIEZUTC4KKyAgICAgICAgCisgICAgICAgIC0gSW5saW5pbmcgYW4gaW5saW5l
IGNhY2hlIG5vdyBwcmVzZXJ2ZXMgYXMgbXVjaCBpbmZvcm1hdGlvbiBhcyBwcm9maWxpbmcuIE9u
ZSBjaGFsbGVuZ2Ugb2YKKyAgICAgICAgICBwb2x5dmFyaWFudCBwcm9maWxpbmcgaXMgdGhhdCB0
aGUgRlRMIGNvbXBpbGUgZm9yIGJhciAodGhhdCBpbmNsdWRlcyBiYXItPmJheikgY291bGQgaGF2
ZQorICAgICAgICAgIGlubGluZWQgYW4gaW5saW5lIGNhY2hlIGJhc2VkIG9uIHBvbHl2YXJpYW50
IHByb2ZpbGluZy4gU28sIHdoZW4gdGhlIEZUTCBjb21waWxlIGZvciBmb28KKyAgICAgICAgICAo
dGhhdCBpbmNsdWRlcyBmb28tPmJhci0+YmF6KSBhc2tzIGJhciB3aGF0IGl0IGtub3dzIGFib3V0
IHRoYXQgSUMgaW5zaWRlIGJhci0+YmF6LCBpdCB3aWxsCisgICAgICAgICAgc2F5ICJJIGRvbid0
IGhhdmUgc3VjaCBhbiBJQyIuIEF0IHRoaXMgcG9pbnQgdGhlIERGRyBjb21waWxhdGlvbiB0aGF0
IGluY2x1ZGVkIHRoYXQgSUMgdGhhdAorICAgICAgICAgIGdhdmUgdXMgdGhlIGluZm9ybWF0aW9u
IHRoYXQgd2UgdXNlZCB0byBpbmxpbmUgdGhlIElDIGlzIG5vIGxvbmdlciBhbGl2ZS4gVG8ga2Vl
cCB1cyBmcm9tCisgICAgICAgICAgbG9zaW5nIHRoZSBpbmZvcm1hdGlvbiB3ZSBsZWFybmVkIGFi
b3V0IHRoZSBJQywgdGhlcmUgaXMgbm93IGEgUmVjb3JkZWRTdGF0dXNlcyBkYXRhCisgICAgICAg
ICAgc3RydWN0dXJlIHRoYXQgcHJlc2VydmVzIHRoZSBzdGF0dXNlcyB3ZSB1c2UgZm9yIGlubGlu
aW5nIElDcy4gV2UgYWxzbyBmaWx0ZXIgdGhvc2UKKyAgICAgICAgICBzdGF0dXNlcyBhY2NvcmRp
bmcgdG8gdGhpbmdzIHdlIGxlYXJuIGZyb20gQUkuIFRoaXMgZnVydGhlciByZWR1Y2VzIHRoZSBy
aXNrIG9mIGluZm9ybWF0aW9uCisgICAgICAgICAgYWJvdXQgYW4gSUMgYmVpbmcgZm9yZ290dGVu
LgorICAgICAgICAKKyAgICAgICAgLSBFeGl0IHByb2ZpbGluZyBub3cgY29uc2lkZXJzIHdoZXRo
ZXIgb3Igbm90IGFuIGV4aXQgaGFwcGVuZWQgZnJvbSBpbmxpbmUgY29kZS4gVGhpcworICAgICAg
ICAgIHByb3RlY3RzIHVzIGluIHRoZSBjYXNlIHdoZXJlIHRoZSBub3QtaW5saW5lZCB2ZXJzaW9u
IG9mIGFuIElDIGV4aXRlZCBhIGxvdCBiZWNhdXNlIG9mCisgICAgICAgICAgcG9seW1vcnBoaXNt
IHRoYXQgZG9lc24ndCBleGlzdCBpbiB0aGUgaW5saW5lZCB2ZXJzaW9uLiBTbywgd2hlbiB1c2lu
ZyBwb2x5dmFyaWFudAorICAgICAgICAgIHByb2ZpbGluZyBkYXRhLCB3ZSBjb25zaWRlciBvbmx5
IGlubGluZWQgZXhpdHMuCisgICAgICAgIAorICAgICAgICBBbHRvZ2V0aGVyIHRoaXMgcGF0Y2gg
aXMgcGVyZm9ybWFuY2UtbmV1dHJhbCBpbiBydW4tanNjLWJlbmNobWFya3MsIGV4Y2VwdCBmb3Ig
c3BlZWQtdXBzIGluCisgICAgICAgIG1pY3JvYmVuY2htYXJrcyBhbmQgYSBjb21waWxlIHRpbWUg
cmVncmVzc2lvbi4gT2N0YW5lL2JveWVyIHNwZWVkcyB1cCBieSA0LjclLCBidXQgSSdtIG5vdAor
ICAgICAgICBzdXJlIGlmIHRoYXQncyByZWFsLiBBbHNvLCBpdCdzIGEgMS4yJSByZWdyZXNzaW9u
IG9uIFY4U3BpZGVyLUNvbXBpbGVUaW1lLiBUaGF0J3MgYSBzbWFsbGVyCisgICAgICAgIHJlZ3Jl
c3Npb24gdGhhbiByZWNlbnQgY29tcGlsZSB0aW1lIHByb2dyZXNzaW9ucywgc28gSSB0aGluayB0
aGF0J3MgYW4gT0sgdHJhZGUtb2ZmLiBBbHNvLCBJCisgICAgICAgIHdvdWxkIGV4cGVjdCBhIGNv
bXBpbGUgdGltZSByZWdyZXNzaW9uIGFueXRpbWUgd2UgZmlsbCBpbiBGVEwgY292ZXJhZ2UuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAq
IGJ5dGVjb2RlL0J5VmFsSW5mby5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludEdldEJ5SWRD
YWNoZVN0YXR1cyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRQ
dXRCeUlkQ2FjaGVTdGF0dXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjxCbG9jaz46
OnByaW50SW5CeUlkQ2FjaGVTdGF0dXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjxC
bG9jaz46OmR1bXBDYWxsTGlua1N0YXR1cyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVy
PENvZGVCbG9jaz46OmR1bXBDYWxsTGlua1N0YXR1cyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
RHVtcGVyPEJsb2NrPjo6cHJpbnRDYWxsT3ApOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBl
cjxCbG9jaz46OmR1bXBCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyPEJs
b2NrPjo6ZHVtcEJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUR1bXBlci5oOgor
ICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5oOgorICAgICAgICAqIGJ5dGVjb2RlL0Nh
bGxMaW5rU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVG
b3IpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YSk6
CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJvbUNhbGxMaW5rSW5mbyk6
CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjphY2NvdW50Rm9yRXhpdHMpOgorICAgICAg
ICAoSlNDOjpDYWxsTGlua1N0YXR1czo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpDYWxsTGlu
a1N0YXR1czo6ZmlsdGVyKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVE
RkdTdGF0dXNlcyk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMu
aDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgor
ICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6b3BlcmF0b3IhIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBieXRlY29kZS9DYWxsVmFyaWFudC5jcHA6CisgICAgICAgIChKU0M6OkNhbGxW
YXJpYW50OjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpmaWx0ZXIpOgor
ICAgICAgICAqIGJ5dGVjb2RlL0NhbGxWYXJpYW50Lmg6CisgICAgICAgIChKU0M6OkNhbGxWYXJp
YW50OjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6Om9w
ZXJhdG9yISBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
Z2V0SUNTdGF0dXNNYXApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnJlc2V0SklURGF0YSk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Z2V0U3R1YkluZm9NYXApOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmdldENhbGxMaW5rSW5mb01hcCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6Z2V0QnlWYWxJbmZvTWFwKTogRGVsZXRlZC4KKyAgICAgICAg
KiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlT3JpZ2luLmNw
cDoKKyAgICAgICAgKEpTQzo6Q29kZU9yaWdpbjo6aXNBcHByb3hpbWF0ZWx5RXF1YWxUbyBjb25z
dCk6CisgICAgICAgIChKU0M6OkNvZGVPcmlnaW46OmFwcHJveGltYXRlSGFzaCBjb25zdCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQ29kZU9yaWdpbi5oOgorICAgICAgICAoSlNDOjpDb2RlT3JpZ2lu
OjpleGl0aW5nSW5saW5lS2luZCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvREZHRXhpdFBy
b2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZyZXF1ZW50RXhpdFNpdGU6OmR1bXAgY29u
c3QpOgorICAgICAgICAoSlNDOjpERkc6OkV4aXRQcm9maWxlOjphZGQpOgorICAgICAgICAqIGJ5
dGVjb2RlL0RGR0V4aXRQcm9maWxlLmg6CisgICAgICAgIChKU0M6OkRGRzo6RnJlcXVlbnRFeGl0
U2l0ZTo6RnJlcXVlbnRFeGl0U2l0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6RnJlcXVlbnRFeGl0
U2l0ZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6RnJlcXVlbnRFeGl0
U2l0ZTo6c3Vic3VtZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkZyZXF1ZW50RXhpdFNp
dGU6Omhhc2ggY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkZyZXF1ZW50RXhpdFNpdGU6Omlu
bGluZUtpbmQgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkZyZXF1ZW50RXhpdFNpdGU6Ondp
dGhJbmxpbmVLaW5kIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpRdWVyeWFibGVFeGl0UHJv
ZmlsZTo6aGFzRXhpdFNpdGUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OlF1ZXJ5YWJsZUV4
aXRQcm9maWxlOjpoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0pJVFR5cGUgY29uc3QpOgorICAgICAg
ICAoSlNDOjpERkc6OlF1ZXJ5YWJsZUV4aXRQcm9maWxlOjpoYXNFeGl0U2l0ZVdpdGhTcGVjaWZp
Y0lubGluZUtpbmQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4aXRGbGFnLmNwcDogQWRk
ZWQuCisgICAgICAgIChKU0M6OkV4aXRGbGFnOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBieXRl
Y29kZS9FeGl0RmxhZy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RXhpdEZsYWc6OkV4aXRGbGFn
KToKKyAgICAgICAgKEpTQzo6RXhpdEZsYWc6Om9wZXJhdG9yfCBjb25zdCk6CisgICAgICAgIChK
U0M6OkV4aXRGbGFnOjpvcGVyYXRvcnw9KToKKyAgICAgICAgKEpTQzo6RXhpdEZsYWc6Om9wZXJh
dG9yJiBjb25zdCk6CisgICAgICAgIChKU0M6OkV4aXRGbGFnOjpvcGVyYXRvciY9KToKKyAgICAg
ICAgKEpTQzo6RXhpdEZsYWc6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorICAgICAgICAoSlNDOjpF
eGl0RmxhZzo6aXNTZXQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4aXRpbmdJbmxpbmVL
aW5kLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAq
IGJ5dGVjb2RlL0V4aXRpbmdJbmxpbmVLaW5kLmg6IEFkZGVkLgorICAgICAgICAqIGJ5dGVjb2Rl
L0dldEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRl
Rm9yKToKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKToK
KyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6c2xvd1ZlcnNpb24gY29uc3QpOgorICAgICAg
ICAoSlNDOjpHZXRCeUlkU3RhdHVzOjptYXJrSWZDaGVhcCk6CisgICAgICAgIChKU0M6OkdldEJ5
SWRTdGF0dXM6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6aGFzRXhp
dFNpdGUpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaDoKKyAg
ICAgICAgKiBieXRlY29kZS9HZXRCeUlkVmFyaWFudC5jcHA6CisgICAgICAgIChKU0M6OkdldEJ5
SWRWYXJpYW50OjptYXJrSWZDaGVhcCk6CisgICAgICAgIChKU0M6OkdldEJ5SWRWYXJpYW50Ojpm
aW5hbGl6ZSk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuaDoKKyAgICAgICAg
KiBieXRlY29kZS9JQ1N0YXR1c01hcC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpJQ1N0YXR1
c0NvbnRleHQ6OmdldCBjb25zdCk6CisgICAgICAgIChKU0M6OklDU3RhdHVzQ29udGV4dDo6aXNJ
bmxpbmVkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SUNTdGF0dXNDb250ZXh0OjppbmxpbmVLaW5k
IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JQ1N0YXR1c01hcC5oOiBBZGRlZC4KKyAgICAg
ICAgKiBieXRlY29kZS9JQ1N0YXR1c1V0aWxzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6Omhh
c0JhZENhY2hlRXhpdFNpdGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0lDU3RhdHVzVXRpbHMuaDoK
KyAgICAgICAgKiBieXRlY29kZS9JbnN0YW5jZU9mU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6
SW5zdGFuY2VPZlN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdGFu
Y2VPZlN0YXR1cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmg6
CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OlB1
dEJ5SWRTdGF0dXM6Omhhc0V4aXRTaXRlKToKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6
Y29tcHV0ZUZvcik6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OnNsb3dWZXJzaW9uIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6bWFya0lmQ2hlYXApOgorICAgICAg
ICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OlB1dEJ5SWRT
dGF0dXM6OmZpbHRlcik6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oOgorICAg
ICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJ
ZFZhcmlhbnQ6Om1hcmtJZkNoZWFwKToKKyAgICAgICAgKEpTQzo6UHV0QnlJZFZhcmlhbnQ6OmZp
bmFsaXplKToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkVmFyaWFudC5oOgorICAgICAgICAo
SlNDOjpQdXRCeUlkVmFyaWFudDo6c3RydWN0dXJlU2V0IGNvbnN0KToKKyAgICAgICAgKiBieXRl
Y29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlJlY29yZGVk
U3RhdHVzZXM6Om9wZXJhdG9yPSk6CisgICAgICAgIChKU0M6OlJlY29yZGVkU3RhdHVzZXM6OlJl
Y29yZGVkU3RhdHVzZXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1c2VzOjphZGRDYWxs
TGlua1N0YXR1cyk6CisgICAgICAgIChKU0M6OlJlY29yZGVkU3RhdHVzZXM6OmFkZEdldEJ5SWRT
dGF0dXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1c2VzOjphZGRQdXRCeUlkU3RhdHVz
KToKKyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6bWFya0lmQ2hlYXApOgorICAgICAg
ICAoSlNDOjpSZWNvcmRlZFN0YXR1c2VzOjpmaW5hbGl6ZVdpdGhvdXREZWxldGluZyk6CisgICAg
ICAgIChKU0M6OlJlY29yZGVkU3RhdHVzZXM6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6UmVj
b3JkZWRTdGF0dXNlczo6c2hyaW5rVG9GaXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1JlY29yZGVk
U3RhdHVzZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OlJlY29yZGVkU3RhdHVzZXM6OlJlY29y
ZGVkU3RhdHVzZXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1c2VzOjpmb3JFYWNoVmVj
dG9yKToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTZXQuY3BwOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmVTZXQ6Om1hcmtJZkNoZWFwIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlU2V0Ojppc1N0aWxsQWxpdmUgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVy
ZVNldC5oOgorICAgICAgICAqIGJ5dGVjb2RlL1Rlcm1pbmF0ZWRDb2RlT3JpZ2luLmg6IEFkZGVk
LgorICAgICAgICAoSlNDOjpUZXJtaW5hdGVkQ29kZU9yaWdpbjo6VGVybWluYXRlZENvZGVPcmln
aW4pOgorICAgICAgICAoSlNDOjpUZXJtaW5hdGVkQ29kZU9yaWdpbkhhc2hUcmFuc2xhdG9yOjpo
YXNoKToKKyAgICAgICAgKEpTQzo6VGVybWluYXRlZENvZGVPcmlnaW5IYXNoVHJhbnNsYXRvcjo6
ZXF1YWwpOgorICAgICAgICAqIGJ5dGVjb2RlL1dhdGNocG9pbnQuY3BwOgorICAgICAgICAoV1RG
OjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBieXRlY29kZS9XYXRjaHBvaW50Lmg6CisgICAg
ICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBkZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpmaWx0ZXJJ
Q1N0YXR1cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NDYWxsKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTW9kdWxlTmFtZXNwYWNlTG9hZCk6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQpOgorICAgICAgICAoSlNDOjpE
Rkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5Ojp+SW5saW5lU3RhY2tFbnRy
eSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlKToKKyAgICAgICAg
KiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgor
ICAgICAgICAqIGRmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Y2xvYmJlcnNFeGl0U3RhdGUpOgorICAgICAgICAqIGRmZy9ERkdDb21tb25EYXRhLmg6Cisg
ICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZn
L0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5oOgorICAgICAgICAoSlNDOjpERkc6OlNldFBvaW50ZXJB
ZGFwdG9yOjpoYXNCZWVuSW52YWxpZGF0ZWQpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAg
ICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZHVtcCk6
CisgICAgICAgICogZGZnL0RGR01heUV4aXQuY3BwOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6
CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQ2FsbExpbmtTdGF0dXMpOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6OmNhbGxMaW5rU3RhdHVzKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
OjpoYXNHZXRCeUlkU3RhdHVzKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpnZXRCeUlkU3Rh
dHVzKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNQdXRCeUlkU3RhdHVzKToKKyAgICAg
ICAgKEpTQzo6REZHOjpOb2RlOjpwdXRCeUlkU3RhdHVzKToKKyAgICAgICAgKiBkZmcvREZHTm9k
ZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdEJhc2UuY3BwOgorICAgICAgICAoSlND
OjpERkc6Ok9TUkV4aXRCYXNlOjpjb25zaWRlckFkZGluZ0FzRnJlcXVlbnRFeGl0U2l0ZVNsb3cp
OgorICAgICAgICAqIGRmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcDoKKyAg
ICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6cmVhbGx5
QWRkKToKKyAgICAgICAgKEpTQzo6REZHOjpQbGFuOjpjaGVja0xpdmVuZXNzQW5kVmlzaXRDaGls
ZHJlbik6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6ZmluYWxpemVJbkdDKToKKyAgICAgICAg
KiBkZmcvREZHUGxhbi5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0cmVuZ3RoUmVk
dWN0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cmVuZ3RoUmVkdWN0aW9uUGhh
c2U6OmhhbmRsZU5vZGUpOgorICAgICAgICAqIGRmZy9ERkdXb3JrbGlzdC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6V29ya2xpc3Q6OnJlbW92ZURlYWRQbGFucyk6CisgICAgICAgICogZnRsL0ZU
TEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRM
TG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlQ3JlYXRlVGhpcyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVGaWx0ZXJJQ1N0YXR1cyk6CisgICAgICAgICogaml0L1BvbHltb3JwaGljQ2FsbFN0dWJS
b3V0aW5lLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6Omhh
c0VkZ2VzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6
OmVkZ2VzIGNvbnN0KToKKyAgICAgICAgKiBqaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUu
aDoKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuY3BwOgorICAg
ICAgICAoSlNDOjpQcm9maWxlcjo6Qnl0ZWNvZGVTZXF1ZW5jZTo6Qnl0ZWNvZGVTZXF1ZW5jZSk6
CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6
RnVuY3Rpb25SYXJlRGF0YTo6aW5pdGlhbGl6ZU9iamVjdEFsbG9jYXRpb25Qcm9maWxlKToKKyAg
ICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKwogMjAxOC0wNi0wMiAgQ2FpbyBMaW1hICA8dGlj
YWlvbGltYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0VTTmV4dF1bQmlnSW50XSBJbXBsZW1lbnQg
c3VwcG9ydCBmb3IgYWRkaXRpb24gb3BlcmF0aW9ucwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjMyNDQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00NDAsOSArNDQwLDExIEBAIHNldChK
YXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUEKICAgICBieXRlY29kZS9FeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlLmgKICAgICBieXRlY29kZS9FeGVjdXRpb25Db3VudGVyLmgKICAg
ICBieXRlY29kZS9FeGl0S2luZC5oCisgICAgYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuaAog
ICAgIGJ5dGVjb2RlL0V4aXRpbmdKSVRUeXBlLmgKICAgICBieXRlY29kZS9FeHByZXNzaW9uUmFu
Z2VJbmZvLmgKICAgICBieXRlY29kZS9IYW5kbGVySW5mby5oCisgICAgYnl0ZWNvZGUvSUNTdGF0
dXNNYXAuaAogICAgIGJ5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5oCiAgICAgYnl0ZWNvZGUvSW5z
dHJ1Y3Rpb24uaAogICAgIGJ5dGVjb2RlL0ludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmls
ZS5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyMzI0NDEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIx
MiwxMyArMjEyLDE3IEBAIGJ5dGVjb2RlL0RpcmVjdEV2YWxDb2RlQ2FjaGUuY3BwCiBieXRlY29k
ZS9FdmFsQ29kZUJsb2NrLmNwcAogYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5j
cHAKIGJ5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIuY3BwCitieXRlY29kZS9FeGl0RmxhZy5jcHAK
IGJ5dGVjb2RlL0V4aXRLaW5kLmNwcAorYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuY3BwCiBi
eXRlY29kZS9FeGl0aW5nSklUVHlwZS5jcHAKIGJ5dGVjb2RlL0Z1bGxDb2RlT3JpZ2luLmNwcAog
Ynl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suY3BwCiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNw
cAogYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCiBieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlLmNwcAorYnl0ZWNvZGUvSUNTdGF0dXNNYXAuY3BwCitieXRlY29kZS9JQ1N0YXR1c1V0
aWxzLmNwcAogYnl0ZWNvZGUvSW5CeUlkU3RhdHVzLmNwcAogYnl0ZWNvZGUvSW5CeUlkVmFyaWFu
dC5jcHAKIGJ5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHAKQEAgLTI0Nyw2ICsyNTEsNyBAQCBieXRl
Y29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcAogYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmNwcAog
Ynl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcAor
Ynl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKIGJ5dGVjb2RlL1JlZHVjZVdoaXRlc3BhY2Uu
Y3BwCiBieXRlY29kZS9TcGVjaWFsUG9pbnRlci5jcHAKIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBl
LmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIzMjQ0MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yOTcsNiArMjk3LDExIEBACiAJCTBGNDI2QTQ5
MTQ2MENCQjcwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBW
aXJ0dWFsUmVnaXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRjQyNkE0QjE0NjBDRDZFMDAxMzFGOEYgLyogRGF0YUZvcm1hdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0MjZBNEExNDYwQ0Q2
QjAwMTMxRjhGIC8qIERhdGFGb3JtYXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRjQzMTczODE0NkJBQzY5MDA3RTM4OTAgLyogTGlzdGFibGVI
YW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjQzMTczNjE0NkJBQzY1MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NEE3QjAyMEJGNjg2MjAw
MjJCMTcxIC8qIEV4aXRGbGFnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjQ0QTdBRTIwQkY2ODVGMDAyMkIxNzEgLyogRXhpdEZsYWcuaCAqLzsgfTsK
KwkJMEY0NEE3QjEyMEJGNjhDOTAwMjJCMTcxIC8qIEV4aXRpbmdJbmxpbmVLaW5kLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ0QTdBNzIwQkY2ODVE
MDAyMkIxNzEgLyogRXhpdGluZ0lubGluZUtpbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ0QTdCMjIwQkY2OENFMDAyMkIxNzEgLyogSUNT
dGF0dXNNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNDRBN0FGMjBCRjY4NUYwMDIyQjE3MSAvKiBJQ1N0YXR1c01hcC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDRBN0IzMjBCRjY4RDEwMDIy
QjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjQ0QTdBQTIwQkY2ODVFMDAyMkIxNzEgLyogUmVjb3JkZWRTdGF0
dXNlcy5oICovOyB9OworCQkwRjQ0QTdCNDIwQkY2OEQ5MDAyMkIxNzEgLyogVGVybWluYXRlZENv
ZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNDRBN0E4MjBCRjY4NUUwMDIyQjE3MSAvKiBUZXJtaW5hdGVkQ29kZU9yaWdpbi5oICovOyB9
OwogCQkwRjQ1NzAzOTFCRTQ0QzkxMDA2MkE2MjkgLyogQWlyRWxpbWluYXRlRGVhZENvZGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDU3MDM3MUJF
NDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5oICovOyB9OwogCQkwRjQ1NzAz
RDFCRTQ1RjBBMDA2MkE2MjkgLyogQWlyUmVwb3J0VXNlZFJlZ2lzdGVycy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NTcwM0IxQkU0NUYwQTAwNjJB
NjI5IC8qIEFpclJlcG9ydFVzZWRSZWdpc3RlcnMuaCAqLzsgfTsKIAkJMEY0NTcwNDExQkU1ODRD
QTAwNjJBNjI5IC8qIEIzVGltaW5nU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDU3MDNGMUJFNTg0Q0EwMDYyQTYyOSAvKiBCM1RpbWluZ1Nj
b3BlLmggKi87IH07CkBAIC0xNzAyLDggKzE3MDcsNiBAQAogCQlFMzI4REFFOTFEMzhEMDA1MDAx
QTI1MjkgLyogQnl0ZWNvZGVHcmFwaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTNEMjY0MjgxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR3JhcGgu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzI4
REFFQjFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVSZXdyaXRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0MkExRDM4QzA0MjAwMEJFMTc0
IC8qIEJ5dGVjb2RlUmV3cml0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFMzJBQjI0NDFEQ0Q3NUY0MDBENzUzM0EgLyogTWFjcm9Bc3NlbWJs
ZXJIZWxwZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzgwQTc2QjFEQ0Q3MTk1MDAwRjg5RTYgLyogTWFjcm9Bc3NlbWJsZXJIZWxwZXJzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJRTMzMDVGQjMy
MEIwRjc4ODAwQ0VCODJCIC8qIEluQnlJZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzMDVGQUYyMEIwRjc4NzAwQ0VCODJCIC8qIEluQnlJ
ZFN0YXR1cy5oICovOyB9OwotCQlFMzMwNUZCNTIwQjBGNzg4MDBDRUI4MkIgLyogSW5CeUlkVmFy
aWFudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMz
MDVGQjEyMEIwRjc4ODAwQ0VCODJCIC8qIEluQnlJZFZhcmlhbnQuaCAqLzsgfTsKIAkJRTMzNjM3
QTYxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzYzN0E0MUI2MzIyMDIwMEVFMDg0MCAvKiBS
ZWZsZWN0T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTMzQjNFMjYxQjdBQkQ3NTAwNDhEQjJFIC8qIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbk9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzM0IzRTI1MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25PYmplY3QubHV0LmggKi87IH07CiAJCUUzM0U4RDFEMUI5MDEzQzMwMDM0NkI1MiAvKiBKU05h
dGl2ZVN0ZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzNFOEQxQjFCOTAxM0MzMDAzNDZCNTIgLyogSlNOYXRpdmVTdGRGdW5jdGlvbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMjg5
LDYgKzIyOTIsMTYgQEAKIAkJMEY0MjZBNEExNDYwQ0Q2QjAwMTMxRjhGIC8qIERhdGFGb3JtYXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YUZvcm1hdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQyQjNDMDIwMUVCNTA5MDAzNTcwMzEgLyogQWxsb2Nh
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFsbG9jYXRvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5
MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TGlzdGFibGVIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDRBN0E3
MjBCRjY4NUQwMDIyQjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBFeGl0aW5nSW5saW5lS2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjQ0QTdBODIwQkY2ODVFMDAyMkIxNzEgLyogVGVybWluYXRlZENvZGVPcmln
aW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVybWluYXRlZENvZGVPcmln
aW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NEE3QTkyMEJGNjg1RTAwMjJC
MTcxIC8qIEV4aXRGbGFnLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEV4aXRGbGFnLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NEE3QUEyMEJG
Njg1RTAwMjJCMTcxIC8qIFJlY29yZGVkU3RhdHVzZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVjb3JkZWRTdGF0dXNlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjQ0QTdBQjIwQkY2ODVFMDAyMkIxNzEgLyogSUNTdGF0dXNNYXAuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSUNTdGF0dXNNYXAuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjQ0QTdBQzIwQkY2ODVGMDAyMkIxNzEgLyogRXhpdGluZ0lu
bGluZUtpbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXhpdGlu
Z0lubGluZUtpbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ0QTdBRDIw
QkY2ODVGMDAyMkIxNzEgLyogUmVjb3JkZWRTdGF0dXNlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZWNvcmRlZFN0YXR1c2VzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEY0NEE3QUUyMEJGNjg1RjAwMjJCMTcxIC8qIEV4aXRGbGFnLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4aXRGbGFnLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGNDRBN0FGMjBCRjY4NUYwMDIyQjE3MSAvKiBJQ1N0YXR1c01hcC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJQ1N0YXR1c01hcC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ0QTdCNTIwQzBCRTNGMDAyMkIxNzEgLyogSUNTdGF0
dXNVdGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJQ1N0YXR1
c1V0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NTcwMzYxQkU0NEM5
MTAwNjJBNjI5IC8qIEFpckVsaW1pbmF0ZURlYWRDb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IEFpckVsaW1pbmF0ZURlYWRDb2RlLmNwcDsgcGF0aCA9IGIzL2Fp
ci9BaXJFbGltaW5hdGVEZWFkQ29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGNDU3MDM3MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJFbGltaW5hdGVEZWFkQ29kZS5oOyBwYXRo
ID0gYjMvYWlyL0FpckVsaW1pbmF0ZURlYWRDb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGNDU3MDNBMUJFNDVGMEEwMDYyQTYyOSAvKiBBaXJSZXBvcnRVc2VkUmVnaXN0ZXJz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpclJlcG9ydFVzZWRS
ZWdpc3RlcnMuY3BwOyBwYXRoID0gYjMvYWlyL0FpclJlcG9ydFVzZWRSZWdpc3RlcnMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzY2NCw2ICs3Njc3LDEwIEBACiAJCQkJMEY2
MEZFOEUxRkZDMzZGRDAwMDMzMjBBIC8qIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCAqLywK
IAkJCQkwRjU2QTFENDE1MDAxQ0YyMDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5jcHAgKi8s
CiAJCQkJMEY1NkExRDExNTAwMEYzMTAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNvdW50ZXIuaCAqLywK
KwkJCQkwRjQ0QTdBOTIwQkY2ODVFMDAyMkIxNzEgLyogRXhpdEZsYWcuY3BwICovLAorCQkJCTBG
NDRBN0FFMjBCRjY4NUYwMDIyQjE3MSAvKiBFeGl0RmxhZy5oICovLAorCQkJCTBGNDRBN0FDMjBC
RjY4NUYwMDIyQjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5jcHAgKi8sCisJCQkJMEY0NEE3QTcy
MEJGNjg1RDAwMjJCMTcxIC8qIEV4aXRpbmdJbmxpbmVLaW5kLmggKi8sCiAJCQkJMEYwMzMyQkYx
OEFERkFFMTAwNUY5NzlBIC8qIEV4aXRpbmdKSVRUeXBlLmNwcCAqLywKIAkJCQkwRjNBQzc1MzE4
OEU1RUM4MDAzMjAyOUYgLyogRXhpdGluZ0pJVFR5cGUuaCAqLywKIAkJCQkwRkIxMDU4MjE2NzU0
ODBDMDBGOEFCNkUgLyogRXhpdEtpbmQuY3BwICovLApAQCAtNzY4MCw2ICs3Njk3LDkgQEAKIAkJ
CQkwRjAzMzJDMjE4QjAxNzYzMDA1Rjk3OUEgLyogR2V0QnlJZFZhcmlhbnQuaCAqLywKIAkJCQkx
NEFEOTEwODFEQ0E5Mjk0MDAxNEY5RkUgLyogR2xvYmFsQ29kZUJsb2NrLmggKi8sCiAJCQkJMEYw
QjgzQTgxNEJDRjU1RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi8sCisJCQkJMEY0NEE3QUIy
MEJGNjg1RTAwMjJCMTcxIC8qIElDU3RhdHVzTWFwLmNwcCAqLywKKwkJCQkwRjQ0QTdBRjIwQkY2
ODVGMDAyMkIxNzEgLyogSUNTdGF0dXNNYXAuaCAqLywKKwkJCQkwRjQ0QTdCNTIwQzBCRTNGMDAy
MkIxNzEgLyogSUNTdGF0dXNVdGlscy5jcHAgKi8sCiAJCQkJMEZCMzk5QkQyMEFGNkIzODAwMTdF
MjEzIC8qIElDU3RhdHVzVXRpbHMuaCAqLywKIAkJCQlFMzMwNUZCMjIwQjBGNzg4MDBDRUI4MkIg
LyogSW5CeUlkU3RhdHVzLmNwcCAqLywKIAkJCQlFMzMwNUZBRjIwQjBGNzg3MDBDRUI4MkIgLyog
SW5CeUlkU3RhdHVzLmggKi8sCkBAIC03NzQwLDYgKzc3NjAsOCBAQAogCQkJCTBGOTNCNEE3MThC
OTJDNEQwMDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5jcHAgKi8sCiAJCQkJMEY5M0I0QTgxOEI5
MkM0RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmggKi8sCiAJCQkJMEY5RkM4QzExNEUxQjVG
QjAwRDUyQUUwIC8qIFB1dEtpbmQuaCAqLywKKwkJCQkwRjQ0QTdBRDIwQkY2ODVGMDAyMkIxNzEg
LyogUmVjb3JkZWRTdGF0dXNlcy5jcHAgKi8sCisJCQkJMEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcx
IC8qIFJlY29yZGVkU3RhdHVzZXMuaCAqLywKIAkJCQkwRkY2MEFCRjE2NzQwRjgxMDAwMjk3Nzkg
LyogUmVkdWNlV2hpdGVzcGFjZS5jcHAgKi8sCiAJCQkJMEZGNjBBQzAxNjc0MEY4MTAwMDI5Nzc5
IC8qIFJlZHVjZVdoaXRlc3BhY2UuaCAqLywKIAkJCQkwRjU1NDFBRjE2MTNDMUZCMDBDRTNFMjUg
LyogU3BlY2lhbFBvaW50ZXIuY3BwICovLApAQCAtNzc1NCw2ICs3Nzc2LDcgQEAKIAkJCQlCQ0NG
MEQwNzBFRjBBQUI5MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1YkluZm8uaCAqLywKIAkJCQkwRjRB
MzhGNzFDOEUxM0RGMDAxOTAzMTggLyogU3VwZXJTYW1wbGVyLmNwcCAqLywKIAkJCQkwRjRBMzhG
ODFDOEUxM0RGMDAxOTAzMTggLyogU3VwZXJTYW1wbGVyLmggKi8sCisJCQkJMEY0NEE3QTgyMEJG
Njg1RTAwMjJCMTcxIC8qIFRlcm1pbmF0ZWRDb2RlT3JpZ2luLmggKi8sCiAJCQkJMEYyRDRERTUx
OTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgKi8sCiAJCQkJMEYyRDRERTYxOTgz
MkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5oICovLAogCQkJCTBGOTUyQUJBMUI0ODdBNzcw
MEMzNjdDNSAvKiBUcmFja2VkUmVmZXJlbmNlcy5jcHAgKi8sCkBAIC04NDEwLDYgKzg0MzMsNyBA
QAogCQkJCTUzRDQ0NERDMURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUuaCBp
biBIZWFkZXJzICovLAogCQkJCTUzNDFGQzcyMURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3Vu
ZHNDaGVja1ZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJDNjNCMjFFNjBBRTQ3MDBDMTM4
MzkgLyogQjNXaWR0aC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NEE3QjIyMEJGNjhDRTAwMjJC
MTcxIC8qIElDU3RhdHVzTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MjY3OEY4RjFBMDMxMDA5
MDA2QTMwNkQgLyogQmFzaWNCbG9ja0xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDdC
ODNBQzBFNkRCOEM5MDA0Nzc1QTQgLyogQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg2OTc2RTVGMUZBM0U4QkMwMEU3QzRFMSAvKiBCaWdJbnRDb25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8sCkBAIC04NjMwLDYgKzg2NTQsNyBAQAogCQkJCTg2RUM5REM2
MTMyOERGODIwMDJCMkFENyAvKiBERkdHZW5lcmF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODZFQzlEQzgxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjJGQ0NGQTE4QTYwMDcwMDAxQTI3RjggLyogREZHR3JhcGhTYWZlcG9pbnQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGNDRBN0IxMjBCRjY4QzkwMDIyQjE3MSAvKiBFeGl0aW5nSW5saW5l
S2luZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMTc2NjExOTZCOEY5RTAwOTEwNTJBIC8qIERG
R0hlYXBMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDODQxNjkxQkE4QzMyMTAwNjE4
MzdEIC8qIERGR0luZmVycmVkVHlwZUNoZWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxNEUy
MTE4MTI1NzBCMDA5QjZCNEQgLyogREZHSW5saW5lQ2FjaGVXcmFwcGVyLmggaW4gSGVhZGVycyAq
LywKQEAgLTg3ODAsNiArODgwNSw3IEBACiAJCQkJQTdBOEFGMzgxN0FEQjVGMzAwNUFCMTc0IC8q
IEZsb2F0MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzkxN0FEQjVGMzAwNUFC
MTc0IC8qIEZsb2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NDMxN0VBOUY1
OTAwQUJCMjE3IC8qIEZQUkluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDRBN0IzMjBCRjY4
RDEwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzRF
REJGNzFEQjVGRkM5MDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjU1MTNBNjFENUE2ODJDMDBDMzJCRDggLyogRnJlZUxpc3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGNjU4NUUxMUVFMDgwNUEwMDk1MTc2RCAvKiBGcmVlTGlzdElubGluZXMuaCBpbiBIZWFk
ZXJzICovLApAQCAtOTEyOSw2ICs5MTU1LDcgQEAKIAkJCQk3MDEzQ0E4QzFCNDkxQTk0MDBDQUU2
MTMgLyogSlNKb2IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE2MEUxNkY1Q0QwMEIzNDQ2
MCAvKiBKU0xleGljYWxFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjMw
RTE2RjVDRDAwQjM0NDYwIC8qIEpTTG9jay5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NEE3QjAy
MEJGNjg2MjAwMjJCMTcxIC8qIEV4aXRGbGFnLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjVENzA5
QzE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJBNEJCN0YzMThBNDExNzkwMDhBMEZDRCAvKiBKU01hbmFnZWRWYWx1ZUludGVybmFsLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNzAwODc0MjE3Q0JFOEVCMDBDM0U2NDMgLyogSlNNYXAuaCBpbiBI
ZWFkZXJzICovLApAQCAtOTQ0NSw2ICs5NDcyLDcgQEAKIAkJCQlBNzI5OURBMjE3RDEyODQ4MDA1
RjVGRjkgLyogU2V0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVFOTg0MTFBODg2
NUI3MDA3NTRFOTMgLyogU2V0dXBWYXJhcmdzRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCURD
MTdFODE4MUM5QzkxRDkwMDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjQ0QTdCNDIwQkY2OEQ5MDAyMkIxNzEgLyogVGVybWluYXRlZENvZGVPcmlnaW4uaCBp
biBIZWFkZXJzICovLAogCQkJCURDMTdFODE5MUM5QzkxREIwMDhBNkFCMyAvKiBTaGFkb3dDaGlj
a2VuSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzMDIyRDMxRTNENzNBNTAwQkFDNDkz
IC8qIFNpZ2lsbENyYXNoQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNEQ4Qzc4MUZD
QTNDRkEwMDFEMzJBQyAvKiBTaW1wbGVNYXJraW5nQ29uc3RyYWludC5oIGluIEhlYWRlcnMgKi8s
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCShyZXZp
c2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZv
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2NiwxMiArMjY2LDYgQEAgaW5saW5lIHVuc2lnbmVkIGdl
dEJ5VmFsSW5mb0J5dGVjb2RlSW5kZQogICAgIHJldHVybiBpbmZvLT5ieXRlY29kZUluZGV4Owog
fQogCi10eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdpbiwgQnlWYWxJbmZvKiwgQ29kZU9yaWdpbkFw
cHJveGltYXRlSGFzaD4gQnlWYWxJbmZvTWFwOwotCi0jZWxzZSAvLyBFTkFCTEUoSklUKQotCi10
eXBlZGVmIEhhc2hNYXA8aW50LCB2b2lkKj4gQnlWYWxJbmZvTWFwOwotCiAjZW5kaWYgLy8gRU5B
QkxFKEpJVCkKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAJKHJldmlzaW9uIDIzMjQ0MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IFl1
c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTct
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTQyNyw3ICs0MjcsNyBAQCBzdGF0aWMgdm9pZCBkdW1wQ2hhaW4oUHJp
bnRTdHJlYW0mIG91dCwgCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgotdm9pZCBCeXRlY29k
ZUR1bXBlcjxCbG9jaz46OnByaW50R2V0QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQs
IGludCBsb2NhdGlvbiwgY29uc3QgU3R1YkluZm9NYXAmIG1hcCkKK3ZvaWQgQnl0ZWNvZGVEdW1w
ZXI8QmxvY2s+OjpwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQg
bG9jYXRpb24sIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgY29uc3QgYXV0
byogaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNCZWdpbigpICsgbG9jYXRpb247CiAKQEAgLTQ0
Nyw3ICs0NDcsNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRHZXRCeUlkCiAg
ICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJQ
dHIgPSBtYXAuZ2V0KENvZGVPcmlnaW4obG9jYXRpb24pKSkgeworICAgIGlmIChTdHJ1Y3R1cmVT
dHViSW5mbyogc3R1YlB0ciA9IHN0YXR1c01hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpLnN0
dWJJbmZvKSB7CiAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9ICpzdHViUHRy
OwogICAgICAgICBpZiAoc3R1YkluZm8ucmVzZXRCeUdDKQogICAgICAgICAgICAgb3V0LnByaW50
KCIgKFJlc2V0IEJ5IEdDKSIpOwpAQCAtNDg4LDEyICs0ODgsMTIgQEAgdm9pZCBCeXRlY29kZUR1
bXBlcjxCbG9jaz46OnByaW50R2V0QnlJZAogICAgICAgICBvdXQucHJpbnRmKCIpIik7CiAgICAg
fQogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0obWFwKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdHVz
TWFwKTsKICNlbmRpZgogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBp
bnQgbG9jYXRpb24sIGNvbnN0IFN0dWJJbmZvTWFwJiBtYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVy
PEJsb2NrPjo6cHJpbnRQdXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxv
Y2F0aW9uLCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQogewogICAgIGNvbnN0IGF1dG8q
IGluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zQmVnaW4oKSArIGxvY2F0aW9uOwogCkBAIC01MjEs
NyArNTIxLDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50UHV0QnlJZAogICAg
IH0KIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViUHRy
ID0gbWFwLmdldChDb2RlT3JpZ2luKGxvY2F0aW9uKSkpIHsKKyAgICBpZiAoU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJQdHIgPSBzdGF0dXNNYXAuZ2V0KENvZGVPcmlnaW4obG9jYXRpb24pKS5zdHVi
SW5mbykgewogICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSAqc3R1YlB0cjsK
ICAgICAgICAgaWYgKHN0dWJJbmZvLnJlc2V0QnlHQykKICAgICAgICAgICAgIG91dC5wcmludCgi
IChSZXNldCBCeSBHQykiKTsKQEAgLTU0NywxMiArNTQ3LDEyIEBAIHZvaWQgQnl0ZWNvZGVEdW1w
ZXI8QmxvY2s+OjpwcmludFB1dEJ5SWQKICAgICAgICAgb3V0LnByaW50ZigiKSIpOwogICAgIH0K
ICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKG1hcCk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXR1c01h
cCk7CiAjZW5kaWYKIH0KIAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVjb2RlRHVt
cGVyPEJsb2NrPjo6cHJpbnRJbkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQg
bG9jYXRpb24sIGNvbnN0IFN0dWJJbmZvTWFwJiBtYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJs
b2NrPjo6cHJpbnRJbkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRp
b24sIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgY29uc3QgYXV0byogaW5z
dHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNCZWdpbigpICsgbG9jYXRpb247CiAKQEAgLTU2MSw3ICs1
NjEsNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRJbkJ5SWRDCiAgICAgVU5V
U0VEX1BBUkFNKGlkZW50KTsgLy8gdGVsbCB0aGUgY29tcGlsZXIgdG8gc2h1dCB1cCBpbiBjZXJ0
YWluIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb25zLgogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAo
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJQdHIgPSBtYXAuZ2V0KENvZGVPcmlnaW4obG9jYXRpb24p
KSkgeworICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YlB0ciA9IHN0YXR1c01hcC5nZXQo
Q29kZU9yaWdpbihsb2NhdGlvbikpLnN0dWJJbmZvKSB7CiAgICAgICAgIFN0cnVjdHVyZVN0dWJJ
bmZvJiBzdHViSW5mbyA9ICpzdHViUHRyOwogICAgICAgICBpZiAoc3R1YkluZm8ucmVzZXRCeUdD
KQogICAgICAgICAgICAgb3V0LnByaW50KCIgKFJlc2V0IEJ5IEdDKSIpOwpAQCAtNjAwLDI2ICs2
MDAsMjYgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50SW5CeUlkQwogICAgIH0K
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG91dCk7Ci0gICAgVU5VU0VEX1BBUkFNKG1hcCk7Cisg
ICAgVU5VU0VEX1BBUkFNKHN0YXR1c01hcCk7CiAjZW5kaWYKIH0KIAogI2lmIEVOQUJMRShKSVQp
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpk
dW1wQ2FsbExpbmtTdGF0dXMoUHJpbnRTdHJlYW0mLCB1bnNpZ25lZCwgY29uc3QgQ2FsbExpbmtJ
bmZvTWFwJikKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQ2FsbExpbmtTdGF0dXMo
UHJpbnRTdHJlYW0mLCB1bnNpZ25lZCwgY29uc3QgSUNTdGF0dXNNYXAmKQogewogfQogCiB0ZW1w
bGF0ZTw+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBDYWxsTGlua1N0YXR1
cyhQcmludFN0cmVhbSYgb3V0LCB1bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgQ2FsbExpbmtJbmZv
TWFwJiBtYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBDYWxsTGlua1N0
YXR1cyhQcmludFN0cmVhbSYgb3V0LCB1bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNN
YXAmIHN0YXR1c01hcCkKIHsKICAgICBpZiAoYmxvY2soKS0+aml0VHlwZSgpICE9IEpJVENvZGU6
OkZUTEpJVCkKLSAgICAgICAgb3V0LnByaW50KCIgc3RhdHVzKCIsIENhbGxMaW5rU3RhdHVzOjpj
b21wdXRlRm9yKGJsb2NrKCksIGxvY2F0aW9uLCBtYXApLCAiKSIpOworICAgICAgICBvdXQucHJp
bnQoIiBzdGF0dXMoIiwgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoYmxvY2soKSwgbG9jYXRp
b24sIHN0YXR1c01hcCksICIpIik7CiB9CiAjZW5kaWYKIAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+
Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91
dCwgaW50IGxvY2F0aW9uLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwg
Y29uc3QgY2hhciogb3AsIENhY2hlRHVtcE1vZGUgY2FjaGVEdW1wTW9kZSwgYm9vbCYgaGFzUHJp
bnRlZFByb2ZpbGluZywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBtYXApCit2b2lkIEJ5dGVjb2Rl
RHVtcGVyPEJsb2NrPjo6cHJpbnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9u
LCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgY2hhciogb3As
IENhY2hlRHVtcE1vZGUgY2FjaGVEdW1wTW9kZSwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZywg
Y29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBpbnQgZHN0ID0gKCsraXQpLT51
Lm9wZXJhbmQ7CiAgICAgaW50IGZ1bmMgPSAoKytpdCktPnUub3BlcmFuZDsKQEAgLTYzOCw3ICs2
MzgsNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRDYWxsT3AoCiAgICAgICAg
ICAgICAgICAgb3V0LnByaW50ZigiIGxsaW50KCVwKSIsIG9iamVjdCk7CiAgICAgICAgIH0KICNp
ZiBFTkFCTEUoSklUKQotICAgICAgICBpZiAoQ2FsbExpbmtJbmZvKiBpbmZvID0gbWFwLmdldChD
b2RlT3JpZ2luKGxvY2F0aW9uKSkpIHsKKyAgICAgICAgaWYgKENhbGxMaW5rSW5mbyogaW5mbyA9
IHN0YXR1c01hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpLmNhbGxMaW5rSW5mbykgewogICAg
ICAgICAgICAgaWYgKGluZm8tPmhhdmVMYXN0U2VlbkNhbGxlZSgpKSB7CiAgICAgICAgICAgICAg
ICAgSlNPYmplY3QqIG9iamVjdCA9IGluZm8tPmxhc3RTZWVuQ2FsbGVlKCk7CiAgICAgICAgICAg
ICAgICAgaWYgKGF1dG8qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4oKnZt
KCksIG9iamVjdCkpCkBAIC02NDgsOSArNjQ4LDkgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9j
az46OnByaW50Q2FsbE9wKAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgZHVt
cENhbGxMaW5rU3RhdHVzKG91dCwgbG9jYXRpb24sIG1hcCk7CisgICAgICAgIGR1bXBDYWxsTGlu
a1N0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdGF0dXNNYXApOwogI2Vsc2UKLSAgICAgICAgVU5VU0VE
X1BBUkFNKG1hcCk7CisgICAgICAgIFVOVVNFRF9QQVJBTShzdGF0dXNNYXApOwogI2VuZGlmCiAg
ICAgfQogICAgICsraXQ7CkBAIC02NzgsNyArNjc4LDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxC
bG9jaz46OnByaW50TG9jYXRpbwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0
ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3Qg
dHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6
Okluc3RydWN0aW9uKiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiBzdHViSW5mb3MsIGNvbnN0IENh
bGxMaW5rSW5mb01hcCYgY2FsbExpbmtJbmZvcykKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+
OjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Oklu
c3RydWN0aW9uKiBiZWdpbiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiYgaXQs
IGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgaW50IGxvY2F0aW9uID0gaXQg
LSBiZWdpbjsKICAgICBib29sIGhhc1ByaW50ZWRQcm9maWxpbmcgPSBmYWxzZTsKQEAgLTEwNzEs
NyArMTA3MSw3IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAg
ICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmludExvY2F0aW9u
QW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJpbl9ieV9pZCIpOwogICAgICAgICBvdXQucHJpbnRm
KCIlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSku
ZGF0YSgpLCBpZE5hbWUoaWQwLCBpZGVudGlmaWVyKGlkMCkpLmRhdGEoKSk7Ci0gICAgICAgIHBy
aW50SW5CeUlkQ2FjaGVTdGF0dXMob3V0LCBsb2NhdGlvbiwgc3R1YkluZm9zKTsKKyAgICAgICAg
cHJpbnRJbkJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdGF0dXNNYXApOwogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgY2FzZSBvcF9pbl9ieV92YWw6IHsKQEAgLTEwOTUsNyArMTA5
NSw3IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAg
cHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiZ2V0X2J5X2lkX2RpcmVjdCIp
OwogICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBpZGVudGlmaWVyKGlkMCkp
LmRhdGEoKSk7CiAgICAgICAgIGl0ICs9IDI7IC8vIEluY3JlbWVudCB1cCB0byB0aGUgdmFsdWUg
cHJvZmlsZXIuCi0gICAgICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24s
IHN0dWJJbmZvcyk7CisgICAgICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRp
b24sIHN0YXR1c01hcCk7CiAgICAgICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQ
cmludGVkUHJvZmlsaW5nKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTEwNCw3ICsxMTA0
LDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZQogICAgIGNhc2Ug
b3BfZ2V0X2J5X2lkX3Vuc2V0OgogICAgIGNhc2Ugb3BfZ2V0X2FycmF5X2xlbmd0aDogewogICAg
ICAgICBwcmludEdldEJ5SWRPcChvdXQsIGxvY2F0aW9uLCBpdCk7Ci0gICAgICAgIHByaW50R2V0
QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0dWJJbmZvcyk7CisgICAgICAgIHByaW50
R2V0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0YXR1c01hcCk7CiAgICAgICAgIGR1
bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQpAQCAtMTEzMCw3ICsxMTMwLDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxC
bG9jaz46OmR1bXBCeXRlY29kZQogICAgIH0KICAgICBjYXNlIG9wX3B1dF9ieV9pZDogewogICAg
ICAgICBwcmludFB1dEJ5SWRPcChvdXQsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZCIpOwotICAg
ICAgICBwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdHViSW5mb3MpOwor
ICAgICAgICBwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdGF0dXNNYXAp
OwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBvcF9wdXRfYnlfaWRfd2l0aF90aGlz
OiB7CkBAIC0xNDc2LDE1ICsxNDc2LDE1IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpk
dW1wQnl0ZWNvZGUKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3BfY2FsbDogewot
ICAgICAgICBwcmludENhbGxPcChvdXQsIGxvY2F0aW9uLCBpdCwgImNhbGwiLCBEdW1wQ2FjaGVz
LCBoYXNQcmludGVkUHJvZmlsaW5nLCBjYWxsTGlua0luZm9zKTsKKyAgICAgICAgcHJpbnRDYWxs
T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJjYWxsIiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2Zp
bGluZywgc3RhdHVzTWFwKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3BfdGFp
bF9jYWxsOiB7Ci0gICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAidGFpbF9j
YWxsIiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgY2FsbExpbmtJbmZvcyk7Cisg
ICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAidGFpbF9jYWxsIiwgRHVtcENh
Y2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgc3RhdHVzTWFwKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIGNhc2Ugb3BfY2FsbF9ldmFsOiB7Ci0gICAgICAgIHByaW50Q2FsbE9wKG91dCwg
bG9jYXRpb24sIGl0LCAiY2FsbF9ldmFsIiwgRG9udER1bXBDYWNoZXMsIGhhc1ByaW50ZWRQcm9m
aWxpbmcsIGNhbGxMaW5rSW5mb3MpOworICAgICAgICBwcmludENhbGxPcChvdXQsIGxvY2F0aW9u
LCBpdCwgImNhbGxfZXZhbCIsIERvbnREdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmlsaW5nLCBz
dGF0dXNNYXApOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTE1MjMsNyArMTUyMyw3IEBA
IHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgIGNhc2Ugb3BfY29uc3RydWN0OiB7Ci0gICAgICAgIHByaW50Q2FsbE9wKG91
dCwgbG9jYXRpb24sIGl0LCAiY29uc3RydWN0IiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2Zp
bGluZywgY2FsbExpbmtJbmZvcyk7CisgICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24s
IGl0LCAiY29uc3RydWN0IiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgc3RhdHVz
TWFwKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3Bfc3RyY2F0OiB7CkBAIC0x
Nzc4LDEwICsxNzc4LDEwIEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNv
ZGUKIH0KIAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2Nr
Pjo6ZHVtcEJ5dGVjb2RlKEJsb2NrKiBibG9jaywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlw
ZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Oklu
c3RydWN0aW9uKiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiBzdHViSW5mb3MsIGNvbnN0IENhbGxM
aW5rSW5mb01hcCYgY2FsbExpbmtJbmZvcykKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpk
dW1wQnl0ZWNvZGUoQmxvY2sqIGJsb2NrLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCB0eXBlbmFt
ZSBCbG9jazo6SW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1
Y3Rpb24qJiBpdCwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBCeXRlY29k
ZUR1bXBlciBkdW1wZXIoYmxvY2ssIGJlZ2luKTsKLSAgICBkdW1wZXIuZHVtcEJ5dGVjb2RlKG91
dCwgYmVnaW4sIGl0LCBzdHViSW5mb3MsIGNhbGxMaW5rSW5mb3MpOworICAgIGR1bXBlci5kdW1w
Qnl0ZWNvZGUob3V0LCBiZWdpbiwgaXQsIHN0YXR1c01hcCk7CiB9CiAKIHRlbXBsYXRlPGNsYXNz
IEJsb2NrPgpAQCAtMTg5MCw3ICsxODkwLDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46
OmR1bXBTdHJpbmdTdwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpkdW1wQmxvY2soQmxvY2sqIGJsb2NrLCBjb25zdCB0eXBlbmFtZSBCbG9j
azo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucywgUHJpbnRTdHJlYW0mIG91dCwg
Y29uc3QgU3R1YkluZm9NYXAmIHN0dWJJbmZvcywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBjYWxs
TGlua0luZm9zKQordm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCbG9jayhCbG9jayog
YmxvY2ssIGNvbnN0IHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1
Y3Rpb25zLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQog
ewogICAgIHNpemVfdCBpbnN0cnVjdGlvbkNvdW50ID0gMDsKIApAQCAtMTkxMCw3ICsxOTEwLDcg
QEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCbG9jayhCbAogICAgIGNvbnN0IGF1
dG8qIGVuZCA9IGluc3RydWN0aW9ucy5lbmQoKTsKICAgICBCeXRlY29kZUR1bXBlcjxCbG9jaz4g
ZHVtcGVyKGJsb2NrLCBiZWdpbik7CiAgICAgZm9yIChjb25zdCBhdXRvKiBpdCA9IGJlZ2luOyBp
dCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0LCBiZWdpbiwg
aXQsIHN0dWJJbmZvcywgY2FsbExpbmtJbmZvcyk7CisgICAgICAgIGR1bXBlci5kdW1wQnl0ZWNv
ZGUob3V0LCBiZWdpbiwgaXQsIHN0YXR1c01hcCk7CiAKICAgICBkdW1wZXIuZHVtcElkZW50aWZp
ZXJzKG91dCk7CiAgICAgZHVtcGVyLmR1bXBDb25zdGFudHMob3V0KTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5oCShyZXZpc2lvbiAy
MzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjYsNiArMjcsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJDYWxsTGlua0luZm8uaCIKKyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgogI2luY2x1ZGUgIlN0
cnVjdHVyZVN0dWJJbmZvLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzcsOCArMzksOCBAQCBj
bGFzcyBCeXRlY29kZUR1bXBlciB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBCbG9j
azo6SW5zdHJ1Y3Rpb24gSW5zdHJ1Y3Rpb247CiAKLSAgICBzdGF0aWMgdm9pZCBkdW1wQnl0ZWNv
ZGUoQmxvY2sqLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNv
bnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiA9IFN0dWJJbmZvTWFwKCks
IGNvbnN0IENhbGxMaW5rSW5mb01hcCYgPSBDYWxsTGlua0luZm9NYXAoKSk7Ci0gICAgc3RhdGlj
IHZvaWQgZHVtcEJsb2NrKEJsb2NrKiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5z
dHJ1Y3Rpb25zJiwgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgU3R1YkluZm9NYXAmID0gU3R1Yklu
Zm9NYXAoKSwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiA9IENhbGxMaW5rSW5mb01hcCgpKTsKKyAg
ICBzdGF0aWMgdm9pZCBkdW1wQnl0ZWNvZGUoQmxvY2sqLCBQcmludFN0cmVhbSYgb3V0LCBjb25z
dCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3Rh
dHVzTWFwJiBzdGF0dXNNYXAgPSBJQ1N0YXR1c01hcCgpKTsKKyAgICBzdGF0aWMgdm9pZCBkdW1w
QmxvY2soQmxvY2sqLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMm
LCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwID0gSUNTdGF0
dXNNYXAoKSk7CiAKIHByaXZhdGU6CiAgICAgQnl0ZWNvZGVEdW1wZXIoQmxvY2sqIGJsb2NrLCBj
b25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4pCkBAIC02OSwxNCArNzEsMTQgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHByaW50Q29uZGl0aW9uYWxKdW1wKFByaW50U3RyZWFtJiBvdXQs
IGNvbnN0IEluc3RydWN0aW9uKiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgaW50IGxvY2F0aW9u
LCBjb25zdCBjaGFyKiBvcCk7CiAgICAgdm9pZCBwcmludENvbXBhcmVKdW1wKFByaW50U3RyZWFt
JiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgaW50IGxv
Y2F0aW9uLCBjb25zdCBjaGFyKiBvcCk7CiAgICAgdm9pZCBwcmludEdldEJ5SWRPcChQcmludFN0
cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQpOwotICAgIHZv
aWQgcHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9u
LCBjb25zdCBTdHViSW5mb01hcCYpOwotICAgIHZvaWQgcHJpbnRQdXRCeUlkQ2FjaGVTdGF0dXMo
UHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBTdHViSW5mb01hcCYpOwotICAg
IHZvaWQgcHJpbnRJbkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRp
b24sIGNvbnN0IFN0dWJJbmZvTWFwJik7CisgICAgdm9pZCBwcmludEdldEJ5SWRDYWNoZVN0YXR1
cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IElDU3RhdHVzTWFwJik7Cisg
ICAgdm9pZCBwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9j
YXRpb24sIGNvbnN0IElDU3RhdHVzTWFwJik7CisgICAgdm9pZCBwcmludEluQnlJZENhY2hlU3Rh
dHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmKTsK
ICAgICBlbnVtIENhY2hlRHVtcE1vZGUgeyBEdW1wQ2FjaGVzLCBEb250RHVtcENhY2hlcyB9Owot
ICAgIHZvaWQgcHJpbnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25z
dCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCwgQ2FjaGVEdW1wTW9kZSwgYm9vbCYg
aGFzUHJpbnRlZFByb2ZpbGluZywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJik7CisgICAgdm9pZCBw
cmludENhbGxPcChQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0
aW9uKiYgaXQsIGNvbnN0IGNoYXIqIG9wLCBDYWNoZUR1bXBNb2RlLCBib29sJiBoYXNQcmludGVk
UHJvZmlsaW5nLCBjb25zdCBJQ1N0YXR1c01hcCYpOwogICAgIHZvaWQgcHJpbnRQdXRCeUlkT3Ao
UHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBj
b25zdCBjaGFyKiBvcCk7CiAgICAgdm9pZCBwcmludExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJh
bmQoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0
LCBjb25zdCBjaGFyKiBvcCwgaW50IG9wZXJhbmQpOwotICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFBy
aW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rp
b24qJiBpdCwgY29uc3QgU3R1YkluZm9NYXAmLCBjb25zdCBDYWxsTGlua0luZm9NYXAmKTsKKyAg
ICB2b2lkIGR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiog
YmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJik7CiAKICAg
ICB2b2lkIGR1bXBWYWx1ZVByb2ZpbGluZyhQcmludFN0cmVhbSYsIGNvbnN0IEluc3RydWN0aW9u
KiYsIGJvb2wmIGhhc1ByaW50ZWRQcm9maWxpbmcpOwogICAgIHZvaWQgZHVtcEFycmF5UHJvZmls
aW5nKFByaW50U3RyZWFtJiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiwgYm9vbCYgaGFzUHJpbnRlZFBy
b2ZpbGluZyk7CkBAIC04NSw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCogYWN0dWFsUG9p
bnRlckZvcihTcGVjaWFsOjpQb2ludGVyKSBjb25zdDsKIAogI2lmIEVOQUJMRShKSVQpCi0gICAg
dm9pZCBkdW1wQ2FsbExpbmtTdGF0dXMoUHJpbnRTdHJlYW0mLCB1bnNpZ25lZCBsb2NhdGlvbiwg
Y29uc3QgQ2FsbExpbmtJbmZvTWFwJik7CisgICAgdm9pZCBkdW1wQ2FsbExpbmtTdGF0dXMoUHJp
bnRTdHJlYW0mLCB1bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmKTsKICNlbmRp
ZgogCiAgICAgQmxvY2sqIG1fYmxvY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1
MiwxMiArMzUyLDYgQEAgaW5saW5lIENvZGVPcmlnaW4gZ2V0Q2FsbExpbmtJbmZvQ29kZU9yaQog
ICAgIHJldHVybiBjYWxsTGlua0luZm8uY29kZU9yaWdpbigpOwogfQogCi10eXBlZGVmIEhhc2hN
YXA8Q29kZU9yaWdpbiwgQ2FsbExpbmtJbmZvKiwgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFzaD4g
Q2FsbExpbmtJbmZvTWFwOwotCi0jZWxzZSAvLyBFTkFCTEUoSklUKQotCi10eXBlZGVmIEhhc2hN
YXA8aW50LCB2b2lkKj4gQ2FsbExpbmtJbmZvTWFwOwotCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbExpbmtTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc3LDcgKzc3LDggQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1
dGVGcgogfQogCiBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKLSAg
ICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIGNvbnN0
IENhbGxMaW5rSW5mb01hcCYgbWFwKQorICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5z
aWduZWQgYnl0ZWNvZGVJbmRleCwgY29uc3QgSUNTdGF0dXNNYXAmIG1hcCwKKyAgICBFeGl0U2l0
ZURhdGEgZXhpdFNpdGVEYXRhKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIocHJv
ZmlsZWRCbG9jay0+bV9sb2NrKTsKICAgICAKQEAgLTg1LDkgKzg2LDcgQEAgQ2FsbExpbmtTdGF0
dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGbwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUlu
ZGV4KTsKICAgICBVTlVTRURfUEFSQU0obWFwKTsKICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBF
eGl0U2l0ZURhdGEgZXhpdFNpdGVEYXRhID0gY29tcHV0ZUV4aXRTaXRlRGF0YShwcm9maWxlZEJs
b2NrLCBieXRlY29kZUluZGV4KTsKLSAgICAKLSAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5m
byA9IG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4KSk7CisgICAgQ2FsbExpbmtJbmZv
KiBjYWxsTGlua0luZm8gPSBtYXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkpLmNhbGxM
aW5rSW5mbzsKICAgICBpZiAoIWNhbGxMaW5rSW5mbykgewogICAgICAgICBpZiAoZXhpdFNpdGVE
YXRhLnRha2VzU2xvd1BhdGgpCiAgICAgICAgICAgICByZXR1cm4gdGFrZXNTbG93UGF0aCgpOwpA
QCAtMTAwLDYgKzk5LDEyIEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRl
Rm8KICNlbmRpZgogfQogCitDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZv
cigKKyAgICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgs
IGNvbnN0IElDU3RhdHVzTWFwJiBtYXApCit7CisgICAgcmV0dXJuIGNvbXB1dGVGb3IocHJvZmls
ZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgbWFwLCBjb21wdXRlRXhpdFNpdGVEYXRhKHByb2ZpbGVk
QmxvY2ssIGJ5dGVjb2RlSW5kZXgpKTsKK30KKwogQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0
YSBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YShDb2RlQmxvY2sqIHByb2ZpbGVk
QmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgRXhpdFNpdGVEYXRhIGV4aXRT
aXRlRGF0YTsKQEAgLTEwNywxMSArMTEyLDIxIEBAIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURh
dGEgQ2FsbExpbmtTdGEKICAgICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gcHJvZmls
ZWRCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKTsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9j
a2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKIAotICAgIGV4aXRTaXRlRGF0YS50YWtlc1Nsb3dQYXRo
ID0KLSAgICAgICAgY29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRF
eGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRUeXBlKSkKLSAgICAgICAgfHwgY29kZUJsb2NrLT5o
YXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBC
YWRFeGVjdXRhYmxlKSk7Ci0gICAgZXhpdFNpdGVEYXRhLmJhZEZ1bmN0aW9uID0KLSAgICAgICAg
Y29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRl
Y29kZUluZGV4LCBCYWRDZWxsKSk7CisgICAgYXV0byB0YWtlc1Nsb3dQYXRoID0gWyZdIChFeGl0
aW5nSW5saW5lS2luZCBpbmxpbmVLaW5kKSAtPiBFeGl0RmxhZyB7CisgICAgICAgIHJldHVybiBF
eGl0RmxhZygKKyAgICAgICAgICAgIGNvZGVCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6
OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkVHlwZSwgRXhpdEZyb21Bbnl0aGlu
ZywgaW5saW5lS2luZCkpCisgICAgICAgICAgICB8fCBjb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxv
Y2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZEV4ZWN1dGFibGUs
IEV4aXRGcm9tQW55dGhpbmcsIGlubGluZUtpbmQpKSwKKyAgICAgICAgICAgIGlubGluZUtpbmQp
OworICAgIH07CisgICAgCisgICAgYXV0byBiYWRGdW5jdGlvbiA9IFsmXSAoRXhpdGluZ0lubGlu
ZUtpbmQgaW5saW5lS2luZCkgLT4gRXhpdEZsYWcgeworICAgICAgICByZXR1cm4gRXhpdEZsYWco
Y29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRl
Y29kZUluZGV4LCBCYWRDZWxsLCBFeGl0RnJvbUFueXRoaW5nLCBpbmxpbmVLaW5kKSksIGlubGlu
ZUtpbmQpOworICAgIH07CisgICAgCisgICAgZXhpdFNpdGVEYXRhLnRha2VzU2xvd1BhdGggfD0g
dGFrZXNTbG93UGF0aChFeGl0RnJvbU5vdElubGluZWQpOworICAgIGV4aXRTaXRlRGF0YS50YWtl
c1Nsb3dQYXRoIHw9IHRha2VzU2xvd1BhdGgoRXhpdEZyb21JbmxpbmVkKTsKKyAgICBleGl0U2l0
ZURhdGEuYmFkRnVuY3Rpb24gfD0gYmFkRnVuY3Rpb24oRXhpdEZyb21Ob3RJbmxpbmVkKTsKKyAg
ICBleGl0U2l0ZURhdGEuYmFkRnVuY3Rpb24gfD0gYmFkRnVuY3Rpb24oRXhpdEZyb21JbmxpbmVk
KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9Q
QVJBTShieXRlY29kZUluZGV4KTsKQEAgLTEzNSw2ICsxNTAsMTAgQEAgQ2FsbExpbmtTdGF0dXMg
Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGbwogQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6
OmNvbXB1dGVGcm9tQ2FsbExpbmtJbmZvKAogICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYs
IENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQogeworICAgIC8vIFdlIGNhbm5vdCB0ZWxsIHlv
dSBhbnl0aGluZyBhYm91dCBkaXJlY3QgY2FsbHMuCisgICAgaWYgKGNhbGxMaW5rSW5mby5pc0Rp
cmVjdCgpKQorICAgICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoKTsKKyAgICAKICAgICBpZiAo
Y2FsbExpbmtJbmZvLmNsZWFyZWRCeUdDKCkpCiAgICAgICAgIHJldHVybiB0YWtlc1Nsb3dQYXRo
KCk7CiAgICAgCkBAIC0xNTgsNiArMTc3LDE5IEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3Rh
dHVzOjpjb21wdXRlRnIKICAgICBpZiAoUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUqIHN0dWIg
PSBjYWxsTGlua0luZm8uc3R1YigpKSB7CiAgICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOwog
ICAgICAgICAKKyAgICAgICAgaWYgKCFzdHViLT5oYXNFZGdlcygpKSB7CisgICAgICAgICAgICAv
LyBUaGlzIG1lYW5zIHdlIGhhdmUgYW4gRlRMIHByb2ZpbGUsIHdoaWNoIGhhcyBpbmNvbXBsZXRl
IGluZm9ybWF0aW9uLgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIEl0J3Mgbm90IGNs
ZWFyIGlmIHRha2VzU2xvd1BhdGgoKSBvciBDYWxsTGlua1N0YXR1cygpIGFyZSBhcHByb3ByaWF0
ZSBoZXJlLCBidXQgSQorICAgICAgICAgICAgLy8gdGhpbmsgdGhhdCB0YWtlc1Nsb3dQYXRoKCkg
aXMgYSBuYXJyb3cgd2lubmVyLgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIEVpdGhl
ciB3YXksIHRoaXMgaXMgdGVsbGluZyB1cyB0aGF0IHRoZSBGVEwgaGFkIGJlZW4gbGVkIHRvIGJl
bGlldmUgdGhhdCBpdCdzCisgICAgICAgICAgICAvLyBwcm9maXRhYmxlIG5vdCB0byBpbmxpbmUg
YW55dGhpbmcuCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gCisgICAgICAgICAgICBy
ZXR1cm4gdGFrZXNTbG93UGF0aCgpOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBDYWxs
RWRnZUxpc3QgZWRnZXMgPSBzdHViLT5lZGdlcygpOwogICAgICAgICAKICAgICAgICAgLy8gTm93
IHRoYXQgd2UndmUgbG9hZGVkIHRoZSBlZGdlcyBsaXN0LCB0aGVyZSBhcmUgbm8gZnVydGhlciBj
b25jdXJyZW5jeSBjb25jZXJucy4gV2Ugd2lsbApAQCAtMjI3LDgzICsyNTksMTIyIEBAIENhbGxM
aW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnIKIAogQ2FsbExpbmtTdGF0dXMgQ2Fs
bExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBs
b2NrZXIsIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0lu
Zm8sCi0gICAgRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YSkKKyAgICBFeGl0U2l0ZURhdGEgZXhp
dFNpdGVEYXRhLCBFeGl0aW5nSW5saW5lS2luZCBpbmxpbmVLaW5kKQogewogICAgIENhbGxMaW5r
U3RhdHVzIHJlc3VsdCA9IGNvbXB1dGVGb3IobG9ja2VyLCBwcm9maWxlZEJsb2NrLCBjYWxsTGlu
a0luZm8pOwotICAgIGlmIChleGl0U2l0ZURhdGEuYmFkRnVuY3Rpb24pIHsKLSAgICAgICAgaWYg
KHJlc3VsdC5pc0Jhc2VkT25TdHViKCkpIHsKKyAgICByZXN1bHQuYWNjb3VudEZvckV4aXRzKGV4
aXRTaXRlRGF0YSwgaW5saW5lS2luZCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZgor
Cit2b2lkIENhbGxMaW5rU3RhdHVzOjphY2NvdW50Rm9yRXhpdHMoRXhpdFNpdGVEYXRhIGV4aXRT
aXRlRGF0YSwgRXhpdGluZ0lubGluZUtpbmQgaW5saW5lS2luZCkKK3sKKyAgICBpZiAoZXhpdFNp
dGVEYXRhLmJhZEZ1bmN0aW9uLmlzU2V0KGlubGluZUtpbmQpKSB7CisgICAgICAgIGlmIChpc0Jh
c2VkT25TdHViKCkpIHsKICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYSBwb2x5bW9ycGhpYyBz
dHViLCB0aGVuIGhhdmluZyBhbiBleGl0IHNpdGUgaXMgbm90IHF1aXRlIHNvIHVzZWZ1bC4gSW4K
ICAgICAgICAgICAgIC8vIG1vc3QgY2FzZXMsIHRoZSBpbmZvcm1hdGlvbiBpbiB0aGUgc3R1YiBo
YXMgaGlnaGVyIGZpZGVsaXR5LgotICAgICAgICAgICAgcmVzdWx0Lm1ha2VDbG9zdXJlQ2FsbCgp
OworICAgICAgICAgICAgbWFrZUNsb3N1cmVDYWxsKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAvLyBXZSBtaWdodCBub3QgaGF2ZSBhIHBvbHltb3JwaGljIHN0dWIgZm9yIGFueSBu
dW1iZXIgb2YgcmVhc29ucy4gV2hlbiB0aGlzIGhhcHBlbnMsIHdlCiAgICAgICAgICAgICAvLyBh
cmUgaW4gbGVzcyBjZXJ0YWluIHRlcnJpdG9yeSwgc28gZXhpdCBzaXRlcyBtZWFuIGEgbG90Lgot
ICAgICAgICAgICAgcmVzdWx0Lm1fY291bGRUYWtlU2xvd1BhdGggPSB0cnVlOworICAgICAgICAg
ICAgbV9jb3VsZFRha2VTbG93UGF0aCA9IHRydWU7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYg
KGV4aXRTaXRlRGF0YS50YWtlc1Nsb3dQYXRoKQotICAgICAgICByZXN1bHQubV9jb3VsZFRha2VT
bG93UGF0aCA9IHRydWU7CiAgICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBpZiAoZXhpdFNp
dGVEYXRhLnRha2VzU2xvd1BhdGguaXNTZXQoaW5saW5lS2luZCkpCisgICAgICAgIG1fY291bGRU
YWtlU2xvd1BhdGggPSB0cnVlOwogfQotI2VuZGlmCiAKLXZvaWQgQ2FsbExpbmtTdGF0dXM6OmNv
bXB1dGVERkdTdGF0dXNlcygKLSAgICBDb2RlQmxvY2sqIGRmZ0NvZGVCbG9jaywgQ2FsbExpbmtT
dGF0dXM6OkNvbnRleHRNYXAmIG1hcCkKK0NhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpj
b21wdXRlRm9yKAorICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luLAorICAgIGNvbnN0IElDU3RhdHVzTWFwJiBiYXNlbGluZU1hcCwgY29uc3QgSUNTdGF0
dXNDb250ZXh0U3RhY2smIG9wdGltaXplZFN0YWNrKQogewotI2lmIEVOQUJMRShERkdfSklUKQot
ICAgIFJFTEVBU0VfQVNTRVJUKGRmZ0NvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkRG
R0pJVCk7Ci0gICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IGRmZ0NvZGVCbG9jay0+
YWx0ZXJuYXRpdmUoKTsKLSAgICBmb3IgKGF1dG8gaXRlciA9IGRmZ0NvZGVCbG9jay0+Y2FsbExp
bmtJbmZvc0JlZ2luKCk7ICEhaXRlcjsgKytpdGVyKSB7Ci0gICAgICAgIENhbGxMaW5rSW5mbyYg
aW5mbyA9ICoqaXRlcjsKLSAgICAgICAgaWYgKGluZm8uaXNEaXJlY3QoKSkgewotICAgICAgICAg
ICAgLy8gSWYgdGhlIERGRyB3YXMgYWJsZSB0byBnZXQgYSBkaXJlY3QgY2FsbCB0aGVuIHByb2Jh
Ymx5IHNvIHdpbGwgd2UuIEhvd2V2ZXIsIHRoZXJlIGlzCi0gICAgICAgICAgICAvLyBhIHJlbW90
ZSBjaGFuY2UgdGhhdCBpdCdzIGJhZCBuZXdzIHRvIGxvc2UgaW5mb3JtYXRpb24gYWJvdXQgd2hh
dCB0aGUgREZHIGRpZC4gV2UnZAotICAgICAgICAgICAgLy8gaWRlYWxseSBsaWtlIHRvIGp1c3Qg
a25vdyB0aGF0IHRoZSBERkcgaGFkIGVtaXR0ZWQgYSBEaXJlY3RDYWxsLgotICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gaW5m
by5jb2RlT3JpZ2luKCk7Ci0gICAgICAgIAotICAgICAgICAvLyBDaGVjayBpZiB3ZSBoYWQgYWxy
ZWFkeSBwcmV2aW91c2x5IG1hZGUgYSB0ZXJyaWJsZSBtaXN0YWtlIGluIHRoZSBGVEwgZm9yIHRo
aXMKLSAgICAgICAgLy8gY29kZSBvcmlnaW4uIE5vdGUgdGhhdCB0aGlzIGlzIGFwcHJveGltYXRl
IGJlY2F1c2Ugd2UgY291bGQgaGF2ZSBhIG1vbm92YXJpYW50Ci0gICAgICAgIC8vIGlubGluZSBp
biB0aGUgRlRMIHRoYXQgZW5kZWQgdXAgZmFpbGluZy4gV2Ugc2hvdWxkIGZpeCB0aGF0IGF0IHNv
bWUgcG9pbnQgYnkKLSAgICAgICAgLy8gaGF2aW5nIGRhdGEgc3RydWN0dXJlcyB0byB0cmFjayB0
aGUgY29udGV4dCBvZiBmcmVxdWVudCBleGl0cy4gVGhpcyBpcyBjdXJyZW50bHkKLSAgICAgICAg
Ly8gY2hhbGxlbmdpbmcgYmVjYXVzZSBpdCB3b3VsZCByZXF1aXJlIGNyZWF0aW5nIGEgQ29kZU9y
aWdpbi1iYXNlZCBkYXRhYmFzZSBpbgotICAgICAgICAvLyBiYXNlbGluZSBDb2RlQmxvY2tzLCBi
dXQgdGhvc2UgQ29kZUJsb2NrcyBkb24ndCByZWFsbHkgaGF2ZSBhIHBsYWNlIHRvIHB1dCB0aGUK
LSAgICAgICAgLy8gSW5saW5lQ2FsbEZyYW1lcy4KLSAgICAgICAgQ29kZUJsb2NrKiBjdXJyZW50
QmFzZWxpbmUgPQotICAgICAgICAgICAgYmFzZWxpbmVDb2RlQmxvY2tGb3JPcmlnaW5BbmRCYXNl
bGluZUNvZGVCbG9jayhjb2RlT3JpZ2luLCBiYXNlbGluZUNvZGVCbG9jayk7Ci0gICAgICAgIEV4
aXRTaXRlRGF0YSBleGl0U2l0ZURhdGEgPSBjb21wdXRlRXhpdFNpdGVEYXRhKGN1cnJlbnRCYXNl
bGluZSwgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsKLSAgICAgICAgCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoZGZnQ29kZUJsb2NrLT5tX2xvY2sp
OwotICAgICAgICAgICAgbWFwLmFkZChpbmZvLmNvZGVPcmlnaW4oKSwgY29tcHV0ZUZvcihsb2Nr
ZXIsIGRmZ0NvZGVCbG9jaywgaW5mbywgZXhpdFNpdGVEYXRhKSk7Ci0gICAgICAgIH0KKyAgICBp
ZiAoQ2FsbExpbmtTdGF0dXNJbnRlcm5hbDo6dmVyYm9zZSkKKyAgICAgICAgZGF0YUxvZygiRmln
dXJpbmcgb3V0IGNhbGwgcHJvZmlsaW5nIGZvciAiLCBjb2RlT3JpZ2luLCAiXG4iKTsKKyAgICBF
eGl0U2l0ZURhdGEgZXhpdFNpdGVEYXRhID0gY29tcHV0ZUV4aXRTaXRlRGF0YShwcm9maWxlZEJs
b2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpOworICAgIGlmIChDYWxsTGlua1N0YXR1c0lu
dGVybmFsOjp2ZXJib3NlKSB7CisgICAgICAgIGRhdGFMb2coInRha2VzU2xvd1BhdGggPSAiLCBl
eGl0U2l0ZURhdGEudGFrZXNTbG93UGF0aCwgIlxuIik7CisgICAgICAgIGRhdGFMb2coImJhZEZ1
bmN0aW9uID0gIiwgZXhpdFNpdGVEYXRhLmJhZEZ1bmN0aW9uLCAiXG4iKTsKICAgICB9Ci0jZWxz
ZQotICAgIFVOVVNFRF9QQVJBTShkZmdDb2RlQmxvY2spOwotI2VuZGlmIC8vIEVOQUJMRShERkdf
SklUKQogICAgIAotICAgIGlmIChDYWxsTGlua1N0YXR1c0ludGVybmFsOjp2ZXJib3NlKSB7Ci0g
ICAgICAgIGRhdGFMb2coIkNvbnRleHQgbWFwOlxuIik7Ci0gICAgICAgIENvbnRleHRNYXA6Oml0
ZXJhdG9yIGl0ZXIgPSBtYXAuYmVnaW4oKTsKLSAgICAgICAgQ29udGV4dE1hcDo6aXRlcmF0b3Ig
ZW5kID0gbWFwLmVuZCgpOwotICAgICAgICBmb3IgKDsgaXRlciAhPSBlbmQ7ICsraXRlcikgewot
ICAgICAgICAgICAgZGF0YUxvZygiICAgICIsIGl0ZXItPmtleSwgIjpcbiIpOwotICAgICAgICAg
ICAgZGF0YUxvZygiICAgICAgICAiLCBpdGVyLT52YWx1ZSwgIlxuIik7CisgICAgZm9yIChjb25z
dCBJQ1N0YXR1c0NvbnRleHQqIGNvbnRleHQgOiBvcHRpbWl6ZWRTdGFjaykgeworICAgICAgICBp
ZiAoQ2FsbExpbmtTdGF0dXNJbnRlcm5hbDo6dmVyYm9zZSkKKyAgICAgICAgICAgIGRhdGFMb2co
IkV4YW1pbmluZyBzdGF0dXMgaW4gIiwgcG9pbnRlckR1bXAoY29udGV4dC0+b3B0aW1pemVkQ29k
ZUJsb2NrKSwgIlxuIik7CisgICAgICAgIElDU3RhdHVzIHN0YXR1cyA9IGNvbnRleHQtPmdldChj
b2RlT3JpZ2luKTsKKyAgICAgICAgCisgICAgICAgIC8vIElmIHdlIGhhdmUgYm90aCBhIENhbGxM
aW5rU3RhdHVzIGFuZCBhIGNhbGxMaW5rSW5mbyBmb3IgdGhlIHNhbWUgb3JpZ2luLCB0aGVuIGl0
IG1lYW5zIG9uZQorICAgICAgICAvLyBvZiB0d28gdGhpbmdzOgorICAgICAgICAvLworICAgICAg
ICAvLyAxKSBXZSBpbml0aWFsbHkgdGhvdWdodCB0aGF0IHdlJ2QgYmUgYWJsZSB0byBpbmxpbmUg
dGhpcyBjYWxsIHNvIHdlIHJlY29yZGVkIGEgc3RhdHVzIGJ1dAorICAgICAgICAvLyAgICB0aGVu
IHdlIHJlYWxpemVkIHRoYXQgaXQgd2FzIHBvaW50bGVzcyBhbmQgZ2F2ZSB1cCBhbmQgZW1pdHRl
ZCBhIG5vcm1hbCBjYWxsIGFueXdheS4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gMikgV2UgZGlk
IGEgcG9seW1vcnBoaWMgY2FsbCBpbmxpbmUgdGhhdCBoYWQgYSBzbG93IHBhdGggY2FzZS4KKyAg
ICAgICAgLy8KKyAgICAgICAgLy8gSW4gdGhlIGZpcnN0IGNhc2UsIGl0J3MgZXNzZW50aWFsIHRo
YXQgd2UgdXNlIHRoZSBjYWxsTGlua0luZm8sIHNpbmNlIHRoZSBzdGF0dXMgbWF5IGJlCisgICAg
ICAgIC8vIHBvbHltb3JwaGljIGJ1dCB0aGUgbGluayBpbmZvIGJlbmVmaXRzIGZyb20gcG9seXZh
cmlhbnQgcHJvZmlsaW5nLgorICAgICAgICAvLworICAgICAgICAvLyBJbiB0aGUgc2Vjb25kIGNh
c2UsIGl0J3MgZXNzZW50aWFsIHRoYXQgd2UgdXNlIHRoZSBzdGF0dXMsIHNpbmNlIHRoZSBjYWxs
TGlua0luZm8KKyAgICAgICAgLy8gY29ycmVzcG9uZHMgdG8gdGhlIHNsb3cgY2FzZS4KKyAgICAg
ICAgLy8KKyAgICAgICAgLy8gSXQgd291bGQgYmUgYW5ub3lpbmcgdG8gZGlzdGluZ3Vpc2ggdGhv
c2UgdHdvIGNhc2VzLiBIb3dldmVyLCB3ZSBrbm93IHRoYXQ6CisgICAgICAgIC8vCisgICAgICAg
IC8vIElmIHRoZSBmaXJzdCBjYXNlIGhhcHBlbnMgaW4gdGhlIEZUTCwgdGhlbiBpdCBtZWFucyB0
aGF0IGV2ZW4gd2l0aCBwb2x5dmFyaWFudCBwcm9maWxpbmcsCisgICAgICAgIC8vIHdlIGZhaWxl
ZCB0byBkbyBhbnl0aGluZyB1c2VmdWwuIFRoYXQgc3VnZ2VzdHMgdGhhdCBpbiB0aGUgRlRMLCBp
dCdzIE9LIHRvIHByaW9yaXRpemUgdGhlCisgICAgICAgIC8vIHN0YXR1cy4gVGhhdCBzdGF0dXMg
d2lsbCBhZ2FpbiB0ZWxsIHVzIHRvIG5vdCBkbyBhbnl0aGluZyB1c2VmdWwuCisgICAgICAgIC8v
CisgICAgICAgIC8vIFRoZSBzZWNvbmQgY2FzZSBvbmx5IGhhcHBlbnMgaW4gdGhlIEZUTC4KKyAg
ICAgICAgLy8KKyAgICAgICAgLy8gVGhlcmVmb3JlLCB3ZSBwcmVmZXIgdGhlIHN0YXR1cyBpbiB0
aGUgRlRMIGFuZCB0aGUgaW5mbyBpbiB0aGUgREZHLgorICAgICAgICAvLworICAgICAgICAvLyBM
dWNraWx5LCB0aGlzIGNhc2UgZG9lc24ndCBtYXR0ZXIgZm9yIHRoZSBvdGhlciBJQ1N0YXR1c2Vz
LCBzaW5jZSB0aGV5IG5ldmVyIGRvIHRoZQorICAgICAgICAvLyBmYXN0LXBhdGgtc2xvdy1wYXRo
IGNvbnRyb2wtZmxvdy1kaWFtb25kIHN0eWxlIG9mIElDIGlubGluaW5nLiBJdCdzIGVpdGhlciBh
bGwgZmFzdCBwYXRoCisgICAgICAgIC8vIG9yIGl0J3MgYSBmdWxsIElDLiBTbywgZm9yIHRoZW0s
IGlmIHRoZXJlIGlzIGFuIElDIHN0YXR1cyB0aGVuIGl0IG1lYW5zIGNhc2UgKDEpLgorICAgICAg
ICAKKyAgICAgICAgYm9vbCBjaGVja1N0YXR1c0ZpcnN0ID0gY29udGV4dC0+b3B0aW1pemVkQ29k
ZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6RlRMSklUOworICAgICAgICAKKyAgICAgICAg
YXV0byBjaGVja0luZm8gPSBbJl0gKCkgLT4gQ2FsbExpbmtTdGF0dXMgeworICAgICAgICAgICAg
aWYgKCFzdGF0dXMuY2FsbExpbmtJbmZvKQorICAgICAgICAgICAgICAgIHJldHVybiBDYWxsTGlu
a1N0YXR1cygpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoQ2FsbExpbmtTdGF0dXNJ
bnRlcm5hbDo6dmVyYm9zZSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJIYXZlIENhbGxMaW5r
SW5mbyB3aXRoIENvZGVPcmlnaW4gPSAiLCBzdGF0dXMuY2FsbExpbmtJbmZvLT5jb2RlT3JpZ2lu
KCksICJcbiIpOworICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb250ZXh0
LT5vcHRpbWl6ZWRDb2RlQmxvY2stPm1fbG9jayk7CisgICAgICAgICAgICBDYWxsTGlua1N0YXR1
cyByZXN1bHQgPSBjb21wdXRlRm9yKAorICAgICAgICAgICAgICAgIGxvY2tlciwgY29udGV4dC0+
b3B0aW1pemVkQ29kZUJsb2NrLCAqc3RhdHVzLmNhbGxMaW5rSW5mbywgZXhpdFNpdGVEYXRhLAor
ICAgICAgICAgICAgICAgIGNvZGVPcmlnaW4uZXhpdGluZ0lubGluZUtpbmQoKSk7CisgICAgICAg
ICAgICBpZiAoQ2FsbExpbmtTdGF0dXNJbnRlcm5hbDo6dmVyYm9zZSkKKyAgICAgICAgICAgICAg
ICBkYXRhTG9nKCJHb3QgcmVzdWx0OiAiLCByZXN1bHQsICJcbiIpOworICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gY2hlY2tTdGF0
dXMgPSBbJl0gKCkgLT4gQ2FsbExpbmtTdGF0dXMgeworICAgICAgICAgICAgaWYgKCFzdGF0dXMu
Y2FsbFN0YXR1cykKKyAgICAgICAgICAgICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoKTsKKyAg
ICAgICAgICAgIENhbGxMaW5rU3RhdHVzIHJlc3VsdCA9ICpzdGF0dXMuY2FsbFN0YXR1czsKKyAg
ICAgICAgICAgIGlmIChDYWxsTGlua1N0YXR1c0ludGVybmFsOjp2ZXJib3NlKQorICAgICAgICAg
ICAgICAgIGRhdGFMb2coIkhhdmUgY2FsbFN0YXR1czogIiwgcmVzdWx0LCAiXG4iKTsKKyAgICAg
ICAgICAgIHJlc3VsdC5hY2NvdW50Rm9yRXhpdHMoZXhpdFNpdGVEYXRhLCBjb2RlT3JpZ2luLmV4
aXRpbmdJbmxpbmVLaW5kKCkpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAg
fTsKKyAgICAgICAgCisgICAgICAgIGlmIChjaGVja1N0YXR1c0ZpcnN0KSB7CisgICAgICAgICAg
ICBpZiAoQ2FsbExpbmtTdGF0dXMgcmVzdWx0ID0gY2hlY2tTdGF0dXMoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgaWYgKENhbGxMaW5rU3RhdHVzIHJlc3Vs
dCA9IGNoZWNrSW5mbygpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKENhbGxMaW5r
U3RhdHVzIHJlc3VsdCA9IGNoZWNrSW5mbygpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICAgICAgaWYgKENhbGxMaW5rU3RhdHVzIHJlc3VsdCA9IGNoZWNrU3RhdHVzKCkpCisgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KLX0KLQotQ2FsbExpbmtTdGF0dXMgQ2FsbExp
bmtTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4sCi0gICAgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBiYXNlbGluZU1h
cCwgY29uc3QgQ2FsbExpbmtTdGF0dXM6OkNvbnRleHRNYXAmIGRmZ01hcCkKLXsKLSAgICBhdXRv
IGl0ZXIgPSBkZmdNYXAuZmluZChjb2RlT3JpZ2luKTsKLSAgICBpZiAoaXRlciAhPSBkZmdNYXAu
ZW5kKCkpCi0gICAgICAgIHJldHVybiBpdGVyLT52YWx1ZTsKICAgICAKLSAgICByZXR1cm4gY29t
cHV0ZUZvcihwcm9maWxlZEJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIGJhc2VsaW5l
TWFwKTsKKyAgICBDYWxsTGlua1N0YXR1cyByZXN1bHQgPSBjb21wdXRlRm9yKHByb2ZpbGVkQmxv
Y2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgYmFzZWxpbmVNYXAsIGV4aXRTaXRlRGF0YSk7
CisgICAgaWYgKENhbGxMaW5rU3RhdHVzSW50ZXJuYWw6OnZlcmJvc2UpCisgICAgICAgIGRhdGFM
b2coIkNvbXB1dGVkIGZyb20gYmFzZWxpbmU6ICIsIHJlc3VsdCwgIlxuIik7CisgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAogdm9pZCBDYWxsTGlua1N0YXR1czo6c2V0UHJvdmVuQ29uc3RhbnRDYWxs
ZWUoQ2FsbFZhcmlhbnQgdmFyaWFudCkKQEAgLTMyNyw2ICszOTgsMjQgQEAgdm9pZCBDYWxsTGlu
a1N0YXR1czo6bWFrZUNsb3N1cmVDYWxsKCkKICAgICBtX3ZhcmlhbnRzID0gZGVzcGVjaWZpZWRW
YXJpYW50TGlzdChtX3ZhcmlhbnRzKTsKIH0KIAorYm9vbCBDYWxsTGlua1N0YXR1czo6ZmluYWxp
emUoKQoreworICAgIGZvciAoQ2FsbFZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKSB7Cisg
ICAgICAgIGlmICghdmFyaWFudC5maW5hbGl6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDYWxsTGlua1N0YXR1czo6Zmls
dGVyKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBtX3ZhcmlhbnRzLnJlbW92ZUFsbE1h
dGNoaW5nKAorICAgICAgICBbJl0gKENhbGxWYXJpYW50JiB2YXJpYW50KSAtPiBib29sIHsKKyAg
ICAgICAgICAgIHZhcmlhbnQuZmlsdGVyKHZtLCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4g
IXZhcmlhbnQ7CisgICAgICAgIH0pOworfQorCiB2b2lkIENhbGxMaW5rU3RhdHVzOjpkdW1wKFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgaWYgKCFpc1NldCgpKSB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAkocmV2aXNp
b24gMjMyNDQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3Rh
dHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJDYWxsVmFy
aWFudC5oIgogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJDb25jdXJyZW50SlNM
b2NrLmgiCisjaW5jbHVkZSAiRXhpdEZsYWcuaCIKKyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgog
I2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC02MCwzOSArNjIs
MzMgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIENhbGxMaW5rU3Rh
dHVzIGNvbXB1dGVGb3IoCi0gICAgICAgIENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5k
ZXgsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYpOwotCiAgICAgc3RydWN0IEV4aXRTaXRlRGF0YSB7
Ci0gICAgICAgIGJvb2wgdGFrZXNTbG93UGF0aCB7IGZhbHNlIH07Ci0gICAgICAgIGJvb2wgYmFk
RnVuY3Rpb24geyBmYWxzZSB9OworICAgICAgICBFeGl0RmxhZyB0YWtlc1Nsb3dQYXRoOworICAg
ICAgICBFeGl0RmxhZyBiYWRGdW5jdGlvbjsKICAgICB9OwogICAgIHN0YXRpYyBFeGl0U2l0ZURh
dGEgY29tcHV0ZUV4aXRTaXRlRGF0YShDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4
KTsKICAgICAKKyAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sq
LCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBjb25zdCBJQ1N0YXR1c01hcCYsIEV4aXRTaXRlRGF0
YSk7CisgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgdW5z
aWduZWQgYnl0ZWNvZGVJbmRleCwgY29uc3QgSUNTdGF0dXNNYXAmKTsKKwogI2lmIEVOQUJMRShK
SVQpCiAgICAgLy8gQ29tcHV0ZXMgdGhlIHN0YXR1cyBhc3N1bWluZyB0aGF0IHdlIG5ldmVyIHRv
b2sgc2xvdyBwYXRoIGFuZCBuZXZlciBwcmV2aW91c2x5CiAgICAgLy8gZXhpdGVkLgogICAgIHN0
YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYs
IENvZGVCbG9jayosIENhbGxMaW5rSW5mbyYpOworICAgIAorICAgIC8vIENvbXB1dGVzIHRoZSBz
dGF0dXMgYWNjb3VudGluZyBmb3IgZXhpdHMuCiAgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNv
bXB1dGVGb3IoCi0gICAgICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayos
IENhbGxMaW5rSW5mbyYsIEV4aXRTaXRlRGF0YSk7CisgICAgICAgIGNvbnN0IENvbmN1cnJlbnRK
U0xvY2tlciYsIENvZGVCbG9jayosIENhbGxMaW5rSW5mbyYsIEV4aXRTaXRlRGF0YSwgRXhpdGlu
Z0lubGluZUtpbmQgPSBFeGl0RnJvbUFueUlubGluZUtpbmQpOwogI2VuZGlmCiAgICAgCi0gICAg
dHlwZWRlZiBIYXNoTWFwPENvZGVPcmlnaW4sIENhbGxMaW5rU3RhdHVzLCBDb2RlT3JpZ2luQXBw
cm94aW1hdGVIYXNoPiBDb250ZXh0TWFwOwotICAgIAotICAgIC8vIENvbXB1dGVzIGFsbCBvZiB0
aGUgc3RhdHVzZXMgb2YgdGhlIERGRyBjb2RlIGJsb2NrLiBEb2Vzbid0IGluY2x1ZGUgc3RhdHVz
ZXMgdGhhdCBoYWQKLSAgICAvLyBubyBpbmZvcm1hdGlvbi4gQ3VycmVudGx5IHdlIHVzZSB0aGlz
IHdoZW4gY29tcGlsaW5nIEZUTCBjb2RlLCB0byBlbmFibGUgcG9seXZhcmlhbnQKLSAgICAvLyBp
bmxpbmluZy4KLSAgICBzdGF0aWMgdm9pZCBjb21wdXRlREZHU3RhdHVzZXMoQ29kZUJsb2NrKiBk
ZmdDb2RlQmxvY2ssIENvbnRleHRNYXAmKTsKLSAgICAKLSAgICAvLyBIZWxwZXIgdGhhdCBmaXJz
dCBjb25zdWx0cyB0aGUgQ29udGV4dE1hcCBhbmQgdGhlbiBkb2VzIGNvbXB1dGVGb3IoKS4KICAg
ICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcigKLSAgICAgICAgQ29kZUJsb2NrKiwg
Q29kZU9yaWdpbiwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiwgY29uc3QgQ29udGV4dE1hcCYpOwor
ICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBjb25zdCBJQ1N0YXR1c01hcCYsIGNvbnN0
IElDU3RhdHVzQ29udGV4dFN0YWNrJik7CiAgICAgCiAgICAgdm9pZCBzZXRQcm92ZW5Db25zdGFu
dENhbGxlZShDYWxsVmFyaWFudCk7CiAgICAgCiAgICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0
dXJuICFtX3ZhcmlhbnRzLmlzRW1wdHkoKSB8fCBtX2NvdWxkVGFrZVNsb3dQYXRoOyB9CiAgICAg
Ci0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQoKTsgfQorICAgIGV4
cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBpc1NldCgpOyB9CiAgICAgCiAg
ICAgYm9vbCBjb3VsZFRha2VTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bGRUYWtlU2xv
d1BhdGg7IH0KICAgICAKQEAgLTExMCw2ICsxMDYsMTAgQEAgcHVibGljOgogICAgIAogICAgIHVu
c2lnbmVkIG1heE51bUFyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fbWF4TnVtQXJndW1lbnRz
OyB9CiAgICAgCisgICAgYm9vbCBmaW5hbGl6ZSgpOworICAgIAorICAgIHZvaWQgZmlsdGVyKFZN
JiwgSlNWYWx1ZSk7CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAg
ICAgCiBwcml2YXRlOgpAQCAtMTIxLDYgKzEyMSw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYsIENhbGxMaW5rSW5mbyYpOwogI2VuZGlmCiAgICAgCisgICAg
dm9pZCBhY2NvdW50Rm9yRXhpdHMoRXhpdFNpdGVEYXRhLCBFeGl0aW5nSW5saW5lS2luZCk7Cisg
ICAgCiAgICAgQ2FsbFZhcmlhbnRMaXN0IG1fdmFyaWFudHM7CiAgICAgYm9vbCBtX2NvdWxkVGFr
ZVNsb3dQYXRoIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNQcm92ZWQgeyBmYWxzZSB9OwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuY3BwCShy
ZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZh
cmlhbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDYgKzMxLDM1IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCitib29sIENhbGxWYXJpYW50OjpmaW5hbGl6ZSgpCit7CisgICAgaWYgKG1fY2Fs
bGVlICYmICFIZWFwOjppc01hcmtlZChtX2NhbGxlZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDYWxsVmFyaWFudDo6ZmlsdGVyKFZNJiB2bSwg
SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAoISp0aGlzKQorICAgICAgICByZXR1cm47CisgICAg
CisgICAgaWYgKCFpc0Nsb3N1cmVDYWxsKCkpIHsKKyAgICAgICAgaWYgKG5vbkV4ZWN1dGFibGVD
YWxsZWUoKSAhPSB2YWx1ZSkKKyAgICAgICAgICAgICp0aGlzID0gQ2FsbFZhcmlhbnQoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoSlNGdW5jdGlvbiogZnVuY3Rpb24g
PSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgdmFsdWUpKSB7CisgICAgICAgIGlmIChm
dW5jdGlvbi0+ZXhlY3V0YWJsZSgpID09IGV4ZWN1dGFibGUoKSkKKyAgICAgICAgICAgICp0aGlz
ID0gQ2FsbFZhcmlhbnQoZnVuY3Rpb24pOworICAgICAgICBlbHNlCisgICAgICAgICAgICAqdGhp
cyA9IENhbGxWYXJpYW50KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgKnRo
aXMgPSBDYWxsVmFyaWFudCgpOworfQorCiB2b2lkIENhbGxWYXJpYW50OjpkdW1wKFByaW50U3Ry
ZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgaWYgKCEqdGhpcykgewpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgJKHJldmlzaW9uIDIzMjQ0MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAgCi0gICAg
Ym9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsZWU7IH0KKyAgICBleHBsaWNp
dCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2NhbGxlZTsgfQogICAgIAogICAg
IC8vIElmIHRoaXMgdmFyaWFudCByZWZlcnMgdG8gYSBmdW5jdGlvbiwgY2hhbmdlIGl0IHRvIHJl
ZmVyIHRvIGl0cyBleGVjdXRhYmxlLgogICAgIEFMV0FZU19JTkxJTkUgQ2FsbFZhcmlhbnQgZGVz
cGVjaWZpZWRDbG9zdXJlKCkgY29uc3QKQEAgLTEzNiw2ICsxMzYsMTAgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCisgICAgYm9vbCBmaW5hbGl6ZSgpOwor
ICAgIAorICAgIHZvaWQgZmlsdGVyKFZNJiwgSlNWYWx1ZSk7CisgICAgCiAgICAgdm9pZCBkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OwogICAgIAogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxl
dGVkVmFsdWUoKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsMjQgKzIzOCwy
MCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKCkKIAogdm9pZCBDb2RlQmxvY2s6OmR1
bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0KQogewotICAgIFN0dWJJbmZvTWFwIHN0dWJJbmZv
czsKLSAgICBDYWxsTGlua0luZm9NYXAgY2FsbExpbmtJbmZvczsKLSAgICBnZXRTdHViSW5mb01h
cChzdHViSW5mb3MpOwotICAgIGdldENhbGxMaW5rSW5mb01hcChjYWxsTGlua0luZm9zKTsKLSAg
ICBCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wQmxvY2sodGhpcywgaW5zdHJ1Y3Rpb25z
KCksIG91dCwgc3R1YkluZm9zLCBjYWxsTGlua0luZm9zKTsKKyAgICBJQ1N0YXR1c01hcCBzdGF0
dXNNYXA7CisgICAgZ2V0SUNTdGF0dXNNYXAoc3RhdHVzTWFwKTsKKyAgICBCeXRlY29kZUR1bXBl
cjxDb2RlQmxvY2s+OjpkdW1wQmxvY2sodGhpcywgaW5zdHJ1Y3Rpb25zKCksIG91dCwgc3RhdHVz
TWFwKTsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0
LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0
IFN0dWJJbmZvTWFwJiBzdHViSW5mb3MsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYgY2FsbExpbmtJ
bmZvcykKK3ZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29u
c3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBJQ1N0
YXR1c01hcCYgc3RhdHVzTWFwKQogewotICAgIEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1
bXBCeXRlY29kZSh0aGlzLCBvdXQsIGJlZ2luLCBpdCwgc3R1YkluZm9zLCBjYWxsTGlua0luZm9z
KTsKKyAgICBCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wQnl0ZWNvZGUodGhpcywgb3V0
LCBiZWdpbiwgaXQsIHN0YXR1c01hcCk7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNv
ZGUoCi0gICAgUHJpbnRTdHJlYW0mIG91dCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsCi0gICAg
Y29uc3QgU3R1YkluZm9NYXAmIHN0dWJJbmZvcywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBjYWxs
TGlua0luZm9zKQordm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0
LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkK
IHsKICAgICBjb25zdCBJbnN0cnVjdGlvbiogaXQgPSAmaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVP
ZmZzZXRdOwotICAgIGR1bXBCeXRlY29kZShvdXQsIGluc3RydWN0aW9ucygpLmJlZ2luKCksIGl0
LCBzdHViSW5mb3MsIGNhbGxMaW5rSW5mb3MpOworICAgIGR1bXBCeXRlY29kZShvdXQsIGluc3Ry
dWN0aW9ucygpLmJlZ2luKCksIGl0LCBzdGF0dXNNYXApOwogfQogCiAjZGVmaW5lIEZPUl9FQUNI
X01FTUJFUl9WRUNUT1IobWFjcm8pIFwKQEAgLTExNjYsNiArMTE2Miw5IEBAIHZvaWQgQ29kZUJs
b2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhjb24KICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBp
ZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpIHsKICAgICAgICAgREZHOjpD
b21tb25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENvZGUtPmRmZ0NvbW1vbigpOworICAgICAgICAK
KyAgICAgICAgZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLm1hcmtJZkNoZWFwKHZpc2l0b3Ip
OworICAgICAgICAKICAgICAgICAgZm9yIChhdXRvJiB3ZWFrUmVmZXJlbmNlIDogZGZnQ29tbW9u
LT53ZWFrU3RydWN0dXJlUmVmZXJlbmNlcykKICAgICAgICAgICAgIHdlYWtSZWZlcmVuY2UtPm1h
cmtJZkNoZWFwKHZpc2l0b3IpOwogCkBAIC0xNDE2LDU3ICsxNDE1LDQ1IEBAIHZvaWQgQ29kZUJs
b2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICAgICAgICAgZmluYWxpemVCYXNlbGluZUpJ
VElubGluZUNhY2hlcygpOwogI2VuZGlmCiAKLSAgICBWTTo6U3BhY2VBbmRGaW5hbGl6ZXJTZXQ6
OmZpbmFsaXplclNldEZvcigqc3Vic3BhY2UoKSkucmVtb3ZlKHRoaXMpOwotfQotCi12b2lkIENv
ZGVCbG9jazo6Z2V0U3R1YkluZm9NYXAoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgU3R1Yklu
Zm9NYXAmIHJlc3VsdCkKLXsKLSNpZiBFTkFCTEUoSklUKQotICAgIGlmIChKSVRDb2RlOjppc0pJ
VChqaXRUeXBlKCkpKQotICAgICAgICB0b0hhc2hNYXAobV9zdHViSW5mb3MsIGdldFN0cnVjdHVy
ZVN0dWJJbmZvQ29kZU9yaWdpbiwgcmVzdWx0KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHJl
c3VsdCk7Ci0jZW5kaWYKLX0KLQotdm9pZCBDb2RlQmxvY2s6OmdldFN0dWJJbmZvTWFwKFN0dWJJ
bmZvTWFwJiByZXN1bHQpCi17Ci0gICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2sp
OwotICAgIGdldFN0dWJJbmZvTWFwKGxvY2tlciwgcmVzdWx0KTsKLX0KLQotdm9pZCBDb2RlQmxv
Y2s6OmdldENhbGxMaW5rSW5mb01hcChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDYWxsTGlu
a0luZm9NYXAmIHJlc3VsdCkKLXsKLSNpZiBFTkFCTEUoSklUKQotICAgIGlmIChKSVRDb2RlOjpp
c0pJVChqaXRUeXBlKCkpKQotICAgICAgICB0b0hhc2hNYXAobV9jYWxsTGlua0luZm9zLCBnZXRD
YWxsTGlua0luZm9Db2RlT3JpZ2luLCByZXN1bHQpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
cmVzdWx0KTsKLSNlbmRpZgotfQorICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0
VHlwZSgpKSkgeworICAgICAgICBERkc6OkNvbW1vbkRhdGEqIGRmZ0NvbW1vbiA9IG1faml0Q29k
ZS0+ZGZnQ29tbW9uKCk7CisgICAgICAgIGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5maW5h
bGl6ZSgpOworICAgIH0KIAotdm9pZCBDb2RlQmxvY2s6OmdldENhbGxMaW5rSW5mb01hcChDYWxs
TGlua0luZm9NYXAmIHJlc3VsdCkKLXsKLSAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1f
bG9jayk7Ci0gICAgZ2V0Q2FsbExpbmtJbmZvTWFwKGxvY2tlciwgcmVzdWx0KTsKKyAgICBWTTo6
U3BhY2VBbmRGaW5hbGl6ZXJTZXQ6OmZpbmFsaXplclNldEZvcigqc3Vic3BhY2UoKSkucmVtb3Zl
KHRoaXMpOwogfQogCi12b2lkIENvZGVCbG9jazo6Z2V0QnlWYWxJbmZvTWFwKGNvbnN0IENvbmN1
cnJlbnRKU0xvY2tlciYsIEJ5VmFsSW5mb01hcCYgcmVzdWx0KQordm9pZCBDb2RlQmxvY2s6Omdl
dElDU3RhdHVzTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIElDU3RhdHVzTWFwJiByZXN1
bHQpCiB7CiAjaWYgRU5BQkxFKEpJVCkKICAgICBpZiAoSklUQ29kZTo6aXNKSVQoaml0VHlwZSgp
KSkgewotICAgICAgICBmb3IgKGF1dG8qIGJ5VmFsSW5mbyA6IG1fYnlWYWxJbmZvcykKLSAgICAg
ICAgICAgIHJlc3VsdC5hZGQoQ29kZU9yaWdpbihieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXgpLCBi
eVZhbEluZm8pOworICAgICAgICBmb3IgKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA6IG1f
c3R1YkluZm9zKQorICAgICAgICAgICAgcmVzdWx0LmFkZChzdHViSW5mby0+Y29kZU9yaWdpbiwg
SUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLnN0dWJJbmZvID0gc3R1YkluZm87CisgICAgICAg
IGZvciAoQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gOiBtX2NhbGxMaW5rSW5mb3MpCisgICAg
ICAgICAgICByZXN1bHQuYWRkKGNhbGxMaW5rSW5mby0+Y29kZU9yaWdpbigpLCBJQ1N0YXR1cygp
KS5pdGVyYXRvci0+dmFsdWUuY2FsbExpbmtJbmZvID0gY2FsbExpbmtJbmZvOworICAgICAgICBm
b3IgKEJ5VmFsSW5mbyogYnlWYWxJbmZvIDogbV9ieVZhbEluZm9zKQorICAgICAgICAgICAgcmVz
dWx0LmFkZChDb2RlT3JpZ2luKGJ5VmFsSW5mby0+Ynl0ZWNvZGVJbmRleCksIElDU3RhdHVzKCkp
Lml0ZXJhdG9yLT52YWx1ZS5ieVZhbEluZm8gPSBieVZhbEluZm87CisgICAgICAgIGlmIChKSVRD
b2RlOjppc09wdGltaXppbmdKSVQoaml0VHlwZSgpKSkgeworICAgICAgICAgICAgREZHOjpDb21t
b25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENvZGUtPmRmZ0NvbW1vbigpOworICAgICAgICAgICAg
Zm9yIChhdXRvJiBwYWlyIDogZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLmNhbGxzKQorICAg
ICAgICAgICAgICAgIHJlc3VsdC5hZGQocGFpci5maXJzdCwgSUNTdGF0dXMoKSkuaXRlcmF0b3It
PnZhbHVlLmNhbGxTdGF0dXMgPSBwYWlyLnNlY29uZC5nZXQoKTsKKyAgICAgICAgICAgIGZvciAo
YXV0byYgcGFpciA6IGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5nZXRzKQorICAgICAgICAg
ICAgICAgIHJlc3VsdC5hZGQocGFpci5maXJzdCwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVl
LmdldFN0YXR1cyA9IHBhaXIuc2Vjb25kLmdldCgpOworICAgICAgICAgICAgZm9yIChhdXRvJiBw
YWlyIDogZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLnB1dHMpCisgICAgICAgICAgICAgICAg
cmVzdWx0LmFkZChwYWlyLmZpcnN0LCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUucHV0U3Rh
dHVzID0gcGFpci5zZWNvbmQuZ2V0KCk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBk
ZmdDb21tb24tPnJlY29yZGVkU3RhdHVzZXMuaW5zKQorICAgICAgICAgICAgICAgIHJlc3VsdC5h
ZGQocGFpci5maXJzdCwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLmluU3RhdHVzID0gcGFp
ci5zZWNvbmQuZ2V0KCk7CisgICAgICAgIH0KICAgICB9CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TShyZXN1bHQpOwogI2VuZGlmCiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpnZXRCeVZhbEluZm9NYXAo
QnlWYWxJbmZvTWFwJiByZXN1bHQpCit2b2lkIENvZGVCbG9jazo6Z2V0SUNTdGF0dXNNYXAoSUNT
dGF0dXNNYXAmIHJlc3VsdCkKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9j
ayk7Ci0gICAgZ2V0QnlWYWxJbmZvTWFwKGxvY2tlciwgcmVzdWx0KTsKKyAgICBnZXRJQ1N0YXR1
c01hcChsb2NrZXIsIHJlc3VsdCk7CiB9CiAKICNpZiBFTkFCTEUoSklUKQpAQCAtMTUzMyw3ICsx
NTIwLDcgQEAgdm9pZCBDb2RlQmxvY2s6OnJlc2V0SklURGF0YSgpCiAgICAgCiAgICAgLy8gV2Ug
Y2FuIGNsZWFyIHRoZXNlIGJlY2F1c2Ugbm8gb3RoZXIgdGhyZWFkIHdpbGwgaGF2ZSByZWZlcmVu
Y2VzIHRvIGFueSBzdHViIGluZm9zLCBjYWxsCiAgICAgLy8gbGluayBpbmZvcywgb3IgYnkgdmFs
IGluZm9zIGlmIHdlIGRvbid0IGhhdmUgSklUIGNvZGUuIEF0dGVtcHRzIHRvIHF1ZXJ5IHRoZXNl
IGRhdGEKLSAgICAvLyBzdHJ1Y3R1cmVzIHVzaW5nIHRoZSBjb25jdXJyZW50IEFQSSAoZ2V0U3R1
YkluZm9NYXAgYW5kIGZyaWVuZHMpIHdpbGwgcmV0dXJuIG5vdGhpbmcgaWYgd2UKKyAgICAvLyBz
dHJ1Y3R1cmVzIHVzaW5nIHRoZSBjb25jdXJyZW50IEFQSSAoZ2V0SUNTdGF0dXNNYXAgYW5kIGZy
aWVuZHMpIHdpbGwgcmV0dXJuIG5vdGhpbmcgaWYgd2UKICAgICAvLyBkb24ndCBoYXZlIEpJVCBj
b2RlLgogICAgIG1fc3R1YkluZm9zLmNsZWFyKCk7CiAgICAgbV9jYWxsTGlua0luZm9zLmNsZWFy
KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShy
ZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJFeHByZXNz
aW9uUmFuZ2VJbmZvLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRhYmxlLmgiCiAjaW5jbHVk
ZSAiSGFuZGxlckluZm8uaCIKKyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgogI2luY2x1ZGUgIklu
c3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVENvZGVNYXAu
aCIKQEAgLTk2LDggKzk3LDYgQEAgZW51bSBjbGFzcyBBY2Nlc3NUeXBlIDogaW50OF90OwogCiBz
dHJ1Y3QgQXJpdGhQcm9maWxlOwogCi10eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdpbiwgU3RydWN0
dXJlU3R1YkluZm8qLCBDb2RlT3JpZ2luQXBwcm94aW1hdGVIYXNoPiBTdHViSW5mb01hcDsKLQog
ZW51bSBSZW9wdGltaXphdGlvbk1vZGUgeyBEb250Q291bnRSZW9wdGltaXphdGlvbiwgQ291bnRS
ZW9wdGltaXphdGlvbiB9OwogCiBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKQEAg
LTE5Niw4ICsxOTUsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGR1bXBCeXRlY29kZSgpOwogICAg
IHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJik7Ci0gICAgdm9pZCBkdW1wQnl0ZWNvZGUo
UHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJbnN0cnVj
dGlvbiomIGl0LCBjb25zdCBTdHViSW5mb01hcCYgPSBTdHViSW5mb01hcCgpLCBjb25zdCBDYWxs
TGlua0luZm9NYXAmID0gQ2FsbExpbmtJbmZvTWFwKCkpOwotICAgIHZvaWQgZHVtcEJ5dGVjb2Rl
KFByaW50U3RyZWFtJiBvdXQsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBTdHViSW5m
b01hcCYgPSBTdHViSW5mb01hcCgpLCBjb25zdCBDYWxsTGlua0luZm9NYXAmID0gQ2FsbExpbmtJ
bmZvTWFwKCkpOworICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0
IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgSUNTdGF0
dXNNYXAmID0gSUNTdGF0dXNNYXAoKSk7CisgICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJpbnRTdHJl
YW0mIG91dCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IElDU3RhdHVzTWFwJiA9IElD
U3RhdHVzTWFwKCkpOwogCiAgICAgdm9pZCBkdW1wRXhjZXB0aW9uSGFuZGxlcnMoUHJpbnRTdHJl
YW0mKTsKICAgICB2b2lkIHByaW50U3RydWN0dXJlcyhQcmludFN0cmVhbSYsIGNvbnN0IEluc3Ry
dWN0aW9uKik7CkBAIC0yMzcsMTQgKzIzNiw4IEBAIHB1YmxpYzoKIAogICAgIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+IGJ5dGVjb2RlT2Zmc2V0RnJvbUNhbGxTaXRlSW5kZXgoQ2FsbFNpdGVJbmRl
eCk7CiAKLSAgICB2b2lkIGdldFN0dWJJbmZvTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYs
IFN0dWJJbmZvTWFwJiByZXN1bHQpOwotICAgIHZvaWQgZ2V0U3R1YkluZm9NYXAoU3R1YkluZm9N
YXAmIHJlc3VsdCk7Ci0gICAgCi0gICAgdm9pZCBnZXRDYWxsTGlua0luZm9NYXAoY29uc3QgQ29u
Y3VycmVudEpTTG9ja2VyJiwgQ2FsbExpbmtJbmZvTWFwJiByZXN1bHQpOwotICAgIHZvaWQgZ2V0
Q2FsbExpbmtJbmZvTWFwKENhbGxMaW5rSW5mb01hcCYgcmVzdWx0KTsKLQotICAgIHZvaWQgZ2V0
QnlWYWxJbmZvTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5VmFsSW5mb01hcCYgcmVz
dWx0KTsKLSAgICB2b2lkIGdldEJ5VmFsSW5mb01hcChCeVZhbEluZm9NYXAmIHJlc3VsdCk7Cisg
ICAgdm9pZCBnZXRJQ1N0YXR1c01hcChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBJQ1N0YXR1
c01hcCYgcmVzdWx0KTsKKyAgICB2b2lkIGdldElDU3RhdHVzTWFwKElDU3RhdHVzTWFwJiByZXN1
bHQpOwogICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgSklUQWRkSUMqIGFkZEpJVEFkZElDKEFy
aXRoUHJvZmlsZSosIEluc3RydWN0aW9uKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00Niw3ICs0Niw3IEBAIHVuc2lnbmVkIENvZGVPcmlnaW46OmlubGluZURlcHRoKCkgY29uc3QK
ICAgICByZXR1cm4gaW5saW5lRGVwdGhGb3JDYWxsRnJhbWUoaW5saW5lQ2FsbEZyYW1lKTsKIH0K
IAotYm9vbCBDb2RlT3JpZ2luOjppc0FwcHJveGltYXRlbHlFcXVhbFRvKGNvbnN0IENvZGVPcmln
aW4mIG90aGVyKSBjb25zdAorYm9vbCBDb2RlT3JpZ2luOjppc0FwcHJveGltYXRlbHlFcXVhbFRv
KGNvbnN0IENvZGVPcmlnaW4mIG90aGVyLCBJbmxpbmVDYWxsRnJhbWUqIHRlcm1pbmFsKSBjb25z
dAogewogICAgIENvZGVPcmlnaW4gYSA9ICp0aGlzOwogICAgIENvZGVPcmlnaW4gYiA9IG90aGVy
OwpAQCAtNjgsMTAgKzY4LDEyIEBAIGJvb2wgQ29kZU9yaWdpbjo6aXNBcHByb3hpbWF0ZWx5RXF1
YWxUbygKICAgICAgICAgaWYgKGEuYnl0ZWNvZGVJbmRleCAhPSBiLmJ5dGVjb2RlSW5kZXgpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgICAgICBpZiAoKCEhYS5pbmxp
bmVDYWxsRnJhbWUpICE9ICghIWIuaW5saW5lQ2FsbEZyYW1lKSkKKyAgICAgICAgYm9vbCBhSGFz
SW5saW5lQ2FsbEZyYW1lID0gISFhLmlubGluZUNhbGxGcmFtZSAmJiBhLmlubGluZUNhbGxGcmFt
ZSAhPSB0ZXJtaW5hbDsKKyAgICAgICAgYm9vbCBiSGFzSW5saW5lQ2FsbEZyYW1lID0gISFiLmlu
bGluZUNhbGxGcmFtZTsKKyAgICAgICAgaWYgKGFIYXNJbmxpbmVDYWxsRnJhbWUgIT0gYkhhc0lu
bGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAg
ICAgIGlmICghYS5pbmxpbmVDYWxsRnJhbWUpCisgICAgICAgIGlmICghYUhhc0lubGluZUNhbGxG
cmFtZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAKICAgICAgICAgaWYgKGEu
aW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay5nZXQoKSAhPSBiLmlubGluZUNhbGxG
cmFtZS0+YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkpCkBAIC04Miw3ICs4NCw3IEBAIGJvb2wgQ29k
ZU9yaWdpbjo6aXNBcHByb3hpbWF0ZWx5RXF1YWxUbygKICAgICB9CiB9CiAKLXVuc2lnbmVkIENv
ZGVPcmlnaW46OmFwcHJveGltYXRlSGFzaCgpIGNvbnN0Cit1bnNpZ25lZCBDb2RlT3JpZ2luOjph
cHByb3hpbWF0ZUhhc2goSW5saW5lQ2FsbEZyYW1lKiB0ZXJtaW5hbCkgY29uc3QKIHsKICAgICBp
ZiAoIWlzU2V0KCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtOTcsNiArOTksOSBAQCB1bnNpZ25l
ZCBDb2RlT3JpZ2luOjphcHByb3hpbWF0ZUhhc2goKSBjCiAgICAgICAgIGlmICghY29kZU9yaWdp
bi5pbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAK
KyAgICAgICAgaWYgKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lID09IHRlcm1pbmFsKQorICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgCiAgICAgICAgIHJlc3VsdCArPSBXVEY6
OlB0ckhhc2g8SlNDZWxsKj46Omhhc2goY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmJhc2Vs
aW5lQ29kZUJsb2NrLmdldCgpKTsKICAgICAgICAgCiAgICAgICAgIGNvZGVPcmlnaW4gPSBjb2Rl
T3JpZ2luLmlubGluZUNhbGxGcmFtZS0+ZGlyZWN0Q2FsbGVyOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCShyZXZpc2lvbiAyMzI0NDEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb2RlQmxvY2tI
YXNoLmgiCisjaW5jbHVkZSAiRXhpdGluZ0lubGluZUtpbmQuaCIKICNpbmNsdWRlIDxsaW1pdHMu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5o
PgpAQCAtODgsMTUgKzg5LDIwIEBAIHN0cnVjdCBDb2RlT3JpZ2luIHsKICAgICAKICAgICBzdGF0
aWMgdW5zaWduZWQgaW5saW5lRGVwdGhGb3JDYWxsRnJhbWUoSW5saW5lQ2FsbEZyYW1lKik7CiAg
ICAgCisgICAgRXhpdGluZ0lubGluZUtpbmQgZXhpdGluZ0lubGluZUtpbmQoKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIGlubGluZUNhbGxGcmFtZSA/IEV4aXRGcm9tSW5saW5lZCA6IEV4
aXRGcm9tTm90SW5saW5lZDsKKyAgICB9CisgICAgCiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0
OwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2RlT3JpZ2luJiBvdGhlcikgY29uc3Q7CiAg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvZGVPcmlnaW4mIG90aGVyKSBjb25zdCB7IHJldHVy
biAhKCp0aGlzID09IG90aGVyKTsgfQogICAgIAogICAgIC8vIFRoaXMgY2hlY2tzIGlmIHRoZSB0
d28gY29kZSBvcmlnaW5zIGNvcnJlc3BvbmQgdG8gdGhlIHNhbWUgc3RhY2sgdHJhY2Ugc25pcHBl
dHMsCiAgICAgLy8gYnV0IGlnbm9yZSB3aGV0aGVyIHRoZSBJbmxpbmVDYWxsRnJhbWUncyBhcmUg
aWRlbnRpY2FsLgotICAgIGJvb2wgaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhjb25zdCBDb2RlT3Jp
Z2luJiBvdGhlcikgY29uc3Q7CisgICAgYm9vbCBpc0FwcHJveGltYXRlbHlFcXVhbFRvKGNvbnN0
IENvZGVPcmlnaW4mIG90aGVyLCBJbmxpbmVDYWxsRnJhbWUqIHRlcm1pbmFsID0gbnVsbHB0cikg
Y29uc3Q7CiAgICAgCi0gICAgdW5zaWduZWQgYXBwcm94aW1hdGVIYXNoKCkgY29uc3Q7CisgICAg
dW5zaWduZWQgYXBwcm94aW1hdGVIYXNoKElubGluZUNhbGxGcmFtZSogdGVybWluYWwgPSBudWxs
cHRyKSBjb25zdDsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlvbj4KICAgICB2b2lk
IHdhbGtVcElubGluZVN0YWNrKGNvbnN0IEZ1bmN0aW9uJik7CkBAIC0xMDYsNyArMTEyLDcgQEAg
c3RydWN0IENvZGVPcmlnaW4gewogICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZHVt
cChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVh
bSYsIER1bXBDb250ZXh0KikgY29uc3Q7Ci0KKyAgICAKIHByaXZhdGU6CiAgICAgc3RhdGljIElu
bGluZUNhbGxGcmFtZSogZGVsZXRlZE1hcmtlcigpCiAgICAgewpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCShyZXZpc2lvbiAy
MzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKIAogdm9pZCBGcmVxdWVudEV4aXRTaXRlOjpkdW1wKFByaW50U3RyZWFtJiBv
dXQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KCJiYyMiLCBtX2J5dGVjb2RlT2Zmc2V0LCAiOiAi
LCBtX2tpbmQsICIvIiwgbV9qaXRUeXBlKTsKKyAgICBvdXQucHJpbnQoImJjIyIsIG1fYnl0ZWNv
ZGVPZmZzZXQsICI6ICIsIG1fa2luZCwgIi8iLCBtX2ppdFR5cGUsICIvIiwgbV9pbmxpbmVLaW5k
KTsKIH0KIAogRXhpdFByb2ZpbGU6OkV4aXRQcm9maWxlKCkgeyB9CkBAIC00Myw4ICs0MywxMCBA
QCBFeGl0UHJvZmlsZTo6fkV4aXRQcm9maWxlKCkgeyB9CiAKIGJvb2wgRXhpdFByb2ZpbGU6OmFk
ZChDb2RlQmxvY2sqIG93bmVyLCBjb25zdCBGcmVxdWVudEV4aXRTaXRlJiBzaXRlKQogeworICAg
IFJFTEVBU0VfQVNTRVJUKHNpdGUuaml0VHlwZSgpICE9IEV4aXRGcm9tQW55dGhpbmcpOworICAg
IFJFTEVBU0VfQVNTRVJUKHNpdGUuaW5saW5lS2luZCgpICE9IEV4aXRGcm9tQW55SW5saW5lS2lu
ZCk7CisKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG93bmVyLT51bmxpbmtlZENvZGVC
bG9jaygpLT5tX2xvY2spOwotICAgIEFTU0VSVChzaXRlLmppdFR5cGUoKSAhPSBFeGl0RnJvbUFu
eXRoaW5nKTsKIAogICAgIENPREVCTE9DS19MT0dfRVZFTlQob3duZXIsICJmcmVxdWVudEV4aXQi
LCAoc2l0ZSkpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RG
R0V4aXRQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0RGR0V4aXRQcm9maWxlLmgJKHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE0LCAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ29uY3VycmVudEpTTG9jay5oIgogI2luY2x1
ZGUgIkV4aXRLaW5kLmgiCisjaW5jbHVkZSAiRXhpdGluZ0lubGluZUtpbmQuaCIKICNpbmNsdWRl
ICJFeGl0aW5nSklUVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgpAQCAtNDEsNiArNDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9ieXRl
Y29kZU9mZnNldCgwKSAvLyAwID0gZW1wdHkgdmFsdWUKICAgICAgICAgLCBtX2tpbmQoRXhpdEtp
bmRVbnNldCkKICAgICAgICAgLCBtX2ppdFR5cGUoRXhpdEZyb21Bbnl0aGluZykKKyAgICAgICAg
LCBtX2lubGluZUtpbmQoRXhpdEZyb21BbnlJbmxpbmVLaW5kKQogICAgIHsKICAgICB9CiAgICAg
CkBAIC00OCwxMyArNTAsMTUgQEAgcHVibGljOgogICAgICAgICA6IG1fYnl0ZWNvZGVPZmZzZXQo
MSkgLy8gMSA9IGRlbGV0ZWQgdmFsdWUKICAgICAgICAgLCBtX2tpbmQoRXhpdEtpbmRVbnNldCkK
ICAgICAgICAgLCBtX2ppdFR5cGUoRXhpdEZyb21Bbnl0aGluZykKKyAgICAgICAgLCBtX2lubGlu
ZUtpbmQoRXhpdEZyb21BbnlJbmxpbmVLaW5kKQogICAgIHsKICAgICB9CiAgICAgCi0gICAgZXhw
bGljaXQgRnJlcXVlbnRFeGl0U2l0ZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRXhpdEtpbmQg
a2luZCwgRXhpdGluZ0pJVFR5cGUgaml0VHlwZSA9IEV4aXRGcm9tQW55dGhpbmcpCisgICAgZXhw
bGljaXQgRnJlcXVlbnRFeGl0U2l0ZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRXhpdEtpbmQg
a2luZCwgRXhpdGluZ0pJVFR5cGUgaml0VHlwZSA9IEV4aXRGcm9tQW55dGhpbmcsIEV4aXRpbmdJ
bmxpbmVLaW5kIGlubGluZUtpbmQgPSBFeGl0RnJvbUFueUlubGluZUtpbmQpCiAgICAgICAgIDog
bV9ieXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkKICAgICAgICAgLCBtX2tpbmQoa2luZCkK
ICAgICAgICAgLCBtX2ppdFR5cGUoaml0VHlwZSkKKyAgICAgICAgLCBtX2lubGluZUtpbmQoaW5s
aW5lS2luZCkKICAgICB7CiAgICAgICAgIGlmIChtX2tpbmQgPT0gQXJndW1lbnRzRXNjYXBlZCkg
ewogICAgICAgICAgICAgLy8gQ291bnQgdGhpcyBvbmUgZ2xvYmFsbHkuIEl0IGRvZXNuJ3QgbWF0
dGVyIHdoZXJlIGluIHRoZSBjb2RlIGJsb2NrIHRoZSBhcmd1bWVudHMgZXhjYXBlZDsKQEAgLTY1
LDEwICs2OSwxMSBAQCBwdWJsaWM6CiAgICAgCiAgICAgLy8gVXNlIHRoaXMgY29uc3RydWN0b3Ig
aWYgeW91IHdpc2ggZm9yIHRoZSBleGl0IHNpdGUgdG8gYmUgY291bnRlZCBnbG9iYWxseSB3aXRo
aW4gaXRzCiAgICAgLy8gY29kZSBibG9jay4KLSAgICBleHBsaWNpdCBGcmVxdWVudEV4aXRTaXRl
KEV4aXRLaW5kIGtpbmQsIEV4aXRpbmdKSVRUeXBlIGppdFR5cGUgPSBFeGl0RnJvbUFueXRoaW5n
KQorICAgIGV4cGxpY2l0IEZyZXF1ZW50RXhpdFNpdGUoRXhpdEtpbmQga2luZCwgRXhpdGluZ0pJ
VFR5cGUgaml0VHlwZSA9IEV4aXRGcm9tQW55dGhpbmcsIEV4aXRpbmdJbmxpbmVLaW5kIGlubGlu
ZUtpbmQgPSBFeGl0RnJvbUFueUlubGluZUtpbmQpCiAgICAgICAgIDogbV9ieXRlY29kZU9mZnNl
dCgwKQogICAgICAgICAsIG1fa2luZChraW5kKQogICAgICAgICAsIG1faml0VHlwZShqaXRUeXBl
KQorICAgICAgICAsIG1faW5saW5lS2luZChpbmxpbmVLaW5kKQogICAgIHsKICAgICB9CiAgICAg
CkBAIC04MSw3ICs4Niw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX2J5dGVj
b2RlT2Zmc2V0ID09IG90aGVyLm1fYnl0ZWNvZGVPZmZzZXQKICAgICAgICAgICAgICYmIG1fa2lu
ZCA9PSBvdGhlci5tX2tpbmQKLSAgICAgICAgICAgICYmIG1faml0VHlwZSA9PSBvdGhlci5tX2pp
dFR5cGU7CisgICAgICAgICAgICAmJiBtX2ppdFR5cGUgPT0gb3RoZXIubV9qaXRUeXBlCisgICAg
ICAgICAgICAmJiBtX2lubGluZUtpbmQgPT0gb3RoZXIubV9pbmxpbmVLaW5kOwogICAgIH0KICAg
ICAKICAgICBib29sIHN1YnN1bWVzKGNvbnN0IEZyZXF1ZW50RXhpdFNpdGUmIG90aGVyKSBjb25z
dApAQCAtOTAsMTkgKzk2LDI0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgaWYgKG1fa2luZCAhPSBvdGhlci5tX2tpbmQpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIGlmIChtX2ppdFR5cGUgPT0gRXhpdEZyb21Bbnl0aGluZykKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICByZXR1cm4gbV9qaXRUeXBlID09IG90aGVyLm1f
aml0VHlwZTsKKyAgICAgICAgaWYgKG1faml0VHlwZSAhPSBFeGl0RnJvbUFueXRoaW5nCisgICAg
ICAgICAgICAmJiBtX2ppdFR5cGUgIT0gb3RoZXIubV9qaXRUeXBlKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICBpZiAobV9pbmxpbmVLaW5kICE9IEV4aXRGcm9tQW55SW5saW5l
S2luZAorICAgICAgICAgICAgJiYgbV9pbmxpbmVLaW5kICE9IG90aGVyLm1faW5saW5lS2luZCkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
ICAgIAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIFdU
Rjo6aW50SGFzaChtX2J5dGVjb2RlT2Zmc2V0KSArIG1fa2luZCArIHN0YXRpY19jYXN0PHN0ZDo6
dW5kZXJseWluZ190eXBlX3Q8RXhpdGluZ0pJVFR5cGU+PihtX2ppdFR5cGUpICogNzsKKyAgICAg
ICAgcmV0dXJuIFdURjo6aW50SGFzaChtX2J5dGVjb2RlT2Zmc2V0KSArIG1fa2luZCArIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihtX2ppdFR5cGUpICogNyArIHN0YXRpY19jYXN0PHVuc2lnbmVkPiht
X2lubGluZUtpbmQpICogMTE7CiAgICAgfQogICAgIAogICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0KCkgY29uc3QgeyByZXR1cm4gbV9ieXRlY29kZU9mZnNldDsgfQogICAgIEV4aXRLaW5kIGtp
bmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KICAgICBFeGl0aW5nSklUVHlwZSBqaXRUeXBl
KCkgY29uc3QgeyByZXR1cm4gbV9qaXRUeXBlOyB9CisgICAgRXhpdGluZ0lubGluZUtpbmQgaW5s
aW5lS2luZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lS2luZDsgfQogICAgIAogICAgIEZyZXF1
ZW50RXhpdFNpdGUgd2l0aEpJVFR5cGUoRXhpdGluZ0pJVFR5cGUgaml0VHlwZSkgY29uc3QKICAg
ICB7CkBAIC0xMTEsNiArMTIyLDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAKKyAgICBGcmVxdWVudEV4aXRTaXRlIHdpdGhJbmxpbmVLaW5kKEV4aXRpbmdJbmxp
bmVLaW5kIGlubGluZUtpbmQpIGNvbnN0CisgICAgeworICAgICAgICBGcmVxdWVudEV4aXRTaXRl
IHJlc3VsdCA9ICp0aGlzOworICAgICAgICByZXN1bHQubV9pbmxpbmVLaW5kID0gaW5saW5lS2lu
ZDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBib29sIGlzSGFzaFRhYmxl
RGVsZXRlZFZhbHVlKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2tpbmQgPT0gRXhp
dEtpbmRVbnNldCAmJiBtX2J5dGVjb2RlT2Zmc2V0OwpAQCAtMTIyLDYgKzE0MCw3IEBAIHByaXZh
dGU6CiAgICAgdW5zaWduZWQgbV9ieXRlY29kZU9mZnNldDsKICAgICBFeGl0S2luZCBtX2tpbmQ7
CiAgICAgRXhpdGluZ0pJVFR5cGUgbV9qaXRUeXBlOworICAgIEV4aXRpbmdJbmxpbmVLaW5kIG1f
aW5saW5lS2luZDsKIH07CiAKIHN0cnVjdCBGcmVxdWVudEV4aXRTaXRlSGFzaCB7CkBAIC0xOTIs
MTAgKzIxMSwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNFeGl0U2l0ZShjb25zdCBGcmVxdWVu
dEV4aXRTaXRlJiBzaXRlKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKHNpdGUuaml0VHlwZSgp
ID09IEV4aXRGcm9tQW55dGhpbmcpIHsKLSAgICAgICAgICAgIHJldHVybiBoYXNFeGl0U2l0ZShz
aXRlLndpdGhKSVRUeXBlKEV4aXRGcm9tREZHKSkKLSAgICAgICAgICAgICAgICB8fCBoYXNFeGl0
U2l0ZShzaXRlLndpdGhKSVRUeXBlKEV4aXRGcm9tRlRMKSk7CisgICAgICAgICAgICByZXR1cm4g
aGFzRXhpdFNpdGVXaXRoU3BlY2lmaWNKSVRUeXBlKHNpdGUud2l0aEpJVFR5cGUoRXhpdEZyb21E
RkcpKQorICAgICAgICAgICAgICAgIHx8IGhhc0V4aXRTaXRlV2l0aFNwZWNpZmljSklUVHlwZShz
aXRlLndpdGhKSVRUeXBlKEV4aXRGcm9tRlRMKSk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IG1fZnJlcXVlbnRFeGl0U2l0ZXMuZmluZChzaXRlKSAhPSBtX2ZyZXF1ZW50RXhpdFNpdGVzLmVu
ZCgpOworICAgICAgICByZXR1cm4gaGFzRXhpdFNpdGVXaXRoU3BlY2lmaWNKSVRUeXBlKHNpdGUp
OwogICAgIH0KICAgICAKICAgICBib29sIGhhc0V4aXRTaXRlKEV4aXRLaW5kIGtpbmQpIGNvbnN0
CkBAIC0yMDgsNiArMjI3LDIwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGhhc0V4aXRTaXRl
KEZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwga2luZCkpOwogICAgIH0KIHByaXZhdGU6
CisgICAgYm9vbCBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0pJVFR5cGUoY29uc3QgRnJlcXVlbnRF
eGl0U2l0ZSYgc2l0ZSkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChzaXRlLmlubGluZUtpbmQo
KSA9PSBFeGl0RnJvbUFueUlubGluZUtpbmQpIHsKKyAgICAgICAgICAgIHJldHVybiBoYXNFeGl0
U2l0ZVdpdGhTcGVjaWZpY0lubGluZUtpbmQoc2l0ZS53aXRoSW5saW5lS2luZChFeGl0RnJvbU5v
dElubGluZWQpKQorICAgICAgICAgICAgICAgIHx8IGhhc0V4aXRTaXRlV2l0aFNwZWNpZmljSW5s
aW5lS2luZChzaXRlLndpdGhJbmxpbmVLaW5kKEV4aXRGcm9tSW5saW5lZCkpOworICAgICAgICB9
CisgICAgICAgIHJldHVybiBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0lubGluZUtpbmQoc2l0ZSk7
CisgICAgfQorICAgIAorICAgIGJvb2wgaGFzRXhpdFNpdGVXaXRoU3BlY2lmaWNJbmxpbmVLaW5k
KGNvbnN0IEZyZXF1ZW50RXhpdFNpdGUmIHNpdGUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV9mcmVxdWVudEV4aXRTaXRlcy5maW5kKHNpdGUpICE9IG1fZnJlcXVlbnRFeGl0U2l0ZXMu
ZW5kKCk7CisgICAgfQorICAgIAogICAgIEhhc2hTZXQ8RnJlcXVlbnRFeGl0U2l0ZT4gbV9mcmVx
dWVudEV4aXRTaXRlczsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9FeGl0RmxhZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0V4aXRGbGFnLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRXhpdEZsYWcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkV4aXRGbGFnLmgiCisKKyNpbmNsdWRlIDx3dGYvQ29tbWFQcmlu
dGVyLmg+CisKK25hbWVzcGFjZSBKU0MgeworCit2b2lkIEV4aXRGbGFnOjpkdW1wKFByaW50U3Ry
ZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgaWYgKCFtX2JpdHMpIHsKKyAgICAgICAgb3V0LnByaW50
KCJmYWxzZSIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIENvbW1hUHJpbnRl
ciBjb21tYSgifCIpOworICAgIGlmIChpc1NldChFeGl0RnJvbU5vdElubGluZWQpKQorICAgICAg
ICBvdXQucHJpbnQoY29tbWEsICJub3RJbmxpbmVkIik7CisgICAgaWYgKGlzU2V0KEV4aXRGcm9t
SW5saW5lZCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgImlubGluZWQiKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9F
eGl0RmxhZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9F
eGl0RmxhZy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9FeGl0RmxhZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiRXhpdGluZ0lubGluZUtpbmQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV4
aXRGbGFnIHsKK3B1YmxpYzoKKyAgICBFeGl0RmxhZygpIHsgfQorICAgIAorICAgIEV4aXRGbGFn
KGJvb2wgdmFsdWUsIEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQpCisgICAgeworICAgICAg
ICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgc3dp
dGNoIChpbmxpbmVLaW5kKSB7CisgICAgICAgIGNhc2UgRXhpdEZyb21BbnlJbmxpbmVLaW5kOgor
ICAgICAgICAgICAgbV9iaXRzID0gdHJ1ZU5vdElubGluZWQgfCB0cnVlSW5saW5lZDsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEV4aXRGcm9tTm90SW5saW5lZDoKKyAgICAgICAg
ICAgIG1fYml0cyA9IHRydWVOb3RJbmxpbmVkOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRXhpdEZyb21JbmxpbmVkOgorICAgICAgICAgICAgbV9iaXRzID0gdHJ1ZUlubGluZWQ7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBFeGl0Rmxh
ZyBvcGVyYXRvcnwoY29uc3QgRXhpdEZsYWcmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAg
RXhpdEZsYWcgcmVzdWx0OworICAgICAgICByZXN1bHQubV9iaXRzID0gbV9iaXRzIHwgb3RoZXIu
bV9iaXRzOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICBFeGl0Rmxh
ZyYgb3BlcmF0b3J8PShjb25zdCBFeGl0RmxhZyYgb3RoZXIpCisgICAgeworICAgICAgICAqdGhp
cyA9ICp0aGlzIHwgb3RoZXI7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisgICAgCisg
ICAgRXhpdEZsYWcgb3BlcmF0b3ImKGNvbnN0IEV4aXRGbGFnJiBvdGhlcikgY29uc3QKKyAgICB7
CisgICAgICAgIEV4aXRGbGFnIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1fYml0cyA9IG1fYml0
cyAmIG90aGVyLm1fYml0czsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisg
ICAgRXhpdEZsYWcmIG9wZXJhdG9yJj0oY29uc3QgRXhpdEZsYWcmIG90aGVyKQorICAgIHsKKyAg
ICAgICAgKnRoaXMgPSAqdGhpcyAmIG90aGVyOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAg
fQorICAgIAorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuICEhbV9iaXRzOworICAgIH0KKyAgICAKKyAgICBib29sIGlzU2V0KEV4aXRpbmdJ
bmxpbmVLaW5kIGlubGluZUtpbmQpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISEoKnRo
aXMgJiBFeGl0RmxhZyh0cnVlLCBpbmxpbmVLaW5kKSk7CisgICAgfQorICAgIAorICAgIHZvaWQg
ZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICBzdGF0aWMgY29u
c3RleHByIHVpbnQ4X3QgdHJ1ZU5vdElubGluZWQgPSAxOworICAgIHN0YXRpYyBjb25zdGV4cHIg
dWludDhfdCB0cnVlSW5saW5lZCA9IDI7CisgICAgCisgICAgdWludDhfdCBtX2JpdHMgeyAwIH07
Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0V4aXRpbmdJbmxpbmVLaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuY3BwCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0aW5nSW5saW5lS2luZC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRXhp
dGluZ0lubGluZUtpbmQuaCIKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1l
c3BhY2UgV1RGIHsKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwordm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiBvdXQsIEV4aXRpbmdJbmxpbmVLaW5kIHR5cGUpCit7CisgICAgc3dpdGNo
ICh0eXBlKSB7CisgICAgY2FzZSBFeGl0RnJvbUFueUlubGluZUtpbmQ6CisgICAgICAgIG91dC5w
cmludCgiRnJvbUFueUlubGluZUtpbmQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRXhp
dEZyb21Ob3RJbmxpbmVkOgorICAgICAgICBvdXQucHJpbnQoIkZyb21Ob3RJbmxpbmVkIik7Cisg
ICAgICAgIHJldHVybjsKKyAgICBjYXNlIEV4aXRGcm9tSW5saW5lZDoKKyAgICAgICAgb3V0LnBy
aW50KCJGcm9tSW5saW5lZCIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQu
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGlu
Z0lubGluZUtpbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCituYW1l
c3BhY2UgSlNDIHsKKworZW51bSBFeGl0aW5nSW5saW5lS2luZCA6IHVpbnQ4X3QgeworICAgIEV4
aXRGcm9tQW55SW5saW5lS2luZCwKKyAgICBFeGl0RnJvbU5vdElubGluZWQsCisgICAgRXhpdEZy
b21JbmxpbmVkLAorfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBXVEYgewor
CitjbGFzcyBQcmludFN0cmVhbTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpT
Qzo6RXhpdGluZ0lubGluZUtpbmQpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJ
KHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRC
eUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTYgKzUxLDYgQEAgYm9vbCBHZXRC
eUlkU3RhdHVzOjphcHBlbmRWYXJpYW50KGNvbnN0IAogICAgIHJldHVybiBhcHBlbmRJQ1N0YXR1
c1ZhcmlhbnQobV92YXJpYW50cywgdmFyaWFudCk7CiB9CiAKLSNpZiBFTkFCTEUoREZHX0pJVCkK
LWJvb2wgR2V0QnlJZFN0YXR1czo6aGFzRXhpdFNpdGUoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2Nr
LCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQotewotICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxp
bmtlZENvZGVCbG9jayA9IHByb2ZpbGVkQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCk7Ci0gICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcih1bmxpbmtlZENvZGVCbG9jay0+bV9sb2NrKTsKLSAg
ICByZXR1cm4gdW5saW5rZWRDb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVx
dWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZENhY2hlKSkKLSAgICAgICAgfHwgdW5saW5r
ZWRDb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5
dGVjb2RlSW5kZXgsIEJhZENvbnN0YW50Q2FjaGUpKTsKLX0KLSNlbmRpZgotCiBHZXRCeUlkU3Rh
dHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJs
b2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogewog
ICAgIFZNJiB2bSA9ICpwcm9maWxlZEJsb2NrLT52bSgpOwpAQCAtMTA1LDcgKzk1LDcgQEAgR2V0
QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbQogICAgIH0KIH0KIAotR2V0QnlJ
ZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9j
aywgU3R1YkluZm9NYXAmIG1hcCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmlu
Z0ltcGwqIHVpZCkKK0dldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2Rl
QmxvY2sqIHByb2ZpbGVkQmxvY2ssIElDU3RhdHVzTWFwJiBtYXAsIHVuc2lnbmVkIGJ5dGVjb2Rl
SW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIEV4aXRGbGFnIGRpZEV4aXQsIENhbGxMaW5r
U3RhdHVzOjpFeGl0U2l0ZURhdGEgY2FsbEV4aXRTaXRlRGF0YSkKIHsKICAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKHByb2ZpbGVkQmxvY2stPm1fbG9jayk7CiAKQEAgLTExMywxMiArMTAz
LDExIEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKIAogI2lmIEVO
QUJMRShERkdfSklUKQogICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0
U2l0ZUZlZWRiYWNrKAotICAgICAgICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssIG1hcC5nZXQoQ29k
ZU9yaWdpbihieXRlY29kZUluZGV4KSksIHVpZCwKLSAgICAgICAgQ2FsbExpbmtTdGF0dXM6OmNv
bXB1dGVFeGl0U2l0ZURhdGEocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCkpOworICAgICAg
ICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssIG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4
KSkuc3R1YkluZm8sIHVpZCwKKyAgICAgICAgY2FsbEV4aXRTaXRlRGF0YSk7CiAgICAgCi0gICAg
aWYgKCFyZXN1bHQudGFrZXNTbG93UGF0aCgpCi0gICAgICAgICYmIGhhc0V4aXRTaXRlKHByb2Zp
bGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpKQotICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhy
ZXN1bHQubWFrZXNDYWxscygpID8gTWFrZXNDYWxscyA6IFRha2VzU2xvd1BhdGgsIHRydWUpOwor
ICAgIGlmIChkaWRFeGl0KQorICAgICAgICByZXR1cm4gcmVzdWx0LnNsb3dWZXJzaW9uKCk7CiAj
ZWxzZQogICAgIFVOVVNFRF9QQVJBTShtYXApOwogI2VuZGlmCkBAIC0xMzYsOCArMTI1LDggQEAg
R2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yUwogICAgICAgICBsb2NrZXIs
IHByb2ZpbGVkQmxvY2ssIHN0dWJJbmZvLCB1aWQsCiAgICAgICAgIENhbGxMaW5rU3RhdHVzOjpj
b21wdXRlRXhpdFNpdGVEYXRhKHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRl
eCkpOwogCi0gICAgaWYgKCFyZXN1bHQudGFrZXNTbG93UGF0aCgpICYmIEdldEJ5SWRTdGF0dXM6
Omhhc0V4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkpCi0g
ICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKHJlc3VsdC5tYWtlc0NhbGxzKCkgPyBHZXRCeUlk
U3RhdHVzOjpNYWtlc0NhbGxzIDogR2V0QnlJZFN0YXR1czo6VGFrZXNTbG93UGF0aCwgdHJ1ZSk7
CisgICAgaWYgKCFyZXN1bHQudGFrZXNTbG93UGF0aCgpICYmIGhhc0JhZENhY2hlRXhpdFNpdGUo
cHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KSkKKyAgICAgICAgcmV0dXJu
IHJlc3VsdC5zbG93VmVyc2lvbigpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5kaWYgLy8g
RU5BQkxFKERGR19KSVQpCkBAIC0zMTQsNDAgKzMwMywzNSBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5
SWRTdGF0dXM6OmNvbXB1dGVGb3JTCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogR2V0QnlJZFN0
YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAotICAgIENvZGVCbG9jayogcHJvZmlsZWRC
bG9jaywgQ29kZUJsb2NrKiBkZmdCbG9jaywgU3R1YkluZm9NYXAmIGJhc2VsaW5lTWFwLAotICAg
IFN0dWJJbmZvTWFwJiBkZmdNYXAsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgVW5pcXVlZFN0cmlu
Z0ltcGwqIHVpZCkKKyAgICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIElDU3RhdHVzTWFwJiBi
YXNlbGluZU1hcCwKKyAgICBJQ1N0YXR1c0NvbnRleHRTdGFjayYgaWNDb250ZXh0U3RhY2ssIENv
ZGVPcmlnaW4gY29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKLSNpZiBFTkFC
TEUoREZHX0pJVCkKLSAgICBpZiAoZGZnQmxvY2spIHsKLSAgICAgICAgQ2FsbExpbmtTdGF0dXM6
OkV4aXRTaXRlRGF0YSBleGl0U2l0ZURhdGE7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIENvbmN1
cnJlbnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAg
IGV4aXRTaXRlRGF0YSA9IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKAotICAg
ICAgICAgICAgICAgIHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7Ci0g
ICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIEdldEJ5SWRTdGF0dXMgcmVzdWx0OwotICAgICAg
ICB7Ci0gICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGRmZ0Jsb2NrLT5tX2xv
Y2spOwotICAgICAgICAgICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRT
aXRlRmVlZGJhY2soCi0gICAgICAgICAgICAgICAgbG9ja2VyLCBkZmdCbG9jaywgZGZnTWFwLmdl
dChjb2RlT3JpZ2luKSwgdWlkLCBleGl0U2l0ZURhdGEpOwotICAgICAgICB9Ci0KLSAgICAgICAg
aWYgKHJlc3VsdC50YWtlc1Nsb3dQYXRoKCkpCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgY2FsbEV4aXRTaXRlRGF0YSA9CisgICAg
ICAgIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKHByb2ZpbGVkQmxvY2ssIGNv
ZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7CisgICAgRXhpdEZsYWcgZGlkRXhpdCA9IGhhc0JhZENh
Y2hlRXhpdFNpdGUocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsKICAg
ICAKLSAgICAgICAgaWYgKGhhc0V4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0
ZWNvZGVJbmRleCkpCi0gICAgICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQ
YXRoLCB0cnVlKTsKKyAgICBmb3IgKElDU3RhdHVzQ29udGV4dCogY29udGV4dCA6IGljQ29udGV4
dFN0YWNrKSB7CisgICAgICAgIElDU3RhdHVzIHN0YXR1cyA9IGNvbnRleHQtPmdldChjb2RlT3Jp
Z2luKTsKICAgICAgICAgCi0gICAgICAgIGlmIChyZXN1bHQuaXNTZXQoKSkKKyAgICAgICAgYXV0
byB3aXRoRXhpdHMgPSBbJl0gKGNvbnN0IEdldEJ5SWRTdGF0dXMmIHJlc3VsdCkgLT4gR2V0QnlJ
ZFN0YXR1cyB7CisgICAgICAgICAgICBpZiAoZGlkRXhpdC5pc1NldChjb2RlT3JpZ2luLmV4aXRp
bmdJbmxpbmVLaW5kKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQuc2xvd1ZlcnNp
b24oKTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0oZGZnQmxvY2spOwotICAgIFVOVVNFRF9QQVJBTShkZmdNYXApOwotI2VuZGlmCisg
ICAgICAgIH07CiAKLSAgICByZXR1cm4gY29tcHV0ZUZvcihwcm9maWxlZEJsb2NrLCBiYXNlbGlu
ZU1hcCwgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCB1aWQpOworICAgICAgICBpZiAoc3RhdHVz
LnN0dWJJbmZvKSB7CisgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvbnRl
eHQtPm9wdGltaXplZENvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgIEdldEJ5SWRTdGF0
dXMgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCisg
ICAgICAgICAgICAgICAgbG9ja2VyLCBjb250ZXh0LT5vcHRpbWl6ZWRDb2RlQmxvY2ssIHN0YXR1
cy5zdHViSW5mbywgdWlkLCBjYWxsRXhpdFNpdGVEYXRhKTsKKyAgICAgICAgICAgIGlmIChyZXN1
bHQuaXNTZXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gd2l0aEV4aXRzKHJlc3VsdCk7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChzdGF0dXMuZ2V0U3RhdHVzKQorICAgICAg
ICAgICAgcmV0dXJuIHdpdGhFeGl0cygqc3RhdHVzLmdldFN0YXR1cyk7CisgICAgfQorICAgICAg
ICAKKyAgICByZXR1cm4gY29tcHV0ZUZvcihwcm9maWxlZEJsb2NrLCBiYXNlbGluZU1hcCwgY29k
ZU9yaWdpbi5ieXRlY29kZUluZGV4LCB1aWQsIGRpZEV4aXQsIGNhbGxFeGl0U2l0ZURhdGEpOwog
fQogCiBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoY29uc3QgU3RydWN0
dXJlU2V0JiBzZXQsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCkBAIC00MTQsNiArMzk4LDExIEBA
IGJvb2wgR2V0QnlJZFN0YXR1czo6bWFrZXNDYWxscygpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCitHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OnNsb3dWZXJzaW9uKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhtYWtlc0NhbGxzKCkgPyBNYWtlc0NhbGxzIDog
VGFrZXNTbG93UGF0aCwgd2FzU2VlbkluSklUKCkpOworfQorCiB2b2lkIEdldEJ5SWRTdGF0dXM6
OmZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCkKIHsKICAgICBpZiAobV9zdGF0ZSAhPSBT
aW1wbGUpCkBAIC00MjMsNiArNDEyLDI1IEBAIHZvaWQgR2V0QnlJZFN0YXR1czo6ZmlsdGVyKGNv
bnN0IFN0cnVjdHUKICAgICAgICAgbV9zdGF0ZSA9IE5vSW5mb3JtYXRpb247CiB9CiAKK3ZvaWQg
R2V0QnlJZFN0YXR1czo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAg
Zm9yIChHZXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IG1fdmFyaWFudHMpCisgICAgICAgIHZhcmlh
bnQubWFya0lmQ2hlYXAodmlzaXRvcik7Cit9CisKK2Jvb2wgR2V0QnlJZFN0YXR1czo6ZmluYWxp
emUoKQoreworICAgIGZvciAoR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKSB7
CisgICAgICAgIGlmICghdmFyaWFudC5maW5hbGl6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKyAgICBpZiAobV9tb2R1bGVOYW1lc3BhY2VPYmplY3QgJiYgIUhlYXA6Omlz
TWFya2VkKG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmIChtX21vZHVsZUVudmlyb25tZW50ICYmICFIZWFwOjppc01hcmtlZChtX21vZHVsZUVu
dmlyb25tZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQor
CiB2b2lkIEdldEJ5SWRTdGF0dXM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAg
ICBvdXQucHJpbnQoIigiKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9H
ZXRCeUlkU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0dldEJ5SWRTdGF0dXMuaAkocmV2aXNpb24gMjMyNDQxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyAr
MjgsOSBAQAogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCiAjaW5jbHVkZSAiQ29kZU9yaWdp
bi5oIgogI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKKyNpbmNsdWRlICJFeGl0RmxhZy5o
IgogI2luY2x1ZGUgIkdldEJ5SWRWYXJpYW50LmgiCisjaW5jbHVkZSAiSUNTdGF0dXNNYXAuaCIK
ICNpbmNsdWRlICJTY29wZU9mZnNldC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQwLDggKzQy
LDYgQEAgY2xhc3MgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q7CiBjbGFzcyBNb2R1bGVOYW1lc3Bh
Y2VBY2Nlc3NDYXNlOwogY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CiAKLXR5cGVkZWYgSGFzaE1h
cDxDb2RlT3JpZ2luLCBTdHJ1Y3R1cmVTdHViSW5mbyosIENvZGVPcmlnaW5BcHByb3hpbWF0ZUhh
c2g+IFN0dWJJbmZvTWFwOwotCiBjbGFzcyBHZXRCeUlkU3RhdHVzIHsKIHB1YmxpYzoKICAgICBl
bnVtIFN0YXRlIHsKQEAgLTgxLDEwICs4MSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIG1fdmFyaWFu
dHMuYXBwZW5kKHZhcmlhbnQpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgR2V0QnlJZFN0YXR1
cyBjb21wdXRlRm9yKENvZGVCbG9jayosIFN0dWJJbmZvTWFwJiwgdW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7CisgICAgc3RhdGljIEdldEJ5SWRTdGF0dXMg
Y29tcHV0ZUZvcihDb2RlQmxvY2sqLCBJQ1N0YXR1c01hcCYsIHVuc2lnbmVkIGJ5dGVjb2RlSW5k
ZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIEV4aXRGbGFnLCBDYWxsTGlua1N0YXR1czo6RXhp
dFNpdGVEYXRhKTsKICAgICBzdGF0aWMgR2V0QnlJZFN0YXR1cyBjb21wdXRlRm9yKGNvbnN0IFN0
cnVjdHVyZVNldCYsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogICAgIAotICAgIHN0YXRpYyBH
ZXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBDb2RlQmxv
Y2sqIGRmZ0Jsb2NrLCBTdHViSW5mb01hcCYgYmFzZWxpbmVNYXAsIFN0dWJJbmZvTWFwJiBkZmdN
YXAsIENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOworICAgIHN0YXRpYyBHZXRC
eUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJQ1N0YXR1c01h
cCYgYmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4dFN0YWNrJiBkZmdDb250ZXh0U3RhY2ssIENv
ZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogCiAjaWYgRU5BQkxFKERGR19KSVQp
CiAgICAgc3RhdGljIEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZvclN0dWJJbmZvKGNvbnN0IENvbmN1
cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgU3RydWN0dXJlU3R1Yklu
Zm8qLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKQEAgLTEwNiw2ICsxMDYs
OCBAQCBwdWJsaWM6CiAgICAgYm9vbCB0YWtlc1Nsb3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9z
dGF0ZSA9PSBUYWtlc1Nsb3dQYXRoIHx8IG1fc3RhdGUgPT0gTWFrZXNDYWxscyB8fCBtX3N0YXRl
ID09IEN1c3RvbSB8fCBtX3N0YXRlID09IE1vZHVsZU5hbWVzcGFjZTsgfQogICAgIGJvb2wgbWFr
ZXNDYWxscygpIGNvbnN0OwogICAgIAorICAgIEdldEJ5SWRTdGF0dXMgc2xvd1ZlcnNpb24oKSBj
b25zdDsKKyAgICAKICAgICBib29sIHdhc1NlZW5JbkpJVCgpIGNvbnN0IHsgcmV0dXJuIG1fd2Fz
U2VlbkluSklUOyB9CiAgICAgCiAgICAgLy8gQXR0ZW1wdHMgdG8gcmVkdWNlIHRoZSBzZXQgb2Yg
dmFyaWFudHMgdG8gZml0IHRoZSBnaXZlbiBzdHJ1Y3R1cmUgc2V0LiBUaGlzIG1heSBiZSBhcHBy
b3hpbWF0ZS4KQEAgLTExNSwxMiArMTE3LDEyIEBAIHB1YmxpYzoKICAgICBKU01vZHVsZUVudmly
b25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlRW52aXJv
bm1lbnQ7IH0KICAgICBTY29wZU9mZnNldCBzY29wZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2NvcGVPZmZzZXQ7IH0KICAgICAKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7
CisgICAgYm9vbCBmaW5hbGl6ZSgpOyAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGlzIGdldHMgdG8gbGl2
ZS4KKyAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKIHByaXZh
dGU6Ci0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAgc3RhdGljIGJvb2wgaGFzRXhpdFNpdGUoQ29k
ZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7Ci0jZW5kaWYKICNpZiBFTkFCTEUoSklU
KQogICAgIEdldEJ5SWRTdGF0dXMoY29uc3QgTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZSYpOwog
ICAgIHN0YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0
ZUZlZWRiYWNrKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRW
YXJpYW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlJZFZhcmlhbnQuY3BwCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUs
NiArMTM1LDI0IEBAIGJvb2wgR2V0QnlJZFZhcmlhbnQ6OmF0dGVtcHRUb01lcmdlKGNvbnMKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBHZXRCeUlkVmFyaWFudDo6bWFya0lmQ2hlYXAoU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgbV9zdHJ1Y3R1cmVTZXQubWFya0lmQ2hlYXAodmlz
aXRvcik7Cit9CisKK2Jvb2wgR2V0QnlJZFZhcmlhbnQ6OmZpbmFsaXplKCkKK3sKKyAgICBpZiAo
IW1fc3RydWN0dXJlU2V0LmlzU3RpbGxBbGl2ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFtX2NvbmRpdGlvblNldC5hcmVTdGlsbExpdmUoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmIChtX2NhbGxMaW5rU3RhdHVzICYmICFtX2NhbGxMaW5rU3RhdHVzLT5maW5h
bGl6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1faW50cmluc2ljRnVuY3Rp
b24gJiYgIUhlYXA6OmlzTWFya2VkKG1faW50cmluc2ljRnVuY3Rpb24pKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgR2V0QnlJZFZhcmlhbnQ6OmR1
bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBkdW1wSW5Db250ZXh0KG91dCwgMCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlh
bnQuaAkocmV2aXNpb24gMjMyNDQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0dldEJ5SWRWYXJpYW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDYgKzczLDkgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBhdHRlbXB0VG9NZXJnZShjb25zdCBHZXRCeUlkVmFyaWFudCYgb3RoZXIp
OwogICAgIAorICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKTsKKyAgICBib29sIGZp
bmFsaXplKCk7CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAg
dm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25zdDsKICAg
ICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFw
LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNT
dGF0dXNNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCisKKyNpbmNsdWRlICJJbmxpbmVDYWxsRnJhbWUuaCIK
KyNpbmNsdWRlICJUZXJtaW5hdGVkQ29kZU9yaWdpbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
SUNTdGF0dXMgSUNTdGF0dXNDb250ZXh0OjpnZXQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luKSBjb25z
dAoreworICAgIHJldHVybiBtYXAuZ2V0PFRlcm1pbmF0ZWRDb2RlT3JpZ2luSGFzaFRyYW5zbGF0
b3I+KAorICAgICAgICBUZXJtaW5hdGVkQ29kZU9yaWdpbihjb2RlT3JpZ2luLCBpbmxpbmVDYWxs
RnJhbWUpKTsKK30KKworYm9vbCBJQ1N0YXR1c0NvbnRleHQ6OmlzSW5saW5lZChDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4pIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZy
YW1lICYmIGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lICE9IGlubGluZUNhbGxGcmFtZTsKK30K
KworRXhpdGluZ0lubGluZUtpbmQgSUNTdGF0dXNDb250ZXh0OjppbmxpbmVLaW5kKENvZGVPcmln
aW4gY29kZU9yaWdpbikgY29uc3QKK3sKKyAgICByZXR1cm4gaXNJbmxpbmVkKGNvZGVPcmlnaW4p
ID8gRXhpdEZyb21JbmxpbmVkIDogRXhpdEZyb21Ob3RJbmxpbmVkOworfQorCit9IC8vIG5hbWVz
cGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVz
TWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3Rh
dHVzTWFwLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0lDU3RhdHVzTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIkNvZGVPcmlnaW4uaCIKKyNpbmNsdWRlICJFeGl0aW5nSW5saW5lS2luZC5oIgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBDYWxsTGlu
a0luZm87CitjbGFzcyBDYWxsTGlua1N0YXR1czsKK2NsYXNzIENvZGVCbG9jazsKK2NsYXNzIEdl
dEJ5SWRTdGF0dXM7CitjbGFzcyBJbkJ5SWRTdGF0dXM7CitjbGFzcyBQdXRCeUlkU3RhdHVzOwor
Y2xhc3MgU3RydWN0dXJlU3R1YkluZm87CitzdHJ1Y3QgQnlWYWxJbmZvOworCitzdHJ1Y3QgSUNT
dGF0dXMgeworICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyB7IG51bGxwdHIgfTsKKyAg
ICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyB7IG51bGxwdHIgfTsKKyAgICBCeVZhbEluZm8q
IGJ5VmFsSW5mbyB7IG51bGxwdHIgfTsKKyAgICBDYWxsTGlua1N0YXR1cyogY2FsbFN0YXR1cyB7
IG51bGxwdHIgfTsKKyAgICBHZXRCeUlkU3RhdHVzKiBnZXRTdGF0dXMgeyBudWxscHRyIH07Cisg
ICAgSW5CeUlkU3RhdHVzKiBpblN0YXR1cyB7IG51bGxwdHIgfTsKKyAgICBQdXRCeUlkU3RhdHVz
KiBwdXRTdGF0dXMgeyBudWxscHRyIH07Cit9OworCit0eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdp
biwgSUNTdGF0dXMsIENvZGVPcmlnaW5BcHByb3hpbWF0ZUhhc2g+IElDU3RhdHVzTWFwOworCitz
dHJ1Y3QgSUNTdGF0dXNDb250ZXh0IHsKKyAgICBJQ1N0YXR1cyBnZXQoQ29kZU9yaWdpbikgY29u
c3Q7CisgICAgYm9vbCBpc0lubGluZWQoQ29kZU9yaWdpbikgY29uc3Q7CisgICAgRXhpdGluZ0lu
bGluZUtpbmQgaW5saW5lS2luZChDb2RlT3JpZ2luKSBjb25zdDsKKyAgICAKKyAgICBJbmxpbmVD
YWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSB7IG51bGxwdHIgfTsKKyAgICBDb2RlQmxvY2sqIG9w
dGltaXplZENvZGVCbG9jayB7IG51bGxwdHIgfTsKKyAgICBJQ1N0YXR1c01hcCBtYXA7Cit9Owor
Cit0eXBlZGVmIFZlY3RvcjxJQ1N0YXR1c0NvbnRleHQqLCA4PiBJQ1N0YXR1c0NvbnRleHRTdGFj
azsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JQ1N0YXR1c1V0aWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNVdGlscy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzVXRpbHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklDU3RhdHVzVXRpbHMuaCIK
KworI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkV4aXRGbGFnLmgiCisjaW5jbHVk
ZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0V4aXRGbGFnIGhh
c0JhZENhY2hlRXhpdFNpdGUoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRl
Y29kZUluZGV4KQoreworI2lmIEVOQUJMRShERkdfSklUKQorICAgIFVubGlua2VkQ29kZUJsb2Nr
KiB1bmxpbmtlZENvZGVCbG9jayA9IHByb2ZpbGVkQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCk7
CisgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcih1bmxpbmtlZENvZGVCbG9jay0+bV9sb2Nr
KTsKKyAgICBhdXRvIGV4aXRGbGFnID0gWyZdIChFeGl0S2luZCBleGl0S2luZCkgLT4gRXhpdEZs
YWcgeworICAgICAgICBhdXRvIHdpdGhJbmxpbmVkID0gWyZdIChFeGl0aW5nSW5saW5lS2luZCBp
bmxpbmVLaW5kKSAtPiBFeGl0RmxhZyB7CisgICAgICAgICAgICByZXR1cm4gRXhpdEZsYWcodW5s
aW5rZWRDb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRl
KGJ5dGVjb2RlSW5kZXgsIGV4aXRLaW5kLCBFeGl0RnJvbUFueXRoaW5nLCBpbmxpbmVLaW5kKSks
IGlubGluZUtpbmQpOworICAgICAgICB9OworICAgICAgICByZXR1cm4gd2l0aElubGluZWQoRXhp
dEZyb21Ob3RJbmxpbmVkKSB8IHdpdGhJbmxpbmVkKEV4aXRGcm9tSW5saW5lZCk7CisgICAgfTsK
KyAgICByZXR1cm4gZXhpdEZsYWcoQmFkQ2FjaGUpIHwgZXhpdEZsYWcoQmFkQ29uc3RhbnRDYWNo
ZSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKKyAgICBVTlVTRURf
UEFSQU0oYnl0ZWNvZGVJbmRleCk7CisgICAgcmV0dXJuIEV4aXRGbGFnKCk7CisjZW5kaWYKK30K
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JQ1N0YXR1c1V0aWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0lDU3RhdHVzVXRpbHMuaAkocmV2aXNpb24gMjMyNDQxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzVXRpbHMuaAkod29ya2luZyBjb3B5KQpAQCAt
MjUsNiArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkV4aXRGbGFnLmgiCisK
IG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWYXJpYW50VmVjdG9yVHlwZSwg
dHlwZW5hbWUgVmFyaWFudFR5cGU+CkBAIC01OSw1ICs2MSw3IEBAIHZvaWQgZmlsdGVySUNTdGF0
dXNWYXJpYW50cyhWYXJpYW50VmVjdG8KICAgICAgICAgfSk7CiB9CiAKK0V4aXRGbGFnIGhhc0Jh
ZENhY2hlRXhpdFNpdGUoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29k
ZUluZGV4KTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JbkJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAyMzI0NDEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkU3RhdHVzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggWXVzdWtl
IFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQxLDE2ICs0MiwxNiBAQCBib29sIEluQnlJZFN0YXR1czo6YXBwZW5kVmFyaWFu
dChjb25zdCBJCiAgICAgcmV0dXJuIGFwcGVuZElDU3RhdHVzVmFyaWFudChtX3ZhcmlhbnRzLCB2
YXJpYW50KTsKIH0KIAotSW5CeUlkU3RhdHVzIEluQnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2Rl
QmxvY2sqIHByb2ZpbGVkQmxvY2ssIFN0dWJJbmZvTWFwJiBtYXAsIHVuc2lnbmVkIGJ5dGVjb2Rl
SW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitJbkJ5SWRTdGF0dXMgSW5CeUlkU3RhdHVz
Ojpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgSUNTdGF0dXNNYXAmIG1hcCwg
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgRXhpdEZsYWcg
ZGlkRXhpdCkKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHByb2ZpbGVkQmxvY2st
Pm1fbG9jayk7CiAKICAgICBJbkJ5SWRTdGF0dXMgcmVzdWx0OwogCiAjaWYgRU5BQkxFKERGR19K
SVQpCi0gICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJh
Y2sobG9ja2VyLCBtYXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkpLCB1aWQpOworICAg
IHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKGxvY2tl
ciwgbWFwLmdldChDb2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgpKS5zdHViSW5mbywgdWlkKTsKIAot
ICAgIGlmICghcmVzdWx0LnRha2VzU2xvd1BhdGgoKSAmJiBoYXNFeGl0U2l0ZShwcm9maWxlZEJs
b2NrLCBieXRlY29kZUluZGV4KSkKKyAgICBpZiAoIXJlc3VsdC50YWtlc1Nsb3dQYXRoKCkgJiYg
ZGlkRXhpdCkKICAgICAgICAgcmV0dXJuIEluQnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKG1hcCk7CkBAIC02MSw1NiArNjIsNDcgQEAgSW5CeUlkU3Rh
dHVzIEluQnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDbwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
LUluQnlJZFN0YXR1cyBJbkJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgQ29kZUJsb2NrKiBw
cm9maWxlZEJsb2NrLCBDb2RlQmxvY2sqIGRmZ0Jsb2NrLCBTdHViSW5mb01hcCYgYmFzZWxpbmVN
YXAsCi0gICAgU3R1YkluZm9NYXAmIGRmZ01hcCwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkKQorSW5CeUlkU3RhdHVzIEluQnlJZFN0YXR1czo6Y29tcHV0ZUZv
cihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIElDU3RhdHVzTWFwJiBtYXAsIHVuc2lnbmVkIGJ5
dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7Ci0jaWYgRU5BQkxFKERGR19K
SVQpCi0gICAgaWYgKGRmZ0Jsb2NrKSB7Ci0gICAgICAgIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0
ZURhdGEgZXhpdFNpdGVEYXRhOwotICAgICAgICB7Ci0gICAgICAgICAgICBDb25jdXJyZW50SlNM
b2NrZXIgbG9ja2VyKHByb2ZpbGVkQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICBleGl0U2l0
ZURhdGEgPSBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YSgKLSAgICAgICAgICAg
ICAgICBwcm9maWxlZEJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpOwotICAgICAgICB9
Ci0KLSAgICAgICAgSW5CeUlkU3RhdHVzIHJlc3VsdDsKLSAgICAgICAgewotICAgICAgICAgICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihkZmdCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAg
IHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKGxvY2tl
ciwgZGZnTWFwLmdldChjb2RlT3JpZ2luKSwgdWlkKTsKLSAgICAgICAgfQorICAgIHJldHVybiBj
b21wdXRlRm9yKHByb2ZpbGVkQmxvY2ssIG1hcCwgYnl0ZWNvZGVJbmRleCwgdWlkLCBoYXNCYWRD
YWNoZUV4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpKTsKK30KIAotICAgICAg
ICBpZiAocmVzdWx0LnRha2VzU2xvd1BhdGgoKSkKK0luQnlJZFN0YXR1cyBJbkJ5SWRTdGF0dXM6
OmNvbXB1dGVGb3IoCisgICAgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBJQ1N0YXR1c01hcCYg
YmFzZWxpbmVNYXAsCisgICAgSUNTdGF0dXNDb250ZXh0U3RhY2smIGNvbnRleHRTdGFjaywgQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQoreworICAgIEV4aXRG
bGFnIGRpZEV4aXQgPSBoYXNCYWRDYWNoZUV4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGNvZGVPcmln
aW4uYnl0ZWNvZGVJbmRleCk7CisgICAgCisgICAgZm9yIChJQ1N0YXR1c0NvbnRleHQqIGNvbnRl
eHQgOiBjb250ZXh0U3RhY2spIHsKKyAgICAgICAgSUNTdGF0dXMgc3RhdHVzID0gY29udGV4dC0+
Z2V0KGNvZGVPcmlnaW4pOworICAgICAgICAKKyAgICAgICAgYXV0byB3aXRoRXhpdHMgPSBbJl0g
KGNvbnN0IEluQnlJZFN0YXR1cyYgcmVzdWx0KSAtPiBJbkJ5SWRTdGF0dXMgeworICAgICAgICAg
ICAgaWYgKGRpZEV4aXQuaXNTZXQoY29kZU9yaWdpbi5leGl0aW5nSW5saW5lS2luZCgpKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gSW5CeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgpOwogICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfTsKIAotICAgICAgICBpZiAoaGFzRXhpdFNp
dGUocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KSkKLSAgICAgICAgICAg
IHJldHVybiBJbkJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCk7Ci0KLSAgICAgICAgaWYgKHJlc3Vs
dC5pc1NldCgpKQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgaWYgKHN0YXR1
cy5zdHViSW5mbykgeworICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb250
ZXh0LT5vcHRpbWl6ZWRDb2RlQmxvY2stPm1fbG9jayk7CisgICAgICAgICAgICBJbkJ5SWRTdGF0
dXMgcmVzdWx0ID0KKyAgICAgICAgICAgICAgICBjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhp
dFNpdGVGZWVkYmFjayhsb2NrZXIsIHN0YXR1cy5zdHViSW5mbywgdWlkKTsKKyAgICAgICAgICAg
IGlmIChyZXN1bHQuaXNTZXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gd2l0aEV4aXRzKHJl
c3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChzdGF0dXMuaW5TdGF0dXMp
CisgICAgICAgICAgICByZXR1cm4gd2l0aEV4aXRzKCpzdGF0dXMuaW5TdGF0dXMpOwogICAgIH0K
LSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGRmZ0Jsb2NrKTsKLSAgICBVTlVTRURfUEFSQU0oZGZn
TWFwKTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIGNvbXB1dGVGb3IocHJvZmlsZWRCbG9jaywgYmFz
ZWxpbmVNYXAsIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgdWlkKTsKKyAgICAgICAgCisgICAg
cmV0dXJuIGNvbXB1dGVGb3IocHJvZmlsZWRCbG9jaywgYmFzZWxpbmVNYXAsIGNvZGVPcmlnaW4u
Ynl0ZWNvZGVJbmRleCwgdWlkLCBkaWRFeGl0KTsKIH0KIAogI2lmIEVOQUJMRShERkdfSklUKQot
Ym9vbCBJbkJ5SWRTdGF0dXM6Omhhc0V4aXRTaXRlKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywg
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKLXsKLSAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5r
ZWRDb2RlQmxvY2sgPSBwcm9maWxlZEJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpOwotICAgIENv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIodW5saW5rZWRDb2RlQmxvY2stPm1fbG9jayk7Ci0gICAg
cmV0dXJuIHVubGlua2VkQ29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVl
bnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRDYWNoZSkpCi0gICAgICAgIHx8IHVubGlua2Vk
Q29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRl
Y29kZUluZGV4LCBCYWRDb25zdGFudENhY2hlKSk7Ci19Ci0KIEluQnlJZFN0YXR1cyBJbkJ5SWRT
dGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mbyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tl
ciwgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IENvZGVPcmlnaW4gY29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBJ
bkJ5SWRTdGF0dXMgcmVzdWx0ID0gSW5CeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRo
b3V0RXhpdFNpdGVGZWVkYmFjayhsb2NrZXIsIHN0dWJJbmZvLCB1aWQpOwogCi0gICAgaWYgKCFy
ZXN1bHQudGFrZXNTbG93UGF0aCgpICYmIEluQnlJZFN0YXR1czo6aGFzRXhpdFNpdGUocHJvZmls
ZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KSkKKyAgICBpZiAoIXJlc3VsdC50YWtl
c1Nsb3dQYXRoKCkgJiYgaGFzQmFkQ2FjaGVFeGl0U2l0ZShwcm9maWxlZEJsb2NrLCBjb2RlT3Jp
Z2luLmJ5dGVjb2RlSW5kZXgpKQogICAgICAgICByZXR1cm4gSW5CeUlkU3RhdHVzKFRha2VzU2xv
d1BhdGgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0yMTgsNiArMjEwLDIxIEBAIHZvaWQg
SW5CeUlkU3RhdHVzOjpmaWx0ZXIoY29uc3QgU3RydWN0dXIKICAgICAgICAgbV9zdGF0ZSA9IE5v
SW5mb3JtYXRpb247CiB9CiAKK3ZvaWQgSW5CeUlkU3RhdHVzOjptYXJrSWZDaGVhcChTbG90Vmlz
aXRvciYgdmlzaXRvcikKK3sKKyAgICBmb3IgKEluQnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3Zh
cmlhbnRzKQorICAgICAgICB2YXJpYW50Lm1hcmtJZkNoZWFwKHZpc2l0b3IpOworfQorCitib29s
IEluQnlJZFN0YXR1czo6ZmluYWxpemUoKQoreworICAgIGZvciAoSW5CeUlkVmFyaWFudCYgdmFy
aWFudCA6IG1fdmFyaWFudHMpIHsKKyAgICAgICAgaWYgKCF2YXJpYW50LmZpbmFsaXplKCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCiB2
b2lkIEluQnlJZFN0YXR1czo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIG91
dC5wcmludCgiKCIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJ
ZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
bkJ5SWRTdGF0dXMuaAkocmV2aXNpb24gMjMyNDQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0luQnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxOCBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+LgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNiArMjksNyBAQAog
I2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgogI2lu
Y2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKKyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgogI2lu
Y2x1ZGUgIkluQnlJZFZhcmlhbnQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zNiw4ICszOCw2
IEBAIGNsYXNzIEFjY2Vzc0Nhc2U7CiBjbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBTdHJ1Y3R1cmVT
dHViSW5mbzsKIAotdHlwZWRlZiBIYXNoTWFwPENvZGVPcmlnaW4sIFN0cnVjdHVyZVN0dWJJbmZv
KiwgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFzaD4gU3R1YkluZm9NYXA7Ci0KIGNsYXNzIEluQnlJ
ZFN0YXR1cyB7CiBwdWJsaWM6CiAgICAgZW51bSBTdGF0ZSB7CkBAIC01OSw4ICs1OSw5IEBAIHB1
YmxpYzoKICAgICAgICAgbV92YXJpYW50cy5hcHBlbmQodmFyaWFudCk7CiAgICAgfQogCi0gICAg
c3RhdGljIEluQnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIFN0dWJJbmZvTWFwJiwg
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7Ci0gICAgc3Rh
dGljIEluQnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgQ29k
ZUJsb2NrKiBkZmdCbG9jaywgU3R1YkluZm9NYXAmIGJhc2VsaW5lTWFwLCBTdHViSW5mb01hcCYg
ZGZnTWFwLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKKyAgICBzdGF0aWMg
SW5CeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgSUNTdGF0dXNNYXAmLCB1bnNpZ25l
ZCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKKyAgICBzdGF0aWMgSW5C
eUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgSUNTdGF0dXNNYXAmLCB1bnNpZ25lZCBi
eXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBFeGl0RmxhZyk7CisgICAgc3Rh
dGljIEluQnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNT
dGF0dXNNYXAmIGJhc2VsaW5lTWFwLCBJQ1N0YXR1c0NvbnRleHRTdGFjayYgY29udGV4dFN0YWNr
LCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKIAogI2lmIEVOQUJMRShERkdf
SklUKQogICAgIHN0YXRpYyBJbkJ5SWRTdGF0dXMgY29tcHV0ZUZvclN0dWJJbmZvKGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgU3RydWN0dXJlU3R1
YkluZm8qLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKQEAgLTgxLDEyICs4
MiwxNCBAQCBwdWJsaWM6CiAKICAgICAvLyBBdHRlbXB0cyB0byByZWR1Y2UgdGhlIHNldCBvZiB2
YXJpYW50cyB0byBmaXQgdGhlIGdpdmVuIHN0cnVjdHVyZSBzZXQuIFRoaXMgbWF5IGJlIGFwcHJv
eGltYXRlLgogICAgIHZvaWQgZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYpOworICAgIAorICAg
IHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKTsKKyAgICBib29sIGZpbmFsaXplKCk7CiAK
ICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKIAogcHJpdmF0ZToKICNpZiBFTkFC
TEUoREZHX0pJVCkKLSAgICBzdGF0aWMgYm9vbCBoYXNFeGl0U2l0ZShDb2RlQmxvY2sqLCB1bnNp
Z25lZCBieXRlY29kZUluZGV4KTsKICAgICBzdGF0aWMgSW5CeUlkU3RhdHVzIGNvbXB1dGVGb3JT
dHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYs
IFN0cnVjdHVyZVN0dWJJbmZvKiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7CiAjZW5kaWYKICAg
ICBib29sIGFwcGVuZFZhcmlhbnQoY29uc3QgSW5CeUlkVmFyaWFudCYpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFZhcmlhbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRWYXJpYW50LmNwcAkocmV2aXNp
b24gMjMyNDQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFZhcmlh
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAxOCBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjMsNiArNjQsMjAgQEAgYm9vbCBJbkJ5SWRWYXJpYW50
OjphdHRlbXB0VG9NZXJnZShjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIEluQnlJ
ZFZhcmlhbnQ6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIG1fc3Ry
dWN0dXJlU2V0Lm1hcmtJZkNoZWFwKHZpc2l0b3IpOworfQorCitib29sIEluQnlJZFZhcmlhbnQ6
OmZpbmFsaXplKCkKK3sKKyAgICBpZiAoIW1fc3RydWN0dXJlU2V0LmlzU3RpbGxBbGl2ZSgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX2NvbmRpdGlvblNldC5hcmVTdGlsbExp
dmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lk
IEluQnlJZFZhcmlhbnQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBkdW1w
SW5Db250ZXh0KG91dCwgMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5CeUlkVmFyaWFudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbkJ5SWRWYXJpYW50LmgJKHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRWYXJpYW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE4IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4uCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NCw2ICs1
NSw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzSGl0KCkgY29uc3QgeyByZXR1cm4gb2Zmc2V0KCkg
IT0gaW52YWxpZE9mZnNldDsgfQogCiAgICAgYm9vbCBhdHRlbXB0VG9NZXJnZShjb25zdCBJbkJ5
SWRWYXJpYW50JiBvdGhlcik7CisgICAgCisgICAgdm9pZCBtYXJrSWZDaGVhcChTbG90VmlzaXRv
ciYpOworICAgIGJvb2wgZmluYWxpemUoKTsKIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYp
IGNvbnN0OwogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0
KikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VP
ZlN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0luc3RhbmNlT2ZTdGF0dXMuY3BwCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJJbnN0YW5jZU9mU3RhdHVzLmgiCiAKICNpbmNsdWRl
ICJJQ1N0YXR1c1V0aWxzLmgiCisjaW5jbHVkZSAiSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuaCIKICNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUG9seW1vcnBoaWNBY2Nlc3MuaCIKICNp
bmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgpAQCAtMzksMTMgKzQwLDEzIEBAIHZvaWQgSW5z
dGFuY2VPZlN0YXR1czo6YXBwZW5kVmFyaWFudChjb24KIH0KIAogSW5zdGFuY2VPZlN0YXR1cyBJ
bnN0YW5jZU9mU3RhdHVzOjpjb21wdXRlRm9yKAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBT
dHViSW5mb01hcCYgaW5mb01hcCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKKyAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgSUNTdGF0dXNNYXAmIGluZm9NYXAsIHVuc2lnbmVkIGJ5dGVjb2RlSW5k
ZXgpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7
CiAgICAgCiAgICAgSW5zdGFuY2VPZlN0YXR1cyByZXN1bHQ7CiAjaWYgRU5BQkxFKERGR19KSVQp
Ci0gICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvKGxvY2tlciwgaW5mb01hcC5nZXQoQ29k
ZU9yaWdpbihieXRlY29kZUluZGV4KSkpOworICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5m
byhsb2NrZXIsIGluZm9NYXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkpLnN0dWJJbmZv
KTsKIAogICAgIGlmICghcmVzdWx0LnRha2VzU2xvd1BhdGgoKSkgewogICAgICAgICBVbmxpbmtl
ZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJs
b2NrKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0
YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0
YW5jZU9mU3RhdHVzLmgJKHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbnN0YW5jZU9mU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJDb25jdXJyZW50SlNM
b2NrLmgiCisjaW5jbHVkZSAiSUNTdGF0dXNNYXAuaCIKICNpbmNsdWRlICJJbnN0YW5jZU9mVmFy
aWFudC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTM1LDggKzM2LDYgQEAgY2xhc3MgQWNjZXNz
Q2FzZTsKIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOwogCi10eXBl
ZGVmIEhhc2hNYXA8Q29kZU9yaWdpbiwgU3RydWN0dXJlU3R1YkluZm8qLCBDb2RlT3JpZ2luQXBw
cm94aW1hdGVIYXNoPiBTdHViSW5mb01hcDsKLQogY2xhc3MgSW5zdGFuY2VPZlN0YXR1cyB7CiBw
dWJsaWM6CiAgICAgZW51bSBTdGF0ZSB7CkBAIC02MSw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgQVNTRVJUKHN0YXRlID09IE5vSW5mb3JtYXRpb24gfHwgc3RhdGUgPT0gVGFrZXNTbG93UGF0
aCk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBJbnN0YW5jZU9mU3RhdHVzIGNvbXB1dGVGb3Io
Q29kZUJsb2NrKiwgU3R1YkluZm9NYXAmLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKyAgICBz
dGF0aWMgSW5zdGFuY2VPZlN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIElDU3RhdHVzTWFw
JiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CiAgICAgCiAjaWYgRU5BQkxFKERGR19KSVQpCiAg
ICAgc3RhdGljIEluc3RhbmNlT2ZTdGF0dXMgY29tcHV0ZUZvclN0dWJJbmZvKGNvbnN0IENvbmN1
cnJlbnRKU0xvY2tlciYsIFN0cnVjdHVyZVN0dWJJbmZvKik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAyMzI0
NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIK
ICNpbmNsdWRlICJDb21wbGV4R2V0U3RhdHVzLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZS5oIgorI2luY2x1ZGUgIklDU3RhdHVzVXRpbHMuaCIKICNpbmNsdWRlICJMTEludERh
dGEuaCIKICNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgpAQCAtNTUsMTIgKzU2LDkgQEAgYm9vbCBQdXRCeUlkU3RhdHVzOjphcHBlbmRWYXJp
YW50KGNvbnN0IAogfQogCiAjaWYgRU5BQkxFKERGR19KSVQpCi1ib29sIFB1dEJ5SWRTdGF0dXM6
Omhhc0V4aXRTaXRlKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCkKK0V4aXRGbGFnIFB1dEJ5SWRTdGF0dXM6Omhhc0V4aXRTaXRlKENvZGVCbG9jayogcHJv
ZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKIHsKLSAgICBVbmxpbmtlZENvZGVC
bG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBwcm9maWxlZEJsb2NrLT51bmxpbmtlZENvZGVCbG9j
aygpOwotICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIodW5saW5rZWRDb2RlQmxvY2stPm1f
bG9jayk7Ci0gICAgcmV0dXJuIHVubGlua2VkQ29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIs
IERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRDYWNoZSkpCi0gICAgICAg
IHx8IHVubGlua2VkQ29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRF
eGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRDb25zdGFudENhY2hlKSk7CisgICAgcmV0dXJuIGhh
c0JhZENhY2hlRXhpdFNpdGUocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCk7CiB9CiAjZW5k
aWYKIApAQCAtMTEwLDcgKzEwOCw3IEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29t
cHV0ZUZyb20KICAgICAgICAgc3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwg
b2Zmc2V0LCBuZXdTdHJ1Y3R1cmUtPmluZmVycmVkVHlwZURlc2NyaXB0b3JGb3IodWlkKSk7CiB9
CiAKLVB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHBy
b2ZpbGVkQmxvY2ssIFN0dWJJbmZvTWFwJiBtYXAsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFVu
aXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1
dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBJQ1N0YXR1c01hcCYgbWFwLCB1bnNpZ25l
ZCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBFeGl0RmxhZyBkaWRFeGl0
LCBDYWxsTGlua1N0YXR1czo6RXhpdFNpdGVEYXRhIGNhbGxFeGl0U2l0ZURhdGEpCiB7CiAgICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihwcm9maWxlZEJsb2NrLT5tX2xvY2spOwogICAgIApA
QCAtMTE4LDEzICsxMTYsMTIgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRl
Rm9yKAogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICAgICBVTlVTRURfUEFSQU0o
dWlkKTsKICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBpZiAoaGFzRXhpdFNpdGUocHJvZmlsZWRC
bG9jaywgYnl0ZWNvZGVJbmRleCkpCisgICAgaWYgKGRpZEV4aXQpCiAgICAgICAgIHJldHVybiBQ
dXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgpOwogICAgIAotICAgIFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViSW5mbyA9IG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4KSk7CisgICAgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvID0gbWFwLmdldChDb2RlT3JpZ2luKGJ5dGVjb2RlSW5k
ZXgpKS5zdHViSW5mbzsKICAgICBQdXRCeUlkU3RhdHVzIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHVi
SW5mbygKLSAgICAgICAgbG9ja2VyLCBwcm9maWxlZEJsb2NrLCBzdHViSW5mbywgdWlkLAotICAg
ICAgICBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YShwcm9maWxlZEJsb2NrLCBi
eXRlY29kZUluZGV4KSk7CisgICAgICAgIGxvY2tlciwgcHJvZmlsZWRCbG9jaywgc3R1YkluZm8s
IHVpZCwgY2FsbEV4aXRTaXRlRGF0YSk7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVy
biBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIHVpZCk7CiAg
ICAgCkBAIC0yNjQsMzggKzI2MSwzNCBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNv
bXB1dGVGb3JTCiB9CiAjZW5kaWYKIAotUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21w
dXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgQ29kZUJsb2NrKiBkZmdCbG9jaywgU3R1
YkluZm9NYXAmIGJhc2VsaW5lTWFwLCBTdHViSW5mb01hcCYgZGZnTWFwLCBDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitQdXRCeUlkU3RhdHVzIFB1dEJ5SWRT
dGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJQ1N0YXR1c01hcCYg
YmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4dFN0YWNrJiBjb250ZXh0U3RhY2ssIENvZGVPcmln
aW4gY29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKLSNpZiBFTkFCTEUoREZH
X0pJVCkKLSAgICBpZiAoZGZnQmxvY2spIHsKLSAgICAgICAgaWYgKGhhc0V4aXRTaXRlKGJhc2Vs
aW5lQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkpCi0gICAgICAgICAgICByZXR1cm4g
UHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKLSAgICAgICAgQ2FsbExpbmtTdGF0dXM6OkV4
aXRTaXRlRGF0YSBleGl0U2l0ZURhdGE7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIoYmFzZWxpbmVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgIGV4
aXRTaXRlRGF0YSA9IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKAotICAgICAg
ICAgICAgICAgIGJhc2VsaW5lQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7Ci0gICAg
ICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICBQdXRCeUlkU3RhdHVzIHJlc3VsdDsKLSAgICAg
ICAgewotICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihkZmdCbG9jay0+bV9s
b2NrKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mbygKLSAgICAgICAg
ICAgICAgICBsb2NrZXIsIGRmZ0Jsb2NrLCBkZmdNYXAuZ2V0KGNvZGVPcmlnaW4pLCB1aWQsIGV4
aXRTaXRlRGF0YSk7CisgICAgQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0YSBjYWxsRXhpdFNp
dGVEYXRhID0KKyAgICAgICAgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVFeGl0U2l0ZURhdGEoYmFz
ZWxpbmVCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsKKyAgICBFeGl0RmxhZyBkaWRF
eGl0ID0gaGFzRXhpdFNpdGUoYmFzZWxpbmVCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4
KTsKKyAgICAKKyAgICBmb3IgKElDU3RhdHVzQ29udGV4dCogY29udGV4dCA6IGNvbnRleHRTdGFj
aykgeworICAgICAgICBJQ1N0YXR1cyBzdGF0dXMgPSBjb250ZXh0LT5nZXQoY29kZU9yaWdpbik7
CisgICAgICAgIAorICAgICAgICBhdXRvIHdpdGhFeGl0cyA9IFsmXSAoY29uc3QgUHV0QnlJZFN0
YXR1cyYgcmVzdWx0KSAtPiBQdXRCeUlkU3RhdHVzIHsKKyAgICAgICAgICAgIGlmIChkaWRFeGl0
LmlzU2V0KGNvZGVPcmlnaW4uZXhpdGluZ0lubGluZUtpbmQoKSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdC5zbG93VmVyc2lvbigpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIGlmIChzdGF0dXMuc3R1YkluZm8pIHsKKyAg
ICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29udGV4dC0+b3B0aW1pemVkQ29k
ZUJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgUHV0QnlJZFN0YXR1cyByZXN1bHQgPSBjb21w
dXRlRm9yU3R1YkluZm8oCisgICAgICAgICAgICAgICAgbG9ja2VyLCBjb250ZXh0LT5vcHRpbWl6
ZWRDb2RlQmxvY2ssIHN0YXR1cy5zdHViSW5mbywgdWlkLCBjYWxsRXhpdFNpdGVEYXRhKTsKKyAg
ICAgICAgICAgIGlmIChyZXN1bHQuaXNTZXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gd2l0
aEV4aXRzKHJlc3VsdCk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIC8vIFdlIHVzZSBU
YWtlc1Nsb3dQYXRoIGluIHNvbWUgY2FzZXMgd2hlcmUgdGhlIHN0dWIgd2FzIHVuc2V0LiBUaGF0
J3Mgd2VpcmQgYW5kCi0gICAgICAgIC8vIGl0IHdvdWxkIGJlIGJldHRlciBub3QgdG8gZG8gdGhh
dC4gQnV0IGl0IG1lYW5zIHRoYXQgd2UgaGF2ZSB0byBkZWZlbmQKLSAgICAgICAgLy8gb3Vyc2Vs
dmVzIGhlcmUuCi0gICAgICAgIGlmIChyZXN1bHQuaXNTaW1wbGUoKSkKLSAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgICAgIGlmIChzdGF0dXMucHV0U3RhdHVzKQorICAgICAgICAgICAg
cmV0dXJuIHdpdGhFeGl0cygqc3RhdHVzLnB1dFN0YXR1cyk7CiAgICAgfQotI2Vsc2UKLSAgICBV
TlVTRURfUEFSQU0oZGZnQmxvY2spOwotICAgIFVOVVNFRF9QQVJBTShkZmdNYXApOwotI2VuZGlm
CiAKLSAgICByZXR1cm4gY29tcHV0ZUZvcihiYXNlbGluZUJsb2NrLCBiYXNlbGluZU1hcCwgY29k
ZU9yaWdpbi5ieXRlY29kZUluZGV4LCB1aWQpOworICAgIHJldHVybiBjb21wdXRlRm9yKGJhc2Vs
aW5lQmxvY2ssIGJhc2VsaW5lTWFwLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIHVpZCwgZGlk
RXhpdCwgY2FsbEV4aXRTaXRlRGF0YSk7CiB9CiAKIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1
czo6Y29tcHV0ZUZvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJ1Y3R1
cmVTZXQmIHNldCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgYm9vbCBpc0RpcmVjdCkKQEAgLTM5
OCw2ICszOTEsMzUgQEAgYm9vbCBQdXRCeUlkU3RhdHVzOjptYWtlc0NhbGxzKCkgY29uc3QKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKK1B1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6c2xvd1Zl
cnNpb24oKSBjb25zdAoreworICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKG1ha2VzQ2FsbHMoKSA/
IE1ha2VzQ2FsbHMgOiBUYWtlc1Nsb3dQYXRoKTsKK30KKwordm9pZCBQdXRCeUlkU3RhdHVzOjpt
YXJrSWZDaGVhcChTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBmb3IgKFB1dEJ5SWRWYXJp
YW50JiB2YXJpYW50IDogbV92YXJpYW50cykKKyAgICAgICAgdmFyaWFudC5tYXJrSWZDaGVhcCh2
aXNpdG9yKTsKK30KKworYm9vbCBQdXRCeUlkU3RhdHVzOjpmaW5hbGl6ZSgpCit7CisgICAgZm9y
IChQdXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IG1fdmFyaWFudHMpIHsKKyAgICAgICAgaWYgKCF2
YXJpYW50LmZpbmFsaXplKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIFB1dEJ5SWRTdGF0dXM6OmZpbHRlcihjb25zdCBTdHJ1
Y3R1cmVTZXQmIHNldCkKK3sKKyAgICBpZiAobV9zdGF0ZSAhPSBTaW1wbGUpCisgICAgICAgIHJl
dHVybjsKKyAgICBmaWx0ZXJJQ1N0YXR1c1ZhcmlhbnRzKG1fdmFyaWFudHMsIHNldCk7CisgICAg
aWYgKG1fdmFyaWFudHMuaXNFbXB0eSgpKQorICAgICAgICBtX3N0YXRlID0gTm9JbmZvcm1hdGlv
bjsKK30KKwogdm9pZCBQdXRCeUlkU3RhdHVzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0
CiB7CiAgICAgc3dpdGNoIChtX3N0YXRlKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJKHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDggQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2FsbExpbmtTdGF0
dXMuaCIKKyNpbmNsdWRlICJFeGl0RmxhZy5oIgorI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCiAj
aW5jbHVkZSAiUHV0QnlJZFZhcmlhbnQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC02OSwxMCAr
NzEsMTAgQEAgcHVibGljOgogICAgICAgICBtX3ZhcmlhbnRzLmFwcGVuZCh2YXJpYW50KTsKICAg
ICB9CiAgICAgCi0gICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sq
LCBTdHViSW5mb01hcCYsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBs
KiB1aWQpOworICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwg
SUNTdGF0dXNNYXAmLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCog
dWlkLCBFeGl0RmxhZywgQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0YSk7CiAgICAgc3RhdGlj
IFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cnVjdHVy
ZVNldCYsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIGJvb2wgaXNEaXJlY3QpOwogICAgIAotICAg
IHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2Nr
LCBDb2RlQmxvY2sqIGRmZ0Jsb2NrLCBTdHViSW5mb01hcCYgYmFzZWxpbmVNYXAsIFN0dWJJbmZv
TWFwJiBkZmdNYXAsIENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOworICAgIHN0
YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJ
Q1N0YXR1c01hcCYgYmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4dFN0YWNrJiBjb250ZXh0U3Rh
Y2ssIENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogCiAjaWYgRU5BQkxFKEpJ
VCkKICAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yU3R1YkluZm8oY29uc3QgQ29u
Y3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwpAQCAtODUsMTcgKzg3
LDIyIEBAIHB1YmxpYzoKICAgICBib29sIGlzU2ltcGxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZSA9PSBTaW1wbGU7IH0KICAgICBib29sIHRha2VzU2xvd1BhdGgoKSBjb25zdCB7IHJldHVybiBt
X3N0YXRlID09IFRha2VzU2xvd1BhdGggfHwgbV9zdGF0ZSA9PSBNYWtlc0NhbGxzOyB9CiAgICAg
Ym9vbCBtYWtlc0NhbGxzKCkgY29uc3Q7CisgICAgUHV0QnlJZFN0YXR1cyBzbG93VmVyc2lvbigp
IGNvbnN0OwogICAgIAogICAgIHNpemVfdCBudW1WYXJpYW50cygpIGNvbnN0IHsgcmV0dXJuIG1f
dmFyaWFudHMuc2l6ZSgpOyB9CiAgICAgY29uc3QgVmVjdG9yPFB1dEJ5SWRWYXJpYW50LCAxPiYg
dmFyaWFudHMoKSBjb25zdCB7IHJldHVybiBtX3ZhcmlhbnRzOyB9CiAgICAgY29uc3QgUHV0QnlJ
ZFZhcmlhbnQmIGF0KHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV92YXJpYW50c1tpbmRl
eF07IH0KICAgICBjb25zdCBQdXRCeUlkVmFyaWFudCYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgp
IGNvbnN0IHsgcmV0dXJuIGF0KGluZGV4KTsgfQogICAgIAorICAgIHZvaWQgbWFya0lmQ2hlYXAo
U2xvdFZpc2l0b3ImKTsKKyAgICBib29sIGZpbmFsaXplKCk7CisgICAgdm9pZCBmaWx0ZXIoY29u
c3QgU3RydWN0dXJlU2V0Jik7CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29u
c3Q7CiAgICAgCiBwcml2YXRlOgogI2lmIEVOQUJMRShERkdfSklUKQotICAgIHN0YXRpYyBib29s
IGhhc0V4aXRTaXRlKENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOworICAgIHN0
YXRpYyBFeGl0RmxhZyBoYXNFeGl0U2l0ZShDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUlu
ZGV4KTsKICNlbmRpZgogI2lmIEVOQUJMRShKSVQpCiAgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMg
Y29tcHV0ZUZvclN0dWJJbmZvKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1B1dEJ5SWRWYXJpYW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTIwNiw2ICsyMDYsMjYgQEAgYm9vbCBQdXRCeUlkVmFyaWFudDo6YXR0ZW1wdFRvTWVy
Z2VUcmFucwogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIFB1dEJ5SWRWYXJpYW50OjptYXJr
SWZDaGVhcChTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBtX29sZFN0cnVjdHVyZS5tYXJr
SWZDaGVhcCh2aXNpdG9yKTsKKyAgICBpZiAobV9uZXdTdHJ1Y3R1cmUpCisgICAgICAgIG1fbmV3
U3RydWN0dXJlLT5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKK30KKworYm9vbCBQdXRCeUlkVmFyaWFu
dDo6ZmluYWxpemUoKQoreworICAgIGlmICghbV9vbGRTdHJ1Y3R1cmUuaXNTdGlsbEFsaXZlKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9uZXdTdHJ1Y3R1cmUgJiYgIUhlYXA6
OmlzTWFya2VkKG1fbmV3U3RydWN0dXJlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlm
ICghbV9jb25kaXRpb25TZXQuYXJlU3RpbGxMaXZlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAobV9jYWxsTGlua1N0YXR1cyAmJiAhbV9jYWxsTGlua1N0YXR1cy0+ZmluYWxpemUo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIFB1
dEJ5SWRWYXJpYW50OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgZHVtcElu
Q29udGV4dChvdXQsIDApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1
dEJ5SWRWYXJpYW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1B1dEJ5SWRWYXJpYW50LmgJKHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTcz
LDE3ICs3MywxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX29sZFN0cnVjdHVyZTsKICAg
ICB9CiAgICAgCi0gICAgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHN0cnVjdHVyZSgpOwotICAgIH0KLSAgICAKICAgICBjb25z
dCBTdHJ1Y3R1cmVTZXQmIG9sZFN0cnVjdHVyZSgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NF
UlQoa2luZCgpID09IFRyYW5zaXRpb24gfHwga2luZCgpID09IFJlcGxhY2UgfHwga2luZCgpID09
IFNldHRlcik7CiAgICAgICAgIHJldHVybiBtX29sZFN0cnVjdHVyZTsKICAgICB9CiAgICAgCisg
ICAgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG9sZFN0cnVjdHVyZSgpOworICAgIH0KKyAgICAKICAgICBTdHJ1Y3R1cmVTZXQm
IG9sZFN0cnVjdHVyZSgpCiAgICAgewogICAgICAgICBBU1NFUlQoa2luZCgpID09IFRyYW5zaXRp
b24gfHwga2luZCgpID09IFJlcGxhY2UgfHwga2luZCgpID09IFNldHRlcik7CkBAIC0xMjksNiAr
MTI5LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBhdHRlbXB0VG9NZXJnZShjb25zdCBQdXRCeUlk
VmFyaWFudCYgb3RoZXIpOwogICAgIAorICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3Im
KTsKKyAgICBib29sIGZpbmFsaXplKCk7CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JikgY29uc3Q7CiAgICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRl
eHQqKSBjb25zdDsKIApAQCAtMTM3LDcgKzE0MCw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgS2lu
ZCBtX2tpbmQ7CiAgICAgU3RydWN0dXJlU2V0IG1fb2xkU3RydWN0dXJlOwotICAgIFN0cnVjdHVy
ZSogbV9uZXdTdHJ1Y3R1cmU7CisgICAgU3RydWN0dXJlKiBtX25ld1N0cnVjdHVyZSB7IG51bGxw
dHIgfTsKICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBtX2NvbmRpdGlvblNldDsKICAg
ICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKICAgICBJbmZlcnJlZFR5cGU6OkRlc2NyaXB0b3Ig
bV9yZXF1aXJlZFR5cGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVj
b3JkZWRTdGF0dXNlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDEyMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVjb3JkZWRTdGF0dXNlcy5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworUmVjb3JkZWRTdGF0dXNlcyYgUmVjb3JkZWRTdGF0dXNl
czo6b3BlcmF0b3I9KFJlY29yZGVkU3RhdHVzZXMmJiBvdGhlcikKK3sKKyAgICBjYWxscyA9IFdU
Rk1vdmUob3RoZXIuY2FsbHMpOworICAgIGdldHMgPSBXVEZNb3ZlKG90aGVyLmdldHMpOworICAg
IHB1dHMgPSBXVEZNb3ZlKG90aGVyLnB1dHMpOworICAgIGlucyA9IFdURk1vdmUob3RoZXIuaW5z
KTsKKyAgICBzaHJpbmtUb0ZpdCgpOworICAgIHJldHVybiAqdGhpczsKK30KKworUmVjb3JkZWRT
dGF0dXNlczo6UmVjb3JkZWRTdGF0dXNlcyhSZWNvcmRlZFN0YXR1c2VzJiYgb3RoZXIpCit7Cisg
ICAgKnRoaXMgPSBXVEZNb3ZlKG90aGVyKTsKK30KKworQ2FsbExpbmtTdGF0dXMqIFJlY29yZGVk
U3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4s
IGNvbnN0IENhbGxMaW5rU3RhdHVzJiBzdGF0dXMpCit7CisgICAgYXV0byBzdGF0dXNQdHIgPSBz
dGQ6Om1ha2VfdW5pcXVlPENhbGxMaW5rU3RhdHVzPihzdGF0dXMpOworICAgIENhbGxMaW5rU3Rh
dHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7CisgICAgY2FsbHMuYXBwZW5kKHN0ZDo6bWFr
ZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3RhdHVzUHRyKSkpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK0dldEJ5SWRTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZEdldEJ5SWRTdGF0
dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgY29uc3QgR2V0QnlJZFN0YXR1cyYgc3Rh
dHVzKQoreworICAgIGF1dG8gc3RhdHVzUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxHZXRCeUlkU3Rh
dHVzPihzdGF0dXMpOworICAgIEdldEJ5SWRTdGF0dXMqIHJlc3VsdCA9IHN0YXR1c1B0ci5nZXQo
KTsKKyAgICBnZXRzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihjb2RlT3JpZ2luLCBXVEZNb3ZlKHN0
YXR1c1B0cikpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorICAgIAorUHV0QnlJZFN0YXR1cyog
UmVjb3JkZWRTdGF0dXNlczo6YWRkUHV0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2Rl
T3JpZ2luLCBjb25zdCBQdXRCeUlkU3RhdHVzJiBzdGF0dXMpCit7CisgICAgYXV0byBzdGF0dXNQ
dHIgPSBzdGQ6Om1ha2VfdW5pcXVlPFB1dEJ5SWRTdGF0dXM+KHN0YXR1cyk7CisgICAgUHV0QnlJ
ZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOworICAgIHB1dHMuYXBwZW5kKHN0ZDo6
bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3RhdHVzUHRyKSkpOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK0luQnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkSW5CeUlkU3Rh
dHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0IEluQnlJZFN0YXR1cyYgc3Rh
dHVzKQoreworICAgIGF1dG8gc3RhdHVzUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxJbkJ5SWRTdGF0
dXM+KHN0YXR1cyk7CisgICAgSW5CeUlkU3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7
CisgICAgaW5zLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihjb2RlT3JpZ2luLCBXVEZNb3ZlKHN0YXR1
c1B0cikpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIFJlY29yZGVkU3RhdHVzZXM6
Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiBzbG90VmlzaXRvcikKK3sKKyAgICBmb3IgKGF1dG8m
IHBhaXIgOiBnZXRzKQorICAgICAgICBwYWlyLnNlY29uZC0+bWFya0lmQ2hlYXAoc2xvdFZpc2l0
b3IpOworICAgIGZvciAoYXV0byYgcGFpciA6IHB1dHMpCisgICAgICAgIHBhaXIuc2Vjb25kLT5t
YXJrSWZDaGVhcChzbG90VmlzaXRvcik7CisgICAgZm9yIChhdXRvJiBwYWlyIDogaW5zKQorICAg
ICAgICBwYWlyLnNlY29uZC0+bWFya0lmQ2hlYXAoc2xvdFZpc2l0b3IpOworfQorCit2b2lkIFJl
Y29yZGVkU3RhdHVzZXM6OmZpbmFsaXplV2l0aG91dERlbGV0aW5nKCkKK3sKKyAgICAvLyBUaGlz
IHZhcmlhbnQgb2YgZmluYWxpemUgZ2V0cyBjYWxsZWQgZnJvbSB3aXRoaW4gZ3JhcGggc2FmZXBv
aW50cyAtLSBzbyB0aGVyZSBtYXkgYmUgREZHIElSIGluCisgICAgLy8gc29tZSBjb21waWxlciB0
aHJlYWQgdGhhdCBwb2ludHMgdG8gdGhlIHN0YXR1c2VzLiBUaGF0IHRocmVhZCBpcyBzdG9wcGVk
IGF0IGEgc2FmZXBvaW50IHNvCisgICAgLy8gaXQncyBPSyB0byBlZGl0IGl0cyBkYXRhIHN0cnVj
dHVyZSwgYnV0IGl0J3Mgbm90IE9LIHRvIGRlbGV0ZSB0aGVtLiBIZW5jZSB3ZSBkb24ndCByZW1v
dmUKKyAgICAvLyBhbnl0aGluZyBmcm9tIHRoZSB2ZWN0b3Igb3IgZGVsZXRlIHRoZSB1bmlxdWVf
cHRycy4KKyAgICAKKyAgICBhdXRvIGZpbmFsaXplID0gW10gKGF1dG8mIHZlY3RvcikgeworICAg
ICAgICBmb3IgKGF1dG8mIHBhaXIgOiB2ZWN0b3IpIHsKKyAgICAgICAgICAgIGlmICghcGFpci5z
ZWNvbmQtPmZpbmFsaXplKCkpCisgICAgICAgICAgICAgICAgKnBhaXIuc2Vjb25kID0geyB9Owor
ICAgICAgICB9CisgICAgfTsKKyAgICBmb3JFYWNoVmVjdG9yKGZpbmFsaXplKTsKK30KKwordm9p
ZCBSZWNvcmRlZFN0YXR1c2VzOjpmaW5hbGl6ZSgpCit7CisgICAgYXV0byBmaW5hbGl6ZSA9IFtd
IChhdXRvJiB2ZWN0b3IpIHsKKyAgICAgICAgdmVjdG9yLnJlbW92ZUFsbE1hdGNoaW5nKAorICAg
ICAgICAgICAgWyZdIChhdXRvJiBwYWlyKSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gISpwYWlyLnNlY29uZCB8fCAhcGFpci5zZWNvbmQtPmZpbmFsaXplKCk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgdmVjdG9yLnNocmlua1RvRml0KCk7CisgICAgfTsKKyAgICBmb3JFYWNo
VmVjdG9yKGZpbmFsaXplKTsKK30KKwordm9pZCBSZWNvcmRlZFN0YXR1c2VzOjpzaHJpbmtUb0Zp
dCgpCit7CisgICAgZm9yRWFjaFZlY3RvcihbXSAoYXV0byYgdmVjdG9yKSB7IHZlY3Rvci5zaHJp
bmtUb0ZpdCgpOyB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNl
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWxs
TGlua1N0YXR1cy5oIgorI2luY2x1ZGUgIkdldEJ5SWRTdGF0dXMuaCIKKyNpbmNsdWRlICJJbkJ5
SWRTdGF0dXMuaCIKKyNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitzdHJ1Y3QgUmVjb3JkZWRTdGF0dXNlcyB7CisgICAgUmVjb3JkZWRTdGF0dXNlcygpIHsg
fQorICAgIAorICAgIFJlY29yZGVkU3RhdHVzZXMmIG9wZXJhdG9yPShjb25zdCBSZWNvcmRlZFN0
YXR1c2VzJiBvdGhlcikgPSBkZWxldGU7CisgICAgCisgICAgUmVjb3JkZWRTdGF0dXNlcyYgb3Bl
cmF0b3I9KFJlY29yZGVkU3RhdHVzZXMmJiBvdGhlcik7CisgICAgCisgICAgUmVjb3JkZWRTdGF0
dXNlcyhjb25zdCBSZWNvcmRlZFN0YXR1c2VzJiBvdGhlcikgPSBkZWxldGU7CisgICAgCisgICAg
UmVjb3JkZWRTdGF0dXNlcyhSZWNvcmRlZFN0YXR1c2VzJiYgb3RoZXIpOworICAgIAorICAgIENh
bGxMaW5rU3RhdHVzKiBhZGRDYWxsTGlua1N0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29uc3Qg
Q2FsbExpbmtTdGF0dXMmKTsKKyAgICBHZXRCeUlkU3RhdHVzKiBhZGRHZXRCeUlkU3RhdHVzKGNv
bnN0IENvZGVPcmlnaW4mLCBjb25zdCBHZXRCeUlkU3RhdHVzJik7CisgICAgUHV0QnlJZFN0YXR1
cyogYWRkUHV0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29uc3QgUHV0QnlJZFN0YXR1
cyYpOworICAgIEluQnlJZFN0YXR1cyogYWRkSW5CeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4m
LCBjb25zdCBJbkJ5SWRTdGF0dXMmKTsKKyAgICAKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RW
aXNpdG9yJiBzbG90VmlzaXRvcik7CisgICAgCisgICAgdm9pZCBmaW5hbGl6ZVdpdGhvdXREZWxl
dGluZygpOworICAgIHZvaWQgZmluYWxpemUoKTsKKyAgICAKKyAgICB2b2lkIHNocmlua1RvRml0
KCk7CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZvckVhY2hW
ZWN0b3IoY29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIGZ1bmMoY2FsbHMpOworICAg
ICAgICBmdW5jKGdldHMpOworICAgICAgICBmdW5jKHB1dHMpOworICAgICAgICBmdW5jKGlucyk7
CisgICAgfQorICAgIAorICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29kZU9yaWdpbiwgc3RkOjp1bmlx
dWVfcHRyPENhbGxMaW5rU3RhdHVzPj4+IGNhbGxzOworICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29k
ZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPEdldEJ5SWRTdGF0dXM+Pj4gZ2V0czsKKyAgICBWZWN0
b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxQdXRCeUlkU3RhdHVzPj4+
IHB1dHM7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8
SW5CeUlkU3RhdHVzPj4+IGluczsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmNwcAkocmV2
aXNpb24gMjMyNDQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNiArMzEsMjEgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKK3ZvaWQgU3RydWN0dXJlU2V0OjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYgdmlz
aXRvcikgY29uc3QKK3sKKyAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogKnRoaXMpCisg
ICAgICAgIHN0cnVjdHVyZS0+bWFya0lmQ2hlYXAodmlzaXRvcik7Cit9CisKK2Jvb2wgU3RydWN0
dXJlU2V0Ojppc1N0aWxsQWxpdmUoKSBjb25zdAoreworICAgIGZvciAoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgOiAqdGhpcykgeworICAgICAgICBpZiAoIUhlYXA6OmlzTWFya2VkKHN0cnVjdHVyZSkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQor
CiB2b2lkIFN0cnVjdHVyZVNldDo6ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1w
Q29udGV4dCogY29udGV4dCkgY29uc3QKIHsKICAgICBDb21tYVByaW50ZXIgY29tbWE7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5oCShyZXZp
c2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDExLCAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01OCw2ICs1OCw5IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgICAgIHJldHVybiBvbmx5RW50cnkoKTsKICAgICB9CisKKyAgICB2b2lkIG1hcmtJ
ZkNoZWFwKFNsb3RWaXNpdG9yJikgY29uc3Q7CisgICAgYm9vbCBpc1N0aWxsQWxpdmUoKSBjb25z
dDsKICAgICAKICAgICB2b2lkIGR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mLCBEdW1wQ29udGV4
dCopIGNvbnN0OwogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Rlcm1pbmF0ZWRDb2RlT3JpZ2luLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Rlcm1pbmF0ZWRDb2RlT3Jp
Z2luLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Rl
cm1pbmF0ZWRDb2RlT3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBJ
bmxpbmVDYWxsRnJhbWU7CisKK3N0cnVjdCBUZXJtaW5hdGVkQ29kZU9yaWdpbiB7CisgICAgVGVy
bWluYXRlZENvZGVPcmlnaW4oKSB7IH0KKyAgICAKKyAgICBUZXJtaW5hdGVkQ29kZU9yaWdpbihj
b25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBJbmxpbmVDYWxsRnJhbWUqIHRlcm1pbmFsKQor
ICAgICAgICA6IGNvZGVPcmlnaW4oY29kZU9yaWdpbikKKyAgICAgICAgLCB0ZXJtaW5hbCh0ZXJt
aW5hbCkKKyAgICB7CisgICAgfQorICAgIAorICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbjsKKyAg
ICBJbmxpbmVDYWxsRnJhbWUqIHRlcm1pbmFsIHsgbnVsbHB0ciB9OworfTsKKworc3RydWN0IFRl
cm1pbmF0ZWRDb2RlT3JpZ2luSGFzaFRyYW5zbGF0b3IgeworICAgIHN0YXRpYyB1bnNpZ25lZCBo
YXNoKGNvbnN0IFRlcm1pbmF0ZWRDb2RlT3JpZ2luJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiB2YWx1ZS5jb2RlT3JpZ2luLmFwcHJveGltYXRlSGFzaCh2YWx1ZS50ZXJtaW5hbCk7Cisg
ICAgfQorICAgIAorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IENvZGVPcmlnaW4mIGEsIGNv
bnN0IFRlcm1pbmF0ZWRDb2RlT3JpZ2luJiBiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGIuY29k
ZU9yaWdpbi5pc0FwcHJveGltYXRlbHlFcXVhbFRvKGEsIGIudGVybWluYWwpOworICAgIH0KK307
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvV2F0Y2hwb2ludC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1dhdGNocG9pbnQuY3BwCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIw
MywzICsyMDMsMjMgQEAgdm9pZCBEZWZlcnJlZFdhdGNocG9pbnRGaXJlOjp0YWtlV2F0Y2hwbwog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKIAorbmFtZXNwYWNlIFdURiB7CisKK3ZvaWQgcHJpbnRJbnRl
cm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OldhdGNocG9pbnRTdGF0ZSBzdGF0ZSkKK3sKKyAg
ICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgY2FzZSBKU0M6OkNsZWFyV2F0Y2hwb2ludDoKKyAgICAg
ICAgb3V0LnByaW50KCJDbGVhcldhdGNocG9pbnQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgSlNDOjpJc1dhdGNoZWQ6CisgICAgICAgIG91dC5wcmludCgiSXNXYXRjaGVkIik7CisgICAg
ICAgIHJldHVybjsKKyAgICBjYXNlIEpTQzo6SXNJbnZhbGlkYXRlZDoKKyAgICAgICAgb3V0LnBy
aW50KCJJc0ludmFsaWRhdGVkIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuaAkocmV2aXNpb24g
MjMyNDQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNDQ4LDMgKzQ0OCwxMCBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBXVEYgeworCit2b2lkIHByaW50SW50ZXJuYWwoUHJp
bnRTdHJlYW0mIG91dCwgSlNDOjpXYXRjaHBvaW50U3RhdGUpOworCit9IC8vIG5hbWVzcGFjZSBX
VEYKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEludGVycHJldGVyLmgJKHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsNiAr
MjEyLDggQEAgcHVibGljOgogICAgIAogICAgIFBoaUNoaWxkcmVuKiBwaGlDaGlsZHJlbigpIHsg
cmV0dXJuIG1fcGhpQ2hpbGRyZW4uZ2V0KCk7IH0KICAgICAKKyAgICB2b2lkIGZpbHRlcklDU3Rh
dHVzKE5vZGUqKTsKKyAgICAKIHByaXZhdGU6CiAgICAgdm9pZCBjbG9iYmVyV29ybGQoKTsKICAg
ICB2b2lkIGRpZEZvbGRDbG9iYmVyV29ybGQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJl
dmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzUwOSw2ICszNTA5LDEwIEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICBjYXNlIExvb3BI
aW50OgogICAgIGNhc2UgWm9tYmllSGludDoKICAgICBjYXNlIEV4aXRPSzoKKyAgICBjYXNlIEZp
bHRlckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICBj
YXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CiAg
ICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDaGVja1R5cGVJbmZvRmxhZ3M6IHsKQEAgLTM2Mjks
NiArMzYzMyw0MiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFic3RyYWN0U3RhdGVUeXBlPgordm9pZCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZmlsdGVySUNTdGF0dXMoTm9kZSogbm9kZSkK
K3sKKyAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKKyAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3Rh
dHVzOgorICAgICAgICBpZiAoSlNWYWx1ZSB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkp
Lm1fdmFsdWUpCisgICAgICAgICAgICBub2RlLT5jYWxsTGlua1N0YXR1cygpLT5maWx0ZXIobV92
bSwgdmFsdWUpOworICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgY2FzZSBGaWx0ZXJHZXRC
eUlkU3RhdHVzOiB7CisgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKQor
ICAgICAgICAgICAgbm9kZS0+Z2V0QnlJZFN0YXR1cygpLT5maWx0ZXIodmFsdWUubV9zdHJ1Y3R1
cmUudG9TdHJ1Y3R1cmVTZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgCisg
ICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6IHsKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFs
dWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgaWYgKHZhbHVlLm1fc3RydWN0
dXJlLmlzRmluaXRlKCkpCisgICAgICAgICAgICBub2RlLT5pbkJ5SWRTdGF0dXMoKS0+ZmlsdGVy
KHZhbHVlLm1fc3RydWN0dXJlLnRvU3RydWN0dXJlU2V0KCkpOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgICAgIAorICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czogeworICAgICAgICBB
YnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBp
ZiAodmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkKKyAgICAgICAgICAgIG5vZGUtPnB1dEJ5
SWRTdGF0dXMoKS0+ZmlsdGVyKHZhbHVlLm1fc3RydWN0dXJlLnRvU3RydWN0dXJlU2V0KCkpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIEFic3RyYWN0U3RhdGVUeXBlPgogYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgaW5kZXhJbkJsb2NrKQog
ewogICAgIHJldHVybiBleGVjdXRlRWZmZWN0cyhpbmRleEluQmxvY2ssIG1fc3RhdGUuYmxvY2so
KS0+YXQoaW5kZXhJbkJsb2NrKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMjMyNDQxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwODAsOSArMTA4MCw4IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIGNvZGUgYmxvY2sgaGFkIGdh
dGhlcmVkLgogICAgICAgICBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNlciBtX2xhenlPcGVy
YW5kczsKICAgICAgICAgCi0gICAgICAgIENhbGxMaW5rSW5mb01hcCBtX2NhbGxMaW5rSW5mb3M7
Ci0gICAgICAgIFN0dWJJbmZvTWFwIG1fc3R1YkluZm9zOwotICAgICAgICBCeVZhbEluZm9NYXAg
bV9ieVZhbEluZm9zOworICAgICAgICBJQ1N0YXR1c01hcCBtX2Jhc2VsaW5lTWFwOworICAgICAg
ICBJQ1N0YXR1c0NvbnRleHQgbV9vcHRpbWl6ZWRDb250ZXh0OwogICAgICAgICAKICAgICAgICAg
Ly8gUG9pbnRlcnMgdG8gdGhlIGFyZ3VtZW50IHBvc2l0aW9uIHRyYWNrZXJzIGZvciB0aGlzIHNs
aWNlIG9mIGNvZGUuCiAgICAgICAgIFZlY3RvcjxBcmd1bWVudFBvc2l0aW9uKj4gbV9hcmd1bWVu
dFBvc2l0aW9uczsKQEAgLTExMDAsMTAgKzEwOTksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
SW5saW5lQ2FsbEZyYW1lOjpLaW5kLAogICAgICAgICAgICAgQmFzaWNCbG9jayogY29udGludWF0
aW9uQmxvY2spOwogICAgICAgICAKLSAgICAgICAgfklubGluZVN0YWNrRW50cnkoKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBtX2J5dGVDb2RlUGFyc2VyLT5tX2lubGluZVN0YWNrVG9wID0gbV9j
YWxsZXI7Ci0gICAgICAgIH0KKyAgICAgICAgfklubGluZVN0YWNrRW50cnkoKTsKICAgICAgICAg
CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZW1hcE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyIG9w
ZXJhbmQpIGNvbnN0CiAgICAgICAgIHsKQEAgLTExMTgsNiArMTExNCw4IEBAIHByaXZhdGU6CiAg
ICAgCiAgICAgSW5saW5lU3RhY2tFbnRyeSogbV9pbmxpbmVTdGFja1RvcDsKICAgICAKKyAgICBJ
Q1N0YXR1c0NvbnRleHRTdGFjayBtX2ljQ29udGV4dFN0YWNrOworICAgIAogICAgIHN0cnVjdCBE
ZWxheWVkU2V0TG9jYWwgewogICAgICAgICBDb2RlT3JpZ2luIG1fb3JpZ2luOwogICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgbV9vcGVyYW5kOwpAQCAtMTE0NCwxMCArMTE0Miw2IEBAIHByaXZhdGU6
CiAgICAgCiAgICAgVmVjdG9yPERlbGF5ZWRTZXRMb2NhbCwgMj4gbV9zZXRMb2NhbFF1ZXVlOwog
Ci0gICAgQ29kZUJsb2NrKiBtX2RmZ0NvZGVCbG9jazsKLSAgICBDYWxsTGlua1N0YXR1czo6Q29u
dGV4dE1hcCBtX2NhbGxDb250ZXh0TWFwOwotICAgIFN0dWJJbmZvTWFwIG1fZGZnU3R1YkluZm9z
OwotICAgIAogICAgIEluc3RydWN0aW9uKiBtX2N1cnJlbnRJbnN0cnVjdGlvbjsKICAgICBib29s
IG1faGFzRGVidWdnZXJFbmFibGVkOwogfTsKQEAgLTEyMTIsNyArMTIwNiw3IEBAIEJ5dGVDb2Rl
UGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnMKIAogICAgIENhbGxMaW5rU3RhdHVzIGNh
bGxMaW5rU3RhdHVzID0gQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgIG1faW5s
aW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgY3VycmVudENvZGVPcmlnaW4oKSwKLSAgICAg
ICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsTGlua0luZm9zLCBtX2NhbGxDb250ZXh0TWFwKTsK
KyAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRleHRTdGFj
ayk7CiAKICAgICBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCA9IElubGluZUNhbGxGcmFtZTo6
a2luZEZvcihjYWxsTW9kZSk7CiAKQEAgLTEyNDAsNiArMTIzNCw4IEBAIEJ5dGVDb2RlUGFyc2Vy
OjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnMKICAgICAvLyBJZiB3ZSBoYXZlIHByb2ZpbGluZyBp
bmZvcm1hdGlvbiBhYm91dCB0aGlzIGNhbGwsIGFuZCBpdCBkaWQgbm90IGJlaGF2ZSB0b28gcG9s
eW1vcnBoaWNhbGx5LAogICAgIC8vIHdlIG1heSBiZSBhYmxlIHRvIGlubGluZSBpdCwgb3IgaW4g
dGhlIGNhc2Ugb2YgcmVjdXJzaXZlIHRhaWwgY2FsbHMgdHVybiBpdCBpbnRvIGEganVtcC4KICAg
ICBpZiAoY2FsbExpbmtTdGF0dXMuY2FuT3B0aW1pemUoKSkgeworICAgICAgICBhZGRUb0dyYXBo
KEZpbHRlckNhbGxMaW5rU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0
dXNlcy5hZGRDYWxsTGlua1N0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBjYWxsTGlua1N0YXR1
cykpLCBjYWxsVGFyZ2V0KTsKKyAgICAgICAgCiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciB0aGlz
QXJndW1lbnQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgwLCByZWdpc3Rlck9mZnNldCk7
CiAgICAgICAgIGF1dG8gb3B0aW1pemF0aW9uUmVzdWx0ID0gaGFuZGxlSW5saW5pbmcoY2FsbFRh
cmdldCwgcmVzdWx0LCBjYWxsTGlua1N0YXR1cywgcmVnaXN0ZXJPZmZzZXQsIHRoaXNBcmd1bWVu
dCwKICAgICAgICAgICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBtX2N1cnJlbnRJbmRl
eCArIGluc3RydWN0aW9uU2l6ZSwgb3AsIGtpbmQsIHByZWRpY3Rpb24pOwpAQCAtMTI3NywxMiAr
MTI3MywxNCBAQCBCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzCiAgICAg
CiAgICAgQ2FsbExpbmtTdGF0dXMgY2FsbExpbmtTdGF0dXMgPSBDYWxsTGlua1N0YXR1czo6Y29t
cHV0ZUZvcigKICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBjdXJy
ZW50Q29kZU9yaWdpbigpLAotICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxMaW5rSW5m
b3MsIG1fY2FsbENvbnRleHRNYXApOworICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2Vs
aW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrKTsKICAgICByZWZpbmVTdGF0aWNhbGx5KGNhbGxMaW5r
U3RhdHVzLCBjYWxsVGFyZ2V0KTsKICAgICAKICAgICBWRVJCT1NFX0xPRygiICAgIFZhcmFyZ3Mg
Y2FsbCBsaW5rIHN0YXR1cyBhdCAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiOiAiLCBjYWxsTGlu
a1N0YXR1cywgIlxuIik7CiAgICAgCiAgICAgaWYgKGNhbGxMaW5rU3RhdHVzLmNhbk9wdGltaXpl
KCkpIHsKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJDYWxsTGlua1N0YXR1cywgT3BJbmZvKG1f
Z3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkQ2FsbExpbmtTdGF0dXMoY3VycmVudENv
ZGVPcmlnaW4oKSwgY2FsbExpbmtTdGF0dXMpKSwgY2FsbFRhcmdldCk7CisgICAgICAgIAogICAg
ICAgICBpZiAoaGFuZGxlVmFyYXJnc0lubGluaW5nKGNhbGxUYXJnZXQsIHJlc3VsdCwKICAgICAg
ICAgICAgIGNhbGxMaW5rU3RhdHVzLCBmaXJzdEZyZWVSZWcsIFZpcnR1YWxSZWdpc3Rlcih0aGlz
UmVnKSwgVmlydHVhbFJlZ2lzdGVyKGFyZ3VtZW50cyksCiAgICAgICAgICAgICBmaXJzdFZhckFy
Z09mZnNldCwgb3AsCkBAIC0zMzE2LDkgKzMzMTQsMTIgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlRE9NSklUR2V0dGVyKAogICAgIGlmICghY2hlY2sodmFyaWFudC5jb25kaXRpb25TZXQo
KSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBhZGRUb0dyYXBoKENoZWNrU3RydWN0dXJl
LCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSkp
LCB0aGlzTm9kZSk7Ci0KKyAgICAKICAgICAvLyBXZSBkbyBub3QgbmVlZCB0byBlbWl0IENoZWNr
Q2VsbCB0aGluZ3kgaGVyZS4gV2hlbiB0aGUgY3VzdG9tIGFjY2Vzc29yIGlzIHJlcGxhY2VkIHRv
IGRpZmZlcmVudCBvbmUsIFN0cnVjdHVyZSB0cmFuc2l0aW9uIG9jY3Vycy4KICAgICBhZGRUb0dy
YXBoKENoZWNrU3ViQ2xhc3MsIE9wSW5mbyhkb21BdHRyaWJ1dGUuY2xhc3NJbmZvKSwgdGhpc05v
ZGUpOworICAgIAorICAgIGJvb2wgd2FzU2VlbkluSklUID0gdHJ1ZTsKKyAgICBhZGRUb0dyYXBo
KEZpbHRlckdldEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1
c2VzLmFkZEdldEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgR2V0QnlJZFN0YXR1cyhH
ZXRCeUlkU3RhdHVzOjpDdXN0b20sIHdhc1NlZW5JbkpJVCwgdmFyaWFudCkpKSwgdGhpc05vZGUp
OwogCiAgICAgQ2FsbERPTUdldHRlckRhdGEqIGNhbGxET01HZXR0ZXJEYXRhID0gbV9ncmFwaC5t
X2NhbGxET01HZXR0ZXJEYXRhLmFkZCgpOwogICAgIGNhbGxET01HZXR0ZXJEYXRhLT5jdXN0b21B
Y2Nlc3NvckdldHRlciA9IHZhcmlhbnQuY3VzdG9tQWNjZXNzb3JHZXR0ZXIoKTsKQEAgLTMzNTAs
NiArMzM1MSw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZU1vZHVsZU5hbWVzcGEKICAg
ICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJl
bnRJbmRleCwgQmFkQ2VsbCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBhZGRUb0dyYXBo
KENoZWNrQ2VsbCwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKGdldEJ5SWQubW9kdWxlTmFtZXNwYWNl
T2JqZWN0KCkpKSwgRWRnZShiYXNlLCBDZWxsVXNlKSk7CisgICAgCisgICAgYWRkVG9HcmFwaChG
aWx0ZXJHZXRCeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNl
cy5hZGRHZXRCeUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIGdldEJ5SWQpKSwgYmFzZSk7
CiAKICAgICAvLyBJZGVhbGx5IHdlIHdvdWxkbid0IGhhdmUgdG8gZG8gdGhpcyBQaGFudG9tLiBC
dXQ6CiAgICAgLy8KQEAgLTQwMDUsMTQgKzQwMDgsMjEgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlR2V0QnlJZCgKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKKyAgICAvLyBGSVhN
RTogSWYgd2UgdXNlIHRoZSBHZXRCeUlkU3RhdHVzIGZvciBhbnl0aGluZyB0aGVuIHdlIHNob3Vs
ZCByZWNvcmQgaXQgYW5kIGluc2VydCBhIG5vZGUKKyAgICAvLyBhZnRlciBldmVyeXRoaW5nIGVs
c2UgKGxpa2UgdGhlIEdldEJ5T2Zmc2V0IG9yIHdoYXRldmVyKSB0aGF0IHdpbGwgZmlsdGVyIHRo
ZSByZWNvcmRlZAorICAgIC8vIEdldEJ5SWRTdGF0dXMuIFRoYXQgbWVhbnMgdGhhdCB0aGUgY29u
c3RhbnQgZm9sZGVyIGFsc28gbmVlZHMgdG8gZG8gdGhlIHNhbWUhCisgICAgCiAgICAgaWYgKGdl
dEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSA+IDEpIHsKICAgICAgICAgaWYgKGdldEJ5SWRTdGF0
dXMubWFrZXNDYWxscygpIHx8ICFpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKQotICAgICAgICAg
ICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcoKSkgeworICAgICAg
ICAgICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcoKQorICAgICAg
ICAgICAgfHwgZ2V0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpID4gT3B0aW9uczo6bWF4UG9seW1v
cnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplKCkpIHsKICAgICAgICAgICAgIHNldChWaXJ0dWFs
UmVnaXN0ZXIoZGVzdGluYXRpb25PcGVyYW5kKSwKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBo
KGdldEJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBi
YXNlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAg
IGFkZFRvR3JhcGgoRmlsdGVyR2V0QnlJZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJl
Y29yZGVkU3RhdHVzZXMuYWRkR2V0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBnZXRC
eUlkU3RhdHVzKSksIGJhc2UpOworICAgICAgICAKICAgICAgICAgVmVjdG9yPE11bHRpR2V0QnlP
ZmZzZXRDYXNlLCAyPiBjYXNlczsKICAgICAgICAgCiAgICAgICAgIC8vIDEpIEVtaXQgcHJvdG90
eXBlIHN0cnVjdHVyZSBjaGVja3MgZm9yIGFsbCBjaGFpbnMuIFRoaXMgY291bGQgc29ydCBvZiBt
YXliZSBub3QgYmUKQEAgLTQwNTQsMTAgKzQwNjQsMTIgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlR2V0QnlJZCgKICAgICAgICAgICAgIGFkZFRvR3JhcGgoTXVsdGlHZXRCeU9mZnNldCwg
T3BJbmZvKGRhdGEpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KKworICAgIGFkZFRvR3JhcGgoRmlsdGVyR2V0QnlJZFN0YXR1cywgT3BJbmZvKG1f
Z3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkR2V0QnlJZFN0YXR1cyhjdXJyZW50Q29k
ZU9yaWdpbigpLCBnZXRCeUlkU3RhdHVzKSksIGJhc2UpOwogICAgIAogICAgIEFTU0VSVChnZXRC
eUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgPT0gMSk7CiAgICAgR2V0QnlJZFZhcmlhbnQgdmFyaWFu
dCA9IGdldEJ5SWRTdGF0dXNbMF07Ci0gICAgICAgICAgICAgICAgCisgICAgCiAgICAgTm9kZSog
bG9hZGVkVmFsdWUgPSBsb2FkKHByZWRpY3Rpb24sIGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIHZh
cmlhbnQpOwogICAgIGlmICghbG9hZGVkVmFsdWUpIHsKICAgICAgICAgc2V0KFZpcnR1YWxSZWdp
c3RlcihkZXN0aW5hdGlvbk9wZXJhbmQpLApAQCAtNDE0OCw3ICs0MTYwLDggQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICAKICAgICBpZiAocHV0QnlJZFN0YXR1cy5u
dW1WYXJpYW50cygpID4gMSkgewogICAgICAgICBpZiAoIWlzRlRMKG1fZ3JhcGgubV9wbGFuLm1v
ZGUpIHx8IHB1dEJ5SWRTdGF0dXMubWFrZXNDYWxscygpCi0gICAgICAgICAgICB8fCAhT3B0aW9u
czo6dXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZygpKSB7CisgICAgICAgICAgICB8fCAhT3B0
aW9uczo6dXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZygpCisgICAgICAgICAgICB8fCBwdXRC
eUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgPiBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0FjY2Vzc0lu
bGluaW5nTGlzdFNpemUoKSkgewogICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRp
Zmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0KTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQpAQCAtNDE2Niw2ICs0MTc5LDggQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICAgICAgCiAgICAgICAgIGlmIChVTkxJS0VMWShtX2dy
YXBoLmNvbXBpbGF0aW9uKCkpKQogICAgICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5u
b3RpY2VJbmxpbmVkUHV0QnlJZCgpOworICAgICAgICAKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0
ZXJQdXRCeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcy5h
ZGRQdXRCeUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIHB1dEJ5SWRTdGF0dXMpKSwgYmFz
ZSk7CiAKICAgICAgICAgZm9yIChjb25zdCBQdXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IHB1dEJ5
SWRTdGF0dXMudmFyaWFudHMoKSkgewogICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlckluZmVy
cmVkVHlwZSh2YXJpYW50LnJlcXVpcmVkVHlwZSgpKTsKQEAgLTQxODcsNiArNDIwMiw4IEBAIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgCiAgICAgc3dpdGNoICh2YXJp
YW50LmtpbmQoKSkgewogICAgIGNhc2UgUHV0QnlJZFZhcmlhbnQ6OlJlcGxhY2U6IHsKKyAgICAg
ICAgYWRkVG9HcmFwaChGaWx0ZXJQdXRCeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4u
cmVjb3JkZWRTdGF0dXNlcy5hZGRQdXRCeUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIHB1
dEJ5SWRTdGF0dXMpKSwgYmFzZSk7CisgICAgICAgIAogICAgICAgICBzdG9yZShiYXNlLCBpZGVu
dGlmaWVyTnVtYmVyLCB2YXJpYW50LCB2YWx1ZSk7CiAgICAgICAgIGlmIChVTkxJS0VMWShtX2dy
YXBoLmNvbXBpbGF0aW9uKCkpKQogICAgICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5u
b3RpY2VJbmxpbmVkUHV0QnlJZCgpOwpAQCAtNDE5NCw2ICs0MjExLDggQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICB9CiAgICAgCiAgICAgY2FzZSBQdXRCeUlkVmFy
aWFudDo6VHJhbnNpdGlvbjogeworICAgICAgICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRTdGF0
dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFkZFB1dEJ5SWRTdGF0
dXMoY3VycmVudENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0YXR1cykpLCBiYXNlKTsKKyAgICAgICAg
CiAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFkZFN0
cnVjdHVyZVNldCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSksIGJhc2UpOwogICAgICAgICBpZiAo
IWNoZWNrKHZhcmlhbnQuY29uZGl0aW9uU2V0KCkpKSB7CiAgICAgICAgICAgICBlbWl0UHV0QnlJ
ZChiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3Qp
OwpAQCAtNDI2MSw2ICs0MjgwLDggQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJ
ZCgKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgUHV0QnlJZFZhcmlhbnQ6OlNldHRlcjogewor
ICAgICAgICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1f
cGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFkZFB1dEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4o
KSwgcHV0QnlJZFN0YXR1cykpLCBiYXNlKTsKKyAgICAgICAgCiAgICAgICAgIE5vZGUqIGxvYWRl
ZFZhbHVlID0gbG9hZChTcGVjQ2VsbE90aGVyLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YXJp
YW50KTsKICAgICAgICAgaWYgKCFsb2FkZWRWYWx1ZSkgewogICAgICAgICAgICAgZW1pdFB1dEJ5
SWQoYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0
KTsKQEAgLTQ0OTcsNiArNDUxOCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZnJlZXplKHJh
cmVEYXRhKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLndhdGNocG9pbnRz
KCkuYWRkTGF6aWx5KHJhcmVEYXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gVGhlIGNhbGxlZSBpcyBzdGlsbCBsaXZlIHVwIHRvIHRoaXMgcG9pbnQuCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsZWUpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5vZGUqIG9iamVjdCA9IGFkZFRvR3JhcGgoTmV3T2JqZWN0
LCBPcEluZm8obV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpKSk7CkBAIC00Nzky
LDcgKzQ4MTQsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAg
ICAgICAgICAgICBhdXRvJiBieXRlY29kZSA9ICpyZWludGVycHJldF9jYXN0PE9wSW5zdGFuY2Vv
Zio+KGN1cnJlbnRJbnN0cnVjdGlvbik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEluc3Rh
bmNlT2ZTdGF0dXMgc3RhdHVzID0gSW5zdGFuY2VPZlN0YXR1czo6Y29tcHV0ZUZvcigKLSAgICAg
ICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIG1faW5saW5lU3Rh
Y2tUb3AtPm1fc3R1YkluZm9zLAorICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1f
cHJvZmlsZWRCbG9jaywgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwKICAgICAgICAg
ICAgICAgICBtX2N1cnJlbnRJbmRleCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIE5vZGUq
IHZhbHVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS52YWx1ZSgpKSk7CkBAIC01MDMx
LDcgKzUwNTMsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAg
ICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gMDsKICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1faW5saW5lU3RhY2tU
b3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICBCeVZhbEluZm8q
IGJ5VmFsSW5mbyA9IG1faW5saW5lU3RhY2tUb3AtPm1fYnlWYWxJbmZvcy5nZXQoQ29kZU9yaWdp
bihjdXJyZW50Q29kZU9yaWdpbigpLmJ5dGVjb2RlSW5kZXgpKTsKKyAgICAgICAgICAgICAgICBC
eVZhbEluZm8qIGJ5VmFsSW5mbyA9IG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAuZ2V0
KENvZGVPcmlnaW4oY3VycmVudENvZGVPcmlnaW4oKS5ieXRlY29kZUluZGV4KSkuYnlWYWxJbmZv
OwogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXaGVuIHRoZSBieXRlY29kZSBpcyBub3QgY29t
cGlsZWQgaW4gdGhlIGJhc2VsaW5lIEpJVCwgYnlWYWxJbmZvIGJlY29tZXMgbnVsbC4KICAgICAg
ICAgICAgICAgICAvLyBBdCB0aGF0IHRpbWUsIHRoZXJlIGlzIG5vIGluZm9ybWF0aW9uLgogICAg
ICAgICAgICAgICAgIGlmIChieVZhbEluZm8KQEAgLTUxMDAsNyArNTEyMiw3IEBAIHZvaWQgQnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBQdXRCeUlk
U3RhdHVzIHB1dEJ5SWRTdGF0dXM7CiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
ICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmls
ZWRCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICAgICAgQnlWYWxJbmZvKiBieVZhbElu
Zm8gPSBtX2lubGluZVN0YWNrVG9wLT5tX2J5VmFsSW5mb3MuZ2V0KENvZGVPcmlnaW4oY3VycmVu
dENvZGVPcmlnaW4oKS5ieXRlY29kZUluZGV4KSk7CisgICAgICAgICAgICAgICAgICAgIEJ5VmFs
SW5mbyogYnlWYWxJbmZvID0gbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcC5nZXQoQ29k
ZU9yaWdpbihjdXJyZW50Q29kZU9yaWdpbigpLmJ5dGVjb2RlSW5kZXgpKS5ieVZhbEluZm87CiAg
ICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXaGVuIHRoZSBieXRlY29kZSBpcyBub3QgY29t
cGlsZWQgaW4gdGhlIGJhc2VsaW5lIEpJVCwgYnlWYWxJbmZvIGJlY29tZXMgbnVsbC4KICAgICAg
ICAgICAgICAgICAgICAgLy8gQXQgdGhhdCB0aW1lLCB0aGVyZSBpcyBubyBpbmZvcm1hdGlvbi4K
ICAgICAgICAgICAgICAgICAgICAgaWYgKGJ5VmFsSW5mbyAKQEAgLTUyMDYsOCArNTIyOCw4IEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMo
KVtpZGVudGlmaWVyTnVtYmVyXTsKICAgICAgICAgICAgIEdldEJ5SWRTdGF0dXMgZ2V0QnlJZFN0
YXR1cyA9IEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgICAgICAgICAgICAgbV9pbmxp
bmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBtX2RmZ0NvZGVCbG9jaywKLSAgICAgICAgICAg
ICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3N0dWJJbmZvcywgbV9kZmdTdHViSW5mb3MsCisgICAg
ICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAorICAgICAgICAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ss
CiAgICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSwgdWlkKTsKIAogICAgICAgICAg
ICAgQWNjZXNzVHlwZSB0eXBlID0gQWNjZXNzVHlwZTo6R2V0OwpAQCAtNTI1MCw4ICs1MjcyLDgg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAg
Ym9vbCBkaXJlY3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bOF0udS5wdXRCeUlkRmxhZ3MgJiBQdXRC
eUlkSXNEaXJlY3Q7CiAKICAgICAgICAgICAgIFB1dEJ5SWRTdGF0dXMgcHV0QnlJZFN0YXR1cyA9
IFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFj
a1RvcC0+bV9wcm9maWxlZEJsb2NrLCBtX2RmZ0NvZGVCbG9jaywKLSAgICAgICAgICAgICAgICBt
X2lubGluZVN0YWNrVG9wLT5tX3N0dWJJbmZvcywgbV9kZmdTdHViSW5mb3MsCisgICAgICAgICAg
ICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAorICAgICAgICAgICAgICAg
IG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ssCiAgICAg
ICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSwgbV9ncmFwaC5pZGVudGlmaWVycygpW2lk
ZW50aWZpZXJOdW1iZXJdKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaGFuZGxlUHV0QnlJ
ZChiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgZGlyZWN0KTsK
QEAgLTY0MzMsOCArNjQ1NSw4IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5z
aWduZWQKICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBoLmlkZW50
aWZpZXJzKClbaWRlbnRpZmllck51bWJlcl07CiAKICAgICAgICAgICAgIEluQnlJZFN0YXR1cyBz
dGF0dXMgPSBJbkJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgICAgICAgICAgICAgbV9pbmxp
bmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBtX2RmZ0NvZGVCbG9jaywKLSAgICAgICAgICAg
ICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3N0dWJJbmZvcywgbV9kZmdTdHViSW5mb3MsCisgICAg
ICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAorICAgICAgICAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ss
CiAgICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSwgdWlkKTsKIAogICAgICAgICAg
ICAgaWYgKHN0YXR1cy5pc1NpbXBsZSgpKSB7CkBAIC02NDU1LDYgKzY0NzcsOCBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICAgICAgaWYgKGFsbE9LKSB7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoRmlsdGVySW5CeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0
dXNlcy5hZGRJbkJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgc3RhdHVzKSksIGJhc2Up
OworICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgTm9kZSogbWF0Y2gg
PSBhZGRUb0dyYXBoKE1hdGNoU3RydWN0dXJlLCBPcEluZm8oZGF0YSksIGJhc2UpOwogICAgICAg
ICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQpLCBtYXRjaCk7CiAgICAgICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2lu
X2J5X2lkKTsKQEAgLTY2MzksMTIgKzY2NjMsMTkgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0
YWNrRW50cnk6OklubGluZQogICAgICAgICAvLyBXZSBkbyB0aGlzIHdoaWxlIGhvbGRpbmcgdGhl
IGxvY2sgYmVjYXVzZSB3ZSB3YW50IHRvIGVuY291cmFnZSBTdHJ1Y3R1cmVTdHViSW5mbydzCiAg
ICAgICAgIC8vIHRvIGJlIHBvdGVudGlhbGx5IGFkZGVkIHRvIG9wZXJhdGlvbnMgYW5kIGJlY2F1
c2UgdGhlIHByb2ZpbGVkIGJsb2NrIGNvdWxkIGJlIGluIHRoZQogICAgICAgICAvLyBtaWRkbGUg
b2YgTExJbnQtPkpJVCB0aWVyLXVwIGluIHdoaWNoIGNhc2Ugd2Ugd291bGQgYmUgYWRkaW5nIHRo
ZSBpbmZvJ3MgcmlnaHQgbm93LgotICAgICAgICBpZiAobV9wcm9maWxlZEJsb2NrLT5oYXNCYXNl
bGluZUpJVFByb2ZpbGluZygpKSB7Ci0gICAgICAgICAgICBtX3Byb2ZpbGVkQmxvY2stPmdldFN0
dWJJbmZvTWFwKGxvY2tlciwgbV9zdHViSW5mb3MpOwotICAgICAgICAgICAgbV9wcm9maWxlZEJs
b2NrLT5nZXRDYWxsTGlua0luZm9NYXAobG9ja2VyLCBtX2NhbGxMaW5rSW5mb3MpOwotICAgICAg
ICAgICAgbV9wcm9maWxlZEJsb2NrLT5nZXRCeVZhbEluZm9NYXAobG9ja2VyLCBtX2J5VmFsSW5m
b3MpOworICAgICAgICBpZiAobV9wcm9maWxlZEJsb2NrLT5oYXNCYXNlbGluZUpJVFByb2ZpbGlu
ZygpKQorICAgICAgICAgICAgbV9wcm9maWxlZEJsb2NrLT5nZXRJQ1N0YXR1c01hcChsb2NrZXIs
IG1fYmFzZWxpbmVNYXApOworICAgIH0KKyAgICAKKyAgICBpZiAoT3B0aW9uczo6dXNlUG9seXZh
cmlhbnREZXZpcnR1YWxpemF0aW9uKCkpIHsKKyAgICAgICAgQ29kZUJsb2NrKiBvcHRpbWl6ZWRC
bG9jayA9IG1fcHJvZmlsZWRCbG9jay0+cmVwbGFjZW1lbnQoKTsKKyAgICAgICAgbV9vcHRpbWl6
ZWRDb250ZXh0Lm9wdGltaXplZENvZGVCbG9jayA9IG9wdGltaXplZEJsb2NrOworICAgICAgICBp
ZiAob3B0aW1pemVkQmxvY2spIHsKKyAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2Nr
ZXIob3B0aW1pemVkQmxvY2stPm1fbG9jayk7CisgICAgICAgICAgICBvcHRpbWl6ZWRCbG9jay0+
Z2V0SUNTdGF0dXNNYXAobG9ja2VyLCBtX29wdGltaXplZENvbnRleHQubWFwKTsKICAgICAgICAg
fQogICAgIH0KKyAgICBieXRlQ29kZVBhcnNlci0+bV9pY0NvbnRleHRTdGFjay5hcHBlbmQoJm1f
b3B0aW1pemVkQ29udGV4dCk7CiAgICAgCiAgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzV2l0aEZpeHVwID0gc3RkOjptYXg8aW50Pihhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
Y29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOwogCkBAIC02NjU0LDYgKzY2ODUsNyBAQCBCeXRl
Q29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lCiAgICAgICAgIEFTU0VSVChpbmxp
bmVDYWxsRnJhbWVTdGFydC5pc1ZhbGlkKCkpOwogICAgICAgICAKICAgICAgICAgbV9pbmxpbmVD
YWxsRnJhbWUgPSBieXRlQ29kZVBhcnNlci0+bV9ncmFwaC5tX3BsYW4uaW5saW5lQ2FsbEZyYW1l
cy0+YWRkKCk7CisgICAgICAgIG1fb3B0aW1pemVkQ29udGV4dC5pbmxpbmVDYWxsRnJhbWUgPSBt
X2lubGluZUNhbGxGcmFtZTsKIAogICAgICAgICAvLyBUaGUgb3duZXIgaXMgdGhlIG1hY2hpbmUg
Y29kZSBibG9jaywgYW5kIHdlIGFscmVhZHkgaGF2ZSBhIGJhcnJpZXIgb24gdGhhdCB3aGVuIHRo
ZQogICAgICAgICAvLyBwbGFuIGZpbmlzaGVzLgpAQCAtNjcwOSw2ICs2NzQxLDEzIEBAIEJ5dGVD
b2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmUKICAgICBieXRlQ29kZVBhcnNlci0+
bV9pbmxpbmVTdGFja1RvcCA9IHRoaXM7CiB9CiAKK0J5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFj
a0VudHJ5Ojp+SW5saW5lU3RhY2tFbnRyeSgpCit7CisgICAgbV9ieXRlQ29kZVBhcnNlci0+bV9p
bmxpbmVTdGFja1RvcCA9IG1fY2FsbGVyOworICAgIFJFTEVBU0VfQVNTRVJUKG1fYnl0ZUNvZGVQ
YXJzZXItPm1faWNDb250ZXh0U3RhY2subGFzdCgpID09ICZtX29wdGltaXplZENvbnRleHQpOwor
ICAgIG1fYnl0ZUNvZGVQYXJzZXItPm1faWNDb250ZXh0U3RhY2sucmVtb3ZlTGFzdCgpOworfQor
CiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiB7CiAgICAgY2xlYXJDYWNo
ZXMoKTsKQEAgLTY4MDUsMTUgKzY4NDQsNiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgp
CiAgICAgCiAgICAgVkVSQk9TRV9MT0coIlBhcnNpbmcgIiwgKm1fY29kZUJsb2NrLCAiXG4iKTsK
ICAgICAKLSAgICBtX2RmZ0NvZGVCbG9jayA9IG1fZ3JhcGgubV9wbGFuLnByb2ZpbGVkREZHQ29k
ZUJsb2NrOwotICAgIGlmIChpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSAmJiBtX2RmZ0NvZGVC
bG9jawotICAgICAgICAmJiBPcHRpb25zOjp1c2VQb2x5dmFyaWFudERldmlydHVhbGl6YXRpb24o
KSkgewotICAgICAgICBpZiAoT3B0aW9uczo6dXNlUG9seXZhcmlhbnRDYWxsSW5saW5pbmcoKSkK
LSAgICAgICAgICAgIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlREZHU3RhdHVzZXMobV9kZmdDb2Rl
QmxvY2ssIG1fY2FsbENvbnRleHRNYXApOwotICAgICAgICBpZiAoT3B0aW9uczo6dXNlUG9seXZh
cmlhbnRCeUlkSW5saW5pbmcoKSkKLSAgICAgICAgICAgIG1fZGZnQ29kZUJsb2NrLT5nZXRTdHVi
SW5mb01hcChtX2RmZ1N0dWJJbmZvcyk7Ci0gICAgfQotICAgIAogICAgIElubGluZVN0YWNrRW50
cnkgaW5saW5lU3RhY2tFbnRyeSgKICAgICAgICAgdGhpcywgbV9jb2RlQmxvY2ssIG1fcHJvZmls
ZWRCbG9jaywgMCwgVmlydHVhbFJlZ2lzdGVyKCksIFZpcnR1YWxSZWdpc3RlcigpLAogICAgICAg
ICBtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBJbmxpbmVDYWxsRnJhbWU6OkNhbGwsIG51
bGxwdHIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJ
KHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJl
cml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NDYsNiArNDQ2LDEwIEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIFByb2ZpbGVDb250cm9sRmxvdzoK
ICAgICBjYXNlIFB1dEhpbnQ6CiAgICAgY2FzZSBJbml0aWFsaXplRW50cnlwb2ludEFyZ3VtZW50
czoKKyAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJ
ZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJJ
bkJ5SWRTdGF0dXM6CiAgICAgICAgIHdyaXRlKFNpZGVTdGF0ZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhp
dFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJzRXhpdFN0YXRlLmNwcAkocmV2aXNpb24gMjMyNDQxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1
LDYgKzc1LDEwIEBAIGJvb2wgY2xvYmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBoLCBOb2QKICAg
ICBjYXNlIEZlbmNlZFN0b3JlQmFycmllcjoKICAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlTdG9y
YWdlOgogICAgIGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKKyAgICBjYXNlIEZpbHRl
ckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICBjYXNl
IEZpbHRlclB1dEJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CiAgICAg
ICAgIC8vIFRoZXNlIGRvIGNsb2JiZXIgbWVtb3J5LCBidXQgbm90aGluZyB0aGF0IGlzIG9ic2Vy
dmFibGUuIEl0IG1heSBiZSBuaWNlIHRvIHNlcGFyYXRlIHRoZQogICAgICAgICAvLyBoZWFwcyBp
bnRvIHRob3NlIHRoYXQgYXJlIG9ic2VydmFibGUgYW5kIHRob3NlIHRoYXQgYXJlbid0LCBidXQg
d2UgZG9uJ3QgZG8gdGhhdCByaWdodCBub3cuCiAgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NDQwCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuaAkocmV2aXNpb24gMjMyNDQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1
LDYgKzM1LDcgQEAKICNpbmNsdWRlICJJbmxpbmVDYWxsRnJhbWVTZXQuaCIKICNpbmNsdWRlICJK
U0Nhc3QuaCIKICNpbmNsdWRlICJQcm9maWxlckNvbXBpbGF0aW9uLmgiCisjaW5jbHVkZSAiUmVj
b3JkZWRTdGF0dXNlcy5oIgogI2luY2x1ZGUgPHd0Zi9CYWcuaD4KICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KIApAQCAtMTI1LDYgKzEyNiw3IEBAIHB1YmxpYzoKICAgICBCYWc8Q29kZUJs
b2NrSmV0dGlzb25pbmdXYXRjaHBvaW50PiB3YXRjaHBvaW50czsKICAgICBCYWc8QWRhcHRpdmVT
dHJ1Y3R1cmVXYXRjaHBvaW50PiBhZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnRzOwogICAgIEJh
ZzxBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQ+IGFkYXB0aXZlSW5mZXJy
ZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludHM7CisgICAgUmVjb3JkZWRTdGF0dXNlcyByZWNvcmRl
ZFN0YXR1c2VzOwogICAgIFZlY3RvcjxKdW1wUmVwbGFjZW1lbnQ+IGp1bXBSZXBsYWNlbWVudHM7
CiAgICAgCiAgICAgU2NyYXRjaEJ1ZmZlciogY2F0Y2hPU1JFbnRyeUJ1ZmZlcjsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhh
c2UuY3BwCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTU3LDcgKzU1Nywx
NSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGF1dG8gYWRkRmlsdGVyU3RhdHVzID0g
WyZdICgpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgK
KyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIEZpbHRlckdl
dEJ5SWRTdGF0dXMsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5m
byhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFkZEdldEJ5SWRTdGF0dXMobm9kZS0+
b3JpZ2luLnNlbWFudGljLCBzdGF0dXMpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2Uo
Y2hpbGQpKTsKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIGlmIChzdGF0dXMubnVtVmFyaWFudHMoKSA9PSAxKSB7CisgICAgICAgICAgICAgICAg
ICAgIGFkZEZpbHRlclN0YXR1cygpOwogICAgICAgICAgICAgICAgICAgICBlbWl0R2V0QnlPZmZz
ZXQoaW5kZXhJbkJsb2NrLCBub2RlLCBiYXNlVmFsdWUsIHN0YXR1c1swXSwgaWRlbnRpZmllck51
bWJlcik7CiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKQEAgLTU2Niw2ICs1NzQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIGlmICghaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkpCiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGFkZEZpbHRlclN0YXR1
cygpOwogICAgICAgICAgICAgICAgIE11bHRpR2V0QnlPZmZzZXREYXRhKiBkYXRhID0gbV9ncmFw
aC5tX211bHRpR2V0QnlPZmZzZXREYXRhLmFkZCgpOwogICAgICAgICAgICAgICAgIGZvciAoY29u
c3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBzdGF0dXMudmFyaWFudHMoKSkgewogICAgICAg
ICAgICAgICAgICAgICBkYXRhLT5jYXNlcy5hcHBlbmQoCkBAIC02MzksNiArNjQ4LDExIEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgaWYgKCFhbGxHb29kKQogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBtX2luc2VydGlvblNl
dC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25l
LCBGaWx0ZXJQdXRCeUlkU3RhdHVzLCBub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAg
IE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFkZFB1dEJ5SWRTdGF0dXMo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBzdGF0dXMpKSwKKyAgICAgICAgICAgICAgICAgICAgRWRn
ZShjaGlsZCkpOworICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChzdGF0dXMu
bnVtVmFyaWFudHMoKSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRQdXRCeU9mZnNl
dChpbmRleEluQmxvY2ssIG5vZGUsIGJhc2VWYWx1ZSwgc3RhdHVzWzBdLCBpZGVudGlmaWVyTnVt
YmVyKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmgJKHJldmlzaW9uIDIzMjQ0
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDEwIEBAIHN0cnVjdCBTZXRQb2ludGVyQWRhcHRv
ciB7CiAgICAgewogICAgICAgICByZXR1cm4gc2V0LT5hZGQoY29tbW9uLndhdGNocG9pbnRzLmFk
ZChjb2RlQmxvY2spKTsKICAgICB9Ci0gICAgc3RhdGljIGJvb2wgaGFzQmVlbkludmFsaWRhdGVk
KFQgc2V0KSB7IHJldHVybiBzZXQtPmhhc0JlZW5JbnZhbGlkYXRlZCgpOyB9CisgICAgc3RhdGlj
IGJvb2wgaGFzQmVlbkludmFsaWRhdGVkKFQgc2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNl
dC0+aGFzQmVlbkludmFsaWRhdGVkKCk7CisgICAgfQogICAgIHN0YXRpYyB2b2lkIGR1bXBJbkNv
bnRleHQoUHJpbnRTdHJlYW0mIG91dCwgVCBzZXQsIER1bXBDb250ZXh0KikKICAgICB7CiAgICAg
ICAgIG91dC5wcmludChSYXdQb2ludGVyKHNldCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24gMjMyNDQxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTMsNiArMzEzLDEw
IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEF0b21p
Y3NYb3I6CiAgICAgY2FzZSBBdG9taWNzSXNMb2NrRnJlZToKICAgICBjYXNlIE1hdGNoU3RydWN0
dXJlOgorICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJHZXRC
eUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRl
ckluQnlJZFN0YXR1czoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY2FzZSBQdXNoV2l0
aFNjb3BlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTczLDYgKzIxNzMsMTAgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBHZXRHbG9iYWxUaGlzOgogICAgICAgICBjYXNlIEV4dHJhY3RWYWx1
ZUZyb21XZWFrTWFwR2V0OgogICAgICAgICBjYXNlIENQVUludHJpbnNpYzoKKyAgICAgICAgY2Fz
ZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJHZXRCeUlkU3RhdHVz
OgorICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVy
SW5CeUlkU3RhdHVzOgogICAgICAgICAgICAgYnJlYWs7CiAjZWxzZQogICAgICAgICBkZWZhdWx0
OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDIz
MjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNTYsNiArMzU2LDE0IEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCwgY29uc3QKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiaWdub3JlTGFzdEluZGV4SXNX
cml0YWJsZSA9ICIsIG5vZGUtPmlnbm9yZUxhc3RJbmRleElzV3JpdGFibGUoKSk7CiAgICAgaWYg
KG5vZGUtPmlzQ29uc3RhbnQoKSkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBwb2ludGVyRHVt
cEluQ29udGV4dChub2RlLT5jb25zdGFudCgpLCBjb250ZXh0KSk7CisgICAgaWYgKG5vZGUtPmhh
c0NhbGxMaW5rU3RhdHVzKCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgKm5vZGUtPmNhbGxM
aW5rU3RhdHVzKCkpOworICAgIGlmIChub2RlLT5oYXNHZXRCeUlkU3RhdHVzKCkpCisgICAgICAg
IG91dC5wcmludChjb21tYSwgKm5vZGUtPmdldEJ5SWRTdGF0dXMoKSk7CisgICAgaWYgKG5vZGUt
Pmhhc0luQnlJZFN0YXR1cygpKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICpub2RlLT5pbkJ5
SWRTdGF0dXMoKSk7CisgICAgaWYgKG5vZGUtPmhhc1B1dEJ5SWRTdGF0dXMoKSkKKyAgICAgICAg
b3V0LnByaW50KGNvbW1hLCAqbm9kZS0+cHV0QnlJZFN0YXR1cygpKTsKICAgICBpZiAobm9kZS0+
aXNKdW1wKCkpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIlQ6IiwgKm5vZGUtPnRhcmdldEJs
b2NrKCkpOwogICAgIGlmIChub2RlLT5pc0JyYW5jaCgpKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR01heUV4aXQuY3BwCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiAr
MTAxLDEwIEBAIEV4aXRNb2RlIG1heUV4aXRJbXBsKEdyYXBoJiBncmFwaCwgTm9kZSoKICAgICBj
YXNlIFB1dENsb3N1cmVWYXI6CiAgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CiAg
ICAgY2FzZSBOdWtlU3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5OgorICAgIGNhc2UgRmlsdGVyQ2Fs
bExpbmtTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJHZXRCeUlkU3RhdHVzOgorICAgIGNhc2UgRmls
dGVyUHV0QnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKICAgICAgICAg
YnJlYWs7CiAKICAgICBjYXNlIFN0ckNhdDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjc2OSw2ICsyNzY5LDUwIEBAIHB1YmxpYzoKICAg
ICAgICAgQVNTRVJUKG9wKCkgPT0gVGhyb3dTdGF0aWNFcnJvcik7CiAgICAgICAgIHJldHVybiBt
X29wSW5mby5hczx1aW50MzJfdD4oKTsKICAgICB9CisgICAgCisgICAgYm9vbCBoYXNDYWxsTGlu
a1N0YXR1cygpCisgICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBGaWx0ZXJDYWxsTGlua1N0
YXR1czsKKyAgICB9CisgICAgCisgICAgQ2FsbExpbmtTdGF0dXMqIGNhbGxMaW5rU3RhdHVzKCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChoYXNDYWxsTGlua1N0YXR1cygpKTsKKyAgICAgICAgcmV0
dXJuIG1fb3BJbmZvLmFzPENhbGxMaW5rU3RhdHVzKj4oKTsKKyAgICB9CisgICAgCisgICAgYm9v
bCBoYXNHZXRCeUlkU3RhdHVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBvcCgpID09IEZpbHRl
ckdldEJ5SWRTdGF0dXM7CisgICAgfQorICAgIAorICAgIEdldEJ5SWRTdGF0dXMqIGdldEJ5SWRT
dGF0dXMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc0dldEJ5SWRTdGF0dXMoKSk7CisgICAg
ICAgIHJldHVybiBtX29wSW5mby5hczxHZXRCeUlkU3RhdHVzKj4oKTsKKyAgICB9CisgICAgCisg
ICAgYm9vbCBoYXNJbkJ5SWRTdGF0dXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0g
RmlsdGVySW5CeUlkU3RhdHVzOworICAgIH0KKyAgICAKKyAgICBJbkJ5SWRTdGF0dXMqIGluQnlJ
ZFN0YXR1cygpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzSW5CeUlkU3RhdHVzKCkpOworICAg
ICAgICByZXR1cm4gbV9vcEluZm8uYXM8SW5CeUlkU3RhdHVzKj4oKTsKKyAgICB9CisgICAgCisg
ICAgYm9vbCBoYXNQdXRCeUlkU3RhdHVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBvcCgpID09
IEZpbHRlclB1dEJ5SWRTdGF0dXM7CisgICAgfQorICAgIAorICAgIFB1dEJ5SWRTdGF0dXMqIHB1
dEJ5SWRTdGF0dXMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc1B1dEJ5SWRTdGF0dXMoKSk7
CisgICAgICAgIHJldHVybiBtX29wSW5mby5hczxQdXRCeUlkU3RhdHVzKj4oKTsKKyAgICB9CiAK
ICAgICB2b2lkIGR1bXBDaGlsZHJlbihQcmludFN0cmVhbSYgb3V0KQogICAgIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDIzMjQ0MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzk3LDExICszOTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAg
bWFjcm8oR2V0QXJndW1lbnQsIE5vZGVSZXN1bHRKUykgXAogICAgIFwKICAgICBtYWNybyhOZXdG
dW5jdGlvbiwgTm9kZVJlc3VsdEpTKSBcCi0gICAgXAogICAgIG1hY3JvKE5ld0dlbmVyYXRvckZ1
bmN0aW9uLCBOb2RlUmVzdWx0SlMpIFwKLSAgICBcCiAgICAgbWFjcm8oTmV3QXN5bmNHZW5lcmF0
b3JGdW5jdGlvbiwgTm9kZVJlc3VsdEpTKSBcCi0gICAgXAogICAgIG1hY3JvKE5ld0FzeW5jRnVu
Y3Rpb24sIE5vZGVSZXN1bHRKUykgXAogICAgIFwKICAgICAvKiBCbG9jayB0ZXJtaW5hbHMuICov
XApAQCAtNDc4LDYgKzQ3NSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAg
ICAgXAogICAgIC8qIFVzZWQgZm9yICR2bSBwZXJmb3JtYW5jZSBkZWJ1Z2dpbmcgKi8gXAogICAg
IG1hY3JvKENQVUludHJpbnNpYywgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAor
ICAgIFwKKyAgICAvKiBVc2VkIHRvIHByb3ZpZGUgZmVlZGJhY2sgdG8gdGhlIElDIHByb2ZpbGVy
LiAqLyBcCisgICAgbWFjcm8oRmlsdGVyQ2FsbExpbmtTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKKyAgICBtYWNybyhGaWx0ZXJHZXRCeUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisg
ICAgbWFjcm8oRmlsdGVySW5CeUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFj
cm8oRmlsdGVyUHV0QnlJZFN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAogCiAKIC8vIFRoaXMg
ZW51bSBnZW5lcmF0ZXMgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaWQgZm9yIGFsbCBOb2Rl
IHR5cGVzLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0QmFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0QmFz
ZS5jcHAJKHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDExICs0MiwxNyBAQCB2b2lk
IE9TUkV4aXRCYXNlOjpjb25zaWRlckFkZGluZ0FzRnJlcXVlCiAgICAgICAgIGJhc2VsaW5lQ29k
ZUJsb2NrRm9yT3JpZ2luQW5kQmFzZWxpbmVDb2RlQmxvY2soCiAgICAgICAgICAgICBtX2NvZGVP
cmlnaW5Gb3JFeGl0UHJvZmlsZSwgcHJvZmlsZWRDb2RlQmxvY2spOwogICAgIGlmIChzb3VyY2VQ
cm9maWxlZENvZGVCbG9jaykgeworICAgICAgICBFeGl0aW5nSW5saW5lS2luZCBpbmxpbmVLaW5k
OworICAgICAgICBpZiAobV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGUuaW5saW5lQ2FsbEZyYW1l
KQorICAgICAgICAgICAgaW5saW5lS2luZCA9IEV4aXRGcm9tSW5saW5lZDsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgaW5saW5lS2luZCA9IEV4aXRGcm9tTm90SW5saW5lZDsKKyAgICAgICAg
CiAgICAgICAgIEZyZXF1ZW50RXhpdFNpdGUgc2l0ZTsKICAgICAgICAgaWYgKG1fd2FzSG9pc3Rl
ZCkKLSAgICAgICAgICAgIHNpdGUgPSBGcmVxdWVudEV4aXRTaXRlKEhvaXN0aW5nRmFpbGVkLCBq
aXRUeXBlKTsKKyAgICAgICAgICAgIHNpdGUgPSBGcmVxdWVudEV4aXRTaXRlKEhvaXN0aW5nRmFp
bGVkLCBqaXRUeXBlLCBpbmxpbmVLaW5kKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc2l0
ZSA9IEZyZXF1ZW50RXhpdFNpdGUobV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGUuYnl0ZWNvZGVJ
bmRleCwgbV9raW5kLCBqaXRUeXBlKTsKKyAgICAgICAgICAgIHNpdGUgPSBGcmVxdWVudEV4aXRT
aXRlKG1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlLmJ5dGVjb2RlSW5kZXgsIG1fa2luZCwgaml0
VHlwZSwgaW5saW5lS2luZCk7CiAgICAgICAgIEV4aXRQcm9maWxlOjphZGQoc291cmNlUHJvZmls
ZWRDb2RlQmxvY2ssIHNpdGUpOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNl
LmNwcAkocmV2aXNpb24gMjMyNDQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
YmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzU2LDYg
Kzc1Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBwcm9tb3RlTG9jYWxIZWFw
KCk7CisgICAgICAgIHJlbW92ZUlDU3RhdHVzRmlsdGVycygpOwogCiAgICAgICAgIGlmIChPcHRp
b25zOjp2YWxpZGF0ZUdyYXBoQXRFYWNoUGhhc2UoKSkKICAgICAgICAgICAgIERGRzo6dmFsaWRh
dGUobV9ncmFwaCwgRHVtcEdyYXBoLCBncmFwaEJlZm9yZVNpbmtpbmcpOwpAQCAtMTA4OCw2ICsx
MDg5LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgUHV0SGludDoKICAgICAgICAgICAgIC8v
IEhhbmRsZWQgYnkgT1NSIGF2YWlsYWJpbGl0eSBhbmFseXNpcwogICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICAg
ICAgY2FzZSBGaWx0ZXJHZXRCeUlkU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRT
dGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICAgICAgYnJl
YWs7CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIG1fZ3JhcGguZG9Ub0NoaWxkcmVu
KApAQCAtMjMzMSw2ICsyMzM4LDI1IEBAIHByaXZhdGU6CiAKICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CisgICAgCisgICAgdm9pZCByZW1vdmVJQ1N0YXR1c0Zp
bHRlcnMoKQorICAgIHsKKyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGgu
YmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgeworICAgICAgICAgICAgZm9yIChOb2RlKiBub2RlIDog
KmJsb2NrKSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgICAg
ICAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICAgICAgICAgICAgICBjYXNl
IEZpbHRlckdldEJ5SWRTdGF0dXM6CisgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlk
U3RhdHVzOgorICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAg
ICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPmlzUGhhbnRvbUFsbG9jYXRpb24oKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZVdpdGhvdXRDaGVja3MoKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQogCiAgICAgLy8gVGhpcyBpcyBhIGdyZWF0IHdheSBvZiBhc2tpbmcg
dmFsdWUtPmlzU3RpbGxWYWxpZCgpIHdpdGhvdXQgaGF2aW5nIHRvIHdvcnJ5IGFib3V0IGdldHRp
bmcKICAgICAvLyBkaWZmZXJlbnQgYW5zd2Vycy4gSXQgdHVybnMgb3V0IHRoYXQgdGhpcyBhbmFs
eXNpcyB3b3JrcyBPSyByZWdhcmRsZXNzIG9mIHdoYXQgdGhpcwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1BsYW4uY3BwCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTU1LDYgKzU1NSw3
IEBAIHZvaWQgUGxhbjo6cmVhbGx5QWRkKENvbW1vbkRhdGEqIGNvbW1vbkQKICAgICBpZGVudGlm
aWVycy5yZWFsbHlBZGQoKnZtLCBjb21tb25EYXRhKTsKICAgICB3ZWFrUmVmZXJlbmNlcy5yZWFs
bHlBZGQoKnZtLCBjb21tb25EYXRhKTsKICAgICB0cmFuc2l0aW9ucy5yZWFsbHlBZGQoKnZtLCBj
b21tb25EYXRhKTsKKyAgICBjb21tb25EYXRhLT5yZWNvcmRlZFN0YXR1c2VzID0gV1RGTW92ZShy
ZWNvcmRlZFN0YXR1c2VzKTsKIH0KIAogdm9pZCBQbGFuOjpub3RpZnlDb21waWxpbmcoKQpAQCAt
NjMzLDYgKzYzNCw4IEBAIHZvaWQgUGxhbjo6Y2hlY2tMaXZlbmVzc0FuZFZpc2l0Q2hpbGRyZW4K
ICAgICBjbGVhbk11c3RIYW5kbGVWYWx1ZXNJZk5lY2Vzc2FyeSgpOwogICAgIGZvciAodW5zaWdu
ZWQgaSA9IG11c3RIYW5kbGVWYWx1ZXMuc2l6ZSgpOyBpLS07KQogICAgICAgICB2aXNpdG9yLmFw
cGVuZFVuYmFycmllcmVkKG11c3RIYW5kbGVWYWx1ZXNbaV0pOworICAgIAorICAgIHJlY29yZGVk
U3RhdHVzZXMubWFya0lmQ2hlYXAodmlzaXRvcik7CiAKICAgICB2aXNpdG9yLmFwcGVuZFVuYmFy
cmllcmVkKGNvZGVCbG9jayk7CiAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxv
Y2stPmFsdGVybmF0aXZlKCkpOwpAQCAtNjQ5LDYgKzY1MiwxMSBAQCB2b2lkIFBsYW46OmNoZWNr
TGl2ZW5lc3NBbmRWaXNpdENoaWxkcmVuCiAgICAgdHJhbnNpdGlvbnMudmlzaXRDaGlsZHJlbih2
aXNpdG9yKTsKIH0KIAordm9pZCBQbGFuOjpmaW5hbGl6ZUluR0MoKQoreworICAgIHJlY29yZGVk
U3RhdHVzZXMuZmluYWxpemVXaXRob3V0RGVsZXRpbmcoKTsKK30KKwogYm9vbCBQbGFuOjppc0tu
b3duVG9CZUxpdmVEdXJpbmdHQygpCiB7CiAgICAgaWYgKHN0YWdlID09IENhbmNlbGxlZCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5oCShyZXZpc2lvbiAyMzI0NDEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2
LDYgKzM2LDcgQEAKICNpbmNsdWRlICJEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCIKICNp
bmNsdWRlICJPcGVyYW5kcy5oIgogI2luY2x1ZGUgIlByb2ZpbGVyQ29tcGlsYXRpb24uaCIKKyNp
bmNsdWRlICJSZWNvcmRlZFN0YXR1c2VzLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIApAQCAtNzIsNiArNzMsNyBAQCBz
dHJ1Y3QgUGxhbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlCiAgICAgdm9pZCBpdGVyYXRl
Q29kZUJsb2Nrc0ZvckdDKGNvbnN0IEZ1bmMmKTsKICAgICB2b2lkIGNoZWNrTGl2ZW5lc3NBbmRW
aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CiAgICAgYm9vbCBpc0tub3duVG9CZUxpdmVEdXJp
bmdHQygpOworICAgIHZvaWQgZmluYWxpemVJbkdDKCk7CiAgICAgdm9pZCBjYW5jZWwoKTsKIAog
ICAgIGJvb2wgY2FuVGllclVwQW5kT1NSRW50ZXIoKSBjb25zdCB7IHJldHVybiAhdGllclVwQW5k
T1NSRW50ZXJCeXRlY29kZXMuaXNFbXB0eSgpOyB9CkBAIC0xMDQsNiArMTA2LDcgQEAgc3RydWN0
IFBsYW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZQogICAgIERlc2lyZWRJZGVudGlmaWVy
cyBpZGVudGlmaWVyczsKICAgICBEZXNpcmVkV2Vha1JlZmVyZW5jZXMgd2Vha1JlZmVyZW5jZXM7
CiAgICAgRGVzaXJlZFRyYW5zaXRpb25zIHRyYW5zaXRpb25zOworICAgIFJlY29yZGVkU3RhdHVz
ZXMgcmVjb3JkZWRTdGF0dXNlczsKICAgICAKICAgICBib29sIHdpbGxUcnlUb1RpZXJVcCB7IGZh
bHNlIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMzI0NDEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIxMyw2ICsxMjEzLDEwIEBAIHByaXZhdGU6CiAgICAg
ICAgIGNhc2UgSW5pdGlhbGl6ZUVudHJ5cG9pbnRBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgV2Vh
a1NldEFkZDoKICAgICAgICAgY2FzZSBXZWFrTWFwU2V0OgorICAgICAgICBjYXNlIEZpbHRlckNh
bGxMaW5rU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0dXM6CisgICAgICAg
IGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0
dXM6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICAvLyBUaGlzIGdl
dHMgaWdub3JlZCBiZWNhdXNlIGl0IG9ubHkgcHJldGVuZHMgdG8gcHJvZHVjZSBhIHZhbHVlLgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJl
dmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NzksNiArNDc5LDE0IEBAIGJvb2wgc2FmZVRvRXhl
Y3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICAgICAgLy8gYWxyZWFkeSBmb3JjZSB0aGVz
ZSB0aGluZ3MgdG8gYmUgb3JkZXJlZCBwcmVjaXNlbHkuIEknbSBqdXN0IG5vdCBjb25maWRlbnQg
ZW5vdWdoIGluIG15CiAgICAgICAgIC8vIGVmZmVjdCBiYXNlZCBtZW1vcnkgbW9kZWwgdG8gcmVs
eSBzb2xlbHkgb24gdGhhdCByaWdodCBub3cuCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgCisgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICBjYXNlIEZpbHRlckdldEJ5
SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVy
SW5CeUlkU3RhdHVzOgorICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRoZXNlIHRvIGJlIG1vdmVk
IGFueXdoZXJlIG90aGVyIHRoYW4gd2hlcmUgd2UgcHV0IHRoZW0sIHNpbmNlIHdlIHdhbnQgdGhl
bQorICAgICAgICAvLyB0byBjYXB0dXJlICJwcm9maWxpbmciIGF0IHRoZSBwb2ludCBpbiBjb250
cm9sIGZsb3cgaGVyZSB0aGUgdXNlciBwdXQgdGhlbS4KKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgY2FzZSBHZXRCeVZhbDoKICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwMzcs
NiArNDAzNywxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBDaGVja1N0cnVjdHVyZU9yRW1wdHk6CiAgICAgICAgIERGR19DUkFTSChtX2ppdC5n
cmFwaCgpLCBub2RlLCAiQ2hlY2tTdHJ1Y3R1cmVPckVtcHR5IG9ubHkgdXNlZCBpbiA2NC1iaXQg
REZHIik7CiAgICAgICAgIGJyZWFrOworICAgICAgICAKKyAgICBjYXNlIEZpbHRlckNhbGxMaW5r
U3RhdHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlclB1
dEJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgIG1faW50
ZXJwcmV0ZXIuZmlsdGVySUNTdGF0dXMobm9kZSk7CisgICAgICAgIG5vUmVzdWx0KG5vZGUpOwor
ICAgICAgICBicmVhazsKIAogICAgIGNhc2UgTGFzdE5vZGVUeXBlOgogICAgIGNhc2UgUGhpOgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjMwLDYgKzQ2MzAsMTQg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVh
azsKICAgICB9CiAKKyAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmls
dGVyR2V0QnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CisgICAgY2Fz
ZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVySUNTdGF0
dXMobm9kZSk7CisgICAgICAgIG5vUmVzdWx0KG5vZGUpOworICAgICAgICBicmVhazsKKwogI2Vs
c2UgLy8gRU5BQkxFKEZUTF9KSVQpCiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBj
YXNlIENoZWNrVGllclVwQXRSZXR1cm46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIz
MjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25Q
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04OTgsMTAgKzg5OCwxNCBAQCBwcml2YXRlOgog
ICAgICAgICBjYXNlIFRhaWxDYWxsOiB7CiAgICAgICAgICAgICBFeGVjdXRhYmxlQmFzZSogZXhl
Y3V0YWJsZSA9IG51bGxwdHI7CiAgICAgICAgICAgICBFZGdlIGNhbGxlZSA9IG1fZ3JhcGgudmFy
QXJnQ2hpbGQobV9ub2RlLCAwKTsKLSAgICAgICAgICAgIGlmIChKU0Z1bmN0aW9uKiBmdW5jdGlv
biA9IGNhbGxlZS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU0Z1bmN0aW9uKj4odm0oKSkpCisgICAg
ICAgICAgICBDYWxsVmFyaWFudCBjYWxsVmFyaWFudDsKKyAgICAgICAgICAgIGlmIChKU0Z1bmN0
aW9uKiBmdW5jdGlvbiA9IGNhbGxlZS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU0Z1bmN0aW9uKj4o
dm0oKSkpIHsKICAgICAgICAgICAgICAgICBleGVjdXRhYmxlID0gZnVuY3Rpb24tPmV4ZWN1dGFi
bGUoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNhbGxlZS0+aXNGdW5jdGlvbkFsbG9jYXRpb24o
KSkKKyAgICAgICAgICAgICAgICBjYWxsVmFyaWFudCA9IENhbGxWYXJpYW50KGZ1bmN0aW9uKTsK
KyAgICAgICAgICAgIH0gZWxzZSBpZiAoY2FsbGVlLT5pc0Z1bmN0aW9uQWxsb2NhdGlvbigpKSB7
CiAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZSA9IGNhbGxlZS0+Y2FzdE9wZXJhbmQ8RnVuY3Rp
b25FeGVjdXRhYmxlKj4oKTsKKyAgICAgICAgICAgICAgICBjYWxsVmFyaWFudCA9IENhbGxWYXJp
YW50KGV4ZWN1dGFibGUpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBpZiAoIWV4ZWN1dGFibGUpCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC05MTksNiArOTIz
LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAKKyAgICAgICAgICAgIG1fZ3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkQ2Fs
bExpbmtTdGF0dXMobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMsIENhbGxMaW5rU3RhdHVzKGNhbGxW
YXJpYW50KSk7CisgICAgICAgICAgICAKICAgICAgICAgICAgIG1fbm9kZS0+Y29udmVydFRvRGly
ZWN0Q2FsbChtX2dyYXBoLmZyZWV6ZShleGVjdXRhYmxlKSk7CiAgICAgICAgICAgICBtX2NoYW5n
ZWQgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1dvcmtsaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1dvcmtsaXN0LmNwcAkocmV2aXNpb24gMjMyNDQxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5Myw4ICsz
OTMsMTAgQEAgdm9pZCBXb3JrbGlzdDo6cmVtb3ZlRGVhZFBsYW5zKFZNJiB2bSkKICAgICAgICAg
ICAgIFBsYW4qIHBsYW4gPSBpdGVyLT52YWx1ZS5nZXQoKTsKICAgICAgICAgICAgIGlmIChwbGFu
LT52bSAhPSAmdm0pCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAo
cGxhbi0+aXNLbm93blRvQmVMaXZlRHVyaW5nR0MoKSkKKyAgICAgICAgICAgIGlmIChwbGFuLT5p
c0tub3duVG9CZUxpdmVEdXJpbmdHQygpKSB7CisgICAgICAgICAgICAgICAgcGxhbi0+ZmluYWxp
emVJbkdDKCk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChwbGFuLT5zdGFnZSAhPSBQbGFuOjpDYW5jZWxsZWQpOyAv
LyBTaG91bGQgbm90IGJlIGNhbmNlbGxlZCwgeWV0LgogICAgICAgICAgICAgQVNTRVJUKCFkZWFk
UGxhbktleXMuY29udGFpbnMocGxhbi0+a2V5KCkpKTsKICAgICAgICAgICAgIGRlYWRQbGFuS2V5
cy5hZGQocGxhbi0+a2V5KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgJKHJldmlzaW9uIDIzMjQ0MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCSh3
b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
RlRMIHsKICAgICBtYWNybyhEaXJlY3RBcmd1bWVudHNfbWluQ2FwYWNpdHksIERpcmVjdEFyZ3Vt
ZW50czo6b2Zmc2V0T2ZNaW5DYXBhY2l0eSgpKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRz
X21hcHBlZEFyZ3VtZW50cywgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZk1hcHBlZEFyZ3VtZW50
cygpKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX21vZGlmaWVkQXJndW1lbnRzRGVzY3Jp
cHRvciwgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZk1vZGlmaWVkQXJndW1lbnRzRGVzY3JpcHRv
cigpKSBcCisgICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9hbGxvY2F0b3IsIEZ1bmN0aW9uUmFy
ZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRp
b25Qcm9maWxlOjpvZmZzZXRPZkFsbG9jYXRvcigpKSBcCisgICAgbWFjcm8oRnVuY3Rpb25SYXJl
RGF0YV9zdHJ1Y3R1cmUsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlv
blByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZlN0cnVjdHVyZSgp
KSBcCiAgICAgbWFjcm8oR2V0dGVyU2V0dGVyX2dldHRlciwgR2V0dGVyU2V0dGVyOjpvZmZzZXRP
ZkdldHRlcigpKSBcCiAgICAgbWFjcm8oR2V0dGVyU2V0dGVyX3NldHRlciwgR2V0dGVyU2V0dGVy
OjpvZmZzZXRPZlNldHRlcigpKSBcCiAgICAgbWFjcm8oSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3Ro
LCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkgXApAQCAtMTEyLDEwICsxMTQs
MTAgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3JvKFN0cmluZ0lt
cGxfbGVuZ3RoLCBTdHJpbmdJbXBsOjpsZW5ndGhNZW1vcnlPZmZzZXQoKSkgXAogICAgIG1hY3Jv
KFN0cnVjdHVyZV9jbGFzc0luZm8sIFN0cnVjdHVyZTo6Y2xhc3NJbmZvT2Zmc2V0KCkpIFwKICAg
ICBtYWNybyhTdHJ1Y3R1cmVfZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU6Omdsb2JhbE9iamVjdE9m
ZnNldCgpKSBcCisgICAgbWFjcm8oU3RydWN0dXJlX2luZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3Rv
cnksIFN0cnVjdHVyZTo6aW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9yeU9mZnNldCgpKSBcCisg
ICAgbWFjcm8oU3RydWN0dXJlX2lubGluZUNhcGFjaXR5LCBTdHJ1Y3R1cmU6OmlubGluZUNhcGFj
aXR5T2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfcHJvdG90eXBlLCBTdHJ1Y3R1cmU6
OnByb3RvdHlwZU9mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlX3N0cnVjdHVyZUlELCBT
dHJ1Y3R1cmU6OnN0cnVjdHVyZUlET2Zmc2V0KCkpIFwKLSAgICBtYWNybyhTdHJ1Y3R1cmVfaW5s
aW5lQ2FwYWNpdHksIFN0cnVjdHVyZTo6aW5saW5lQ2FwYWNpdHlPZmZzZXQoKSkgXAotICAgIG1h
Y3JvKFN0cnVjdHVyZV9pbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5LCBTdHJ1Y3R1cmU6Omlu
ZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnlPZmZzZXQoKSkgXAogICAgIG1hY3JvKEhhc2hNYXBJ
bXBsX2NhcGFjaXR5LCBIYXNoTWFwSW1wbDxIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRh
S2V5Pj46Om9mZnNldE9mQ2FwYWNpdHkoKSkgXAogICAgIG1hY3JvKEhhc2hNYXBJbXBsX2J1ZmZl
ciwgIEhhc2hNYXBJbXBsPEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+Pjo6b2Zm
c2V0T2ZCdWZmZXIoKSkgXAogICAgIG1hY3JvKEhhc2hNYXBJbXBsX2hlYWQsICBIYXNoTWFwSW1w
bDxIYXNoTWFwQnVja2V0PEhhc2hNYXBCdWNrZXREYXRhS2V5Pj46Om9mZnNldE9mSGVhZCgpKSBc
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
CShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFi
aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1Miw2ICszNTIsMTEgQEAgaW5saW5lIENh
cGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6
CiAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgIGNhc2UgTWF0Y2hTdHJ1Y3R1cmU6Cisg
ICAgY2FzZSBDcmVhdGVUaGlzOgorICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAg
Y2FzZSBGaWx0ZXJHZXRCeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoK
KyAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKICAgICAgICAgLy8gVGhlc2UgYXJlIE9LLgog
ICAgICAgICBicmVhazsKIApAQCAtMzYzLDcgKzM2OCw2IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2
ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIElkZW50aXR5
V2l0aFByb2ZpbGU6Ci0gICAgY2FzZSBDcmVhdGVUaGlzOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBJ
bkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgogICAgIGNhc2UgQ2hlY2tU
aWVyVXBBdFJldHVybjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUwLDYgKzg1MCw5
IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgTmV3QXJyYXlXaXRoU3ByZWFkOgogICAgICAgICAg
ICAgY29tcGlsZU5ld0FycmF5V2l0aFNwcmVhZCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgQ3JlYXRlVGhpczoKKyAgICAgICAgICAgIGNvbXBpbGVDcmVhdGVUaGlzKCk7Cisg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTcHJlYWQ6CiAgICAgICAgICAgICBjb21w
aWxlU3ByZWFkKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEyOTIsNiArMTI5NSwxMiBAQCBw
cml2YXRlOgogICAgICAgICBjYXNlIENhbGxET01HZXR0ZXI6CiAgICAgICAgICAgICBjb21waWxl
Q2FsbERPTUdldHRlcigpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRmlsdGVy
Q2FsbExpbmtTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICAg
ICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlckluQnlJZFN0
YXR1czoKKyAgICAgICAgICAgIGNvbXBpbGVGaWx0ZXJJQ1N0YXR1cygpOworICAgICAgICAgICAg
YnJlYWs7CiAKICAgICAgICAgY2FzZSBQaGFudG9tTG9jYWw6CiAgICAgICAgIGNhc2UgTG9vcEhp
bnQ6CkBAIC01NjcwLDYgKzU2NzksNDAgQEAgcHJpdmF0ZToKIAogICAgICAgICBzZXRKU1ZhbHVl
KHJlc3VsdCk7CiAgICAgfQorICAgIAorICAgIHZvaWQgY29tcGlsZUNyZWF0ZVRoaXMoKQorICAg
IHsKKyAgICAgICAgTFZhbHVlIGNhbGxlZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisK
KyAgICAgICAgTEJhc2ljQmxvY2sgaXNGdW5jdGlvbkJsb2NrID0gbV9vdXQubmV3QmxvY2soKTsK
KyAgICAgICAgTEJhc2ljQmxvY2sgaGFzUmFyZURhdGEgPSBtX291dC5uZXdCbG9jaygpOworICAg
ICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExC
YXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgbV9v
dXQuYnJhbmNoKGlzRnVuY3Rpb24oY2FsbGVlLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkp
KSwgdXN1YWxseShpc0Z1bmN0aW9uQmxvY2spLCByYXJlbHkoc2xvd1BhdGgpKTsKKworICAgICAg
ICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzRnVuY3Rpb25CbG9jaywg
aGFzUmFyZURhdGEpOworICAgICAgICBMVmFsdWUgcmFyZURhdGEgPSBtX291dC5sb2FkUHRyKGNh
bGxlZSwgbV9oZWFwcy5KU0Z1bmN0aW9uX3JhcmVEYXRhKTsKKyAgICAgICAgbV9vdXQuYnJhbmNo
KG1fb3V0LmlzWmVybzY0KHJhcmVEYXRhKSwgcmFyZWx5KHNsb3dQYXRoKSwgdXN1YWxseShoYXNS
YXJlRGF0YSkpOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGhhc1JhcmVEYXRhLCBzbG93UGF0
aCk7CisgICAgICAgIExWYWx1ZSBhbGxvY2F0b3IgPSBtX291dC5sb2FkUHRyKHJhcmVEYXRhLCBt
X2hlYXBzLkZ1bmN0aW9uUmFyZURhdGFfYWxsb2NhdG9yKTsKKyAgICAgICAgTFZhbHVlIHN0cnVj
dHVyZSA9IG1fb3V0LmxvYWRQdHIocmFyZURhdGEsIG1faGVhcHMuRnVuY3Rpb25SYXJlRGF0YV9z
dHJ1Y3R1cmUpOworICAgICAgICBMVmFsdWUgYnV0dGVyZmx5ID0gbV9vdXQuY29uc3RJbnRQdHIo
MCk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoYWxs
b2NhdGVPYmplY3QoYWxsb2NhdG9yLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSwgc2xvd1BhdGgpKTsK
KyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24pOworICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93
UmVzdWx0ID0gbV9vdXQuYW5jaG9yKHZtQ2FsbCgKKyAgICAgICAgICAgIEludDY0LCBtX291dC5v
cGVyYXRpb24ob3BlcmF0aW9uQ3JlYXRlVGhpcyksIG1fY2FsbEZyYW1lLCBjYWxsZWUsIG1fb3V0
LmNvbnN0SW50MzIobV9ub2RlLT5pbmxpbmVDYXBhY2l0eSgpKSkpOworICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9u
LCBsYXN0TmV4dCk7CisgICAgICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5waGkoSW50NjQsIGZh
c3RSZXN1bHQsIHNsb3dSZXN1bHQpOworCisgICAgICAgIG11dGF0b3JGZW5jZSgpOworICAgICAg
ICBzZXRKU1ZhbHVlKHJlc3VsdCk7CisgICAgfQogCiAgICAgdm9pZCBjb21waWxlU3ByZWFkKCkK
ICAgICB7CkBAIC0xMjEzNiw2ICsxMjE3OSwxMSBAQCBwcml2YXRlOgogICAgICAgICBzZXRKU1Zh
bHVlKHBhdGNocG9pbnQpOwogICAgIH0KICAgICAKKyAgICB2b2lkIGNvbXBpbGVGaWx0ZXJJQ1N0
YXR1cygpCisgICAgeworICAgICAgICBtX2ludGVycHJldGVyLmZpbHRlcklDU3RhdHVzKG1fbm9k
ZSk7CisgICAgfQorICAgIAogICAgIHZvaWQgZW1pdFN3aXRjaEZvck11bHRpQnlPZmZzZXQoTFZh
bHVlIGJhc2UsIGJvb2wgc3RydWN0dXJlc0NoZWNrZWQsIFZlY3RvcjxTd2l0Y2hDYXNlLCAyPiYg
Y2FzZXMsIExCYXNpY0Jsb2NrIGV4aXQpCiAgICAgewogICAgICAgICBpZiAoY2FzZXMuaXNFbXB0
eSgpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0
dWJSb3V0aW5lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Bv
bHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmNwcAkocmV2aXNpb24gMjMyNDQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTk2LDEwICs5NiwyMiBAQCBDYWxsVmFyaWFudExpc3QgUG9seW1vcnBoaWND
YWxsU3R1YlJvdXRpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorYm9vbCBQb2x5bW9ycGhpY0Nh
bGxTdHViUm91dGluZTo6aGFzRWRnZXMoKSBjb25zdAoreworICAgIC8vIFRoZSBGVEwgZG9lcyBu
b3QgY291bnQgZWRnZXMgaW4gaXRzIHBvbHkgY2FsbCBzdHViIHJvdXRpbmVzLiBJZiB0aGUgRlRM
IHdlbnQgcG9seSBjYWxsLCB0aGVuCisgICAgLy8gaXQncyBub3QgbWVhbmluZ2Z1bCB0byBrZWVw
IHByb2ZpbGluZyAtIHdlIGNhbiBqdXN0IGxlYXZlIGl0IGF0IHRoYXQuIFJlbWVtYmVyLCB0aGUg
RlRMIHdvdWxkCisgICAgLy8gaGF2ZSBoYWQgZnVsbCBlZGdlIHByb2ZpbGluZyBmcm9tIHRoZSBE
RkcsIGFuZCBiYXNlZCBvbiB0aGlzIGluZm9ybWF0aW9uLCBpdCB3b3VsZCBoYXZlCisgICAgLy8g
ZGVjaWRlZCB0byBnbyBwb2x5LgorICAgIC8vCisgICAgLy8gVGhlcmUgcHJvYmFibHkgYXJlIHZl
cnktZGlmZmljdWx0LXRvLWltYWdpbmUgY29ybmVyIGNhc2VzIHdoZXJlIHRoZSBGVEwgbm90IGRv
aW5nIGVkZ2UKKyAgICAvLyBwcm9maWxpbmcgaXMgYmFkIGZvciBwb2x5dmFyaWFudCBpbmxpbmlu
Zy4gQnV0IHBvbHl2YXJpYW50IGlubGluaW5nIGlzIHByb2ZpdGFibGUgc29tZXRpbWVzCisgICAg
Ly8gd2hpbGUgbm90IGhhdmluZyB0byBpbmNyZW1lbnQgY291bnRzIGlzIHByb2ZpdGFibGUgYWx3
YXlzLiBTbywgd2UgbGV0IHRoZSBGVEwgcnVuIGZhc3RlciBhbmQKKyAgICAvLyBub3Qga2VlcCBj
b3VudHMuCisgICAgcmV0dXJuICEhbV9mYXN0Q291bnRzOworfQorCiBDYWxsRWRnZUxpc3QgUG9s
eW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6OmVkZ2VzKCkgY29uc3QKIHsKLSAgICAvLyBXZSB3b3Vs
ZG4ndCBoYXZlIHRoZXNlIGlmIHRoaXMgd2FzIGFuIEZUTCBzdHViIHJvdXRpbmUuIFdlIHNob3Vs
ZG4ndCBiZSBhc2tpbmcgZm9yIHByb2ZpbGluZwotICAgIC8vIGZyb20gdGhlIEZUTC4KICAgICBS
RUxFQVNFX0FTU0VSVChtX2Zhc3RDb3VudHMpOwogICAgIAogICAgIENhbGxFZGdlTGlzdCByZXN1
bHQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJS
b3V0aW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9y
cGhpY0NhbGxTdHViUm91dGluZS5oCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1BvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmgJKHdvcmtpbmcgY29weSkK
QEAgLTkwLDYgKzkwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflBvbHltb3JwaGljQ2FsbFN0
dWJSb3V0aW5lKCk7CiAgICAgCiAgICAgQ2FsbFZhcmlhbnRMaXN0IHZhcmlhbnRzKCkgY29uc3Q7
CisgICAgYm9vbCBoYXNFZGdlcygpIGNvbnN0OwogICAgIENhbGxFZGdlTGlzdCBlZGdlcygpIGNv
bnN0OwogCiAgICAgdm9pZCBjbGVhckNhbGxOb2Rlc0ZvcihDYWxsTGlua0luZm8qKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVjb2RlU2VxdWVuY2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxl
ckJ5dGVjb2RlU2VxdWVuY2UuY3BwCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQ5LDEyICs0OSwxMiBAQCBCeXRlY29kZVNlcXVlbmNlOjpCeXRlY29kZVNlcXVl
bmNlKENvZGVCCiAgICAgICAgIG1faGVhZGVyLmFwcGVuZChvdXQudG9DU3RyaW5nKCkpOwogICAg
IH0KICAgICAKLSAgICBTdHViSW5mb01hcCBzdHViSW5mb3M7Ci0gICAgY29kZUJsb2NrLT5nZXRT
dHViSW5mb01hcChzdHViSW5mb3MpOworICAgIElDU3RhdHVzTWFwIHN0YXR1c01hcDsKKyAgICBj
b2RlQmxvY2stPmdldElDU3RhdHVzTWFwKHN0YXR1c01hcCk7CiAgICAgCiAgICAgZm9yICh1bnNp
Z25lZCBieXRlY29kZUluZGV4ID0gMDsgYnl0ZWNvZGVJbmRleCA8IGNvZGVCbG9jay0+aW5zdHJ1
Y3Rpb25zKCkuc2l6ZSgpOykgewogICAgICAgICBvdXQucmVzZXQoKTsKLSAgICAgICAgY29kZUJs
b2NrLT5kdW1wQnl0ZWNvZGUob3V0LCBieXRlY29kZUluZGV4LCBzdHViSW5mb3MpOworICAgICAg
ICBjb2RlQmxvY2stPmR1bXBCeXRlY29kZShvdXQsIGJ5dGVjb2RlSW5kZXgsIHN0YXR1c01hcCk7
CiAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKGNv
ZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVJbmRleF0udS5vcGNvZGUpOwogICAgICAg
ICBtX3NlcXVlbmNlLmFwcGVuZChCeXRlY29kZShieXRlY29kZUluZGV4LCBvcGNvZGVJRCwgb3V0
LnRvQ1N0cmluZygpKSk7CiAgICAgICAgIGJ5dGVjb2RlSW5kZXggKz0gb3Bjb2RlTGVuZ3RoKG9w
Y29kZUlEKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFy
ZURhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uUmFyZURhdGEuY3BwCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIs
NiArODIsOSBAQCBGdW5jdGlvblJhcmVEYXRhOjp+RnVuY3Rpb25SYXJlRGF0YSgpCiAKIHZvaWQg
RnVuY3Rpb25SYXJlRGF0YTo6aW5pdGlhbGl6ZU9iamVjdEFsbG9jYXRpb25Qcm9maWxlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHByb3RvdHlwZSwgc2l6
ZV90IGlubGluZUNhcGFjaXR5LCBKU0Z1bmN0aW9uKiBjb25zdHJ1Y3RvcikKIHsKKyAgICBpZiAo
bV9vYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQuaXNTdGlsbFZhbGlkKCkpCisgICAg
ICAgIG1fb2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50LnN0YXJ0V2F0Y2hpbmcoKTsK
KyAgICAKICAgICBtX29iamVjdEFsbG9jYXRpb25Qcm9maWxlLmluaXRpYWxpemVQcm9maWxlKHZt
LCBnbG9iYWxPYmplY3QsIHRoaXMsIHByb3RvdHlwZSwgaW5saW5lQ2FwYWNpdHksIGNvbnN0cnVj
dG9yLCB0aGlzKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnMuaAkocmV2aXNpb24gMjMyNDQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzUsNiArMjc1LDcgQEAgY29uc3RleHByIGJv
b2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbgogICAgIHYodW5zaWduZWQsIG1heEFjY2Vzc1Zh
cmlhbnRMaXN0U2l6ZSwgOCwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihib29sLCB1c2VQb2x5
dmFyaWFudERldmlydHVhbGl6YXRpb24sIHRydWUsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYo
Ym9vbCwgdXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZywgdHJ1ZSwgTm9ybWFsLCBudWxscHRy
KSBcCisgICAgdih1bnNpZ25lZCwgbWF4UG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXpl
LCA4LCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KGJvb2wsIHVzZVBvbHltb3JwaGljQ2FsbElu
bGluaW5nLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KGJvb2wsIHVzZVBvbHltb3Jw
aGljQ2FsbElubGluaW5nRm9yTm9uU3R1YlN0YXR1cywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikg
XAogICAgIHYodW5zaWduZWQsIG1heFBvbHltb3JwaGljQ2FsbFZhcmlhbnRMaXN0U2l6ZSwgMTUs
IE5vcm1hbCwgbnVsbHB0cikgXApAQCAtMzIyLDkgKzMyMyw2IEBAIGNvbnN0ZXhwciBib29sIGVu
YWJsZVdlYkFzc2VtYmx5U3RyZWFtaW4KICAgICBcCiAgICAgdih1bnNpZ25lZCwgbWF4aW11bVZh
cmFyZ3NGb3JJbmxpbmluZywgMTAwLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICBcCi0gICAgdihi
b29sLCB1c2VQb2x5dmFyaWFudENhbGxJbmxpbmluZywgdHJ1ZSwgTm9ybWFsLCBudWxscHRyKSBc
Ci0gICAgdihib29sLCB1c2VQb2x5dmFyaWFudEJ5SWRJbmxpbmluZywgdHJ1ZSwgTm9ybWFsLCBu
dWxscHRyKSBcCi0gICAgXAogICAgIHYoYm9vbCwgdXNlTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhh
c2UsIGZhbHNlLCBOb3JtYWwsICJTZXR0aW5nIHRvIHRydWUgYWxsb3dzIHRoZSBERkcncyBNYXhp
bWFsRmx1c2hJbnNlcnRpb25QaGFzZSB0byBydW4uIikgXAogICAgIFwKICAgICB2KHVuc2lnbmVk
LCBtYXhpbXVtQmluYXJ5U3RyaW5nU3dpdGNoQ2FzZUxlbmd0aCwgNTAsIE5vcm1hbCwgbnVsbHB0
cikgXAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341851</attachid>
            <date>2018-06-02 13:30:27 -0700</date>
            <delta_ts>2018-06-04 15:36:05 -0700</delta_ts>
            <desc>fix build</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>200781</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMzI0NDEpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDMwIEBACisyMDE4LTA2LTAyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CisKKyAgICAgICAgV2Ugc2hvdWxkIHN1cHBvcnQgQ3JlYXRlVGhpcyBpbiB0aGUgRlRMCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ5MDQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1pY3JvYmVu
Y2htYXJrcy9wb2x5dmFyaWFudC1nZXQtYnktaWQtc2hvcnRlci10b3dlci5qczogQWRkZWQuCisg
ICAgICAgIChwb2x5dmFyaWFudCk6CisgICAgICAgIChGb28ucHJvdG90eXBlLmZ1bmMpOgorICAg
ICAgICAoRm9vKToKKyAgICAgICAgKGZvbyk6CisgICAgICAgIChCYXIucHJvdG90eXBlLmZ1bmMp
OgorICAgICAgICAoQmFyKToKKyAgICAgICAgKGJhcik6CisgICAgICAgICogbWljcm9iZW5jaG1h
cmtzL3BvbHl2YXJpYW50LWdldC1ieS1pZC10b3dlci5qczogQWRkZWQuCisgICAgICAgIChwb2x5
dmFyaWFudCk6CisgICAgICAgIChGb28ucHJvdG90eXBlLmZ1bmMpOgorICAgICAgICAoRm9vKToK
KyAgICAgICAgKGZvbyk6CisgICAgICAgIChCYXIucHJvdG90eXBlLmZ1bmMpOgorICAgICAgICAo
QmFyKToKKyAgICAgICAgKGJhcik6CisgICAgICAgIChCYXoucHJvdG90eXBlLmZ1bmMpOgorICAg
ICAgICAoQmF6KToKKyAgICAgICAgKGJheik6CisKIDIwMTgtMDYtMDIgIENhaW8gTGltYSAgPHRp
Y2Fpb2xpbWFAZ21haWwuY29tPgogCiAgICAgICAgIFtFU05leHRdW0JpZ0ludF0gSW1wbGVtZW50
IHN1cHBvcnQgZm9yIGFkZGl0aW9uIG9wZXJhdGlvbnMKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL3BvbHl2YXJpYW50LWdldC1ieS1pZC1zaG9ydGVyLXRvd2VyLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3BvbHl2YXJpYW50LWdldC1ieS1pZC1zaG9ydGVy
LXRvd2VyLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3BvbHl2
YXJpYW50LWdldC1ieS1pZC1zaG9ydGVyLXRvd2VyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDYgQEAKKyhmdW5jdGlvbigpIHsKKyAgICB2YXIgZ2xvYmFsTzsKKyAgICAKKyAgICBmdW5j
dGlvbiBwb2x5dmFyaWFudCgpCisgICAgeworICAgICAgICByZXR1cm4gZ2xvYmFsTy5mdW5jKCk7
CisgICAgfQorICAgIAorICAgIGNsYXNzIEZvbyB7CisgICAgICAgIGZ1bmMoKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gNDI7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgdmFy
IGZvb08gPSBuZXcgRm9vKCk7CisgICAgCisgICAgZnVuY3Rpb24gZm9vKCkKKyAgICB7CisgICAg
ICAgIGdsb2JhbE8gPSBmb29POworICAgICAgICByZXR1cm4gcG9seXZhcmlhbnQoKTsKKyAgICB9
CisgICAgCisgICAgY2xhc3MgQmFyIHsKKyAgICAgICAgZnVuYygpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBmb28oKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2YXIgYmFy
TyA9IG5ldyBCYXIoKTsKKyAgICAKKyAgICBmdW5jdGlvbiBiYXIoKQorICAgIHsKKyAgICAgICAg
Z2xvYmFsTyA9IGJhck87CisgICAgICAgIHJldHVybiBwb2x5dmFyaWFudCgpOworICAgIH0KKyAg
ICAKKyAgICB2YXIgY291bnQgPSAxMDAwMDAwOworICAgIHZhciByZXN1bHQgPSAwOworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgcmVzdWx0ICs9IGJhcigpOwor
ICAgIAorICAgIGlmIChyZXN1bHQgIT0gY291bnQgKiA0MikKKyAgICAgICAgdGhyb3cgIkVycm9y
OiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworfSkoKTsKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL3BvbHl2YXJpYW50LWdldC1ieS1pZC10b3dlci5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9wb2x5dmFyaWFudC1nZXQtYnktaWQtdG93ZXIuanMJKG5vbmV4
aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seXZhcmlhbnQtZ2V0LWJ5LWlk
LXRvd2VyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjEgQEAKKyhmdW5jdGlvbigpIHsK
KyAgICB2YXIgZ2xvYmFsTzsKKyAgICAKKyAgICBmdW5jdGlvbiBwb2x5dmFyaWFudCgpCisgICAg
eworICAgICAgICByZXR1cm4gZ2xvYmFsTy5mdW5jKCk7CisgICAgfQorICAgIAorICAgIGNsYXNz
IEZvbyB7CisgICAgICAgIGZ1bmMoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gNDI7
CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgdmFyIGZvb08gPSBuZXcgRm9vKCk7CisgICAg
CisgICAgZnVuY3Rpb24gZm9vKCkKKyAgICB7CisgICAgICAgIGdsb2JhbE8gPSBmb29POworICAg
ICAgICByZXR1cm4gcG9seXZhcmlhbnQoKTsKKyAgICB9CisgICAgCisgICAgY2xhc3MgQmFyIHsK
KyAgICAgICAgZnVuYygpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmb28oKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2YXIgYmFyTyA9IG5ldyBCYXIoKTsKKyAgICAKKyAg
ICBmdW5jdGlvbiBiYXIoKQorICAgIHsKKyAgICAgICAgZ2xvYmFsTyA9IGJhck87CisgICAgICAg
IHJldHVybiBwb2x5dmFyaWFudCgpOworICAgIH0KKyAgICAKKyAgICBjbGFzcyBCYXogeworICAg
ICAgICBmdW5jKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGJhcigpOworICAgICAg
ICB9CisgICAgfQorICAgIAorICAgIHZhciBiYXpPID0gbmV3IEJheigpOworICAgIAorICAgIGZ1
bmN0aW9uIGJheigpCisgICAgeworICAgICAgICBnbG9iYWxPID0gYmF6TzsKKyAgICAgICAgcmV0
dXJuIHBvbHl2YXJpYW50KCk7CisgICAgfQorICAgIAorICAgIHZhciBjb3VudCA9IDEwMDAwMDA7
CisgICAgdmFyIHJlc3VsdCA9IDA7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytp
KQorICAgICAgICByZXN1bHQgKz0gYmF6KCk7CisgICAgCisgICAgaWYgKHJlc3VsdCAhPSBjb3Vu
dCAqIDQyKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9
KSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzI0NDEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
Mjg5IEBACisyMDE4LTA2LTAyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAg
ICAgICAgV2Ugc2hvdWxkIHN1cHBvcnQgQ3JlYXRlVGhpcyBpbiB0aGUgRlRMCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ5MDQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgc3RhcnRl
ZCB3aXRoIFNhYW0ncyBwYXRjaCB0byBpbXBsZW1lbnQgQ3JlYXRlVGhpcyBpbiB0aGUgRlRMLCBi
dXQgdHVybmVkIGludG8gYSB0eXBlCisgICAgICAgIGluZmVyZW5jZSBhZHZlbnR1cmUuCisgICAg
ICAgIAorICAgICAgICBDcmVhdGVUaGlzIGluIHRoZSBGVEwgd2FzIGEgbWFzc2l2ZSByZWdyZXNz
aW9uIGluIHJheXRyYWNlIGJlY2F1c2UgaXQgZGlzdHVyYmVkIHRoYXQKKyAgICAgICAgYmVuY2ht
YXJrJ3MgZXh0cmVtZWx5IHBlcnZlcnNlIHdheSBvZiB3aW5uaW5nIGF0IHR5cGUgaW5mZXJlbmNl
OgorICAgICAgICAKKyAgICAgICAgLSBUaGUgYmVuY2htYXJrIHdhbnRlZCBwb2x5dmFyaWFudCBk
ZXZpcnR1YWxpemF0aW9uIG9mIGFuIG9iamVjdCBjb25zdHJ1Y3Rpb24gaGVscGVyLiBCdXQsCisg
ICAgICAgICAgdGhlIHBvbHl2YXJpYW50IHByb2ZpbGVyIHdhc24ndCBwb3dlcmZ1bCBlbm91Z2gg
dG8gcmVsaWFibHkgZGV2aXJ0dWFsaXplIHRoYXQgY29kZS4gU28sIHRoZQorICAgICAgICAgIGJl
bmNobWFyayB3YXMgZmFsbGluZyBiYWNrIHRvIG90aGVyIG1lY2hhbmlzbXMuLi4KKyAgICAgICAg
CisgICAgICAgIC0gVGhlIGNvbnN0cnVjdGlvbiBoZWxwZXIgY291bGQgbm90IHRpZXIgdXAgaW50
byB0aGUgRlRMLiBXaGVuIHRoZSBERkcgY29tcGlsZWQgaXQsIGl0IHdvdWxkCisgICAgICAgICAg
c2VlIHRoYXQgdGhlIElDIGhhZCA0IGNhc2VzLiBUaGF0J3MgdG9vIHBvbHltb3JwaGljIGZvciB0
aGUgREZHLiBTbywgdGhlIERGRyB3b3VsZCBlbWl0IGEKKyAgICAgICAgICBHZXRCeUlkLiBTaG9y
dGx5IGFmdGVyIHRoZSBERkcgY29tcGlsZSwgdGhhdCBnZXRfYnlfaWQgd291bGQgc2VlIG1hbnkg
bW9yZSBjYXNlcywgYnV0IG5vdworICAgICAgICAgIHRoYXQgdGhlIGhlbHBlciB3YXMgY29tcGls
ZWQgYnkgdGhlIERGRywgdGhlIGJhc2VsaW5lIGdldF9ieV9pZCB3b3VsZCBub3Qgc2VlIHRob3Nl
IGNhc2VzLgorICAgICAgICAgIFRoZSBERkcncyBHZXRCeUlkIHdvdWxkICJoaWRlIiB0aG9zZSBj
YXNlcy4gVGhlIG51bWJlciBvZiBjYXNlcyB0aGUgREZHJ3MgR2V0QnlJZCB3b3VsZCBzZWUKKyAg
ICAgICAgICBpcyBsYXJnZXIgdGhhbiBvdXIgcG9seW1vcnBoaWMgbGlzdCBsaW1pdCAobGltaXQg
PSA4LCBjYXNlIGNvdW50ID0gMTMsIEkgdGhpbmspLgorICAgICAgICAgIAorICAgICAgICAgIE5v
dGUgdGhhdCBpZiB0aGUgRlRMIGNvbXBpbGVzIHRoYXQgY29uc3RydWN0aW9uIGhlbHBlciwgaXQg
c2VlcyB0aGUgNCBjYXNlcywgdHVybnMgdGhlbQorICAgICAgICAgIGludG8gYSBNdWx0aUdldEJ5
T2Zmc2V0LCB0aGVuIHN1ZmZlcnMgZnJvbSBleGl0cyB3aGVuIHRoZSBuZXcgY2FzZXMgaGl0LCBh
bmQgdGhlbiBleGl0cyB0bworICAgICAgICAgIGJhc2VsaW5lLCB3aGljaCB0aGVuIHNlZXMgdGhv
c2UgY2FzZXMuIEx1Y2tpbHksIHRoZSBGVEwgd2FzIG5vdCBjb21waWxpbmcgdGhlIGNvbnN0cnVj
dGlvbgorICAgICAgICAgIGhlbHBlciBiZWNhdXNlIGl0IGhhZCBhIENyZWF0ZVRoaXMuCisgICAg
ICAgIAorICAgICAgICAtIENvbXBpbGF0aW9ucyB0aGF0IGlubGluZWQgdGhlIGNvbnN0cnVjdGlv
biBoZWxwZXIgd291bGQgaGF2ZSBnb3R0ZW4gc3VwZXIgbHVja3kgd2l0aAorICAgICAgICAgIHBh
cnNlLXRpbWUgY29uc3RhbnQgZm9sZGluZywgc28gdGhleSBrbmV3IHdoYXQgc3RydWN0dXJlIHRo
ZSBpbnB1dCB0byB0aGUgZ2V0X2J5X2lkIHdvdWxkCisgICAgICAgICAgaGF2ZSBhdCBwYXJzZSB0
aW1lLiBUaGlzIGlzIG9ubHkgcHJvZml0YWJsZSBpZiB0aGUgZ2V0X2J5X2lkIHBhcnNpbmcgY29t
cHV0ZWQgYQorICAgICAgICAgIEdldEJ5SWRTdGF0dXMgdGhhdCBoYWQgYSBmaW5pdGUgbnVtYmVy
IG9mIGNhc2VzLiBCZWNhdXNlIHRoZSAxMyBjYXNlcyB3ZXJlIGJlaW5nIGhpZGRlbiBieQorICAg
ICAgICAgIHRoZSBERkcgR2V0QnlJZCBhbmQgR2V0QnlJZFN0YXR1cyB3b3VsZCBvbmx5IGxvb2sg
YXQgdGhlIGJhc2VsaW5lIGdldF9ieV9pZCwgd2hpY2ggaGFkIDQKKyAgICAgICAgICBjYXNlcywg
d2Ugd291bGQgaW5kZWVkIGdldCBhIGZpbml0ZSBudW1iZXIgb2YgY2FzZXMuIFRoZSBwYXJzZXIg
d291bGQgdGhlbiBwcnVuZSB0aG9zZQorICAgICAgICAgIGNhc2VzIHRvIGp1c3Qgb25lIC0gYmFz
ZWQgb24gaXRzIGtub3dsZWRnZSBvZiB0aGUgc3RydWN0dXJlIC0gYW5kIHRoYXQgd291bGQgcmVz
dWx0IGluIHRoYXQKKyAgICAgICAgICBnZXRfYnlfaWQgYmVpbmcgZm9sZGVkIGF0IHBhcnNlIHRp
bWUgdG8gYSBjb25zdGFudC4KKyAgICAgICAgCisgICAgICAgIC0gVGhlIHN1YnNlcXVlbnQgb3Bf
Y2FsbCB3b3VsZCBpbmxpbmUgYmFzZWQgb24gcGFyc2UtdGltZSBrbm93bGVkZ2Ugb2YgdGhhdCBj
b25zdGFudC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggY29tcHJlaGVuc2l2ZWx5IGZp
eGVzIHRoZXNlIGlzc3VlcywgYXMgd2VsbCBhcyBvdGhlciBpc3N1ZXMgdGhhdCBjb21lIHVwIGFs
b25nIHRoZQorICAgICAgICB3YXk6CisgICAgICAgIAorICAgICAgICAtIFBvbHl2YXJpYW50IHBy
b2ZpbGluZyBub3cgY29uc3VsdHMgZXZlcnkgREZHIG9yIEZUTCBjb2RlIGJsb2NrIHRoYXQgcGFy
dGljaXBhdGVkIGluIGFueQorICAgICAgICAgIHN1YnNldCBvZiB0aGUgaW5saW5lIHN0YWNrIHRo
YXQgaW5jbHVkZXMgdGhlIElDIHdlJ3JlIHByb2ZpbGluZy4gRm9yIGV4YW1wbGUsIGlmIHdlIGhh
dmUKKyAgICAgICAgICBhbiBpbmxpbmUgc3RhY2sgbGlrZSBmb28tPmJhci0+YmF6LCB3aXRoIGJh
eiBvbiB0b3AsIHRoZW4gd2Ugd2lsbCBjb25zdWx0IERGRyBvciBGVEwKKyAgICAgICAgICBjb21w
aWxhdGlvbnMgZm9yIGZvbywgYmFyLCBhbmQgYmF6LiBJbiBmb28sIHdlJ2xsIGxvb2sgdXAgZm9v
LT5iYXItPmJhejsgaW4gYmFyIHdlJ2xsIGxvb2sKKyAgICAgICAgICB1cCBiYXItPmJhejsgZXRj
LiBUaGlzIGZpeGVzIHR3byBwcm9ibGVtcyBlbmNvdW50ZXJlZCBpbiByYXl0cmFjZS4gRmlyc3Qs
IGl0IGVuc3VyZXMgdGhhdAorICAgICAgICAgIGEgREZHIEdldEJ5SWQgY2Fubm90IGhpZGUgYW55
dGhpbmcgZnJvbSB0aGUgcHJvZmlsaW5nIG9mIHRoYXQgZ2V0X2J5X2lkLCBzaW5jZSB0aGUKKyAg
ICAgICAgICBwb2x5dmFyaWFudCBwcm9maWxpbmcgY29kZSB3aWxsIGFsd2F5cyBjb25zdWx0IGl0
LiBTZWNvbmQsIGl0IGVuYWJsZXMgcmF5dHJhY2UgdG8gYmVuZWZpdAorICAgICAgICAgIGZyb20g
cG9seXZhcmlhbnQgcHJvZmxpbmcuIFByZXZpb3VzbHksIHRoZSBwb2x5dmFyaWFudCBwcm9maWxl
ciB3b3VsZCBvbmx5IGxvb2sgYXQgdGhlCisgICAgICAgICAgcHJldmlvdXMgREZHIGNvbXBpbGF0
aW9uIG9mIGZvbyBhbmQgbG9vayB1cCBmb28tPmJhci0+YmF6LiBCdXQgdGhhdCBvbmx5IHdvcmtz
IGlmIERGRy1mb28KKyAgICAgICAgICBoYWQgaW5saW5lZCBiYXIgYW5kIHRoZW4gYmF6LiBJdCBt
YXkgbm90IGhhdmUgZG9uZSB0aGF0LCBiZWNhdXNlIHRob3NlIGNhbGxzIGNvdWxkIGhhdmUKKyAg
ICAgICAgICByZXF1aXJlZCBwb2x5dmFyaWFudCBwcm9maWxpbmcgdGhhdCB3YXMgb25seSBhdmFp
bGFibGUgaW4gdGhlIEZUTC4KKyAgICAgICAgCisgICAgICAgIC0gSW5saW5pbmcgYW4gaW5saW5l
IGNhY2hlIG5vdyBwcmVzZXJ2ZXMgYXMgbXVjaCBpbmZvcm1hdGlvbiBhcyBwcm9maWxpbmcuIE9u
ZSBjaGFsbGVuZ2Ugb2YKKyAgICAgICAgICBwb2x5dmFyaWFudCBwcm9maWxpbmcgaXMgdGhhdCB0
aGUgRlRMIGNvbXBpbGUgZm9yIGJhciAodGhhdCBpbmNsdWRlcyBiYXItPmJheikgY291bGQgaGF2
ZQorICAgICAgICAgIGlubGluZWQgYW4gaW5saW5lIGNhY2hlIGJhc2VkIG9uIHBvbHl2YXJpYW50
IHByb2ZpbGluZy4gU28sIHdoZW4gdGhlIEZUTCBjb21waWxlIGZvciBmb28KKyAgICAgICAgICAo
dGhhdCBpbmNsdWRlcyBmb28tPmJhci0+YmF6KSBhc2tzIGJhciB3aGF0IGl0IGtub3dzIGFib3V0
IHRoYXQgSUMgaW5zaWRlIGJhci0+YmF6LCBpdCB3aWxsCisgICAgICAgICAgc2F5ICJJIGRvbid0
IGhhdmUgc3VjaCBhbiBJQyIuIEF0IHRoaXMgcG9pbnQgdGhlIERGRyBjb21waWxhdGlvbiB0aGF0
IGluY2x1ZGVkIHRoYXQgSUMgdGhhdAorICAgICAgICAgIGdhdmUgdXMgdGhlIGluZm9ybWF0aW9u
IHRoYXQgd2UgdXNlZCB0byBpbmxpbmUgdGhlIElDIGlzIG5vIGxvbmdlciBhbGl2ZS4gVG8ga2Vl
cCB1cyBmcm9tCisgICAgICAgICAgbG9zaW5nIHRoZSBpbmZvcm1hdGlvbiB3ZSBsZWFybmVkIGFi
b3V0IHRoZSBJQywgdGhlcmUgaXMgbm93IGEgUmVjb3JkZWRTdGF0dXNlcyBkYXRhCisgICAgICAg
ICAgc3RydWN0dXJlIHRoYXQgcHJlc2VydmVzIHRoZSBzdGF0dXNlcyB3ZSB1c2UgZm9yIGlubGlu
aW5nIElDcy4gV2UgYWxzbyBmaWx0ZXIgdGhvc2UKKyAgICAgICAgICBzdGF0dXNlcyBhY2NvcmRp
bmcgdG8gdGhpbmdzIHdlIGxlYXJuIGZyb20gQUkuIFRoaXMgZnVydGhlciByZWR1Y2VzIHRoZSBy
aXNrIG9mIGluZm9ybWF0aW9uCisgICAgICAgICAgYWJvdXQgYW4gSUMgYmVpbmcgZm9yZ290dGVu
LgorICAgICAgICAKKyAgICAgICAgLSBFeGl0IHByb2ZpbGluZyBub3cgY29uc2lkZXJzIHdoZXRo
ZXIgb3Igbm90IGFuIGV4aXQgaGFwcGVuZWQgZnJvbSBpbmxpbmUgY29kZS4gVGhpcworICAgICAg
ICAgIHByb3RlY3RzIHVzIGluIHRoZSBjYXNlIHdoZXJlIHRoZSBub3QtaW5saW5lZCB2ZXJzaW9u
IG9mIGFuIElDIGV4aXRlZCBhIGxvdCBiZWNhdXNlIG9mCisgICAgICAgICAgcG9seW1vcnBoaXNt
IHRoYXQgZG9lc24ndCBleGlzdCBpbiB0aGUgaW5saW5lZCB2ZXJzaW9uLiBTbywgd2hlbiB1c2lu
ZyBwb2x5dmFyaWFudAorICAgICAgICAgIHByb2ZpbGluZyBkYXRhLCB3ZSBjb25zaWRlciBvbmx5
IGlubGluZWQgZXhpdHMuCisgICAgICAgIAorICAgICAgICBBbHRvZ2V0aGVyIHRoaXMgcGF0Y2gg
aXMgcGVyZm9ybWFuY2UtbmV1dHJhbCBpbiBydW4tanNjLWJlbmNobWFya3MsIGV4Y2VwdCBmb3Ig
c3BlZWQtdXBzIGluCisgICAgICAgIG1pY3JvYmVuY2htYXJrcyBhbmQgYSBjb21waWxlIHRpbWUg
cmVncmVzc2lvbi4gT2N0YW5lL2JveWVyIHNwZWVkcyB1cCBieSA0LjclLCBidXQgSSdtIG5vdAor
ICAgICAgICBzdXJlIGlmIHRoYXQncyByZWFsLiBBbHNvLCBpdCdzIGEgMS4yJSByZWdyZXNzaW9u
IG9uIFY4U3BpZGVyLUNvbXBpbGVUaW1lLiBUaGF0J3MgYSBzbWFsbGVyCisgICAgICAgIHJlZ3Jl
c3Npb24gdGhhbiByZWNlbnQgY29tcGlsZSB0aW1lIHByb2dyZXNzaW9ucywgc28gSSB0aGluayB0
aGF0J3MgYW4gT0sgdHJhZGUtb2ZmLiBBbHNvLCBJCisgICAgICAgIHdvdWxkIGV4cGVjdCBhIGNv
bXBpbGUgdGltZSByZWdyZXNzaW9uIGFueXRpbWUgd2UgZmlsbCBpbiBGVEwgY292ZXJhZ2UuCisK
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAq
IGJ5dGVjb2RlL0J5VmFsSW5mby5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlRHVtcGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpwcmludEdldEJ5SWRD
YWNoZVN0YXR1cyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRQ
dXRCeUlkQ2FjaGVTdGF0dXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjxCbG9jaz46
OnByaW50SW5CeUlkQ2FjaGVTdGF0dXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBlcjxC
bG9jaz46OmR1bXBDYWxsTGlua1N0YXR1cyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVy
PENvZGVCbG9jaz46OmR1bXBDYWxsTGlua1N0YXR1cyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
RHVtcGVyPEJsb2NrPjo6cHJpbnRDYWxsT3ApOgorICAgICAgICAoSlNDOjpCeXRlY29kZUR1bXBl
cjxCbG9jaz46OmR1bXBCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlRHVtcGVyPEJs
b2NrPjo6ZHVtcEJsb2NrKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUR1bXBlci5oOgor
ICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rSW5mby5oOgorICAgICAgICAqIGJ5dGVjb2RlL0Nh
bGxMaW5rU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVG
b3IpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YSk6
CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJvbUNhbGxMaW5rSW5mbyk6
CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjphY2NvdW50Rm9yRXhpdHMpOgorICAgICAg
ICAoSlNDOjpDYWxsTGlua1N0YXR1czo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpDYWxsTGlu
a1N0YXR1czo6ZmlsdGVyKToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVE
RkdTdGF0dXNlcyk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMu
aDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgor
ICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6b3BlcmF0b3IhIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBieXRlY29kZS9DYWxsVmFyaWFudC5jcHA6CisgICAgICAgIChKU0M6OkNhbGxW
YXJpYW50OjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OkNhbGxWYXJpYW50OjpmaWx0ZXIpOgor
ICAgICAgICAqIGJ5dGVjb2RlL0NhbGxWYXJpYW50Lmg6CisgICAgICAgIChKU0M6OkNhbGxWYXJp
YW50OjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAgICAgKEpTQzo6Q2FsbFZhcmlhbnQ6Om9w
ZXJhdG9yISBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OnByb3BhZ2F0ZVRyYW5zaXRpb25zKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
Z2V0SUNTdGF0dXNNYXApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnJlc2V0SklURGF0YSk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Z2V0U3R1YkluZm9NYXApOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmdldENhbGxMaW5rSW5mb01hcCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6Z2V0QnlWYWxJbmZvTWFwKTogRGVsZXRlZC4KKyAgICAgICAg
KiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlT3JpZ2luLmNw
cDoKKyAgICAgICAgKEpTQzo6Q29kZU9yaWdpbjo6aXNBcHByb3hpbWF0ZWx5RXF1YWxUbyBjb25z
dCk6CisgICAgICAgIChKU0M6OkNvZGVPcmlnaW46OmFwcHJveGltYXRlSGFzaCBjb25zdCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQ29kZU9yaWdpbi5oOgorICAgICAgICAoSlNDOjpDb2RlT3JpZ2lu
OjpleGl0aW5nSW5saW5lS2luZCBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvREZHRXhpdFBy
b2ZpbGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZyZXF1ZW50RXhpdFNpdGU6OmR1bXAgY29u
c3QpOgorICAgICAgICAoSlNDOjpERkc6OkV4aXRQcm9maWxlOjphZGQpOgorICAgICAgICAqIGJ5
dGVjb2RlL0RGR0V4aXRQcm9maWxlLmg6CisgICAgICAgIChKU0M6OkRGRzo6RnJlcXVlbnRFeGl0
U2l0ZTo6RnJlcXVlbnRFeGl0U2l0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6RnJlcXVlbnRFeGl0
U2l0ZTo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OkRGRzo6RnJlcXVlbnRFeGl0
U2l0ZTo6c3Vic3VtZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkZyZXF1ZW50RXhpdFNp
dGU6Omhhc2ggY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkZyZXF1ZW50RXhpdFNpdGU6Omlu
bGluZUtpbmQgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OkZyZXF1ZW50RXhpdFNpdGU6Ondp
dGhJbmxpbmVLaW5kIGNvbnN0KToKKyAgICAgICAgKEpTQzo6REZHOjpRdWVyeWFibGVFeGl0UHJv
ZmlsZTo6aGFzRXhpdFNpdGUgY29uc3QpOgorICAgICAgICAoSlNDOjpERkc6OlF1ZXJ5YWJsZUV4
aXRQcm9maWxlOjpoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0pJVFR5cGUgY29uc3QpOgorICAgICAg
ICAoSlNDOjpERkc6OlF1ZXJ5YWJsZUV4aXRQcm9maWxlOjpoYXNFeGl0U2l0ZVdpdGhTcGVjaWZp
Y0lubGluZUtpbmQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4aXRGbGFnLmNwcDogQWRk
ZWQuCisgICAgICAgIChKU0M6OkV4aXRGbGFnOjpkdW1wIGNvbnN0KToKKyAgICAgICAgKiBieXRl
Y29kZS9FeGl0RmxhZy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RXhpdEZsYWc6OkV4aXRGbGFn
KToKKyAgICAgICAgKEpTQzo6RXhpdEZsYWc6Om9wZXJhdG9yfCBjb25zdCk6CisgICAgICAgIChK
U0M6OkV4aXRGbGFnOjpvcGVyYXRvcnw9KToKKyAgICAgICAgKEpTQzo6RXhpdEZsYWc6Om9wZXJh
dG9yJiBjb25zdCk6CisgICAgICAgIChKU0M6OkV4aXRGbGFnOjpvcGVyYXRvciY9KToKKyAgICAg
ICAgKEpTQzo6RXhpdEZsYWc6Om9wZXJhdG9yIGJvb2wgY29uc3QpOgorICAgICAgICAoSlNDOjpF
eGl0RmxhZzo6aXNTZXQgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL0V4aXRpbmdJbmxpbmVL
aW5kLmNwcDogQWRkZWQuCisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAq
IGJ5dGVjb2RlL0V4aXRpbmdJbmxpbmVLaW5kLmg6IEFkZGVkLgorICAgICAgICAqIGJ5dGVjb2Rl
L0dldEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRl
Rm9yKToKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclN0dWJJbmZvKToK
KyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6c2xvd1ZlcnNpb24gY29uc3QpOgorICAgICAg
ICAoSlNDOjpHZXRCeUlkU3RhdHVzOjptYXJrSWZDaGVhcCk6CisgICAgICAgIChKU0M6OkdldEJ5
SWRTdGF0dXM6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6aGFzRXhp
dFNpdGUpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaDoKKyAg
ICAgICAgKiBieXRlY29kZS9HZXRCeUlkVmFyaWFudC5jcHA6CisgICAgICAgIChKU0M6OkdldEJ5
SWRWYXJpYW50OjptYXJrSWZDaGVhcCk6CisgICAgICAgIChKU0M6OkdldEJ5SWRWYXJpYW50Ojpm
aW5hbGl6ZSk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuaDoKKyAgICAgICAg
KiBieXRlY29kZS9JQ1N0YXR1c01hcC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpJQ1N0YXR1
c0NvbnRleHQ6OmdldCBjb25zdCk6CisgICAgICAgIChKU0M6OklDU3RhdHVzQ29udGV4dDo6aXNJ
bmxpbmVkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SUNTdGF0dXNDb250ZXh0OjppbmxpbmVLaW5k
IGNvbnN0KToKKyAgICAgICAgKiBieXRlY29kZS9JQ1N0YXR1c01hcC5oOiBBZGRlZC4KKyAgICAg
ICAgKiBieXRlY29kZS9JQ1N0YXR1c1V0aWxzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6Omhh
c0JhZENhY2hlRXhpdFNpdGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0lDU3RhdHVzVXRpbHMuaDoK
KyAgICAgICAgKiBieXRlY29kZS9JbnN0YW5jZU9mU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6
SW5zdGFuY2VPZlN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdGFu
Y2VPZlN0YXR1cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL1BvbHlQcm90b0FjY2Vzc0NoYWluLmg6
CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OlB1
dEJ5SWRTdGF0dXM6Omhhc0V4aXRTaXRlKToKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6
Y29tcHV0ZUZvcik6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OnNsb3dWZXJzaW9uIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6bWFya0lmQ2hlYXApOgorICAgICAg
ICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpmaW5hbGl6ZSk6CisgICAgICAgIChKU0M6OlB1dEJ5SWRT
dGF0dXM6OmZpbHRlcik6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oOgorICAg
ICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJ
ZFZhcmlhbnQ6Om1hcmtJZkNoZWFwKToKKyAgICAgICAgKEpTQzo6UHV0QnlJZFZhcmlhbnQ6OmZp
bmFsaXplKToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkVmFyaWFudC5oOgorICAgICAgICAo
SlNDOjpQdXRCeUlkVmFyaWFudDo6c3RydWN0dXJlU2V0IGNvbnN0KToKKyAgICAgICAgKiBieXRl
Y29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlJlY29yZGVk
U3RhdHVzZXM6Om9wZXJhdG9yPSk6CisgICAgICAgIChKU0M6OlJlY29yZGVkU3RhdHVzZXM6OlJl
Y29yZGVkU3RhdHVzZXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1c2VzOjphZGRDYWxs
TGlua1N0YXR1cyk6CisgICAgICAgIChKU0M6OlJlY29yZGVkU3RhdHVzZXM6OmFkZEdldEJ5SWRT
dGF0dXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1c2VzOjphZGRQdXRCeUlkU3RhdHVz
KToKKyAgICAgICAgKEpTQzo6UmVjb3JkZWRTdGF0dXNlczo6bWFya0lmQ2hlYXApOgorICAgICAg
ICAoSlNDOjpSZWNvcmRlZFN0YXR1c2VzOjpmaW5hbGl6ZVdpdGhvdXREZWxldGluZyk6CisgICAg
ICAgIChKU0M6OlJlY29yZGVkU3RhdHVzZXM6OmZpbmFsaXplKToKKyAgICAgICAgKEpTQzo6UmVj
b3JkZWRTdGF0dXNlczo6c2hyaW5rVG9GaXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1JlY29yZGVk
U3RhdHVzZXMuaDogQWRkZWQuCisgICAgICAgIChKU0M6OlJlY29yZGVkU3RhdHVzZXM6OlJlY29y
ZGVkU3RhdHVzZXMpOgorICAgICAgICAoSlNDOjpSZWNvcmRlZFN0YXR1c2VzOjpmb3JFYWNoVmVj
dG9yKToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTZXQuY3BwOgorICAgICAgICAoSlND
OjpTdHJ1Y3R1cmVTZXQ6Om1hcmtJZkNoZWFwIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlU2V0Ojppc1N0aWxsQWxpdmUgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVy
ZVNldC5oOgorICAgICAgICAqIGJ5dGVjb2RlL1Rlcm1pbmF0ZWRDb2RlT3JpZ2luLmg6IEFkZGVk
LgorICAgICAgICAoSlNDOjpUZXJtaW5hdGVkQ29kZU9yaWdpbjo6VGVybWluYXRlZENvZGVPcmln
aW4pOgorICAgICAgICAoSlNDOjpUZXJtaW5hdGVkQ29kZU9yaWdpbkhhc2hUcmFuc2xhdG9yOjpo
YXNoKToKKyAgICAgICAgKEpTQzo6VGVybWluYXRlZENvZGVPcmlnaW5IYXNoVHJhbnNsYXRvcjo6
ZXF1YWwpOgorICAgICAgICAqIGJ5dGVjb2RlL1dhdGNocG9pbnQuY3BwOgorICAgICAgICAoV1RG
OjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBieXRlY29kZS9XYXRjaHBvaW50Lmg6CisgICAg
ICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBkZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAo
SlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpmaWx0ZXJJ
Q1N0YXR1cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVZhcmFyZ3NDYWxsKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlRE9NSklUR2V0dGVyKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTW9kdWxlTmFtZXNwYWNlTG9hZCk6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQpOgorICAgICAgICAoSlNDOjpE
Rkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5Ojp+SW5saW5lU3RhY2tFbnRy
eSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlKToKKyAgICAgICAg
KiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgor
ICAgICAgICAqIGRmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Y2xvYmJlcnNFeGl0U3RhdGUpOgorICAgICAgICAqIGRmZy9ERkdDb21tb25EYXRhLmg6Cisg
ICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZn
L0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5oOgorICAgICAgICAoSlNDOjpERkc6OlNldFBvaW50ZXJB
ZGFwdG9yOjpoYXNCZWVuSW52YWxpZGF0ZWQpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAg
ICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZHVtcCk6
CisgICAgICAgICogZGZnL0RGR01heUV4aXQuY3BwOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6
CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzQ2FsbExpbmtTdGF0dXMpOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6OmNhbGxMaW5rU3RhdHVzKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
OjpoYXNHZXRCeUlkU3RhdHVzKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpnZXRCeUlkU3Rh
dHVzKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNQdXRCeUlkU3RhdHVzKToKKyAgICAg
ICAgKEpTQzo6REZHOjpOb2RlOjpwdXRCeUlkU3RhdHVzKToKKyAgICAgICAgKiBkZmcvREZHTm9k
ZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdEJhc2UuY3BwOgorICAgICAgICAoSlND
OjpERkc6Ok9TUkV4aXRCYXNlOjpjb25zaWRlckFkZGluZ0FzRnJlcXVlbnRFeGl0U2l0ZVNsb3cp
OgorICAgICAgICAqIGRmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcDoKKyAg
ICAgICAgKiBkZmcvREZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6cmVhbGx5
QWRkKToKKyAgICAgICAgKEpTQzo6REZHOjpQbGFuOjpjaGVja0xpdmVuZXNzQW5kVmlzaXRDaGls
ZHJlbik6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6ZmluYWxpemVJbkdDKToKKyAgICAgICAg
KiBkZmcvREZHUGxhbi5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0cmVuZ3RoUmVk
dWN0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cmVuZ3RoUmVkdWN0aW9uUGhh
c2U6OmhhbmRsZU5vZGUpOgorICAgICAgICAqIGRmZy9ERkdXb3JrbGlzdC5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6V29ya2xpc3Q6OnJlbW92ZURlYWRQbGFucyk6CisgICAgICAgICogZnRsL0ZU
TEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRM
TG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21w
aWxlQ3JlYXRlVGhpcyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVGaWx0ZXJJQ1N0YXR1cyk6CisgICAgICAgICogaml0L1BvbHltb3JwaGljQ2FsbFN0dWJS
b3V0aW5lLmNwcDoKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6Omhh
c0VkZ2VzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6
OmVkZ2VzIGNvbnN0KToKKyAgICAgICAgKiBqaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUu
aDoKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuY3BwOgorICAg
ICAgICAoSlNDOjpQcm9maWxlcjo6Qnl0ZWNvZGVTZXF1ZW5jZTo6Qnl0ZWNvZGVTZXF1ZW5jZSk6
CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6
RnVuY3Rpb25SYXJlRGF0YTo6aW5pdGlhbGl6ZU9iamVjdEFsbG9jYXRpb25Qcm9maWxlKToKKyAg
ICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKwogMjAxOC0wNi0wMiAgQ2FpbyBMaW1hICA8dGlj
YWlvbGltYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0VTTmV4dF1bQmlnSW50XSBJbXBsZW1lbnQg
c3VwcG9ydCBmb3IgYWRkaXRpb24gb3BlcmF0aW9ucwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjMyNDQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00NDAsOSArNDQwLDExIEBAIHNldChK
YXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUEKICAgICBieXRlY29kZS9FeGVjdXRh
YmxlVG9Db2RlQmxvY2tFZGdlLmgKICAgICBieXRlY29kZS9FeGVjdXRpb25Db3VudGVyLmgKICAg
ICBieXRlY29kZS9FeGl0S2luZC5oCisgICAgYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuaAog
ICAgIGJ5dGVjb2RlL0V4aXRpbmdKSVRUeXBlLmgKICAgICBieXRlY29kZS9FeHByZXNzaW9uUmFu
Z2VJbmZvLmgKICAgICBieXRlY29kZS9IYW5kbGVySW5mby5oCisgICAgYnl0ZWNvZGUvSUNTdGF0
dXNNYXAuaAogICAgIGJ5dGVjb2RlL0lubGluZUNhbGxGcmFtZS5oCiAgICAgYnl0ZWNvZGUvSW5z
dHJ1Y3Rpb24uaAogICAgIGJ5dGVjb2RlL0ludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmls
ZS5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyMzI0NDEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIx
MiwxMyArMjEyLDE3IEBAIGJ5dGVjb2RlL0RpcmVjdEV2YWxDb2RlQ2FjaGUuY3BwCiBieXRlY29k
ZS9FdmFsQ29kZUJsb2NrLmNwcAogYnl0ZWNvZGUvRXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZS5j
cHAKIGJ5dGVjb2RlL0V4ZWN1dGlvbkNvdW50ZXIuY3BwCitieXRlY29kZS9FeGl0RmxhZy5jcHAK
IGJ5dGVjb2RlL0V4aXRLaW5kLmNwcAorYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuY3BwCiBi
eXRlY29kZS9FeGl0aW5nSklUVHlwZS5jcHAKIGJ5dGVjb2RlL0Z1bGxDb2RlT3JpZ2luLmNwcAog
Ynl0ZWNvZGUvRnVuY3Rpb25Db2RlQmxvY2suY3BwCiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNw
cAogYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCiBieXRlY29kZS9HZXR0ZXJTZXR0ZXJBY2Nl
c3NDYXNlLmNwcAorYnl0ZWNvZGUvSUNTdGF0dXNNYXAuY3BwCitieXRlY29kZS9JQ1N0YXR1c1V0
aWxzLmNwcAogYnl0ZWNvZGUvSW5CeUlkU3RhdHVzLmNwcAogYnl0ZWNvZGUvSW5CeUlkVmFyaWFu
dC5jcHAKIGJ5dGVjb2RlL0lubGluZUFjY2Vzcy5jcHAKQEAgLTI0Nyw2ICsyNTEsNyBAQCBieXRl
Y29kZS9Qcm94eWFibGVBY2Nlc3NDYXNlLmNwcAogYnl0ZWNvZGUvUHV0QnlJZEZsYWdzLmNwcAog
Ynl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKIGJ5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcAor
Ynl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNlcy5jcHAKIGJ5dGVjb2RlL1JlZHVjZVdoaXRlc3BhY2Uu
Y3BwCiBieXRlY29kZS9TcGVjaWFsUG9pbnRlci5jcHAKIGJ5dGVjb2RlL1NwZWN1bGF0ZWRUeXBl
LmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIzMjQ0MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yOTcsNiArMjk3LDExIEBACiAJCTBGNDI2QTQ5
MTQ2MENCQjcwMDEzMUY4RiAvKiBWaXJ0dWFsUmVnaXN0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBW
aXJ0dWFsUmVnaXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRjQyNkE0QjE0NjBDRDZFMDAxMzFGOEYgLyogRGF0YUZvcm1hdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0MjZBNEExNDYwQ0Q2
QjAwMTMxRjhGIC8qIERhdGFGb3JtYXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRjQzMTczODE0NkJBQzY5MDA3RTM4OTAgLyogTGlzdGFibGVI
YW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjQzMTczNjE0NkJBQzY1MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NEE3QjAyMEJGNjg2MjAw
MjJCMTcxIC8qIEV4aXRGbGFnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjQ0QTdBRTIwQkY2ODVGMDAyMkIxNzEgLyogRXhpdEZsYWcuaCAqLzsgfTsK
KwkJMEY0NEE3QjEyMEJGNjhDOTAwMjJCMTcxIC8qIEV4aXRpbmdJbmxpbmVLaW5kLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ0QTdBNzIwQkY2ODVE
MDAyMkIxNzEgLyogRXhpdGluZ0lubGluZUtpbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ0QTdCMjIwQkY2OENFMDAyMkIxNzEgLyogSUNT
dGF0dXNNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNDRBN0FGMjBCRjY4NUYwMDIyQjE3MSAvKiBJQ1N0YXR1c01hcC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDRBN0IzMjBCRjY4RDEwMDIy
QjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjQ0QTdBQTIwQkY2ODVFMDAyMkIxNzEgLyogUmVjb3JkZWRTdGF0
dXNlcy5oICovOyB9OworCQkwRjQ0QTdCNDIwQkY2OEQ5MDAyMkIxNzEgLyogVGVybWluYXRlZENv
ZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNDRBN0E4MjBCRjY4NUUwMDIyQjE3MSAvKiBUZXJtaW5hdGVkQ29kZU9yaWdpbi5oICovOyB9
OwogCQkwRjQ1NzAzOTFCRTQ0QzkxMDA2MkE2MjkgLyogQWlyRWxpbWluYXRlRGVhZENvZGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDU3MDM3MUJF
NDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5oICovOyB9OwogCQkwRjQ1NzAz
RDFCRTQ1RjBBMDA2MkE2MjkgLyogQWlyUmVwb3J0VXNlZFJlZ2lzdGVycy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NTcwM0IxQkU0NUYwQTAwNjJB
NjI5IC8qIEFpclJlcG9ydFVzZWRSZWdpc3RlcnMuaCAqLzsgfTsKIAkJMEY0NTcwNDExQkU1ODRD
QTAwNjJBNjI5IC8qIEIzVGltaW5nU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDU3MDNGMUJFNTg0Q0EwMDYyQTYyOSAvKiBCM1RpbWluZ1Nj
b3BlLmggKi87IH07CkBAIC0xNzAyLDggKzE3MDcsNiBAQAogCQlFMzI4REFFOTFEMzhEMDA1MDAx
QTI1MjkgLyogQnl0ZWNvZGVHcmFwaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTNEMjY0MjgxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR3JhcGgu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzI4
REFFQjFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVSZXdyaXRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0MkExRDM4QzA0MjAwMEJFMTc0
IC8qIEJ5dGVjb2RlUmV3cml0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFMzJBQjI0NDFEQ0Q3NUY0MDBENzUzM0EgLyogTWFjcm9Bc3NlbWJs
ZXJIZWxwZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzgwQTc2QjFEQ0Q3MTk1MDAwRjg5RTYgLyogTWFjcm9Bc3NlbWJsZXJIZWxwZXJzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJRTMzMDVGQjMy
MEIwRjc4ODAwQ0VCODJCIC8qIEluQnlJZFN0YXR1cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzMDVGQUYyMEIwRjc4NzAwQ0VCODJCIC8qIEluQnlJ
ZFN0YXR1cy5oICovOyB9OwotCQlFMzMwNUZCNTIwQjBGNzg4MDBDRUI4MkIgLyogSW5CeUlkVmFy
aWFudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMz
MDVGQjEyMEIwRjc4ODAwQ0VCODJCIC8qIEluQnlJZFZhcmlhbnQuaCAqLzsgfTsKIAkJRTMzNjM3
QTYxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzYzN0E0MUI2MzIyMDIwMEVFMDg0MCAvKiBS
ZWZsZWN0T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTMzQjNFMjYxQjdBQkQ3NTAwNDhEQjJFIC8qIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbk9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzM0IzRTI1MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25PYmplY3QubHV0LmggKi87IH07CiAJCUUzM0U4RDFEMUI5MDEzQzMwMDM0NkI1MiAvKiBKU05h
dGl2ZVN0ZEZ1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzNFOEQxQjFCOTAxM0MzMDAzNDZCNTIgLyogSlNOYXRpdmVTdGRGdW5jdGlvbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0yMjg5
LDYgKzIyOTIsMTYgQEAKIAkJMEY0MjZBNEExNDYwQ0Q2QjAwMTMxRjhGIC8qIERhdGFGb3JtYXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YUZvcm1hdC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQyQjNDMDIwMUVCNTA5MDAzNTcwMzEgLyogQWxsb2Nh
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFsbG9jYXRvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5
MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TGlzdGFibGVIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDRBN0E3
MjBCRjY4NUQwMDIyQjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBFeGl0aW5nSW5saW5lS2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjQ0QTdBODIwQkY2ODVFMDAyMkIxNzEgLyogVGVybWluYXRlZENvZGVPcmln
aW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVybWluYXRlZENvZGVPcmln
aW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NEE3QTkyMEJGNjg1RTAwMjJC
MTcxIC8qIEV4aXRGbGFnLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEV4aXRGbGFnLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NEE3QUEyMEJG
Njg1RTAwMjJCMTcxIC8qIFJlY29yZGVkU3RhdHVzZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVjb3JkZWRTdGF0dXNlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjQ0QTdBQjIwQkY2ODVFMDAyMkIxNzEgLyogSUNTdGF0dXNNYXAuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSUNTdGF0dXNNYXAuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjQ0QTdBQzIwQkY2ODVGMDAyMkIxNzEgLyogRXhpdGluZ0lu
bGluZUtpbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXhpdGlu
Z0lubGluZUtpbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ0QTdBRDIw
QkY2ODVGMDAyMkIxNzEgLyogUmVjb3JkZWRTdGF0dXNlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZWNvcmRlZFN0YXR1c2VzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEY0NEE3QUUyMEJGNjg1RjAwMjJCMTcxIC8qIEV4aXRGbGFnLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4aXRGbGFnLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGNDRBN0FGMjBCRjY4NUYwMDIyQjE3MSAvKiBJQ1N0YXR1c01hcC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJQ1N0YXR1c01hcC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ0QTdCNTIwQzBCRTNGMDAyMkIxNzEgLyogSUNTdGF0
dXNVdGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJQ1N0YXR1
c1V0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NTcwMzYxQkU0NEM5
MTAwNjJBNjI5IC8qIEFpckVsaW1pbmF0ZURlYWRDb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IEFpckVsaW1pbmF0ZURlYWRDb2RlLmNwcDsgcGF0aCA9IGIzL2Fp
ci9BaXJFbGltaW5hdGVEZWFkQ29kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGNDU3MDM3MUJFNDRDOTEwMDYyQTYyOSAvKiBBaXJFbGltaW5hdGVEZWFkQ29kZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBaXJFbGltaW5hdGVEZWFkQ29kZS5oOyBwYXRo
ID0gYjMvYWlyL0FpckVsaW1pbmF0ZURlYWRDb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGNDU3MDNBMUJFNDVGMEEwMDYyQTYyOSAvKiBBaXJSZXBvcnRVc2VkUmVnaXN0ZXJz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEFpclJlcG9ydFVzZWRS
ZWdpc3RlcnMuY3BwOyBwYXRoID0gYjMvYWlyL0FpclJlcG9ydFVzZWRSZWdpc3RlcnMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzY2NCw2ICs3Njc3LDEwIEBACiAJCQkJMEY2
MEZFOEUxRkZDMzZGRDAwMDMzMjBBIC8qIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2UuaCAqLywK
IAkJCQkwRjU2QTFENDE1MDAxQ0YyMDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5jcHAgKi8s
CiAJCQkJMEY1NkExRDExNTAwMEYzMTAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNvdW50ZXIuaCAqLywK
KwkJCQkwRjQ0QTdBOTIwQkY2ODVFMDAyMkIxNzEgLyogRXhpdEZsYWcuY3BwICovLAorCQkJCTBG
NDRBN0FFMjBCRjY4NUYwMDIyQjE3MSAvKiBFeGl0RmxhZy5oICovLAorCQkJCTBGNDRBN0FDMjBC
RjY4NUYwMDIyQjE3MSAvKiBFeGl0aW5nSW5saW5lS2luZC5jcHAgKi8sCisJCQkJMEY0NEE3QTcy
MEJGNjg1RDAwMjJCMTcxIC8qIEV4aXRpbmdJbmxpbmVLaW5kLmggKi8sCiAJCQkJMEYwMzMyQkYx
OEFERkFFMTAwNUY5NzlBIC8qIEV4aXRpbmdKSVRUeXBlLmNwcCAqLywKIAkJCQkwRjNBQzc1MzE4
OEU1RUM4MDAzMjAyOUYgLyogRXhpdGluZ0pJVFR5cGUuaCAqLywKIAkJCQkwRkIxMDU4MjE2NzU0
ODBDMDBGOEFCNkUgLyogRXhpdEtpbmQuY3BwICovLApAQCAtNzY4MCw2ICs3Njk3LDkgQEAKIAkJ
CQkwRjAzMzJDMjE4QjAxNzYzMDA1Rjk3OUEgLyogR2V0QnlJZFZhcmlhbnQuaCAqLywKIAkJCQkx
NEFEOTEwODFEQ0E5Mjk0MDAxNEY5RkUgLyogR2xvYmFsQ29kZUJsb2NrLmggKi8sCiAJCQkJMEYw
QjgzQTgxNEJDRjU1RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi8sCisJCQkJMEY0NEE3QUIy
MEJGNjg1RTAwMjJCMTcxIC8qIElDU3RhdHVzTWFwLmNwcCAqLywKKwkJCQkwRjQ0QTdBRjIwQkY2
ODVGMDAyMkIxNzEgLyogSUNTdGF0dXNNYXAuaCAqLywKKwkJCQkwRjQ0QTdCNTIwQzBCRTNGMDAy
MkIxNzEgLyogSUNTdGF0dXNVdGlscy5jcHAgKi8sCiAJCQkJMEZCMzk5QkQyMEFGNkIzODAwMTdF
MjEzIC8qIElDU3RhdHVzVXRpbHMuaCAqLywKIAkJCQlFMzMwNUZCMjIwQjBGNzg4MDBDRUI4MkIg
LyogSW5CeUlkU3RhdHVzLmNwcCAqLywKIAkJCQlFMzMwNUZBRjIwQjBGNzg3MDBDRUI4MkIgLyog
SW5CeUlkU3RhdHVzLmggKi8sCkBAIC03NzQwLDYgKzc3NjAsOCBAQAogCQkJCTBGOTNCNEE3MThC
OTJDNEQwMDE3OEEzRiAvKiBQdXRCeUlkVmFyaWFudC5jcHAgKi8sCiAJCQkJMEY5M0I0QTgxOEI5
MkM0RDAwMTc4QTNGIC8qIFB1dEJ5SWRWYXJpYW50LmggKi8sCiAJCQkJMEY5RkM4QzExNEUxQjVG
QjAwRDUyQUUwIC8qIFB1dEtpbmQuaCAqLywKKwkJCQkwRjQ0QTdBRDIwQkY2ODVGMDAyMkIxNzEg
LyogUmVjb3JkZWRTdGF0dXNlcy5jcHAgKi8sCisJCQkJMEY0NEE3QUEyMEJGNjg1RTAwMjJCMTcx
IC8qIFJlY29yZGVkU3RhdHVzZXMuaCAqLywKIAkJCQkwRkY2MEFCRjE2NzQwRjgxMDAwMjk3Nzkg
LyogUmVkdWNlV2hpdGVzcGFjZS5jcHAgKi8sCiAJCQkJMEZGNjBBQzAxNjc0MEY4MTAwMDI5Nzc5
IC8qIFJlZHVjZVdoaXRlc3BhY2UuaCAqLywKIAkJCQkwRjU1NDFBRjE2MTNDMUZCMDBDRTNFMjUg
LyogU3BlY2lhbFBvaW50ZXIuY3BwICovLApAQCAtNzc1NCw2ICs3Nzc2LDcgQEAKIAkJCQlCQ0NG
MEQwNzBFRjBBQUI5MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1YkluZm8uaCAqLywKIAkJCQkwRjRB
MzhGNzFDOEUxM0RGMDAxOTAzMTggLyogU3VwZXJTYW1wbGVyLmNwcCAqLywKIAkJCQkwRjRBMzhG
ODFDOEUxM0RGMDAxOTAzMTggLyogU3VwZXJTYW1wbGVyLmggKi8sCisJCQkJMEY0NEE3QTgyMEJG
Njg1RTAwMjJCMTcxIC8qIFRlcm1pbmF0ZWRDb2RlT3JpZ2luLmggKi8sCiAJCQkJMEYyRDRERTUx
OTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5jcHAgKi8sCiAJCQkJMEYyRDRERTYxOTgz
MkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5oICovLAogCQkJCTBGOTUyQUJBMUI0ODdBNzcw
MEMzNjdDNSAvKiBUcmFja2VkUmVmZXJlbmNlcy5jcHAgKi8sCkBAIC04NDEwLDYgKzg0MzMsNyBA
QAogCQkJCTUzRDQ0NERDMURBRjA4QUIwMEI5Mjc4NCAvKiBCM1dhc21BZGRyZXNzVmFsdWUuaCBp
biBIZWFkZXJzICovLAogCQkJCTUzNDFGQzcyMURBQzM0M0MwMEU3RTRENyAvKiBCM1dhc21Cb3Vu
ZHNDaGVja1ZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJDNjNCMjFFNjBBRTQ3MDBDMTM4
MzkgLyogQjNXaWR0aC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NEE3QjIyMEJGNjhDRTAwMjJC
MTcxIC8qIElDU3RhdHVzTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MjY3OEY4RjFBMDMxMDA5
MDA2QTMwNkQgLyogQmFzaWNCbG9ja0xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDdC
ODNBQzBFNkRCOEM5MDA0Nzc1QTQgLyogQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg2OTc2RTVGMUZBM0U4QkMwMEU3QzRFMSAvKiBCaWdJbnRDb25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8sCkBAIC04NjMwLDYgKzg2NTQsNyBAQAogCQkJCTg2RUM5REM2
MTMyOERGODIwMDJCMkFENyAvKiBERkdHZW5lcmF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODZFQzlEQzgxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjJGQ0NGQTE4QTYwMDcwMDAxQTI3RjggLyogREZHR3JhcGhTYWZlcG9pbnQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGNDRBN0IxMjBCRjY4QzkwMDIyQjE3MSAvKiBFeGl0aW5nSW5saW5l
S2luZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCMTc2NjExOTZCOEY5RTAwOTEwNTJBIC8qIERG
R0hlYXBMb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDODQxNjkxQkE4QzMyMTAwNjE4
MzdEIC8qIERGR0luZmVycmVkVHlwZUNoZWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxNEUy
MTE4MTI1NzBCMDA5QjZCNEQgLyogREZHSW5saW5lQ2FjaGVXcmFwcGVyLmggaW4gSGVhZGVycyAq
LywKQEAgLTg3ODAsNiArODgwNSw3IEBACiAJCQkJQTdBOEFGMzgxN0FEQjVGMzAwNUFCMTc0IC8q
IEZsb2F0MzJBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdBOEFGMzkxN0FEQjVGMzAwNUFC
MTc0IC8qIEZsb2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NDMxN0VBOUY1
OTAwQUJCMjE3IC8qIEZQUkluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDRBN0IzMjBCRjY4
RDEwMDIyQjE3MSAvKiBSZWNvcmRlZFN0YXR1c2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzRF
REJGNzFEQjVGRkM5MDBEQzg3QTUgLyogRnJhbWVUcmFjZXJzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjU1MTNBNjFENUE2ODJDMDBDMzJCRDggLyogRnJlZUxpc3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGNjU4NUUxMUVFMDgwNUEwMDk1MTc2RCAvKiBGcmVlTGlzdElubGluZXMuaCBpbiBIZWFk
ZXJzICovLApAQCAtOTEyOSw2ICs5MTU1LDcgQEAKIAkJCQk3MDEzQ0E4QzFCNDkxQTk0MDBDQUU2
MTMgLyogSlNKb2IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE2MEUxNkY1Q0QwMEIzNDQ2
MCAvKiBKU0xleGljYWxFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MjMw
RTE2RjVDRDAwQjM0NDYwIC8qIEpTTG9jay5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NEE3QjAy
MEJGNjg2MjAwMjJCMTcxIC8qIEV4aXRGbGFnLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjVENzA5
QzE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJBNEJCN0YzMThBNDExNzkwMDhBMEZDRCAvKiBKU01hbmFnZWRWYWx1ZUludGVybmFsLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNzAwODc0MjE3Q0JFOEVCMDBDM0U2NDMgLyogSlNNYXAuaCBpbiBI
ZWFkZXJzICovLApAQCAtOTQ0NSw2ICs5NDcyLDcgQEAKIAkJCQlBNzI5OURBMjE3RDEyODQ4MDA1
RjVGRjkgLyogU2V0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVFOTg0MTFBODg2
NUI3MDA3NTRFOTMgLyogU2V0dXBWYXJhcmdzRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCURD
MTdFODE4MUM5QzkxRDkwMDhBNkFCMyAvKiBTaGFkb3dDaGlja2VuLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjQ0QTdCNDIwQkY2OEQ5MDAyMkIxNzEgLyogVGVybWluYXRlZENvZGVPcmlnaW4uaCBp
biBIZWFkZXJzICovLAogCQkJCURDMTdFODE5MUM5QzkxREIwMDhBNkFCMyAvKiBTaGFkb3dDaGlj
a2VuSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUzMDIyRDMxRTNENzNBNTAwQkFDNDkz
IC8qIFNpZ2lsbENyYXNoQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNEQ4Qzc4MUZD
QTNDRkEwMDFEMzJBQyAvKiBTaW1wbGVNYXJraW5nQ29uc3RyYWludC5oIGluIEhlYWRlcnMgKi8s
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZvLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5VmFsSW5mby5oCShyZXZp
c2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnlWYWxJbmZv
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2NiwxMiArMjY2LDYgQEAgaW5saW5lIHVuc2lnbmVkIGdl
dEJ5VmFsSW5mb0J5dGVjb2RlSW5kZQogICAgIHJldHVybiBpbmZvLT5ieXRlY29kZUluZGV4Owog
fQogCi10eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdpbiwgQnlWYWxJbmZvKiwgQ29kZU9yaWdpbkFw
cHJveGltYXRlSGFzaD4gQnlWYWxJbmZvTWFwOwotCi0jZWxzZSAvLyBFTkFCTEUoSklUKQotCi10
eXBlZGVmIEhhc2hNYXA8aW50LCB2b2lkKj4gQnlWYWxJbmZvTWFwOwotCiAjZW5kaWYgLy8gRU5B
QkxFKEpJVCkKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAJKHJldmlzaW9uIDIzMjQ0MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IFl1
c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTct
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTQyNyw3ICs0MjcsNyBAQCBzdGF0aWMgdm9pZCBkdW1wQ2hhaW4oUHJp
bnRTdHJlYW0mIG91dCwgCiB9CiAKIHRlbXBsYXRlPGNsYXNzIEJsb2NrPgotdm9pZCBCeXRlY29k
ZUR1bXBlcjxCbG9jaz46OnByaW50R2V0QnlJZENhY2hlU3RhdHVzKFByaW50U3RyZWFtJiBvdXQs
IGludCBsb2NhdGlvbiwgY29uc3QgU3R1YkluZm9NYXAmIG1hcCkKK3ZvaWQgQnl0ZWNvZGVEdW1w
ZXI8QmxvY2s+OjpwcmludEdldEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQg
bG9jYXRpb24sIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgY29uc3QgYXV0
byogaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNCZWdpbigpICsgbG9jYXRpb247CiAKQEAgLTQ0
Nyw3ICs0NDcsNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRHZXRCeUlkCiAg
ICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoU3RydWN0dXJlU3R1YkluZm8qIHN0dWJQ
dHIgPSBtYXAuZ2V0KENvZGVPcmlnaW4obG9jYXRpb24pKSkgeworICAgIGlmIChTdHJ1Y3R1cmVT
dHViSW5mbyogc3R1YlB0ciA9IHN0YXR1c01hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpLnN0
dWJJbmZvKSB7CiAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9ICpzdHViUHRy
OwogICAgICAgICBpZiAoc3R1YkluZm8ucmVzZXRCeUdDKQogICAgICAgICAgICAgb3V0LnByaW50
KCIgKFJlc2V0IEJ5IEdDKSIpOwpAQCAtNDg4LDEyICs0ODgsMTIgQEAgdm9pZCBCeXRlY29kZUR1
bXBlcjxCbG9jaz46OnByaW50R2V0QnlJZAogICAgICAgICBvdXQucHJpbnRmKCIpIik7CiAgICAg
fQogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0obWFwKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdHVz
TWFwKTsKICNlbmRpZgogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBp
bnQgbG9jYXRpb24sIGNvbnN0IFN0dWJJbmZvTWFwJiBtYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVy
PEJsb2NrPjo6cHJpbnRQdXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxv
Y2F0aW9uLCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQogewogICAgIGNvbnN0IGF1dG8q
IGluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zQmVnaW4oKSArIGxvY2F0aW9uOwogCkBAIC01MjEs
NyArNTIxLDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50UHV0QnlJZAogICAg
IH0KIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViUHRy
ID0gbWFwLmdldChDb2RlT3JpZ2luKGxvY2F0aW9uKSkpIHsKKyAgICBpZiAoU3RydWN0dXJlU3R1
YkluZm8qIHN0dWJQdHIgPSBzdGF0dXNNYXAuZ2V0KENvZGVPcmlnaW4obG9jYXRpb24pKS5zdHVi
SW5mbykgewogICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSAqc3R1YlB0cjsK
ICAgICAgICAgaWYgKHN0dWJJbmZvLnJlc2V0QnlHQykKICAgICAgICAgICAgIG91dC5wcmludCgi
IChSZXNldCBCeSBHQykiKTsKQEAgLTU0NywxMiArNTQ3LDEyIEBAIHZvaWQgQnl0ZWNvZGVEdW1w
ZXI8QmxvY2s+OjpwcmludFB1dEJ5SWQKICAgICAgICAgb3V0LnByaW50ZigiKSIpOwogICAgIH0K
ICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKG1hcCk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXR1c01h
cCk7CiAjZW5kaWYKIH0KIAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVjb2RlRHVt
cGVyPEJsb2NrPjo6cHJpbnRJbkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQg
bG9jYXRpb24sIGNvbnN0IFN0dWJJbmZvTWFwJiBtYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPEJs
b2NrPjo6cHJpbnRJbkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRp
b24sIGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgY29uc3QgYXV0byogaW5z
dHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNCZWdpbigpICsgbG9jYXRpb247CiAKQEAgLTU2MSw3ICs1
NjEsNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRJbkJ5SWRDCiAgICAgVU5V
U0VEX1BBUkFNKGlkZW50KTsgLy8gdGVsbCB0aGUgY29tcGlsZXIgdG8gc2h1dCB1cCBpbiBjZXJ0
YWluIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb25zLgogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAo
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJQdHIgPSBtYXAuZ2V0KENvZGVPcmlnaW4obG9jYXRpb24p
KSkgeworICAgIGlmIChTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YlB0ciA9IHN0YXR1c01hcC5nZXQo
Q29kZU9yaWdpbihsb2NhdGlvbikpLnN0dWJJbmZvKSB7CiAgICAgICAgIFN0cnVjdHVyZVN0dWJJ
bmZvJiBzdHViSW5mbyA9ICpzdHViUHRyOwogICAgICAgICBpZiAoc3R1YkluZm8ucmVzZXRCeUdD
KQogICAgICAgICAgICAgb3V0LnByaW50KCIgKFJlc2V0IEJ5IEdDKSIpOwpAQCAtNjAwLDI2ICs2
MDAsMjYgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OnByaW50SW5CeUlkQwogICAgIH0K
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG91dCk7Ci0gICAgVU5VU0VEX1BBUkFNKG1hcCk7Cisg
ICAgVU5VU0VEX1BBUkFNKHN0YXR1c01hcCk7CiAjZW5kaWYKIH0KIAogI2lmIEVOQUJMRShKSVQp
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpk
dW1wQ2FsbExpbmtTdGF0dXMoUHJpbnRTdHJlYW0mLCB1bnNpZ25lZCwgY29uc3QgQ2FsbExpbmtJ
bmZvTWFwJikKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQ2FsbExpbmtTdGF0dXMo
UHJpbnRTdHJlYW0mLCB1bnNpZ25lZCwgY29uc3QgSUNTdGF0dXNNYXAmKQogewogfQogCiB0ZW1w
bGF0ZTw+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBDYWxsTGlua1N0YXR1
cyhQcmludFN0cmVhbSYgb3V0LCB1bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgQ2FsbExpbmtJbmZv
TWFwJiBtYXApCit2b2lkIEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1bXBDYWxsTGlua1N0
YXR1cyhQcmludFN0cmVhbSYgb3V0LCB1bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNN
YXAmIHN0YXR1c01hcCkKIHsKICAgICBpZiAoYmxvY2soKS0+aml0VHlwZSgpICE9IEpJVENvZGU6
OkZUTEpJVCkKLSAgICAgICAgb3V0LnByaW50KCIgc3RhdHVzKCIsIENhbGxMaW5rU3RhdHVzOjpj
b21wdXRlRm9yKGJsb2NrKCksIGxvY2F0aW9uLCBtYXApLCAiKSIpOworICAgICAgICBvdXQucHJp
bnQoIiBzdGF0dXMoIiwgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoYmxvY2soKSwgbG9jYXRp
b24sIHN0YXR1c01hcCksICIpIik7CiB9CiAjZW5kaWYKIAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+
Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91
dCwgaW50IGxvY2F0aW9uLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwg
Y29uc3QgY2hhciogb3AsIENhY2hlRHVtcE1vZGUgY2FjaGVEdW1wTW9kZSwgYm9vbCYgaGFzUHJp
bnRlZFByb2ZpbGluZywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBtYXApCit2b2lkIEJ5dGVjb2Rl
RHVtcGVyPEJsb2NrPjo6cHJpbnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9u
LCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgY2hhciogb3As
IENhY2hlRHVtcE1vZGUgY2FjaGVEdW1wTW9kZSwgYm9vbCYgaGFzUHJpbnRlZFByb2ZpbGluZywg
Y29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBpbnQgZHN0ID0gKCsraXQpLT51
Lm9wZXJhbmQ7CiAgICAgaW50IGZ1bmMgPSAoKytpdCktPnUub3BlcmFuZDsKQEAgLTYzOCw3ICs2
MzgsNyBAQCB2b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2NrPjo6cHJpbnRDYWxsT3AoCiAgICAgICAg
ICAgICAgICAgb3V0LnByaW50ZigiIGxsaW50KCVwKSIsIG9iamVjdCk7CiAgICAgICAgIH0KICNp
ZiBFTkFCTEUoSklUKQotICAgICAgICBpZiAoQ2FsbExpbmtJbmZvKiBpbmZvID0gbWFwLmdldChD
b2RlT3JpZ2luKGxvY2F0aW9uKSkpIHsKKyAgICAgICAgaWYgKENhbGxMaW5rSW5mbyogaW5mbyA9
IHN0YXR1c01hcC5nZXQoQ29kZU9yaWdpbihsb2NhdGlvbikpLmNhbGxMaW5rSW5mbykgewogICAg
ICAgICAgICAgaWYgKGluZm8tPmhhdmVMYXN0U2VlbkNhbGxlZSgpKSB7CiAgICAgICAgICAgICAg
ICAgSlNPYmplY3QqIG9iamVjdCA9IGluZm8tPmxhc3RTZWVuQ2FsbGVlKCk7CiAgICAgICAgICAg
ICAgICAgaWYgKGF1dG8qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4oKnZt
KCksIG9iamVjdCkpCkBAIC02NDgsOSArNjQ4LDkgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9j
az46OnByaW50Q2FsbE9wKAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgZHVt
cENhbGxMaW5rU3RhdHVzKG91dCwgbG9jYXRpb24sIG1hcCk7CisgICAgICAgIGR1bXBDYWxsTGlu
a1N0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdGF0dXNNYXApOwogI2Vsc2UKLSAgICAgICAgVU5VU0VE
X1BBUkFNKG1hcCk7CisgICAgICAgIFVOVVNFRF9QQVJBTShzdGF0dXNNYXApOwogI2VuZGlmCiAg
ICAgfQogICAgICsraXQ7CkBAIC02NzgsNyArNjc4LDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxC
bG9jaz46OnByaW50TG9jYXRpbwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0
ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3Qg
dHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6
Okluc3RydWN0aW9uKiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiBzdHViSW5mb3MsIGNvbnN0IENh
bGxMaW5rSW5mb01hcCYgY2FsbExpbmtJbmZvcykKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+
OjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Oklu
c3RydWN0aW9uKiBiZWdpbiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiYgaXQs
IGNvbnN0IElDU3RhdHVzTWFwJiBzdGF0dXNNYXApCiB7CiAgICAgaW50IGxvY2F0aW9uID0gaXQg
LSBiZWdpbjsKICAgICBib29sIGhhc1ByaW50ZWRQcm9maWxpbmcgPSBmYWxzZTsKQEAgLTEwNzEs
NyArMTA3MSw3IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAg
ICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICBwcmludExvY2F0aW9u
QW5kT3Aob3V0LCBsb2NhdGlvbiwgaXQsICJpbl9ieV9pZCIpOwogICAgICAgICBvdXQucHJpbnRm
KCIlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSku
ZGF0YSgpLCBpZE5hbWUoaWQwLCBpZGVudGlmaWVyKGlkMCkpLmRhdGEoKSk7Ci0gICAgICAgIHBy
aW50SW5CeUlkQ2FjaGVTdGF0dXMob3V0LCBsb2NhdGlvbiwgc3R1YkluZm9zKTsKKyAgICAgICAg
cHJpbnRJbkJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdGF0dXNNYXApOwogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgY2FzZSBvcF9pbl9ieV92YWw6IHsKQEAgLTEwOTUsNyArMTA5
NSw3IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAg
cHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgbG9jYXRpb24sIGl0LCAiZ2V0X2J5X2lkX2RpcmVjdCIp
OwogICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBpZGVudGlmaWVyKGlkMCkp
LmRhdGEoKSk7CiAgICAgICAgIGl0ICs9IDI7IC8vIEluY3JlbWVudCB1cCB0byB0aGUgdmFsdWUg
cHJvZmlsZXIuCi0gICAgICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24s
IHN0dWJJbmZvcyk7CisgICAgICAgIHByaW50R2V0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRp
b24sIHN0YXR1c01hcCk7CiAgICAgICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQ
cmludGVkUHJvZmlsaW5nKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTEwNCw3ICsxMTA0
LDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCeXRlY29kZQogICAgIGNhc2Ug
b3BfZ2V0X2J5X2lkX3Vuc2V0OgogICAgIGNhc2Ugb3BfZ2V0X2FycmF5X2xlbmd0aDogewogICAg
ICAgICBwcmludEdldEJ5SWRPcChvdXQsIGxvY2F0aW9uLCBpdCk7Ci0gICAgICAgIHByaW50R2V0
QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0dWJJbmZvcyk7CisgICAgICAgIHByaW50
R2V0QnlJZENhY2hlU3RhdHVzKG91dCwgbG9jYXRpb24sIHN0YXR1c01hcCk7CiAgICAgICAgIGR1
bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0LCBoYXNQcmludGVkUHJvZmlsaW5nKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQpAQCAtMTEzMCw3ICsxMTMwLDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxC
bG9jaz46OmR1bXBCeXRlY29kZQogICAgIH0KICAgICBjYXNlIG9wX3B1dF9ieV9pZDogewogICAg
ICAgICBwcmludFB1dEJ5SWRPcChvdXQsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZCIpOwotICAg
ICAgICBwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdHViSW5mb3MpOwor
ICAgICAgICBwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhvdXQsIGxvY2F0aW9uLCBzdGF0dXNNYXAp
OwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBvcF9wdXRfYnlfaWRfd2l0aF90aGlz
OiB7CkBAIC0xNDc2LDE1ICsxNDc2LDE1IEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpk
dW1wQnl0ZWNvZGUKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3BfY2FsbDogewot
ICAgICAgICBwcmludENhbGxPcChvdXQsIGxvY2F0aW9uLCBpdCwgImNhbGwiLCBEdW1wQ2FjaGVz
LCBoYXNQcmludGVkUHJvZmlsaW5nLCBjYWxsTGlua0luZm9zKTsKKyAgICAgICAgcHJpbnRDYWxs
T3Aob3V0LCBsb2NhdGlvbiwgaXQsICJjYWxsIiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2Zp
bGluZywgc3RhdHVzTWFwKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3BfdGFp
bF9jYWxsOiB7Ci0gICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAidGFpbF9j
YWxsIiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgY2FsbExpbmtJbmZvcyk7Cisg
ICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24sIGl0LCAidGFpbF9jYWxsIiwgRHVtcENh
Y2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgc3RhdHVzTWFwKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIGNhc2Ugb3BfY2FsbF9ldmFsOiB7Ci0gICAgICAgIHByaW50Q2FsbE9wKG91dCwg
bG9jYXRpb24sIGl0LCAiY2FsbF9ldmFsIiwgRG9udER1bXBDYWNoZXMsIGhhc1ByaW50ZWRQcm9m
aWxpbmcsIGNhbGxMaW5rSW5mb3MpOworICAgICAgICBwcmludENhbGxPcChvdXQsIGxvY2F0aW9u
LCBpdCwgImNhbGxfZXZhbCIsIERvbnREdW1wQ2FjaGVzLCBoYXNQcmludGVkUHJvZmlsaW5nLCBz
dGF0dXNNYXApOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTE1MjMsNyArMTUyMyw3IEBA
IHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNvZGUKICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgIGNhc2Ugb3BfY29uc3RydWN0OiB7Ci0gICAgICAgIHByaW50Q2FsbE9wKG91
dCwgbG9jYXRpb24sIGl0LCAiY29uc3RydWN0IiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2Zp
bGluZywgY2FsbExpbmtJbmZvcyk7CisgICAgICAgIHByaW50Q2FsbE9wKG91dCwgbG9jYXRpb24s
IGl0LCAiY29uc3RydWN0IiwgRHVtcENhY2hlcywgaGFzUHJpbnRlZFByb2ZpbGluZywgc3RhdHVz
TWFwKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3Bfc3RyY2F0OiB7CkBAIC0x
Nzc4LDEwICsxNzc4LDEwIEBAIHZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+OjpkdW1wQnl0ZWNv
ZGUKIH0KIAogdGVtcGxhdGU8Y2xhc3MgQmxvY2s+Ci12b2lkIEJ5dGVjb2RlRHVtcGVyPEJsb2Nr
Pjo6ZHVtcEJ5dGVjb2RlKEJsb2NrKiBibG9jaywgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgdHlw
ZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6Oklu
c3RydWN0aW9uKiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiBzdHViSW5mb3MsIGNvbnN0IENhbGxM
aW5rSW5mb01hcCYgY2FsbExpbmtJbmZvcykKK3ZvaWQgQnl0ZWNvZGVEdW1wZXI8QmxvY2s+Ojpk
dW1wQnl0ZWNvZGUoQmxvY2sqIGJsb2NrLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCB0eXBlbmFt
ZSBCbG9jazo6SW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1
Y3Rpb24qJiBpdCwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkKIHsKICAgICBCeXRlY29k
ZUR1bXBlciBkdW1wZXIoYmxvY2ssIGJlZ2luKTsKLSAgICBkdW1wZXIuZHVtcEJ5dGVjb2RlKG91
dCwgYmVnaW4sIGl0LCBzdHViSW5mb3MsIGNhbGxMaW5rSW5mb3MpOworICAgIGR1bXBlci5kdW1w
Qnl0ZWNvZGUob3V0LCBiZWdpbiwgaXQsIHN0YXR1c01hcCk7CiB9CiAKIHRlbXBsYXRlPGNsYXNz
IEJsb2NrPgpAQCAtMTg5MCw3ICsxODkwLDcgQEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46
OmR1bXBTdHJpbmdTdwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBCbG9jaz4KLXZvaWQgQnl0ZWNvZGVE
dW1wZXI8QmxvY2s+OjpkdW1wQmxvY2soQmxvY2sqIGJsb2NrLCBjb25zdCB0eXBlbmFtZSBCbG9j
azo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucywgUHJpbnRTdHJlYW0mIG91dCwg
Y29uc3QgU3R1YkluZm9NYXAmIHN0dWJJbmZvcywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBjYWxs
TGlua0luZm9zKQordm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCbG9jayhCbG9jayog
YmxvY2ssIGNvbnN0IHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1
Y3Rpb25zLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwKQog
ewogICAgIHNpemVfdCBpbnN0cnVjdGlvbkNvdW50ID0gMDsKIApAQCAtMTkxMCw3ICsxOTEwLDcg
QEAgdm9pZCBCeXRlY29kZUR1bXBlcjxCbG9jaz46OmR1bXBCbG9jayhCbAogICAgIGNvbnN0IGF1
dG8qIGVuZCA9IGluc3RydWN0aW9ucy5lbmQoKTsKICAgICBCeXRlY29kZUR1bXBlcjxCbG9jaz4g
ZHVtcGVyKGJsb2NrLCBiZWdpbik7CiAgICAgZm9yIChjb25zdCBhdXRvKiBpdCA9IGJlZ2luOyBp
dCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGR1bXBlci5kdW1wQnl0ZWNvZGUob3V0LCBiZWdpbiwg
aXQsIHN0dWJJbmZvcywgY2FsbExpbmtJbmZvcyk7CisgICAgICAgIGR1bXBlci5kdW1wQnl0ZWNv
ZGUob3V0LCBiZWdpbiwgaXQsIHN0YXR1c01hcCk7CiAKICAgICBkdW1wZXIuZHVtcElkZW50aWZp
ZXJzKG91dCk7CiAgICAgZHVtcGVyLmR1bXBDb25zdGFudHMob3V0KTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUR1bXBlci5oCShyZXZpc2lvbiAy
MzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVEdW1wZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjYsNiArMjcsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJDYWxsTGlua0luZm8uaCIKKyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgogI2luY2x1ZGUgIlN0
cnVjdHVyZVN0dWJJbmZvLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzcsOCArMzksOCBAQCBj
bGFzcyBCeXRlY29kZUR1bXBlciB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBCbG9j
azo6SW5zdHJ1Y3Rpb24gSW5zdHJ1Y3Rpb247CiAKLSAgICBzdGF0aWMgdm9pZCBkdW1wQnl0ZWNv
ZGUoQmxvY2sqLCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNv
bnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IFN0dWJJbmZvTWFwJiA9IFN0dWJJbmZvTWFwKCks
IGNvbnN0IENhbGxMaW5rSW5mb01hcCYgPSBDYWxsTGlua0luZm9NYXAoKSk7Ci0gICAgc3RhdGlj
IHZvaWQgZHVtcEJsb2NrKEJsb2NrKiwgY29uc3QgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5z
dHJ1Y3Rpb25zJiwgUHJpbnRTdHJlYW0mIG91dCwgY29uc3QgU3R1YkluZm9NYXAmID0gU3R1Yklu
Zm9NYXAoKSwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiA9IENhbGxMaW5rSW5mb01hcCgpKTsKKyAg
ICBzdGF0aWMgdm9pZCBkdW1wQnl0ZWNvZGUoQmxvY2sqLCBQcmludFN0cmVhbSYgb3V0LCBjb25z
dCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3Rh
dHVzTWFwJiBzdGF0dXNNYXAgPSBJQ1N0YXR1c01hcCgpKTsKKyAgICBzdGF0aWMgdm9pZCBkdW1w
QmxvY2soQmxvY2sqLCBjb25zdCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMm
LCBQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJQ1N0YXR1c01hcCYgc3RhdHVzTWFwID0gSUNTdGF0
dXNNYXAoKSk7CiAKIHByaXZhdGU6CiAgICAgQnl0ZWNvZGVEdW1wZXIoQmxvY2sqIGJsb2NrLCBj
b25zdCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4pCkBAIC02OSwxNCArNzEsMTQgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHByaW50Q29uZGl0aW9uYWxKdW1wKFByaW50U3RyZWFtJiBvdXQs
IGNvbnN0IEluc3RydWN0aW9uKiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgaW50IGxvY2F0aW9u
LCBjb25zdCBjaGFyKiBvcCk7CiAgICAgdm9pZCBwcmludENvbXBhcmVKdW1wKFByaW50U3RyZWFt
JiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgaW50IGxv
Y2F0aW9uLCBjb25zdCBjaGFyKiBvcCk7CiAgICAgdm9pZCBwcmludEdldEJ5SWRPcChQcmludFN0
cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQpOwotICAgIHZv
aWQgcHJpbnRHZXRCeUlkQ2FjaGVTdGF0dXMoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9u
LCBjb25zdCBTdHViSW5mb01hcCYpOwotICAgIHZvaWQgcHJpbnRQdXRCeUlkQ2FjaGVTdGF0dXMo
UHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBTdHViSW5mb01hcCYpOwotICAg
IHZvaWQgcHJpbnRJbkJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRp
b24sIGNvbnN0IFN0dWJJbmZvTWFwJik7CisgICAgdm9pZCBwcmludEdldEJ5SWRDYWNoZVN0YXR1
cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IElDU3RhdHVzTWFwJik7Cisg
ICAgdm9pZCBwcmludFB1dEJ5SWRDYWNoZVN0YXR1cyhQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9j
YXRpb24sIGNvbnN0IElDU3RhdHVzTWFwJik7CisgICAgdm9pZCBwcmludEluQnlJZENhY2hlU3Rh
dHVzKFByaW50U3RyZWFtJiBvdXQsIGludCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmKTsK
ICAgICBlbnVtIENhY2hlRHVtcE1vZGUgeyBEdW1wQ2FjaGVzLCBEb250RHVtcENhY2hlcyB9Owot
ICAgIHZvaWQgcHJpbnRDYWxsT3AoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25z
dCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBjaGFyKiBvcCwgQ2FjaGVEdW1wTW9kZSwgYm9vbCYg
aGFzUHJpbnRlZFByb2ZpbGluZywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJik7CisgICAgdm9pZCBw
cmludENhbGxPcChQcmludFN0cmVhbSYgb3V0LCBpbnQgbG9jYXRpb24sIGNvbnN0IEluc3RydWN0
aW9uKiYgaXQsIGNvbnN0IGNoYXIqIG9wLCBDYWNoZUR1bXBNb2RlLCBib29sJiBoYXNQcmludGVk
UHJvZmlsaW5nLCBjb25zdCBJQ1N0YXR1c01hcCYpOwogICAgIHZvaWQgcHJpbnRQdXRCeUlkT3Ao
UHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBj
b25zdCBjaGFyKiBvcCk7CiAgICAgdm9pZCBwcmludExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJh
bmQoUHJpbnRTdHJlYW0mIG91dCwgaW50IGxvY2F0aW9uLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0
LCBjb25zdCBjaGFyKiBvcCwgaW50IG9wZXJhbmQpOwotICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFBy
aW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rp
b24qJiBpdCwgY29uc3QgU3R1YkluZm9NYXAmLCBjb25zdCBDYWxsTGlua0luZm9NYXAmKTsKKyAg
ICB2b2lkIGR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0LCBjb25zdCBJbnN0cnVjdGlvbiog
YmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0IElDU3RhdHVzTWFwJik7CiAKICAg
ICB2b2lkIGR1bXBWYWx1ZVByb2ZpbGluZyhQcmludFN0cmVhbSYsIGNvbnN0IEluc3RydWN0aW9u
KiYsIGJvb2wmIGhhc1ByaW50ZWRQcm9maWxpbmcpOwogICAgIHZvaWQgZHVtcEFycmF5UHJvZmls
aW5nKFByaW50U3RyZWFtJiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiwgYm9vbCYgaGFzUHJpbnRlZFBy
b2ZpbGluZyk7CkBAIC04NSw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCogYWN0dWFsUG9p
bnRlckZvcihTcGVjaWFsOjpQb2ludGVyKSBjb25zdDsKIAogI2lmIEVOQUJMRShKSVQpCi0gICAg
dm9pZCBkdW1wQ2FsbExpbmtTdGF0dXMoUHJpbnRTdHJlYW0mLCB1bnNpZ25lZCBsb2NhdGlvbiwg
Y29uc3QgQ2FsbExpbmtJbmZvTWFwJik7CisgICAgdm9pZCBkdW1wQ2FsbExpbmtTdGF0dXMoUHJp
bnRTdHJlYW0mLCB1bnNpZ25lZCBsb2NhdGlvbiwgY29uc3QgSUNTdGF0dXNNYXAmKTsKICNlbmRp
ZgogCiAgICAgQmxvY2sqIG1fYmxvY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1
MiwxMiArMzUyLDYgQEAgaW5saW5lIENvZGVPcmlnaW4gZ2V0Q2FsbExpbmtJbmZvQ29kZU9yaQog
ICAgIHJldHVybiBjYWxsTGlua0luZm8uY29kZU9yaWdpbigpOwogfQogCi10eXBlZGVmIEhhc2hN
YXA8Q29kZU9yaWdpbiwgQ2FsbExpbmtJbmZvKiwgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFzaD4g
Q2FsbExpbmtJbmZvTWFwOwotCi0jZWxzZSAvLyBFTkFCTEUoSklUKQotCi10eXBlZGVmIEhhc2hN
YXA8aW50LCB2b2lkKj4gQ2FsbExpbmtJbmZvTWFwOwotCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbExpbmtTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc3LDcgKzc3LDggQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1
dGVGcgogfQogCiBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcigKLSAg
ICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIGNvbnN0
IENhbGxMaW5rSW5mb01hcCYgbWFwKQorICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5z
aWduZWQgYnl0ZWNvZGVJbmRleCwgY29uc3QgSUNTdGF0dXNNYXAmIG1hcCwKKyAgICBFeGl0U2l0
ZURhdGEgZXhpdFNpdGVEYXRhKQogewogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIocHJv
ZmlsZWRCbG9jay0+bV9sb2NrKTsKICAgICAKQEAgLTg1LDkgKzg2LDcgQEAgQ2FsbExpbmtTdGF0
dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGbwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUlu
ZGV4KTsKICAgICBVTlVTRURfUEFSQU0obWFwKTsKICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBF
eGl0U2l0ZURhdGEgZXhpdFNpdGVEYXRhID0gY29tcHV0ZUV4aXRTaXRlRGF0YShwcm9maWxlZEJs
b2NrLCBieXRlY29kZUluZGV4KTsKLSAgICAKLSAgICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5m
byA9IG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4KSk7CisgICAgQ2FsbExpbmtJbmZv
KiBjYWxsTGlua0luZm8gPSBtYXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkpLmNhbGxM
aW5rSW5mbzsKICAgICBpZiAoIWNhbGxMaW5rSW5mbykgewogICAgICAgICBpZiAoZXhpdFNpdGVE
YXRhLnRha2VzU2xvd1BhdGgpCiAgICAgICAgICAgICByZXR1cm4gdGFrZXNTbG93UGF0aCgpOwpA
QCAtMTAwLDYgKzk5LDEyIEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRl
Rm8KICNlbmRpZgogfQogCitDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZv
cigKKyAgICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgs
IGNvbnN0IElDU3RhdHVzTWFwJiBtYXApCit7CisgICAgcmV0dXJuIGNvbXB1dGVGb3IocHJvZmls
ZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgbWFwLCBjb21wdXRlRXhpdFNpdGVEYXRhKHByb2ZpbGVk
QmxvY2ssIGJ5dGVjb2RlSW5kZXgpKTsKK30KKwogQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0
YSBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YShDb2RlQmxvY2sqIHByb2ZpbGVk
QmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgRXhpdFNpdGVEYXRhIGV4aXRT
aXRlRGF0YTsKQEAgLTEwNywxMSArMTEyLDIxIEBAIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURh
dGEgQ2FsbExpbmtTdGEKICAgICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gcHJvZmls
ZWRCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKTsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9j
a2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKIAotICAgIGV4aXRTaXRlRGF0YS50YWtlc1Nsb3dQYXRo
ID0KLSAgICAgICAgY29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRF
eGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRUeXBlKSkKLSAgICAgICAgfHwgY29kZUJsb2NrLT5o
YXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBC
YWRFeGVjdXRhYmxlKSk7Ci0gICAgZXhpdFNpdGVEYXRhLmJhZEZ1bmN0aW9uID0KLSAgICAgICAg
Y29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRl
Y29kZUluZGV4LCBCYWRDZWxsKSk7CisgICAgYXV0byB0YWtlc1Nsb3dQYXRoID0gWyZdIChFeGl0
aW5nSW5saW5lS2luZCBpbmxpbmVLaW5kKSAtPiBFeGl0RmxhZyB7CisgICAgICAgIHJldHVybiBF
eGl0RmxhZygKKyAgICAgICAgICAgIGNvZGVCbG9jay0+aGFzRXhpdFNpdGUobG9ja2VyLCBERkc6
OkZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwgQmFkVHlwZSwgRXhpdEZyb21Bbnl0aGlu
ZywgaW5saW5lS2luZCkpCisgICAgICAgICAgICB8fCBjb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxv
Y2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZEV4ZWN1dGFibGUs
IEV4aXRGcm9tQW55dGhpbmcsIGlubGluZUtpbmQpKSwKKyAgICAgICAgICAgIGlubGluZUtpbmQp
OworICAgIH07CisgICAgCisgICAgYXV0byBiYWRGdW5jdGlvbiA9IFsmXSAoRXhpdGluZ0lubGlu
ZUtpbmQgaW5saW5lS2luZCkgLT4gRXhpdEZsYWcgeworICAgICAgICByZXR1cm4gRXhpdEZsYWco
Y29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRl
Y29kZUluZGV4LCBCYWRDZWxsLCBFeGl0RnJvbUFueXRoaW5nLCBpbmxpbmVLaW5kKSksIGlubGlu
ZUtpbmQpOworICAgIH07CisgICAgCisgICAgZXhpdFNpdGVEYXRhLnRha2VzU2xvd1BhdGggfD0g
dGFrZXNTbG93UGF0aChFeGl0RnJvbU5vdElubGluZWQpOworICAgIGV4aXRTaXRlRGF0YS50YWtl
c1Nsb3dQYXRoIHw9IHRha2VzU2xvd1BhdGgoRXhpdEZyb21JbmxpbmVkKTsKKyAgICBleGl0U2l0
ZURhdGEuYmFkRnVuY3Rpb24gfD0gYmFkRnVuY3Rpb24oRXhpdEZyb21Ob3RJbmxpbmVkKTsKKyAg
ICBleGl0U2l0ZURhdGEuYmFkRnVuY3Rpb24gfD0gYmFkRnVuY3Rpb24oRXhpdEZyb21JbmxpbmVk
KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9Q
QVJBTShieXRlY29kZUluZGV4KTsKQEAgLTEzNSw2ICsxNTAsMTAgQEAgQ2FsbExpbmtTdGF0dXMg
Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGbwogQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6
OmNvbXB1dGVGcm9tQ2FsbExpbmtJbmZvKAogICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYs
IENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKQogeworICAgIC8vIFdlIGNhbm5vdCB0ZWxsIHlv
dSBhbnl0aGluZyBhYm91dCBkaXJlY3QgY2FsbHMuCisgICAgaWYgKGNhbGxMaW5rSW5mby5pc0Rp
cmVjdCgpKQorICAgICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoKTsKKyAgICAKICAgICBpZiAo
Y2FsbExpbmtJbmZvLmNsZWFyZWRCeUdDKCkpCiAgICAgICAgIHJldHVybiB0YWtlc1Nsb3dQYXRo
KCk7CiAgICAgCkBAIC0xNTgsNiArMTc3LDE5IEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3Rh
dHVzOjpjb21wdXRlRnIKICAgICBpZiAoUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUqIHN0dWIg
PSBjYWxsTGlua0luZm8uc3R1YigpKSB7CiAgICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOwog
ICAgICAgICAKKyAgICAgICAgaWYgKCFzdHViLT5oYXNFZGdlcygpKSB7CisgICAgICAgICAgICAv
LyBUaGlzIG1lYW5zIHdlIGhhdmUgYW4gRlRMIHByb2ZpbGUsIHdoaWNoIGhhcyBpbmNvbXBsZXRl
IGluZm9ybWF0aW9uLgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIEl0J3Mgbm90IGNs
ZWFyIGlmIHRha2VzU2xvd1BhdGgoKSBvciBDYWxsTGlua1N0YXR1cygpIGFyZSBhcHByb3ByaWF0
ZSBoZXJlLCBidXQgSQorICAgICAgICAgICAgLy8gdGhpbmsgdGhhdCB0YWtlc1Nsb3dQYXRoKCkg
aXMgYSBuYXJyb3cgd2lubmVyLgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIEVpdGhl
ciB3YXksIHRoaXMgaXMgdGVsbGluZyB1cyB0aGF0IHRoZSBGVEwgaGFkIGJlZW4gbGVkIHRvIGJl
bGlldmUgdGhhdCBpdCdzCisgICAgICAgICAgICAvLyBwcm9maXRhYmxlIG5vdCB0byBpbmxpbmUg
YW55dGhpbmcuCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gCisgICAgICAgICAgICBy
ZXR1cm4gdGFrZXNTbG93UGF0aCgpOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBDYWxs
RWRnZUxpc3QgZWRnZXMgPSBzdHViLT5lZGdlcygpOwogICAgICAgICAKICAgICAgICAgLy8gTm93
IHRoYXQgd2UndmUgbG9hZGVkIHRoZSBlZGdlcyBsaXN0LCB0aGVyZSBhcmUgbm8gZnVydGhlciBj
b25jdXJyZW5jeSBjb25jZXJucy4gV2Ugd2lsbApAQCAtMjI3LDgzICsyNTksMTIyIEBAIENhbGxM
aW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnIKIAogQ2FsbExpbmtTdGF0dXMgQ2Fs
bExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiBs
b2NrZXIsIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgQ2FsbExpbmtJbmZvJiBjYWxsTGlua0lu
Zm8sCi0gICAgRXhpdFNpdGVEYXRhIGV4aXRTaXRlRGF0YSkKKyAgICBFeGl0U2l0ZURhdGEgZXhp
dFNpdGVEYXRhLCBFeGl0aW5nSW5saW5lS2luZCBpbmxpbmVLaW5kKQogewogICAgIENhbGxMaW5r
U3RhdHVzIHJlc3VsdCA9IGNvbXB1dGVGb3IobG9ja2VyLCBwcm9maWxlZEJsb2NrLCBjYWxsTGlu
a0luZm8pOwotICAgIGlmIChleGl0U2l0ZURhdGEuYmFkRnVuY3Rpb24pIHsKLSAgICAgICAgaWYg
KHJlc3VsdC5pc0Jhc2VkT25TdHViKCkpIHsKKyAgICByZXN1bHQuYWNjb3VudEZvckV4aXRzKGV4
aXRTaXRlRGF0YSwgaW5saW5lS2luZCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZgor
Cit2b2lkIENhbGxMaW5rU3RhdHVzOjphY2NvdW50Rm9yRXhpdHMoRXhpdFNpdGVEYXRhIGV4aXRT
aXRlRGF0YSwgRXhpdGluZ0lubGluZUtpbmQgaW5saW5lS2luZCkKK3sKKyAgICBpZiAoZXhpdFNp
dGVEYXRhLmJhZEZ1bmN0aW9uLmlzU2V0KGlubGluZUtpbmQpKSB7CisgICAgICAgIGlmIChpc0Jh
c2VkT25TdHViKCkpIHsKICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYSBwb2x5bW9ycGhpYyBz
dHViLCB0aGVuIGhhdmluZyBhbiBleGl0IHNpdGUgaXMgbm90IHF1aXRlIHNvIHVzZWZ1bC4gSW4K
ICAgICAgICAgICAgIC8vIG1vc3QgY2FzZXMsIHRoZSBpbmZvcm1hdGlvbiBpbiB0aGUgc3R1YiBo
YXMgaGlnaGVyIGZpZGVsaXR5LgotICAgICAgICAgICAgcmVzdWx0Lm1ha2VDbG9zdXJlQ2FsbCgp
OworICAgICAgICAgICAgbWFrZUNsb3N1cmVDYWxsKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAvLyBXZSBtaWdodCBub3QgaGF2ZSBhIHBvbHltb3JwaGljIHN0dWIgZm9yIGFueSBu
dW1iZXIgb2YgcmVhc29ucy4gV2hlbiB0aGlzIGhhcHBlbnMsIHdlCiAgICAgICAgICAgICAvLyBh
cmUgaW4gbGVzcyBjZXJ0YWluIHRlcnJpdG9yeSwgc28gZXhpdCBzaXRlcyBtZWFuIGEgbG90Lgot
ICAgICAgICAgICAgcmVzdWx0Lm1fY291bGRUYWtlU2xvd1BhdGggPSB0cnVlOworICAgICAgICAg
ICAgbV9jb3VsZFRha2VTbG93UGF0aCA9IHRydWU7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYg
KGV4aXRTaXRlRGF0YS50YWtlc1Nsb3dQYXRoKQotICAgICAgICByZXN1bHQubV9jb3VsZFRha2VT
bG93UGF0aCA9IHRydWU7CiAgICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBpZiAoZXhpdFNp
dGVEYXRhLnRha2VzU2xvd1BhdGguaXNTZXQoaW5saW5lS2luZCkpCisgICAgICAgIG1fY291bGRU
YWtlU2xvd1BhdGggPSB0cnVlOwogfQotI2VuZGlmCiAKLXZvaWQgQ2FsbExpbmtTdGF0dXM6OmNv
bXB1dGVERkdTdGF0dXNlcygKLSAgICBDb2RlQmxvY2sqIGRmZ0NvZGVCbG9jaywgQ2FsbExpbmtT
dGF0dXM6OkNvbnRleHRNYXAmIG1hcCkKK0NhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpj
b21wdXRlRm9yKAorICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luLAorICAgIGNvbnN0IElDU3RhdHVzTWFwJiBiYXNlbGluZU1hcCwgY29uc3QgSUNTdGF0
dXNDb250ZXh0U3RhY2smIG9wdGltaXplZFN0YWNrKQogewotI2lmIEVOQUJMRShERkdfSklUKQot
ICAgIFJFTEVBU0VfQVNTRVJUKGRmZ0NvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkRG
R0pJVCk7Ci0gICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jayA9IGRmZ0NvZGVCbG9jay0+
YWx0ZXJuYXRpdmUoKTsKLSAgICBmb3IgKGF1dG8gaXRlciA9IGRmZ0NvZGVCbG9jay0+Y2FsbExp
bmtJbmZvc0JlZ2luKCk7ICEhaXRlcjsgKytpdGVyKSB7Ci0gICAgICAgIENhbGxMaW5rSW5mbyYg
aW5mbyA9ICoqaXRlcjsKLSAgICAgICAgaWYgKGluZm8uaXNEaXJlY3QoKSkgewotICAgICAgICAg
ICAgLy8gSWYgdGhlIERGRyB3YXMgYWJsZSB0byBnZXQgYSBkaXJlY3QgY2FsbCB0aGVuIHByb2Jh
Ymx5IHNvIHdpbGwgd2UuIEhvd2V2ZXIsIHRoZXJlIGlzCi0gICAgICAgICAgICAvLyBhIHJlbW90
ZSBjaGFuY2UgdGhhdCBpdCdzIGJhZCBuZXdzIHRvIGxvc2UgaW5mb3JtYXRpb24gYWJvdXQgd2hh
dCB0aGUgREZHIGRpZC4gV2UnZAotICAgICAgICAgICAgLy8gaWRlYWxseSBsaWtlIHRvIGp1c3Qg
a25vdyB0aGF0IHRoZSBERkcgaGFkIGVtaXR0ZWQgYSBEaXJlY3RDYWxsLgotICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gaW5m
by5jb2RlT3JpZ2luKCk7Ci0gICAgICAgIAotICAgICAgICAvLyBDaGVjayBpZiB3ZSBoYWQgYWxy
ZWFkeSBwcmV2aW91c2x5IG1hZGUgYSB0ZXJyaWJsZSBtaXN0YWtlIGluIHRoZSBGVEwgZm9yIHRo
aXMKLSAgICAgICAgLy8gY29kZSBvcmlnaW4uIE5vdGUgdGhhdCB0aGlzIGlzIGFwcHJveGltYXRl
IGJlY2F1c2Ugd2UgY291bGQgaGF2ZSBhIG1vbm92YXJpYW50Ci0gICAgICAgIC8vIGlubGluZSBp
biB0aGUgRlRMIHRoYXQgZW5kZWQgdXAgZmFpbGluZy4gV2Ugc2hvdWxkIGZpeCB0aGF0IGF0IHNv
bWUgcG9pbnQgYnkKLSAgICAgICAgLy8gaGF2aW5nIGRhdGEgc3RydWN0dXJlcyB0byB0cmFjayB0
aGUgY29udGV4dCBvZiBmcmVxdWVudCBleGl0cy4gVGhpcyBpcyBjdXJyZW50bHkKLSAgICAgICAg
Ly8gY2hhbGxlbmdpbmcgYmVjYXVzZSBpdCB3b3VsZCByZXF1aXJlIGNyZWF0aW5nIGEgQ29kZU9y
aWdpbi1iYXNlZCBkYXRhYmFzZSBpbgotICAgICAgICAvLyBiYXNlbGluZSBDb2RlQmxvY2tzLCBi
dXQgdGhvc2UgQ29kZUJsb2NrcyBkb24ndCByZWFsbHkgaGF2ZSBhIHBsYWNlIHRvIHB1dCB0aGUK
LSAgICAgICAgLy8gSW5saW5lQ2FsbEZyYW1lcy4KLSAgICAgICAgQ29kZUJsb2NrKiBjdXJyZW50
QmFzZWxpbmUgPQotICAgICAgICAgICAgYmFzZWxpbmVDb2RlQmxvY2tGb3JPcmlnaW5BbmRCYXNl
bGluZUNvZGVCbG9jayhjb2RlT3JpZ2luLCBiYXNlbGluZUNvZGVCbG9jayk7Ci0gICAgICAgIEV4
aXRTaXRlRGF0YSBleGl0U2l0ZURhdGEgPSBjb21wdXRlRXhpdFNpdGVEYXRhKGN1cnJlbnRCYXNl
bGluZSwgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsKLSAgICAgICAgCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoZGZnQ29kZUJsb2NrLT5tX2xvY2sp
OwotICAgICAgICAgICAgbWFwLmFkZChpbmZvLmNvZGVPcmlnaW4oKSwgY29tcHV0ZUZvcihsb2Nr
ZXIsIGRmZ0NvZGVCbG9jaywgaW5mbywgZXhpdFNpdGVEYXRhKSk7Ci0gICAgICAgIH0KKyAgICBp
ZiAoQ2FsbExpbmtTdGF0dXNJbnRlcm5hbDo6dmVyYm9zZSkKKyAgICAgICAgZGF0YUxvZygiRmln
dXJpbmcgb3V0IGNhbGwgcHJvZmlsaW5nIGZvciAiLCBjb2RlT3JpZ2luLCAiXG4iKTsKKyAgICBF
eGl0U2l0ZURhdGEgZXhpdFNpdGVEYXRhID0gY29tcHV0ZUV4aXRTaXRlRGF0YShwcm9maWxlZEJs
b2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpOworICAgIGlmIChDYWxsTGlua1N0YXR1c0lu
dGVybmFsOjp2ZXJib3NlKSB7CisgICAgICAgIGRhdGFMb2coInRha2VzU2xvd1BhdGggPSAiLCBl
eGl0U2l0ZURhdGEudGFrZXNTbG93UGF0aCwgIlxuIik7CisgICAgICAgIGRhdGFMb2coImJhZEZ1
bmN0aW9uID0gIiwgZXhpdFNpdGVEYXRhLmJhZEZ1bmN0aW9uLCAiXG4iKTsKICAgICB9Ci0jZWxz
ZQotICAgIFVOVVNFRF9QQVJBTShkZmdDb2RlQmxvY2spOwotI2VuZGlmIC8vIEVOQUJMRShERkdf
SklUKQogICAgIAotICAgIGlmIChDYWxsTGlua1N0YXR1c0ludGVybmFsOjp2ZXJib3NlKSB7Ci0g
ICAgICAgIGRhdGFMb2coIkNvbnRleHQgbWFwOlxuIik7Ci0gICAgICAgIENvbnRleHRNYXA6Oml0
ZXJhdG9yIGl0ZXIgPSBtYXAuYmVnaW4oKTsKLSAgICAgICAgQ29udGV4dE1hcDo6aXRlcmF0b3Ig
ZW5kID0gbWFwLmVuZCgpOwotICAgICAgICBmb3IgKDsgaXRlciAhPSBlbmQ7ICsraXRlcikgewot
ICAgICAgICAgICAgZGF0YUxvZygiICAgICIsIGl0ZXItPmtleSwgIjpcbiIpOwotICAgICAgICAg
ICAgZGF0YUxvZygiICAgICAgICAiLCBpdGVyLT52YWx1ZSwgIlxuIik7CisgICAgZm9yIChjb25z
dCBJQ1N0YXR1c0NvbnRleHQqIGNvbnRleHQgOiBvcHRpbWl6ZWRTdGFjaykgeworICAgICAgICBp
ZiAoQ2FsbExpbmtTdGF0dXNJbnRlcm5hbDo6dmVyYm9zZSkKKyAgICAgICAgICAgIGRhdGFMb2co
IkV4YW1pbmluZyBzdGF0dXMgaW4gIiwgcG9pbnRlckR1bXAoY29udGV4dC0+b3B0aW1pemVkQ29k
ZUJsb2NrKSwgIlxuIik7CisgICAgICAgIElDU3RhdHVzIHN0YXR1cyA9IGNvbnRleHQtPmdldChj
b2RlT3JpZ2luKTsKKyAgICAgICAgCisgICAgICAgIC8vIElmIHdlIGhhdmUgYm90aCBhIENhbGxM
aW5rU3RhdHVzIGFuZCBhIGNhbGxMaW5rSW5mbyBmb3IgdGhlIHNhbWUgb3JpZ2luLCB0aGVuIGl0
IG1lYW5zIG9uZQorICAgICAgICAvLyBvZiB0d28gdGhpbmdzOgorICAgICAgICAvLworICAgICAg
ICAvLyAxKSBXZSBpbml0aWFsbHkgdGhvdWdodCB0aGF0IHdlJ2QgYmUgYWJsZSB0byBpbmxpbmUg
dGhpcyBjYWxsIHNvIHdlIHJlY29yZGVkIGEgc3RhdHVzIGJ1dAorICAgICAgICAvLyAgICB0aGVu
IHdlIHJlYWxpemVkIHRoYXQgaXQgd2FzIHBvaW50bGVzcyBhbmQgZ2F2ZSB1cCBhbmQgZW1pdHRl
ZCBhIG5vcm1hbCBjYWxsIGFueXdheS4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gMikgV2UgZGlk
IGEgcG9seW1vcnBoaWMgY2FsbCBpbmxpbmUgdGhhdCBoYWQgYSBzbG93IHBhdGggY2FzZS4KKyAg
ICAgICAgLy8KKyAgICAgICAgLy8gSW4gdGhlIGZpcnN0IGNhc2UsIGl0J3MgZXNzZW50aWFsIHRo
YXQgd2UgdXNlIHRoZSBjYWxsTGlua0luZm8sIHNpbmNlIHRoZSBzdGF0dXMgbWF5IGJlCisgICAg
ICAgIC8vIHBvbHltb3JwaGljIGJ1dCB0aGUgbGluayBpbmZvIGJlbmVmaXRzIGZyb20gcG9seXZh
cmlhbnQgcHJvZmlsaW5nLgorICAgICAgICAvLworICAgICAgICAvLyBJbiB0aGUgc2Vjb25kIGNh
c2UsIGl0J3MgZXNzZW50aWFsIHRoYXQgd2UgdXNlIHRoZSBzdGF0dXMsIHNpbmNlIHRoZSBjYWxs
TGlua0luZm8KKyAgICAgICAgLy8gY29ycmVzcG9uZHMgdG8gdGhlIHNsb3cgY2FzZS4KKyAgICAg
ICAgLy8KKyAgICAgICAgLy8gSXQgd291bGQgYmUgYW5ub3lpbmcgdG8gZGlzdGluZ3Vpc2ggdGhv
c2UgdHdvIGNhc2VzLiBIb3dldmVyLCB3ZSBrbm93IHRoYXQ6CisgICAgICAgIC8vCisgICAgICAg
IC8vIElmIHRoZSBmaXJzdCBjYXNlIGhhcHBlbnMgaW4gdGhlIEZUTCwgdGhlbiBpdCBtZWFucyB0
aGF0IGV2ZW4gd2l0aCBwb2x5dmFyaWFudCBwcm9maWxpbmcsCisgICAgICAgIC8vIHdlIGZhaWxl
ZCB0byBkbyBhbnl0aGluZyB1c2VmdWwuIFRoYXQgc3VnZ2VzdHMgdGhhdCBpbiB0aGUgRlRMLCBp
dCdzIE9LIHRvIHByaW9yaXRpemUgdGhlCisgICAgICAgIC8vIHN0YXR1cy4gVGhhdCBzdGF0dXMg
d2lsbCBhZ2FpbiB0ZWxsIHVzIHRvIG5vdCBkbyBhbnl0aGluZyB1c2VmdWwuCisgICAgICAgIC8v
CisgICAgICAgIC8vIFRoZSBzZWNvbmQgY2FzZSBvbmx5IGhhcHBlbnMgaW4gdGhlIEZUTC4KKyAg
ICAgICAgLy8KKyAgICAgICAgLy8gVGhlcmVmb3JlLCB3ZSBwcmVmZXIgdGhlIHN0YXR1cyBpbiB0
aGUgRlRMIGFuZCB0aGUgaW5mbyBpbiB0aGUgREZHLgorICAgICAgICAvLworICAgICAgICAvLyBM
dWNraWx5LCB0aGlzIGNhc2UgZG9lc24ndCBtYXR0ZXIgZm9yIHRoZSBvdGhlciBJQ1N0YXR1c2Vz
LCBzaW5jZSB0aGV5IG5ldmVyIGRvIHRoZQorICAgICAgICAvLyBmYXN0LXBhdGgtc2xvdy1wYXRo
IGNvbnRyb2wtZmxvdy1kaWFtb25kIHN0eWxlIG9mIElDIGlubGluaW5nLiBJdCdzIGVpdGhlciBh
bGwgZmFzdCBwYXRoCisgICAgICAgIC8vIG9yIGl0J3MgYSBmdWxsIElDLiBTbywgZm9yIHRoZW0s
IGlmIHRoZXJlIGlzIGFuIElDIHN0YXR1cyB0aGVuIGl0IG1lYW5zIGNhc2UgKDEpLgorICAgICAg
ICAKKyAgICAgICAgYm9vbCBjaGVja1N0YXR1c0ZpcnN0ID0gY29udGV4dC0+b3B0aW1pemVkQ29k
ZUJsb2NrLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6RlRMSklUOworICAgICAgICAKKyAgICAgICAg
YXV0byBjaGVja0luZm8gPSBbJl0gKCkgLT4gQ2FsbExpbmtTdGF0dXMgeworICAgICAgICAgICAg
aWYgKCFzdGF0dXMuY2FsbExpbmtJbmZvKQorICAgICAgICAgICAgICAgIHJldHVybiBDYWxsTGlu
a1N0YXR1cygpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoQ2FsbExpbmtTdGF0dXNJ
bnRlcm5hbDo6dmVyYm9zZSkKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJIYXZlIENhbGxMaW5r
SW5mbyB3aXRoIENvZGVPcmlnaW4gPSAiLCBzdGF0dXMuY2FsbExpbmtJbmZvLT5jb2RlT3JpZ2lu
KCksICJcbiIpOworICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb250ZXh0
LT5vcHRpbWl6ZWRDb2RlQmxvY2stPm1fbG9jayk7CisgICAgICAgICAgICBDYWxsTGlua1N0YXR1
cyByZXN1bHQgPSBjb21wdXRlRm9yKAorICAgICAgICAgICAgICAgIGxvY2tlciwgY29udGV4dC0+
b3B0aW1pemVkQ29kZUJsb2NrLCAqc3RhdHVzLmNhbGxMaW5rSW5mbywgZXhpdFNpdGVEYXRhLAor
ICAgICAgICAgICAgICAgIGNvZGVPcmlnaW4uZXhpdGluZ0lubGluZUtpbmQoKSk7CisgICAgICAg
ICAgICBpZiAoQ2FsbExpbmtTdGF0dXNJbnRlcm5hbDo6dmVyYm9zZSkKKyAgICAgICAgICAgICAg
ICBkYXRhTG9nKCJHb3QgcmVzdWx0OiAiLCByZXN1bHQsICJcbiIpOworICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIGF1dG8gY2hlY2tTdGF0
dXMgPSBbJl0gKCkgLT4gQ2FsbExpbmtTdGF0dXMgeworICAgICAgICAgICAgaWYgKCFzdGF0dXMu
Y2FsbFN0YXR1cykKKyAgICAgICAgICAgICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoKTsKKyAg
ICAgICAgICAgIENhbGxMaW5rU3RhdHVzIHJlc3VsdCA9ICpzdGF0dXMuY2FsbFN0YXR1czsKKyAg
ICAgICAgICAgIGlmIChDYWxsTGlua1N0YXR1c0ludGVybmFsOjp2ZXJib3NlKQorICAgICAgICAg
ICAgICAgIGRhdGFMb2coIkhhdmUgY2FsbFN0YXR1czogIiwgcmVzdWx0LCAiXG4iKTsKKyAgICAg
ICAgICAgIHJlc3VsdC5hY2NvdW50Rm9yRXhpdHMoZXhpdFNpdGVEYXRhLCBjb2RlT3JpZ2luLmV4
aXRpbmdJbmxpbmVLaW5kKCkpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAg
fTsKKyAgICAgICAgCisgICAgICAgIGlmIChjaGVja1N0YXR1c0ZpcnN0KSB7CisgICAgICAgICAg
ICBpZiAoQ2FsbExpbmtTdGF0dXMgcmVzdWx0ID0gY2hlY2tTdGF0dXMoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgaWYgKENhbGxMaW5rU3RhdHVzIHJlc3Vs
dCA9IGNoZWNrSW5mbygpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKENhbGxMaW5r
U3RhdHVzIHJlc3VsdCA9IGNoZWNrSW5mbygpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICAgICAgaWYgKENhbGxMaW5rU3RhdHVzIHJlc3VsdCA9IGNoZWNrU3RhdHVzKCkpCisgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KLX0KLQotQ2FsbExpbmtTdGF0dXMgQ2FsbExp
bmtTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4sCi0gICAgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBiYXNlbGluZU1h
cCwgY29uc3QgQ2FsbExpbmtTdGF0dXM6OkNvbnRleHRNYXAmIGRmZ01hcCkKLXsKLSAgICBhdXRv
IGl0ZXIgPSBkZmdNYXAuZmluZChjb2RlT3JpZ2luKTsKLSAgICBpZiAoaXRlciAhPSBkZmdNYXAu
ZW5kKCkpCi0gICAgICAgIHJldHVybiBpdGVyLT52YWx1ZTsKICAgICAKLSAgICByZXR1cm4gY29t
cHV0ZUZvcihwcm9maWxlZEJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIGJhc2VsaW5l
TWFwKTsKKyAgICBDYWxsTGlua1N0YXR1cyByZXN1bHQgPSBjb21wdXRlRm9yKHByb2ZpbGVkQmxv
Y2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgYmFzZWxpbmVNYXAsIGV4aXRTaXRlRGF0YSk7
CisgICAgaWYgKENhbGxMaW5rU3RhdHVzSW50ZXJuYWw6OnZlcmJvc2UpCisgICAgICAgIGRhdGFM
b2coIkNvbXB1dGVkIGZyb20gYmFzZWxpbmU6ICIsIHJlc3VsdCwgIlxuIik7CisgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAogdm9pZCBDYWxsTGlua1N0YXR1czo6c2V0UHJvdmVuQ29uc3RhbnRDYWxs
ZWUoQ2FsbFZhcmlhbnQgdmFyaWFudCkKQEAgLTMyNyw2ICszOTgsMjQgQEAgdm9pZCBDYWxsTGlu
a1N0YXR1czo6bWFrZUNsb3N1cmVDYWxsKCkKICAgICBtX3ZhcmlhbnRzID0gZGVzcGVjaWZpZWRW
YXJpYW50TGlzdChtX3ZhcmlhbnRzKTsKIH0KIAorYm9vbCBDYWxsTGlua1N0YXR1czo6ZmluYWxp
emUoKQoreworICAgIGZvciAoQ2FsbFZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKSB7Cisg
ICAgICAgIGlmICghdmFyaWFudC5maW5hbGl6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDYWxsTGlua1N0YXR1czo6Zmls
dGVyKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBtX3ZhcmlhbnRzLnJlbW92ZUFsbE1h
dGNoaW5nKAorICAgICAgICBbJl0gKENhbGxWYXJpYW50JiB2YXJpYW50KSAtPiBib29sIHsKKyAg
ICAgICAgICAgIHZhcmlhbnQuZmlsdGVyKHZtLCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4g
IXZhcmlhbnQ7CisgICAgICAgIH0pOworfQorCiB2b2lkIENhbGxMaW5rU3RhdHVzOjpkdW1wKFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgaWYgKCFpc1NldCgpKSB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAkocmV2aXNp
b24gMjMyNDQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3Rh
dHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJDYWxsVmFy
aWFudC5oIgogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJDb25jdXJyZW50SlNM
b2NrLmgiCisjaW5jbHVkZSAiRXhpdEZsYWcuaCIKKyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgog
I2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC02MCwzOSArNjIs
MzMgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAgCi0gICAgc3RhdGljIENhbGxMaW5rU3Rh
dHVzIGNvbXB1dGVGb3IoCi0gICAgICAgIENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5k
ZXgsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYpOwotCiAgICAgc3RydWN0IEV4aXRTaXRlRGF0YSB7
Ci0gICAgICAgIGJvb2wgdGFrZXNTbG93UGF0aCB7IGZhbHNlIH07Ci0gICAgICAgIGJvb2wgYmFk
RnVuY3Rpb24geyBmYWxzZSB9OworICAgICAgICBFeGl0RmxhZyB0YWtlc1Nsb3dQYXRoOworICAg
ICAgICBFeGl0RmxhZyBiYWRGdW5jdGlvbjsKICAgICB9OwogICAgIHN0YXRpYyBFeGl0U2l0ZURh
dGEgY29tcHV0ZUV4aXRTaXRlRGF0YShDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4
KTsKICAgICAKKyAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sq
LCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBjb25zdCBJQ1N0YXR1c01hcCYsIEV4aXRTaXRlRGF0
YSk7CisgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgdW5z
aWduZWQgYnl0ZWNvZGVJbmRleCwgY29uc3QgSUNTdGF0dXNNYXAmKTsKKwogI2lmIEVOQUJMRShK
SVQpCiAgICAgLy8gQ29tcHV0ZXMgdGhlIHN0YXR1cyBhc3N1bWluZyB0aGF0IHdlIG5ldmVyIHRv
b2sgc2xvdyBwYXRoIGFuZCBuZXZlciBwcmV2aW91c2x5CiAgICAgLy8gZXhpdGVkLgogICAgIHN0
YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYs
IENvZGVCbG9jayosIENhbGxMaW5rSW5mbyYpOworICAgIAorICAgIC8vIENvbXB1dGVzIHRoZSBz
dGF0dXMgYWNjb3VudGluZyBmb3IgZXhpdHMuCiAgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNv
bXB1dGVGb3IoCi0gICAgICAgIGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayos
IENhbGxMaW5rSW5mbyYsIEV4aXRTaXRlRGF0YSk7CisgICAgICAgIGNvbnN0IENvbmN1cnJlbnRK
U0xvY2tlciYsIENvZGVCbG9jayosIENhbGxMaW5rSW5mbyYsIEV4aXRTaXRlRGF0YSwgRXhpdGlu
Z0lubGluZUtpbmQgPSBFeGl0RnJvbUFueUlubGluZUtpbmQpOwogI2VuZGlmCiAgICAgCi0gICAg
dHlwZWRlZiBIYXNoTWFwPENvZGVPcmlnaW4sIENhbGxMaW5rU3RhdHVzLCBDb2RlT3JpZ2luQXBw
cm94aW1hdGVIYXNoPiBDb250ZXh0TWFwOwotICAgIAotICAgIC8vIENvbXB1dGVzIGFsbCBvZiB0
aGUgc3RhdHVzZXMgb2YgdGhlIERGRyBjb2RlIGJsb2NrLiBEb2Vzbid0IGluY2x1ZGUgc3RhdHVz
ZXMgdGhhdCBoYWQKLSAgICAvLyBubyBpbmZvcm1hdGlvbi4gQ3VycmVudGx5IHdlIHVzZSB0aGlz
IHdoZW4gY29tcGlsaW5nIEZUTCBjb2RlLCB0byBlbmFibGUgcG9seXZhcmlhbnQKLSAgICAvLyBp
bmxpbmluZy4KLSAgICBzdGF0aWMgdm9pZCBjb21wdXRlREZHU3RhdHVzZXMoQ29kZUJsb2NrKiBk
ZmdDb2RlQmxvY2ssIENvbnRleHRNYXAmKTsKLSAgICAKLSAgICAvLyBIZWxwZXIgdGhhdCBmaXJz
dCBjb25zdWx0cyB0aGUgQ29udGV4dE1hcCBhbmQgdGhlbiBkb2VzIGNvbXB1dGVGb3IoKS4KICAg
ICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcigKLSAgICAgICAgQ29kZUJsb2NrKiwg
Q29kZU9yaWdpbiwgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiwgY29uc3QgQ29udGV4dE1hcCYpOwor
ICAgICAgICBDb2RlQmxvY2sqLCBDb2RlT3JpZ2luLCBjb25zdCBJQ1N0YXR1c01hcCYsIGNvbnN0
IElDU3RhdHVzQ29udGV4dFN0YWNrJik7CiAgICAgCiAgICAgdm9pZCBzZXRQcm92ZW5Db25zdGFu
dENhbGxlZShDYWxsVmFyaWFudCk7CiAgICAgCiAgICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0
dXJuICFtX3ZhcmlhbnRzLmlzRW1wdHkoKSB8fCBtX2NvdWxkVGFrZVNsb3dQYXRoOyB9CiAgICAg
Ci0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQoKTsgfQorICAgIGV4
cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBpc1NldCgpOyB9CiAgICAgCiAg
ICAgYm9vbCBjb3VsZFRha2VTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bGRUYWtlU2xv
d1BhdGg7IH0KICAgICAKQEAgLTExMCw2ICsxMDYsMTAgQEAgcHVibGljOgogICAgIAogICAgIHVu
c2lnbmVkIG1heE51bUFyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fbWF4TnVtQXJndW1lbnRz
OyB9CiAgICAgCisgICAgYm9vbCBmaW5hbGl6ZSgpOworICAgIAorICAgIHZvaWQgZmlsdGVyKFZN
JiwgSlNWYWx1ZSk7CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAg
ICAgCiBwcml2YXRlOgpAQCAtMTIxLDYgKzEyMSw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNvbnN0
IENvbmN1cnJlbnRKU0xvY2tlciYsIENhbGxMaW5rSW5mbyYpOwogI2VuZGlmCiAgICAgCisgICAg
dm9pZCBhY2NvdW50Rm9yRXhpdHMoRXhpdFNpdGVEYXRhLCBFeGl0aW5nSW5saW5lS2luZCk7Cisg
ICAgCiAgICAgQ2FsbFZhcmlhbnRMaXN0IG1fdmFyaWFudHM7CiAgICAgYm9vbCBtX2NvdWxkVGFr
ZVNsb3dQYXRoIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNQcm92ZWQgeyBmYWxzZSB9OwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZhcmlhbnQuY3BwCShy
ZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbFZh
cmlhbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDYgKzMxLDM1IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCitib29sIENhbGxWYXJpYW50OjpmaW5hbGl6ZSgpCit7CisgICAgaWYgKG1fY2Fs
bGVlICYmICFIZWFwOjppc01hcmtlZChtX2NhbGxlZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDYWxsVmFyaWFudDo6ZmlsdGVyKFZNJiB2bSwg
SlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAoISp0aGlzKQorICAgICAgICByZXR1cm47CisgICAg
CisgICAgaWYgKCFpc0Nsb3N1cmVDYWxsKCkpIHsKKyAgICAgICAgaWYgKG5vbkV4ZWN1dGFibGVD
YWxsZWUoKSAhPSB2YWx1ZSkKKyAgICAgICAgICAgICp0aGlzID0gQ2FsbFZhcmlhbnQoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoSlNGdW5jdGlvbiogZnVuY3Rpb24g
PSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgdmFsdWUpKSB7CisgICAgICAgIGlmIChm
dW5jdGlvbi0+ZXhlY3V0YWJsZSgpID09IGV4ZWN1dGFibGUoKSkKKyAgICAgICAgICAgICp0aGlz
ID0gQ2FsbFZhcmlhbnQoZnVuY3Rpb24pOworICAgICAgICBlbHNlCisgICAgICAgICAgICAqdGhp
cyA9IENhbGxWYXJpYW50KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgKnRo
aXMgPSBDYWxsVmFyaWFudCgpOworfQorCiB2b2lkIENhbGxWYXJpYW50OjpkdW1wKFByaW50U3Ry
ZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgaWYgKCEqdGhpcykgewpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxWYXJpYW50LmgJKHJldmlzaW9uIDIzMjQ0MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsVmFyaWFudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAgCi0gICAg
Ym9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsZWU7IH0KKyAgICBleHBsaWNp
dCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gISFtX2NhbGxlZTsgfQogICAgIAogICAg
IC8vIElmIHRoaXMgdmFyaWFudCByZWZlcnMgdG8gYSBmdW5jdGlvbiwgY2hhbmdlIGl0IHRvIHJl
ZmVyIHRvIGl0cyBleGVjdXRhYmxlLgogICAgIEFMV0FZU19JTkxJTkUgQ2FsbFZhcmlhbnQgZGVz
cGVjaWZpZWRDbG9zdXJlKCkgY29uc3QKQEAgLTEzNiw2ICsxMzYsMTAgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCisgICAgYm9vbCBmaW5hbGl6ZSgpOwor
ICAgIAorICAgIHZvaWQgZmlsdGVyKFZNJiwgSlNWYWx1ZSk7CisgICAgCiAgICAgdm9pZCBkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0OwogICAgIAogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxl
dGVkVmFsdWUoKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsMjQgKzIzOCwy
MCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKCkKIAogdm9pZCBDb2RlQmxvY2s6OmR1
bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0KQogewotICAgIFN0dWJJbmZvTWFwIHN0dWJJbmZv
czsKLSAgICBDYWxsTGlua0luZm9NYXAgY2FsbExpbmtJbmZvczsKLSAgICBnZXRTdHViSW5mb01h
cChzdHViSW5mb3MpOwotICAgIGdldENhbGxMaW5rSW5mb01hcChjYWxsTGlua0luZm9zKTsKLSAg
ICBCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wQmxvY2sodGhpcywgaW5zdHJ1Y3Rpb25z
KCksIG91dCwgc3R1YkluZm9zLCBjYWxsTGlua0luZm9zKTsKKyAgICBJQ1N0YXR1c01hcCBzdGF0
dXNNYXA7CisgICAgZ2V0SUNTdGF0dXNNYXAoc3RhdHVzTWFwKTsKKyAgICBCeXRlY29kZUR1bXBl
cjxDb2RlQmxvY2s+OjpkdW1wQmxvY2sodGhpcywgaW5zdHJ1Y3Rpb25zKCksIG91dCwgc3RhdHVz
TWFwKTsKIH0KIAotdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0
LCBjb25zdCBJbnN0cnVjdGlvbiogYmVnaW4sIGNvbnN0IEluc3RydWN0aW9uKiYgaXQsIGNvbnN0
IFN0dWJJbmZvTWFwJiBzdHViSW5mb3MsIGNvbnN0IENhbGxMaW5rSW5mb01hcCYgY2FsbExpbmtJ
bmZvcykKK3ZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCwgY29u
c3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJbnN0cnVjdGlvbiomIGl0LCBjb25zdCBJQ1N0
YXR1c01hcCYgc3RhdHVzTWFwKQogewotICAgIEJ5dGVjb2RlRHVtcGVyPENvZGVCbG9jaz46OmR1
bXBCeXRlY29kZSh0aGlzLCBvdXQsIGJlZ2luLCBpdCwgc3R1YkluZm9zLCBjYWxsTGlua0luZm9z
KTsKKyAgICBCeXRlY29kZUR1bXBlcjxDb2RlQmxvY2s+OjpkdW1wQnl0ZWNvZGUodGhpcywgb3V0
LCBiZWdpbiwgaXQsIHN0YXR1c01hcCk7CiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNv
ZGUoCi0gICAgUHJpbnRTdHJlYW0mIG91dCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsCi0gICAg
Y29uc3QgU3R1YkluZm9NYXAmIHN0dWJJbmZvcywgY29uc3QgQ2FsbExpbmtJbmZvTWFwJiBjYWxs
TGlua0luZm9zKQordm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0
LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgSUNTdGF0dXNNYXAmIHN0YXR1c01hcCkK
IHsKICAgICBjb25zdCBJbnN0cnVjdGlvbiogaXQgPSAmaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVP
ZmZzZXRdOwotICAgIGR1bXBCeXRlY29kZShvdXQsIGluc3RydWN0aW9ucygpLmJlZ2luKCksIGl0
LCBzdHViSW5mb3MsIGNhbGxMaW5rSW5mb3MpOworICAgIGR1bXBCeXRlY29kZShvdXQsIGluc3Ry
dWN0aW9ucygpLmJlZ2luKCksIGl0LCBzdGF0dXNNYXApOwogfQogCiAjZGVmaW5lIEZPUl9FQUNI
X01FTUJFUl9WRUNUT1IobWFjcm8pIFwKQEAgLTExNjYsNiArMTE2Miw5IEBAIHZvaWQgQ29kZUJs
b2NrOjpwcm9wYWdhdGVUcmFuc2l0aW9ucyhjb24KICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBp
ZiAoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGppdFR5cGUoKSkpIHsKICAgICAgICAgREZHOjpD
b21tb25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENvZGUtPmRmZ0NvbW1vbigpOworICAgICAgICAK
KyAgICAgICAgZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLm1hcmtJZkNoZWFwKHZpc2l0b3Ip
OworICAgICAgICAKICAgICAgICAgZm9yIChhdXRvJiB3ZWFrUmVmZXJlbmNlIDogZGZnQ29tbW9u
LT53ZWFrU3RydWN0dXJlUmVmZXJlbmNlcykKICAgICAgICAgICAgIHdlYWtSZWZlcmVuY2UtPm1h
cmtJZkNoZWFwKHZpc2l0b3IpOwogCkBAIC0xNDE2LDU3ICsxNDE1LDQ1IEBAIHZvaWQgQ29kZUJs
b2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICAgICAgICAgZmluYWxpemVCYXNlbGluZUpJ
VElubGluZUNhY2hlcygpOwogI2VuZGlmCiAKLSAgICBWTTo6U3BhY2VBbmRGaW5hbGl6ZXJTZXQ6
OmZpbmFsaXplclNldEZvcigqc3Vic3BhY2UoKSkucmVtb3ZlKHRoaXMpOwotfQotCi12b2lkIENv
ZGVCbG9jazo6Z2V0U3R1YkluZm9NYXAoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgU3R1Yklu
Zm9NYXAmIHJlc3VsdCkKLXsKLSNpZiBFTkFCTEUoSklUKQotICAgIGlmIChKSVRDb2RlOjppc0pJ
VChqaXRUeXBlKCkpKQotICAgICAgICB0b0hhc2hNYXAobV9zdHViSW5mb3MsIGdldFN0cnVjdHVy
ZVN0dWJJbmZvQ29kZU9yaWdpbiwgcmVzdWx0KTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHJl
c3VsdCk7Ci0jZW5kaWYKLX0KLQotdm9pZCBDb2RlQmxvY2s6OmdldFN0dWJJbmZvTWFwKFN0dWJJ
bmZvTWFwJiByZXN1bHQpCi17Ci0gICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihtX2xvY2sp
OwotICAgIGdldFN0dWJJbmZvTWFwKGxvY2tlciwgcmVzdWx0KTsKLX0KLQotdm9pZCBDb2RlQmxv
Y2s6OmdldENhbGxMaW5rSW5mb01hcChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBDYWxsTGlu
a0luZm9NYXAmIHJlc3VsdCkKLXsKLSNpZiBFTkFCTEUoSklUKQotICAgIGlmIChKSVRDb2RlOjpp
c0pJVChqaXRUeXBlKCkpKQotICAgICAgICB0b0hhc2hNYXAobV9jYWxsTGlua0luZm9zLCBnZXRD
YWxsTGlua0luZm9Db2RlT3JpZ2luLCByZXN1bHQpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
cmVzdWx0KTsKLSNlbmRpZgotfQorICAgIGlmIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoaml0
VHlwZSgpKSkgeworICAgICAgICBERkc6OkNvbW1vbkRhdGEqIGRmZ0NvbW1vbiA9IG1faml0Q29k
ZS0+ZGZnQ29tbW9uKCk7CisgICAgICAgIGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5maW5h
bGl6ZSgpOworICAgIH0KIAotdm9pZCBDb2RlQmxvY2s6OmdldENhbGxMaW5rSW5mb01hcChDYWxs
TGlua0luZm9NYXAmIHJlc3VsdCkKLXsKLSAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1f
bG9jayk7Ci0gICAgZ2V0Q2FsbExpbmtJbmZvTWFwKGxvY2tlciwgcmVzdWx0KTsKKyAgICBWTTo6
U3BhY2VBbmRGaW5hbGl6ZXJTZXQ6OmZpbmFsaXplclNldEZvcigqc3Vic3BhY2UoKSkucmVtb3Zl
KHRoaXMpOwogfQogCi12b2lkIENvZGVCbG9jazo6Z2V0QnlWYWxJbmZvTWFwKGNvbnN0IENvbmN1
cnJlbnRKU0xvY2tlciYsIEJ5VmFsSW5mb01hcCYgcmVzdWx0KQordm9pZCBDb2RlQmxvY2s6Omdl
dElDU3RhdHVzTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIElDU3RhdHVzTWFwJiByZXN1
bHQpCiB7CiAjaWYgRU5BQkxFKEpJVCkKICAgICBpZiAoSklUQ29kZTo6aXNKSVQoaml0VHlwZSgp
KSkgewotICAgICAgICBmb3IgKGF1dG8qIGJ5VmFsSW5mbyA6IG1fYnlWYWxJbmZvcykKLSAgICAg
ICAgICAgIHJlc3VsdC5hZGQoQ29kZU9yaWdpbihieVZhbEluZm8tPmJ5dGVjb2RlSW5kZXgpLCBi
eVZhbEluZm8pOworICAgICAgICBmb3IgKFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyA6IG1f
c3R1YkluZm9zKQorICAgICAgICAgICAgcmVzdWx0LmFkZChzdHViSW5mby0+Y29kZU9yaWdpbiwg
SUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLnN0dWJJbmZvID0gc3R1YkluZm87CisgICAgICAg
IGZvciAoQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gOiBtX2NhbGxMaW5rSW5mb3MpCisgICAg
ICAgICAgICByZXN1bHQuYWRkKGNhbGxMaW5rSW5mby0+Y29kZU9yaWdpbigpLCBJQ1N0YXR1cygp
KS5pdGVyYXRvci0+dmFsdWUuY2FsbExpbmtJbmZvID0gY2FsbExpbmtJbmZvOworICAgICAgICBm
b3IgKEJ5VmFsSW5mbyogYnlWYWxJbmZvIDogbV9ieVZhbEluZm9zKQorICAgICAgICAgICAgcmVz
dWx0LmFkZChDb2RlT3JpZ2luKGJ5VmFsSW5mby0+Ynl0ZWNvZGVJbmRleCksIElDU3RhdHVzKCkp
Lml0ZXJhdG9yLT52YWx1ZS5ieVZhbEluZm8gPSBieVZhbEluZm87CisgICAgICAgIGlmIChKSVRD
b2RlOjppc09wdGltaXppbmdKSVQoaml0VHlwZSgpKSkgeworICAgICAgICAgICAgREZHOjpDb21t
b25EYXRhKiBkZmdDb21tb24gPSBtX2ppdENvZGUtPmRmZ0NvbW1vbigpOworICAgICAgICAgICAg
Zm9yIChhdXRvJiBwYWlyIDogZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLmNhbGxzKQorICAg
ICAgICAgICAgICAgIHJlc3VsdC5hZGQocGFpci5maXJzdCwgSUNTdGF0dXMoKSkuaXRlcmF0b3It
PnZhbHVlLmNhbGxTdGF0dXMgPSBwYWlyLnNlY29uZC5nZXQoKTsKKyAgICAgICAgICAgIGZvciAo
YXV0byYgcGFpciA6IGRmZ0NvbW1vbi0+cmVjb3JkZWRTdGF0dXNlcy5nZXRzKQorICAgICAgICAg
ICAgICAgIHJlc3VsdC5hZGQocGFpci5maXJzdCwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVl
LmdldFN0YXR1cyA9IHBhaXIuc2Vjb25kLmdldCgpOworICAgICAgICAgICAgZm9yIChhdXRvJiBw
YWlyIDogZGZnQ29tbW9uLT5yZWNvcmRlZFN0YXR1c2VzLnB1dHMpCisgICAgICAgICAgICAgICAg
cmVzdWx0LmFkZChwYWlyLmZpcnN0LCBJQ1N0YXR1cygpKS5pdGVyYXRvci0+dmFsdWUucHV0U3Rh
dHVzID0gcGFpci5zZWNvbmQuZ2V0KCk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBk
ZmdDb21tb24tPnJlY29yZGVkU3RhdHVzZXMuaW5zKQorICAgICAgICAgICAgICAgIHJlc3VsdC5h
ZGQocGFpci5maXJzdCwgSUNTdGF0dXMoKSkuaXRlcmF0b3ItPnZhbHVlLmluU3RhdHVzID0gcGFp
ci5zZWNvbmQuZ2V0KCk7CisgICAgICAgIH0KICAgICB9CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TShyZXN1bHQpOwogI2VuZGlmCiB9CiAKLXZvaWQgQ29kZUJsb2NrOjpnZXRCeVZhbEluZm9NYXAo
QnlWYWxJbmZvTWFwJiByZXN1bHQpCit2b2lkIENvZGVCbG9jazo6Z2V0SUNTdGF0dXNNYXAoSUNT
dGF0dXNNYXAmIHJlc3VsdCkKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1fbG9j
ayk7Ci0gICAgZ2V0QnlWYWxJbmZvTWFwKGxvY2tlciwgcmVzdWx0KTsKKyAgICBnZXRJQ1N0YXR1
c01hcChsb2NrZXIsIHJlc3VsdCk7CiB9CiAKICNpZiBFTkFCTEUoSklUKQpAQCAtMTUzMyw3ICsx
NTIwLDcgQEAgdm9pZCBDb2RlQmxvY2s6OnJlc2V0SklURGF0YSgpCiAgICAgCiAgICAgLy8gV2Ug
Y2FuIGNsZWFyIHRoZXNlIGJlY2F1c2Ugbm8gb3RoZXIgdGhyZWFkIHdpbGwgaGF2ZSByZWZlcmVu
Y2VzIHRvIGFueSBzdHViIGluZm9zLCBjYWxsCiAgICAgLy8gbGluayBpbmZvcywgb3IgYnkgdmFs
IGluZm9zIGlmIHdlIGRvbid0IGhhdmUgSklUIGNvZGUuIEF0dGVtcHRzIHRvIHF1ZXJ5IHRoZXNl
IGRhdGEKLSAgICAvLyBzdHJ1Y3R1cmVzIHVzaW5nIHRoZSBjb25jdXJyZW50IEFQSSAoZ2V0U3R1
YkluZm9NYXAgYW5kIGZyaWVuZHMpIHdpbGwgcmV0dXJuIG5vdGhpbmcgaWYgd2UKKyAgICAvLyBz
dHJ1Y3R1cmVzIHVzaW5nIHRoZSBjb25jdXJyZW50IEFQSSAoZ2V0SUNTdGF0dXNNYXAgYW5kIGZy
aWVuZHMpIHdpbGwgcmV0dXJuIG5vdGhpbmcgaWYgd2UKICAgICAvLyBkb24ndCBoYXZlIEpJVCBj
b2RlLgogICAgIG1fc3R1YkluZm9zLmNsZWFyKCk7CiAgICAgbV9jYWxsTGlua0luZm9zLmNsZWFy
KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShy
ZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJFeHByZXNz
aW9uUmFuZ2VJbmZvLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25FeGVjdXRhYmxlLmgiCiAjaW5jbHVk
ZSAiSGFuZGxlckluZm8uaCIKKyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgogI2luY2x1ZGUgIklu
c3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVENvZGVNYXAu
aCIKQEAgLTk2LDggKzk3LDYgQEAgZW51bSBjbGFzcyBBY2Nlc3NUeXBlIDogaW50OF90OwogCiBz
dHJ1Y3QgQXJpdGhQcm9maWxlOwogCi10eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdpbiwgU3RydWN0
dXJlU3R1YkluZm8qLCBDb2RlT3JpZ2luQXBwcm94aW1hdGVIYXNoPiBTdHViSW5mb01hcDsKLQog
ZW51bSBSZW9wdGltaXphdGlvbk1vZGUgeyBEb250Q291bnRSZW9wdGltaXphdGlvbiwgQ291bnRS
ZW9wdGltaXphdGlvbiB9OwogCiBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKQEAg
LTE5Niw4ICsxOTUsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGR1bXBCeXRlY29kZSgpOwogICAg
IHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJik7Ci0gICAgdm9pZCBkdW1wQnl0ZWNvZGUo
UHJpbnRTdHJlYW0mIG91dCwgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2luLCBjb25zdCBJbnN0cnVj
dGlvbiomIGl0LCBjb25zdCBTdHViSW5mb01hcCYgPSBTdHViSW5mb01hcCgpLCBjb25zdCBDYWxs
TGlua0luZm9NYXAmID0gQ2FsbExpbmtJbmZvTWFwKCkpOwotICAgIHZvaWQgZHVtcEJ5dGVjb2Rl
KFByaW50U3RyZWFtJiBvdXQsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBTdHViSW5m
b01hcCYgPSBTdHViSW5mb01hcCgpLCBjb25zdCBDYWxsTGlua0luZm9NYXAmID0gQ2FsbExpbmtJ
bmZvTWFwKCkpOworICAgIHZvaWQgZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0
IEluc3RydWN0aW9uKiBiZWdpbiwgY29uc3QgSW5zdHJ1Y3Rpb24qJiBpdCwgY29uc3QgSUNTdGF0
dXNNYXAmID0gSUNTdGF0dXNNYXAoKSk7CisgICAgdm9pZCBkdW1wQnl0ZWNvZGUoUHJpbnRTdHJl
YW0mIG91dCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IElDU3RhdHVzTWFwJiA9IElD
U3RhdHVzTWFwKCkpOwogCiAgICAgdm9pZCBkdW1wRXhjZXB0aW9uSGFuZGxlcnMoUHJpbnRTdHJl
YW0mKTsKICAgICB2b2lkIHByaW50U3RydWN0dXJlcyhQcmludFN0cmVhbSYsIGNvbnN0IEluc3Ry
dWN0aW9uKik7CkBAIC0yMzcsMTQgKzIzNiw4IEBAIHB1YmxpYzoKIAogICAgIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+IGJ5dGVjb2RlT2Zmc2V0RnJvbUNhbGxTaXRlSW5kZXgoQ2FsbFNpdGVJbmRl
eCk7CiAKLSAgICB2b2lkIGdldFN0dWJJbmZvTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYs
IFN0dWJJbmZvTWFwJiByZXN1bHQpOwotICAgIHZvaWQgZ2V0U3R1YkluZm9NYXAoU3R1YkluZm9N
YXAmIHJlc3VsdCk7Ci0gICAgCi0gICAgdm9pZCBnZXRDYWxsTGlua0luZm9NYXAoY29uc3QgQ29u
Y3VycmVudEpTTG9ja2VyJiwgQ2FsbExpbmtJbmZvTWFwJiByZXN1bHQpOwotICAgIHZvaWQgZ2V0
Q2FsbExpbmtJbmZvTWFwKENhbGxMaW5rSW5mb01hcCYgcmVzdWx0KTsKLQotICAgIHZvaWQgZ2V0
QnlWYWxJbmZvTWFwKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIEJ5VmFsSW5mb01hcCYgcmVz
dWx0KTsKLSAgICB2b2lkIGdldEJ5VmFsSW5mb01hcChCeVZhbEluZm9NYXAmIHJlc3VsdCk7Cisg
ICAgdm9pZCBnZXRJQ1N0YXR1c01hcChjb25zdCBDb25jdXJyZW50SlNMb2NrZXImLCBJQ1N0YXR1
c01hcCYgcmVzdWx0KTsKKyAgICB2b2lkIGdldElDU3RhdHVzTWFwKElDU3RhdHVzTWFwJiByZXN1
bHQpOwogICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgSklUQWRkSUMqIGFkZEpJVEFkZElDKEFy
aXRoUHJvZmlsZSosIEluc3RydWN0aW9uKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00Niw3ICs0Niw3IEBAIHVuc2lnbmVkIENvZGVPcmlnaW46OmlubGluZURlcHRoKCkgY29uc3QK
ICAgICByZXR1cm4gaW5saW5lRGVwdGhGb3JDYWxsRnJhbWUoaW5saW5lQ2FsbEZyYW1lKTsKIH0K
IAotYm9vbCBDb2RlT3JpZ2luOjppc0FwcHJveGltYXRlbHlFcXVhbFRvKGNvbnN0IENvZGVPcmln
aW4mIG90aGVyKSBjb25zdAorYm9vbCBDb2RlT3JpZ2luOjppc0FwcHJveGltYXRlbHlFcXVhbFRv
KGNvbnN0IENvZGVPcmlnaW4mIG90aGVyLCBJbmxpbmVDYWxsRnJhbWUqIHRlcm1pbmFsKSBjb25z
dAogewogICAgIENvZGVPcmlnaW4gYSA9ICp0aGlzOwogICAgIENvZGVPcmlnaW4gYiA9IG90aGVy
OwpAQCAtNjgsMTAgKzY4LDEyIEBAIGJvb2wgQ29kZU9yaWdpbjo6aXNBcHByb3hpbWF0ZWx5RXF1
YWxUbygKICAgICAgICAgaWYgKGEuYnl0ZWNvZGVJbmRleCAhPSBiLmJ5dGVjb2RlSW5kZXgpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAgICAgICBpZiAoKCEhYS5pbmxp
bmVDYWxsRnJhbWUpICE9ICghIWIuaW5saW5lQ2FsbEZyYW1lKSkKKyAgICAgICAgYm9vbCBhSGFz
SW5saW5lQ2FsbEZyYW1lID0gISFhLmlubGluZUNhbGxGcmFtZSAmJiBhLmlubGluZUNhbGxGcmFt
ZSAhPSB0ZXJtaW5hbDsKKyAgICAgICAgYm9vbCBiSGFzSW5saW5lQ2FsbEZyYW1lID0gISFiLmlu
bGluZUNhbGxGcmFtZTsKKyAgICAgICAgaWYgKGFIYXNJbmxpbmVDYWxsRnJhbWUgIT0gYkhhc0lu
bGluZUNhbGxGcmFtZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCi0gICAg
ICAgIGlmICghYS5pbmxpbmVDYWxsRnJhbWUpCisgICAgICAgIGlmICghYUhhc0lubGluZUNhbGxG
cmFtZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAKICAgICAgICAgaWYgKGEu
aW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jay5nZXQoKSAhPSBiLmlubGluZUNhbGxG
cmFtZS0+YmFzZWxpbmVDb2RlQmxvY2suZ2V0KCkpCkBAIC04Miw3ICs4NCw3IEBAIGJvb2wgQ29k
ZU9yaWdpbjo6aXNBcHByb3hpbWF0ZWx5RXF1YWxUbygKICAgICB9CiB9CiAKLXVuc2lnbmVkIENv
ZGVPcmlnaW46OmFwcHJveGltYXRlSGFzaCgpIGNvbnN0Cit1bnNpZ25lZCBDb2RlT3JpZ2luOjph
cHByb3hpbWF0ZUhhc2goSW5saW5lQ2FsbEZyYW1lKiB0ZXJtaW5hbCkgY29uc3QKIHsKICAgICBp
ZiAoIWlzU2V0KCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtOTcsNiArOTksOSBAQCB1bnNpZ25l
ZCBDb2RlT3JpZ2luOjphcHByb3hpbWF0ZUhhc2goKSBjCiAgICAgICAgIGlmICghY29kZU9yaWdp
bi5pbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAK
KyAgICAgICAgaWYgKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lID09IHRlcm1pbmFsKQorICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgCiAgICAgICAgIHJlc3VsdCArPSBXVEY6
OlB0ckhhc2g8SlNDZWxsKj46Omhhc2goY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmJhc2Vs
aW5lQ29kZUJsb2NrLmdldCgpKTsKICAgICAgICAgCiAgICAgICAgIGNvZGVPcmlnaW4gPSBjb2Rl
T3JpZ2luLmlubGluZUNhbGxGcmFtZS0+ZGlyZWN0Q2FsbGVyOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCShyZXZpc2lvbiAyMzI0NDEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb2RlQmxvY2tI
YXNoLmgiCisjaW5jbHVkZSAiRXhpdGluZ0lubGluZUtpbmQuaCIKICNpbmNsdWRlIDxsaW1pdHMu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5o
PgpAQCAtODgsMTUgKzg5LDIwIEBAIHN0cnVjdCBDb2RlT3JpZ2luIHsKICAgICAKICAgICBzdGF0
aWMgdW5zaWduZWQgaW5saW5lRGVwdGhGb3JDYWxsRnJhbWUoSW5saW5lQ2FsbEZyYW1lKik7CiAg
ICAgCisgICAgRXhpdGluZ0lubGluZUtpbmQgZXhpdGluZ0lubGluZUtpbmQoKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIGlubGluZUNhbGxGcmFtZSA/IEV4aXRGcm9tSW5saW5lZCA6IEV4
aXRGcm9tTm90SW5saW5lZDsKKyAgICB9CisgICAgCiAgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0
OwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2RlT3JpZ2luJiBvdGhlcikgY29uc3Q7CiAg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvZGVPcmlnaW4mIG90aGVyKSBjb25zdCB7IHJldHVy
biAhKCp0aGlzID09IG90aGVyKTsgfQogICAgIAogICAgIC8vIFRoaXMgY2hlY2tzIGlmIHRoZSB0
d28gY29kZSBvcmlnaW5zIGNvcnJlc3BvbmQgdG8gdGhlIHNhbWUgc3RhY2sgdHJhY2Ugc25pcHBl
dHMsCiAgICAgLy8gYnV0IGlnbm9yZSB3aGV0aGVyIHRoZSBJbmxpbmVDYWxsRnJhbWUncyBhcmUg
aWRlbnRpY2FsLgotICAgIGJvb2wgaXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhjb25zdCBDb2RlT3Jp
Z2luJiBvdGhlcikgY29uc3Q7CisgICAgYm9vbCBpc0FwcHJveGltYXRlbHlFcXVhbFRvKGNvbnN0
IENvZGVPcmlnaW4mIG90aGVyLCBJbmxpbmVDYWxsRnJhbWUqIHRlcm1pbmFsID0gbnVsbHB0cikg
Y29uc3Q7CiAgICAgCi0gICAgdW5zaWduZWQgYXBwcm94aW1hdGVIYXNoKCkgY29uc3Q7CisgICAg
dW5zaWduZWQgYXBwcm94aW1hdGVIYXNoKElubGluZUNhbGxGcmFtZSogdGVybWluYWwgPSBudWxs
cHRyKSBjb25zdDsKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlvbj4KICAgICB2b2lk
IHdhbGtVcElubGluZVN0YWNrKGNvbnN0IEZ1bmN0aW9uJik7CkBAIC0xMDYsNyArMTEyLDcgQEAg
c3RydWN0IENvZGVPcmlnaW4gewogICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZHVt
cChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVh
bSYsIER1bXBDb250ZXh0KikgY29uc3Q7Ci0KKyAgICAKIHByaXZhdGU6CiAgICAgc3RhdGljIElu
bGluZUNhbGxGcmFtZSogZGVsZXRlZE1hcmtlcigpCiAgICAgewpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCShyZXZpc2lvbiAy
MzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKIAogdm9pZCBGcmVxdWVudEV4aXRTaXRlOjpkdW1wKFByaW50U3RyZWFtJiBv
dXQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KCJiYyMiLCBtX2J5dGVjb2RlT2Zmc2V0LCAiOiAi
LCBtX2tpbmQsICIvIiwgbV9qaXRUeXBlKTsKKyAgICBvdXQucHJpbnQoImJjIyIsIG1fYnl0ZWNv
ZGVPZmZzZXQsICI6ICIsIG1fa2luZCwgIi8iLCBtX2ppdFR5cGUsICIvIiwgbV9pbmxpbmVLaW5k
KTsKIH0KIAogRXhpdFByb2ZpbGU6OkV4aXRQcm9maWxlKCkgeyB9CkBAIC00Myw4ICs0MywxMCBA
QCBFeGl0UHJvZmlsZTo6fkV4aXRQcm9maWxlKCkgeyB9CiAKIGJvb2wgRXhpdFByb2ZpbGU6OmFk
ZChDb2RlQmxvY2sqIG93bmVyLCBjb25zdCBGcmVxdWVudEV4aXRTaXRlJiBzaXRlKQogeworICAg
IFJFTEVBU0VfQVNTRVJUKHNpdGUuaml0VHlwZSgpICE9IEV4aXRGcm9tQW55dGhpbmcpOworICAg
IFJFTEVBU0VfQVNTRVJUKHNpdGUuaW5saW5lS2luZCgpICE9IEV4aXRGcm9tQW55SW5saW5lS2lu
ZCk7CisKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG93bmVyLT51bmxpbmtlZENvZGVC
bG9jaygpLT5tX2xvY2spOwotICAgIEFTU0VSVChzaXRlLmppdFR5cGUoKSAhPSBFeGl0RnJvbUFu
eXRoaW5nKTsKIAogICAgIENPREVCTE9DS19MT0dfRVZFTlQob3duZXIsICJmcmVxdWVudEV4aXQi
LCAoc2l0ZSkpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RG
R0V4aXRQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0RGR0V4aXRQcm9maWxlLmgJKHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE0LCAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ29uY3VycmVudEpTTG9jay5oIgogI2luY2x1
ZGUgIkV4aXRLaW5kLmgiCisjaW5jbHVkZSAiRXhpdGluZ0lubGluZUtpbmQuaCIKICNpbmNsdWRl
ICJFeGl0aW5nSklUVHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgpAQCAtNDEsNiArNDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9ieXRl
Y29kZU9mZnNldCgwKSAvLyAwID0gZW1wdHkgdmFsdWUKICAgICAgICAgLCBtX2tpbmQoRXhpdEtp
bmRVbnNldCkKICAgICAgICAgLCBtX2ppdFR5cGUoRXhpdEZyb21Bbnl0aGluZykKKyAgICAgICAg
LCBtX2lubGluZUtpbmQoRXhpdEZyb21BbnlJbmxpbmVLaW5kKQogICAgIHsKICAgICB9CiAgICAg
CkBAIC00OCwxMyArNTAsMTUgQEAgcHVibGljOgogICAgICAgICA6IG1fYnl0ZWNvZGVPZmZzZXQo
MSkgLy8gMSA9IGRlbGV0ZWQgdmFsdWUKICAgICAgICAgLCBtX2tpbmQoRXhpdEtpbmRVbnNldCkK
ICAgICAgICAgLCBtX2ppdFR5cGUoRXhpdEZyb21Bbnl0aGluZykKKyAgICAgICAgLCBtX2lubGlu
ZUtpbmQoRXhpdEZyb21BbnlJbmxpbmVLaW5kKQogICAgIHsKICAgICB9CiAgICAgCi0gICAgZXhw
bGljaXQgRnJlcXVlbnRFeGl0U2l0ZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRXhpdEtpbmQg
a2luZCwgRXhpdGluZ0pJVFR5cGUgaml0VHlwZSA9IEV4aXRGcm9tQW55dGhpbmcpCisgICAgZXhw
bGljaXQgRnJlcXVlbnRFeGl0U2l0ZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRXhpdEtpbmQg
a2luZCwgRXhpdGluZ0pJVFR5cGUgaml0VHlwZSA9IEV4aXRGcm9tQW55dGhpbmcsIEV4aXRpbmdJ
bmxpbmVLaW5kIGlubGluZUtpbmQgPSBFeGl0RnJvbUFueUlubGluZUtpbmQpCiAgICAgICAgIDog
bV9ieXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkKICAgICAgICAgLCBtX2tpbmQoa2luZCkK
ICAgICAgICAgLCBtX2ppdFR5cGUoaml0VHlwZSkKKyAgICAgICAgLCBtX2lubGluZUtpbmQoaW5s
aW5lS2luZCkKICAgICB7CiAgICAgICAgIGlmIChtX2tpbmQgPT0gQXJndW1lbnRzRXNjYXBlZCkg
ewogICAgICAgICAgICAgLy8gQ291bnQgdGhpcyBvbmUgZ2xvYmFsbHkuIEl0IGRvZXNuJ3QgbWF0
dGVyIHdoZXJlIGluIHRoZSBjb2RlIGJsb2NrIHRoZSBhcmd1bWVudHMgZXhjYXBlZDsKQEAgLTY1
LDEwICs2OSwxMSBAQCBwdWJsaWM6CiAgICAgCiAgICAgLy8gVXNlIHRoaXMgY29uc3RydWN0b3Ig
aWYgeW91IHdpc2ggZm9yIHRoZSBleGl0IHNpdGUgdG8gYmUgY291bnRlZCBnbG9iYWxseSB3aXRo
aW4gaXRzCiAgICAgLy8gY29kZSBibG9jay4KLSAgICBleHBsaWNpdCBGcmVxdWVudEV4aXRTaXRl
KEV4aXRLaW5kIGtpbmQsIEV4aXRpbmdKSVRUeXBlIGppdFR5cGUgPSBFeGl0RnJvbUFueXRoaW5n
KQorICAgIGV4cGxpY2l0IEZyZXF1ZW50RXhpdFNpdGUoRXhpdEtpbmQga2luZCwgRXhpdGluZ0pJ
VFR5cGUgaml0VHlwZSA9IEV4aXRGcm9tQW55dGhpbmcsIEV4aXRpbmdJbmxpbmVLaW5kIGlubGlu
ZUtpbmQgPSBFeGl0RnJvbUFueUlubGluZUtpbmQpCiAgICAgICAgIDogbV9ieXRlY29kZU9mZnNl
dCgwKQogICAgICAgICAsIG1fa2luZChraW5kKQogICAgICAgICAsIG1faml0VHlwZShqaXRUeXBl
KQorICAgICAgICAsIG1faW5saW5lS2luZChpbmxpbmVLaW5kKQogICAgIHsKICAgICB9CiAgICAg
CkBAIC04MSw3ICs4Niw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX2J5dGVj
b2RlT2Zmc2V0ID09IG90aGVyLm1fYnl0ZWNvZGVPZmZzZXQKICAgICAgICAgICAgICYmIG1fa2lu
ZCA9PSBvdGhlci5tX2tpbmQKLSAgICAgICAgICAgICYmIG1faml0VHlwZSA9PSBvdGhlci5tX2pp
dFR5cGU7CisgICAgICAgICAgICAmJiBtX2ppdFR5cGUgPT0gb3RoZXIubV9qaXRUeXBlCisgICAg
ICAgICAgICAmJiBtX2lubGluZUtpbmQgPT0gb3RoZXIubV9pbmxpbmVLaW5kOwogICAgIH0KICAg
ICAKICAgICBib29sIHN1YnN1bWVzKGNvbnN0IEZyZXF1ZW50RXhpdFNpdGUmIG90aGVyKSBjb25z
dApAQCAtOTAsMTkgKzk2LDI0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgaWYgKG1fa2luZCAhPSBvdGhlci5tX2tpbmQpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIGlmIChtX2ppdFR5cGUgPT0gRXhpdEZyb21Bbnl0aGluZykKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICByZXR1cm4gbV9qaXRUeXBlID09IG90aGVyLm1f
aml0VHlwZTsKKyAgICAgICAgaWYgKG1faml0VHlwZSAhPSBFeGl0RnJvbUFueXRoaW5nCisgICAg
ICAgICAgICAmJiBtX2ppdFR5cGUgIT0gb3RoZXIubV9qaXRUeXBlKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICBpZiAobV9pbmxpbmVLaW5kICE9IEV4aXRGcm9tQW55SW5saW5l
S2luZAorICAgICAgICAgICAgJiYgbV9pbmxpbmVLaW5kICE9IG90aGVyLm1faW5saW5lS2luZCkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
ICAgIAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIFdU
Rjo6aW50SGFzaChtX2J5dGVjb2RlT2Zmc2V0KSArIG1fa2luZCArIHN0YXRpY19jYXN0PHN0ZDo6
dW5kZXJseWluZ190eXBlX3Q8RXhpdGluZ0pJVFR5cGU+PihtX2ppdFR5cGUpICogNzsKKyAgICAg
ICAgcmV0dXJuIFdURjo6aW50SGFzaChtX2J5dGVjb2RlT2Zmc2V0KSArIG1fa2luZCArIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihtX2ppdFR5cGUpICogNyArIHN0YXRpY19jYXN0PHVuc2lnbmVkPiht
X2lubGluZUtpbmQpICogMTE7CiAgICAgfQogICAgIAogICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0KCkgY29uc3QgeyByZXR1cm4gbV9ieXRlY29kZU9mZnNldDsgfQogICAgIEV4aXRLaW5kIGtp
bmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KICAgICBFeGl0aW5nSklUVHlwZSBqaXRUeXBl
KCkgY29uc3QgeyByZXR1cm4gbV9qaXRUeXBlOyB9CisgICAgRXhpdGluZ0lubGluZUtpbmQgaW5s
aW5lS2luZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lS2luZDsgfQogICAgIAogICAgIEZyZXF1
ZW50RXhpdFNpdGUgd2l0aEpJVFR5cGUoRXhpdGluZ0pJVFR5cGUgaml0VHlwZSkgY29uc3QKICAg
ICB7CkBAIC0xMTEsNiArMTIyLDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAKKyAgICBGcmVxdWVudEV4aXRTaXRlIHdpdGhJbmxpbmVLaW5kKEV4aXRpbmdJbmxp
bmVLaW5kIGlubGluZUtpbmQpIGNvbnN0CisgICAgeworICAgICAgICBGcmVxdWVudEV4aXRTaXRl
IHJlc3VsdCA9ICp0aGlzOworICAgICAgICByZXN1bHQubV9pbmxpbmVLaW5kID0gaW5saW5lS2lu
ZDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBib29sIGlzSGFzaFRhYmxl
RGVsZXRlZFZhbHVlKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2tpbmQgPT0gRXhp
dEtpbmRVbnNldCAmJiBtX2J5dGVjb2RlT2Zmc2V0OwpAQCAtMTIyLDYgKzE0MCw3IEBAIHByaXZh
dGU6CiAgICAgdW5zaWduZWQgbV9ieXRlY29kZU9mZnNldDsKICAgICBFeGl0S2luZCBtX2tpbmQ7
CiAgICAgRXhpdGluZ0pJVFR5cGUgbV9qaXRUeXBlOworICAgIEV4aXRpbmdJbmxpbmVLaW5kIG1f
aW5saW5lS2luZDsKIH07CiAKIHN0cnVjdCBGcmVxdWVudEV4aXRTaXRlSGFzaCB7CkBAIC0xOTIs
MTAgKzIxMSwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNFeGl0U2l0ZShjb25zdCBGcmVxdWVu
dEV4aXRTaXRlJiBzaXRlKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKHNpdGUuaml0VHlwZSgp
ID09IEV4aXRGcm9tQW55dGhpbmcpIHsKLSAgICAgICAgICAgIHJldHVybiBoYXNFeGl0U2l0ZShz
aXRlLndpdGhKSVRUeXBlKEV4aXRGcm9tREZHKSkKLSAgICAgICAgICAgICAgICB8fCBoYXNFeGl0
U2l0ZShzaXRlLndpdGhKSVRUeXBlKEV4aXRGcm9tRlRMKSk7CisgICAgICAgICAgICByZXR1cm4g
aGFzRXhpdFNpdGVXaXRoU3BlY2lmaWNKSVRUeXBlKHNpdGUud2l0aEpJVFR5cGUoRXhpdEZyb21E
RkcpKQorICAgICAgICAgICAgICAgIHx8IGhhc0V4aXRTaXRlV2l0aFNwZWNpZmljSklUVHlwZShz
aXRlLndpdGhKSVRUeXBlKEV4aXRGcm9tRlRMKSk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IG1fZnJlcXVlbnRFeGl0U2l0ZXMuZmluZChzaXRlKSAhPSBtX2ZyZXF1ZW50RXhpdFNpdGVzLmVu
ZCgpOworICAgICAgICByZXR1cm4gaGFzRXhpdFNpdGVXaXRoU3BlY2lmaWNKSVRUeXBlKHNpdGUp
OwogICAgIH0KICAgICAKICAgICBib29sIGhhc0V4aXRTaXRlKEV4aXRLaW5kIGtpbmQpIGNvbnN0
CkBAIC0yMDgsNiArMjI3LDIwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGhhc0V4aXRTaXRl
KEZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwga2luZCkpOwogICAgIH0KIHByaXZhdGU6
CisgICAgYm9vbCBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0pJVFR5cGUoY29uc3QgRnJlcXVlbnRF
eGl0U2l0ZSYgc2l0ZSkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChzaXRlLmlubGluZUtpbmQo
KSA9PSBFeGl0RnJvbUFueUlubGluZUtpbmQpIHsKKyAgICAgICAgICAgIHJldHVybiBoYXNFeGl0
U2l0ZVdpdGhTcGVjaWZpY0lubGluZUtpbmQoc2l0ZS53aXRoSW5saW5lS2luZChFeGl0RnJvbU5v
dElubGluZWQpKQorICAgICAgICAgICAgICAgIHx8IGhhc0V4aXRTaXRlV2l0aFNwZWNpZmljSW5s
aW5lS2luZChzaXRlLndpdGhJbmxpbmVLaW5kKEV4aXRGcm9tSW5saW5lZCkpOworICAgICAgICB9
CisgICAgICAgIHJldHVybiBoYXNFeGl0U2l0ZVdpdGhTcGVjaWZpY0lubGluZUtpbmQoc2l0ZSk7
CisgICAgfQorICAgIAorICAgIGJvb2wgaGFzRXhpdFNpdGVXaXRoU3BlY2lmaWNJbmxpbmVLaW5k
KGNvbnN0IEZyZXF1ZW50RXhpdFNpdGUmIHNpdGUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV9mcmVxdWVudEV4aXRTaXRlcy5maW5kKHNpdGUpICE9IG1fZnJlcXVlbnRFeGl0U2l0ZXMu
ZW5kKCk7CisgICAgfQorICAgIAogICAgIEhhc2hTZXQ8RnJlcXVlbnRFeGl0U2l0ZT4gbV9mcmVx
dWVudEV4aXRTaXRlczsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9FeGl0RmxhZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0V4aXRGbGFnLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRXhpdEZsYWcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkV4aXRGbGFnLmgiCisKKyNpbmNsdWRlIDx3dGYvQ29tbWFQcmlu
dGVyLmg+CisKK25hbWVzcGFjZSBKU0MgeworCit2b2lkIEV4aXRGbGFnOjpkdW1wKFByaW50U3Ry
ZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgaWYgKCFtX2JpdHMpIHsKKyAgICAgICAgb3V0LnByaW50
KCJmYWxzZSIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIENvbW1hUHJpbnRl
ciBjb21tYSgifCIpOworICAgIGlmIChpc1NldChFeGl0RnJvbU5vdElubGluZWQpKQorICAgICAg
ICBvdXQucHJpbnQoY29tbWEsICJub3RJbmxpbmVkIik7CisgICAgaWYgKGlzU2V0KEV4aXRGcm9t
SW5saW5lZCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgImlubGluZWQiKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9F
eGl0RmxhZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9F
eGl0RmxhZy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9FeGl0RmxhZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiRXhpdGluZ0lubGluZUtpbmQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV4
aXRGbGFnIHsKK3B1YmxpYzoKKyAgICBFeGl0RmxhZygpIHsgfQorICAgIAorICAgIEV4aXRGbGFn
KGJvb2wgdmFsdWUsIEV4aXRpbmdJbmxpbmVLaW5kIGlubGluZUtpbmQpCisgICAgeworICAgICAg
ICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgc3dp
dGNoIChpbmxpbmVLaW5kKSB7CisgICAgICAgIGNhc2UgRXhpdEZyb21BbnlJbmxpbmVLaW5kOgor
ICAgICAgICAgICAgbV9iaXRzID0gdHJ1ZU5vdElubGluZWQgfCB0cnVlSW5saW5lZDsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEV4aXRGcm9tTm90SW5saW5lZDoKKyAgICAgICAg
ICAgIG1fYml0cyA9IHRydWVOb3RJbmxpbmVkOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRXhpdEZyb21JbmxpbmVkOgorICAgICAgICAgICAgbV9iaXRzID0gdHJ1ZUlubGluZWQ7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBFeGl0Rmxh
ZyBvcGVyYXRvcnwoY29uc3QgRXhpdEZsYWcmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAg
RXhpdEZsYWcgcmVzdWx0OworICAgICAgICByZXN1bHQubV9iaXRzID0gbV9iaXRzIHwgb3RoZXIu
bV9iaXRzOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICBFeGl0Rmxh
ZyYgb3BlcmF0b3J8PShjb25zdCBFeGl0RmxhZyYgb3RoZXIpCisgICAgeworICAgICAgICAqdGhp
cyA9ICp0aGlzIHwgb3RoZXI7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisgICAgCisg
ICAgRXhpdEZsYWcgb3BlcmF0b3ImKGNvbnN0IEV4aXRGbGFnJiBvdGhlcikgY29uc3QKKyAgICB7
CisgICAgICAgIEV4aXRGbGFnIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1fYml0cyA9IG1fYml0
cyAmIG90aGVyLm1fYml0czsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisg
ICAgRXhpdEZsYWcmIG9wZXJhdG9yJj0oY29uc3QgRXhpdEZsYWcmIG90aGVyKQorICAgIHsKKyAg
ICAgICAgKnRoaXMgPSAqdGhpcyAmIG90aGVyOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAg
fQorICAgIAorICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuICEhbV9iaXRzOworICAgIH0KKyAgICAKKyAgICBib29sIGlzU2V0KEV4aXRpbmdJ
bmxpbmVLaW5kIGlubGluZUtpbmQpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISEoKnRo
aXMgJiBFeGl0RmxhZyh0cnVlLCBpbmxpbmVLaW5kKSk7CisgICAgfQorICAgIAorICAgIHZvaWQg
ZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICBzdGF0aWMgY29u
c3RleHByIHVpbnQ4X3QgdHJ1ZU5vdElubGluZWQgPSAxOworICAgIHN0YXRpYyBjb25zdGV4cHIg
dWludDhfdCB0cnVlSW5saW5lZCA9IDI7CisgICAgCisgICAgdWludDhfdCBtX2JpdHMgeyAwIH07
Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0V4aXRpbmdJbmxpbmVLaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuY3BwCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0aW5nSW5saW5lS2luZC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRXhp
dGluZ0lubGluZUtpbmQuaCIKKworI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1l
c3BhY2UgV1RGIHsKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwordm9pZCBwcmludEludGVybmFs
KFByaW50U3RyZWFtJiBvdXQsIEV4aXRpbmdJbmxpbmVLaW5kIHR5cGUpCit7CisgICAgc3dpdGNo
ICh0eXBlKSB7CisgICAgY2FzZSBFeGl0RnJvbUFueUlubGluZUtpbmQ6CisgICAgICAgIG91dC5w
cmludCgiRnJvbUFueUlubGluZUtpbmQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRXhp
dEZyb21Ob3RJbmxpbmVkOgorICAgICAgICBvdXQucHJpbnQoIkZyb21Ob3RJbmxpbmVkIik7Cisg
ICAgICAgIHJldHVybjsKKyAgICBjYXNlIEV4aXRGcm9tSW5saW5lZDoKKyAgICAgICAgb3V0LnBy
aW50KCJGcm9tSW5saW5lZCIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGluZ0lubGluZUtpbmQu
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdGlu
Z0lubGluZUtpbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCituYW1l
c3BhY2UgSlNDIHsKKworZW51bSBFeGl0aW5nSW5saW5lS2luZCA6IHVpbnQ4X3QgeworICAgIEV4
aXRGcm9tQW55SW5saW5lS2luZCwKKyAgICBFeGl0RnJvbU5vdElubGluZWQsCisgICAgRXhpdEZy
b21JbmxpbmVkLAorfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBXVEYgewor
CitjbGFzcyBQcmludFN0cmVhbTsKK3ZvaWQgcHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYsIEpT
Qzo6RXhpdGluZ0lubGluZUtpbmQpOworCit9IC8vIG5hbWVzcGFjZSBXVEYKKworCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJ
KHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRC
eUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTYgKzUxLDYgQEAgYm9vbCBHZXRC
eUlkU3RhdHVzOjphcHBlbmRWYXJpYW50KGNvbnN0IAogICAgIHJldHVybiBhcHBlbmRJQ1N0YXR1
c1ZhcmlhbnQobV92YXJpYW50cywgdmFyaWFudCk7CiB9CiAKLSNpZiBFTkFCTEUoREZHX0pJVCkK
LWJvb2wgR2V0QnlJZFN0YXR1czo6aGFzRXhpdFNpdGUoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2Nr
LCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQotewotICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxp
bmtlZENvZGVCbG9jayA9IHByb2ZpbGVkQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCk7Ci0gICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcih1bmxpbmtlZENvZGVCbG9jay0+bV9sb2NrKTsKLSAg
ICByZXR1cm4gdW5saW5rZWRDb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVx
dWVudEV4aXRTaXRlKGJ5dGVjb2RlSW5kZXgsIEJhZENhY2hlKSkKLSAgICAgICAgfHwgdW5saW5r
ZWRDb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRlKGJ5
dGVjb2RlSW5kZXgsIEJhZENvbnN0YW50Q2FjaGUpKTsKLX0KLSNlbmRpZgotCiBHZXRCeUlkU3Rh
dHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJs
b2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogewog
ICAgIFZNJiB2bSA9ICpwcm9maWxlZEJsb2NrLT52bSgpOwpAQCAtMTA1LDcgKzk1LDcgQEAgR2V0
QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbQogICAgIH0KIH0KIAotR2V0QnlJ
ZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9j
aywgU3R1YkluZm9NYXAmIG1hcCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmlu
Z0ltcGwqIHVpZCkKK0dldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2Rl
QmxvY2sqIHByb2ZpbGVkQmxvY2ssIElDU3RhdHVzTWFwJiBtYXAsIHVuc2lnbmVkIGJ5dGVjb2Rl
SW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIEV4aXRGbGFnIGRpZEV4aXQsIENhbGxMaW5r
U3RhdHVzOjpFeGl0U2l0ZURhdGEgY2FsbEV4aXRTaXRlRGF0YSkKIHsKICAgICBDb25jdXJyZW50
SlNMb2NrZXIgbG9ja2VyKHByb2ZpbGVkQmxvY2stPm1fbG9jayk7CiAKQEAgLTExMywxMiArMTAz
LDExIEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKIAogI2lmIEVO
QUJMRShERkdfSklUKQogICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0
U2l0ZUZlZWRiYWNrKAotICAgICAgICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssIG1hcC5nZXQoQ29k
ZU9yaWdpbihieXRlY29kZUluZGV4KSksIHVpZCwKLSAgICAgICAgQ2FsbExpbmtTdGF0dXM6OmNv
bXB1dGVFeGl0U2l0ZURhdGEocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCkpOworICAgICAg
ICBsb2NrZXIsIHByb2ZpbGVkQmxvY2ssIG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4
KSkuc3R1YkluZm8sIHVpZCwKKyAgICAgICAgY2FsbEV4aXRTaXRlRGF0YSk7CiAgICAgCi0gICAg
aWYgKCFyZXN1bHQudGFrZXNTbG93UGF0aCgpCi0gICAgICAgICYmIGhhc0V4aXRTaXRlKHByb2Zp
bGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpKQotICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhy
ZXN1bHQubWFrZXNDYWxscygpID8gTWFrZXNDYWxscyA6IFRha2VzU2xvd1BhdGgsIHRydWUpOwor
ICAgIGlmIChkaWRFeGl0KQorICAgICAgICByZXR1cm4gcmVzdWx0LnNsb3dWZXJzaW9uKCk7CiAj
ZWxzZQogICAgIFVOVVNFRF9QQVJBTShtYXApOwogI2VuZGlmCkBAIC0xMzYsOCArMTI1LDggQEAg
R2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yUwogICAgICAgICBsb2NrZXIs
IHByb2ZpbGVkQmxvY2ssIHN0dWJJbmZvLCB1aWQsCiAgICAgICAgIENhbGxMaW5rU3RhdHVzOjpj
b21wdXRlRXhpdFNpdGVEYXRhKHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRl
eCkpOwogCi0gICAgaWYgKCFyZXN1bHQudGFrZXNTbG93UGF0aCgpICYmIEdldEJ5SWRTdGF0dXM6
Omhhc0V4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkpCi0g
ICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKHJlc3VsdC5tYWtlc0NhbGxzKCkgPyBHZXRCeUlk
U3RhdHVzOjpNYWtlc0NhbGxzIDogR2V0QnlJZFN0YXR1czo6VGFrZXNTbG93UGF0aCwgdHJ1ZSk7
CisgICAgaWYgKCFyZXN1bHQudGFrZXNTbG93UGF0aCgpICYmIGhhc0JhZENhY2hlRXhpdFNpdGUo
cHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KSkKKyAgICAgICAgcmV0dXJu
IHJlc3VsdC5zbG93VmVyc2lvbigpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5kaWYgLy8g
RU5BQkxFKERGR19KSVQpCkBAIC0zMTQsNDAgKzMwMywzNSBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5
SWRTdGF0dXM6OmNvbXB1dGVGb3JTCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogR2V0QnlJZFN0
YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAotICAgIENvZGVCbG9jayogcHJvZmlsZWRC
bG9jaywgQ29kZUJsb2NrKiBkZmdCbG9jaywgU3R1YkluZm9NYXAmIGJhc2VsaW5lTWFwLAotICAg
IFN0dWJJbmZvTWFwJiBkZmdNYXAsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgVW5pcXVlZFN0cmlu
Z0ltcGwqIHVpZCkKKyAgICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIElDU3RhdHVzTWFwJiBi
YXNlbGluZU1hcCwKKyAgICBJQ1N0YXR1c0NvbnRleHRTdGFjayYgaWNDb250ZXh0U3RhY2ssIENv
ZGVPcmlnaW4gY29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKLSNpZiBFTkFC
TEUoREZHX0pJVCkKLSAgICBpZiAoZGZnQmxvY2spIHsKLSAgICAgICAgQ2FsbExpbmtTdGF0dXM6
OkV4aXRTaXRlRGF0YSBleGl0U2l0ZURhdGE7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIENvbmN1
cnJlbnRKU0xvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAg
IGV4aXRTaXRlRGF0YSA9IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKAotICAg
ICAgICAgICAgICAgIHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7Ci0g
ICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIEdldEJ5SWRTdGF0dXMgcmVzdWx0OwotICAgICAg
ICB7Ci0gICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGRmZ0Jsb2NrLT5tX2xv
Y2spOwotICAgICAgICAgICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRT
aXRlRmVlZGJhY2soCi0gICAgICAgICAgICAgICAgbG9ja2VyLCBkZmdCbG9jaywgZGZnTWFwLmdl
dChjb2RlT3JpZ2luKSwgdWlkLCBleGl0U2l0ZURhdGEpOwotICAgICAgICB9Ci0KLSAgICAgICAg
aWYgKHJlc3VsdC50YWtlc1Nsb3dQYXRoKCkpCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0ZURhdGEgY2FsbEV4aXRTaXRlRGF0YSA9CisgICAg
ICAgIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKHByb2ZpbGVkQmxvY2ssIGNv
ZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7CisgICAgRXhpdEZsYWcgZGlkRXhpdCA9IGhhc0JhZENh
Y2hlRXhpdFNpdGUocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsKICAg
ICAKLSAgICAgICAgaWYgKGhhc0V4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGNvZGVPcmlnaW4uYnl0
ZWNvZGVJbmRleCkpCi0gICAgICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQ
YXRoLCB0cnVlKTsKKyAgICBmb3IgKElDU3RhdHVzQ29udGV4dCogY29udGV4dCA6IGljQ29udGV4
dFN0YWNrKSB7CisgICAgICAgIElDU3RhdHVzIHN0YXR1cyA9IGNvbnRleHQtPmdldChjb2RlT3Jp
Z2luKTsKICAgICAgICAgCi0gICAgICAgIGlmIChyZXN1bHQuaXNTZXQoKSkKKyAgICAgICAgYXV0
byB3aXRoRXhpdHMgPSBbJl0gKGNvbnN0IEdldEJ5SWRTdGF0dXMmIHJlc3VsdCkgLT4gR2V0QnlJ
ZFN0YXR1cyB7CisgICAgICAgICAgICBpZiAoZGlkRXhpdC5pc1NldChjb2RlT3JpZ2luLmV4aXRp
bmdJbmxpbmVLaW5kKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQuc2xvd1ZlcnNp
b24oKTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0oZGZnQmxvY2spOwotICAgIFVOVVNFRF9QQVJBTShkZmdNYXApOwotI2VuZGlmCisg
ICAgICAgIH07CiAKLSAgICByZXR1cm4gY29tcHV0ZUZvcihwcm9maWxlZEJsb2NrLCBiYXNlbGlu
ZU1hcCwgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCB1aWQpOworICAgICAgICBpZiAoc3RhdHVz
LnN0dWJJbmZvKSB7CisgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNvbnRl
eHQtPm9wdGltaXplZENvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgIEdldEJ5SWRTdGF0
dXMgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJhY2soCisg
ICAgICAgICAgICAgICAgbG9ja2VyLCBjb250ZXh0LT5vcHRpbWl6ZWRDb2RlQmxvY2ssIHN0YXR1
cy5zdHViSW5mbywgdWlkLCBjYWxsRXhpdFNpdGVEYXRhKTsKKyAgICAgICAgICAgIGlmIChyZXN1
bHQuaXNTZXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gd2l0aEV4aXRzKHJlc3VsdCk7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChzdGF0dXMuZ2V0U3RhdHVzKQorICAgICAg
ICAgICAgcmV0dXJuIHdpdGhFeGl0cygqc3RhdHVzLmdldFN0YXR1cyk7CisgICAgfQorICAgICAg
ICAKKyAgICByZXR1cm4gY29tcHV0ZUZvcihwcm9maWxlZEJsb2NrLCBiYXNlbGluZU1hcCwgY29k
ZU9yaWdpbi5ieXRlY29kZUluZGV4LCB1aWQsIGRpZEV4aXQsIGNhbGxFeGl0U2l0ZURhdGEpOwog
fQogCiBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoY29uc3QgU3RydWN0
dXJlU2V0JiBzZXQsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCkBAIC00MTQsNiArMzk4LDExIEBA
IGJvb2wgR2V0QnlJZFN0YXR1czo6bWFrZXNDYWxscygpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCitHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OnNsb3dWZXJzaW9uKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhtYWtlc0NhbGxzKCkgPyBNYWtlc0NhbGxzIDog
VGFrZXNTbG93UGF0aCwgd2FzU2VlbkluSklUKCkpOworfQorCiB2b2lkIEdldEJ5SWRTdGF0dXM6
OmZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmIHNldCkKIHsKICAgICBpZiAobV9zdGF0ZSAhPSBT
aW1wbGUpCkBAIC00MjMsNiArNDEyLDI1IEBAIHZvaWQgR2V0QnlJZFN0YXR1czo6ZmlsdGVyKGNv
bnN0IFN0cnVjdHUKICAgICAgICAgbV9zdGF0ZSA9IE5vSW5mb3JtYXRpb247CiB9CiAKK3ZvaWQg
R2V0QnlJZFN0YXR1czo6bWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAg
Zm9yIChHZXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IG1fdmFyaWFudHMpCisgICAgICAgIHZhcmlh
bnQubWFya0lmQ2hlYXAodmlzaXRvcik7Cit9CisKK2Jvb2wgR2V0QnlJZFN0YXR1czo6ZmluYWxp
emUoKQoreworICAgIGZvciAoR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3ZhcmlhbnRzKSB7
CisgICAgICAgIGlmICghdmFyaWFudC5maW5hbGl6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKyAgICBpZiAobV9tb2R1bGVOYW1lc3BhY2VPYmplY3QgJiYgIUhlYXA6Omlz
TWFya2VkKG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGlmIChtX21vZHVsZUVudmlyb25tZW50ICYmICFIZWFwOjppc01hcmtlZChtX21vZHVsZUVu
dmlyb25tZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQor
CiB2b2lkIEdldEJ5SWRTdGF0dXM6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAg
ICBvdXQucHJpbnQoIigiKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9H
ZXRCeUlkU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0dldEJ5SWRTdGF0dXMuaAkocmV2aXNpb24gMjMyNDQxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyAr
MjgsOSBAQAogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCiAjaW5jbHVkZSAiQ29kZU9yaWdp
bi5oIgogI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKKyNpbmNsdWRlICJFeGl0RmxhZy5o
IgogI2luY2x1ZGUgIkdldEJ5SWRWYXJpYW50LmgiCisjaW5jbHVkZSAiSUNTdGF0dXNNYXAuaCIK
ICNpbmNsdWRlICJTY29wZU9mZnNldC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQwLDggKzQy
LDYgQEAgY2xhc3MgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q7CiBjbGFzcyBNb2R1bGVOYW1lc3Bh
Y2VBY2Nlc3NDYXNlOwogY2xhc3MgU3RydWN0dXJlU3R1YkluZm87CiAKLXR5cGVkZWYgSGFzaE1h
cDxDb2RlT3JpZ2luLCBTdHJ1Y3R1cmVTdHViSW5mbyosIENvZGVPcmlnaW5BcHByb3hpbWF0ZUhh
c2g+IFN0dWJJbmZvTWFwOwotCiBjbGFzcyBHZXRCeUlkU3RhdHVzIHsKIHB1YmxpYzoKICAgICBl
bnVtIFN0YXRlIHsKQEAgLTgxLDEwICs4MSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIG1fdmFyaWFu
dHMuYXBwZW5kKHZhcmlhbnQpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMgR2V0QnlJZFN0YXR1
cyBjb21wdXRlRm9yKENvZGVCbG9jayosIFN0dWJJbmZvTWFwJiwgdW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7CisgICAgc3RhdGljIEdldEJ5SWRTdGF0dXMg
Y29tcHV0ZUZvcihDb2RlQmxvY2sqLCBJQ1N0YXR1c01hcCYsIHVuc2lnbmVkIGJ5dGVjb2RlSW5k
ZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIEV4aXRGbGFnLCBDYWxsTGlua1N0YXR1czo6RXhp
dFNpdGVEYXRhKTsKICAgICBzdGF0aWMgR2V0QnlJZFN0YXR1cyBjb21wdXRlRm9yKGNvbnN0IFN0
cnVjdHVyZVNldCYsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogICAgIAotICAgIHN0YXRpYyBH
ZXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBDb2RlQmxv
Y2sqIGRmZ0Jsb2NrLCBTdHViSW5mb01hcCYgYmFzZWxpbmVNYXAsIFN0dWJJbmZvTWFwJiBkZmdN
YXAsIENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOworICAgIHN0YXRpYyBHZXRC
eUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJQ1N0YXR1c01h
cCYgYmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4dFN0YWNrJiBkZmdDb250ZXh0U3RhY2ssIENv
ZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogCiAjaWYgRU5BQkxFKERGR19KSVQp
CiAgICAgc3RhdGljIEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZvclN0dWJJbmZvKGNvbnN0IENvbmN1
cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgU3RydWN0dXJlU3R1Yklu
Zm8qLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKQEAgLTEwNiw2ICsxMDYs
OCBAQCBwdWJsaWM6CiAgICAgYm9vbCB0YWtlc1Nsb3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9z
dGF0ZSA9PSBUYWtlc1Nsb3dQYXRoIHx8IG1fc3RhdGUgPT0gTWFrZXNDYWxscyB8fCBtX3N0YXRl
ID09IEN1c3RvbSB8fCBtX3N0YXRlID09IE1vZHVsZU5hbWVzcGFjZTsgfQogICAgIGJvb2wgbWFr
ZXNDYWxscygpIGNvbnN0OwogICAgIAorICAgIEdldEJ5SWRTdGF0dXMgc2xvd1ZlcnNpb24oKSBj
b25zdDsKKyAgICAKICAgICBib29sIHdhc1NlZW5JbkpJVCgpIGNvbnN0IHsgcmV0dXJuIG1fd2Fz
U2VlbkluSklUOyB9CiAgICAgCiAgICAgLy8gQXR0ZW1wdHMgdG8gcmVkdWNlIHRoZSBzZXQgb2Yg
dmFyaWFudHMgdG8gZml0IHRoZSBnaXZlbiBzdHJ1Y3R1cmUgc2V0LiBUaGlzIG1heSBiZSBhcHBy
b3hpbWF0ZS4KQEAgLTExNSwxMiArMTE3LDEyIEBAIHB1YmxpYzoKICAgICBKU01vZHVsZUVudmly
b25tZW50KiBtb2R1bGVFbnZpcm9ubWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlRW52aXJv
bm1lbnQ7IH0KICAgICBTY29wZU9mZnNldCBzY29wZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2NvcGVPZmZzZXQ7IH0KICAgICAKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJik7
CisgICAgYm9vbCBmaW5hbGl6ZSgpOyAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGlzIGdldHMgdG8gbGl2
ZS4KKyAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKICAgICAKIHByaXZh
dGU6Ci0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAgc3RhdGljIGJvb2wgaGFzRXhpdFNpdGUoQ29k
ZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7Ci0jZW5kaWYKICNpZiBFTkFCTEUoSklU
KQogICAgIEdldEJ5SWRTdGF0dXMoY29uc3QgTW9kdWxlTmFtZXNwYWNlQWNjZXNzQ2FzZSYpOwog
ICAgIHN0YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0
ZUZlZWRiYWNrKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRW
YXJpYW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlJZFZhcmlhbnQuY3BwCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUs
NiArMTM1LDI0IEBAIGJvb2wgR2V0QnlJZFZhcmlhbnQ6OmF0dGVtcHRUb01lcmdlKGNvbnMKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBHZXRCeUlkVmFyaWFudDo6bWFya0lmQ2hlYXAoU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgbV9zdHJ1Y3R1cmVTZXQubWFya0lmQ2hlYXAodmlz
aXRvcik7Cit9CisKK2Jvb2wgR2V0QnlJZFZhcmlhbnQ6OmZpbmFsaXplKCkKK3sKKyAgICBpZiAo
IW1fc3RydWN0dXJlU2V0LmlzU3RpbGxBbGl2ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFtX2NvbmRpdGlvblNldC5hcmVTdGlsbExpdmUoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmIChtX2NhbGxMaW5rU3RhdHVzICYmICFtX2NhbGxMaW5rU3RhdHVzLT5maW5h
bGl6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1faW50cmluc2ljRnVuY3Rp
b24gJiYgIUhlYXA6OmlzTWFya2VkKG1faW50cmluc2ljRnVuY3Rpb24pKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgR2V0QnlJZFZhcmlhbnQ6OmR1
bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBkdW1wSW5Db250ZXh0KG91dCwgMCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlhbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFZhcmlh
bnQuaAkocmV2aXNpb24gMjMyNDQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0dldEJ5SWRWYXJpYW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDYgKzczLDkgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBhdHRlbXB0VG9NZXJnZShjb25zdCBHZXRCeUlkVmFyaWFudCYgb3RoZXIp
OwogICAgIAorICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKTsKKyAgICBib29sIGZp
bmFsaXplKCk7CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAg
dm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRleHQqKSBjb25zdDsKICAg
ICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JQ1N0YXR1c01hcC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzTWFw
LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSUNT
dGF0dXNNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCisKKyNpbmNsdWRlICJJbmxpbmVDYWxsRnJhbWUuaCIK
KyNpbmNsdWRlICJUZXJtaW5hdGVkQ29kZU9yaWdpbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
SUNTdGF0dXMgSUNTdGF0dXNDb250ZXh0OjpnZXQoQ29kZU9yaWdpbiBjb2RlT3JpZ2luKSBjb25z
dAoreworICAgIHJldHVybiBtYXAuZ2V0PFRlcm1pbmF0ZWRDb2RlT3JpZ2luSGFzaFRyYW5zbGF0
b3I+KAorICAgICAgICBUZXJtaW5hdGVkQ29kZU9yaWdpbihjb2RlT3JpZ2luLCBpbmxpbmVDYWxs
RnJhbWUpKTsKK30KKworYm9vbCBJQ1N0YXR1c0NvbnRleHQ6OmlzSW5saW5lZChDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4pIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZy
YW1lICYmIGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lICE9IGlubGluZUNhbGxGcmFtZTsKK30K
KworRXhpdGluZ0lubGluZUtpbmQgSUNTdGF0dXNDb250ZXh0OjppbmxpbmVLaW5kKENvZGVPcmln
aW4gY29kZU9yaWdpbikgY29uc3QKK3sKKyAgICByZXR1cm4gaXNJbmxpbmVkKGNvZGVPcmlnaW4p
ID8gRXhpdEZyb21JbmxpbmVkIDogRXhpdEZyb21Ob3RJbmxpbmVkOworfQorCit9IC8vIG5hbWVz
cGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVz
TWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3Rh
dHVzTWFwLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0lDU3RhdHVzTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIkNvZGVPcmlnaW4uaCIKKyNpbmNsdWRlICJFeGl0aW5nSW5saW5lS2luZC5oIgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBDYWxsTGlu
a0luZm87CitjbGFzcyBDYWxsTGlua1N0YXR1czsKK2NsYXNzIENvZGVCbG9jazsKK2NsYXNzIEdl
dEJ5SWRTdGF0dXM7CitjbGFzcyBJbkJ5SWRTdGF0dXM7CitjbGFzcyBQdXRCeUlkU3RhdHVzOwor
Y2xhc3MgU3RydWN0dXJlU3R1YkluZm87CitzdHJ1Y3QgQnlWYWxJbmZvOworCitzdHJ1Y3QgSUNT
dGF0dXMgeworICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbyB7IG51bGxwdHIgfTsKKyAg
ICBDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyB7IG51bGxwdHIgfTsKKyAgICBCeVZhbEluZm8q
IGJ5VmFsSW5mbyB7IG51bGxwdHIgfTsKKyAgICBDYWxsTGlua1N0YXR1cyogY2FsbFN0YXR1cyB7
IG51bGxwdHIgfTsKKyAgICBHZXRCeUlkU3RhdHVzKiBnZXRTdGF0dXMgeyBudWxscHRyIH07Cisg
ICAgSW5CeUlkU3RhdHVzKiBpblN0YXR1cyB7IG51bGxwdHIgfTsKKyAgICBQdXRCeUlkU3RhdHVz
KiBwdXRTdGF0dXMgeyBudWxscHRyIH07Cit9OworCit0eXBlZGVmIEhhc2hNYXA8Q29kZU9yaWdp
biwgSUNTdGF0dXMsIENvZGVPcmlnaW5BcHByb3hpbWF0ZUhhc2g+IElDU3RhdHVzTWFwOworCitz
dHJ1Y3QgSUNTdGF0dXNDb250ZXh0IHsKKyAgICBJQ1N0YXR1cyBnZXQoQ29kZU9yaWdpbikgY29u
c3Q7CisgICAgYm9vbCBpc0lubGluZWQoQ29kZU9yaWdpbikgY29uc3Q7CisgICAgRXhpdGluZ0lu
bGluZUtpbmQgaW5saW5lS2luZChDb2RlT3JpZ2luKSBjb25zdDsKKyAgICAKKyAgICBJbmxpbmVD
YWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSB7IG51bGxwdHIgfTsKKyAgICBDb2RlQmxvY2sqIG9w
dGltaXplZENvZGVCbG9jayB7IG51bGxwdHIgfTsKKyAgICBJQ1N0YXR1c01hcCBtYXA7Cit9Owor
Cit0eXBlZGVmIFZlY3RvcjxJQ1N0YXR1c0NvbnRleHQqLCA4PiBJQ1N0YXR1c0NvbnRleHRTdGFj
azsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JQ1N0YXR1c1V0aWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSUNTdGF0dXNVdGlscy5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzVXRpbHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklDU3RhdHVzVXRpbHMuaCIK
KworI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkV4aXRGbGFnLmgiCisjaW5jbHVk
ZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0V4aXRGbGFnIGhh
c0JhZENhY2hlRXhpdFNpdGUoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRl
Y29kZUluZGV4KQoreworI2lmIEVOQUJMRShERkdfSklUKQorICAgIFVubGlua2VkQ29kZUJsb2Nr
KiB1bmxpbmtlZENvZGVCbG9jayA9IHByb2ZpbGVkQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCk7
CisgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcih1bmxpbmtlZENvZGVCbG9jay0+bV9sb2Nr
KTsKKyAgICBhdXRvIGV4aXRGbGFnID0gWyZdIChFeGl0S2luZCBleGl0S2luZCkgLT4gRXhpdEZs
YWcgeworICAgICAgICBhdXRvIHdpdGhJbmxpbmVkID0gWyZdIChFeGl0aW5nSW5saW5lS2luZCBp
bmxpbmVLaW5kKSAtPiBFeGl0RmxhZyB7CisgICAgICAgICAgICByZXR1cm4gRXhpdEZsYWcodW5s
aW5rZWRDb2RlQmxvY2stPmhhc0V4aXRTaXRlKGxvY2tlciwgREZHOjpGcmVxdWVudEV4aXRTaXRl
KGJ5dGVjb2RlSW5kZXgsIGV4aXRLaW5kLCBFeGl0RnJvbUFueXRoaW5nLCBpbmxpbmVLaW5kKSks
IGlubGluZUtpbmQpOworICAgICAgICB9OworICAgICAgICByZXR1cm4gd2l0aElubGluZWQoRXhp
dEZyb21Ob3RJbmxpbmVkKSB8IHdpdGhJbmxpbmVkKEV4aXRGcm9tSW5saW5lZCk7CisgICAgfTsK
KyAgICByZXR1cm4gZXhpdEZsYWcoQmFkQ2FjaGUpIHwgZXhpdEZsYWcoQmFkQ29uc3RhbnRDYWNo
ZSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKKyAgICBVTlVTRURf
UEFSQU0oYnl0ZWNvZGVJbmRleCk7CisgICAgcmV0dXJuIEV4aXRGbGFnKCk7CisjZW5kaWYKK30K
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JQ1N0YXR1c1V0aWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0lDU3RhdHVzVXRpbHMuaAkocmV2aXNpb24gMjMyNDQxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lDU3RhdHVzVXRpbHMuaAkod29ya2luZyBjb3B5KQpAQCAt
MjUsNiArMjUsOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkV4aXRGbGFnLmgiCisK
IG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWYXJpYW50VmVjdG9yVHlwZSwg
dHlwZW5hbWUgVmFyaWFudFR5cGU+CkBAIC01OSw1ICs2MSw3IEBAIHZvaWQgZmlsdGVySUNTdGF0
dXNWYXJpYW50cyhWYXJpYW50VmVjdG8KICAgICAgICAgfSk7CiB9CiAKK0V4aXRGbGFnIGhhc0Jh
ZENhY2hlRXhpdFNpdGUoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29k
ZUluZGV4KTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JbkJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAyMzI0NDEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5CeUlkU3RhdHVzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTggWXVzdWtl
IFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQxLDE2ICs0MiwxNiBAQCBib29sIEluQnlJZFN0YXR1czo6YXBwZW5kVmFyaWFu
dChjb25zdCBJCiAgICAgcmV0dXJuIGFwcGVuZElDU3RhdHVzVmFyaWFudChtX3ZhcmlhbnRzLCB2
YXJpYW50KTsKIH0KIAotSW5CeUlkU3RhdHVzIEluQnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2Rl
QmxvY2sqIHByb2ZpbGVkQmxvY2ssIFN0dWJJbmZvTWFwJiBtYXAsIHVuc2lnbmVkIGJ5dGVjb2Rl
SW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitJbkJ5SWRTdGF0dXMgSW5CeUlkU3RhdHVz
Ojpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgSUNTdGF0dXNNYXAmIG1hcCwg
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgRXhpdEZsYWcg
ZGlkRXhpdCkKIHsKICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKHByb2ZpbGVkQmxvY2st
Pm1fbG9jayk7CiAKICAgICBJbkJ5SWRTdGF0dXMgcmVzdWx0OwogCiAjaWYgRU5BQkxFKERGR19K
SVQpCi0gICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvV2l0aG91dEV4aXRTaXRlRmVlZGJh
Y2sobG9ja2VyLCBtYXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkpLCB1aWQpOworICAg
IHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKGxvY2tl
ciwgbWFwLmdldChDb2RlT3JpZ2luKGJ5dGVjb2RlSW5kZXgpKS5zdHViSW5mbywgdWlkKTsKIAot
ICAgIGlmICghcmVzdWx0LnRha2VzU2xvd1BhdGgoKSAmJiBoYXNFeGl0U2l0ZShwcm9maWxlZEJs
b2NrLCBieXRlY29kZUluZGV4KSkKKyAgICBpZiAoIXJlc3VsdC50YWtlc1Nsb3dQYXRoKCkgJiYg
ZGlkRXhpdCkKICAgICAgICAgcmV0dXJuIEluQnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKG1hcCk7CkBAIC02MSw1NiArNjIsNDcgQEAgSW5CeUlkU3Rh
dHVzIEluQnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDbwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
LUluQnlJZFN0YXR1cyBJbkJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgQ29kZUJsb2NrKiBw
cm9maWxlZEJsb2NrLCBDb2RlQmxvY2sqIGRmZ0Jsb2NrLCBTdHViSW5mb01hcCYgYmFzZWxpbmVN
YXAsCi0gICAgU3R1YkluZm9NYXAmIGRmZ01hcCwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkKQorSW5CeUlkU3RhdHVzIEluQnlJZFN0YXR1czo6Y29tcHV0ZUZv
cihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIElDU3RhdHVzTWFwJiBtYXAsIHVuc2lnbmVkIGJ5
dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7Ci0jaWYgRU5BQkxFKERGR19K
SVQpCi0gICAgaWYgKGRmZ0Jsb2NrKSB7Ci0gICAgICAgIENhbGxMaW5rU3RhdHVzOjpFeGl0U2l0
ZURhdGEgZXhpdFNpdGVEYXRhOwotICAgICAgICB7Ci0gICAgICAgICAgICBDb25jdXJyZW50SlNM
b2NrZXIgbG9ja2VyKHByb2ZpbGVkQmxvY2stPm1fbG9jayk7Ci0gICAgICAgICAgICBleGl0U2l0
ZURhdGEgPSBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YSgKLSAgICAgICAgICAg
ICAgICBwcm9maWxlZEJsb2NrLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpOwotICAgICAgICB9
Ci0KLSAgICAgICAgSW5CeUlkU3RhdHVzIHJlc3VsdDsKLSAgICAgICAgewotICAgICAgICAgICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihkZmdCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAg
IHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKGxvY2tl
ciwgZGZnTWFwLmdldChjb2RlT3JpZ2luKSwgdWlkKTsKLSAgICAgICAgfQorICAgIHJldHVybiBj
b21wdXRlRm9yKHByb2ZpbGVkQmxvY2ssIG1hcCwgYnl0ZWNvZGVJbmRleCwgdWlkLCBoYXNCYWRD
YWNoZUV4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpKTsKK30KIAotICAgICAg
ICBpZiAocmVzdWx0LnRha2VzU2xvd1BhdGgoKSkKK0luQnlJZFN0YXR1cyBJbkJ5SWRTdGF0dXM6
OmNvbXB1dGVGb3IoCisgICAgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBJQ1N0YXR1c01hcCYg
YmFzZWxpbmVNYXAsCisgICAgSUNTdGF0dXNDb250ZXh0U3RhY2smIGNvbnRleHRTdGFjaywgQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQoreworICAgIEV4aXRG
bGFnIGRpZEV4aXQgPSBoYXNCYWRDYWNoZUV4aXRTaXRlKHByb2ZpbGVkQmxvY2ssIGNvZGVPcmln
aW4uYnl0ZWNvZGVJbmRleCk7CisgICAgCisgICAgZm9yIChJQ1N0YXR1c0NvbnRleHQqIGNvbnRl
eHQgOiBjb250ZXh0U3RhY2spIHsKKyAgICAgICAgSUNTdGF0dXMgc3RhdHVzID0gY29udGV4dC0+
Z2V0KGNvZGVPcmlnaW4pOworICAgICAgICAKKyAgICAgICAgYXV0byB3aXRoRXhpdHMgPSBbJl0g
KGNvbnN0IEluQnlJZFN0YXR1cyYgcmVzdWx0KSAtPiBJbkJ5SWRTdGF0dXMgeworICAgICAgICAg
ICAgaWYgKGRpZEV4aXQuaXNTZXQoY29kZU9yaWdpbi5leGl0aW5nSW5saW5lS2luZCgpKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gSW5CeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgpOwogICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfTsKIAotICAgICAgICBpZiAoaGFzRXhpdFNp
dGUocHJvZmlsZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KSkKLSAgICAgICAgICAg
IHJldHVybiBJbkJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCk7Ci0KLSAgICAgICAgaWYgKHJlc3Vs
dC5pc1NldCgpKQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgaWYgKHN0YXR1
cy5zdHViSW5mbykgeworICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb250
ZXh0LT5vcHRpbWl6ZWRDb2RlQmxvY2stPm1fbG9jayk7CisgICAgICAgICAgICBJbkJ5SWRTdGF0
dXMgcmVzdWx0ID0KKyAgICAgICAgICAgICAgICBjb21wdXRlRm9yU3R1YkluZm9XaXRob3V0RXhp
dFNpdGVGZWVkYmFjayhsb2NrZXIsIHN0YXR1cy5zdHViSW5mbywgdWlkKTsKKyAgICAgICAgICAg
IGlmIChyZXN1bHQuaXNTZXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gd2l0aEV4aXRzKHJl
c3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChzdGF0dXMuaW5TdGF0dXMp
CisgICAgICAgICAgICByZXR1cm4gd2l0aEV4aXRzKCpzdGF0dXMuaW5TdGF0dXMpOwogICAgIH0K
LSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGRmZ0Jsb2NrKTsKLSAgICBVTlVTRURfUEFSQU0oZGZn
TWFwKTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIGNvbXB1dGVGb3IocHJvZmlsZWRCbG9jaywgYmFz
ZWxpbmVNYXAsIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgdWlkKTsKKyAgICAgICAgCisgICAg
cmV0dXJuIGNvbXB1dGVGb3IocHJvZmlsZWRCbG9jaywgYmFzZWxpbmVNYXAsIGNvZGVPcmlnaW4u
Ynl0ZWNvZGVJbmRleCwgdWlkLCBkaWRFeGl0KTsKIH0KIAogI2lmIEVOQUJMRShERkdfSklUKQot
Ym9vbCBJbkJ5SWRTdGF0dXM6Omhhc0V4aXRTaXRlKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywg
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKLXsKLSAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5r
ZWRDb2RlQmxvY2sgPSBwcm9maWxlZEJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpOwotICAgIENv
bmN1cnJlbnRKU0xvY2tlciBsb2NrZXIodW5saW5rZWRDb2RlQmxvY2stPm1fbG9jayk7Ci0gICAg
cmV0dXJuIHVubGlua2VkQ29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVl
bnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRDYWNoZSkpCi0gICAgICAgIHx8IHVubGlua2Vk
Q29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRl
Y29kZUluZGV4LCBCYWRDb25zdGFudENhY2hlKSk7Ci19Ci0KIEluQnlJZFN0YXR1cyBJbkJ5SWRT
dGF0dXM6OmNvbXB1dGVGb3JTdHViSW5mbyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImIGxvY2tl
ciwgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IENvZGVPcmlnaW4gY29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBJ
bkJ5SWRTdGF0dXMgcmVzdWx0ID0gSW5CeUlkU3RhdHVzOjpjb21wdXRlRm9yU3R1YkluZm9XaXRo
b3V0RXhpdFNpdGVGZWVkYmFjayhsb2NrZXIsIHN0dWJJbmZvLCB1aWQpOwogCi0gICAgaWYgKCFy
ZXN1bHQudGFrZXNTbG93UGF0aCgpICYmIEluQnlJZFN0YXR1czo6aGFzRXhpdFNpdGUocHJvZmls
ZWRCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KSkKKyAgICBpZiAoIXJlc3VsdC50YWtl
c1Nsb3dQYXRoKCkgJiYgaGFzQmFkQ2FjaGVFeGl0U2l0ZShwcm9maWxlZEJsb2NrLCBjb2RlT3Jp
Z2luLmJ5dGVjb2RlSW5kZXgpKQogICAgICAgICByZXR1cm4gSW5CeUlkU3RhdHVzKFRha2VzU2xv
d1BhdGgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0yMTgsNiArMjEwLDIxIEBAIHZvaWQg
SW5CeUlkU3RhdHVzOjpmaWx0ZXIoY29uc3QgU3RydWN0dXIKICAgICAgICAgbV9zdGF0ZSA9IE5v
SW5mb3JtYXRpb247CiB9CiAKK3ZvaWQgSW5CeUlkU3RhdHVzOjptYXJrSWZDaGVhcChTbG90Vmlz
aXRvciYgdmlzaXRvcikKK3sKKyAgICBmb3IgKEluQnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBtX3Zh
cmlhbnRzKQorICAgICAgICB2YXJpYW50Lm1hcmtJZkNoZWFwKHZpc2l0b3IpOworfQorCitib29s
IEluQnlJZFN0YXR1czo6ZmluYWxpemUoKQoreworICAgIGZvciAoSW5CeUlkVmFyaWFudCYgdmFy
aWFudCA6IG1fdmFyaWFudHMpIHsKKyAgICAgICAgaWYgKCF2YXJpYW50LmZpbmFsaXplKCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCiB2
b2lkIEluQnlJZFN0YXR1czo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAgIG91
dC5wcmludCgiKCIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJ
ZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
bkJ5SWRTdGF0dXMuaAkocmV2aXNpb24gMjMyNDQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0luQnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAxOCBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+LgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsNiArMjksNyBAQAog
I2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgogI2lu
Y2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKKyNpbmNsdWRlICJJQ1N0YXR1c01hcC5oIgogI2lu
Y2x1ZGUgIkluQnlJZFZhcmlhbnQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zNiw4ICszOCw2
IEBAIGNsYXNzIEFjY2Vzc0Nhc2U7CiBjbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBTdHJ1Y3R1cmVT
dHViSW5mbzsKIAotdHlwZWRlZiBIYXNoTWFwPENvZGVPcmlnaW4sIFN0cnVjdHVyZVN0dWJJbmZv
KiwgQ29kZU9yaWdpbkFwcHJveGltYXRlSGFzaD4gU3R1YkluZm9NYXA7Ci0KIGNsYXNzIEluQnlJ
ZFN0YXR1cyB7CiBwdWJsaWM6CiAgICAgZW51bSBTdGF0ZSB7CkBAIC01OSw4ICs1OSw5IEBAIHB1
YmxpYzoKICAgICAgICAgbV92YXJpYW50cy5hcHBlbmQodmFyaWFudCk7CiAgICAgfQogCi0gICAg
c3RhdGljIEluQnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIFN0dWJJbmZvTWFwJiwg
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7Ci0gICAgc3Rh
dGljIEluQnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgQ29k
ZUJsb2NrKiBkZmdCbG9jaywgU3R1YkluZm9NYXAmIGJhc2VsaW5lTWFwLCBTdHViSW5mb01hcCYg
ZGZnTWFwLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKKyAgICBzdGF0aWMg
SW5CeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgSUNTdGF0dXNNYXAmLCB1bnNpZ25l
ZCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKKyAgICBzdGF0aWMgSW5C
eUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgSUNTdGF0dXNNYXAmLCB1bnNpZ25lZCBi
eXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBFeGl0RmxhZyk7CisgICAgc3Rh
dGljIEluQnlJZFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgSUNT
dGF0dXNNYXAmIGJhc2VsaW5lTWFwLCBJQ1N0YXR1c0NvbnRleHRTdGFjayYgY29udGV4dFN0YWNr
LCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKIAogI2lmIEVOQUJMRShERkdf
SklUKQogICAgIHN0YXRpYyBJbkJ5SWRTdGF0dXMgY29tcHV0ZUZvclN0dWJJbmZvKGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYsIENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgU3RydWN0dXJlU3R1
YkluZm8qLCBDb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKTsKQEAgLTgxLDEyICs4
MiwxNCBAQCBwdWJsaWM6CiAKICAgICAvLyBBdHRlbXB0cyB0byByZWR1Y2UgdGhlIHNldCBvZiB2
YXJpYW50cyB0byBmaXQgdGhlIGdpdmVuIHN0cnVjdHVyZSBzZXQuIFRoaXMgbWF5IGJlIGFwcHJv
eGltYXRlLgogICAgIHZvaWQgZmlsdGVyKGNvbnN0IFN0cnVjdHVyZVNldCYpOworICAgIAorICAg
IHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3ImKTsKKyAgICBib29sIGZpbmFsaXplKCk7CiAK
ICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKIAogcHJpdmF0ZToKICNpZiBFTkFC
TEUoREZHX0pJVCkKLSAgICBzdGF0aWMgYm9vbCBoYXNFeGl0U2l0ZShDb2RlQmxvY2sqLCB1bnNp
Z25lZCBieXRlY29kZUluZGV4KTsKICAgICBzdGF0aWMgSW5CeUlkU3RhdHVzIGNvbXB1dGVGb3JT
dHViSW5mb1dpdGhvdXRFeGl0U2l0ZUZlZWRiYWNrKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYs
IFN0cnVjdHVyZVN0dWJJbmZvKiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCk7CiAjZW5kaWYKICAg
ICBib29sIGFwcGVuZFZhcmlhbnQoY29uc3QgSW5CeUlkVmFyaWFudCYpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFZhcmlhbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRWYXJpYW50LmNwcAkocmV2aXNp
b24gMjMyNDQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luQnlJZFZhcmlh
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAxOCBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICogQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjMsNiArNjQsMjAgQEAgYm9vbCBJbkJ5SWRWYXJpYW50
OjphdHRlbXB0VG9NZXJnZShjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIEluQnlJ
ZFZhcmlhbnQ6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIG1fc3Ry
dWN0dXJlU2V0Lm1hcmtJZkNoZWFwKHZpc2l0b3IpOworfQorCitib29sIEluQnlJZFZhcmlhbnQ6
OmZpbmFsaXplKCkKK3sKKyAgICBpZiAoIW1fc3RydWN0dXJlU2V0LmlzU3RpbGxBbGl2ZSgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFtX2NvbmRpdGlvblNldC5hcmVTdGlsbExp
dmUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lk
IEluQnlJZFZhcmlhbnQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBkdW1w
SW5Db250ZXh0KG91dCwgMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SW5CeUlkVmFyaWFudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbkJ5SWRWYXJpYW50LmgJKHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRWYXJpYW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE4IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4uCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NCw2ICs1
NSw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzSGl0KCkgY29uc3QgeyByZXR1cm4gb2Zmc2V0KCkg
IT0gaW52YWxpZE9mZnNldDsgfQogCiAgICAgYm9vbCBhdHRlbXB0VG9NZXJnZShjb25zdCBJbkJ5
SWRWYXJpYW50JiBvdGhlcik7CisgICAgCisgICAgdm9pZCBtYXJrSWZDaGVhcChTbG90VmlzaXRv
ciYpOworICAgIGJvb2wgZmluYWxpemUoKTsKIAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYp
IGNvbnN0OwogICAgIHZvaWQgZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYsIER1bXBDb250ZXh0
KikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VP
ZlN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0luc3RhbmNlT2ZTdGF0dXMuY3BwCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJJbnN0YW5jZU9mU3RhdHVzLmgiCiAKICNpbmNsdWRl
ICJJQ1N0YXR1c1V0aWxzLmgiCisjaW5jbHVkZSAiSW5zdGFuY2VPZkFjY2Vzc0Nhc2UuaCIKICNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUG9seW1vcnBoaWNBY2Nlc3MuaCIKICNp
bmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgpAQCAtMzksMTMgKzQwLDEzIEBAIHZvaWQgSW5z
dGFuY2VPZlN0YXR1czo6YXBwZW5kVmFyaWFudChjb24KIH0KIAogSW5zdGFuY2VPZlN0YXR1cyBJ
bnN0YW5jZU9mU3RhdHVzOjpjb21wdXRlRm9yKAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBT
dHViSW5mb01hcCYgaW5mb01hcCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKKyAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgSUNTdGF0dXNNYXAmIGluZm9NYXAsIHVuc2lnbmVkIGJ5dGVjb2RlSW5k
ZXgpCiB7CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7
CiAgICAgCiAgICAgSW5zdGFuY2VPZlN0YXR1cyByZXN1bHQ7CiAjaWYgRU5BQkxFKERGR19KSVQp
Ci0gICAgcmVzdWx0ID0gY29tcHV0ZUZvclN0dWJJbmZvKGxvY2tlciwgaW5mb01hcC5nZXQoQ29k
ZU9yaWdpbihieXRlY29kZUluZGV4KSkpOworICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5m
byhsb2NrZXIsIGluZm9NYXAuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJbmRleCkpLnN0dWJJbmZv
KTsKIAogICAgIGlmICghcmVzdWx0LnRha2VzU2xvd1BhdGgoKSkgewogICAgICAgICBVbmxpbmtl
ZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJs
b2NrKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdGFuY2VPZlN0
YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0
YW5jZU9mU3RhdHVzLmgJKHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbnN0YW5jZU9mU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNpbmNsdWRlICJDb25jdXJyZW50SlNM
b2NrLmgiCisjaW5jbHVkZSAiSUNTdGF0dXNNYXAuaCIKICNpbmNsdWRlICJJbnN0YW5jZU9mVmFy
aWFudC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTM1LDggKzM2LDYgQEAgY2xhc3MgQWNjZXNz
Q2FzZTsKIGNsYXNzIENvZGVCbG9jazsKIGNsYXNzIFN0cnVjdHVyZVN0dWJJbmZvOwogCi10eXBl
ZGVmIEhhc2hNYXA8Q29kZU9yaWdpbiwgU3RydWN0dXJlU3R1YkluZm8qLCBDb2RlT3JpZ2luQXBw
cm94aW1hdGVIYXNoPiBTdHViSW5mb01hcDsKLQogY2xhc3MgSW5zdGFuY2VPZlN0YXR1cyB7CiBw
dWJsaWM6CiAgICAgZW51bSBTdGF0ZSB7CkBAIC02MSw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgQVNTRVJUKHN0YXRlID09IE5vSW5mb3JtYXRpb24gfHwgc3RhdGUgPT0gVGFrZXNTbG93UGF0
aCk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBJbnN0YW5jZU9mU3RhdHVzIGNvbXB1dGVGb3Io
Q29kZUJsb2NrKiwgU3R1YkluZm9NYXAmLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKyAgICBz
dGF0aWMgSW5zdGFuY2VPZlN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIElDU3RhdHVzTWFw
JiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CiAgICAgCiAjaWYgRU5BQkxFKERGR19KSVQpCiAg
ICAgc3RhdGljIEluc3RhbmNlT2ZTdGF0dXMgY29tcHV0ZUZvclN0dWJJbmZvKGNvbnN0IENvbmN1
cnJlbnRKU0xvY2tlciYsIFN0cnVjdHVyZVN0dWJJbmZvKik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAyMzI0
NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIK
ICNpbmNsdWRlICJDb21wbGV4R2V0U3RhdHVzLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyQWNj
ZXNzQ2FzZS5oIgorI2luY2x1ZGUgIklDU3RhdHVzVXRpbHMuaCIKICNpbmNsdWRlICJMTEludERh
dGEuaCIKICNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgpAQCAtNTUsMTIgKzU2LDkgQEAgYm9vbCBQdXRCeUlkU3RhdHVzOjphcHBlbmRWYXJp
YW50KGNvbnN0IAogfQogCiAjaWYgRU5BQkxFKERGR19KSVQpCi1ib29sIFB1dEJ5SWRTdGF0dXM6
Omhhc0V4aXRTaXRlKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCkKK0V4aXRGbGFnIFB1dEJ5SWRTdGF0dXM6Omhhc0V4aXRTaXRlKENvZGVCbG9jayogcHJv
ZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKIHsKLSAgICBVbmxpbmtlZENvZGVC
bG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBwcm9maWxlZEJsb2NrLT51bmxpbmtlZENvZGVCbG9j
aygpOwotICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIodW5saW5rZWRDb2RlQmxvY2stPm1f
bG9jayk7Ci0gICAgcmV0dXJuIHVubGlua2VkQ29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIs
IERGRzo6RnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRDYWNoZSkpCi0gICAgICAg
IHx8IHVubGlua2VkQ29kZUJsb2NrLT5oYXNFeGl0U2l0ZShsb2NrZXIsIERGRzo6RnJlcXVlbnRF
eGl0U2l0ZShieXRlY29kZUluZGV4LCBCYWRDb25zdGFudENhY2hlKSk7CisgICAgcmV0dXJuIGhh
c0JhZENhY2hlRXhpdFNpdGUocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCk7CiB9CiAjZW5k
aWYKIApAQCAtMTEwLDcgKzEwOCw3IEBAIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29t
cHV0ZUZyb20KICAgICAgICAgc3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwg
b2Zmc2V0LCBuZXdTdHJ1Y3R1cmUtPmluZmVycmVkVHlwZURlc2NyaXB0b3JGb3IodWlkKSk7CiB9
CiAKLVB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHBy
b2ZpbGVkQmxvY2ssIFN0dWJJbmZvTWFwJiBtYXAsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFVu
aXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1
dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCBJQ1N0YXR1c01hcCYgbWFwLCB1bnNpZ25l
ZCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBFeGl0RmxhZyBkaWRFeGl0
LCBDYWxsTGlua1N0YXR1czo6RXhpdFNpdGVEYXRhIGNhbGxFeGl0U2l0ZURhdGEpCiB7CiAgICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihwcm9maWxlZEJsb2NrLT5tX2xvY2spOwogICAgIApA
QCAtMTE4LDEzICsxMTYsMTIgQEAgUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRl
Rm9yKAogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICAgICBVTlVTRURfUEFSQU0o
dWlkKTsKICNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBpZiAoaGFzRXhpdFNpdGUocHJvZmlsZWRC
bG9jaywgYnl0ZWNvZGVJbmRleCkpCisgICAgaWYgKGRpZEV4aXQpCiAgICAgICAgIHJldHVybiBQ
dXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgpOwogICAgIAotICAgIFN0cnVjdHVyZVN0dWJJbmZv
KiBzdHViSW5mbyA9IG1hcC5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4KSk7CisgICAgU3Ry
dWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvID0gbWFwLmdldChDb2RlT3JpZ2luKGJ5dGVjb2RlSW5k
ZXgpKS5zdHViSW5mbzsKICAgICBQdXRCeUlkU3RhdHVzIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHVi
SW5mbygKLSAgICAgICAgbG9ja2VyLCBwcm9maWxlZEJsb2NrLCBzdHViSW5mbywgdWlkLAotICAg
ICAgICBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUV4aXRTaXRlRGF0YShwcm9maWxlZEJsb2NrLCBi
eXRlY29kZUluZGV4KSk7CisgICAgICAgIGxvY2tlciwgcHJvZmlsZWRCbG9jaywgc3R1YkluZm8s
IHVpZCwgY2FsbEV4aXRTaXRlRGF0YSk7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVy
biBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIHVpZCk7CiAg
ICAgCkBAIC0yNjQsMzggKzI2MSwzNCBAQCBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNv
bXB1dGVGb3JTCiB9CiAjZW5kaWYKIAotUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21w
dXRlRm9yKENvZGVCbG9jayogYmFzZWxpbmVCbG9jaywgQ29kZUJsb2NrKiBkZmdCbG9jaywgU3R1
YkluZm9NYXAmIGJhc2VsaW5lTWFwLCBTdHViSW5mb01hcCYgZGZnTWFwLCBDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCitQdXRCeUlkU3RhdHVzIFB1dEJ5SWRT
dGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJQ1N0YXR1c01hcCYg
YmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4dFN0YWNrJiBjb250ZXh0U3RhY2ssIENvZGVPcmln
aW4gY29kZU9yaWdpbiwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKLSNpZiBFTkFCTEUoREZH
X0pJVCkKLSAgICBpZiAoZGZnQmxvY2spIHsKLSAgICAgICAgaWYgKGhhc0V4aXRTaXRlKGJhc2Vs
aW5lQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCkpCi0gICAgICAgICAgICByZXR1cm4g
UHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKLSAgICAgICAgQ2FsbExpbmtTdGF0dXM6OkV4
aXRTaXRlRGF0YSBleGl0U2l0ZURhdGE7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIoYmFzZWxpbmVCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgIGV4
aXRTaXRlRGF0YSA9IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRXhpdFNpdGVEYXRhKAotICAgICAg
ICAgICAgICAgIGJhc2VsaW5lQmxvY2ssIGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7Ci0gICAg
ICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICBQdXRCeUlkU3RhdHVzIHJlc3VsdDsKLSAgICAg
ICAgewotICAgICAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihkZmdCbG9jay0+bV9s
b2NrKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IGNvbXB1dGVGb3JTdHViSW5mbygKLSAgICAgICAg
ICAgICAgICBsb2NrZXIsIGRmZ0Jsb2NrLCBkZmdNYXAuZ2V0KGNvZGVPcmlnaW4pLCB1aWQsIGV4
aXRTaXRlRGF0YSk7CisgICAgQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0YSBjYWxsRXhpdFNp
dGVEYXRhID0KKyAgICAgICAgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVFeGl0U2l0ZURhdGEoYmFz
ZWxpbmVCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsKKyAgICBFeGl0RmxhZyBkaWRF
eGl0ID0gaGFzRXhpdFNpdGUoYmFzZWxpbmVCbG9jaywgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4
KTsKKyAgICAKKyAgICBmb3IgKElDU3RhdHVzQ29udGV4dCogY29udGV4dCA6IGNvbnRleHRTdGFj
aykgeworICAgICAgICBJQ1N0YXR1cyBzdGF0dXMgPSBjb250ZXh0LT5nZXQoY29kZU9yaWdpbik7
CisgICAgICAgIAorICAgICAgICBhdXRvIHdpdGhFeGl0cyA9IFsmXSAoY29uc3QgUHV0QnlJZFN0
YXR1cyYgcmVzdWx0KSAtPiBQdXRCeUlkU3RhdHVzIHsKKyAgICAgICAgICAgIGlmIChkaWRFeGl0
LmlzU2V0KGNvZGVPcmlnaW4uZXhpdGluZ0lubGluZUtpbmQoKSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdC5zbG93VmVyc2lvbigpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIGlmIChzdGF0dXMuc3R1YkluZm8pIHsKKyAg
ICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29udGV4dC0+b3B0aW1pemVkQ29k
ZUJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgUHV0QnlJZFN0YXR1cyByZXN1bHQgPSBjb21w
dXRlRm9yU3R1YkluZm8oCisgICAgICAgICAgICAgICAgbG9ja2VyLCBjb250ZXh0LT5vcHRpbWl6
ZWRDb2RlQmxvY2ssIHN0YXR1cy5zdHViSW5mbywgdWlkLCBjYWxsRXhpdFNpdGVEYXRhKTsKKyAg
ICAgICAgICAgIGlmIChyZXN1bHQuaXNTZXQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gd2l0
aEV4aXRzKHJlc3VsdCk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIC8vIFdlIHVzZSBU
YWtlc1Nsb3dQYXRoIGluIHNvbWUgY2FzZXMgd2hlcmUgdGhlIHN0dWIgd2FzIHVuc2V0LiBUaGF0
J3Mgd2VpcmQgYW5kCi0gICAgICAgIC8vIGl0IHdvdWxkIGJlIGJldHRlciBub3QgdG8gZG8gdGhh
dC4gQnV0IGl0IG1lYW5zIHRoYXQgd2UgaGF2ZSB0byBkZWZlbmQKLSAgICAgICAgLy8gb3Vyc2Vs
dmVzIGhlcmUuCi0gICAgICAgIGlmIChyZXN1bHQuaXNTaW1wbGUoKSkKLSAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgICAgIGlmIChzdGF0dXMucHV0U3RhdHVzKQorICAgICAgICAgICAg
cmV0dXJuIHdpdGhFeGl0cygqc3RhdHVzLnB1dFN0YXR1cyk7CiAgICAgfQotI2Vsc2UKLSAgICBV
TlVTRURfUEFSQU0oZGZnQmxvY2spOwotICAgIFVOVVNFRF9QQVJBTShkZmdNYXApOwotI2VuZGlm
CiAKLSAgICByZXR1cm4gY29tcHV0ZUZvcihiYXNlbGluZUJsb2NrLCBiYXNlbGluZU1hcCwgY29k
ZU9yaWdpbi5ieXRlY29kZUluZGV4LCB1aWQpOworICAgIHJldHVybiBjb21wdXRlRm9yKGJhc2Vs
aW5lQmxvY2ssIGJhc2VsaW5lTWFwLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIHVpZCwgZGlk
RXhpdCwgY2FsbEV4aXRTaXRlRGF0YSk7CiB9CiAKIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1
czo6Y29tcHV0ZUZvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJ1Y3R1
cmVTZXQmIHNldCwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgYm9vbCBpc0RpcmVjdCkKQEAgLTM5
OCw2ICszOTEsMzUgQEAgYm9vbCBQdXRCeUlkU3RhdHVzOjptYWtlc0NhbGxzKCkgY29uc3QKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKK1B1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6c2xvd1Zl
cnNpb24oKSBjb25zdAoreworICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKG1ha2VzQ2FsbHMoKSA/
IE1ha2VzQ2FsbHMgOiBUYWtlc1Nsb3dQYXRoKTsKK30KKwordm9pZCBQdXRCeUlkU3RhdHVzOjpt
YXJrSWZDaGVhcChTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBmb3IgKFB1dEJ5SWRWYXJp
YW50JiB2YXJpYW50IDogbV92YXJpYW50cykKKyAgICAgICAgdmFyaWFudC5tYXJrSWZDaGVhcCh2
aXNpdG9yKTsKK30KKworYm9vbCBQdXRCeUlkU3RhdHVzOjpmaW5hbGl6ZSgpCit7CisgICAgZm9y
IChQdXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IG1fdmFyaWFudHMpIHsKKyAgICAgICAgaWYgKCF2
YXJpYW50LmZpbmFsaXplKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIFB1dEJ5SWRTdGF0dXM6OmZpbHRlcihjb25zdCBTdHJ1
Y3R1cmVTZXQmIHNldCkKK3sKKyAgICBpZiAobV9zdGF0ZSAhPSBTaW1wbGUpCisgICAgICAgIHJl
dHVybjsKKyAgICBmaWx0ZXJJQ1N0YXR1c1ZhcmlhbnRzKG1fdmFyaWFudHMsIHNldCk7CisgICAg
aWYgKG1fdmFyaWFudHMuaXNFbXB0eSgpKQorICAgICAgICBtX3N0YXRlID0gTm9JbmZvcm1hdGlv
bjsKK30KKwogdm9pZCBQdXRCeUlkU3RhdHVzOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0
CiB7CiAgICAgc3dpdGNoIChtX3N0YXRlKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJKHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDggQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2FsbExpbmtTdGF0
dXMuaCIKKyNpbmNsdWRlICJFeGl0RmxhZy5oIgorI2luY2x1ZGUgIklDU3RhdHVzTWFwLmgiCiAj
aW5jbHVkZSAiUHV0QnlJZFZhcmlhbnQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC02OSwxMCAr
NzEsMTAgQEAgcHVibGljOgogICAgICAgICBtX3ZhcmlhbnRzLmFwcGVuZCh2YXJpYW50KTsKICAg
ICB9CiAgICAgCi0gICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sq
LCBTdHViSW5mb01hcCYsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIFVuaXF1ZWRTdHJpbmdJbXBs
KiB1aWQpOworICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwg
SUNTdGF0dXNNYXAmLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBVbmlxdWVkU3RyaW5nSW1wbCog
dWlkLCBFeGl0RmxhZywgQ2FsbExpbmtTdGF0dXM6OkV4aXRTaXRlRGF0YSk7CiAgICAgc3RhdGlj
IFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZvcihKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cnVjdHVy
ZVNldCYsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIGJvb2wgaXNEaXJlY3QpOwogICAgIAotICAg
IHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2Nr
LCBDb2RlQmxvY2sqIGRmZ0Jsb2NrLCBTdHViSW5mb01hcCYgYmFzZWxpbmVNYXAsIFN0dWJJbmZv
TWFwJiBkZmdNYXAsIENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOworICAgIHN0
YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBJ
Q1N0YXR1c01hcCYgYmFzZWxpbmVNYXAsIElDU3RhdHVzQ29udGV4dFN0YWNrJiBjb250ZXh0U3Rh
Y2ssIENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwogCiAjaWYgRU5BQkxFKEpJ
VCkKICAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRm9yU3R1YkluZm8oY29uc3QgQ29u
Y3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKiBiYXNlbGluZUJsb2NrLCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIENvZGVPcmlnaW4sIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpOwpAQCAtODUsMTcgKzg3
LDIyIEBAIHB1YmxpYzoKICAgICBib29sIGlzU2ltcGxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZSA9PSBTaW1wbGU7IH0KICAgICBib29sIHRha2VzU2xvd1BhdGgoKSBjb25zdCB7IHJldHVybiBt
X3N0YXRlID09IFRha2VzU2xvd1BhdGggfHwgbV9zdGF0ZSA9PSBNYWtlc0NhbGxzOyB9CiAgICAg
Ym9vbCBtYWtlc0NhbGxzKCkgY29uc3Q7CisgICAgUHV0QnlJZFN0YXR1cyBzbG93VmVyc2lvbigp
IGNvbnN0OwogICAgIAogICAgIHNpemVfdCBudW1WYXJpYW50cygpIGNvbnN0IHsgcmV0dXJuIG1f
dmFyaWFudHMuc2l6ZSgpOyB9CiAgICAgY29uc3QgVmVjdG9yPFB1dEJ5SWRWYXJpYW50LCAxPiYg
dmFyaWFudHMoKSBjb25zdCB7IHJldHVybiBtX3ZhcmlhbnRzOyB9CiAgICAgY29uc3QgUHV0QnlJ
ZFZhcmlhbnQmIGF0KHNpemVfdCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV92YXJpYW50c1tpbmRl
eF07IH0KICAgICBjb25zdCBQdXRCeUlkVmFyaWFudCYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgp
IGNvbnN0IHsgcmV0dXJuIGF0KGluZGV4KTsgfQogICAgIAorICAgIHZvaWQgbWFya0lmQ2hlYXAo
U2xvdFZpc2l0b3ImKTsKKyAgICBib29sIGZpbmFsaXplKCk7CisgICAgdm9pZCBmaWx0ZXIoY29u
c3QgU3RydWN0dXJlU2V0Jik7CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29u
c3Q7CiAgICAgCiBwcml2YXRlOgogI2lmIEVOQUJMRShERkdfSklUKQotICAgIHN0YXRpYyBib29s
IGhhc0V4aXRTaXRlKENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOworICAgIHN0
YXRpYyBFeGl0RmxhZyBoYXNFeGl0U2l0ZShDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUlu
ZGV4KTsKICNlbmRpZgogI2lmIEVOQUJMRShKSVQpCiAgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMg
Y29tcHV0ZUZvclN0dWJJbmZvKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1B1dEJ5SWRWYXJpYW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFZhcmlhbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTIwNiw2ICsyMDYsMjYgQEAgYm9vbCBQdXRCeUlkVmFyaWFudDo6YXR0ZW1wdFRvTWVy
Z2VUcmFucwogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIFB1dEJ5SWRWYXJpYW50OjptYXJr
SWZDaGVhcChTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBtX29sZFN0cnVjdHVyZS5tYXJr
SWZDaGVhcCh2aXNpdG9yKTsKKyAgICBpZiAobV9uZXdTdHJ1Y3R1cmUpCisgICAgICAgIG1fbmV3
U3RydWN0dXJlLT5tYXJrSWZDaGVhcCh2aXNpdG9yKTsKK30KKworYm9vbCBQdXRCeUlkVmFyaWFu
dDo6ZmluYWxpemUoKQoreworICAgIGlmICghbV9vbGRTdHJ1Y3R1cmUuaXNTdGlsbEFsaXZlKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAobV9uZXdTdHJ1Y3R1cmUgJiYgIUhlYXA6
OmlzTWFya2VkKG1fbmV3U3RydWN0dXJlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlm
ICghbV9jb25kaXRpb25TZXQuYXJlU3RpbGxMaXZlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBpZiAobV9jYWxsTGlua1N0YXR1cyAmJiAhbV9jYWxsTGlua1N0YXR1cy0+ZmluYWxpemUo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIFB1
dEJ5SWRWYXJpYW50OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAgICAgZHVtcElu
Q29udGV4dChvdXQsIDApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1
dEJ5SWRWYXJpYW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1B1dEJ5SWRWYXJpYW50LmgJKHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTcz
LDE3ICs3MywxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX29sZFN0cnVjdHVyZTsKICAg
ICB9CiAgICAgCi0gICAgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHN0cnVjdHVyZSgpOwotICAgIH0KLSAgICAKICAgICBjb25z
dCBTdHJ1Y3R1cmVTZXQmIG9sZFN0cnVjdHVyZSgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NF
UlQoa2luZCgpID09IFRyYW5zaXRpb24gfHwga2luZCgpID09IFJlcGxhY2UgfHwga2luZCgpID09
IFNldHRlcik7CiAgICAgICAgIHJldHVybiBtX29sZFN0cnVjdHVyZTsKICAgICB9CiAgICAgCisg
ICAgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG9sZFN0cnVjdHVyZSgpOworICAgIH0KKyAgICAKICAgICBTdHJ1Y3R1cmVTZXQm
IG9sZFN0cnVjdHVyZSgpCiAgICAgewogICAgICAgICBBU1NFUlQoa2luZCgpID09IFRyYW5zaXRp
b24gfHwga2luZCgpID09IFJlcGxhY2UgfHwga2luZCgpID09IFNldHRlcik7CkBAIC0xMjksNiAr
MTI5LDkgQEAgcHVibGljOgogCiAgICAgYm9vbCBhdHRlbXB0VG9NZXJnZShjb25zdCBQdXRCeUlk
VmFyaWFudCYgb3RoZXIpOwogICAgIAorICAgIHZvaWQgbWFya0lmQ2hlYXAoU2xvdFZpc2l0b3Im
KTsKKyAgICBib29sIGZpbmFsaXplKCk7CisgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFt
JikgY29uc3Q7CiAgICAgdm9pZCBkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiwgRHVtcENvbnRl
eHQqKSBjb25zdDsKIApAQCAtMTM3LDcgKzE0MCw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgS2lu
ZCBtX2tpbmQ7CiAgICAgU3RydWN0dXJlU2V0IG1fb2xkU3RydWN0dXJlOwotICAgIFN0cnVjdHVy
ZSogbV9uZXdTdHJ1Y3R1cmU7CisgICAgU3RydWN0dXJlKiBtX25ld1N0cnVjdHVyZSB7IG51bGxw
dHIgfTsKICAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvblNldCBtX2NvbmRpdGlvblNldDsKICAg
ICBQcm9wZXJ0eU9mZnNldCBtX29mZnNldDsKICAgICBJbmZlcnJlZFR5cGU6OkRlc2NyaXB0b3Ig
bV9yZXF1aXJlZFR5cGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVj
b3JkZWRTdGF0dXNlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDEyMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVjb3JkZWRTdGF0dXNlcy5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworUmVjb3JkZWRTdGF0dXNlcyYgUmVjb3JkZWRTdGF0dXNl
czo6b3BlcmF0b3I9KFJlY29yZGVkU3RhdHVzZXMmJiBvdGhlcikKK3sKKyAgICBjYWxscyA9IFdU
Rk1vdmUob3RoZXIuY2FsbHMpOworICAgIGdldHMgPSBXVEZNb3ZlKG90aGVyLmdldHMpOworICAg
IHB1dHMgPSBXVEZNb3ZlKG90aGVyLnB1dHMpOworICAgIGlucyA9IFdURk1vdmUob3RoZXIuaW5z
KTsKKyAgICBzaHJpbmtUb0ZpdCgpOworICAgIHJldHVybiAqdGhpczsKK30KKworUmVjb3JkZWRT
dGF0dXNlczo6UmVjb3JkZWRTdGF0dXNlcyhSZWNvcmRlZFN0YXR1c2VzJiYgb3RoZXIpCit7Cisg
ICAgKnRoaXMgPSBXVEZNb3ZlKG90aGVyKTsKK30KKworQ2FsbExpbmtTdGF0dXMqIFJlY29yZGVk
U3RhdHVzZXM6OmFkZENhbGxMaW5rU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4s
IGNvbnN0IENhbGxMaW5rU3RhdHVzJiBzdGF0dXMpCit7CisgICAgYXV0byBzdGF0dXNQdHIgPSBz
dGQ6Om1ha2VfdW5pcXVlPENhbGxMaW5rU3RhdHVzPihzdGF0dXMpOworICAgIENhbGxMaW5rU3Rh
dHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7CisgICAgY2FsbHMuYXBwZW5kKHN0ZDo6bWFr
ZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3RhdHVzUHRyKSkpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK0dldEJ5SWRTdGF0dXMqIFJlY29yZGVkU3RhdHVzZXM6OmFkZEdldEJ5SWRTdGF0
dXMoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbiwgY29uc3QgR2V0QnlJZFN0YXR1cyYgc3Rh
dHVzKQoreworICAgIGF1dG8gc3RhdHVzUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxHZXRCeUlkU3Rh
dHVzPihzdGF0dXMpOworICAgIEdldEJ5SWRTdGF0dXMqIHJlc3VsdCA9IHN0YXR1c1B0ci5nZXQo
KTsKKyAgICBnZXRzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihjb2RlT3JpZ2luLCBXVEZNb3ZlKHN0
YXR1c1B0cikpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorICAgIAorUHV0QnlJZFN0YXR1cyog
UmVjb3JkZWRTdGF0dXNlczo6YWRkUHV0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiBjb2Rl
T3JpZ2luLCBjb25zdCBQdXRCeUlkU3RhdHVzJiBzdGF0dXMpCit7CisgICAgYXV0byBzdGF0dXNQ
dHIgPSBzdGQ6Om1ha2VfdW5pcXVlPFB1dEJ5SWRTdGF0dXM+KHN0YXR1cyk7CisgICAgUHV0QnlJ
ZFN0YXR1cyogcmVzdWx0ID0gc3RhdHVzUHRyLmdldCgpOworICAgIHB1dHMuYXBwZW5kKHN0ZDo6
bWFrZV9wYWlyKGNvZGVPcmlnaW4sIFdURk1vdmUoc3RhdHVzUHRyKSkpOworICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK0luQnlJZFN0YXR1cyogUmVjb3JkZWRTdGF0dXNlczo6YWRkSW5CeUlkU3Rh
dHVzKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4sIGNvbnN0IEluQnlJZFN0YXR1cyYgc3Rh
dHVzKQoreworICAgIGF1dG8gc3RhdHVzUHRyID0gc3RkOjptYWtlX3VuaXF1ZTxJbkJ5SWRTdGF0
dXM+KHN0YXR1cyk7CisgICAgSW5CeUlkU3RhdHVzKiByZXN1bHQgPSBzdGF0dXNQdHIuZ2V0KCk7
CisgICAgaW5zLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihjb2RlT3JpZ2luLCBXVEZNb3ZlKHN0YXR1
c1B0cikpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIFJlY29yZGVkU3RhdHVzZXM6
Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiBzbG90VmlzaXRvcikKK3sKKyAgICBmb3IgKGF1dG8m
IHBhaXIgOiBnZXRzKQorICAgICAgICBwYWlyLnNlY29uZC0+bWFya0lmQ2hlYXAoc2xvdFZpc2l0
b3IpOworICAgIGZvciAoYXV0byYgcGFpciA6IHB1dHMpCisgICAgICAgIHBhaXIuc2Vjb25kLT5t
YXJrSWZDaGVhcChzbG90VmlzaXRvcik7CisgICAgZm9yIChhdXRvJiBwYWlyIDogaW5zKQorICAg
ICAgICBwYWlyLnNlY29uZC0+bWFya0lmQ2hlYXAoc2xvdFZpc2l0b3IpOworfQorCit2b2lkIFJl
Y29yZGVkU3RhdHVzZXM6OmZpbmFsaXplV2l0aG91dERlbGV0aW5nKCkKK3sKKyAgICAvLyBUaGlz
IHZhcmlhbnQgb2YgZmluYWxpemUgZ2V0cyBjYWxsZWQgZnJvbSB3aXRoaW4gZ3JhcGggc2FmZXBv
aW50cyAtLSBzbyB0aGVyZSBtYXkgYmUgREZHIElSIGluCisgICAgLy8gc29tZSBjb21waWxlciB0
aHJlYWQgdGhhdCBwb2ludHMgdG8gdGhlIHN0YXR1c2VzLiBUaGF0IHRocmVhZCBpcyBzdG9wcGVk
IGF0IGEgc2FmZXBvaW50IHNvCisgICAgLy8gaXQncyBPSyB0byBlZGl0IGl0cyBkYXRhIHN0cnVj
dHVyZSwgYnV0IGl0J3Mgbm90IE9LIHRvIGRlbGV0ZSB0aGVtLiBIZW5jZSB3ZSBkb24ndCByZW1v
dmUKKyAgICAvLyBhbnl0aGluZyBmcm9tIHRoZSB2ZWN0b3Igb3IgZGVsZXRlIHRoZSB1bmlxdWVf
cHRycy4KKyAgICAKKyAgICBhdXRvIGZpbmFsaXplID0gW10gKGF1dG8mIHZlY3RvcikgeworICAg
ICAgICBmb3IgKGF1dG8mIHBhaXIgOiB2ZWN0b3IpIHsKKyAgICAgICAgICAgIGlmICghcGFpci5z
ZWNvbmQtPmZpbmFsaXplKCkpCisgICAgICAgICAgICAgICAgKnBhaXIuc2Vjb25kID0geyB9Owor
ICAgICAgICB9CisgICAgfTsKKyAgICBmb3JFYWNoVmVjdG9yKGZpbmFsaXplKTsKK30KKwordm9p
ZCBSZWNvcmRlZFN0YXR1c2VzOjpmaW5hbGl6ZSgpCit7CisgICAgYXV0byBmaW5hbGl6ZSA9IFtd
IChhdXRvJiB2ZWN0b3IpIHsKKyAgICAgICAgdmVjdG9yLnJlbW92ZUFsbE1hdGNoaW5nKAorICAg
ICAgICAgICAgWyZdIChhdXRvJiBwYWlyKSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gISpwYWlyLnNlY29uZCB8fCAhcGFpci5zZWNvbmQtPmZpbmFsaXplKCk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgdmVjdG9yLnNocmlua1RvRml0KCk7CisgICAgfTsKKyAgICBmb3JFYWNo
VmVjdG9yKGZpbmFsaXplKTsKK30KKwordm9pZCBSZWNvcmRlZFN0YXR1c2VzOjpzaHJpbmtUb0Zp
dCgpCit7CisgICAgZm9yRWFjaFZlY3RvcihbXSAoYXV0byYgdmVjdG9yKSB7IHZlY3Rvci5zaHJp
bmtUb0ZpdCgpOyB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZWNvcmRlZFN0YXR1c2VzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1JlY29yZGVkU3RhdHVzZXMuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVjb3JkZWRTdGF0dXNl
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDYWxs
TGlua1N0YXR1cy5oIgorI2luY2x1ZGUgIkdldEJ5SWRTdGF0dXMuaCIKKyNpbmNsdWRlICJJbkJ5
SWRTdGF0dXMuaCIKKyNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitzdHJ1Y3QgUmVjb3JkZWRTdGF0dXNlcyB7CisgICAgUmVjb3JkZWRTdGF0dXNlcygpIHsg
fQorICAgIAorICAgIFJlY29yZGVkU3RhdHVzZXMmIG9wZXJhdG9yPShjb25zdCBSZWNvcmRlZFN0
YXR1c2VzJiBvdGhlcikgPSBkZWxldGU7CisgICAgCisgICAgUmVjb3JkZWRTdGF0dXNlcyYgb3Bl
cmF0b3I9KFJlY29yZGVkU3RhdHVzZXMmJiBvdGhlcik7CisgICAgCisgICAgUmVjb3JkZWRTdGF0
dXNlcyhjb25zdCBSZWNvcmRlZFN0YXR1c2VzJiBvdGhlcikgPSBkZWxldGU7CisgICAgCisgICAg
UmVjb3JkZWRTdGF0dXNlcyhSZWNvcmRlZFN0YXR1c2VzJiYgb3RoZXIpOworICAgIAorICAgIENh
bGxMaW5rU3RhdHVzKiBhZGRDYWxsTGlua1N0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29uc3Qg
Q2FsbExpbmtTdGF0dXMmKTsKKyAgICBHZXRCeUlkU3RhdHVzKiBhZGRHZXRCeUlkU3RhdHVzKGNv
bnN0IENvZGVPcmlnaW4mLCBjb25zdCBHZXRCeUlkU3RhdHVzJik7CisgICAgUHV0QnlJZFN0YXR1
cyogYWRkUHV0QnlJZFN0YXR1cyhjb25zdCBDb2RlT3JpZ2luJiwgY29uc3QgUHV0QnlJZFN0YXR1
cyYpOworICAgIEluQnlJZFN0YXR1cyogYWRkSW5CeUlkU3RhdHVzKGNvbnN0IENvZGVPcmlnaW4m
LCBjb25zdCBJbkJ5SWRTdGF0dXMmKTsKKyAgICAKKyAgICB2b2lkIG1hcmtJZkNoZWFwKFNsb3RW
aXNpdG9yJiBzbG90VmlzaXRvcik7CisgICAgCisgICAgdm9pZCBmaW5hbGl6ZVdpdGhvdXREZWxl
dGluZygpOworICAgIHZvaWQgZmluYWxpemUoKTsKKyAgICAKKyAgICB2b2lkIHNocmlua1RvRml0
KCk7CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KKyAgICB2b2lkIGZvckVhY2hW
ZWN0b3IoY29uc3QgRnVuYyYgZnVuYykKKyAgICB7CisgICAgICAgIGZ1bmMoY2FsbHMpOworICAg
ICAgICBmdW5jKGdldHMpOworICAgICAgICBmdW5jKHB1dHMpOworICAgICAgICBmdW5jKGlucyk7
CisgICAgfQorICAgIAorICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29kZU9yaWdpbiwgc3RkOjp1bmlx
dWVfcHRyPENhbGxMaW5rU3RhdHVzPj4+IGNhbGxzOworICAgIFZlY3RvcjxzdGQ6OnBhaXI8Q29k
ZU9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPEdldEJ5SWRTdGF0dXM+Pj4gZ2V0czsKKyAgICBWZWN0
b3I8c3RkOjpwYWlyPENvZGVPcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxQdXRCeUlkU3RhdHVzPj4+
IHB1dHM7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxDb2RlT3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8
SW5CeUlkU3RhdHVzPj4+IGluczsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmNwcAkocmV2
aXNpb24gMjMyNDQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNiArMzEsMjEgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKK3ZvaWQgU3RydWN0dXJlU2V0OjptYXJrSWZDaGVhcChTbG90VmlzaXRvciYgdmlz
aXRvcikgY29uc3QKK3sKKyAgICBmb3IgKFN0cnVjdHVyZSogc3RydWN0dXJlIDogKnRoaXMpCisg
ICAgICAgIHN0cnVjdHVyZS0+bWFya0lmQ2hlYXAodmlzaXRvcik7Cit9CisKK2Jvb2wgU3RydWN0
dXJlU2V0Ojppc1N0aWxsQWxpdmUoKSBjb25zdAoreworICAgIGZvciAoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgOiAqdGhpcykgeworICAgICAgICBpZiAoIUhlYXA6OmlzTWFya2VkKHN0cnVjdHVyZSkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQor
CiB2b2lkIFN0cnVjdHVyZVNldDo6ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1w
Q29udGV4dCogY29udGV4dCkgY29uc3QKIHsKICAgICBDb21tYVByaW50ZXIgY29tbWE7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU2V0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5oCShyZXZp
c2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJl
U2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDExLCAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01OCw2ICs1OCw5IEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgICAgIHJldHVybiBvbmx5RW50cnkoKTsKICAgICB9CisKKyAgICB2b2lkIG1hcmtJ
ZkNoZWFwKFNsb3RWaXNpdG9yJikgY29uc3Q7CisgICAgYm9vbCBpc1N0aWxsQWxpdmUoKSBjb25z
dDsKICAgICAKICAgICB2b2lkIGR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mLCBEdW1wQ29udGV4
dCopIGNvbnN0OwogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Rlcm1pbmF0ZWRDb2RlT3JpZ2luLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Rlcm1pbmF0ZWRDb2RlT3Jp
Z2luLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Rl
cm1pbmF0ZWRDb2RlT3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBJ
bmxpbmVDYWxsRnJhbWU7CisKK3N0cnVjdCBUZXJtaW5hdGVkQ29kZU9yaWdpbiB7CisgICAgVGVy
bWluYXRlZENvZGVPcmlnaW4oKSB7IH0KKyAgICAKKyAgICBUZXJtaW5hdGVkQ29kZU9yaWdpbihj
b25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luLCBJbmxpbmVDYWxsRnJhbWUqIHRlcm1pbmFsKQor
ICAgICAgICA6IGNvZGVPcmlnaW4oY29kZU9yaWdpbikKKyAgICAgICAgLCB0ZXJtaW5hbCh0ZXJt
aW5hbCkKKyAgICB7CisgICAgfQorICAgIAorICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbjsKKyAg
ICBJbmxpbmVDYWxsRnJhbWUqIHRlcm1pbmFsIHsgbnVsbHB0ciB9OworfTsKKworc3RydWN0IFRl
cm1pbmF0ZWRDb2RlT3JpZ2luSGFzaFRyYW5zbGF0b3IgeworICAgIHN0YXRpYyB1bnNpZ25lZCBo
YXNoKGNvbnN0IFRlcm1pbmF0ZWRDb2RlT3JpZ2luJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiB2YWx1ZS5jb2RlT3JpZ2luLmFwcHJveGltYXRlSGFzaCh2YWx1ZS50ZXJtaW5hbCk7Cisg
ICAgfQorICAgIAorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IENvZGVPcmlnaW4mIGEsIGNv
bnN0IFRlcm1pbmF0ZWRDb2RlT3JpZ2luJiBiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGIuY29k
ZU9yaWdpbi5pc0FwcHJveGltYXRlbHlFcXVhbFRvKGEsIGIudGVybWluYWwpOworICAgIH0KK307
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvV2F0Y2hwb2ludC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1dhdGNocG9pbnQuY3BwCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIw
MywzICsyMDMsMjMgQEAgdm9pZCBEZWZlcnJlZFdhdGNocG9pbnRGaXJlOjp0YWtlV2F0Y2hwbwog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKIAorbmFtZXNwYWNlIFdURiB7CisKK3ZvaWQgcHJpbnRJbnRl
cm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OldhdGNocG9pbnRTdGF0ZSBzdGF0ZSkKK3sKKyAg
ICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgY2FzZSBKU0M6OkNsZWFyV2F0Y2hwb2ludDoKKyAgICAg
ICAgb3V0LnByaW50KCJDbGVhcldhdGNocG9pbnQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgSlNDOjpJc1dhdGNoZWQ6CisgICAgICAgIG91dC5wcmludCgiSXNXYXRjaGVkIik7CisgICAg
ICAgIHJldHVybjsKKyAgICBjYXNlIEpTQzo6SXNJbnZhbGlkYXRlZDoKKyAgICAgICAgb3V0LnBy
aW50KCJJc0ludmFsaWRhdGVkIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuaAkocmV2aXNpb24g
MjMyNDQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNDQ4LDMgKzQ0OCwxMCBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBXVEYgeworCit2b2lkIHByaW50SW50ZXJuYWwoUHJp
bnRTdHJlYW0mIG91dCwgSlNDOjpXYXRjaHBvaW50U3RhdGUpOworCit9IC8vIG5hbWVzcGFjZSBX
VEYKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEludGVycHJldGVyLmgJKHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsNiAr
MjEyLDggQEAgcHVibGljOgogICAgIAogICAgIFBoaUNoaWxkcmVuKiBwaGlDaGlsZHJlbigpIHsg
cmV0dXJuIG1fcGhpQ2hpbGRyZW4uZ2V0KCk7IH0KICAgICAKKyAgICB2b2lkIGZpbHRlcklDU3Rh
dHVzKE5vZGUqKTsKKyAgICAKIHByaXZhdGU6CiAgICAgdm9pZCBjbG9iYmVyV29ybGQoKTsKICAg
ICB2b2lkIGRpZEZvbGRDbG9iYmVyV29ybGQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJl
dmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzUwOSw2ICszNTA5LDEwIEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICBjYXNlIExvb3BI
aW50OgogICAgIGNhc2UgWm9tYmllSGludDoKICAgICBjYXNlIEV4aXRPSzoKKyAgICBjYXNlIEZp
bHRlckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICBj
YXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CiAg
ICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDaGVja1R5cGVJbmZvRmxhZ3M6IHsKQEAgLTM2Mjks
NiArMzYzMyw0MiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFic3RyYWN0U3RhdGVUeXBlPgordm9pZCBBYnN0cmFjdElu
dGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZmlsdGVySUNTdGF0dXMoTm9kZSogbm9kZSkK
K3sKKyAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKKyAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3Rh
dHVzOgorICAgICAgICBpZiAoSlNWYWx1ZSB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkp
Lm1fdmFsdWUpCisgICAgICAgICAgICBub2RlLT5jYWxsTGlua1N0YXR1cygpLT5maWx0ZXIobV92
bSwgdmFsdWUpOworICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgY2FzZSBGaWx0ZXJHZXRC
eUlkU3RhdHVzOiB7CisgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc0Zpbml0ZSgpKQor
ICAgICAgICAgICAgbm9kZS0+Z2V0QnlJZFN0YXR1cygpLT5maWx0ZXIodmFsdWUubV9zdHJ1Y3R1
cmUudG9TdHJ1Y3R1cmVTZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgCisg
ICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6IHsKKyAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFs
dWUgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgaWYgKHZhbHVlLm1fc3RydWN0
dXJlLmlzRmluaXRlKCkpCisgICAgICAgICAgICBub2RlLT5pbkJ5SWRTdGF0dXMoKS0+ZmlsdGVy
KHZhbHVlLm1fc3RydWN0dXJlLnRvU3RydWN0dXJlU2V0KCkpOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgICAgIAorICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czogeworICAgICAgICBB
YnN0cmFjdFZhbHVlJiB2YWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBp
ZiAodmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkKKyAgICAgICAgICAgIG5vZGUtPnB1dEJ5
SWRTdGF0dXMoKS0+ZmlsdGVyKHZhbHVlLm1fc3RydWN0dXJlLnRvU3RydWN0dXJlU2V0KCkpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIEFic3RyYWN0U3RhdGVUeXBlPgogYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgaW5kZXhJbkJsb2NrKQog
ewogICAgIHJldHVybiBleGVjdXRlRWZmZWN0cyhpbmRleEluQmxvY2ssIG1fc3RhdGUuYmxvY2so
KS0+YXQoaW5kZXhJbkJsb2NrKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMjMyNDQxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwODAsOSArMTA4MCw4IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIGNvZGUgYmxvY2sgaGFkIGdh
dGhlcmVkLgogICAgICAgICBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNlciBtX2xhenlPcGVy
YW5kczsKICAgICAgICAgCi0gICAgICAgIENhbGxMaW5rSW5mb01hcCBtX2NhbGxMaW5rSW5mb3M7
Ci0gICAgICAgIFN0dWJJbmZvTWFwIG1fc3R1YkluZm9zOwotICAgICAgICBCeVZhbEluZm9NYXAg
bV9ieVZhbEluZm9zOworICAgICAgICBJQ1N0YXR1c01hcCBtX2Jhc2VsaW5lTWFwOworICAgICAg
ICBJQ1N0YXR1c0NvbnRleHQgbV9vcHRpbWl6ZWRDb250ZXh0OwogICAgICAgICAKICAgICAgICAg
Ly8gUG9pbnRlcnMgdG8gdGhlIGFyZ3VtZW50IHBvc2l0aW9uIHRyYWNrZXJzIGZvciB0aGlzIHNs
aWNlIG9mIGNvZGUuCiAgICAgICAgIFZlY3RvcjxBcmd1bWVudFBvc2l0aW9uKj4gbV9hcmd1bWVu
dFBvc2l0aW9uczsKQEAgLTExMDAsMTAgKzEwOTksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
SW5saW5lQ2FsbEZyYW1lOjpLaW5kLAogICAgICAgICAgICAgQmFzaWNCbG9jayogY29udGludWF0
aW9uQmxvY2spOwogICAgICAgICAKLSAgICAgICAgfklubGluZVN0YWNrRW50cnkoKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBtX2J5dGVDb2RlUGFyc2VyLT5tX2lubGluZVN0YWNrVG9wID0gbV9j
YWxsZXI7Ci0gICAgICAgIH0KKyAgICAgICAgfklubGluZVN0YWNrRW50cnkoKTsKICAgICAgICAg
CiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZW1hcE9wZXJhbmQoVmlydHVhbFJlZ2lzdGVyIG9w
ZXJhbmQpIGNvbnN0CiAgICAgICAgIHsKQEAgLTExMTgsNiArMTExNCw4IEBAIHByaXZhdGU6CiAg
ICAgCiAgICAgSW5saW5lU3RhY2tFbnRyeSogbV9pbmxpbmVTdGFja1RvcDsKICAgICAKKyAgICBJ
Q1N0YXR1c0NvbnRleHRTdGFjayBtX2ljQ29udGV4dFN0YWNrOworICAgIAogICAgIHN0cnVjdCBE
ZWxheWVkU2V0TG9jYWwgewogICAgICAgICBDb2RlT3JpZ2luIG1fb3JpZ2luOwogICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgbV9vcGVyYW5kOwpAQCAtMTE0NCwxMCArMTE0Miw2IEBAIHByaXZhdGU6
CiAgICAgCiAgICAgVmVjdG9yPERlbGF5ZWRTZXRMb2NhbCwgMj4gbV9zZXRMb2NhbFF1ZXVlOwog
Ci0gICAgQ29kZUJsb2NrKiBtX2RmZ0NvZGVCbG9jazsKLSAgICBDYWxsTGlua1N0YXR1czo6Q29u
dGV4dE1hcCBtX2NhbGxDb250ZXh0TWFwOwotICAgIFN0dWJJbmZvTWFwIG1fZGZnU3R1YkluZm9z
OwotICAgIAogICAgIEluc3RydWN0aW9uKiBtX2N1cnJlbnRJbnN0cnVjdGlvbjsKICAgICBib29s
IG1faGFzRGVidWdnZXJFbmFibGVkOwogfTsKQEAgLTEyMTIsNyArMTIwNiw3IEBAIEJ5dGVDb2Rl
UGFyc2VyOjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnMKIAogICAgIENhbGxMaW5rU3RhdHVzIGNh
bGxMaW5rU3RhdHVzID0gQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgICAgIG1faW5s
aW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgY3VycmVudENvZGVPcmlnaW4oKSwKLSAgICAg
ICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsTGlua0luZm9zLCBtX2NhbGxDb250ZXh0TWFwKTsK
KyAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwgbV9pY0NvbnRleHRTdGFj
ayk7CiAKICAgICBJbmxpbmVDYWxsRnJhbWU6OktpbmQga2luZCA9IElubGluZUNhbGxGcmFtZTo6
a2luZEZvcihjYWxsTW9kZSk7CiAKQEAgLTEyNDAsNiArMTIzNCw4IEBAIEJ5dGVDb2RlUGFyc2Vy
OjpUZXJtaW5hbGl0eSBCeXRlQ29kZVBhcnMKICAgICAvLyBJZiB3ZSBoYXZlIHByb2ZpbGluZyBp
bmZvcm1hdGlvbiBhYm91dCB0aGlzIGNhbGwsIGFuZCBpdCBkaWQgbm90IGJlaGF2ZSB0b28gcG9s
eW1vcnBoaWNhbGx5LAogICAgIC8vIHdlIG1heSBiZSBhYmxlIHRvIGlubGluZSBpdCwgb3IgaW4g
dGhlIGNhc2Ugb2YgcmVjdXJzaXZlIHRhaWwgY2FsbHMgdHVybiBpdCBpbnRvIGEganVtcC4KICAg
ICBpZiAoY2FsbExpbmtTdGF0dXMuY2FuT3B0aW1pemUoKSkgeworICAgICAgICBhZGRUb0dyYXBo
KEZpbHRlckNhbGxMaW5rU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0
dXNlcy5hZGRDYWxsTGlua1N0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBjYWxsTGlua1N0YXR1
cykpLCBjYWxsVGFyZ2V0KTsKKyAgICAgICAgCiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciB0aGlz
QXJndW1lbnQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgwLCByZWdpc3Rlck9mZnNldCk7
CiAgICAgICAgIGF1dG8gb3B0aW1pemF0aW9uUmVzdWx0ID0gaGFuZGxlSW5saW5pbmcoY2FsbFRh
cmdldCwgcmVzdWx0LCBjYWxsTGlua1N0YXR1cywgcmVnaXN0ZXJPZmZzZXQsIHRoaXNBcmd1bWVu
dCwKICAgICAgICAgICAgIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBtX2N1cnJlbnRJbmRl
eCArIGluc3RydWN0aW9uU2l6ZSwgb3AsIGtpbmQsIHByZWRpY3Rpb24pOwpAQCAtMTI3NywxMiAr
MTI3MywxNCBAQCBCeXRlQ29kZVBhcnNlcjo6VGVybWluYWxpdHkgQnl0ZUNvZGVQYXJzCiAgICAg
CiAgICAgQ2FsbExpbmtTdGF0dXMgY2FsbExpbmtTdGF0dXMgPSBDYWxsTGlua1N0YXR1czo6Y29t
cHV0ZUZvcigKICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBjdXJy
ZW50Q29kZU9yaWdpbigpLAotICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2NhbGxMaW5rSW5m
b3MsIG1fY2FsbENvbnRleHRNYXApOworICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2Jhc2Vs
aW5lTWFwLCBtX2ljQ29udGV4dFN0YWNrKTsKICAgICByZWZpbmVTdGF0aWNhbGx5KGNhbGxMaW5r
U3RhdHVzLCBjYWxsVGFyZ2V0KTsKICAgICAKICAgICBWRVJCT1NFX0xPRygiICAgIFZhcmFyZ3Mg
Y2FsbCBsaW5rIHN0YXR1cyBhdCAiLCBjdXJyZW50Q29kZU9yaWdpbigpLCAiOiAiLCBjYWxsTGlu
a1N0YXR1cywgIlxuIik7CiAgICAgCiAgICAgaWYgKGNhbGxMaW5rU3RhdHVzLmNhbk9wdGltaXpl
KCkpIHsKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0ZXJDYWxsTGlua1N0YXR1cywgT3BJbmZvKG1f
Z3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkQ2FsbExpbmtTdGF0dXMoY3VycmVudENv
ZGVPcmlnaW4oKSwgY2FsbExpbmtTdGF0dXMpKSwgY2FsbFRhcmdldCk7CisgICAgICAgIAogICAg
ICAgICBpZiAoaGFuZGxlVmFyYXJnc0lubGluaW5nKGNhbGxUYXJnZXQsIHJlc3VsdCwKICAgICAg
ICAgICAgIGNhbGxMaW5rU3RhdHVzLCBmaXJzdEZyZWVSZWcsIFZpcnR1YWxSZWdpc3Rlcih0aGlz
UmVnKSwgVmlydHVhbFJlZ2lzdGVyKGFyZ3VtZW50cyksCiAgICAgICAgICAgICBmaXJzdFZhckFy
Z09mZnNldCwgb3AsCkBAIC0zMzE2LDkgKzMzMTQsMTIgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlRE9NSklUR2V0dGVyKAogICAgIGlmICghY2hlY2sodmFyaWFudC5jb25kaXRpb25TZXQo
KSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBhZGRUb0dyYXBoKENoZWNrU3RydWN0dXJl
LCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQodmFyaWFudC5zdHJ1Y3R1cmVTZXQoKSkp
LCB0aGlzTm9kZSk7Ci0KKyAgICAKICAgICAvLyBXZSBkbyBub3QgbmVlZCB0byBlbWl0IENoZWNr
Q2VsbCB0aGluZ3kgaGVyZS4gV2hlbiB0aGUgY3VzdG9tIGFjY2Vzc29yIGlzIHJlcGxhY2VkIHRv
IGRpZmZlcmVudCBvbmUsIFN0cnVjdHVyZSB0cmFuc2l0aW9uIG9jY3Vycy4KICAgICBhZGRUb0dy
YXBoKENoZWNrU3ViQ2xhc3MsIE9wSW5mbyhkb21BdHRyaWJ1dGUuY2xhc3NJbmZvKSwgdGhpc05v
ZGUpOworICAgIAorICAgIGJvb2wgd2FzU2VlbkluSklUID0gdHJ1ZTsKKyAgICBhZGRUb0dyYXBo
KEZpbHRlckdldEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1
c2VzLmFkZEdldEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgR2V0QnlJZFN0YXR1cyhH
ZXRCeUlkU3RhdHVzOjpDdXN0b20sIHdhc1NlZW5JbkpJVCwgdmFyaWFudCkpKSwgdGhpc05vZGUp
OwogCiAgICAgQ2FsbERPTUdldHRlckRhdGEqIGNhbGxET01HZXR0ZXJEYXRhID0gbV9ncmFwaC5t
X2NhbGxET01HZXR0ZXJEYXRhLmFkZCgpOwogICAgIGNhbGxET01HZXR0ZXJEYXRhLT5jdXN0b21B
Y2Nlc3NvckdldHRlciA9IHZhcmlhbnQuY3VzdG9tQWNjZXNzb3JHZXR0ZXIoKTsKQEAgLTMzNTAs
NiArMzM1MSw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZU1vZHVsZU5hbWVzcGEKICAg
ICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJl
bnRJbmRleCwgQmFkQ2VsbCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBhZGRUb0dyYXBo
KENoZWNrQ2VsbCwgT3BJbmZvKG1fZ3JhcGguZnJlZXplKGdldEJ5SWQubW9kdWxlTmFtZXNwYWNl
T2JqZWN0KCkpKSwgRWRnZShiYXNlLCBDZWxsVXNlKSk7CisgICAgCisgICAgYWRkVG9HcmFwaChG
aWx0ZXJHZXRCeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNl
cy5hZGRHZXRCeUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIGdldEJ5SWQpKSwgYmFzZSk7
CiAKICAgICAvLyBJZGVhbGx5IHdlIHdvdWxkbid0IGhhdmUgdG8gZG8gdGhpcyBQaGFudG9tLiBC
dXQ6CiAgICAgLy8KQEAgLTQwMDUsMTQgKzQwMDgsMjEgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlR2V0QnlJZCgKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKKyAgICAvLyBGSVhN
RTogSWYgd2UgdXNlIHRoZSBHZXRCeUlkU3RhdHVzIGZvciBhbnl0aGluZyB0aGVuIHdlIHNob3Vs
ZCByZWNvcmQgaXQgYW5kIGluc2VydCBhIG5vZGUKKyAgICAvLyBhZnRlciBldmVyeXRoaW5nIGVs
c2UgKGxpa2UgdGhlIEdldEJ5T2Zmc2V0IG9yIHdoYXRldmVyKSB0aGF0IHdpbGwgZmlsdGVyIHRo
ZSByZWNvcmRlZAorICAgIC8vIEdldEJ5SWRTdGF0dXMuIFRoYXQgbWVhbnMgdGhhdCB0aGUgY29u
c3RhbnQgZm9sZGVyIGFsc28gbmVlZHMgdG8gZG8gdGhlIHNhbWUhCisgICAgCiAgICAgaWYgKGdl
dEJ5SWRTdGF0dXMubnVtVmFyaWFudHMoKSA+IDEpIHsKICAgICAgICAgaWYgKGdldEJ5SWRTdGF0
dXMubWFrZXNDYWxscygpIHx8ICFpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKQotICAgICAgICAg
ICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcoKSkgeworICAgICAg
ICAgICAgfHwgIU9wdGlvbnM6OnVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcoKQorICAgICAg
ICAgICAgfHwgZ2V0QnlJZFN0YXR1cy5udW1WYXJpYW50cygpID4gT3B0aW9uczo6bWF4UG9seW1v
cnBoaWNBY2Nlc3NJbmxpbmluZ0xpc3RTaXplKCkpIHsKICAgICAgICAgICAgIHNldChWaXJ0dWFs
UmVnaXN0ZXIoZGVzdGluYXRpb25PcGVyYW5kKSwKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBo
KGdldEJ5SWQsIE9wSW5mbyhpZGVudGlmaWVyTnVtYmVyKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBi
YXNlKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAg
IGFkZFRvR3JhcGgoRmlsdGVyR2V0QnlJZFN0YXR1cywgT3BJbmZvKG1fZ3JhcGgubV9wbGFuLnJl
Y29yZGVkU3RhdHVzZXMuYWRkR2V0QnlJZFN0YXR1cyhjdXJyZW50Q29kZU9yaWdpbigpLCBnZXRC
eUlkU3RhdHVzKSksIGJhc2UpOworICAgICAgICAKICAgICAgICAgVmVjdG9yPE11bHRpR2V0QnlP
ZmZzZXRDYXNlLCAyPiBjYXNlczsKICAgICAgICAgCiAgICAgICAgIC8vIDEpIEVtaXQgcHJvdG90
eXBlIHN0cnVjdHVyZSBjaGVja3MgZm9yIGFsbCBjaGFpbnMuIFRoaXMgY291bGQgc29ydCBvZiBt
YXliZSBub3QgYmUKQEAgLTQwNTQsMTAgKzQwNjQsMTIgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlR2V0QnlJZCgKICAgICAgICAgICAgIGFkZFRvR3JhcGgoTXVsdGlHZXRCeU9mZnNldCwg
T3BJbmZvKGRhdGEpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KKworICAgIGFkZFRvR3JhcGgoRmlsdGVyR2V0QnlJZFN0YXR1cywgT3BJbmZvKG1f
Z3JhcGgubV9wbGFuLnJlY29yZGVkU3RhdHVzZXMuYWRkR2V0QnlJZFN0YXR1cyhjdXJyZW50Q29k
ZU9yaWdpbigpLCBnZXRCeUlkU3RhdHVzKSksIGJhc2UpOwogICAgIAogICAgIEFTU0VSVChnZXRC
eUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgPT0gMSk7CiAgICAgR2V0QnlJZFZhcmlhbnQgdmFyaWFu
dCA9IGdldEJ5SWRTdGF0dXNbMF07Ci0gICAgICAgICAgICAgICAgCisgICAgCiAgICAgTm9kZSog
bG9hZGVkVmFsdWUgPSBsb2FkKHByZWRpY3Rpb24sIGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIHZh
cmlhbnQpOwogICAgIGlmICghbG9hZGVkVmFsdWUpIHsKICAgICAgICAgc2V0KFZpcnR1YWxSZWdp
c3RlcihkZXN0aW5hdGlvbk9wZXJhbmQpLApAQCAtNDE0OCw3ICs0MTYwLDggQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICAKICAgICBpZiAocHV0QnlJZFN0YXR1cy5u
dW1WYXJpYW50cygpID4gMSkgewogICAgICAgICBpZiAoIWlzRlRMKG1fZ3JhcGgubV9wbGFuLm1v
ZGUpIHx8IHB1dEJ5SWRTdGF0dXMubWFrZXNDYWxscygpCi0gICAgICAgICAgICB8fCAhT3B0aW9u
czo6dXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZygpKSB7CisgICAgICAgICAgICB8fCAhT3B0
aW9uczo6dXNlUG9seW1vcnBoaWNBY2Nlc3NJbmxpbmluZygpCisgICAgICAgICAgICB8fCBwdXRC
eUlkU3RhdHVzLm51bVZhcmlhbnRzKCkgPiBPcHRpb25zOjptYXhQb2x5bW9ycGhpY0FjY2Vzc0lu
bGluaW5nTGlzdFNpemUoKSkgewogICAgICAgICAgICAgZW1pdFB1dEJ5SWQoYmFzZSwgaWRlbnRp
Zmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0KTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQpAQCAtNDE2Niw2ICs0MTc5LDggQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICAgICAgCiAgICAgICAgIGlmIChVTkxJS0VMWShtX2dy
YXBoLmNvbXBpbGF0aW9uKCkpKQogICAgICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5u
b3RpY2VJbmxpbmVkUHV0QnlJZCgpOworICAgICAgICAKKyAgICAgICAgYWRkVG9HcmFwaChGaWx0
ZXJQdXRCeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0dXNlcy5h
ZGRQdXRCeUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIHB1dEJ5SWRTdGF0dXMpKSwgYmFz
ZSk7CiAKICAgICAgICAgZm9yIChjb25zdCBQdXRCeUlkVmFyaWFudCYgdmFyaWFudCA6IHB1dEJ5
SWRTdGF0dXMudmFyaWFudHMoKSkgewogICAgICAgICAgICAgbV9ncmFwaC5yZWdpc3RlckluZmVy
cmVkVHlwZSh2YXJpYW50LnJlcXVpcmVkVHlwZSgpKTsKQEAgLTQxODcsNiArNDIwMiw4IEBAIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVB1dEJ5SWQoCiAgICAgCiAgICAgc3dpdGNoICh2YXJp
YW50LmtpbmQoKSkgewogICAgIGNhc2UgUHV0QnlJZFZhcmlhbnQ6OlJlcGxhY2U6IHsKKyAgICAg
ICAgYWRkVG9HcmFwaChGaWx0ZXJQdXRCeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4u
cmVjb3JkZWRTdGF0dXNlcy5hZGRQdXRCeUlkU3RhdHVzKGN1cnJlbnRDb2RlT3JpZ2luKCksIHB1
dEJ5SWRTdGF0dXMpKSwgYmFzZSk7CisgICAgICAgIAogICAgICAgICBzdG9yZShiYXNlLCBpZGVu
dGlmaWVyTnVtYmVyLCB2YXJpYW50LCB2YWx1ZSk7CiAgICAgICAgIGlmIChVTkxJS0VMWShtX2dy
YXBoLmNvbXBpbGF0aW9uKCkpKQogICAgICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5u
b3RpY2VJbmxpbmVkUHV0QnlJZCgpOwpAQCAtNDE5NCw2ICs0MjExLDggQEAgdm9pZCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlUHV0QnlJZCgKICAgICB9CiAgICAgCiAgICAgY2FzZSBQdXRCeUlkVmFy
aWFudDo6VHJhbnNpdGlvbjogeworICAgICAgICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRTdGF0
dXMsIE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFkZFB1dEJ5SWRTdGF0
dXMoY3VycmVudENvZGVPcmlnaW4oKSwgcHV0QnlJZFN0YXR1cykpLCBiYXNlKTsKKyAgICAgICAg
CiAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFkZFN0
cnVjdHVyZVNldCh2YXJpYW50Lm9sZFN0cnVjdHVyZSgpKSksIGJhc2UpOwogICAgICAgICBpZiAo
IWNoZWNrKHZhcmlhbnQuY29uZGl0aW9uU2V0KCkpKSB7CiAgICAgICAgICAgICBlbWl0UHV0QnlJ
ZChiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgaXNEaXJlY3Qp
OwpAQCAtNDI2MSw2ICs0MjgwLDggQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUHV0QnlJ
ZCgKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgUHV0QnlJZFZhcmlhbnQ6OlNldHRlcjogewor
ICAgICAgICBhZGRUb0dyYXBoKEZpbHRlclB1dEJ5SWRTdGF0dXMsIE9wSW5mbyhtX2dyYXBoLm1f
cGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFkZFB1dEJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4o
KSwgcHV0QnlJZFN0YXR1cykpLCBiYXNlKTsKKyAgICAgICAgCiAgICAgICAgIE5vZGUqIGxvYWRl
ZFZhbHVlID0gbG9hZChTcGVjQ2VsbE90aGVyLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YXJp
YW50KTsKICAgICAgICAgaWYgKCFsb2FkZWRWYWx1ZSkgewogICAgICAgICAgICAgZW1pdFB1dEJ5
SWQoYmFzZSwgaWRlbnRpZmllck51bWJlciwgdmFsdWUsIHB1dEJ5SWRTdGF0dXMsIGlzRGlyZWN0
KTsKQEAgLTQ0OTcsNiArNDUxOCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZnJlZXplKHJh
cmVEYXRhKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLndhdGNocG9pbnRz
KCkuYWRkTGF6aWx5KHJhcmVEYXRhLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gVGhlIGNhbGxlZSBpcyBzdGlsbCBsaXZlIHVwIHRvIHRoaXMgcG9pbnQuCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBjYWxsZWUpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5vZGUqIG9iamVjdCA9IGFkZFRvR3JhcGgoTmV3T2JqZWN0
LCBPcEluZm8obV9ncmFwaC5yZWdpc3RlclN0cnVjdHVyZShzdHJ1Y3R1cmUpKSk7CkBAIC00Nzky
LDcgKzQ4MTQsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAg
ICAgICAgICAgICBhdXRvJiBieXRlY29kZSA9ICpyZWludGVycHJldF9jYXN0PE9wSW5zdGFuY2Vv
Zio+KGN1cnJlbnRJbnN0cnVjdGlvbik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEluc3Rh
bmNlT2ZTdGF0dXMgc3RhdHVzID0gSW5zdGFuY2VPZlN0YXR1czo6Y29tcHV0ZUZvcigKLSAgICAg
ICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIG1faW5saW5lU3Rh
Y2tUb3AtPm1fc3R1YkluZm9zLAorICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1f
cHJvZmlsZWRCbG9jaywgbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcCwKICAgICAgICAg
ICAgICAgICBtX2N1cnJlbnRJbmRleCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIE5vZGUq
IHZhbHVlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS52YWx1ZSgpKSk7CkBAIC01MDMx
LDcgKzUwNTMsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAg
ICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gMDsKICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1faW5saW5lU3RhY2tU
b3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICBCeVZhbEluZm8q
IGJ5VmFsSW5mbyA9IG1faW5saW5lU3RhY2tUb3AtPm1fYnlWYWxJbmZvcy5nZXQoQ29kZU9yaWdp
bihjdXJyZW50Q29kZU9yaWdpbigpLmJ5dGVjb2RlSW5kZXgpKTsKKyAgICAgICAgICAgICAgICBC
eVZhbEluZm8qIGJ5VmFsSW5mbyA9IG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAuZ2V0
KENvZGVPcmlnaW4oY3VycmVudENvZGVPcmlnaW4oKS5ieXRlY29kZUluZGV4KSkuYnlWYWxJbmZv
OwogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXaGVuIHRoZSBieXRlY29kZSBpcyBub3QgY29t
cGlsZWQgaW4gdGhlIGJhc2VsaW5lIEpJVCwgYnlWYWxJbmZvIGJlY29tZXMgbnVsbC4KICAgICAg
ICAgICAgICAgICAvLyBBdCB0aGF0IHRpbWUsIHRoZXJlIGlzIG5vIGluZm9ybWF0aW9uLgogICAg
ICAgICAgICAgICAgIGlmIChieVZhbEluZm8KQEAgLTUxMDAsNyArNTEyMiw3IEBAIHZvaWQgQnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBQdXRCeUlk
U3RhdHVzIHB1dEJ5SWRTdGF0dXM7CiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
ICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmls
ZWRCbG9jay0+bV9sb2NrKTsKLSAgICAgICAgICAgICAgICAgICAgQnlWYWxJbmZvKiBieVZhbElu
Zm8gPSBtX2lubGluZVN0YWNrVG9wLT5tX2J5VmFsSW5mb3MuZ2V0KENvZGVPcmlnaW4oY3VycmVu
dENvZGVPcmlnaW4oKS5ieXRlY29kZUluZGV4KSk7CisgICAgICAgICAgICAgICAgICAgIEJ5VmFs
SW5mbyogYnlWYWxJbmZvID0gbV9pbmxpbmVTdGFja1RvcC0+bV9iYXNlbGluZU1hcC5nZXQoQ29k
ZU9yaWdpbihjdXJyZW50Q29kZU9yaWdpbigpLmJ5dGVjb2RlSW5kZXgpKS5ieVZhbEluZm87CiAg
ICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXaGVuIHRoZSBieXRlY29kZSBpcyBub3QgY29t
cGlsZWQgaW4gdGhlIGJhc2VsaW5lIEpJVCwgYnlWYWxJbmZvIGJlY29tZXMgbnVsbC4KICAgICAg
ICAgICAgICAgICAgICAgLy8gQXQgdGhhdCB0aW1lLCB0aGVyZSBpcyBubyBpbmZvcm1hdGlvbi4K
ICAgICAgICAgICAgICAgICAgICAgaWYgKGJ5VmFsSW5mbyAKQEAgLTUyMDYsOCArNTIyOCw4IEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMo
KVtpZGVudGlmaWVyTnVtYmVyXTsKICAgICAgICAgICAgIEdldEJ5SWRTdGF0dXMgZ2V0QnlJZFN0
YXR1cyA9IEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgICAgICAgICAgICAgbV9pbmxp
bmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBtX2RmZ0NvZGVCbG9jaywKLSAgICAgICAgICAg
ICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3N0dWJJbmZvcywgbV9kZmdTdHViSW5mb3MsCisgICAg
ICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAorICAgICAgICAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ss
CiAgICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSwgdWlkKTsKIAogICAgICAgICAg
ICAgQWNjZXNzVHlwZSB0eXBlID0gQWNjZXNzVHlwZTo6R2V0OwpAQCAtNTI1MCw4ICs1MjcyLDgg
QEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAg
Ym9vbCBkaXJlY3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bOF0udS5wdXRCeUlkRmxhZ3MgJiBQdXRC
eUlkSXNEaXJlY3Q7CiAKICAgICAgICAgICAgIFB1dEJ5SWRTdGF0dXMgcHV0QnlJZFN0YXR1cyA9
IFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFj
a1RvcC0+bV9wcm9maWxlZEJsb2NrLCBtX2RmZ0NvZGVCbG9jaywKLSAgICAgICAgICAgICAgICBt
X2lubGluZVN0YWNrVG9wLT5tX3N0dWJJbmZvcywgbV9kZmdTdHViSW5mb3MsCisgICAgICAgICAg
ICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAorICAgICAgICAgICAgICAg
IG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ssCiAgICAg
ICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSwgbV9ncmFwaC5pZGVudGlmaWVycygpW2lk
ZW50aWZpZXJOdW1iZXJdKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaGFuZGxlUHV0QnlJ
ZChiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCB2YWx1ZSwgcHV0QnlJZFN0YXR1cywgZGlyZWN0KTsK
QEAgLTY0MzMsOCArNjQ1NSw4IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5z
aWduZWQKICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBoLmlkZW50
aWZpZXJzKClbaWRlbnRpZmllck51bWJlcl07CiAKICAgICAgICAgICAgIEluQnlJZFN0YXR1cyBz
dGF0dXMgPSBJbkJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCi0gICAgICAgICAgICAgICAgbV9pbmxp
bmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBtX2RmZ0NvZGVCbG9jaywKLSAgICAgICAgICAg
ICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3N0dWJJbmZvcywgbV9kZmdTdHViSW5mb3MsCisgICAg
ICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLAorICAgICAgICAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fYmFzZWxpbmVNYXAsIG1faWNDb250ZXh0U3RhY2ss
CiAgICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSwgdWlkKTsKIAogICAgICAgICAg
ICAgaWYgKHN0YXR1cy5pc1NpbXBsZSgpKSB7CkBAIC02NDU1LDYgKzY0NzcsOCBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICAgICAgaWYgKGFsbE9LKSB7CisgICAgICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoRmlsdGVySW5CeUlkU3RhdHVzLCBPcEluZm8obV9ncmFwaC5tX3BsYW4ucmVjb3JkZWRTdGF0
dXNlcy5hZGRJbkJ5SWRTdGF0dXMoY3VycmVudENvZGVPcmlnaW4oKSwgc3RhdHVzKSksIGJhc2Up
OworICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgTm9kZSogbWF0Y2gg
PSBhZGRUb0dyYXBoKE1hdGNoU3RydWN0dXJlLCBPcEluZm8oZGF0YSksIGJhc2UpOwogICAgICAg
ICAgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQpLCBtYXRjaCk7CiAgICAgICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2lu
X2J5X2lkKTsKQEAgLTY2MzksMTIgKzY2NjMsMTkgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0
YWNrRW50cnk6OklubGluZQogICAgICAgICAvLyBXZSBkbyB0aGlzIHdoaWxlIGhvbGRpbmcgdGhl
IGxvY2sgYmVjYXVzZSB3ZSB3YW50IHRvIGVuY291cmFnZSBTdHJ1Y3R1cmVTdHViSW5mbydzCiAg
ICAgICAgIC8vIHRvIGJlIHBvdGVudGlhbGx5IGFkZGVkIHRvIG9wZXJhdGlvbnMgYW5kIGJlY2F1
c2UgdGhlIHByb2ZpbGVkIGJsb2NrIGNvdWxkIGJlIGluIHRoZQogICAgICAgICAvLyBtaWRkbGUg
b2YgTExJbnQtPkpJVCB0aWVyLXVwIGluIHdoaWNoIGNhc2Ugd2Ugd291bGQgYmUgYWRkaW5nIHRo
ZSBpbmZvJ3MgcmlnaHQgbm93LgotICAgICAgICBpZiAobV9wcm9maWxlZEJsb2NrLT5oYXNCYXNl
bGluZUpJVFByb2ZpbGluZygpKSB7Ci0gICAgICAgICAgICBtX3Byb2ZpbGVkQmxvY2stPmdldFN0
dWJJbmZvTWFwKGxvY2tlciwgbV9zdHViSW5mb3MpOwotICAgICAgICAgICAgbV9wcm9maWxlZEJs
b2NrLT5nZXRDYWxsTGlua0luZm9NYXAobG9ja2VyLCBtX2NhbGxMaW5rSW5mb3MpOwotICAgICAg
ICAgICAgbV9wcm9maWxlZEJsb2NrLT5nZXRCeVZhbEluZm9NYXAobG9ja2VyLCBtX2J5VmFsSW5m
b3MpOworICAgICAgICBpZiAobV9wcm9maWxlZEJsb2NrLT5oYXNCYXNlbGluZUpJVFByb2ZpbGlu
ZygpKQorICAgICAgICAgICAgbV9wcm9maWxlZEJsb2NrLT5nZXRJQ1N0YXR1c01hcChsb2NrZXIs
IG1fYmFzZWxpbmVNYXApOworICAgIH0KKyAgICAKKyAgICBpZiAoT3B0aW9uczo6dXNlUG9seXZh
cmlhbnREZXZpcnR1YWxpemF0aW9uKCkpIHsKKyAgICAgICAgQ29kZUJsb2NrKiBvcHRpbWl6ZWRC
bG9jayA9IG1fcHJvZmlsZWRCbG9jay0+cmVwbGFjZW1lbnQoKTsKKyAgICAgICAgbV9vcHRpbWl6
ZWRDb250ZXh0Lm9wdGltaXplZENvZGVCbG9jayA9IG9wdGltaXplZEJsb2NrOworICAgICAgICBp
ZiAob3B0aW1pemVkQmxvY2spIHsKKyAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2Nr
ZXIob3B0aW1pemVkQmxvY2stPm1fbG9jayk7CisgICAgICAgICAgICBvcHRpbWl6ZWRCbG9jay0+
Z2V0SUNTdGF0dXNNYXAobG9ja2VyLCBtX29wdGltaXplZENvbnRleHQubWFwKTsKICAgICAgICAg
fQogICAgIH0KKyAgICBieXRlQ29kZVBhcnNlci0+bV9pY0NvbnRleHRTdGFjay5hcHBlbmQoJm1f
b3B0aW1pemVkQ29udGV4dCk7CiAgICAgCiAgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzV2l0aEZpeHVwID0gc3RkOjptYXg8aW50Pihhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
Y29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOwogCkBAIC02NjU0LDYgKzY2ODUsNyBAQCBCeXRl
Q29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lCiAgICAgICAgIEFTU0VSVChpbmxp
bmVDYWxsRnJhbWVTdGFydC5pc1ZhbGlkKCkpOwogICAgICAgICAKICAgICAgICAgbV9pbmxpbmVD
YWxsRnJhbWUgPSBieXRlQ29kZVBhcnNlci0+bV9ncmFwaC5tX3BsYW4uaW5saW5lQ2FsbEZyYW1l
cy0+YWRkKCk7CisgICAgICAgIG1fb3B0aW1pemVkQ29udGV4dC5pbmxpbmVDYWxsRnJhbWUgPSBt
X2lubGluZUNhbGxGcmFtZTsKIAogICAgICAgICAvLyBUaGUgb3duZXIgaXMgdGhlIG1hY2hpbmUg
Y29kZSBibG9jaywgYW5kIHdlIGFscmVhZHkgaGF2ZSBhIGJhcnJpZXIgb24gdGhhdCB3aGVuIHRo
ZQogICAgICAgICAvLyBwbGFuIGZpbmlzaGVzLgpAQCAtNjcwOSw2ICs2NzQxLDEzIEBAIEJ5dGVD
b2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmUKICAgICBieXRlQ29kZVBhcnNlci0+
bV9pbmxpbmVTdGFja1RvcCA9IHRoaXM7CiB9CiAKK0J5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFj
a0VudHJ5Ojp+SW5saW5lU3RhY2tFbnRyeSgpCit7CisgICAgbV9ieXRlQ29kZVBhcnNlci0+bV9p
bmxpbmVTdGFja1RvcCA9IG1fY2FsbGVyOworICAgIFJFTEVBU0VfQVNTRVJUKG1fYnl0ZUNvZGVQ
YXJzZXItPm1faWNDb250ZXh0U3RhY2subGFzdCgpID09ICZtX29wdGltaXplZENvbnRleHQpOwor
ICAgIG1fYnl0ZUNvZGVQYXJzZXItPm1faWNDb250ZXh0U3RhY2sucmVtb3ZlTGFzdCgpOworfQor
CiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiB7CiAgICAgY2xlYXJDYWNo
ZXMoKTsKQEAgLTY4MDUsMTUgKzY4NDQsNiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgp
CiAgICAgCiAgICAgVkVSQk9TRV9MT0coIlBhcnNpbmcgIiwgKm1fY29kZUJsb2NrLCAiXG4iKTsK
ICAgICAKLSAgICBtX2RmZ0NvZGVCbG9jayA9IG1fZ3JhcGgubV9wbGFuLnByb2ZpbGVkREZHQ29k
ZUJsb2NrOwotICAgIGlmIChpc0ZUTChtX2dyYXBoLm1fcGxhbi5tb2RlKSAmJiBtX2RmZ0NvZGVC
bG9jawotICAgICAgICAmJiBPcHRpb25zOjp1c2VQb2x5dmFyaWFudERldmlydHVhbGl6YXRpb24o
KSkgewotICAgICAgICBpZiAoT3B0aW9uczo6dXNlUG9seXZhcmlhbnRDYWxsSW5saW5pbmcoKSkK
LSAgICAgICAgICAgIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlREZHU3RhdHVzZXMobV9kZmdDb2Rl
QmxvY2ssIG1fY2FsbENvbnRleHRNYXApOwotICAgICAgICBpZiAoT3B0aW9uczo6dXNlUG9seXZh
cmlhbnRCeUlkSW5saW5pbmcoKSkKLSAgICAgICAgICAgIG1fZGZnQ29kZUJsb2NrLT5nZXRTdHVi
SW5mb01hcChtX2RmZ1N0dWJJbmZvcyk7Ci0gICAgfQotICAgIAogICAgIElubGluZVN0YWNrRW50
cnkgaW5saW5lU3RhY2tFbnRyeSgKICAgICAgICAgdGhpcywgbV9jb2RlQmxvY2ssIG1fcHJvZmls
ZWRCbG9jaywgMCwgVmlydHVhbFJlZ2lzdGVyKCksIFZpcnR1YWxSZWdpc3RlcigpLAogICAgICAg
ICBtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBJbmxpbmVDYWxsRnJhbWU6OkNhbGwsIG51
bGxwdHIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJ
KHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJl
cml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NDYsNiArNDQ2LDEwIEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIFByb2ZpbGVDb250cm9sRmxvdzoK
ICAgICBjYXNlIFB1dEhpbnQ6CiAgICAgY2FzZSBJbml0aWFsaXplRW50cnlwb2ludEFyZ3VtZW50
czoKKyAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJ
ZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJJ
bkJ5SWRTdGF0dXM6CiAgICAgICAgIHdyaXRlKFNpZGVTdGF0ZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhp
dFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJzRXhpdFN0YXRlLmNwcAkocmV2aXNpb24gMjMyNDQxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1
LDYgKzc1LDEwIEBAIGJvb2wgY2xvYmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBoLCBOb2QKICAg
ICBjYXNlIEZlbmNlZFN0b3JlQmFycmllcjoKICAgICBjYXNlIEFsbG9jYXRlUHJvcGVydHlTdG9y
YWdlOgogICAgIGNhc2UgUmVhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZToKKyAgICBjYXNlIEZpbHRl
ckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICBjYXNl
IEZpbHRlclB1dEJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CiAgICAg
ICAgIC8vIFRoZXNlIGRvIGNsb2JiZXIgbWVtb3J5LCBidXQgbm90aGluZyB0aGF0IGlzIG9ic2Vy
dmFibGUuIEl0IG1heSBiZSBuaWNlIHRvIHNlcGFyYXRlIHRoZQogICAgICAgICAvLyBoZWFwcyBp
bnRvIHRob3NlIHRoYXQgYXJlIG9ic2VydmFibGUgYW5kIHRob3NlIHRoYXQgYXJlbid0LCBidXQg
d2UgZG9uJ3QgZG8gdGhhdCByaWdodCBub3cuCiAgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4NDQwCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbW1vbkRhdGEuaAkocmV2aXNpb24gMjMyNDQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb25EYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1
LDYgKzM1LDcgQEAKICNpbmNsdWRlICJJbmxpbmVDYWxsRnJhbWVTZXQuaCIKICNpbmNsdWRlICJK
U0Nhc3QuaCIKICNpbmNsdWRlICJQcm9maWxlckNvbXBpbGF0aW9uLmgiCisjaW5jbHVkZSAiUmVj
b3JkZWRTdGF0dXNlcy5oIgogI2luY2x1ZGUgPHd0Zi9CYWcuaD4KICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KIApAQCAtMTI1LDYgKzEyNiw3IEBAIHB1YmxpYzoKICAgICBCYWc8Q29kZUJs
b2NrSmV0dGlzb25pbmdXYXRjaHBvaW50PiB3YXRjaHBvaW50czsKICAgICBCYWc8QWRhcHRpdmVT
dHJ1Y3R1cmVXYXRjaHBvaW50PiBhZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnRzOwogICAgIEJh
ZzxBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnQ+IGFkYXB0aXZlSW5mZXJy
ZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludHM7CisgICAgUmVjb3JkZWRTdGF0dXNlcyByZWNvcmRl
ZFN0YXR1c2VzOwogICAgIFZlY3RvcjxKdW1wUmVwbGFjZW1lbnQ+IGp1bXBSZXBsYWNlbWVudHM7
CiAgICAgCiAgICAgU2NyYXRjaEJ1ZmZlciogY2F0Y2hPU1JFbnRyeUJ1ZmZlcjsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhh
c2UuY3BwCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTU3LDcgKzU1Nywx
NSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGF1dG8gYWRkRmlsdGVyU3RhdHVzID0g
WyZdICgpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgK
KyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3BlY05vbmUsIEZpbHRlckdl
dEJ5SWRTdGF0dXMsIG5vZGUtPm9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5m
byhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFkZEdldEJ5SWRTdGF0dXMobm9kZS0+
b3JpZ2luLnNlbWFudGljLCBzdGF0dXMpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEVkZ2Uo
Y2hpbGQpKTsKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIGlmIChzdGF0dXMubnVtVmFyaWFudHMoKSA9PSAxKSB7CisgICAgICAgICAgICAgICAg
ICAgIGFkZEZpbHRlclN0YXR1cygpOwogICAgICAgICAgICAgICAgICAgICBlbWl0R2V0QnlPZmZz
ZXQoaW5kZXhJbkJsb2NrLCBub2RlLCBiYXNlVmFsdWUsIHN0YXR1c1swXSwgaWRlbnRpZmllck51
bWJlcik7CiAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKQEAgLTU2Niw2ICs1NzQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgIGlmICghaXNGVEwobV9ncmFwaC5tX3BsYW4ubW9kZSkpCiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGFkZEZpbHRlclN0YXR1
cygpOwogICAgICAgICAgICAgICAgIE11bHRpR2V0QnlPZmZzZXREYXRhKiBkYXRhID0gbV9ncmFw
aC5tX211bHRpR2V0QnlPZmZzZXREYXRhLmFkZCgpOwogICAgICAgICAgICAgICAgIGZvciAoY29u
c3QgR2V0QnlJZFZhcmlhbnQmIHZhcmlhbnQgOiBzdGF0dXMudmFyaWFudHMoKSkgewogICAgICAg
ICAgICAgICAgICAgICBkYXRhLT5jYXNlcy5hcHBlbmQoCkBAIC02MzksNiArNjQ4LDExIEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgaWYgKCFhbGxHb29kKQogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBtX2luc2VydGlvblNl
dC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBpbmRleEluQmxvY2ssIFNwZWNOb25l
LCBGaWx0ZXJQdXRCeUlkU3RhdHVzLCBub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAg
IE9wSW5mbyhtX2dyYXBoLm1fcGxhbi5yZWNvcmRlZFN0YXR1c2VzLmFkZFB1dEJ5SWRTdGF0dXMo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBzdGF0dXMpKSwKKyAgICAgICAgICAgICAgICAgICAgRWRn
ZShjaGlsZCkpOworICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChzdGF0dXMu
bnVtVmFyaWFudHMoKSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRQdXRCeU9mZnNl
dChpbmRleEluQmxvY2ssIG5vZGUsIGJhc2VWYWx1ZSwgc3RhdHVzWzBdLCBpZGVudGlmaWVyTnVt
YmVyKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmgJKHJldmlzaW9uIDIzMjQ0
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDEwIEBAIHN0cnVjdCBTZXRQb2ludGVyQWRhcHRv
ciB7CiAgICAgewogICAgICAgICByZXR1cm4gc2V0LT5hZGQoY29tbW9uLndhdGNocG9pbnRzLmFk
ZChjb2RlQmxvY2spKTsKICAgICB9Ci0gICAgc3RhdGljIGJvb2wgaGFzQmVlbkludmFsaWRhdGVk
KFQgc2V0KSB7IHJldHVybiBzZXQtPmhhc0JlZW5JbnZhbGlkYXRlZCgpOyB9CisgICAgc3RhdGlj
IGJvb2wgaGFzQmVlbkludmFsaWRhdGVkKFQgc2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNl
dC0+aGFzQmVlbkludmFsaWRhdGVkKCk7CisgICAgfQogICAgIHN0YXRpYyB2b2lkIGR1bXBJbkNv
bnRleHQoUHJpbnRTdHJlYW0mIG91dCwgVCBzZXQsIER1bXBDb250ZXh0KikKICAgICB7CiAgICAg
ICAgIG91dC5wcmludChSYXdQb2ludGVyKHNldCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24gMjMyNDQxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTMsNiArMzEzLDEw
IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEF0b21p
Y3NYb3I6CiAgICAgY2FzZSBBdG9taWNzSXNMb2NrRnJlZToKICAgICBjYXNlIE1hdGNoU3RydWN0
dXJlOgorICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJHZXRC
eUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRl
ckluQnlJZFN0YXR1czoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY2FzZSBQdXNoV2l0
aFNjb3BlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTczLDYgKzIxNzMsMTAgQEAgcHJpdmF0
ZToKICAgICAgICAgY2FzZSBHZXRHbG9iYWxUaGlzOgogICAgICAgICBjYXNlIEV4dHJhY3RWYWx1
ZUZyb21XZWFrTWFwR2V0OgogICAgICAgICBjYXNlIENQVUludHJpbnNpYzoKKyAgICAgICAgY2Fz
ZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJHZXRCeUlkU3RhdHVz
OgorICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVy
SW5CeUlkU3RhdHVzOgogICAgICAgICAgICAgYnJlYWs7CiAjZWxzZQogICAgICAgICBkZWZhdWx0
OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDIz
MjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNTYsNiArMzU2LDE0IEBAIHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCwgY29uc3QKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCAiaWdub3JlTGFzdEluZGV4SXNX
cml0YWJsZSA9ICIsIG5vZGUtPmlnbm9yZUxhc3RJbmRleElzV3JpdGFibGUoKSk7CiAgICAgaWYg
KG5vZGUtPmlzQ29uc3RhbnQoKSkKICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBwb2ludGVyRHVt
cEluQ29udGV4dChub2RlLT5jb25zdGFudCgpLCBjb250ZXh0KSk7CisgICAgaWYgKG5vZGUtPmhh
c0NhbGxMaW5rU3RhdHVzKCkpCisgICAgICAgIG91dC5wcmludChjb21tYSwgKm5vZGUtPmNhbGxM
aW5rU3RhdHVzKCkpOworICAgIGlmIChub2RlLT5oYXNHZXRCeUlkU3RhdHVzKCkpCisgICAgICAg
IG91dC5wcmludChjb21tYSwgKm5vZGUtPmdldEJ5SWRTdGF0dXMoKSk7CisgICAgaWYgKG5vZGUt
Pmhhc0luQnlJZFN0YXR1cygpKQorICAgICAgICBvdXQucHJpbnQoY29tbWEsICpub2RlLT5pbkJ5
SWRTdGF0dXMoKSk7CisgICAgaWYgKG5vZGUtPmhhc1B1dEJ5SWRTdGF0dXMoKSkKKyAgICAgICAg
b3V0LnByaW50KGNvbW1hLCAqbm9kZS0+cHV0QnlJZFN0YXR1cygpKTsKICAgICBpZiAobm9kZS0+
aXNKdW1wKCkpCiAgICAgICAgIG91dC5wcmludChjb21tYSwgIlQ6IiwgKm5vZGUtPnRhcmdldEJs
b2NrKCkpOwogICAgIGlmIChub2RlLT5pc0JyYW5jaCgpKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR01heUV4aXQuY3BwCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiAr
MTAxLDEwIEBAIEV4aXRNb2RlIG1heUV4aXRJbXBsKEdyYXBoJiBncmFwaCwgTm9kZSoKICAgICBj
YXNlIFB1dENsb3N1cmVWYXI6CiAgICAgY2FzZSBSZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CiAg
ICAgY2FzZSBOdWtlU3RydWN0dXJlQW5kU2V0QnV0dGVyZmx5OgorICAgIGNhc2UgRmlsdGVyQ2Fs
bExpbmtTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJHZXRCeUlkU3RhdHVzOgorICAgIGNhc2UgRmls
dGVyUHV0QnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKICAgICAgICAg
YnJlYWs7CiAKICAgICBjYXNlIFN0ckNhdDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjc2OSw2ICsyNzY5LDUwIEBAIHB1YmxpYzoKICAg
ICAgICAgQVNTRVJUKG9wKCkgPT0gVGhyb3dTdGF0aWNFcnJvcik7CiAgICAgICAgIHJldHVybiBt
X29wSW5mby5hczx1aW50MzJfdD4oKTsKICAgICB9CisgICAgCisgICAgYm9vbCBoYXNDYWxsTGlu
a1N0YXR1cygpCisgICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBGaWx0ZXJDYWxsTGlua1N0
YXR1czsKKyAgICB9CisgICAgCisgICAgQ2FsbExpbmtTdGF0dXMqIGNhbGxMaW5rU3RhdHVzKCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChoYXNDYWxsTGlua1N0YXR1cygpKTsKKyAgICAgICAgcmV0
dXJuIG1fb3BJbmZvLmFzPENhbGxMaW5rU3RhdHVzKj4oKTsKKyAgICB9CisgICAgCisgICAgYm9v
bCBoYXNHZXRCeUlkU3RhdHVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBvcCgpID09IEZpbHRl
ckdldEJ5SWRTdGF0dXM7CisgICAgfQorICAgIAorICAgIEdldEJ5SWRTdGF0dXMqIGdldEJ5SWRT
dGF0dXMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc0dldEJ5SWRTdGF0dXMoKSk7CisgICAg
ICAgIHJldHVybiBtX29wSW5mby5hczxHZXRCeUlkU3RhdHVzKj4oKTsKKyAgICB9CisgICAgCisg
ICAgYm9vbCBoYXNJbkJ5SWRTdGF0dXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9wKCkgPT0g
RmlsdGVySW5CeUlkU3RhdHVzOworICAgIH0KKyAgICAKKyAgICBJbkJ5SWRTdGF0dXMqIGluQnlJ
ZFN0YXR1cygpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzSW5CeUlkU3RhdHVzKCkpOworICAg
ICAgICByZXR1cm4gbV9vcEluZm8uYXM8SW5CeUlkU3RhdHVzKj4oKTsKKyAgICB9CisgICAgCisg
ICAgYm9vbCBoYXNQdXRCeUlkU3RhdHVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBvcCgpID09
IEZpbHRlclB1dEJ5SWRTdGF0dXM7CisgICAgfQorICAgIAorICAgIFB1dEJ5SWRTdGF0dXMqIHB1
dEJ5SWRTdGF0dXMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc1B1dEJ5SWRTdGF0dXMoKSk7
CisgICAgICAgIHJldHVybiBtX29wSW5mby5hczxQdXRCeUlkU3RhdHVzKj4oKTsKKyAgICB9CiAK
ICAgICB2b2lkIGR1bXBDaGlsZHJlbihQcmludFN0cmVhbSYgb3V0KQogICAgIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDIzMjQ0MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzk3LDExICszOTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAg
bWFjcm8oR2V0QXJndW1lbnQsIE5vZGVSZXN1bHRKUykgXAogICAgIFwKICAgICBtYWNybyhOZXdG
dW5jdGlvbiwgTm9kZVJlc3VsdEpTKSBcCi0gICAgXAogICAgIG1hY3JvKE5ld0dlbmVyYXRvckZ1
bmN0aW9uLCBOb2RlUmVzdWx0SlMpIFwKLSAgICBcCiAgICAgbWFjcm8oTmV3QXN5bmNHZW5lcmF0
b3JGdW5jdGlvbiwgTm9kZVJlc3VsdEpTKSBcCi0gICAgXAogICAgIG1hY3JvKE5ld0FzeW5jRnVu
Y3Rpb24sIE5vZGVSZXN1bHRKUykgXAogICAgIFwKICAgICAvKiBCbG9jayB0ZXJtaW5hbHMuICov
XApAQCAtNDc4LDYgKzQ3NSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAg
ICAgXAogICAgIC8qIFVzZWQgZm9yICR2bSBwZXJmb3JtYW5jZSBkZWJ1Z2dpbmcgKi8gXAogICAg
IG1hY3JvKENQVUludHJpbnNpYywgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAor
ICAgIFwKKyAgICAvKiBVc2VkIHRvIHByb3ZpZGUgZmVlZGJhY2sgdG8gdGhlIElDIHByb2ZpbGVy
LiAqLyBcCisgICAgbWFjcm8oRmlsdGVyQ2FsbExpbmtTdGF0dXMsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKKyAgICBtYWNybyhGaWx0ZXJHZXRCeUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisg
ICAgbWFjcm8oRmlsdGVySW5CeUlkU3RhdHVzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFj
cm8oRmlsdGVyUHV0QnlJZFN0YXR1cywgTm9kZU11c3RHZW5lcmF0ZSkgXAogCiAKIC8vIFRoaXMg
ZW51bSBnZW5lcmF0ZXMgYSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgaWQgZm9yIGFsbCBOb2Rl
IHR5cGVzLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0QmFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0QmFz
ZS5jcHAJKHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQyLDExICs0MiwxNyBAQCB2b2lk
IE9TUkV4aXRCYXNlOjpjb25zaWRlckFkZGluZ0FzRnJlcXVlCiAgICAgICAgIGJhc2VsaW5lQ29k
ZUJsb2NrRm9yT3JpZ2luQW5kQmFzZWxpbmVDb2RlQmxvY2soCiAgICAgICAgICAgICBtX2NvZGVP
cmlnaW5Gb3JFeGl0UHJvZmlsZSwgcHJvZmlsZWRDb2RlQmxvY2spOwogICAgIGlmIChzb3VyY2VQ
cm9maWxlZENvZGVCbG9jaykgeworICAgICAgICBFeGl0aW5nSW5saW5lS2luZCBpbmxpbmVLaW5k
OworICAgICAgICBpZiAobV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGUuaW5saW5lQ2FsbEZyYW1l
KQorICAgICAgICAgICAgaW5saW5lS2luZCA9IEV4aXRGcm9tSW5saW5lZDsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgaW5saW5lS2luZCA9IEV4aXRGcm9tTm90SW5saW5lZDsKKyAgICAgICAg
CiAgICAgICAgIEZyZXF1ZW50RXhpdFNpdGUgc2l0ZTsKICAgICAgICAgaWYgKG1fd2FzSG9pc3Rl
ZCkKLSAgICAgICAgICAgIHNpdGUgPSBGcmVxdWVudEV4aXRTaXRlKEhvaXN0aW5nRmFpbGVkLCBq
aXRUeXBlKTsKKyAgICAgICAgICAgIHNpdGUgPSBGcmVxdWVudEV4aXRTaXRlKEhvaXN0aW5nRmFp
bGVkLCBqaXRUeXBlLCBpbmxpbmVLaW5kKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc2l0
ZSA9IEZyZXF1ZW50RXhpdFNpdGUobV9jb2RlT3JpZ2luRm9yRXhpdFByb2ZpbGUuYnl0ZWNvZGVJ
bmRleCwgbV9raW5kLCBqaXRUeXBlKTsKKyAgICAgICAgICAgIHNpdGUgPSBGcmVxdWVudEV4aXRT
aXRlKG1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlLmJ5dGVjb2RlSW5kZXgsIG1fa2luZCwgaml0
VHlwZSwgaW5saW5lS2luZCk7CiAgICAgICAgIEV4aXRQcm9maWxlOjphZGQoc291cmNlUHJvZmls
ZWRDb2RlQmxvY2ssIHNpdGUpOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNl
LmNwcAkocmV2aXNpb24gMjMyNDQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
YmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzU2LDYg
Kzc1Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBwcm9tb3RlTG9jYWxIZWFw
KCk7CisgICAgICAgIHJlbW92ZUlDU3RhdHVzRmlsdGVycygpOwogCiAgICAgICAgIGlmIChPcHRp
b25zOjp2YWxpZGF0ZUdyYXBoQXRFYWNoUGhhc2UoKSkKICAgICAgICAgICAgIERGRzo6dmFsaWRh
dGUobV9ncmFwaCwgRHVtcEdyYXBoLCBncmFwaEJlZm9yZVNpbmtpbmcpOwpAQCAtMTA4OCw2ICsx
MDg5LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgUHV0SGludDoKICAgICAgICAgICAgIC8v
IEhhbmRsZWQgYnkgT1NSIGF2YWlsYWJpbGl0eSBhbmFseXNpcwogICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICAg
ICAgY2FzZSBGaWx0ZXJHZXRCeUlkU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlclB1dEJ5SWRT
dGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAgICAgICAgYnJl
YWs7CiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIG1fZ3JhcGguZG9Ub0NoaWxkcmVu
KApAQCAtMjMzMSw2ICsyMzM4LDI1IEBAIHByaXZhdGU6CiAKICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CisgICAgCisgICAgdm9pZCByZW1vdmVJQ1N0YXR1c0Zp
bHRlcnMoKQorICAgIHsKKyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGgu
YmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgeworICAgICAgICAgICAgZm9yIChOb2RlKiBub2RlIDog
KmJsb2NrKSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgICAg
ICAgICAgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICAgICAgICAgICAgICBjYXNl
IEZpbHRlckdldEJ5SWRTdGF0dXM6CisgICAgICAgICAgICAgICAgY2FzZSBGaWx0ZXJQdXRCeUlk
U3RhdHVzOgorICAgICAgICAgICAgICAgIGNhc2UgRmlsdGVySW5CeUlkU3RhdHVzOgorICAgICAg
ICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPmlzUGhhbnRvbUFsbG9jYXRpb24oKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPnJlbW92ZVdpdGhvdXRDaGVja3MoKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQogCiAgICAgLy8gVGhpcyBpcyBhIGdyZWF0IHdheSBvZiBhc2tpbmcg
dmFsdWUtPmlzU3RpbGxWYWxpZCgpIHdpdGhvdXQgaGF2aW5nIHRvIHdvcnJ5IGFib3V0IGdldHRp
bmcKICAgICAvLyBkaWZmZXJlbnQgYW5zd2Vycy4gSXQgdHVybnMgb3V0IHRoYXQgdGhpcyBhbmFs
eXNpcyB3b3JrcyBPSyByZWdhcmRsZXNzIG9mIHdoYXQgdGhpcwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1BsYW4uY3BwCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1BsYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTU1LDYgKzU1NSw3
IEBAIHZvaWQgUGxhbjo6cmVhbGx5QWRkKENvbW1vbkRhdGEqIGNvbW1vbkQKICAgICBpZGVudGlm
aWVycy5yZWFsbHlBZGQoKnZtLCBjb21tb25EYXRhKTsKICAgICB3ZWFrUmVmZXJlbmNlcy5yZWFs
bHlBZGQoKnZtLCBjb21tb25EYXRhKTsKICAgICB0cmFuc2l0aW9ucy5yZWFsbHlBZGQoKnZtLCBj
b21tb25EYXRhKTsKKyAgICBjb21tb25EYXRhLT5yZWNvcmRlZFN0YXR1c2VzID0gV1RGTW92ZShy
ZWNvcmRlZFN0YXR1c2VzKTsKIH0KIAogdm9pZCBQbGFuOjpub3RpZnlDb21waWxpbmcoKQpAQCAt
NjMzLDYgKzYzNCw4IEBAIHZvaWQgUGxhbjo6Y2hlY2tMaXZlbmVzc0FuZFZpc2l0Q2hpbGRyZW4K
ICAgICBjbGVhbk11c3RIYW5kbGVWYWx1ZXNJZk5lY2Vzc2FyeSgpOwogICAgIGZvciAodW5zaWdu
ZWQgaSA9IG11c3RIYW5kbGVWYWx1ZXMuc2l6ZSgpOyBpLS07KQogICAgICAgICB2aXNpdG9yLmFw
cGVuZFVuYmFycmllcmVkKG11c3RIYW5kbGVWYWx1ZXNbaV0pOworICAgIAorICAgIHJlY29yZGVk
U3RhdHVzZXMubWFya0lmQ2hlYXAodmlzaXRvcik7CiAKICAgICB2aXNpdG9yLmFwcGVuZFVuYmFy
cmllcmVkKGNvZGVCbG9jayk7CiAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChjb2RlQmxv
Y2stPmFsdGVybmF0aXZlKCkpOwpAQCAtNjQ5LDYgKzY1MiwxMSBAQCB2b2lkIFBsYW46OmNoZWNr
TGl2ZW5lc3NBbmRWaXNpdENoaWxkcmVuCiAgICAgdHJhbnNpdGlvbnMudmlzaXRDaGlsZHJlbih2
aXNpdG9yKTsKIH0KIAordm9pZCBQbGFuOjpmaW5hbGl6ZUluR0MoKQoreworICAgIHJlY29yZGVk
U3RhdHVzZXMuZmluYWxpemVXaXRob3V0RGVsZXRpbmcoKTsKK30KKwogYm9vbCBQbGFuOjppc0tu
b3duVG9CZUxpdmVEdXJpbmdHQygpCiB7CiAgICAgaWYgKHN0YWdlID09IENhbmNlbGxlZCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5oCShyZXZpc2lvbiAyMzI0NDEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2
LDYgKzM2LDcgQEAKICNpbmNsdWRlICJEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCIKICNp
bmNsdWRlICJPcGVyYW5kcy5oIgogI2luY2x1ZGUgIlByb2ZpbGVyQ29tcGlsYXRpb24uaCIKKyNp
bmNsdWRlICJSZWNvcmRlZFN0YXR1c2VzLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KIApAQCAtNzIsNiArNzMsNyBAQCBz
dHJ1Y3QgUGxhbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlCiAgICAgdm9pZCBpdGVyYXRl
Q29kZUJsb2Nrc0ZvckdDKGNvbnN0IEZ1bmMmKTsKICAgICB2b2lkIGNoZWNrTGl2ZW5lc3NBbmRW
aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CiAgICAgYm9vbCBpc0tub3duVG9CZUxpdmVEdXJp
bmdHQygpOworICAgIHZvaWQgZmluYWxpemVJbkdDKCk7CiAgICAgdm9pZCBjYW5jZWwoKTsKIAog
ICAgIGJvb2wgY2FuVGllclVwQW5kT1NSRW50ZXIoKSBjb25zdCB7IHJldHVybiAhdGllclVwQW5k
T1NSRW50ZXJCeXRlY29kZXMuaXNFbXB0eSgpOyB9CkBAIC0xMDQsNiArMTA2LDcgQEAgc3RydWN0
IFBsYW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZQogICAgIERlc2lyZWRJZGVudGlmaWVy
cyBpZGVudGlmaWVyczsKICAgICBEZXNpcmVkV2Vha1JlZmVyZW5jZXMgd2Vha1JlZmVyZW5jZXM7
CiAgICAgRGVzaXJlZFRyYW5zaXRpb25zIHRyYW5zaXRpb25zOworICAgIFJlY29yZGVkU3RhdHVz
ZXMgcmVjb3JkZWRTdGF0dXNlczsKICAgICAKICAgICBib29sIHdpbGxUcnlUb1RpZXJVcCB7IGZh
bHNlIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMzI0NDEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIxMyw2ICsxMjEzLDEwIEBAIHByaXZhdGU6CiAgICAg
ICAgIGNhc2UgSW5pdGlhbGl6ZUVudHJ5cG9pbnRBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgV2Vh
a1NldEFkZDoKICAgICAgICAgY2FzZSBXZWFrTWFwU2V0OgorICAgICAgICBjYXNlIEZpbHRlckNh
bGxMaW5rU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRlckdldEJ5SWRTdGF0dXM6CisgICAgICAg
IGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKKyAgICAgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0
dXM6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICAvLyBUaGlzIGdl
dHMgaWdub3JlZCBiZWNhdXNlIGl0IG9ubHkgcHJldGVuZHMgdG8gcHJvZHVjZSBhIHZhbHVlLgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJl
dmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NzksNiArNDc5LDE0IEBAIGJvb2wgc2FmZVRvRXhl
Y3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICAgICAgLy8gYWxyZWFkeSBmb3JjZSB0aGVz
ZSB0aGluZ3MgdG8gYmUgb3JkZXJlZCBwcmVjaXNlbHkuIEknbSBqdXN0IG5vdCBjb25maWRlbnQg
ZW5vdWdoIGluIG15CiAgICAgICAgIC8vIGVmZmVjdCBiYXNlZCBtZW1vcnkgbW9kZWwgdG8gcmVs
eSBzb2xlbHkgb24gdGhhdCByaWdodCBub3cuCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgCisgICAgY2FzZSBGaWx0ZXJDYWxsTGlua1N0YXR1czoKKyAgICBjYXNlIEZpbHRlckdldEJ5
SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJQdXRCeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVy
SW5CeUlkU3RhdHVzOgorICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRoZXNlIHRvIGJlIG1vdmVk
IGFueXdoZXJlIG90aGVyIHRoYW4gd2hlcmUgd2UgcHV0IHRoZW0sIHNpbmNlIHdlIHdhbnQgdGhl
bQorICAgICAgICAvLyB0byBjYXB0dXJlICJwcm9maWxpbmciIGF0IHRoZSBwb2ludCBpbiBjb250
cm9sIGZsb3cgaGVyZSB0aGUgdXNlciBwdXQgdGhlbS4KKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgY2FzZSBHZXRCeVZhbDoKICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwMzcs
NiArNDAzNywxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBDaGVja1N0cnVjdHVyZU9yRW1wdHk6CiAgICAgICAgIERGR19DUkFTSChtX2ppdC5n
cmFwaCgpLCBub2RlLCAiQ2hlY2tTdHJ1Y3R1cmVPckVtcHR5IG9ubHkgdXNlZCBpbiA2NC1iaXQg
REZHIik7CiAgICAgICAgIGJyZWFrOworICAgICAgICAKKyAgICBjYXNlIEZpbHRlckNhbGxMaW5r
U3RhdHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlclB1
dEJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgIG1faW50
ZXJwcmV0ZXIuZmlsdGVySUNTdGF0dXMobm9kZSk7CisgICAgICAgIG5vUmVzdWx0KG5vZGUpOwor
ICAgICAgICBicmVhazsKIAogICAgIGNhc2UgTGFzdE5vZGVUeXBlOgogICAgIGNhc2UgUGhpOgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjM4LDYgKzQ2MzgsMTQg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVh
azsKICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkKIAorICAgIGNhc2UgRmlsdGVyQ2FsbExpbmtT
dGF0dXM6CisgICAgY2FzZSBGaWx0ZXJHZXRCeUlkU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyUHV0
QnlJZFN0YXR1czoKKyAgICBjYXNlIEZpbHRlckluQnlJZFN0YXR1czoKKyAgICAgICAgbV9pbnRl
cnByZXRlci5maWx0ZXJJQ1N0YXR1cyhub2RlKTsKKyAgICAgICAgbm9SZXN1bHQobm9kZSk7Cisg
ICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBMYXN0Tm9kZVR5cGU6CiAgICAgY2FzZSBFbnRyeVN3
aXRjaDoKICAgICBjYXNlIEluaXRpYWxpemVFbnRyeXBvaW50QXJndW1lbnRzOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9u
UGhhc2UuY3BwCShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODk4LDEw
ICs4OTgsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBUYWlsQ2FsbDogewogICAgICAgICAg
ICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBudWxscHRyOwogICAgICAgICAgICAgRWRn
ZSBjYWxsZWUgPSBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMCk7Ci0gICAgICAgICAgICBp
ZiAoSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNG
dW5jdGlvbio+KHZtKCkpKQorICAgICAgICAgICAgQ2FsbFZhcmlhbnQgY2FsbFZhcmlhbnQ7Cisg
ICAgICAgICAgICBpZiAoSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBjYWxsZWUtPmR5bmFtaWNDYXN0
Q29uc3RhbnQ8SlNGdW5jdGlvbio+KHZtKCkpKSB7CiAgICAgICAgICAgICAgICAgZXhlY3V0YWJs
ZSA9IGZ1bmN0aW9uLT5leGVjdXRhYmxlKCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChjYWxsZWUt
PmlzRnVuY3Rpb25BbGxvY2F0aW9uKCkpCisgICAgICAgICAgICAgICAgY2FsbFZhcmlhbnQgPSBD
YWxsVmFyaWFudChmdW5jdGlvbik7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGNhbGxlZS0+aXNG
dW5jdGlvbkFsbG9jYXRpb24oKSkgewogICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBjYWxs
ZWUtPmNhc3RPcGVyYW5kPEZ1bmN0aW9uRXhlY3V0YWJsZSo+KCk7CisgICAgICAgICAgICAgICAg
Y2FsbFZhcmlhbnQgPSBDYWxsVmFyaWFudChleGVjdXRhYmxlKTsKKyAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIAogICAgICAgICAgICAgaWYgKCFleGVjdXRhYmxlKQogICAgICAgICAgICAgICAg
IGJyZWFrOwpAQCAtOTE5LDYgKzkyMyw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgCisgICAgICAgICAgICBtX2dyYXBoLm1fcGxhbi5y
ZWNvcmRlZFN0YXR1c2VzLmFkZENhbGxMaW5rU3RhdHVzKG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
LCBDYWxsTGlua1N0YXR1cyhjYWxsVmFyaWFudCkpOworICAgICAgICAgICAgCiAgICAgICAgICAg
ICBtX25vZGUtPmNvbnZlcnRUb0RpcmVjdENhbGwobV9ncmFwaC5mcmVlemUoZXhlY3V0YWJsZSkp
OwogICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAJKHJldmlzaW9uIDIz
MjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOTMsOCArMzkzLDEwIEBAIHZvaWQgV29ya2xpc3Q6OnJlbW92ZURlYWRQ
bGFucyhWTSYgdm0pCiAgICAgICAgICAgICBQbGFuKiBwbGFuID0gaXRlci0+dmFsdWUuZ2V0KCk7
CiAgICAgICAgICAgICBpZiAocGxhbi0+dm0gIT0gJnZtKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgaWYgKHBsYW4tPmlzS25vd25Ub0JlTGl2ZUR1cmluZ0dDKCkpCisg
ICAgICAgICAgICBpZiAocGxhbi0+aXNLbm93blRvQmVMaXZlRHVyaW5nR0MoKSkgeworICAgICAg
ICAgICAgICAgIHBsYW4tPmZpbmFsaXplSW5HQygpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgfQogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocGxhbi0+c3RhZ2Ug
IT0gUGxhbjo6Q2FuY2VsbGVkKTsgLy8gU2hvdWxkIG5vdCBiZSBjYW5jZWxsZWQsIHlldC4KICAg
ICAgICAgICAgIEFTU0VSVCghZGVhZFBsYW5LZXlzLmNvbnRhaW5zKHBsYW4tPmtleSgpKSk7CiAg
ICAgICAgICAgICBkZWFkUGxhbktleXMuYWRkKHBsYW4tPmtleSgpKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5o
CShyZXZpc2lvbiAyMzI0NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsOCBAQCBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX21p
bkNhcGFjaXR5LCBEaXJlY3RBcmd1bWVudHM6Om9mZnNldE9mTWluQ2FwYWNpdHkoKSkgXAogICAg
IG1hY3JvKERpcmVjdEFyZ3VtZW50c19tYXBwZWRBcmd1bWVudHMsIERpcmVjdEFyZ3VtZW50czo6
b2Zmc2V0T2ZNYXBwZWRBcmd1bWVudHMoKSkgXAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19t
b2RpZmllZEFyZ3VtZW50c0Rlc2NyaXB0b3IsIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZNb2Rp
ZmllZEFyZ3VtZW50c0Rlc2NyaXB0b3IoKSkgXAorICAgIG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFf
YWxsb2NhdG9yLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZBbGxvY2F0b3IoKSkgXAor
ICAgIG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFfc3RydWN0dXJlLCBGdW5jdGlvblJhcmVEYXRhOjpv
ZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSkgXAogICAgIG1hY3JvKEdldHRlclNldHRlcl9nZXR0ZXIs
IEdldHRlclNldHRlcjo6b2Zmc2V0T2ZHZXR0ZXIoKSkgXAogICAgIG1hY3JvKEdldHRlclNldHRl
cl9zZXR0ZXIsIEdldHRlclNldHRlcjo6b2Zmc2V0T2ZTZXR0ZXIoKSkgXAogICAgIG1hY3JvKEpT
QXJyYXlCdWZmZXJWaWV3X2xlbmd0aCwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3Ro
KCkpIFwKQEAgLTExMiwxMCArMTE0LDEwIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRM
IHsKICAgICBtYWNybyhTdHJpbmdJbXBsX2xlbmd0aCwgU3RyaW5nSW1wbDo6bGVuZ3RoTWVtb3J5
T2Zmc2V0KCkpIFwKICAgICBtYWNybyhTdHJ1Y3R1cmVfY2xhc3NJbmZvLCBTdHJ1Y3R1cmU6OmNs
YXNzSW5mb09mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJlX2dsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlOjpnbG9iYWxPYmplY3RPZmZzZXQoKSkgXAorICAgIG1hY3JvKFN0cnVjdHVyZV9pbmRl
eGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5LCBTdHJ1Y3R1cmU6OmluZGV4aW5nTW9kZUluY2x1ZGlu
Z0hpc3RvcnlPZmZzZXQoKSkgXAorICAgIG1hY3JvKFN0cnVjdHVyZV9pbmxpbmVDYXBhY2l0eSwg
U3RydWN0dXJlOjppbmxpbmVDYXBhY2l0eU9mZnNldCgpKSBcCiAgICAgbWFjcm8oU3RydWN0dXJl
X3Byb3RvdHlwZSwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSkgXAogICAgIG1hY3JvKFN0
cnVjdHVyZV9zdHJ1Y3R1cmVJRCwgU3RydWN0dXJlOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSBcCi0g
ICAgbWFjcm8oU3RydWN0dXJlX2lubGluZUNhcGFjaXR5LCBTdHJ1Y3R1cmU6OmlubGluZUNhcGFj
aXR5T2Zmc2V0KCkpIFwKLSAgICBtYWNybyhTdHJ1Y3R1cmVfaW5kZXhpbmdNb2RlSW5jbHVkaW5n
SGlzdG9yeSwgU3RydWN0dXJlOjppbmRleGluZ01vZGVJbmNsdWRpbmdIaXN0b3J5T2Zmc2V0KCkp
IFwKICAgICBtYWNybyhIYXNoTWFwSW1wbF9jYXBhY2l0eSwgSGFzaE1hcEltcGw8SGFzaE1hcEJ1
Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT4+OjpvZmZzZXRPZkNhcGFjaXR5KCkpIFwKICAgICBt
YWNybyhIYXNoTWFwSW1wbF9idWZmZXIsICBIYXNoTWFwSW1wbDxIYXNoTWFwQnVja2V0PEhhc2hN
YXBCdWNrZXREYXRhS2V5Pj46Om9mZnNldE9mQnVmZmVyKCkpIFwKICAgICBtYWNybyhIYXNoTWFw
SW1wbF9oZWFkLCAgSGFzaE1hcEltcGw8SGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtl
eT4+OjpvZmZzZXRPZkhlYWQoKSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDYXBhYmlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkocmV2aXNpb24gMjMyNDQxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTIs
NiArMzUyLDExIEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAg
ICBjYXNlIFB1dEJ5VmFsRGlyZWN0OgogICAgIGNhc2UgUHV0QnlWYWxXaXRoVGhpczoKICAgICBj
YXNlIE1hdGNoU3RydWN0dXJlOgorICAgIGNhc2UgQ3JlYXRlVGhpczoKKyAgICBjYXNlIEZpbHRl
ckNhbGxMaW5rU3RhdHVzOgorICAgIGNhc2UgRmlsdGVyR2V0QnlJZFN0YXR1czoKKyAgICBjYXNl
IEZpbHRlclB1dEJ5SWRTdGF0dXM6CisgICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CiAgICAg
ICAgIC8vIFRoZXNlIGFyZSBPSy4KICAgICAgICAgYnJlYWs7CiAKQEAgLTM2Myw3ICszNjgsNiBA
QCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgICAgIGJyZWFr
OwogCiAgICAgY2FzZSBJZGVudGl0eVdpdGhQcm9maWxlOgotICAgIGNhc2UgQ3JlYXRlVGhpczoK
ICAgICBjYXNlIENoZWNrVGllclVwSW5Mb29wOgogICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JF
bnRlcjoKICAgICBjYXNlIENoZWNrVGllclVwQXRSZXR1cm46CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyMzI0NDEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTg1MCw2ICs4NTAsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIE5ld0FycmF5
V2l0aFNwcmVhZDoKICAgICAgICAgICAgIGNvbXBpbGVOZXdBcnJheVdpdGhTcHJlYWQoKTsKICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENyZWF0ZVRoaXM6CisgICAgICAgICAgICBj
b21waWxlQ3JlYXRlVGhpcygpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU3By
ZWFkOgogICAgICAgICAgICAgY29tcGlsZVNwcmVhZCgpOwogICAgICAgICAgICAgYnJlYWs7CkBA
IC0xMjkyLDYgKzEyOTUsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDYWxsRE9NR2V0dGVy
OgogICAgICAgICAgICAgY29tcGlsZUNhbGxET01HZXR0ZXIoKTsKICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEZpbHRlckNhbGxMaW5rU3RhdHVzOgorICAgICAgICBjYXNlIEZpbHRl
ckdldEJ5SWRTdGF0dXM6CisgICAgICAgIGNhc2UgRmlsdGVyUHV0QnlJZFN0YXR1czoKKyAgICAg
ICAgY2FzZSBGaWx0ZXJJbkJ5SWRTdGF0dXM6CisgICAgICAgICAgICBjb21waWxlRmlsdGVySUNT
dGF0dXMoKTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgUGhhbnRvbUxvY2Fs
OgogICAgICAgICBjYXNlIExvb3BIaW50OgpAQCAtNTY3MCw2ICs1Njc5LDQwIEBAIHByaXZhdGU6
CiAKICAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwogICAgIH0KKyAgICAKKyAgICB2b2lkIGNv
bXBpbGVDcmVhdGVUaGlzKCkKKyAgICB7CisgICAgICAgIExWYWx1ZSBjYWxsZWUgPSBsb3dDZWxs
KG1fbm9kZS0+Y2hpbGQxKCkpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGlzRnVuY3Rpb25CbG9j
ayA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGhhc1JhcmVEYXRhID0g
bV9vdXQubmV3QmxvY2soKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgc2xvd1BhdGggPSBtX291dC5u
ZXdCbG9jaygpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBtX291dC5uZXdC
bG9jaygpOworCisgICAgICAgIG1fb3V0LmJyYW5jaChpc0Z1bmN0aW9uKGNhbGxlZSwgcHJvdmVu
VHlwZShtX25vZGUtPmNoaWxkMSgpKSksIHVzdWFsbHkoaXNGdW5jdGlvbkJsb2NrKSwgcmFyZWx5
KHNsb3dQYXRoKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5hcHBl
bmRUbyhpc0Z1bmN0aW9uQmxvY2ssIGhhc1JhcmVEYXRhKTsKKyAgICAgICAgTFZhbHVlIHJhcmVE
YXRhID0gbV9vdXQubG9hZFB0cihjYWxsZWUsIG1faGVhcHMuSlNGdW5jdGlvbl9yYXJlRGF0YSk7
CisgICAgICAgIG1fb3V0LmJyYW5jaChtX291dC5pc1plcm82NChyYXJlRGF0YSksIHJhcmVseShz
bG93UGF0aCksIHVzdWFsbHkoaGFzUmFyZURhdGEpKTsKKworICAgICAgICBtX291dC5hcHBlbmRU
byhoYXNSYXJlRGF0YSwgc2xvd1BhdGgpOworICAgICAgICBMVmFsdWUgYWxsb2NhdG9yID0gbV9v
dXQubG9hZFB0cihyYXJlRGF0YSwgbV9oZWFwcy5GdW5jdGlvblJhcmVEYXRhX2FsbG9jYXRvcik7
CisgICAgICAgIExWYWx1ZSBzdHJ1Y3R1cmUgPSBtX291dC5sb2FkUHRyKHJhcmVEYXRhLCBtX2hl
YXBzLkZ1bmN0aW9uUmFyZURhdGFfc3RydWN0dXJlKTsKKyAgICAgICAgTFZhbHVlIGJ1dHRlcmZs
eSA9IG1fb3V0LmNvbnN0SW50UHRyKDApOworICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVz
dWx0ID0gbV9vdXQuYW5jaG9yKGFsbG9jYXRlT2JqZWN0KGFsbG9jYXRvciwgc3RydWN0dXJlLCBi
dXR0ZXJmbHksIHNsb3dQYXRoKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsK
KworICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93UGF0aCwgY29udGludWF0aW9uKTsKKyAgICAg
ICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcih2bUNhbGwoCisgICAg
ICAgICAgICBJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkNyZWF0ZVRoaXMpLCBtX2Nh
bGxGcmFtZSwgY2FsbGVlLCBtX291dC5jb25zdEludDMyKG1fbm9kZS0+aW5saW5lQ2FwYWNpdHko
KSkpKTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0
LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICBMVmFsdWUgcmVzdWx0
ID0gbV9vdXQucGhpKEludDY0LCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KTsKKworICAgICAgICBt
dXRhdG9yRmVuY2UoKTsKKyAgICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOworICAgIH0KIAogICAg
IHZvaWQgY29tcGlsZVNwcmVhZCgpCiAgICAgewpAQCAtMTIxMzYsNiArMTIxNzksMTEgQEAgcHJp
dmF0ZToKICAgICAgICAgc2V0SlNWYWx1ZShwYXRjaHBvaW50KTsKICAgICB9CiAgICAgCisgICAg
dm9pZCBjb21waWxlRmlsdGVySUNTdGF0dXMoKQorICAgIHsKKyAgICAgICAgbV9pbnRlcnByZXRl
ci5maWx0ZXJJQ1N0YXR1cyhtX25vZGUpOworICAgIH0KKyAgICAKICAgICB2b2lkIGVtaXRTd2l0
Y2hGb3JNdWx0aUJ5T2Zmc2V0KExWYWx1ZSBiYXNlLCBib29sIHN0cnVjdHVyZXNDaGVja2VkLCBW
ZWN0b3I8U3dpdGNoQ2FzZSwgMj4mIGNhc2VzLCBMQmFzaWNCbG9jayBleGl0KQogICAgIHsKICAg
ICAgICAgaWYgKGNhc2VzLmlzRW1wdHkoKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5jcHAJKHJldmlz
aW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxs
U3R1YlJvdXRpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NiwxMCArOTYsMjIgQEAgQ2FsbFZh
cmlhbnRMaXN0IFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aQogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKK2Jvb2wgUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmU6Omhhc0VkZ2VzKCkgY29uc3QKK3sK
KyAgICAvLyBUaGUgRlRMIGRvZXMgbm90IGNvdW50IGVkZ2VzIGluIGl0cyBwb2x5IGNhbGwgc3R1
YiByb3V0aW5lcy4gSWYgdGhlIEZUTCB3ZW50IHBvbHkgY2FsbCwgdGhlbgorICAgIC8vIGl0J3Mg
bm90IG1lYW5pbmdmdWwgdG8ga2VlcCBwcm9maWxpbmcgLSB3ZSBjYW4ganVzdCBsZWF2ZSBpdCBh
dCB0aGF0LiBSZW1lbWJlciwgdGhlIEZUTCB3b3VsZAorICAgIC8vIGhhdmUgaGFkIGZ1bGwgZWRn
ZSBwcm9maWxpbmcgZnJvbSB0aGUgREZHLCBhbmQgYmFzZWQgb24gdGhpcyBpbmZvcm1hdGlvbiwg
aXQgd291bGQgaGF2ZQorICAgIC8vIGRlY2lkZWQgdG8gZ28gcG9seS4KKyAgICAvLworICAgIC8v
IFRoZXJlIHByb2JhYmx5IGFyZSB2ZXJ5LWRpZmZpY3VsdC10by1pbWFnaW5lIGNvcm5lciBjYXNl
cyB3aGVyZSB0aGUgRlRMIG5vdCBkb2luZyBlZGdlCisgICAgLy8gcHJvZmlsaW5nIGlzIGJhZCBm
b3IgcG9seXZhcmlhbnQgaW5saW5pbmcuIEJ1dCBwb2x5dmFyaWFudCBpbmxpbmluZyBpcyBwcm9m
aXRhYmxlIHNvbWV0aW1lcworICAgIC8vIHdoaWxlIG5vdCBoYXZpbmcgdG8gaW5jcmVtZW50IGNv
dW50cyBpcyBwcm9maXRhYmxlIGFsd2F5cy4gU28sIHdlIGxldCB0aGUgRlRMIHJ1biBmYXN0ZXIg
YW5kCisgICAgLy8gbm90IGtlZXAgY291bnRzLgorICAgIHJldHVybiAhIW1fZmFzdENvdW50czsK
K30KKwogQ2FsbEVkZ2VMaXN0IFBvbHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lOjplZGdlcygpIGNv
bnN0CiB7Ci0gICAgLy8gV2Ugd291bGRuJ3QgaGF2ZSB0aGVzZSBpZiB0aGlzIHdhcyBhbiBGVEwg
c3R1YiByb3V0aW5lLiBXZSBzaG91bGRuJ3QgYmUgYXNraW5nIGZvciBwcm9maWxpbmcKLSAgICAv
LyBmcm9tIHRoZSBGVEwuCiAgICAgUkVMRUFTRV9BU1NFUlQobV9mYXN0Q291bnRzKTsKICAgICAK
ICAgICBDYWxsRWRnZUxpc3QgcmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWNDYWxsU3R1YlJvdXRpbmUuaAkocmV2aXNpb24gMjMy
NDQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxTdHViUm91
dGluZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCw2ICs5MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5Qb2x5bW9ycGhpY0NhbGxTdHViUm91dGluZSgpOwogICAgIAogICAgIENhbGxWYXJpYW50
TGlzdCB2YXJpYW50cygpIGNvbnN0OworICAgIGJvb2wgaGFzRWRnZXMoKSBjb25zdDsKICAgICBD
YWxsRWRnZUxpc3QgZWRnZXMoKSBjb25zdDsKIAogICAgIHZvaWQgY2xlYXJDYWxsTm9kZXNGb3Io
Q2FsbExpbmtJbmZvKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJv
ZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcAkocmV2aXNpb24gMjMy
NDQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVT
ZXF1ZW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEyLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00OSwxMiArNDksMTIgQEAgQnl0ZWNvZGVT
ZXF1ZW5jZTo6Qnl0ZWNvZGVTZXF1ZW5jZShDb2RlQgogICAgICAgICBtX2hlYWRlci5hcHBlbmQo
b3V0LnRvQ1N0cmluZygpKTsKICAgICB9CiAgICAgCi0gICAgU3R1YkluZm9NYXAgc3R1YkluZm9z
OwotICAgIGNvZGVCbG9jay0+Z2V0U3R1YkluZm9NYXAoc3R1YkluZm9zKTsKKyAgICBJQ1N0YXR1
c01hcCBzdGF0dXNNYXA7CisgICAgY29kZUJsb2NrLT5nZXRJQ1N0YXR1c01hcChzdGF0dXNNYXAp
OwogICAgIAogICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IDA7IGJ5dGVjb2RlSW5k
ZXggPCBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKTspIHsKICAgICAgICAgb3V0LnJl
c2V0KCk7Ci0gICAgICAgIGNvZGVCbG9jay0+ZHVtcEJ5dGVjb2RlKG91dCwgYnl0ZWNvZGVJbmRl
eCwgc3R1YkluZm9zKTsKKyAgICAgICAgY29kZUJsb2NrLT5kdW1wQnl0ZWNvZGUob3V0LCBieXRl
Y29kZUluZGV4LCBzdGF0dXNNYXApOwogICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IEludGVy
cHJldGVyOjpnZXRPcGNvZGVJRChjb2RlQmxvY2stPmluc3RydWN0aW9ucygpW2J5dGVjb2RlSW5k
ZXhdLnUub3Bjb2RlKTsKICAgICAgICAgbV9zZXF1ZW5jZS5hcHBlbmQoQnl0ZWNvZGUoYnl0ZWNv
ZGVJbmRleCwgb3Bjb2RlSUQsIG91dC50b0NTdHJpbmcoKSkpOwogICAgICAgICBieXRlY29kZUlu
ZGV4ICs9IG9wY29kZUxlbmd0aChvcGNvZGVJRCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAkocmV2aXNpb24gMjMyNDQx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgyLDkgQEAgRnVuY3Rpb25SYXJlRGF0YTo6fkZ1bmN0
aW9uUmFyZURhdGEoKQogCiB2b2lkIEZ1bmN0aW9uUmFyZURhdGE6OmluaXRpYWxpemVPYmplY3RB
bGxvY2F0aW9uUHJvZmlsZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
T2JqZWN0KiBwcm90b3R5cGUsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgSlNGdW5jdGlvbiogY29u
c3RydWN0b3IpCiB7CisgICAgaWYgKG1fb2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50
LmlzU3RpbGxWYWxpZCgpKQorICAgICAgICBtX29iamVjdEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hw
b2ludC5zdGFydFdhdGNoaW5nKCk7CisgICAgCiAgICAgbV9vYmplY3RBbGxvY2F0aW9uUHJvZmls
ZS5pbml0aWFsaXplUHJvZmlsZSh2bSwgZ2xvYmFsT2JqZWN0LCB0aGlzLCBwcm90b3R5cGUsIGlu
bGluZUNhcGFjaXR5LCBjb25zdHJ1Y3RvciwgdGhpcyk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDIzMjQ0MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjc1LDYg
KzI3NSw3IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW4KICAgICB2
KHVuc2lnbmVkLCBtYXhBY2Nlc3NWYXJpYW50TGlzdFNpemUsIDgsIE5vcm1hbCwgbnVsbHB0cikg
XAogICAgIHYoYm9vbCwgdXNlUG9seXZhcmlhbnREZXZpcnR1YWxpemF0aW9uLCB0cnVlLCBOb3Jt
YWwsIG51bGxwdHIpIFwKICAgICB2KGJvb2wsIHVzZVBvbHltb3JwaGljQWNjZXNzSW5saW5pbmcs
IHRydWUsIE5vcm1hbCwgbnVsbHB0cikgXAorICAgIHYodW5zaWduZWQsIG1heFBvbHltb3JwaGlj
QWNjZXNzSW5saW5pbmdMaXN0U2l6ZSwgOCwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihib29s
LCB1c2VQb2x5bW9ycGhpY0NhbGxJbmxpbmluZywgdHJ1ZSwgTm9ybWFsLCBudWxscHRyKSBcCiAg
ICAgdihib29sLCB1c2VQb2x5bW9ycGhpY0NhbGxJbmxpbmluZ0Zvck5vblN0dWJTdGF0dXMsIGZh
bHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KHVuc2lnbmVkLCBtYXhQb2x5bW9ycGhpY0Nh
bGxWYXJpYW50TGlzdFNpemUsIDE1LCBOb3JtYWwsIG51bGxwdHIpIFwKQEAgLTMyMiw5ICszMjMs
NiBAQCBjb25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3NlbWJseVN0cmVhbWluCiAgICAgXAogICAg
IHYodW5zaWduZWQsIG1heGltdW1WYXJhcmdzRm9ySW5saW5pbmcsIDEwMCwgTm9ybWFsLCBudWxs
cHRyKSBcCiAgICAgXAotICAgIHYoYm9vbCwgdXNlUG9seXZhcmlhbnRDYWxsSW5saW5pbmcsIHRy
dWUsIE5vcm1hbCwgbnVsbHB0cikgXAotICAgIHYoYm9vbCwgdXNlUG9seXZhcmlhbnRCeUlkSW5s
aW5pbmcsIHRydWUsIE5vcm1hbCwgbnVsbHB0cikgXAotICAgIFwKICAgICB2KGJvb2wsIHVzZU1h
eGltYWxGbHVzaEluc2VydGlvblBoYXNlLCBmYWxzZSwgTm9ybWFsLCAiU2V0dGluZyB0byB0cnVl
IGFsbG93cyB0aGUgREZHJ3MgTWF4aW1hbEZsdXNoSW5zZXJ0aW9uUGhhc2UgdG8gcnVuLiIpIFwK
ICAgICBcCiAgICAgdih1bnNpZ25lZCwgbWF4aW11bUJpbmFyeVN0cmluZ1N3aXRjaENhc2VMZW5n
dGgsIDUwLCBOb3JtYWwsIG51bGxwdHIpIFwK
</data>
<flag name="review"
          id="360008"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
    <flag name="commit-queue"
          id="360020"
          type_id="3"
          status="-"
          setter="ews-watchlist"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>341861</attachid>
            <date>2018-06-02 20:04:43 -0700</date>
            <delta_ts>2018-06-04 15:36:05 -0700</delta_ts>
            <desc>Archive of layout-test-results from ews205 for win-future</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>13363701</size>
            <attacher name="EWS Watchlist">ews-watchlist</attacher>
            
              <data encoding="base64">UEsDBAoAAAAAALmUwkwAAAAAAAAAAAAAAAAOABwAYWNjZXNzaWJpbGl0eS9VVAkAA21GE1ttRhNb
dXgLAAEE6AMDAAQBAgMAUEsDBBQAAgAIAGuUwkykrycZ0AAAADgBAAA0ABwAYWNjZXNzaWJpbGl0
eS9hZGQtY2hpbGRyZW4tcHNldWRvLWVsZW1lbnQtYWN0dWFsLnR4dFVUCQAD2UUTW9lFE1t1eAsA
AQToAwMABAECAwB1jstqw0AMRffzFRdvugletF8QggsFhxhs6FoZy/YQeabMA+O/r0qSRRbdCCEd
zr0t+bnQzGhWcgJzphsjlcjIC2VsDNK9/IyUnZ/1yIjsR464SrA3TBI2sPDKPr8l2MXJqABsiJFt
lr025uLVaC2ndMAeCjYngsSq1hkdJ4QJVXfs+wqrUlpHySmIunnEdUc1NP2A0+Xctc3QVOo0f/gz
uH7GnkLxGS7hw3wev9p//mkJRdTLeK/xTUrXd92j5VRE9o5i0nB15VjYmJcGxvwCUEsDBBQAAgAI
AGuUwkz/RcTc4QAAANgBAAAyABwAYWNjZXNzaWJpbGl0eS9hZGQtY2hpbGRyZW4tcHNldWRvLWVs
ZW1lbnQtZGlmZi50eHRVVAkAA9lFE1vZRRNbdXgLAAEE6AMDAAQBAgMAxY/BasMwDIbveQrdU8WQ
MnZNFzIY7VhYAj07trYY3LhE8ta8/eLSHrfrEEhCfPr1CxFBmeXTzu6LVJ3abzepMZxIDdF5OwRR
Rxr27l6e0lS9kyfNK+Ombam8XkIUFGLBmTh6YaWNIWY3OO9kUdpaNOO6OdOEZ6ZoA64SJ5oE6XIm
I2QLuUiW5/m/G9JGovZXO1UF+LB5hDylqsogRbvrOrjBxV2kDnEScAzbDP8Gyix/3r0cfgF4DNFb
GAjKAo561StuFzleP/iI3i+tnplsUpM5UjLVN10P9dtre2j6JvsBUEsDBBQAAgAIAGuUwkxhcjmv
vQAAACkBAAA2ABwAYWNjZXNzaWJpbGl0eS9hZGQtY2hpbGRyZW4tcHNldWRvLWVsZW1lbnQtZXhw
ZWN0ZWQudHh0VVQJAAPZRRNb2UUTW3V4CwABBOgDAwAEAQIDAIWOPQ6CQBCF+z3FC42NsdATGEKH
kQQusCwDbBx2zf6EcHvHKIWVzWQy78v7ptZuynoiVIu2DHXTD0LMgZBmnbAStOz5Oehk3SRHQiA3
UEDP3jwwsl9BTAu5dIgws+VBABgfApnE20mpu5NGYyjGIzafsVpmRJJqmcFShB9RNNe2LbAIJe8I
OXqWbhrQbyi6qu1Q3m9NXXVVIZ3qje/i064tfXYJNuLyJz9/8u9bY2beGh2i2CRMIZNSP0qlXlBL
AwQUAAIACABrlMJMt1EVIQMIAADjGwAAOgAcAGFjY2Vzc2liaWxpdHkvYWRkLWNoaWxkcmVuLXBz
ZXVkby1lbGVtZW50LXByZXR0eS1kaWZmLmh0bWxVVAkAA9pFE1vaRRNbdXgLAAEE6AMDAAQBAgMA
vVlrb+O4Ff2eXyEkaAMsIsmO44wfGRczeaBFZ9ugCbAfC0qiLE4oUSWpxJ62/72XL1mSJdvAbjeD
jB68JM99nkvlLpM5XZ3dZRglcMmxRF6cIS6w/HxZydSfXcJrIbcUr84WlBRvV97inQgiceL9+8yD
H4k30k9wzDiShBULr2AFXuqhiPEEcz9iUrJ84Y3LjZfAPU6WZ/89M8vZRWJGGV94F6PJXI8FT4Ti
B5KmdjxC8duas6pIfCeaztS/5kZmB8EoSbyLJEnMWMoK6acoJ3S78HJWMFGi2ALMEV8TgDzGuTcy
r0oGymk9OKag0TvWgLJxB+lkMulZX6BC+AJzkjYGBfmB9R7NTX2KU7nwRsHUvU+IKCmCRUgBlrEI
P0giM5g8Gv3B4kNJQop1PdNgs65Rd23vWLikyACUrMUz9o55R6PpdLocMjbGxgyB8sk32EvYySll
CNTgZJ3JtueU1D2oj0AXtxUD0xMJKo46KksUUezHmNKWlr5et2Wljwy087UPVah9cFTukL3gWPlu
MGj05HbIdMPFxqyzOwTUqNyYHR43JbgX1gfV8JUXqEtXw0F4giQ42qr/PQ31K2Xx2zPiMgBVFynh
QvpxRmgyaFi13QvMvzq0GMc5uPbqyH52D2d+E3B+pERaYTd1UQfRIkmMqI8oWUNuSNajFscq0v+M
ioRiZw67jjKhes6wcegunuOKC+UaBbubgSgC71TOY7BnHTgmeTS8Qyhacb4fDmuOt8tOYAbTY/4y
JvYCyY6aOUg5yzvGtvVR7aGs/rcqjzCHaMLN6DJvHfD9Mmqjdj5vFUCXLn1l0GXyzc1Nb7lper+u
MWqhqUkBkwZ1wbdxYMOzL0QM3FY4TWzBaiiuVewtOIYkBs1yoEiVXGWngmkN6KqJjRqnSCtXYZJv
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
IVzPfkdED7cievzij7lHDPsH6NAhpHVQaTkhmMbeOyKNve3DZwZ6yGVzuO+y+UhizAzXXH15K3Kp
eO1/iv81fvQHBri063+V9B9QSwMEFAACAAgAcJTCTHkLVc8MAQAAwwEAADsAHABhY2Nlc3NpYmls
aXR5L2FyaWEtaGlkZGVuLXVwZGF0ZXMtYWxsZGVzY2VuZGFudHMtYWN0dWFsLnR4dFVUCQAD40UT
W+NFE1t1eAsAAQToAwMABAECAwBtkE9rAjEQxe/5FI+9tAW7oL31JmpBsCjsQs/T3VkTyCayk6B+
+86qpX/wMoR5b37zJlXigxiTWJKp9I3pK5YREntO1oX9tTm7NCnEZHnAL+HlIsTA8CTpptTWCUai
VksJrgMNjp6ta1sOaCyFPYtOKRHsueeQJiDv4dKDgE9OknLU6Hw76MTRqZYPLSVWIrvhR2qosawH
bAMkNw2LTHCO+ToizCCtgxvXdSh286oq0KuLNMEEXfQ+HrnF5xlFvapqLLbvu82qXhWlMWa0oycX
yu99i5iDHiSYmrf5enNPFBuzVyJjVuKD1Fr+B83TOrR8epw+3QNfzLdjuuz9eUeDaMbxU4fMxvwJ
aswXUEsDBBQAAgAIAHCUwkz9/EBX6gAAAP4BAAA5ABwAYWNjZXNzaWJpbGl0eS9hcmlhLWhpZGRl
bi11cGRhdGVzLWFsbGRlc2NlbmRhbnRzLWRpZmYudHh0VVQJAAPjRRNb40UTW3V4CwABBOgDAwAE
AQIDAM2PsU7DQAyG9zzFjaBwOVIG1oRKSBUMFR06O2eXWLpeqrMPkrcnCWKiYkaWbMv/L/uztdY4
P71j4g9y26X95Oj64UyuyxywG9QdqXvhn/K0TN0bBQKZPRwfNi7ANGS1SqI2keSg4sB7EuGOA+vk
IDHYnhEp2nxBmK0WQkASTxEhqlgaL+SVsNJRi7Is/wsXeM0QVqqmMba+v3s05ZqbpjBL7NvDwZyB
Y+X7GSJR3A45qmExdWH/UDdF+dzuXq+p0g85oOnIbCpzhHlT9etQq7uINN7Ut9cOf7slr/+ecgjT
HpIQLqqmTDP5F1BLAwQUAAIACABwlMJMaAqD9PwAAAC0AQAAPQAcAGFjY2Vzc2liaWxpdHkvYXJp
YS1oaWRkZW4tdXBkYXRlcy1hbGxkZXNjZW5kYW50cy1leHBlY3RlZC50eHRVVAkAA+NFE1vjRRNb
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
XJkoHGMJGXWve9gHKTJtff160uoRnx522/dvpsK8diaJhmzXSIX0MH+TAL4AUEsDBBQAAgAIAHCU
wkybKTF+3wAAAK8BAAAwABwAYWNjZXNzaWJpbGl0eS9hcmlhLWhpZGRlbi13aXRoLWVsZW1lbnRz
LWRpZmYudHh0VVQJAAPkRRNb5EUTW3V4CwABBOgDAwAEAQIDAMVOwU7DMAy99ytyD17YOCBx6lZV
QgJEtVaCa5oYailLUOKw9e9pOnHgC5ClZ+u9Z/sBgFBm/rSRvlE1ZTyTV1M4oRozOTsGVm84PtFv
OxRWHdGhTouH/N1OOT2HzMCYGCKm7DgpbQymRCM54lnpSBomshY9nIknWPZP6DkBXr7QMNoNX7iS
Uv5zHG04a7eGqWsB293NvZAr1nUlSnX7vhdmWt5uVozom5A9C0ritoKrEoPDQjxuK/mX2b8fl+mh
KNdTKa/RPrJzc6djQltsHDOWb0PbD6J5feme26GtfgBQSwMEFAACAAgAcJTCTC/l8ELbAAAAVwEA
ADQAHABhY2Nlc3NpYmlsaXR5L2FyaWEtaGlkZGVuLXdpdGgtZWxlbWVudHMtZXhwZWN0ZWQudHh0
VVQJAAPkRRNb5EUTW3V4CwABBOgDAwAEAQIDAGWQTU7EMAxG1/gUVtcwGo4wGlViAWpFe4E0+ToN
eBIUpyq9PekUBBKbJzl+jn8sRO7sD8j+DylD8w6aYJwPF6J+8srbW+FkMpvkzcPknUPgJaZ3ZaOM
zw/YDMcxMARXhF8drPNgxahCOY58shaqfvDi8/qK4JCa4a2UEzWhuLf0Pa9x5sWLsAJsCpPf66v2
1HUVX4tlLijmGEXiUpoPK1d93fV8bl7a57qvqwMRbTrbyYs73JgQznEOmcteR9oTKQq2+Olx17+n
GGeRtTVJy+fbFdKMcpC/HYi+AFBLAwQUAAIACABxlMJMKRFPueAHAAB3GwAAOAAcAGFjY2Vzc2li
aWxpdHkvYXJpYS1oaWRkZW4td2l0aC1lbGVtZW50cy1wcmV0dHktZGlmZi5odG1sVVQJAAPlRRNb
5UUTW3V4CwABBOgDAwAEAQIDAL1Za2/jNhb9nl8hJGgDFJFkx3bGj4yLmTxQYDvtYBJg91tBSZTF
CSV6SSqxp93/vpcvWZIl20AHnWCiBy/Jc5/nUrnNZE6XZ7cZRglcciyRF2eICyzfX5Yy9aeX8FrI
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
X3kFQRMaqRQ4RBBhtBIdmA2Ml+l6PYZ9yBJbDJkbo5RpsIayhXGRrQu4yX8tb7MiG8cjCB/rVsDW
Gn+IO5Q8kGQK96gppYWu8XhxfRlboxCkg0n6sArhFNKHuScyejJQgCS9KhRdPIX5XVHkvwcJJO8S
rEQtzScwkncxVun3Rf4KE/1IF7fD7HA741UwFuFfU2IodhYbwGOFB5JGQ9EeMLPW2Cn4ILKROpQk
YGhDIDSY8k+4eHCBj0J5QVJvYTKEYXI5EPjp3KfEb4pwFuCeYRhx8oHFJ1X//9jJZ3xOPvD59Jad
BfvFbejfxXPn2Hil2qWw7kmerMeuCbzpC6O/UEsDBBQAAgAIAHOUwkxM4f6CCQEAABYCAAAkABwA
YWNjZXNzaWJpbGl0eS9hcmlhLW93bnMtZXhwZWN0ZWQudHh0VVQJAAPqRRNb6kUTW3V4CwABBOgD
AwAEAQIDAI1RwWrDMAy9+ytELt1gC8t26y3dcghsS2g86NVNlMTg2MWWSfP3s2kYHfTQiySjp6fn
p5JwgoyVMb1e0hvb/XBefbN9/lFWsD74KB0QOgpxFATCSvFsZu2gNdZiS2oBPJ+MQwf5oYoNobur
pkXyVsdpBCuHkQAVTqjJMVZpcL5t0bknWIyHWSoFDhFEiFYGStNDUudNk8AUUGLAgOyNUmbGDo4L
JLxoOLxXX/VnwYskZYxFOAzW+FMaxUZJxWVjTqXu8Pzw8phaoxDCzzb5YR/KbdC+80RGb+6bJ0l/
BDzW29Wwe+azm/v3opPmfhHZTRHXt1tZVod7r9RSC+uCcfGk1iNj/9xj7BdQSwMEFAACAAgAdJTC
TEP5qnwBCQAALCUAACgAHABhY2Nlc3NpYmlsaXR5L2FyaWEtb3ducy1wcmV0dHktZGlmZi5odG1s
VVQJAAPrRRNb60UTW3V4CwABBOgDAwAEAQIDAM1aa3PbNhb97l+BiWfjtmNSkmU7lux4x89pZtPG
E3tn+20HJEETCUioAGhL2d3/vhcviqRIWW6TuMnEfOACOPd9wPgkUzk73TrJCE7gkhOFUZxhIYl6
u1OqNDjagddSLRg53ZoyWnzeRdMHKqkiCfrPFoI/isxVkJCYC6woL6ao4AU5NkMRFwkRQcSV4vkU
jWZzlMA9SY63/rdll3OLxJxxMUXbw/HEjIXXlJFLmqZuPMLx53vByyIJvGh6pP/WN7I7SM5ograT
JLFjKS9UkOKcssUU5bzgcoZjBzDH4p4C5BHJ0dC+mnFQzughCAONHogBlI1aSMfjccf6EhcykETQ
tDYo6Rdi9qhvGjCSqikahgf+fULljGFYhBZgGYfwkSYqg8nD4d8cPpwktLivZlpszjX6rukdB5cW
GYBSlXjGH4hoaXRwcHDcZ2xCrBlC7ZP3sJd0k1PGMagh6H2mmp7TUhegPgZd/FYcTE8VqDhsqaxw
xEgQE8YaWgZm3YaVHjPQLjA+1KH2KPBsieyWxNp3vUFjJjdDph0uLma93SGghrO53eFqPgP3wvqg
GtlFob60NeyFJ2lCooX+iQzUc8bjzzdYqBBUnaZUSBXEGWVJr2H1drcwf3fdYoLk4NrdJ/Zze3jz
24ALIi3SCLsDH3UQLYrGmAWY0XvIDcU71BJER/rPuEgY8eZw62gT6ueMWIcu4zkuhdSu0bDbGYgj
8E7pPQZ7VoFjk8fAW4eiEeer4XAvyOK4FZjhwVP+siZGoeJPmjlMBc9bxnb1Ue+hrf5rmUdEQDSR
enTZtx74ahl1UTuZNAqgT5euMugzeX9/v7Pc1L1f1Ri90IFNAZsGVcF3ceDCsytELNxGOI1dwaop
blTsLDi2SfSaZU2RmgmdnRqmM6CvJi5qvCKNXIVJgc1WMwT2NI+ghyD4c6BfWEA0x/ek4Zkp2qsM
HjGsragFYygNgAGguDvU1nvplaP9SW/tTUm6LAA6rGDFqj3WsrljapImzangbNkvPiGT43U9vVrJ
VZk6DpcV/e06SVYWQAlh/TPI5Ek0g5/QbTmbcaGg0woXyWDUPCeFkuinAeyHS5Vxa2/bjTWZgahX
EKex95SZYGR6+n8lo8FgCAkj7MvZoQ9sXW4wYxceQaf0nu1lOZ4HrfaeAy9wr/aGVd9pbw12X7tP
ldlVSje26cIZ8hmxbTN4JNFnqgIldNpZS1jgKNyTxzU19p3S21JhVcrzMoIeXvXDUGdPJxw9RXHO
Iiya437rlBGTocuBnH+p3lbFaWzz2PEofevZgr7vp4R9lWMtlVuGRUrnxK7j6vGwqVKIDQexabba
xR8p1ALRCrVqzS8BLRIyhyK1RrVlI6xB6NLLFaNGeztyVazQMF3CdrYm2C/i8yeBHi6BjmwQ+yZk
nwxYd191MPdYAa6YWWNrmgqcW4StPGnSiFqOXPRU2lXbLIBr8kfX6wkD4giceYPGdDi5XoaX68k9
g8YQzbGKRiar9LhJjt0a1nyrMdxLCRJfZ+02Z74o+KPOsD5653tk60xy+MYXtFWYa5KkdtqRObZc
vl5zCy7g9XFPlXH6awomuza3evi8HnaJMBwRNsUpZNjuynT73ixiGnIBqr5C/0WvjreqRlxr3+3Z
DAND52mgFjPSudSrXkROsHXEzQgzBbIio1iT0Z4etZ0TKT3x6LVzl1tq2XFrCvUmrRBaDBCiB8pL
eVG9ATL7hRQXtWbZ1ec95Wi3mHpz0bUcotZEgq/t7tlFoisiY98DN0LjQgM4DlE6JxrtwtG+HtJX
77NRCVlV1OuO7+8JfZimPHY25KXS9aKefhErTSdxQxAvKWCBDjbyitSbpVkFOMxdRuxOA9dp7wG/
1kFxpGAsstIu1CR6oFjXZPWLiwkAGwn+CA4HJpBhmOtIEVWhJkGVHvuHjsVXVMQ9++qgiaz+N2w2
Uf9Jp83xc5rAKcsqph0k/eG7o6MAD+MSP4DtwQKk1VfqJ72VVheMwrGlTMuPH777d/hg+/LyspbS
20fXl9cH1531CchldxRfXV11oZ6SfAYVquF8R9NakiHcAtJG5l9NjoZHrm7FjGDxb0MP/FFAvzHH
pkyLnAzcV7cTGQs6A5+K+O2rTKmZnA4GNo9CLu4H+BOeDxiN5ODT7yURC3cBo+2HeyEwyvCTfHUK
y5llTlFzwZgnJNCuI48g93dwsPbh2/2j2hTA4r4PRjxZwAXSAOBiKd/u+AOA/kyYjU4H8eI+EcAr
Bhf6FsjOIOM5GUQlZQmoNvgXif5B/eVcvx18hO6LJcjQYrw3gKgB0waKQLWFo3zJlBzgOIZIpxFl
0B8GWFAc8EeocEBhSsxCNVeAcNQEVvsctLM6Yo7pfe/18R3JDPh00hLRZxfU+OxjPo9CK/US5sC/
ZBE7p0dgRhg/bUhBXj8tA7155/RDAcls1N9FYBhIZMagNBDohrq+E4l4il7/XnJ1fHN2e2vvkGsW
MCflmuYAtYkWTuzu6vYOXXz45eb91d2VfRW6/cHRoOyfVnmygcqTfpW/LpjRcAM0PUKdcMylDqqW
ylraDK9C3yzq7Ln4yairya1XfrSB8q+LSM6O1xgATumnN6ASXMw9xJl9QrpqzkKdkB8gH68Y0f3z
TL3TR4Mfhj+GgkPbMnNobb6s3aPX28CH7Iuz3z5yzUfOfjs3HdgI1MafFRgbm2jvZU2kqHqeje70
hCk6/+fd3Ydfv4+Jxi9ootEfj6KPOKH8e4bS/sva6Y+G0sezy3cfNgyolerXrF/Az54uXk5orS3X
mIlvUuKsLeEkcHp9MtAXc3/27r192rByaVGZ8ZIltUVQBCPmcaVg6Zch0HlBHhGZx2Rm/jfqDk6M
V0JoDggck6SAPkFUAjcGgxWIR5+Ap6AfyANmJVaaNdZ2M77YBK0R/NHNfFZ4f11/7H0Tf7jYftIh
zer4Uv4waP8qDhl/fYeMnp0g9Vr8Il4Z/bWyZP+bOOWZWdIo/C/llSdz5ZsS7q91zBsdbOL1g36v
69ObP+qlJWOLG/1bOMbWSpTkKx+KDjdBe/jdzmhvNoHzph9O40z7Z+KndTHfO04G9pek/g9QSwME
FAACAAgAdJTCTLmUbGzBAQAA4wkAACYAHABhY2Nlc3NpYmlsaXR5L2FyaWEtcmVhZG9ubHktYWN0
dWFsLnR4dFVUCQAD60UTW+tFE1t1eAsAAQToAwMABAECAwClls1u2zAQhO98ioXPSQ+S7AK9qY7y
A6S1EQttr4y1ignQpEGuYuvtu3KdNikshVQuBCR9M8sdrgCWG+WB0BOvG0m8IDiUlTW6BU+SEGx9
fJv/+iF1g7BzdoeOWmDh2jqHa2LU4c46wgpq68BIUs8I0lRgrLk8PaLGLRryn4RYGPDNeo3eX0Br
G9grrcEjS3h1Cn1XdLLMV6sJbJmST8hkbbW2e67x2MKkLFYlzBfflvdFWUzYUxQnfyB77OgLZJ+F
uM7v7mFDW11UiuSjxiv1fOd/uj8PXRO11B4vAA87boXdyTUoutr/y5IzurP+aUCBc7ps5MamoRub
xRT4bs1wZn3ocE5v2eCopFOyxAN9tYfQJjrJA8/ygmc5H5T/6+SF79hrhbqKo5M4PI3Ds2A85384
Ck6i6PTj9PFQaSDl3ikIOaJeMU/faD31BzvIJ7GCNGbCb5yq5qh1b8ivoSTGeW51szW3HBe6QffX
YFSFB7sPsP9LJbG5vJtJlGPpEN91fYGSMWeYBh1iNsZ6GmQ9GzsfafCAZGNLTINLzEbNYBo2hNko
82mYefDOT9enutG6XUrn+WN3keu+izdXIyF+A1BLAwQUAAIACAB0lMJM+iFWNRUCAABvDQAAJAAc
AGFjY2Vzc2liaWxpdHkvYXJpYS1yZWFkb25seS1kaWZmLnR4dFVUCQAD60UTW+tFE1t1eAsAAQTo
AwMABAECAwDFV9FumzAUfecr/E4YGjZM2lPSlG7VujVqkPps4Ha15MCETRv+fiYZU1YZc0GT+hIS
OOf63HvuiUQQBCQsup9lI14g3PZfX0UVPtcHCPNWyDKvdfgI+TcxXK76u+EDSODKYERFo1Dyrm51
oEHpoAHVSq1CXhSglMiFFLoLeSO4ecTLupJdAMdfUGgoP+ij9nzffwcJvNAtlycB6zUJ4tXHhPin
z/XaIx5JJRyg0oromvRFPxP2ydwPdpv9njzrg0xLoXku4Vq83KrH5vyDCENoWvD8m83tnRv3xKWC
FRlmceYRW/3IQrQroRYpViDDaqYI0VYiW9ptjO42wTaRzNLyo67cpo1iJ4z6FzzuVb+pGRz1VX10
duis53BqtL5jMD3nwYTn3oRn4+RfTGcg9OAbAbKcCbfOs49rxFaUEf986QNrrbExaY/wR/Zw+h/g
ZxO1vec3Nk9M6A3aGI4n6D8aJwHRJIKOrqF2ODu+fJi9GGdPT8FRwD4VBCGazaCzwvWlEeUWpBzf
qEtUNOqIAzWhYFvL9lB9NaOFxq3iEulW4kBO/dnUrxgpf2FuHWMwhCnThkybMe/UrAGYPnlAuU8f
QSGXkeK2kaG2kS2SEOMkJCgJyeJAUHwiGDoRbLGcGC8nQctJlgWUIhPKcAlly1TESBUJTgV+Fqo9
vWY8tVJ2O94o83Soa94jsnSfke39991dmqXeb1BLAwQUAAIACAB0lMJMBR5BtaABAABzCAAAKAAc
AGFjY2Vzc2liaWxpdHkvYXJpYS1yZWFkb25seS1leHBlY3RlZC50eHRVVAkAA+tFE1vrRRNbdXgL
AAEE6AMDAAQBAgMArZXfT8IwEIDf91dceFYftoGJb4jzR6JCYFFfC7tJk9KS9gbsv7coGMBt3BJf
mnT9+l3vekvTuXRA6MiPc0F+QLAoMqNVCY4EIZj8+2v/402oAmFpzRItleA3zoy1OCOPWlwaS5hB
bixoQXKFIHQG2ujL3RQVLlCTuwqCoQZXzGbo3AWUpoC1VAoc+i1+tBLdNmhn1J9MOrDwlPhET+ZG
KbP2MaYldNJkksJg+DJ6TtKk451BsvMDme+MbiC+DoKtBOa0UEkmSUwV3snVk3u3P5NtEmQLrMTC
Yy4XylWDEVMYM7kuN3CvSfhqdG3OJ8pjNGzB1qYurBQpbujWbJqQse+1oe+1fh1+En3Pb9l7iSpr
R4ft8KgdHrPxvv/HWsFhKzr6J5qqq1x9hSkH9t3D5qmyUH/Xw3NAY5M+WJkNUKnaIhxCYZNpYFSx
0I8+PbSNtkOw0Tg2a4bulwrP5Xk2x0ZDahHPWvZQyKl5xCp6zFF1Waoe9/4i9gXGXGWXreyxeiLi
NUXMknV5stqT7Z7zvFCqHAnr/Cu9Xw+Onuog+AJQSwMEFAACAAgAdZTCTAIsWxnECgAAU2AAACwA
HABhY2Nlc3NpYmlsaXR5L2FyaWEtcmVhZG9ubHktcHJldHR5LWRpZmYuaHRtbFVUCQAD7UUTW+1F
E1t1eAsAAQToAwMABAECAwDlXftz27gR/t1/BSee1jM3ph58yJLsuJP40btp7i5z9sz92AFF0EIC
EioJ2VLa/u9dEABNUqRES5ZqyckkfOC132K/3cVaUS7GPKSXRxdjjHy4hJgjYzRGcYL5x5MpD8z+
CbxO+Jziy6MhJdH3U2P4SBLCsW/8+8iAXxzPuOnjEYsRJywaGhGL8Hna5LHYx7HpMc5ZODS6k5nh
wz32z4/+eySnU5OMGGXx0Dju2IO0rXVLKL4mQaDaPTT6/hCzaeSbumvQF7/zC8kVEkaJbxz7vi/b
AhZxM0AhofOhEbKIJRM0UgKGKH4gIHIXh0ZHvpowAJfiiDEFRI84FWjcLUlq23bF/AmKEjPBMQly
jQn5gdM18ouaFAd8aHRarn7vk2RCEUxCItCMkvCJ+HwMgzudvyj5kO+T6CEbKWVTWyPuirujxCXR
GITiWfcxe8RxCZHruud1ysZYqqEl9uQLrJWowQFlCGDE5GHMizsnel0BfARY9FIMVE84QOyUIHPk
UWyOMKUFlGY6b0FLT2NAZ6Z7KEztKUaTZ8nu8EjsXa3RpIOLJlM2F2WzWu9gUJ3JTK5wM5vA9sL8
AA2fGi1xKSOsFS8hPvbm4m8jFfUzZaPvX1HMWwB1GJA44eZoTKhfq1ix3B2MP102WYxD2NrTFeup
NbT6pcGZnuhSMDtXWx1YCycjRE1EyQNwg7MKWDEWlv4zinyKtTrUPEKF4nmM5YY+2/NoGidia4TY
ZQYiD3ZnqncM1swMR5InFW+ZFAU7XzSHhxjPz0uG2XJX7ZdUsdHibKWaW0HMwpKylX8Uawit/zYN
PRyDNeG8dcm3WvBFN6qsdjAoOEBNlyo3qJnsOE6lu8nvfuZjxESupICkQebwlR0o86wyESluwZxs
5bBywFOIlQ5HBolatSxxUpNYsFOIqRSovYmyGg2kwFUYZEq2pk2gz/QRcMQYfTfFCykQCdEDLuzM
0LAyhXsUCS2KjiNwDSADiKLujDLu513pO4Na3xvg4NkBCLOCGbPwmGNzxVA/8ItDYbOT+u4DPDhf
FtOzmZSXycuhWFEfrn1/YQLDx7R+BB6slKb9k3E3nUxYzCHSxsqSQalhiCOeGD+1YT005WMm9S2j
sUhmwOo52OlI71Q6IO1TE/+zPkIYBCaRdtburKcNW7gbROmVlqCytyVjWYhmZim8h5AXqFdWJ4s7
5aVB70vXyZidUbqwTJWcLTbBMmyaT9j7TrjJY0E7qQkpuNGykvMcDEeBPk444tPk89SDGJ7Fw5Zg
T6U4YghnjHooLrbrpQOKU4Y+N4TsR/Y2c0625LHKo8StzhbEfX1KWOc5lqZyz2YRkBmW8yh/3ClC
aqE0B5E0W4ziTwR8QVwytWzOHyaJfDwDJ7UE2nMgzIlQhUs5o0J46ysvFgkxFWErQxOs57HZSkF7
z4J2pRHrICSfUmHVfRbB1GMmcJaZFZYmQYxCKWGJJ8U0IseRqxpPu6ibOeSa7EnFekwhcYScuUFg
6g1un81LxeSaxlQRxbYsjfQX0+NicqzmkOpbtOHalMDXflYu80k7BX3U6eRb73WMLJ1JemfaoS2K
uYQkudNOEiKZy+d9bsRieH1e42UUfpGCJVWLSxya152qLhR5mA5RAAw7XRgu36eTpAE5AqgfjP8Y
H86PskCcC9/l0RRBhs4Ck88nuHKqD7USqY6lI+4Y09RBZskoEsloTYw6DnGS6MSjVs9V25Jjx13q
qJuEQggxkBA9EjZNrrI3kMz+wNFVLlhWxXmdcpRDTD64CF8OVptagvbt6llZonIito6BjaRRpgE5
DuaCE4VwodK+mqQvH2e9KbAqyvsdHd998jgM2EjpkE258Bd5+nl0mkYS1QT2EoAsEMG6Gkg+WKaz
QA5zP8ZypbaKtA8gv8DAmcGhzZO9laklxiNBwifzX5VNgLBezJ5gwyETGCMYq5IiwlsiCcpwOD2V
xWepiHrW3kEksuJPpxhEdUmnnOOHxIdTlgQmNijRh++KiAJ5GEvQI+geNIBLcSV/0lsIdWa3ZcuU
6bn4oaN/xR4cX19f5yh93L+9vnVvK/0TJJfVVnxzc1Ml9RCHE/BQhc1XaVqpZwtuQdIC828G/U5f
+a0RxSj+Z5oe6KOAeJMem8aiy0VbVd0uklFMJrCn8ejjhzHnk2TYbksetVj80Ebf0KxNiZe0v/1r
iuO5uoDSnJbVgoyy9S35cAnTpdNcGsUJR8zHptg6/AT9/gYbLPbwo9PPDQFZVH3QY/4cLkADEBcl
yccTfQAQZcJx97I9mj/4MeQV7StxC8lOe8xC3PamhPoArf0n9v5B9OWzeNv+A6IvSqAPiWyrDVYD
qjU5Bm8LR/kp5UkbjUZg6cQjFOJDG8UEQRPyWUTnJqQxU0RbfMZBym5RuFxJ6GSxJT2q170XR3gj
GUNO7Ze6iPOLUSj9pCVSCKe6R3rof84kTi5dUCW0XxZ6AbdX94H4fHKpWmAbQIyNhek1EKZXL8wN
xerIAb4JNgmcytnrCnjWQMCz5tpKL3mRctQTvdPmRcGbWYg8x660kFy/pdD7DaD/NfKSyfkS/HCo
vvwKiOCS3n+6u5NPhij23/gkLbZek8dfkj9j+WAQ2M94ilfqrogevPFq6KrTUtxLMLEGCpK4Iexf
3l60xSW9//TLF/m0HHfaN0A0wacGnk3kQUAObKSS1zSn13I4gwaqHNSr8iuYTFlpVlFrqcL2mWrd
zk65Zq8m2+vA6u4UlrOHPqRm51/oROyNvMgu4XZfA65z+E6zazXRpvUyt+kemtu0d+pfevvoX+zX
IFzvHRDOaaJNpwHhfmNRbX5XSbkNBW9yoOu6Lxb84HKs3vadRVGDO0uzzraLTNQ4RHH+M5vtowfs
re0Bl27nG06yztZCXLvNB+num1Q3uv0VXlOo7A+M/N8jOv9Up75t+PwmZ+puk0O1ll5Ifksw9bcu
u9XkrGt11pH9tUOWunjx26zkWk1SFst5oSbFD2mt7VtBk6zFcteQ3d6+7E0yCau3Jdn3KeeytpyZ
8GqvtbVMy+pvP9Na4ZG3h22wfWyQUP2/4Nmd7ZuioPCu4HR3A8faFR5rN3jsPTzBWOvl8zXO8e2e
W6z+2ueWFV7lDWMerI15tTN9u7Dtztomvehk3zDM7kYwrb3BaW2E0z78eoPd5EcVtt2g3vD3mPhX
mNIDOyrYzvbTT606aw+TANtZO1DUwD5ImjUpK9huA5pdMToNo58hwOL40KjW2z7V8urbS7r11qbb
EugHSbkmNR77rEklnT0dJt92UTXSuttLsm1w8KvBfZBMa1KhswcNc8gDI5nT2U3+uI/8cjob5Y7v
gFpOk3Kq021ArfsY40Okl7WDz5go1e0lxaz1P3NRDfsgadakCuK8pApyaD8xdXZYBtnHz8s7m5dB
3sGnx50mZRDHfQHPDu2j405vdzzbx8+NO72NefYOPjTuNKl9OGcvLDceXEzr77beuJdxrf8q9cb3
ENuaVEGcwQs5d2jxze3slnP7GOPczqtw7h3EObdJecTtvqTGf2hBzrV2WOTfxwjnWpsX+d9BeHOb
lEhc+yVUO7jY5uyQansZ2JzNqfYeolqjr0JaVSVJpukXQgVTSudfxZfV+2t9UHq1tE0qFm5vV9/c
5DY5+rpLjr73N3f3xtXvv379cnN/8wr/Sktf0q8Fu2jL/0vgf1BLAwQUAAIACAB1lMJMIqqHg3wB
AABcCAAAJgAcAGFjY2Vzc2liaWxpdHkvYXJpYS1yZXF1aXJlZC1hY3R1YWwudHh0VVQJAAPtRRNb
7UUTW3V4CwABBOgDAwAEAQIDAKVVy27CMBC8+ytWOdNeKi69oSqVKrUCldyREzZg1cTUDwF/33Wg
gAN5crEUe2Z2PPHayVoYsGgsjWtugWvBnzT+OqFxCbTGwRmeSgRurRaps/jM2LQA47IMjRnBQTnY
CSnBIIFo1AINqByi2WQ+j2BDKL5CQuZKSrUj2fQAURLPE3ibfs0+4ySOSJPFEjdYeCOqdPQKL2PG
vAh97m0uUHpH31fmci4NsvfJx+cFsrhyf4MdAe63mFmastrVUhc+hj46ocuAXuI7+B53rpOtMftJ
1b5e9B/RP4sb5rAozjLdkgg5d0u3xHhDLtcCBe+u8wYMSpqqr3dc759vhTcs3ZNIj2ybyrYkW6E+
mKs/7sTkzQ3hEcP6OGAOb+NSpke+zaU7XAEBeXjGpZ4UxlZ7r9dPuifQEsCJUr9JzZdCrbRy2+G+
ajRarF1YDYd8Kwp626wqHrgy7mu0deaZ1XBAND7SclV221kmfIPf47ufOykPM67NEVBWY8Gbztgf
UEsDBBQAAgAIAHWUwkx3U/cvzQEAADcMAAAkABwAYWNjZXNzaWJpbGl0eS9hcmlhLXJlcXVpcmVk
LWRpZmYudHh0VVQJAAPtRRNb7UUTW3V4CwABBOgDAwAEAQIDAMVWPU/DMBDd8yu8p8ESVRFiakEg
IRgQDIzISa6thZsU+wztvycJFJpQzmcWliRK3ruPd+enZFkmZLFdlFa/grxoH990JZf1CmTutSnz
GuUj5Dd6dztv38p7MKBcg9HV+Fgata09ZggOMwvOG3RSFQU4p3NtNG6lslo1n168tlBmsFlDgVAe
4QaTNE3/oQRVoFemK2A6FdnJaHwq0u46nSbi0sAKKnQCa9GGPBPjSSIScTd7eGhebHCuwZRCu/vP
eM2jmCvjIMn6mCf7jdgHo/W/Y5/aWiliejW7vg0n6SoaiZ3cNJdKejDQQI0evyNw9Jkw2pvwqymW
UDzn9YZIvYMwJvMDyhxMKAUxl6iUDCGYUxGMfkMz/cHuPvZCtAVGyMYKQIjgGosokCj5A8DYhAGQ
uQd0eGILItIF24/aACpxaP4Dbuz0/0IP+FJDVQETaiFMj+5BIyyaShFwaHZKhhBRe0An57h7j83f
hY8ARjscmhe9PX9LScjPLIEQ/lCEkO6fHEJbq0pdL2zt1xHq8ElEP78ECbX0TaO8Y62r3CPWVYxj
sEmUSR4OEjTKLxp1DizEOCAHTh30IT14yBsC1aLv/p/n3pjtnbJur953UEsDBBQAAgAIAHWUwkxq
rRrFWwEAAFwHAAAoABwAYWNjZXNzaWJpbGl0eS9hcmlhLXJlcXVpcmVkLWV4cGVjdGVkLnR4dFVU
CQAD7UUTW+1FE1t1eAsAAQToAwMABAECAwCVlU1vgzAMhu/5FRbnbZepl92midumosK9CtS00VLS
5UMt/34J7TpgS0IuSCjPa782NqkOTIFGpe3zQDVQyeijxC/DJO7AnlEwitYcgWotWW00PhGy7kCZ
pkGlHqAXBs6Mc1BoIfuUDBWIFrLitSwzOFqK7tGSreBcnG3YuoesyssK3tYfxXte5ZmNSXKOR+yc
ETE4eoHnFSEuiH296JYhd442I3Mt5QpnyHbkfsxqabzo1pWdoBvjg4cFvlbeuM0Bm89aXPxBfoh4
bX/IZaXdZQmVhVOlioezSQTnzmtYIcdG++Nfz+P9mnHLunUTJZQbSpMmTeyTGz9L0vCAOmLZ3kzI
5WszyBK3xp8qVZzYM86Unu9CsiDi8SbxA5LumNhLYU7LfXg0ESu/qsAQnlhn//1adAkr+r8mNu53
VeADS0xZgTkdGx/LB/xd773WcN4XVKpRNjK50wj5BlBLAwQUAAIACAB1lMJMWy6bLfsJAABjTQAA
LAAcAGFjY2Vzc2liaWxpdHkvYXJpYS1yZXF1aXJlZC1wcmV0dHktZGlmZi5odG1sVVQJAAPuRRNb
7kUTW3V4CwABBOgDAwAEAQIDAOVca2/bOBb9nl8hNNgNMIj8kOzEdtIs2jTBLHZ2UUwG2I8FJVEx
G0r0UFTidHf/+14+JEuyZLOZxNM4LVrJIkXe57nnMo/zuUjoxcH5HKMILgkWyAnniGdYvD/KRexO
juBxJh4pvjiYUZLeHTuze5IRgSPnPwcO/BF4KdwIh4wjQVg6c1KW4jM1FDAeYe4GTAiWzJzhYulE
cI+js4P/HejlzCIho4zPnMOBP1VjvWtC8ScSx2Y8QOHdLWd5GrnF1Hgi/1Y30jtkjJLIOYyiSI/F
LBVujBJCH2dOwlKWLVBoBEwQvyUg8hAnzkA/WjBQTunBMQWN7rESaD5sSOr7fsv6GUozN8OcxJXB
jHzDao/qpi7FsZg5g964eB6RbEERLEJSsIyR8IFEYg4vDwZ/MfKhKCLpbfmmls24Rt7VvWPEJekc
hBLl9Dm7x7yh0Xg8PusyNsbaDD3pk19gr8y8HFOGQA1Obuei7jk56xLUR6BLsRUD0xMBKg4aKgsU
UOyGmNKalq5at2alhzlo5yofylB74GixkuwGh9J3nUGjXq6HTDNcTMwWdoeAGiyWeoer5QLcC+uD
avjY6clLU8NO8TIS4eBR/u8oUT9SFt59Rlz0QNVZTHgm3HBOaNRpWLndDbx/vGkxjhNw7fGW/cwe
hfl1wLmBnFILu3ERdRAtgoSIuoiSW8gNwVrU4lhG+s8ojSguzGHWkSaUn+dYO3QVz2HOM+kaKXYz
A1EA3skLj8GeZeDo5FHibZKiFufr4XDL8eNZIzB7423+0iZ2eoJtNXMv5ixpGNvgo9xDWv1feRJg
DtGEq9GlnxaCr8OoidrptAaARbq0wWCRyaPRqBVuqt4vMUYuNNYpoNOgBHwTByY820JEi1sLJ98A
VkVxpWIr4Ogi0WmWDSC14DI7pZjGgAWamKgpFKnlKrzk6mxVQ2BP9RH04BjdufKBFogk6BbXPDNz
vNLgAUXSinJiCNAAMoAo5s5p6r3yymQ07cTeGMcrAJBhBSuW5bGSzS2vRnFUfxWcnXVPn+Lp2aaa
Xq5kUKYqh8mK7nIdRWsLOBGm3W/g6VZp+j85N/liwbiASstNJINRkwSnInN+6sN+KBdzpu2tq7Ek
MxD1AuI0LDylXlBzOup/OUcKgyAk1OQCzk6KwJZwgyi9LCRone3pWpagpdso7wnwAvPIG5R1p7k1
2H3jPmVmlyld26ZNzh5bYF023Qcc3BHhCi7TTltCC+70vOysosbIKH2YCSTy7GMeQA0v62FPZk+r
OPIVwRgNEK+PF1vHFKsMXQ0k7Fv5tAQnX+ex4VHytmAL8r6bEnYhx0YqtwqLmCyxXsfg8aCuUg8p
DqLTbL2KPxDAAt4ItXLNby5JI7wEkNqg2qoQVkRo08uAUa28TQyKpVJMk7CtpQn2C9hyq6AnK0GH
OoiLIqQ/KWHNfVnBzMdS4JKZ1bYmMUeJlrCRJ3UaUcmRyw6kXbfNI3BN9mBqPaZAHIEzWxSmk+n1
KrxMTe4YVIaoj5U0Mlqnx3VybNbQ5luP4U5KEBU4q7f5UIBC0eoMqqO/FTWy0ZOcnBaAti7mhiSp
dDtZgjSXr2Juyjg8PutAGaO/pGBZ2+ZajyKvB21TKAownaEYMux47XX9XC2iCnIKqr5z/uu8Ozso
C3GlfDffpggYOotd8bjArUu965TITGy0uHNMFUCWZBRJMtpRow4TnGUF8ei0c5tbKtlxo4DaphRC
iQFCdE9Ynl2WT4DMfsPpZaVYttX5gnI0S0y1uEgsh6hVkVBgu/lsItGAiF/UQCtpTGgAx8FC5kSt
XBja10H6qnU2yCGr0iruFPU9IvezmIXGhiwXEi+q6RfQXFUSMwTxEoMsUMGGhSLVYqlWAQ7z2xzr
nfqm0t6C/FIHwRwBY4GebUItc+4Jkpgs/mliAoQNOHsAhwMTmCN415AiInqSBJV6jE4Miy+piPlc
oIMksvLfoF5EiyOdJsdPSARdllZMOigrmu+WigI8jGXoHmwPFsCNulLt9NZKnTvs+ZoyrQ4/iurf
4oPDT58+VVL6cHL96Xp83YpPQC7bo/jq6qpN6hlOFoBQNecbmtaY2YNbkLSW+VfTyWBicCukGPEv
ih4UrYB8otqmuZxy3jenbudZyMkCfMrD9+/mQiyyWb+v86jH+G0ffUXLPiVB1v/6e475o7mA0UY9
rweMsvc1e3cBy6llLpz6giGLsCtdhx9g3t/AwdKH70eTyisgizkfDFj0CBdIAxAXZdn7o6IBkMeE
8+FFP3y8jTjwiv6lvAWy05+zBPeDnNAIVOv/Gwf/IMXlo3za/xWqL8pgDkl9rw9RA6Z1BQa0hVY+
pyLrozCESCcBoVAf+ogTBEO/54TjyAUakyPaE0sBUg7rwlWOhI7WR1Sr3vVctvBONgdOHTWmyP7F
qR39qCNSKKfFDNX0r5jE0cUJmBLGL2qzILe3z4H6fHRxRbFh+QAHYBeAxbGZDa4B0f6wgKcWAp52
C/i8wkwshJl0C/P5w82N6odigik0vNmvJlTg1okRzXBTXHWpCl1JTqmcGl5XzS6GdKe7NYYq8zYa
Z2phnL+mQbY42+AuaLsvPoNGcFH3YDH9aWW3L3xltaoBBc/xd7nbVrHhYNeafZFA8h1qroVJ3dFQ
mrZ72UzaaIkNSjKLWNCGAA50cX3elxd1/+Hvv+hP212s5qtEOXbwcqE7I/3y93v/WRXuiJHv13iT
679T/RcFj+cqQMOhjXWHtqBaM58y1b7B7NDbERqNXyPwdFjHOg/HbyHlfBtD+ltSLpzj8E6dhe1Z
fo1eNr8Ku+2exox3rNirZzEdobANTLZ5+AdmMePnUfjNkRibNnp4YomoT+Mwf1ADmz57eGqrQWsg
7Ccdm+wYVZXFanaVafMq4XXyPGhjZZG9hB2bI5fhdEvS6i8x7lteei98aKOttnMS5w13qtarp3De
085lNnv3xyVw3vA51H1r9M2zOVLxPCsc/TPIm2fT0Hu+nfxvh7p5o51i6f4QN2/0HCjzZmmbZ3MQ
440tjrzV91XuW1aevPz5trTb7qnb6Y4Ve/3k7eTJh/mbPPwD07fT51H4zRE4m0MYb2KJqH8KhbNp
5b2prQZvh8T5gx2j6pNp3POo+8L9PyWZaB5Bv1aa6g+eB01fgqju0gxPOxOwjIR9LCe+zXmAv+08
oM2AO6omvs2BgO/bKbB3FeOF236OIsLkN20v9gNFn9bs21thLxHEpsX3t7X4HTbcFYjYNOL+ibUO
e4cjL9zPZwuS6p/32Q8ceVpva2+FvcQRm8bW39bYdthwVzhi09r6U2sd9g1HRi/dwXK8H192GD2x
n7PQfx+xY2RzVDDa+p31TevtCDVGNj3YyLOQfgey2rRbo61ff83VzxLGOaWPn+XvObPPzA3h17io
H5M87+vfrfZ/UEsDBBQAAgAIAHWUwkwi/7cGwAAAACoBAAArABwAYWNjZXNzaWJpbGl0eS9hcmlh
LXJvbGUtb24tbGFiZWwtYWN0dWFsLnR4dFVUCQAD7kUTW+5FE1t1eAsAAQToAwMABAECAwB9j7Fu
wzAMRHd9xcFzkQ/oZhQeCqSIEWvoqjh0LIARA4mq678v3TYIunS5Wx7vjkqfCjVxfo4FH5TjFKlA
56AICe3xtUUWJoTbjSOdoYIADidiENOVksIOk5hdkmQ675w7JJQ6jlTKE1apWCIzClmIad7yZULT
t8PQ4GpUuJCRkzDLYhWnFY3vBo+Xw1u/73zXWKb76VyizlL1e9Mz2vfjrw8aNI5+++QB/kdt7feV
U2Ve+5CLldszmis592eBc19QSwMEFAACAAgAdZTCTF7FsCjcAAAAyQEAACkAHABhY2Nlc3NpYmls
aXR5L2FyaWEtcm9sZS1vbi1sYWJlbC1kaWZmLnR4dFVUCQAD7kUTW+5FE1t1eAsAAQToAwMABAEC
AwDFjkFLxEAMhe/9FbnXOKCI4KnrUhBULNuCXtNpdjcQW5nJuNt/b2dRFASvEsgL4XuPh4jg/Lwb
gryzW+fzIKPbT6/s+iQ69JO5Z+7v5Utu89dtWJniwsh4eeGU5ikZGkfDwDGpRUfec4zSi4rNjoIQ
hkkZpxGVelbk4xt74+HcjlaUZflfPchbIj21qCrAq7NrKPOqqgLynCg4iO2XbMjeG1i9bD61NTLx
HS9u/CZ/YXdMg4y7ovyD+REFzaptIaZT921SnRsKkQeQCBYS515d3XawfnpsHuquLj4AUEsDBBQA
AgAIAHWUwkw6KLOzxQAAACcBAAAtABwAYWNjZXNzaWJpbGl0eS9hcmlhLXJvbGUtb24tbGFiZWwt
ZXhwZWN0ZWQudHh0VVQJAAPuRRNb7kUTW3V4CwABBOgDAwAEAQIDAGWPwWrDMBBE7/qKweeQD+jN
BEMLLTGxDr0q9toWbKQgrer477tOGkrpZeYyO29W6CYQFWNnn/FFyY+eMmR2AhdQn95qpMgEd72y
pwES4cDuTAxiulAQ6GGIalOIiYa9MceAXPqect5hjQWLZ0YmLVFNW38cUbV111W4aMpNpMkxMsdF
EecVlW06i8Pxo31vbFNpp3kwFy9zLHLf9IL68/TjnTjxvd0++Q3+S72SG3yYzIZ+ThwL89q6lJWs
n0gqZMwfvDHfUEsDBBQAAgAIAHaUwkynnhgt8AcAALEbAAAxABwAYWNjZXNzaWJpbGl0eS9hcmlh
LXJvbGUtb24tbGFiZWwtcHJldHR5LWRpZmYuaHRtbFVUCQAD70UTW+9FE1t1eAsAAQToAwMABAEC
AwC9WWtv4zYW/Z5fISToBigiyY7jjB8ZL2byQIHtbAeTAO23gpIoixNKdEkqtmfb/76XL1mSJdtA
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
OHa+UpVf4cml5lwvvuG4UTf140SPh5fhuZ/6zpnhKYnah+HqPvc/jK7c4jqMcI/5r9QX6sjyP9rv
wb3KZ+Wl5bwNLH5W2o8tDSF8qxPCO1BLAwQUAAIACAB3lMJM9b9e8lsBAAD6AwAALwAcAGFjY2Vz
c2liaWxpdHkvYXJpYS1zZWxlY3RlZC1tZW51LWl0ZW1zLWRpZmYudHh0VVQJAAPxRRNb8UUTW3V4
CwABBOgDAwAEAQIDAMVSTU/CQBA9218x6QlSlgXUi6ciqYlRAqFEuW7bASbZtmY/LP33biFoRAWj
JmaT2c3bN/Pe7A5jDHharzJFz8hHzbGigq/LHHliSWZJafgjJne0364blM9QotCOQ8X5gEtRl9Yw
g9owhdpKo7lIU9SaEpJkai4UCaZdUmowYzkWlpHBXDPcPG2xrtkYLwiC/3UjUmOF3HoJQ2Dnnf4F
BC72IAw9mBSg7bZQB5wEVCQlaEQQLipCDeUS/Okwjn3IHUus0DGXpZRlhRkkNfjzKJ7DaDKe3kfz
yO964Ba7IaUNNDZgLTT0YW8N0rVrr6WwaHvsrLEIA2gNF7NS4hUMF2OXcuvQNpCOtzkiaW6MsvgK
YbYDPBZjWhbZN4UufyH01lAi1FGpKCPzNx2dUnogrH6uFBz8Ue9TleDwhb+gfXyf0/WOM6GZuv10
Lq2U9VQo7Tikdw24QXs3e94LUEsDBBQAAgAIAHeUwkw0qzDzBgEAAIcCAAAzABwAYWNjZXNzaWJp
bGl0eS9hcmlhLXNlbGVjdGVkLW1lbnUtaXRlbXMtZXhwZWN0ZWQudHh0VVQJAAPxRRNb8UUTW3V4
CwABBOgDAwAEAQIDAK2STUsEMQyGz/ZXhDntgigKXrwNMoLgsoMzyF67bWYn0G2XpnWYf2/qoqIH
lcVLCPl63pD0IzEk5CR21AmGYDKjvdQm0QvCHn0GSrhn0BEh4iHEhBY0A6NDU3wzkrMRPYRBZiAc
pNInMMEnTR7jhVJrD5yNQeZzmEOGiZyTAQhabCTk0lu1dddVgmTWO5TKITgXJiFsZ6j6puvhbr1q
H5u+qWSmuqfI6ahwFD1X3xQtRMVSnRXxcA2LevMUHN5CvVlJx4NEl0DcvbXobcmkmPEjhPYYUB3K
IvZvmJvTMZ/LbHX8CdRYSv+yzS+cZ8LpdE455fvJh+zc3OoobwXl2UpefTmnUq9QSwMEFAACAAgA
d5TCTGM8BuCRCAAApSMAADcAHABhY2Nlc3NpYmlsaXR5L2FyaWEtc2VsZWN0ZWQtbWVudS1pdGVt
cy1wcmV0dHktZGlmZi5odG1sVVQJAAPyRRNb8kUTW3V4CwABBOgDAwAEAQIDAM1aa3PbuBX9XP8K
jD1d7+6YlGRJjh6JO4ktz3a66WbWnna/dUASFBGDhJYAbSlt/3svXhRJkbIyUbrJTpYUcAGc+zwX
nLxOZMquT14nBEfwSInEKExwLoh8c17I2Jucw7CQG0auT2aMZo8XaPZEBZUkQv8+QfBHkrX0IhLy
HEvKsxnKeEbmeirgeURyL+BS8nSGBqs1iuCdRPOT/56Y7ewmIWc8n6Gz/nCq5/w7ysgtjWM7H+Dw
cZnzIos8JxpP1H/Vg8wJgjMaobMoisxczDPpxTilbDNDKc+4WOHQAkxxvqQAeUBS1DdDKw7KaT1y
wkCjJ6IBJYMG0uFw2LK/wJnwBMlpXJkU9BPRZ1QP9RiJ5Qz1/bEbj6hYMQyb0AwsYxE+00gmsLjf
/7PFh6OIZstypcFmXaPe6t6xcGmWAChZiif8ieQNjcbj8bzL2IQYM/jKJz/DWcIujhnHoEZOl4ms
e05J3YD6GHRxR3EwPZWgYr+hssQBI15IGKtp6el9a1Z6TkA7T/tQhdpzjldbZPckVL7rDBq9uB4y
zXCxMevsDgHVX63NCYv1CtwL+4Nq5AL56tHUsBOeoBEJNur/SEN9x3j4+AHn0gdVZzHNhfTChLKo
07DquHtYf7Fvs5yk4NqLF86zZzjzm4DzAiVSC7uxizqIFklDzDzM6BJyQ/IWtXKiIv0nnEWMOHPY
fZQJ1e+EGIdu4zkscqFco2A3MxAH4J3CeQzOLAPHJI+Gtw9FLc53w2GZk828EZj++CV/GRMjX/IX
zezHOU8bxrb1UZ2hrP73Ig1IDtFEqtFlRh3w3TJqo3Y6rRVAly5tZdBl8mg0ai03Ve+XNUZtNDYp
YNKgLPg2Dmx4toWIgVsLp6EtWBXFtYqtBceQRKdZ9hSpVa6yU8G0BnTVxEaNU6SWq7DIM9mqp8Ce
+ifokRP86KkBA4imeElqnpmhy9LgAcPKikowhNIAGACKfUNNvbdemYymnbU3JvG2AKiwgh1Leqxk
c8vSKI7qS8HZolt8SqbzfZxe7mSrTBWHzYpuuo6inQ1QRFj3CjJ9EU3vR3RfrFY8l8C0uY1kMGqa
kkwK9GMPzsOFTLixt2Fj1cxA1EuI09B5Si/QMh38X8ooMBhCQgu7cnblAluVG8zYjUPQKn1puCzF
a69B7yn0BXbosl/yTvNosPvec8rMLlO6dkwbTp+viKFN75kEj1R6MldpZyxhgCP/Uswraoys0mdC
YlmId0UAHF7yoa+ypxWOWiI5ZwHO6/Pu6JgRnaHbiZR/KkfL4jQ0eWz7KPXqugX13t0SdlWOva3c
NixiuiZmH1uP+3WVfKx7EJNmuyz+TKEW5I1QK/f85NEsImsoUntU2xJhBUKbXrYY1ehtYqtYpmDa
hG2lJjgv4OsXgV5tgQ5MEDsSMr80WPteMpj9WQIuO7Pa0TTOcWoQNvKk3kZUcuSmo9Lu2mYDvSZ/
tlxPGDSO0DMfQExX07tteFlO7pjUhqjPlW1ktNse15tju4cx324Md7YEkauz5pi3rii4q06/Ovvg
OLJxJ7l65QraLsw9SVK57YgUm16+WnMznsPwvKPKWP1VCybaDjd6uLzut4kwHBA2wzFk2MXOcjOu
N9GEnIGqp+g/6HR+UhJxhb6bqxmGDp3HntysSOtWp52IrGDjipsQpgtk2Yxi1Yx2cNRZSoRwjUen
ndvcUsmOe12oD6FCoBhoiJ4oL8RNOQLN7CeS3VTIso3nXcvRpJgquahaDlGrI8HVdvvbRqItIkPH
gQehsaEBPQ6RKidqdGHbvo6mr8qzQQFZlVXrjuP3iD7NYh5aG/JCqnpRTb+AFZpJ7BTESwxYgMEG
TpEqWepdoId5SIg5qWeZdgn4lQ6SIwlzgZG2oSbQE8WqJsv3NiYAbJDzZ3A4dAIJhrW2KaLSV01Q
qcfoynbxZStif7vqoBpZ9bdfJ1H3SafZ46c0gluWUUw5SLjLdwujQB/GBX4C24MFSINXqje9Harz
Bv7QtEzbjx+O/Vt8cHZ7e1tJ6bPJ3e3d+K61PkFz2R7Fi8WiDfWMpCuoUDXn2zatIenDKyCtZf5i
OulPbN0KGcH5v3R74K4CakRfmxIl8rpnv7q9FmFOV+DTPHxzmki5ErNez+SRz/NlD3/E6x6jgeh9
/L0g+cY+wGgj/9KHjtL/KE6vYTu9zTWqbxjyiHjKdeQZ5P4CDlY+fDOaVJYAFvt9MODRBh6QBgAX
C/Hm3F0A1GfCZHDdCzfLKIe+onejXqHZ6SU8Jb2goCwC1Xr/JMHfqHu8U6O9X4F9sQAZmg0vexA1
YFpPEqi2cJUvmBQ9HIYQ6TSgDPihh3OKPUfZHmRs4UFKp8KDjqbAzJdrCYAHdZyVr0PnuzP61t41
rm7zSCTQXkcNEXWVQbWvQPprKTCrk9D3/21TcX49BKvC/HVNCtL8ZRmg6vPrXzLIbW2NCwR2grxm
DCoFAXJU5Z4IxGP03e8Fl/MPb+/vzRuy3AFrYq66Huh0go0Ve1jcP6CbX95/+HnxsDBDvj0f/A7K
frHKowNUHnWrfFww4wPAjA8Hox9VSJW8VtJ6ehf4YTFnLskvxlxFbq/qVweo/l0WiNW8W/879Z0S
qZxDCRZogMrWWX+7/D4n2Q+f5bBDwb86Avg/qTKBLtH3b3/7lavG5+1v70GTv8LoD4iKe62K+hA9
QzIvSDlEIjPwVRSbHEExKGw8i/4It0yP5pbxt+WWQf+o2aI+DPx/PTMYHMM1i4jKb8wxl8dNmD/A
M8NjeOYf0LEdzTM7NFYnIui6X2YhK7RX9T1a8QO4qo2C+l/ut6Mif3V4mf7WoE8+p5J9a+Cnn5Xt
B6H/qs3dsS4Ug0Pa6w4209ZR9wR3qYgLxjYf1D//iKBmfH4RfxntIf13B3V9hdvA4JCeuINxNJza
7elL4qfx0BdtuMXqf53zP1BLAwQUAAIACAB4lMJMxjphEagIAABsJQAALAAcAGFjY2Vzc2liaWxp
dHkvYXJpYS1zZWxlY3RlZC1wcmV0dHktZGlmZi5odG1sVVQJAAPzRRNb80UTW3V4CwABBOgDAwAE
AQIDAM1aa2/bOBb9vPkVRIKdzAwi2Y7t1I80izaPWWBntkUTYOfbgpKoiC0lekQqsbu7/30vX7Ik
S7aLOp120JFMXpL3fQ6FXiYyZVdHlwnBETxSIjEKE5wLIl+fFjL2JqcwLOSKkaujGaPZpzM0e6KC
ShKh/xwh+CPJUnoRCXmOJeXZDGU8I3M9FfA8IrkXcCl5OkODxRJF8E6i+dH/jsx2dpOQM57P0El/
ONVz/h1l5IbGsZ0PcPjpMedFFnlONJ6o/6oHmRMEZzRCJ1EUmbmYZ9KLcUrZaoZSnnGxwKFVMMX5
IwWVByRFfTO04GCctiMnDCx6IlqhZNDQdDgctuwvcCY8QXIaVyYF/Uz0GdVDPUZiOUN9f+zGIyoW
DMMmNAPPWA2faSQTWNzv/9Xqh6OIZo/lSqObDY16q0fHqkuzBJSSpXjCn0jesGg8Hs+7nE2IcYOv
YvIrnCXs4phxDGbk9DGR9cgpqWswH4Mt7igOrqcSTOw3TJY4YMQLCWM1Kz29b81LzwlY5+kYqlR7
zvFirdk9CVXsOpNGL66nTDNdbM46v0NC9RdLc8LtcgHhhf3BNHKGfPVoWtipnqARCVbq/0ir+pbx
8NN7nEsfTJ3FNBfSCxPKok7HquPuYf3Zts1ykkJoz3acZ89w7jcJ5wVKpJZ2Y5d1kC2Shph5mNFH
qA3JW8zKicr0v+MsYsS5w+6jXKh+J8QEdJ3PYZELFRqldrMCcQDRKVzE4MwycUzxaPW2aVHL8810
eMzJat5ITH+8K17GxciXfKeb/TjnacPZtj+qM5TX/1mkAckhm0g1u8yoU3yzjdqsnU5rDdCVS1sb
dJU8Go1a2001+mWPURuNTQmYMigbvs0Dm55tKWLUraXT0DasiuHaxNaGY0Ci0y1bmtQiV9Wp1LQO
dN3EZo0zpFarsMgz1aqnwJ/6J9iRE/zJUwNGIZriR1KLzAydlw4PGFZeVIIhtAbQAVSxb6hp9zoq
k9G0s/fGJF43AJVWsGMJj5VqblkaxVF9KQRbdItPyXS+DdPLnWyXqephq6IbrqNoYwMUEda9gkx3
atP7Gd0XiwXPJSBtbjMZnJqmJJMC/dyD83AhE278bdBYkRnIegl5GrpI6QVapgP/SxmlDIaU0MKu
nV24xFbtBjN27TRolT43WJbipdeA9xR4gR0675e40zwa/L71nLKyy5KuHdOmp88XxMCm90yCT1R6
MldlZzxhFEf+uZhXzBhZo0+ExLIQb4sAMLzEQ19VT6s6aonknAU4r8+7o2NGdIWuJ1L+uRwtm9PQ
1LHlUerVsQX13k0JuzrHViq3TouYLonZx/bjft0kH2sOYspsE8WfKfSCvJFq5Z6fPZpFZAlNaotp
ayCsqNBml21GNXib2C6WKTVtwbZCE5wX8OVORS/Wig5MEjsQMr+0sva9RDD7s1S4ZGa1o2mc49Ro
2KiTOo2o1Mh1R6fd9M0KuCZ/tlhPGBBH4Mx7ANPF9G6dXhaTOya1I+pzJY2MNulxnRzbPYz7NnO4
kxJErs+aY964puCuOv3q7IPDyMad5OKVa2ibam4pksptR6TYcPlqz814DsPzji5j7VcUTLQdbuxw
dd1vE2E4IGyGY6iws43lZlxvogE5A1OP0X/R8fyoBOIKfDdXMwwMnceeXC1I61bHnRpZwcYVNyFM
N8iSjGJFRjsw6iQlQjji0enntrBUquNeN+p9oBAgBgjRE+WFuC5HgMx+Jtl1BSzbcN5RjibEVMFF
9XLIWp0Jrrfb3zYTbRMZOgzcSxubGsBxiFQ1UYMLS/s6SF8VZ4MCqiqr9h2H7xF9msU8tD7khVT9
olp+ASs0ktgpyJcYdAEEGzhDqmCpdwEO85AQc1LPIu0j6K9skBxJmAuMtE01gZ4oVj1Z/mZzApQN
cv4MAQcmkGBYa0kRlb4iQaUdowvL4ksqYn+77qCIrPrbr4Oo+6TT5PgpjeCWZQxTARLu8t2CKMDD
uMBP4HvwAGngSvWmtwF13sAfGsq0/vjh0L8lBic3NzeVkj6Z3N3cje9a+xOQy/Ysvr29bdN6RtIF
dKha8C1Na0j68Aqa1ir/djrpT2zfChnB+b81PXBXATWir02JErns2a9ulyLM6QJimoevjxMpF2LW
65k68nn+2MMf8bLHaCB6H/8oSL6yD3DayD/3gVH6H8XxFWynt7lC9Q1DHhFPhY48g9zfIMAqhq9H
k8oS0MV+Hwx4tIIHlAGoi4V4feouAOozYTK46oWrxygHXtG7Vq9AdnoJT0kvKCiLwLTev0jwD+oe
b9Vo7wOgLxYgQ7PheQ+yBlzrSQLdFq7yBZOih8MQMp0GlAE+9HBOsecg2wMaU2Dmy6UELQd15Sqf
hE43Z/RVvWtcXeGRSIBTRw0RdX9BtU8/+hMpwKmT0Jf+NZM4vRqCK2H+qiYFtb1bBvD59OpdBgWt
XXCGwDlQzIxBeyCAiKrHE4F4jH74o+By/v7N/b15QxYwYE3MFdUBehOsrNjD7f0Dun732/tfbx9u
zZBvz4dgg7FfbfJoD5NH3SYfVpnxHsqM91dGP6oqVYpZSevpTcX3yzlzM96ZcxW5raZf7GH6D1kg
FvNu+9/8/oErnvDm9wcc/AKNcoESLNAAlbxZf7j8MSfZT18UuH2NeHUAI/4iCOBnhH5cW/MBR5S/
1WD/E6LiXlujPkTPkMwLUg6RyAy8iG2TgwbonUElHZ/zbxaf6SHioz+B18LDn/+8sAz6h7BJJjSP
vh+bBoduBox8404wOH+hVvCnxmX4QnH5dh1gMDpcC/AQI09waT7/fgI0PlwzOKh1G0ykziXgtrSb
SFihrQ7YYhvfg25sYxH9r8/Rg1rwarcFvAKy35v6ky/rEN+b+tMX8P6L0vVDXREH+xD1DlKi3aNu
fu6aGBeMrd6rf8UTQQv58r64W9t9GHkH3XiB+91gHxLdQR20OrX78NfkT+Ohv5dc9sw/svo/UEsD
BBQAAgAIAHmUwkzfY4PPiwAAAKwAAAAqABwAYWNjZXNzaWJpbGl0eS9hcmlhLXNsaWRlci12YWx1
ZS1hY3R1YWwudHh0VVQJAAP1RRNb9UUTW3V4CwABBOgDAwAEAQIDACWNzQrCMBCE73mKeYBS794E
EQqetIjXNNm2C8mmbBJ/3t5Qb8PM8H2DwDpHOfPEgcu3Q1kJcwohvVkW5DXV4DERLDZNi7YrWDw7
W5IejXkaM66cUSgXXE7D9d5mnGvcbiSedFSiHmODvmyo1CGyPP7Jij8kRbSfvUCad7laWQixNl7T
srikSq705gdQSwMEFAACAAgAeJTCTPcwJbvRAAAAeAEAADEAHABhY2Nlc3NpYmlsaXR5L2FyaWEt
c2xpZGVyLXZhbHVlLWNoYW5nZS1hY3R1YWwudHh0VVQJAAPzRRNb80UTW3V4CwABBOgDAwAEAQID
ALWQwWrDMAyG736Kn5xH6GUPUEYGg44GErqzaiuzQbWLZbfk7eeGjbEH2EVI6NenX1IJjrOZfVAU
1tKip4LQkmtSDWdhlIQQbeYLxwKKDo5/K1AOBN0wW9PTrY14xo2kMurVUWEHm3JmW2TtjTlGaLWW
VZ+wpop7EIEyo4E4B1akBd24n6YOl6aiT27KJYmke0OdV3TzMM14Ob6Ph2EeusY0r/u3w7ePPsRy
2rarT1XaBON51+ODFLv+X5QPsz9HLVVkHSlr8/p4a65szB/DxnwBUEsDBBQAAgAIAHiUwkzKvWbj
EgEAAIkCAAAvABwAYWNjZXNzaWJpbGl0eS9hcmlhLXNsaWRlci12YWx1ZS1jaGFuZ2UtZGlmZi50
eHRVVAkAA/NFE1vzRRNbdXgLAAEE6AMDAAQBAgMAxZBNawIxEIbv+yuGva7ZSD8Ova0VC6UWpUo9
z+6OOjBuSiZR9983q/RQeiuUEpiEzJPkyWuMAdv0u9bzkex0WJ64s3t3IFtHlrZ2wW6ofuGv6XHY
tW8khJoY7m5vrGDvYjCBNBhPGiWoxaYhVa5ZOPQWPaNR4Za8OaJEMs0eux0ZOn9QE6gtwzlkRVH8
rw02IaJcXKoKzN3oAYqhVFUGiw40Xq4ZQXoATiwCSgSYqmdScFvIl5PVKodDonBHidw6EXeiFuoe
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
YFVFd4yAHBTCJiNQv27IjNGGwKgE9lNfwHAHpS1wBbq9YGchxAeXI7eDOkFgeSsxjTuUcqtNruV4
VVSJUj/DZJVEsdESg8g/IxdoIHWQOVj7s/o/nOg5cYHP3Fviu06bcjpIgDb1/NhP7b8BUEsDBBQA
AgAIAHqUwkxD10rKGwEAACwCAAAiABwAYWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlcy1kaWZmLnR4
dFVUCQAD90UTW/dFE1t1eAsAAQToAwMABAECAwC9UMtuwjAQvOcr9gYoMSZJVak5JY3SHvpAIkjt
1Ym34MrYyA8gf18HVHroqZeedna0szO7hBCg/bDhRhyQ1iM8CkW3eoe080LyTjv6ht2T+C73I0tX
KJHZMCNUnlHJBu0dcWgdMWi9dJayvkdrRSekcANlRjDiWCfREjztsXfI5+7kojiO/z0A651n8mxf
lkDSJIc4TW6gLKO4Xr62y+cGXpq2rR6bAqRQCLdZAethj40x2hTgFcePwHMQFpR2wBTo7jNcBVM8
MOmZE2oDk7NfOu9Rygdtai39TlWKr/RxukgWs7nREiezCLbIOBpIryi7ovwSMUvuQsb8EhLGhRFU
76ugL0Jdjz6/CfJD1KPiz/06/BP2zFrkEURfUEsDBBQAAgAIAHqUwkyWwAXQSgAAANEAAAAmABwA
YWNjZXNzaWJpbGl0eS9hcmlhLXRhYmxlcy1leHBlY3RlZC50eHRVVAkAA/dFE1v3RRNbdXgLAAEE
6AMDAAQBAgMAy0hNTEktUjDkyoAwjGAMY67k1Jwc3ARUmSEnTCOcAZbnhBMQ5Y4RQfk5qVYKjhEh
iUk5qXj4zqjKieCGpBaXKBQkFhenpnBxAQBQSwMEFAACAAgAepTCTIX+yMsyCAAAoB8AACoAHABh
Y2Nlc3NpYmlsaXR5L2FyaWEtdGFibGVzLXByZXR0eS1kaWZmLmh0bWxVVAkAA/hFE1v4RRNbdXgL
AAEE6AMDAAQBAgMA1VlZc+M2En73r2DZtXGSMqnb0THjLY8sZ6s2V41dtXnbAklQxBgkFACypMnu
f0/jokiKlJSN92EylSEFNICvu78+wHmXyozeXbxLMYrhkWGJvChFXGD5/notE398DcNC7ii+u5hS
kr/ceNNXIojEsff7hQf/SbyVfowjxpEkLJ96OcvxTE+FjMeY+yGTkmVTr7faejG843h28d8Ls53d
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
aXR5L2F0dGFjaG1lbnQtZWxlbWVudC1hY3R1YWwudHh0VVQJAAP5RRNb+UUTW3V4CwABBOgDAwAE
AQIDAFWQS2vDMBCE7/oVgy+JoRh6KvhmgloKTm2QoWdZWccqihT0aPC/77bQ0F52Yfhm9nEY3tTQ
SxylUt2LbOGsJzw+tZi2K8kYQ2xR/IkW1k+wCT5kaI8wf5DJ2NOndkVn68/YmeAz+dycKJlor9kG
v6vFtLIrU8pcV83mnLVZLwyCHH33BB0J2hhKyc6OGiEGj1R+hAdsoeBmnUMiprhGSwlhQTV2SlW4
MKXPxOQSnAs33nPeUE1STTgMx7GXk6w4Uzx3r/1v7FKc20YdE9NpDcWxiZBjIew5OvP1mENwpH3d
4F2nP1+4A3ep5vh/84T4AlBLAwQUAAIACAB7lMJMv8sEj58BAAA3AwAAKQAcAGFjY2Vzc2liaWxp
dHkvYXR0YWNobWVudC1lbGVtZW50LWRpZmYudHh0VVQJAAP5RRNb+UUTW3V4CwABBOgDAwAEAQID
AMVRwW7bMAy9+yuIXNrAkd20GAbkFC9zh6HpEtTGuqtsM7EKRQokqqn/frSzZAmw+y4kRb0nvkcJ
ISCtu23j1Dumi748KJO2dodpFZRuKkvpK1ZP6pS+9N30BTVKzxhlHu5TLTsbSBB6Eg590ORTWdfo
vaqUVtSlkkjW7Q4NCWYe88cea8ImoQ+K4jj+XzpkTUHqQcV8DmI6mT5AzPEO5vNIRPFi9aNYLXN4
zosi+5bPQCuDMP08g7LbY+6cdTMIpsEN9xtQHowlkAZs9cYG4RbfpQ6SlNnCTW0N8dCkQV87tSdl
zc04grJlWi+bYyuZfZYJf2R6kA7hZEZjEkEEKwM+DK0JsHM4KK3BI+M4OoUe7AZG66woRrBjlNwi
IzdWa3tgqVUHozIvSlisntfLvMxHw6uRyP6OvxA6g+zX18sjb47zBEiRxglLqYbqit97x57581jc
JZ+u7p3Vw/UL5+vHz5hI9A5OTjdB624tnT/umlzAKH7Mvi//BfCtDZqN4oCDW14H8adBZXmcNOME
XqW/+Lwz4NwaDyu52hI3fgNQSwMEFAACAAgAe5TCTAtbtAHGAAAASAEAAC0AHABhY2Nlc3NpYmls
aXR5L2F0dGFjaG1lbnQtZWxlbWVudC1leHBlY3RlZC50eHRVVAkAA/lFE1v5RRNbdXgLAAEE6AMD
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
c2liaWxpdHkvYm94LXN0eWxlZC1saXN0cy1kaWZmLnR4dFVUCQAD/UUTW/1FE1t1eAsAAQToAwMA
BAECAwDFjkFrAkEMhe/7K3If04CCFE/bevQmgr3OzIY2EHdkk9Hdf19XWgqC5xJ4L+Tlg4eIQHn6
7Aa5MG3n9So9fZUTU6qiXSpOR047+bX3+Up7Vo52+5F+tSSNU6mOzuY4sFV1o5gzm0kSFZ8olRHN
J+UOVcwNeTxzdu5efPQmhPA/LWL2GvXeoW0B14tXCLO0bQP3QVGQHorCUJQ3MGMgzqcmPCRvH/sf
P8T0R9anZH1GQvMNUEsDBBQAAgAIAH2UwkyrqGweMQAAAFUAAAArABwAYWNjZXNzaWJpbGl0eS9i
b3gtc3R5bGVkLWxpc3RzLWV4cGVjdGVkLnR4dFVUCQAD/UUTW/1FE1t1eAsAAQToAwMABAECAwAr
SS0uUTDkKgFRRhAqEUIlcYFAZo5CZp5Cfo5CUX5OqpVCTiZQJrMkNRcmU4pFhgsAUEsDBBQAAgAI
AH2UwkwB9UWi0AcAAOUdAAAvABwAYWNjZXNzaWJpbGl0eS9ib3gtc3R5bGVkLWxpc3RzLXByZXR0
eS1kaWZmLmh0bWxVVAkAA/5FE1v+RRNbdXgLAAEE6AMDAAQBAgMA5Vlrb+O4Ff2eXyEkaAMsIsmO
k4wfGRczeWCBbotiZ4DutwUlUhYnlOiSVGJPd//7Xr5kSZZsA7sdoO0OdiyRl+S5z3Opuc9VwZZn
9zlBGH4KolCQ5khIot5fVioLp5cwLNWWkeXZnNHy5SqYv1JJFcHBv88C+E+RjQoxSblAivJyHpS8
JAszlXCBiQgTrhQv5sF4vQkwPBO8OPv1zG7nNkk542IeXIwmMzMXPVNGHmmWufkEpS8rwasSh140
m+o/zYPsCZIzioMLjLGdy3ipwgwVlG3nQcFLLtcodQALJFYUII9JEYzs0JqDckYPQRho9EoMoHzc
QTqZTHr2l6iUoSSCZo1JSb8Sc0bz0JCRTM2DUXTrxzGVa4ZgE1qCZRzCN4pVDotHoz85fAhjWq7q
lRabc41+anvHwaVlDqBULZ7zVyI6Gt3e3i6GjE2INUOkffIDnCXd4oxxBGoIuspV23Na6gHUR6CL
P4qD6akCFUcdlRVKGAlTwlhLy9Ds27LSWw7ahcaHOtTeBFrvkH0iqfbdYNCYxe2Q6YaLi1lvdwio
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
fnqMR62PoVpTNzSjqDUqVGvahmYUtUiBascNzapsp+8K4+Pg7g5KXxnCa/oWEL7CFAeE76jVKlRr
9kZnVEN1HLSmbnRGNdSQsnbc6AxvUtRqBrpy0vTe8B21aoEa3abhO2qRAjXUI75X2I7sCt/hgfev
BtaXzer+YVifW+CA0Bw1y5wazd4jkaJmmVNDayqaG6jhY0NvHpqnP07gPsO1UTz2L07+D1BLAwQU
AAIACACBlMJMQROKzskAAABmAQAALQAcAGFjY2Vzc2liaWxpdHkvY2hlY2tib3gtbWl4ZWQtdmFs
dWUtYWN0dWFsLnR4dFVUCQADAUYTWwFGE1t1eAsAAQToAwMABAECAwCVjzFvg0AMhff7FU/MVaQ2
W7Y0YqjUKigwdL0QU041GNl3Af59jyFDxyy2ZL33/L6GLBrmnmJPiiEsdMPdcyKDV4LSJBrzbVKZ
SHmFjBh9DHdC21P7e5WFbOfceYSltiWzF6ySMAdmGBF8nhpynHQoqmNdFxiyyv9QVnbCLHOOv64o
mrJucDp/VZ9lUxY5070ecPy+CNO2T9u7d1ncx3ijSDqE3INg0cdkB3SejZx7e96yf96ycTx4u8S8
Vl4tYwRD1JQF/1ic+wNQSwMEFAACAAgAgZTCTAttE1PBAAAArAEAACsAHABhY2Nlc3NpYmlsaXR5
L2NoZWNrYm94LW1peGVkLXZhbHVlLWRpZmYudHh0VVQJAAMBRhNbAUYTW3V4CwABBOgDAwAEAQID
AMWOMU8DMQyF9/sV2VMTUZCQOh3thLp1gdVJHtQid0EXp+T+PQSJrWJFlvws2+/TIyLjwvoWF7nA
Hfr4KbM75wnOV0nRZ3XP8Ef5lX3fuhMSuHz/yHy3dYnXXJUURWlBqUmL4xBQinhJoqsLZ4R3nxtN
0hDpwqmC0D4QFPFGmw7W2v9LwkErp58c42jofvNgbG/jOJhetzvz+HLKCV0PnbDPbaCnOUKxTDKz
whRlrWVndKkY7PXbK6eCTtxeJZq/XF9QSwMEFAACAAgAgZTCTHUix2/LAAAAZQEAAC8AHABhY2Nl
c3NpYmlsaXR5L2NoZWNrYm94LW1peGVkLXZhbHVlLWV4cGVjdGVkLnR4dFVUCQADAUYTWwFGE1t1
eAsAAQToAwMABAECAwCVjzFrw0AMhff7FcJzKbTdsqXBQ6ElpvaQ9eI810dkn5HuYvvfR4Z26JhF
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
gbsKqBF9bcqUyG1ov7rdipiTNfiUx2/OMynXYh6GJo8Cxlch+ow2ISWRCD//VWK+tQ8w2ji4DqCj
DD6L8yVsp7dZes0NY5ZgX7kOv4DcD+Bg5cM342ltCWCx3wcjlmzhAWkAcJEQby7dBUB9JsyGyzDe
rhIOfUV4p16h2QkzluMwKglNQLXwDxz9TNzjnRoN3wP7IgEypBhdhxA1YFpfYqi2cJUvqRQhimOI
dBIRCvwQxhmOn6A/8HPVjPjPCHLOh26mRDSQGwlgh02MtS9Dl/sz+sbeN65u8p7IoLVOWiLqGuM1
vgDpL6XAqk5C3/13DcXlcgwWhfllQwpS/LgM0PTl0s6ANwDGV4OZnABm8q3A3JwA5qYfzHDuvf30
nikue/vpToXHO7ZpI9SPOs5aCip99PS+NqeFiLnPHg2RmtxBe7w+wR7fF5FYL/qN8hP059CkQAFQ
5dbQzty7hSv3UvISNIUXfNRITTWh/B7X0QodVPAAeHaCJQ4pCOy/TBEVt6F6w980DP6vSjE9wTLT
b5WcsxPAzPrBXJ+SnF+HcDg4AWKP0IFQUlH0VfHTemj2BHrS/+T2H1BLAwQKAAIAAACBlMJMESad
HhoAAAAaAAAAKQAcAGFjY2Vzc2liaWxpdHkvY29udGVudC1lZGl0YWJsZS1hY3R1YWwudHh0VVQJ
AAMCRhNbAkYTW3V4CwABBOgDAwAEAQIDAFRleHQKSXMgc2V0dGFibGU6IGZhbHNlCgoKUEsDBBQA
AgAIAIGUwkwh+cQmpAAAAEsBAAAnABwAYWNjZXNzaWJpbGl0eS9jb250ZW50LWVkaXRhYmxlLWRp
ZmYudHh0VVQJAAMCRhNbAkYTW3V4CwABBOgDAwAEAQIDAMWOvY7CMBCE+zyFe7Os+KmooqNCdAiJ
2nbmjpVMgrJrSN6eBIningCNNDP6NMUQkeM0/jW9PMD7uT6l5Wt3A8ciuYmd8QXxKJ/4mSmfkBF0
2ki7WXMOY1eMDGrUQ0s25ZASVCVKFhs5da2hNUIjFmIGYbgjGZqlDVZ577/zIiQrIb8/1LWj1WLr
/Gx1XbkzJkoHdQp7r3fO+oLK/0O/ISsqN+kFUEsDBAoAAgAAAIGUwkzBhbS9GQAAABkAAAArABwA
YWNjZXNzaWJpbGl0eS9jb250ZW50LWVkaXRhYmxlLWV4cGVjdGVkLnR4dFVUCQADAkYTWwJGE1t1
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
0XdlurgFz6iJGZzPx0hfZwWLo4gDFzj7QbCQhRG1TVv4GHwkTBzFx2LFc8ywyhKnVeeDUrXvbEZk
ZD+qfJevvrmEHWO00xuEjz/2NlGUmk2OtDxzglcbp/xrY54icpkmykqqvhYfAjJVb5mSp1xHadZt
3zd4V5XdkSpnDoEXNT0e0AxdP+Du6XH90A1do0zTbp450C3azSuNbSKr0YsNRUsGuNw97feiNqeB
PuVXIsdNn+vuE5f9H8p/OCtziVKH/lnOXEI4rG3K9VB6y1TImLPBjfkCUEsDBBQAAgAIAIOUwkwK
olJf3AAAACYCAABFABwAYWNjZXNzaWJpbGl0eS9kb3VibGUtbmVzdGVkLWlubGluZS1lbGVtZW50
LW1pc3NpbmctZnJvbS10cmVlLWRpZmYudHh0VVQJAAMGRhNbBkYTW3V4CwABBOgDAwAEAQIDAM2P
sU4DMQyG93uK7FcTUYZKTFcYGLoVBKxJzhRLvqRKHLh7exwk1KoDYiSWYsv/F+c3ABgblsOY6QPt
fSs/Kdr3NKH1lXj0SewL+h39pLvWtXtkdEUZijdry25JVUCwCGQslaVYFwKWQp6YZLFjqp4RohI4
AkWmiKAzJowCEykYD/CW0wSSUZX5iEHJK5ml6/v+P3p0Qarjb4fDYGCz2pi+XcPQmRbb131ivNWs
prYZnVbPjqu2OjBn8kNO9Xgm9ubXt6adE/AoTig84Swnpi15fQlefmPMHyetuy9QSwMEFAACAAgA
g5TCTG5hYTwLAQAAAgIAAEkAHABhY2Nlc3NpYmlsaXR5L2RvdWJsZS1uZXN0ZWQtaW5saW5lLWVs
ZW1lbnQtbWlzc2luZy1mcm9tLXRyZWUtZXhwZWN0ZWQudHh0VVQJAAMGRhNbBkYTW3V4CwABBOgD
AwAEAQIDAI2RQUsDMRCF7/kVjz2LYI/eFlm8KBZ30V6z29kmGDMlmbj23zspSlsQ8RIm814+3kyE
stwY0XNlurgFz6gXMzifj5WezgoWRxEHLnD2g2AhCyOqTFv4GHwkTBzFx2LFc8ywyhKnXeeDUlV3
NiMysh/VvstX31zCjjHa6Q3Cxxd7myhKvU2OtD1zgtcY5/xrY54icpkmykqquRYfAjLVbJmSp1xH
adZt3zd4V5fdkTpnDoEXDT0e0AxdP+Du6XH90A1do0zTbp450C3azSuNbSKr1YsNRVsGOKn3icv+
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
AwAEAQIDAMWQP0/DMBDF93yK2zoYY9I/DJlSWJCQoCISsDr2pTnJTZB9ps23J4lgaIK6VpZ81nvP
Pz1bSgnKdHvr6RvV43A8UqPq9oCqjORs2bL6wPKZ/sbDoKo3dKhDn6FmtVROd21kyRhYegzRcVDa
GAyBSnLEnaoInQ3Isr93wKafpy80jPaWT5wIIa7TQhuO2o0d8hzk+iZNQYx7nicwrN8kkIVFdbfI
4In2NRSm9Zgl8sxNJ66YuRPcspde8HgBufonIWaJCXY9SOeczcVqmznjfia54fHbz3ftImbwyjX6
LIHdtiggxPGXq+hct9M+oAUKwD5i8gNQSwMEFAACAAgAhZTCTHRQfS3YAAAAqAEAACsAHABhY2Nl
c3NpYmlsaXR5L2ZpZWxkc2V0LWVsZW1lbnQtZXhwZWN0ZWQudHh0VVQJAAMKRhNbCkYTW3V4CwAB
BOgDAwAEAQIDAIWRzUrEQBCE7/MURS57EfH/kNuyBDyoCSSI1zGpJAO9GZmZEPP2dkAPK7heuqHr
o6upbkYXkRiT1tEm9I7SRSbYqYNwoDYKj5yUsIHg54eP7ND6ENgmWS+NKSfEuW0Z4wVWP2NxIogk
rNbgGOF7ZNW+rjMclbIDley9iF901fuKrCnqBofyuXoqmiLTnebbFa7Drr/a5Xh0w4hafZmfitfn
xBsVX7j8Ddz+B9wpcDq5P2f48BuX7fj926uVmTnKNDLkZgvjJ7R+FlkrG7ZYt2+EmcacBGLMF1BL
AwQUAAIACACGlMJMRX9xRScIAADvIQAALwAcAGFjY2Vzc2liaWxpdHkvZmllbGRzZXQtZWxlbWVu
dC1wcmV0dHktZGlmZi5odG1sVVQJAAMLRhNbC0YTW3V4CwABBOgDAwAEAQIDAN1aa4/bxhX9vr+C
2EWzQLCk3hs91irsfSBA2tToBk2+FUNyKI53yFFmhivJaf9777wokiIluXZSuA4cUvM893nuJXyX
yowuL+5SjGJ4ZFgiL0oRF1i+uS5k4k+vYVjIHcXLizkl+cuNN38lgkgce79dePBH4q30YxwxjiRh
+dzLWY4XeipkPMbcD5mULJt7g/XWi+Edx4uLf1+Y4+whEaOMz72r/mim54InQvEDSRI7H6LoZcVZ
kce+W5pM1X/Vi8wNglESe1dxHJu5hOXST1BG6G7uZSxnYo0iCzBDfEUA8gBnXt8MrRkIp+XgmIJE
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
zztITkVFbJy8ggzLOrTGOwnW/yDlbucD3bBzdtleP9zjdY/t26Z5MqVw0x4m75cDJVGbcvk0sWni
yNc/GMh57lXqj6Uxv1BLAwQUAAIACACGlMJMSzUgMEEBAACBAgAAPgAcAGFjY2Vzc2liaWxpdHkv
ZnJhbWUtZGlzY29ubmVjdC10ZXh0bWFya2VyLWNhY2hlLWNyYXNoLWRpZmYudHh0VVQJAAMMRhNb
DEYTW3V4CwABBOgDAwAEAQIDAM1RwU7DMAy99yusXXbo0jB249QxikAMNq2Tdk5Td41IGxQnbP17
kk5DQog7iuRY9vPzezJjDLgcjrVVn8hXMT2pnremQ155pevKOH7A6kVdv/tY5TvUKChgVL+45VoM
xjvmkByzSF474kJKJFKV0soNvLGiQ1YrkqbvUUbs2XXCvqNlUsgWmbSCWobnj9DFOnNnl6Rp+q/E
Cem80KO0PAe2mM1vIA1xDnmewKYH8iPvDMJGOCmtgRBBhGgVEpgGJttlWU6gCyhxxIBsjNbmhDVU
A0z2RbmH1eZ1uy72xSRLIDwWJ4CcVf0RFMG0xTAx/V2PBiEqnybp4/J5fe1Ra7wO/AjjZAYHQZD9
hflmueJgFBWXFQ938LaB1W5ZPiVwWX8x3Hith62wFHwEKc56TNIynGmkI2iE0uGm0c8Pi6HwBVBL
AwQUAAIACACGlMJM5LoswPQAAAB8AQAAQgAcAGFjY2Vzc2liaWxpdHkvZnJhbWUtZGlzY29ubmVj
dC10ZXh0bWFya2VyLWNhY2hlLWNyYXNoLWV4cGVjdGVkLnR4dFVUCQADDEYTWwxGE1t1eAsAAQTo
AwMABAECAwBlkDFuwzAMRXedgvDiJegBugWJgQ5tbdS+ACNTllBZakW5jm9fys5SdNFAPv7/9Qfr
GDJxltdihtVSgJUAtSZmQNndM8yYPimBCzIwCWc6YDnl5cb0vVDIfoNEXx41jXDbBBydMZRkc5yc
iuwYQ53BE/6IBVgMkwsThDhSEc+WQKO2D3nBRokVhdQJ2T4p1QZx3KOdYIsLrM57YCpiTMkRQzRQ
dee+r2AWCicS0kTv43rkqoamH+DSvnWvzdBUoqkKDpxTiSJfqi0JXv8bl5b2Omq1a5R9c32G9xYu
H+f+5XFwxDOL91uHicW1NJwWUuqPtVK/UEsDBBQAAgAIAIeUwkwaEzbsoAgAAN8gAABGABwAYWNj
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
dGVkLWNvbnRlbnQtd2l0aC1kaXNwbGF5LXRhYmxlLWNyYXNoLWRpZmYudHh0VVQJAAMNRhNbDUYT
W3V4CwABBOgDAwAEAQIDAM2QsU7EMAyG9z5FmYOxBBJITL1juOG2AwGrk5qrpZBUicO1b08KQugW
ODY8+Lfsz/IvA0CLbt73Sd4Y75byIAGH+Mpoi/jeRsUntlv5kvXSxR17plwZCVeX6GmORUE5KyTO
xWtGco5zFitedMY9B06k3IOLQTkoHEQH6CWPdRmUrGdwifIAPI3sKnmhkzbGmP/mj5wW8h/uuq6F
6/Ob1iyp65p2idXzLnq+rbpJsYxVH8mX2vgcHyP3SirugSf95l5iPBU9a+Dnk+Z4XF+0Skx/92Qp
NSf5+eUF71BLAwQUAAIACACHlMJMLVYdWvoAAABoAgAARQAcAGFjY2Vzc2liaWxpdHkvZ2VuZXJh
dGVkLWNvbnRlbnQtd2l0aC1kaXNwbGF5LXRhYmxlLWNyYXNoLWV4cGVjdGVkLnR4dFVUCQADDUYT
Ww1GE1t1eAsAAQToAwMABAECAwC9kbFOxDAMhvc8henCgngAtupUsYCuIhXc6qbONVIuQbHD0Xt6
3AFOxwIDIpKlJP78/7bsczYjFo2T6dIE2YMQi2l3TznSHbS7FxrbQqi3Z4xVvwzoOefvS66v37KX
hBWU4AZ6lzPm1fd35NWf+K0z/p/X6QedYQ4Mb1SCD8QgMwrsSSSkPbichJKsi8AEFOmwvo5BZkUS
FRSavqCQYGMtCI6RYMrE6VrAYWUCBFeQ51tjtgm4OkfMN7DkqloxAtOKsLagDahX07fWNnBQCvek
pM8x5qN6jQs0Q2cH2Gwf+4du6BrVNCv+KetrjEuPhZXWuaRUMuaixJgPUEsDBBQAAgAIAIeUwkxS
Jo1S7gcAAEIcAABJABwAYWNjZXNzaWJpbGl0eS9nZW5lcmF0ZWQtY29udGVudC13aXRoLWRpc3Bs
YXktdGFibGUtY3Jhc2gtcHJldHR5LWRpZmYuaHRtbFVUCQADDkYTWw5GE1t1eAsAAQToAwMABAEC
AwCtWVlv3DYQfvevUG20BgpL2vXazh7OFomPFOiBognavBWURK0YU6JKUvZu2v73Di+tpJXWG8Qx
Yh0ckt/MfHNQvs5kTpdH1xlGCVxyLJEXZ4gLLF+fVjL1p6fwWsgNxcujOSXFw5k3fySCSJx4/xx5
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
OyZrKw2p/3mNrdBedfeowg6wS5+60HEsIaW9uQ7VnX6Evts8fYHCL8mRl0pP49EBlhoQ+oIAgpPz
y4b9eHwI7vGhLj4o6L8S8fkhiM9fqBR8Cfk6F90FQEHVfzr8H1BLAwQUAAIACACHlMJMNVPfc8IA
AAAMAQAAMwAcAGFjY2Vzc2liaWxpdHkvaGVhZGluZy1jcmFzaC1hZnRlci1oaWRkZW4tYWN0dWFs
LnR4dFVUCQADDkYTWw5GE1t1eAsAAQToAwMABAECAwBVjzFrwzAQhXf9ioeXLKHQtVsohgwtMbGG
rKp9sgSKBLpTHf/7ngMdshzfwXvfcTZEhhCLzuAEK2Eu+SBYSOAwVccBa6AMqVvMC6SgktRIv6S9
hzSXELMv9e4klgwl7QVy8552XqgixOcS5c2YSwa3aSLmI7bSsMaUwERaYlIto3h0w2kcO9w15RbS
pC8plZVm/GzobD9afF6+h6/e9p06zelmoyT6wE3xWnY6v5td8n/Mt5S2wVVWx/5xbWTMi8iYP1BL
AwQUAAIACACHlMJMc5BzzNIAAACPAQAAMQAcAGFjY2Vzc2liaWxpdHkvaGVhZGluZy1jcmFzaC1h
ZnRlci1oaWRkZW4tZGlmZi50eHRVVAkAAw5GE1sORhNbdXgLAAEE6AMDAAQBAgMAxU7LasMwELzr
K/aubkUfUOjJbjAE0lITG+qrLG3iBcUu0qqN/75VSr6hLMwOwzAziAjGrUcf+YvMptBvns20nMiM
mYMfFzEfNO74+l6KavYUyKZfD88P9ybYdcmCQkkwUspBkrHOUUo8cmBZzUTW83xEF22a0B6EIk7s
Pc1I509yQv5WzqK01v+9xzrJNlzWVBXg480T6AJVpaBcPfQsgZ5hUFgP+6XQetj+BSp9lbZ3Ctq6
6yDlS/Mhh7C2NibywAkkZippfdP1sHl/a1+bvlE/UEsDBBQAAgAIAIeUwkw0Je+NxQAAABMBAAA1
ABwAYWNjZXNzaWJpbGl0eS9oZWFkaW5nLWNyYXNoLWFmdGVyLWhpZGRlbi1leHBlY3RlZC50eHRV
VAkAAw5GE1sORhNbdXgLAAEE6AMDAAQBAgMAVY+xasQwEER7fcXg5pqQD0hnDkOKhDNnFW4Ve2UJ
dBJoV3H891knpEizzMLM21kbIkOIRWdwgp2wlnwRbCRwWKrjgD1QhtQj5g1SUElqpE/S3Jc0lxCz
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
dWFsLnR4dFVUCQADE0YTWxNGE1t1eAsAAQToAwMABAECAwBtkMFOwzAMhu95il89bdLUB+BWUG+g
VbQSu7rFIxFZghKHqm+PuwICxMV2kt+f/WewLkM4CybL06vWlkQDgz1fOAj0PcTtqjlBEjN2/M5p
f4CmgNlqcAJLGRRAyRFIJLmxCNfGHANymSbO+YAlFszOe2SlkMbkOCOeUXVN31e4qIpeWJXn6H2c
+Rnjgmpo+wF3x4fuvh3aSplm0G2yUJLvNbONxat85epkiaE2V0W7CeoUPa9mmtOjVjeab6+yDfZG
6Tdl9TvzqH6Y/pA27edpt/+H/MRjo31mdfXl/ly8XzpKWU2tf54K6+ifzoz5AFBLAwQUAAIACACK
lMJMGtADxBUBAABlAgAAMwAcAGFjY2Vzc2liaWxpdHkvaHRtbC1odG1sLWVsZW1lbnQtaXMtaWdu
b3JlZC1kaWZmLnR4dFVUCQADE0YTWxNGE1t1eAsAAQToAwMABAECAwDFkE9PwzAMxe/9FD6CShr+
nTh1m3oCRLVWgmvSmjVS1kyxw9ZvT9oVENM4o0iO8/Rz3pOFECCbYdN684FyNbZ708vObVHqYGyr
HctX1I/m61qOqlyjRUWRMf3drbRqcIEFI7HwSMEySdU0SGS0sYYH2fHWiqnEwS32LAwJs+mdx1bg
YYcNY5vxgZM0Tf8/kWo4KDvlyXMQ91c315BONc8TGE/dIRArzzCPA3Uu2BY0ggIdmF2fJWJCiiOR
eWcRDMEuUDcjSXqWWLytY/cQ7+URmx13yv+24ijuUUPU1andEZ5fF5ffnzfWROHE+S/4J0lc9iK6
JFAuqgooTNt8D9YOpfKE7UizDzhlLaoaVi/P5VNRF8knUEsDBBQAAgAIAIqUwky0HkNa5gAAAH4B
AAA3ABwAYWNjZXNzaWJpbGl0eS9odG1sLWh0bWwtZWxlbWVudC1pcy1pZ25vcmVkLWV4cGVjdGVk
LnR4dFVUCQADE0YTWxNGE1t1eAsAAQToAwMABAECAwBdkLtuwzAMRXd9xYWnBAj8D0HhrUUM2ENX
2qUroYoViFQN/33pOg3aLtTr4JBXvQ8CZVGMnscP23tSKwyOfOVZYe9z2q/Or9DMjAN/cj6eYMuM
xVsJCk8CmkE5EEg1h6Eo185dZkgZRxY5YU0FS4gRYhaymgML0oSqPXddhatR9M5GTinGtPAbhhVV
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
y++OdcDZhUBbfmT8p/9uQu1D/G2eN335vwD6L1BLAwQUAAIACACLlMJMyFdepjAAAABDAAAAIwAc
AGFjY2Vzc2liaWxpdHkvaW1hZ2UtbWFwMi1hY3R1YWwudHh0VVQJAAMWRhNbFkYTW3V4CwABBOgD
AwAEAQIDAPPMTUxPVchNLFDQVShJLS5RMAIyjBR8MvOyixU0EnNKFEoS04s1uXSxAi4uLgUuAFBL
AwQUAAIACACLlMJMMo/0TEoCAACvCQAAIQAcAGFjY2Vzc2liaWxpdHkvaW1hZ2UtbWFwMi1kaWZm
LnR4dFVUCQADFkYTWxZGE1t1eAsAAQToAwMABAECAwDtlNtu2kAQhu95irlMBI6xSdPKqiogTZso
pAcgh9vFnphVFq/lHQfcqu/eHcdAIIG2iRT1InDh3fn/9Rz2kx3HATcs4iiTt+ge8nIqE3esJ+iO
cqmikSb3Ekencv7octTto0JhrEcmLd9VotA5OYSGnAxNrsi4IgzRGDmSSlLhyomI0ZmI1HdwlmJI
GO3RjGr1ev2l84uQcqHK7O02OF7Da7ag7jXeQLtdgxM2gjWCA/w+8O3Ch55MbgzsCEVAIja7NXAe
/dWczlVfKwygc/U503nKgUE+ysrYTpIrtTv3fEQTZjIlqZMA4rn5cGz7y9CG3ossEwXoazDyB4L/
geVjVGkAvPomrIusrcpUygPrDODL4O758+27/Qa0Dn6xNJTENfByJTMHLoTKK+2TDnODUQBN3h0l
YqR45/HuUiaRnq6ntFfB9znEGZ2J7AazvkjilW4HJDJa6msvOEqijdqFNJIW1fAtYHR+cqRwYns3
D2bUXKmoOtVVOrz5nmvCHt6iqqJDnZbbxdvWMvdsE7mI5xP7enYSWZO8llzjHWSVcKiEMT1paEM5
5UR5jJ3EIkn6Qf+RpFV5ObljGY9tcJulKr+bm6JsrbYRSB7f3/KoKu9GHJubceQ8j9Ho+a0GHPhb
aeSz3tOQXKZ9ApH35rmK41J4aRYX/WxF8VkQLlI8k8Hzfi+AMVEauO50Ot0TaapwL9QTl9VO+Sk+
xeL+EU5tv+KCr92MZTos0qrBdaCZLRrfr/d/RtxvgLf/R8T9V8RfEf8HxIH/UPsNUEsDBBQAAgAI
AIuUwkxYs//52wEAADgIAAAlABwAYWNjZXNzaWJpbGl0eS9pbWFnZS1tYXAyLWV4cGVjdGVkLnR4
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
b6+Ecj4eMPDH0sQ6YTDBWWUfE98nRyRIJmMsaZHhLWd7RbWT+p3+rGQ0/3Z/vtKRni4X+q7V9exu
rSF9lvq+lZnEBnTLNXRXaor15NsbKrvabNkHGyr7aXMNfhuEczA+OI/VxQJpuEj22fMlgq8//T/R
apivBbeaJiybJmw3TVg1TXjQNOFT04S3AdSD1XwAy5xS1VAY6+cqaYGMw3qWejdeBc9QSwMEFAAC
AAgAkpTCTKKXV5ggAQAAPgYAADgAHABhY2Nlc3NpYmlsaXR5L21hdGgtbW8tZmVuY2VzLWFuZC1z
ZXBhcmF0b3JzLWV4cGVjdGVkLnR4dFVUCQADI0YTWyNGE1t1eAsAAQToAwMABAECAwDdlc1qwzAM
gO9+CpHTGGUP0J3Clo3BSkIdRi87uI6yBJw4+KdJ9vSTy8aWS0k3aGA++EeW9Ekgy3lVWzigqcsa
LbgKAYcOpcMCjFYkEm0BB6F82JrjrbZ0WWoDjb5hLG3BeinR2hWM2kNfKwUWEQTNJjjVJURZzHkE
DWmJNyTNUiule/KzHyHKE57DXbrJnpM8icgni3dbgq8h3j0a7Ttaud+bT9G9lr7B1m2Eq+j4EoJb
AwMaJ+2CftqhEY5in9pNbbkTrpY5Du6ng2+T63msB2wlXhLIsRNH2L/Ocqv7k5hfxnlerFfzwU8F
1Wp4Xn+nDvOpc2rhPPhqkZTHJVO+XSTl96WK+pWFNv3Vzkuv1JgJE7o9/RHOeGRs0qoZ+wBQSwME
FAACAAgAkpTCTKKsRsS+CQAAjEQAADwAHABhY2Nlc3NpYmlsaXR5L21hdGgtbW8tZmVuY2VzLWFu
ZC1zZXBhcmF0b3JzLXByZXR0eS1kaWZmLmh0bWxVVAkAAyRGE1skRhNbdXgLAAEE6AMDAAQBAgMA
7Vxrc9S6Gf6eX+Eh05MzTOy9h72EdEIu7ZkeCkOYli9nOrItxwLZWmw52c1p/3tf3by2194sYZMs
CTBgW5Kl93mvjxTDYcgjerRzGGLkwyXCHFleiJIU89d7GQ/s4R40p3xO8dHOmJL4y741viIp4di3
/tyx4BfHM2772GMJ4oTFYytmMZ7ILpclPk5sl3HOorHVmc4sH+6xP9n5346aTk/iMcqSsbXb7o1k
n3NOKD4lQaD7XeR9uUxYFvu2GRoMxe/iQmqFlFHiW7u+76u+gMXcDlBE6HxsRSxm6RR5WsAIJZcE
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
Mf9fL/4XUEsDBBQAAgAIAJWUwkzUrYQm2AAAAJ8BAAA+ABwAYWNjZXNzaWJpbGl0eS9taW5pbWFs
LXRhYmxlLXdpdGgtYXJpYS1pcy1kYXRhLXRhYmxlLWFjdHVhbC50eHRVVAkAAypGE1sqRhNbdXgL
AAEE6AMDAAQBAgMAbZHNasNADITv+xSDz2mhTf/obQk+FFpiYkN7lR05XpCzYXfd4LevnBJoYS8S
fBoJZtQMLiJxTFoHShjd0Y0kSNQKR1BgpMCUeA+K2FOi68j1usEzBvpm2N2b/R3cBJaL/BT8iUNy
HG+N2R4Rp67jGFeY/YSzE0FkBmkNqoHvUVS2rguMqqIDq7L3Iv6st9oZRVPWDTbbj+q9bMpCb5qO
Re5eYb92XnjpGwUXep+l6yx9yNLHLH3K0ucsfflLP7m1GqNZHF6T6CeRuaIQ1eDyhDCxMf9cGvMD
UEsDBBQAAgAIAJWUwkywCU7o5wAAAO8BAAA8ABwAYWNjZXNzaWJpbGl0eS9taW5pbWFsLXRhYmxl
LXdpdGgtYXJpYS1pcy1kYXRhLXRhYmxlLWRpZmYudHh0VVQJAAMqRhNbKkYTW3V4CwABBOgDAwAE
AQIDAM3Pz0rEQAwG8Ps8xdxrHP+gK55aS/GgYtkt6DVtoxtI22Um427f3rYqCOsDeMkXfuSQDwCs
a8b31vMHuXxe99y77dCRqyNLWw/qXqh+4J+4m9WtSQjDdMP95YUTHIeooBQUPIUoGhw2DYXANQvr
6DruuUMBxVoI9qxbQM8IHKBFxW+nw44apfZUD2qSJPlHr2GjEWV5LE0tnJ+drGyyzDQ1tiGRq1ub
va4HoTnzCb74+m9eHTHMfPOb7/0QdyY58qlt5gmNLbPNxoa41HmLImOJPlBrOVj1kYw1tio2lc2f
n8rHoirMJ1BLAwQUAAIACACVlMJM13sRidcAAACdAQAAQAAcAGFjY2Vzc2liaWxpdHkvbWluaW1h
bC10YWJsZS13aXRoLWFyaWEtaXMtZGF0YS10YWJsZS1leHBlY3RlZC50eHRVVAkAAypGE1sqRhNb
dXgLAAEE6AMDAAQBAgMAbZHNasNADITv+xSDz2mhTf/ozQRTCi0xsQ+9Ko4cL8hZs9pt8Nt3nRJo
YS8SfDMSjNQOVhFYQ6oDBYz2ZEcSBNoLK8gzgmcKfAApDhToKtk+TfCMgb4Z5e69/BVuPMvFPnk3
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
TB+mt8/e9eeP+QI6dGz4/jZF+QzHvype+6IevQHqvz78eHP90IFacRv0B83Lr0SmHmfAhNefPzGl
XK4/P7L5P+Y3mrC/iYGD/lvE5eHj3fQToP0nAn3wLeMxGLxlQKpwdwWivQLfxqiTNzDq8frpyTMH
vR8qBHILtA86SXiDnc2jXv6gRHbXvp201botwNkeHaKaYAsVL/X/7yBgHl5AqH5dPN4U7qgb7v31
x4fOWIiUFRSUNPYGgfcTEnAe/F37+ltx/WC4h5M62kslY3VZ/Y8Z+wemu8HpG9T0VYzp5BFMgou+
B4+ZJ29GWYjopt/0NFL5RHgn9umPXv8dvd14As68k/urnrroe6gw89TtCTW6LrYTVWyVBUzd6cf/
y+rbR2p3EEul+gp98kgKSleP6m9FxKrwJC/w26rfwT5avKOhfAMxPthHjXdUsIbzPH169m5//P7x
Yfo8/S3507jo8ycc7/RfWvkvUEsDBAoAAgAAAJaUwkw8MJ0dKAAAACgAAAApABwAYWNjZXNzaWJp
bGl0eS9vbmNsaWNrLWhhbmRsZXJzLWFjdHVhbC50eHRVVAkAAyxGE1ssRhNbdXgLAAEE6AMDAAQB
AgMAVGVzdCBmYWlsZWQKdGhpcyBpcyBhbiBvbiBjbGljayBoYW5kbGVyClBLAwQUAAIACACWlMJM
tQ+ks6kAAABRAQAAJwAcAGFjY2Vzc2liaWxpdHkvb25jbGljay1oYW5kbGVycy1kaWZmLnR4dFVU
CQADLEYTWyxGE1t1eAsAAQToAwMABAECAwDFjkFqw0AMRfc+hfYTVSS9gGmX3ZVC1/KMUouqM8GS
k/j2tU17hoCQ9D+fx0dEoLx8lUmvQq/be9NKY/sRGma1MrSgTxne9P+8bC69iwn7mtH6fCLjpc2B
IR44ic8WTpyzuOugprFQq9k0f+PItZhMjnK/SA4pT3GPLqX0mBacY2bbO/Q94PFwgrStvu/wY+XA
hd2ldGkXZ1ZbBcSoDutwhVZhR8IfsvsFUEsDBAoAAgAAAJaUwkyh5aMAKAAAACgAAAArABwAYWNj
ZXNzaWJpbGl0eS9vbmNsaWNrLWhhbmRsZXJzLWV4cGVjdGVkLnR4dFVUCQADLEYTWyxGE1t1eAsA
AQToAwMABAECAwBUZXN0IHBhc3NlZAp0aGlzIGlzIGFuIG9uIGNsaWNrIGhhbmRsZXIKUEsDBBQA
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
wvrPhjN6vc2bfsPQfgJu6/04zMNrc4zmbe0YzWtzjOZ5WxOnzTmU57dlHvqHagC/YI7+FIxiC4dY
XsuE7z0Kozh4RAN8e9r1fhxG8fCjkPsAbHulyXs+jOJg86bfMLSfgNt+JEbR5izD29pZhtfmLMPb
2lmG1+Ysw2t9llEcYehjCpGzCvV6iq9JQSPQS3WsoX9bHxkIImIQqJBLpSAsevWcuYa/hdMLv2Up
8J97ufQf3oDfx0bby7v+t5XLZ5F3/TbHV/6a/v4ToB39Za25eq/Q1693jgGT/hur32gC59ybW9+t
Z5uO1d9ax+q36Vj9rXWsfpuO1ffvdVb+ORO2nOCUYgQMixSV5oanV+6zLhzfuUlVJtM2bfPj7MXg
x2hX/YPHNkVvhSn6z76aPqz5fDhwtlNX7yPfE+lF/YPv5Ikm3D4VT/xA7aXfpr30X99Bc0Smzwei
jLH5J/XPBjSSle9qlEdIRms63XMeE03iBYowZSR0nydC2nT8/nBrjKxNxz9Y03FdjM8v0Ok/f/n0
cXwx3qxsgzZd8+Aev9N9H4DULvp39I875h/2+D9QSwMEFAACAAgAm5TCTBWNb6ewAQAAmQMAADEA
HABhY2Nlc3NpYmlsaXR5L3JhZGlvLWJ1dHRvbi10aXRsZS1sYWJlbC1hY3R1YWwudHh0VVQJAAM2
RhNbNkYTW3V4CwABBOgDAwAEAQIDALVTS2vbQBC+61dMfZENQRDnZsjBSVUwuLXBKvS6Wo2sTUa7
6j7iCPLjO1o5RDaBnHrSMK/vsaOiUQ48Og+yQfnMcSM8WFEpA2Xw3mgH+NoZh+CVJ4SgAAlb1N6B
NNai9NRD0BVaEPAirELfg6lBKtvK0DovtESXwUbDETVaQTcMguAaE6iCX7sCKuVE16HgDbp6L5QY
2yLq700+YkJtbExHtqV5zZJkp8EFyRjuBnoT4KSIwCEyHYdMxw1sZvv14TCDlrvEEbmzNkTmhIzT
w6zIDwU87n7ut3mRz3hnMrSPNtxmo3D2KV3/KYZ4BWnyY73ZXpHLlMv/BkFzEdmoUpHy/aPR3jIY
2uw9T3ieeOg31TwlUSLdpovFVLoNmEHRWDyx/xI7r4yGou8wt9bYVXS8VpoFMDFtPFsHpnzi54A5
vggKwit9hPRziulionCZVeikVSPGqPP7R2YF2/VDvl2K9GLmU1diw7erN3t7uzZqnL2/n84OqwbV
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
DywDACwAHABhY2Nlc3NpYmlsaXR5L3JvbGVzLWV4cG9zZWQtcHJldHR5LWRpZmYuaHRtbFVUCQAD
PUYTWz1GE1t1eAsAAQToAwMABAECAwDcnXmP20aah//3pxBibDIZWN3iWVQ79sLnTLDJJEh7MAEC
Y0GRJYkxD4Us9ZHd/e5bRVJqqQ/bi61fUL9kMG4dFPlWsd56qkrUw2/WqiqfP/pmLdNc/6mkSifZ
Om07qZ59tVXLafKVfrlT16V8/uisLOoPTyZnF0VXKJlP/uvRRP+n5JWa5jJr2lQVTX02qZtaPu3f
WjRtLtvpolGqqc4m3uZqkuvHMn/66H8eDbsbd5I1ZdOeTR7Pgnn/3snbopSvi+VyfH+RZh9WbbOt
8+lu02Vi/nd4oOEIXVMW+eRxnufDe8umVtNlWhXl9dmkauqm26TZGGCVtqtCh+zJajIbXto0unB9
OVpZ6hJdyD6gtXcr0iAI7tl/l9bdtJNtsTx4syt+l/0xDg86LeVSnU1mJ9Hu9bzoNmWqd1LUumbG
CC+LXK31h2ezfxvjS/O8qFf7Tw6xjafGPDo+O2O4Rb3WQan95uvmQra3ShRF0dOHKlvKoRpOzDn5
Th+rGz+8LJtUF6MtVmt1fObMVq908VNdlt2hGl31hdJFnN0qskoXpZxmsiyPSjnt93tUS5drXbpp
fw5NU7ts081NZOcyM+fuwUbTf/i4ydxuLmOb3dW7blCzzdVwhDdXG3169f510eSTyYn5c7uED4bX
FblcXJt/J32oL8sm+/Bj2qoTXdSzZdF2apqtizJ/sGLN4c715598bGetrPSpffKJ443H2FX/0OCm
C7PJUbOLdq1OtxZVZGk5TctipXNDNfcUq5Wmpf89rfNS7qpj3I+pQvN8LYcTetOes23bmVNjwr6d
gelCn53t7ozpY+4bzpA8fXgfi+Kond9tDqtWXj+91TBPok+dr6GKJyeq+WQ1nyzbprpV2WP/aI5h
av0f22ohW92a5GHrGl7dBX63Gx1b7Xx+1AHu0uW+bnCXyWEY3tvdHJ79fR9jdhQNKTCkwb7DH9vB
2DzvayJDuEfNKRg7rIOC90W8t8MZIPFgtXykk9q0JjtNmGMF7nqTsdXsCnKUq/pD0yFb+7d0ffZP
dTlamX6YmheGgIoqXcmjM3M28fcVvihTU4tmw0x3DToGHcr4aHK73DdnJQnnD/a9S7m86QBMs9J7
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
9B7rV/q55sOvfkdGE5KG7MO9ZtO7KEowiPIYIkvQpmkwBKqJSXrtXac6kpMynozyjlGRVdZIwiox
dXrj5QMbwbaUi2RFUfwXX6aRaHh0VVWgHidPUAyhqjJYWwhxHDiBhIKOmCEggknREwZwB8g3s+02
h3NSmSMm5cExuw5bqHvId8vtDhbrt81quVvmZQbpqKEDRnyZHC5ctAIUYHpTaRzHs70qFs+zl9Xv
tnBykRMKYVrC3gS4K2+E11P+0sJI/N7yEJn7jfEhmU9I8REHwzc7ZF9QSwMEFAACAAgAoZTCTOtj
5cHkAAAAbgEAAD0AHABhY2Nlc3NpYmlsaXR5L3Jvdy13aXRoLWFyaWEtcm9sZS1pbi1uYXRpdmUt
dGFibGUtZXhwZWN0ZWQudHh0VVQJAAM9RhNbPUYTW3V4CwABBOgDAwAEAQIDAF1QS2qEQBDd9yke
btzIhDlAFmFwEUgYQS/QaqkNpRW6umO8fVonQpJtvW+910AzrqaZnCKQBoUbYLHY4D4JwYOYZloC
olJiTITcy5rDC1OBNgYM4kdKuiCwfX8Az/noXZ/vp11xmtmW6fQrDuRx0uCYQV8fcmZ4N04BS5xb
8goZkuuqTx0x68WY+wKNXUeqBTaJWHe5EqXeSt7Rociql7rOMCeWHSkxB2GWlXq0G7KmrBvc7u/V
W9mUWfI0O/3R55LCbhLTz2mT62+gE47z8h/76TJE5q2yXlPEPqaPZMyfHGO+AVBLAwQUAAIACACh
lMJMGSbdHVUIAADvHQAAQQAcAGFjY2Vzc2liaWxpdHkvcm93LXdpdGgtYXJpYS1yb2xlLWluLW5h
dGl2ZS10YWJsZS1wcmV0dHktZGlmZi5odG1sVVQJAAM+RhNbPkYTW3V4CwABBOgDAwAEAQIDAL1Z
a2/jNhb9nl9BJNgGKCLZTuLUj4yLmTzQYqdtsAnQjwtKoixOKNElqcSe3f3vvXzJkiw5np1pM8jo
wUvyvs+hcp2pnC2OrjOCE7jkRGEUZ1hIot6dlioNJqfwWqoNI4ujGaPF8xmavVBJFUnQf44Q/Ciy
VkFCYi6woryYoYIXZG6GIi4SIoKIK8XzGRqt1iiBe5LMj/53ZJdzi8SccTFDJ8OLqRkL7ykjtzRN
3XiE4+el4GWRBF40neh/9Y3sDpIzmqCTJEnsWMoLFaQ4p2wzQzkvuFzh2CmYY7GkoPKI5GhoX604
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
b2ro5CsMbcT6/7X1L20P3wqSpgd4ctrvSY0zHpTSkrHNg/5DYoIosFJRkm/bvkfDA5TtEfoL0GQ0
OkSdUb86DfT9muxpXQxlAxZk/s77J1BLAwQUAAIACAChlMJMGLO6pXIAAAB3AAAAMgAcAGFjY2Vz
c2liaWxpdHkvc2VjdXJlLXRleHRmaWVsZC10aXRsZS11aS1hY3R1YWwudHh0VVQJAAM+RhNbPkYT
W3V4CwABBOgDAwAEAQIDAA3IMQoCMRAF0D6n+N1qYyFbpZMliKCuED1A3IwaiZNlMlG8vb7yDePR
j3uHg/N+s3UWOTFh3VucvzM5kSIWjSPd/h+RKrgoAqNcnzQpFvQOuQVNfEenSTNddi7Ti1hX0yPl
KMRDaazd0pxCrZ8i0RjzA1BLAwQUAAIACAChlMJMTXGU6/QAAAC0AQAAMAAcAGFjY2Vzc2liaWxp
dHkvc2VjdXJlLXRleHRmaWVsZC10aXRsZS11aS1kaWZmLnR4dFVUCQADPkYTWz5GE1t1eAsAAQTo
AwMABAECAwDFj81OwzAQhO95ir0VFFyL0lNOgShCiJ8i0oqzY2/bRa4d2es2eXucSjwDl92dTyPt
jBACpJ4OJtAZZTOfF3Ly6E8o+0TW9J7lN/av9LeeZiq/0KKK2UPuYSWtmnxiwRhZBIzJcpRKa4yR
erLEk4yoU8DsGHlPaI1gYosikcBxQM1oljxyUZblP8dRmpOy1zB1DeL+bg3lPOq6KJvNR7d5a+G9
7brH57YCSw5hta5gOw3YhuBDBckZ3GdugCI4z6Ac+P4nd4QbPCubFJM7wOL6cffSWjyh46U+5h4B
XeOT48VtAZ8qxosPpoBCbHMTGDLAWf4CUEsDBBQAAgAIAKGUwkzwfcVTFgAAABcAAAA0ABwAYWNj
ZXNzaWJpbGl0eS9zZWN1cmUtdGV4dGZpZWxkLXRpdGxlLXVpLWV4cGVjdGVkLnR4dFVUCQADPkYT
Wz5GE1t1eAsAAQToAwMABAECAwALSCwuLs8vSuHiCkktLlEoAHJTgRwAUEsDBBQAAgAIAKKUwkzX
mb/q2AcAAAoaAAA4ABwAYWNjZXNzaWJpbGl0eS9zZWN1cmUtdGV4dGZpZWxkLXRpdGxlLXVpLXBy
ZXR0eS1kaWZmLmh0bWxVVAkAAz9GE1s/RhNbdXgLAAEE6AMDAAQBAgMA1Vlrb+O4Ff2eXyEk6KYd
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
L8y6YDJbBJ+AndZCaLwBnkkG43Dpk5CHYEIZ8OQz+CD4I3lGrILbDSD0qwsgJOPCn/62ZkRXwMh8
iBK6ulalMgJ/csoAFsAF/tF0RwPRlys37WT/a2fLHC4zr/v7VV+P3+DmybCbf4R3ffHv2v7blJq8
QanpsFL/00DYe/rrwD/InTR9+gbTT+SHsf8TVAYgAikJ/r/E5OwNPpj9PuHvPEw1h0pp/gnoP1BL
AwQUAAIACACilMJMbZZ/bnYBAAC9BQAAMAAcAGFjY2Vzc2liaWxpdHkvc2VsZWN0LWVsZW1lbnQt
YXQtaW5kZXgtYWN0dWFsLnR4dFVUCQADP0YTWz9GE1t1eAsAAQToAwMABAECAwDFlN9rwjAQx9/z
Vxx9UWEUW33am0gHgkOhhT3H9mqzxcTlh7X//VJbWLd1bErBl4SQ733v7pNwJEFtNJiCGkgLTN80
lAWaAhVoNIaJvds5poZJAU7jbmDPTiiAiQzPUErlQlKplNPwipCNAG3TFLV+gEpaKBnnzgKBulUx
1CBz8LaLOPbg4FR0j06ZS85liRnsKvCSKE5guXnerqMk8nxCSC1v64g4HlAYvzlhtiwYzxSKpbTC
ANMwJU+L1fpfal1Iy11OhMCHF+pi/SZYHut+A5/puA3saI2y2MhzyjX6f+ZbmFXNajydOMPo3VI+
bhNMftgmhcIS8JziRQFJdcRIKakewTqTnAlXi+tSSANUgNy9ujwwxhPlll6ea3RVJaPJLbjCPlzh
wLiC77jCe+EKurguf7EpaNbtmLUN3sJz1sdzPjDP8DvP+b14hr/wnA/F8/N/dtzDodyDPveg1/26
wdWom+mZW86rLVW6saufh5Avk5GQD1BLAwQUAAIACACilMJM7yk84K4BAABkCAAALgAcAGFjY2Vz
c2liaWxpdHkvc2VsZWN0LWVsZW1lbnQtYXQtaW5kZXgtZGlmZi50eHRVVAkAAz9GE1s/RhNbdXgL
AAEE6AMDAAQBAgMAxVVNT+MwEL33V8yNVlnHjVsunNqtioR2D2iLxNlJptQrY5d4DM2/X+djRalC
oQSpiuQ4zpuZN288NmMMeFY+5IV6Rr6opi/K8I19RJ56pfPUEr/H9Jf6//pZrfI/qFG6gFFmIriW
pfXECB2xAp3X5LjMMnROpUorKrkL+IxYGB/REJPElMlxx3C3DeuYx7SjQRRFZyUjM/JS11RmM2CX
P8QYonqczQZQPbfz1Qoa82VjHTdfmC82gUqBZmG9IVAOxgN2Cjxp4XZLypokVm7VQqu/VHj82N+c
bqpEhuNRMF8+hWSGrbvR553skxJvSIlepJJDUuKVVHQ9v/n9KVJuY73OIUVIYriXQea4te4Q7hVc
RWnwa6kdxh9HPKblod+7TYEvgLsMawTclVtcFoUtrsAHJ2tlGsGMJZAGbPo3xIEhPkvtJSnzABcn
MbkYfUkx0amY+G7Fugp9HsWSfcVgbydPDnZyneJprTF50xrTXq0hDhWb9muNSWehp99d6C7a5ym0
eK/Q0/6FFj17DY6coF+gk/Q8LOHILdPQOfGWa+G+vmLXXuvyVhZurw3+AVBLAwQUAAIACACilMJM
OLymFhkBAADIAwAAMgAcAGFjY2Vzc2liaWxpdHkvc2VsZWN0LWVsZW1lbnQtYXQtaW5kZXgtZXhw
ZWN0ZWQudHh0VVQJAAM/RhNbP0YTW3V4CwABBOgDAwAEAQIDAKWTwWqEMBCG73mKwdMuFFldX2AR
D4WWFfQF0jhqaDZpM7HWt29EC1bKtuIlIZl//nwZZliJ5Ahcyx2IFsUrQd+ia9ECoXNSN35XKJw0
GrzGR6CRH6hB6go/oTfWpwhjrdeogbGrBuqEQKIHGEwHvVTKWyBwv1qJBKaGIL8URQA3r+INemVt
lDI9VvAyQFBmRQnp9Tl/ysosCBljo3zmyBTeULtwOmGVtlJVFnVqOu1AEpw2qaNJbd7GD0ahpGJW
jkFnO/zT7eIex0ocTkefnb13XB1mt+O/PZZE8ZIo3kMUrYniFdF0e169UXNF25DPS7tkD3K8Rk5+
RU52I9+t8na7u2203e67h6dBqjulhpxbWhSU/RgSxr4AUEsDBBQAAgAIAKKUwkxVfyK+agkAAD42
AAA2ABwAYWNjZXNzaWJpbGl0eS9zZWxlY3QtZWxlbWVudC1hdC1pbmRleC1wcmV0dHktZGlmZi5o
dG1sVVQJAANARhNbQEYTW3V4CwABBOgDAwAEAQIDAN1ba2/byBX97l9BxOg6WYSUSEmOJTsuEj/Q
RbdFUAfYj8WQHJqTDDlaztCWsu1/750XRVKkxDTr2E6ChI953ce5955LJ2epyOj5wVmKUQyXDAvk
RCkqOBZvj0qRuCdH8JqLNcXnBwtK8s+vncUd4UTg2PnjwIFfAq+EG+OIFUgQli+cnOX4VA2FrIhx
4YZMCJYtHH+5cmK4x/HpwX8P9HZmk4hRViycw/Fkrsa8a0LxJUkSMx6i6PNtwco8du3U5ET+rh+k
T+CMktg5jONYjyUsF26CMkLXCydjOeNLFBkBM1TcEhDZx5kz1q+WDJRTehSYgkZ3WAmU+i1JJ5NJ
x/4c5dzluCBJbZCTL1idUT/UpTgRC2fszez7mPAlRbAJycEyRsJ7EosUFo/HfzHyoTgm+W21Ustm
XCPvmt4x4pI8BaFENT1ld7hoaTSbzU77jI2xNoMnffIrnMXN4oQyBGoU5DYVTc/JWRegPgJd7FEM
TE8EqDhuqSxQSLEbYUobWrpq34aV7lPQzlU+lFC7L9ByI9kNjqTvekGjFjch04aLway1OwBqvFzp
E65WS3Av7A+q4deOJy9tDXvF4yTG4Vr+7ShR31MWff6ACuGBqouEFFy4UUpo3GtYedwNrH+9a7MC
Z+Da13vOM2dY82vAuaGc0oDdzKIO0CJIhKiLKLmF2BCsQ60CS6T/DeUxxdYcZh9pQvmcYu3QDZ6j
suDSNVLsdgSiELxTWo/BmRVwdPAo8XZJ0cD5NhxuC7w+bQHTm+3zlzax4wm218xeUrCsZWyTH+UZ
0ur/LLMQF4AmXEeXfmsF306jBrXzeSMB2nDpSoM2kqfTaWe6qXu/yjFyo5kOAR0GVcI3ODDw7IKI
FrcBp4lJWDXFlYqdCUcXiV6z7EhSy0JGpxTTGNBmE4Maq0gjVmGRq6NVDYE91SPoUWD02ZUvtEAk
Q7e44ZmFE1QGDymSVpQTI0gNIAOIYu6ctt4br5xM5725N8HJJgFIWMGOVXmsRXPH0jiJm0vB2bx/
+hzPT3fV9Gonk2Xqcpio6C/Xcby1gRNj2r8Cz/dKM/rZuSmXS1YIqLSFQTIYNctwLrjz8wjOQ6VI
mba3rsaSzADqBeA0sp5SC9ScnvpfzZHCIICEmmzT2bEFtkw3iNILK0Hn7EDXsgyt3FZ5z4AXmFfB
uKo77aPB7jvPqSK7CunGMV1yemyJddl073H4mQhXFDLstCW04I4X8NOaGlOj9CEXSJT8fRlCDa/q
oSejp1McuUQwRkNUNMft0QnFKkI3Axn7Ur2tktNEx7HhUfLWsgV5308J+zLHTiq3gUVCVljvY/Lx
uKmShxQH0WG2XcXvCeSCogW1as8vLsljvIIktUO1TSGsidCll0lGjfJ2YrJYLsU0AdtZmuC8kK32
Cnq8EdTXILZFSD8pYc19VcHMYyVwxcwaR5OkQJmWsBUnTRpRi5GLnky7bZs1cE12b2o9pkAcgTMP
KEzH8+sNvExN7hlUhmiOVTQy3qbHTXJs9tDm28ZwLyWIbZ7Vx7yzScG2OuP66EdbI1s9yfEbm9C2
xdwRJLVuh2dIc/l6zs1ZAa9Pe7KM0V9SMN51uNbDxvW4awpFIaYLlECEvd5art+rTVRBzkHVF85/
nBenB1UhrpXv9mqKgKGzxBXrJe7c6kWvRGZiq8VNMVUJsiKjSJLRnhp1mGHOLfHotXOXW2rRcaMS
9ZBSCCUGCNEdYSW/qN4Amf2C84taseyq85ZytEtMvbjIXA6oVUiwud08GySaJDKxNXCQNAYawHGw
kDHRKBeG9vWQvnqdDUuIqryed2x9j8ndImGRsSErhcwX9fALaakqiRkCvCQgC1Qw3ypSL5ZqF+Aw
H1OsTxqZSnsL8ksdBHMEjIV6toEad+4IkjlZ/MNgAoQNC3YPDgcmkCJYa0gREZ4kQZUe02PD4isq
Yp5tdpBEVv4ZN4uo/aTT5vgZiaHL0opJB3HbfHdUFOBhjKM7sD1YALfqSr3T2yp1ru9NNGXafPyw
1b/DB4eXl5e1kD48ub68nl135icgl90ovrq66pJ6gbMlZKiG8w1Na8304BYkbUT+1fxkfGLyVkQx
Kv6t6IFtBeQb1TalcsrZyHx1O+NRQZbg0yJ6+yIVYskXo5GOI48VtyP0Ca1GlIR89On3EhdrcwGj
Tb3AA0bpfeIvzmE7tc2509wwYjF2pevwPcz7KzhY+vDt9KS2BGQx3wdDFq/hAmEA4iLO3x7ZBkB+
Jkz981G0vo0L4BWjC3kLZGeUsgyPwpLQGFQb/YbDvxN7eS/fjv4F1RdxmEPySTAC1IBpXYEh20Ir
X1LBRyiKAOkkJBTqw0hXaxf+ltHqIqGpiAuEpkTUEysB8vpNMWsfh462R1TT3vdeNvMOT4Fdx60p
spNxGh+B1MdSKKx2hmr/N5zi6HwGRoXx88YsiPL9c6BSH52bEXAIiPHNwhwPEOb4ewnzZoAwb/qF
+fDu5sbRyLjSwKhY3YX8qlbIUlFCcifcGbclV5e6/LXolHqq4W0th0FHt7p7oVObt9NOJwPs9FMe
8uXpDs9B333+ATSCi7oH4+mnQSZUS0htOXd88/Q1kBiq8fxhNWZLmRV8j/Ab2wZsK2jmiqLED6Kj
P340t74Tv8j0+XL8Ckxw9Tuk0JfGJK8ewxD+k8R38ID49oPvAfDgkQE+eXSA+22AB18J8K0y0Uz0
wE33Z3kzaaetdpiBDagF2lTQBJ1fn43kRd2/++VX/TQsBORMnrKSQk+DHd9zfkO1zaCGeubxq8Dy
p2o//7+070r3DWXNPAUAeSdV506CKMePr3NPnfgGl+9M/3sM8zEt8L2DVxFWK5yP6yW+KgrZ7EAz
hRMQPJaEK2cQHbnDwk9wrvMS3yFaIiHbo58OJ/PTr5JOrXj1+I7wv1fsBU8x9npq1rDgC55r8E0e
Kvg6S9OTCT5/UPA9aBP1Z/Xf/nSIn6d7+kzto0kdxsSg9Dm3lv7sSXLvyUNy7+Pvwb2nj8y93zw6
9w7aCW763Lm3P/teBGDyJAnA8TcQgOlzJQBvHooAdMbHkyEAwQ9EAIZ8P/VPBhGA6Q9HAObP6ePb
0ysJ86fXEz6LoAyGfP0OxoOCMvjRgjLwn9NPfJ5cUAb+0/tI+jyCcsiPJYJgUFD6Q4LyG8Ud8gOG
YPJAP0H+RtmHfJUI9n2V4KX6ZxJJSen6g/wvXMrUg5qpHfhrXdS/ADkb6f829j9QSwMEFAACAAgA
o5TCTFjO4GXZAAAAwgEAACkAHABhY2Nlc3NpYmlsaXR5L3NlcGFyYXRvci12YWx1ZXMtYWN0dWFs
LnR4dFVUCQADQUYTW0FGE1t1eAsAAQToAwMABAECAwCdkU9Lw0AQxe/zKR65VEGkVU+CB5HcLA0k
eJ+kk3Zhsxv2j22+vbOIFY/2MjOH+b15vOmOJiJJTFqPnBBl5sDJh4iY59mHhMDuIPhkmwWcUjB9
VuAO2uCdXWBGjH7IkXsr90Q7p+gwSNSdxWecjLWqq7DWYCTCj6ia17atMOkWH4ra6K31J9mjX1B1
ddvhbbdt3uuurlSTqHjcIHFv3F7OL6v1iibjPoqrZ6zJuHSZJz5f5m/w4Re8cdna23+wj9cefbru
aAnmJ8BRsaXhEDWX8qeQhehPOERfUEsDBBQAAgAIAKOUwkxAbcL1KAEAAPcCAAAnABwAYWNjZXNz
aWJpbGl0eS9zZXBhcmF0b3ItdmFsdWVzLWRpZmYudHh0VVQJAANBRhNbQUYTW3V4CwABBOgDAwAE
AQIDAMWRUUvDMBSF3/Mr7otMqTFdXVEEoXPuScXhhvqatlcNZO1Ibmb7703KRjtQfBEkkOQkN989
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
jqg4xDhCUKlxhGCW4whBoccRgkeQIwS7IkcIZkmOEISaHCF4RTlCOlbltM6eqxLyILIc6Qi99nh0
OaI9EmGOaLiUOaIhkuaIhkabIxoOcY5oe6vOESnveyno47jbRGzvrw2RCXREl6PQad0pdETH8q5N
HdPLNtG9bVPHrNIRff/ft6nje+Gmjk+oIzqCV27qaKQ6A4FUZ+CQ6gwcUp2BT6ozEEt1BmKpzkAr
1Rk4pDrjUUh1BhKpzsQl1ZmopToTh1RnIpLqTPRSnYlaqjMxSnUmYqnOxCvVmailOusRSXXWY5Hq
LGRSnYVJqrPwSHUWEqnO2l+pzsIi1Vn7K9VZ2KS6oTSpTu9KqhtikeqGiKS6ITqpbti9VNfhJm+4
/1LdEOHPxutOqtO7kuqGCKS6IRqpzkYg1dk4pDobh1Rn45PqbMRSnY1YqrPRSnU2DqnOfhRSnY1E
qnNwSXUOaqnOwSHVOYikOge9VOegluocjFKdg1iqc7qX6rp6xup0L9XpnaHX1Mcj1WnqI5HqNBWX
VKepiKQ6TUUj1WkqDqlOU/dWqtNUWVId4VJdl4nY3l8bIpPqNCLpR89xZbar/1enSXmVSkfQNElv
ilWFvq12ZUN9f21odADte37i59rBi/1buDZni/D04P9QSwMEFAACAAgAqpTCTDigPerWAAAAUQEA
ACQAHABhY2Nlc3NpYmlsaXR5L3RhYmxlLWNlbGxzLWFjdHVhbC50eHRVVAkAA1BGE1tQRhNbdXgL
AAEE6AMDAAQBAgMApY7BbsIwEETP3q9YqQdAAgRU6iG3FBkuJVRxf8AhW3C1sSN7TZu/r6uee+q7
zGo0O5r9uTHnF40nbUx91BWy84RPuwrfppF0jCFWmH1P78Xv0SX0QdB6DN0HXQTndLecrTh/xZnY
jml9IeZDiPvAefC179vwOd8sN4u1Za5FouuyUJotQH/ZYWTCh22FDSUp/UZyl6DN0Yn1znp4DWPm
Uh88gsnxTpOqmeFIZVJM6nnC3xNOlimpAw0/CiWDLV3LW1JNiHJTjwW1LahdAUzI/zFXfwDwDVBL
AwQUAAIACACqlMJMIzZW/fQCAABuEwAAIgAcAGFjY2Vzc2liaWxpdHkvdGFibGUtY2VsbHMtZGlm
Zi50eHRVVAkAA1BGE1tQRhNbdXgLAAEE6AMDAAQBAgMA7VjbbtNAEH1uvmIkHmgVu7bjtqgWQk1D
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
SgSpoIxsXomglJSRBM1WjVkiKIVkPhodQ1JxPqRqMfKr8yHVhmmlPJ/hqVafD6k0zG7eTiJINWFk
VuhDqgfTZok+pKIwGwzTgHQ0U5eUACOVgpHJMBGsQjDSKSaCVAdGJsdEMEu9SEyqsIq6SCaZkOq4
tEkyIdVv2QnJhFTBZSckk2WoSjIh1WuRTTIhlWPZMcmEVKVFOsmEVKGlLZIJqUzLjkgmy1WCZLI8
dUgmW2+FZJLoKWyiMsmEVDqlXaIGqYjKTkgmpHoqjSSTIe3FH4JUTeU+kkkmeuereW+J2IOv48Ul
glSapTWSCalOSzskE1KtljZIJqSaLdJJJpSqLZKgmcqRTCi1Wj6aHVsSyeTYipBMSOVXWiGZnIFy
/wiUqzLJhFR2RSbJhFRypU2SCanuyrYqeLJIJqRqK1JJJqxaK/JJJqRSK1JJJsxqKhKTKqy6KZJJ
JqRSKW2STEglUnZCMiEVSdkJyeTqqpJMSCVRZJNMSBVPdkwyIRVCkU4yIRVBaYtkQqqEsiOSyXWU
IJncgTokk+uqTjK5nsokE1KBlXaJGqRSKzshmZCqrjSSTLY8mgap5spuauMRpHosT4Jk8uyvhGRC
qt/SGsmEVMylHZIJqaBLGyQTUmEX2SSTgVLZRRI0ohrJZKBUc/lIdL2j/yYJofl019tSb70xwtZH
vQMrLmu9nae73gMJ0P7KvyG3cRglwS1cm7F5dLT3f1BLAwQUAAIACACqlMJMzXKLQzIBAAC4AQAA
KgAcAGFjY2Vzc2liaWxpdHkvdGFibGUtY2VsbHMtcm9sZXMtYWN0dWFsLnR4dFVUCQADT0YTW09G
E1t1eAsAAQToAwMABAECAwB1kMFuwjAMhs/JU/jGdqkESJvEjVUdmgYUrZ04h9RdM0yM4hTUt19a
zrtZjvN//pyX+6rcFrArqmq9KVZAziO8vqygHq5YhMBhBb1vsE39BpyA5wjGA59+0UZ4wpuh3kTn
f2BmkWieBSacPetoToR6zyrn3scwqNxcXTSk55k6MBnfqKMJYu56kamvXsQZtWOxfNfLTH2fg0lE
9enwptdEagl2ynEoY/3IEq0fnMU/oA2Gi/GDesOQxEZSdccGvaoi23PHdBlhew53M6hSiFNg3SXL
iBLBdmjPqe4wwUNIvh5FgFsYHQVaDtC4tsWAPk0bwelx2gjGY0im9fv6YwvSW5u+tj3RcEjW6ZTS
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
zDU3DafrPK15D1mx087vN4frUt9e7TXMsfzU/eqqOBjXxSereTwri8VeZffjY3ONptb/tFpMdGla
k95uXd3WteH3h9G+1cbxzgC47i6HhsF1TxZCHBxutu/+ZoxpTiS7LtB1g82A37eDvnkeaiKduTvN
ifcD1lbB2yIeHHA6J3G0Wh4YpG7Kpnc2ZvYVuB5N+lazLshOXzU/GnW9td1l6rP905Sj1Mm7UbOh
MyhbJNd6585cBmxT4ZM8aWqxOXBqhgZjgzGl/xbsl/vurkQiPjr2zvTsbgBompU548Y9bvXmAz9N
Z+nuT83Nro4fHuv46iGfvjlTP8ps29H3iuPuOk3vnSBIdX78Fzr+pDUXvw/erG5uirI2nrbsW7Kp
1MVCL+sq+P2FuV6yqudFV9+dN24mM6bV16adTtd3qv1Be8wR/785pjEmMU2iPXg9nKl1w26GmyTP
X6wtOHg063zZIvk42nPvCzMv6DcxsvE7+5c29f7gdTY9e9Oldy5zyM5xcaM7tzn6oCfvsnpUl023
62qiMzwYs+pqqxiiL/Tjqk7qVfXdamJ8+MYfjpvec9Cc5id1UeSTpNzdv770LNdtD73bsSh+2Wzd
DE6868f9PKr5up4tNN+PTwmPjRwPTuXumsUs+6i78/TjMdkt0jhp5yBdN7vvxT9kZiwo95ra5py/
jLJlqj+aQeqBot05wi0TDpWrH4x23FvUj2LLxsy+wx50TeZ6k+LjJw1Vd4bSrhGvnVD3V2ts/33j
wfo/NwZvZmY7l85mZbLoLNzrJ7vTiK0+8uLISHu/bm7NXLP40Pt6nZuJo5kzWzgmFb++a169Tz6y
s62I3X2baWR6f3q8Oznuz9FV3/02fHRKkK7H2e4yz9eDwvpRh2zvfbv2kXvPJCpcD2j3zXygk2w9
7VSLpJvLb4+5y6I0m6+OjDJ9+ZspWHXo4l051v2aHDokTyY6v0xmpoc9vffzbnt7ktYhL01Rvwr+
N/jq6tHGEW+57/1f54mZoRezUX17ow+e6qujFvUH7j3iznXeDpCbyWjSTEaP+KjHC11V64nH0Xo+
dFu2esebdqC2cYXGxZgJ0fusWFUvNlvMZPYXvXyx5SwP+fn1lGPfxWw7l2YsN622bQnrsb3/u2+J
/SDC1z7Qypq+aZg5jq6bPrHjLvpp35FJ37afnaxMr1pujztr/55m7y9nxbSvw2JVN+PFdveb5KvW
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
1J68WBO//V5RO36xJp38QVA7fLHlbPgc5UzTTsdR45yx1Wf9C0DFCVGJnDxKoP7vZ+J+t27XF3/7
0KabTHjOgFOTQkX0A3BwfbGLAg4Qw9kbH/2CZeW0XA4om9743+WBeLgLbxgMfi9yP9yFLAy2nNBr
h6Fnlm0XPjAYfZujR+NR3Lyd9cyv6/0XUEsDBBQAAgAIAK2Uwkw2gOj30QAAADoBAABBABwAYWNj
ZXNzaWJpbGl0eS90YWJsZS1oZWFkZXItY2FsY3VsYXRpb24tZm9yLWhlYWRlci1yb3dzLWFjdHVh
bC50eHRVVAkAA1VGE1tVRhNbdXgLAAEE6AMDAAQBAgMAbZBBasMwEEX3OsXHm7RQRNIbhOKSQkoM
NnStOOPIZCKBRsL49hnX7aLQ3cA8/vsznR8FmSTj7m4kkJIIPTELnE4hLot0owucIMUJntyFkmDy
FJA9zRvFxgD3vY3DL2CNOQWN63sSecEcC6aRGUKkrFAa1aZ41ezbtsJdKXclJYfIHCcVnmdUXd12
eDt9Nse6qyvNNAuO7M5MO6vGw2p7erZM4Zo99Jyted9/HFfo9V9IfCysBsLO4ksv29o1+KfvUJjn
xiXRGst/UiFj/nQx5gFQSwMEFAACAAgArZTCTO0k06fyAAAAAQIAAD8AHABhY2Nlc3NpYmlsaXR5
L3RhYmxlLWhlYWRlci1jYWxjdWxhdGlvbi1mb3ItaGVhZGVyLXJvd3MtZGlmZi50eHRVVAkAA1VG
E1tVRhNbdXgLAAEE6AMDAAQBAgMAzY9PS8RADMXv/RRzVOp07Cp47bpUFFcstrDn+ZPdDsSOTDLu
9tvbFhdPepZAEsLvPV6klELZ8eCi/wS1mdejH1Qf3kGZ5NGZwGoH5tmfx/18VW+AoGli/HCzUqjH
kFgyEMsIlJBJaWuByBuPnkfF2iDIHrSDKK1Gm1CzD4Pch3g+x3AkCacPsAyu4BNneZ7/r3TactK4
ZKsqIW+v7kQ+t6rKxFzNum3F4lYWk+BxkdLFZYEwHLgXnsR1Jn+o1W9UmeUP66ftXxT1IaETBkRZ
iJ2enIvvAJSW7/YJcWx0JHCzJccEc8aubjuxeX1ptnVXZ19QSwMEFAACAAgArZTCTJRttTrBAAAA
KwEAAEMAHABhY2Nlc3NpYmlsaXR5L3RhYmxlLWhlYWRlci1jYWxjdWxhdGlvbi1mb3ItaGVhZGVy
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
rxOfeI47uuZ2jXbK9fIo7Yy4pSf+5IKJLl/kbqWT9Ogml3qN5fericJNyO6ezah75Kg5NVJGrL95
Q5jjA6oGnZtqXz7edtI5DyE8Xx4m9vX6qgyi8COixwYaK+5cLh29YGQ/yzjAoQ7/k8yz5KWkY/pp
ZpdyuQrgvySN8ZF3dQwFyR9QSwMEFAACAAgArpTCTH1yxORdAQAArgIAACkAHABhY2Nlc3NpYmls
aXR5L3RhYmxlLW9uZS1jZWxsLWV4cGVjdGVkLnR4dFVUCQADWEYTW1hGE1t1eAsAAQToAwMABAEC
AwB9UVtPwjAUft+vqG+aGC4hPrgYE0AEkqHIEPGxdAdoKO3Snopo/O+esYkML0/rd2m/75wNpVix
Z+Mti4zgKI0+CbqAzKUg5FwKJoxG0MjmxrJt5uMWeIUFS8Q0rFY3MKvwNFVQEWYdNKcjoyBkzWnX
Gp8Sjv3M7qhT7ZU6Kxw34ISVaRYXskVhbS+lSiwQc8Wt5Vtm5szJN2CNa1J7oNKQ0WFIBTSSqQjJ
xJhsIbuL8+97vXFxzi5rH6SMJWbpdCplEp5w5XPl1gjvIAlZjUBH85nKQJ3Ak9SJ2RxlgQKBkIzh
FQfcrsCOuF4cThgjt/gtl693dPKXNJFO4lePSOoVJI/9joI1zet+bKV2WCa/01JGrB68QYjgBVRO
jk26Q/unyqERlfd8UezoftBPyEJ/PiuXM23FnYukw98r7LaX7aypBTg0x/MmEsvqfk89uVgS94+j
aNzybpsNE3wCUEsDBBQAAgAIAK+UwkxIAGpkHwkAAAosAAAtABwAYWNjZXNzaWJpbGl0eS90YWJs
ZS1vbmUtY2VsbC1wcmV0dHktZGlmZi5odG1sVVQJAANZRhNbWUYTW3V4CwABBOgDAwAEAQIDAL1a
a3PcthX9rl/BSlOrzYjct6zdtdWx9YgzldPUcpP0UwckwSUskGBAUNp1kv+eixeX5JKSOuHKGYdc
4nXuxb33HGD8JhYJPT94E2MUwiPBAjlBjHiOxdvjQkTu2TF8zsWG4vODBSXp3YmzuCc5ETh0fj1w
4I/Aa+GGOGAcCcLShZOyFC9Vk894iLnrMyFYsnBG2doJ4R2Hy4PfD/R0ZpKAUcYXztFwMldt3jWh
+JJEkWn3UXC34qxIQ9d2jc7kf9WF9Ao5oyR0jsIw1G0RS4UboYTQzcJJWMryDAUGYIL4igDkEU6c
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
1/cu6c/z16+/Dl8/Oj7VxeXjvfirr756rOrn7dVNHaG2Tv56mbbzzNP6ba1068r/quQmr8et80k7
nP1luTzY3Ap0P1neNl12T/nds3Xq9rv5+Wx8U8/p7Pz3v7lcLG7mz589W11Hp9PZ22fDvw7fP5uM
z+bP/vq323b2Yf2lNpo/tad1RXn61/lvvqgvt3yZLwbbL3g+HbUn3alr39Xn/Y96grtz+Huf7/1K
rWWdD55NRx/ql3oZ1HKH8/nvn2xuALqY8NJ88ez8w9vRrK4rnr3qvq2LnWeX06v22dnteDKqh/bs
P9qz/znefPmy++mz7+vsO5zX54yvnX1We01t2pNFW0fbeit/O1nMnw3Pz2tPH5+NJ3V+eLbKiuar
qGd+Utcxt8PJ6eL9opZptqu7lwk9efjI8l5938+7e/jB/LIuqkc7T+luYAZb2c8yI63z6eYZy7v+
j0uJJ1+YVBuzPuGLrafVq/uAJ9Up+skXP3zz1cvXTwc/fP2nP/2wCsvWz63nppb2Xy8wH1Jg3l/g
yd7/wIWWQwot+wvdLWf55X5R967M7tnLhx+Wflj/Wd3m/mL/ufe8Tx68bQ44+N9en81vXuxvgJf/
+f20m/Vf/uerugT+VWfn4DoNpM43t3VW60r9l+vbyeS/05RqYU36ul2Nl8sJ7ZysbR2k4Fdd1Dxr
a6W/nSxeDGd18TmYXgy6yXFgfvt28YKmeA8p/pu6cn4+oKkwQCqsV//ypqBr3NWFRtemEXOxLZdF
371Zff3ZmqcD1/yDpuIEqfiH8aIbHGhKzJASt4YEmkILpNB/H9YbF6ISHWbW+rq772pHdcFNUyVm
zvrquluc1SoNTZWY6eo/xtej6TuW4clh5qs364iuS6z+OJz92M6+H16/pV0bOMxs9WZRl4If6+Zp
9QDqzSPuwjGz2b+v/giCbLDAzGBdVNiO/ve3X03aZUb22GKsoWvqDL0yydoaM8Mtb8r+1+100f6h
/amdUFXrMZPdD9ObZZl3fYPl4vOYOfAPdWS+Hb6lWk94zBz4+k9//HZUW3Z8Me7GNppSHarUV91P
/jCeL3jHCO9xa7duYfTy+rydL6Y8c4kHTYKj8WK7dsI1h8fMf9+M317WYnlLT6Ao5d23HVper+++
e7P+5ufm6cDQ3JB6zEz4ajq5vbpmL74Ai/+mHY7amdSKJKDyzXfCx4GZR19+/+3Le32qA2E05VpY
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
AW3BNT/TiGCFz5qjFrInWP7JtVxnMPfqOqJjZB732oeXLHPlqdvvBpD9BlBLAwQUAAIACACxlMJM
iP2PCwEBAACWAQAATgAcAGFjY2Vzc2liaWxpdHkvdGFibGUtd2l0aC1taXNtYXRjaC1jb2x1bW4t
Y291bnQtaW4taW5pdGlhbC1zZWN0aW9uLWV4cGVjdGVkLnR4dFVUCQADXkYTW15GE1t1eAsAAQTo
AwMABAECAwBVUEFuhDAMPDevsLiwK62Qyg9axKFSq0WCD2TBlEgmUWNHiN/XhO6hl3HksWfGGZDF
NEgEry+51GZYHINoX3GxAm4GC2IfhCWD806cJWAcxQUPi2WYccMIY6C0+rzjFRCiSkCY8zuv32DD
Ui1YnOKEohonG0QlTwEtyYtijErTbszdA6dxROYb7CHBdmwzoqZijA75MCm6t74vYNUp+406OQei
sOEEjx2Koe0HaO5f3Wc7tEVljDnGz1TV6dtkW728PrlRP6Ny3P4kSxeb7d3DkZO9CV6iqmOsnn3C
lnBFL+/7x3Qpj926vF4POYkJT8W/I+ZEtHc2smZ78uZfQGN+AVBLAwQUAAIACACylMJM+XtZWMcI
AADXHgAAUgAcAGFjY2Vzc2liaWxpdHkvdGFibGUtd2l0aC1taXNtYXRjaC1jb2x1bW4tY291bnQt
aW4taW5pdGlhbC1zZWN0aW9uLXByZXR0eS1kaWZmLmh0bWxVVAkAA19GE1tfRhNbdXgLAAEE6AMD
AAQBAgMAvVlrc9s2Fv3uX4Gxp3HaMamHH7EkxzuJLU87m249tWf6cQckQRMxSCgAaEnZ3f++Fy+K
pEhZ3aSbTEISz/s4994D6CpTObs+uMoITuCRE4VRnGEhiXp/XKo0uDyGZqnWjFwfTBktnk/Q9IVK
qkiC/nWA4I8iKxUkJOYCK8qLKSp4QWamK+IiISKIuFI8n6LRYoUSeCfJ7OA/B3Y5t0jMGRdTdDQ8
nZi+8I4yckvT1PVHOH5+ErwsksAPTS/13/pGdgfJGU3QUZIkti/lhQpSnFO2nqKcF1wucOwEzLF4
oiDyiORoaJsWHJQzegjCQKMXYgTKRi1JT09PO9aXuJCBJIKmtU5JvxKzR33TgJFUTdEwPPftCZUL
hmERWoBlnIRLmqgMJg+HPzj5cJLQ4qmaaWVzrtFvTe84cWmRgVCqGp7xFyJaGp2fn8/6jE2INUOo
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
ePQZCiF6S14wK7HSBKba08tst+42/l+a875XnR0N9/BtzyDjXF0+fa1NS8bW9/oHU2PHrhj9RmlH
+0g7+n8VydF4H3HG/eI0SMW34Kf1MNQUyJ35Pfu/UEsDBBQAAgAIALKUwkyY+i+9+QAAAIgBAAA6
ABwAYWNjZXNzaWJpbGl0eS90YWJsZS13aXRoLW1pc3NpbmctYXJpYS1yb2xlLXJvd3MtYWN0dWFs
LnR4dFVUCQADX0YTW19GE1t1eAsAAQToAwMABAECAwB1kDFrwzAQhefqVzy8ZAlO6d4hhBQCKQnE
0Fm2z7bg7Cs6qW7+fc9NA+3QQYOk7737JP9QO2+rGoIikSZF6OCRfM2ErGSnA6GPoUUUpjXqnNBJ
7MnQJPDt7eJ5FWVeQeLPbkk0xLxaoMmn8EFIcZNaENNIU9I1QoKmwAz6fJf7qBj6IWHKY01RIZ31
zbpZqrR07jRBc9OQWvwqGfMSVyJTVoqBvhPFeXu5FBiN8j0Z2QmzzNSivqKo9pcKu9Pr+biv9oV1
upft4Xh7cWnDdpInExskswUITyXevOKx/M01wnmc/kcXg7tpl5mvZx/VBJZfjpmc+2Ph3BdQSwME
FAACAAgAspTCTM0uTjYdAQAAUgIAADgAHABhY2Nlc3NpYmlsaXR5L3RhYmxlLXdpdGgtbWlzc2lu
Zy1hcmlhLXJvbGUtcm93cy1kaWZmLnR4dFVUCQADX0YTW19GE1t1eAsAAQToAwMABAECAwDNj8Fq
wzAMhu95CpFr6nh0DHZMVzoY62hZCz07iZoYlHhY8tK8/ZywQTv2AMMgC+mX/k9KKdDV2NTefqJe
T+lge926DnUZLNWlE33C8tX+fE9TVb8joeGosf39UpMZXRAlyKI8ciBhbaoKmW1pycqoxZSEarDS
qs7Gct8o461R3sWydwMrvHxgJVjncpEky7J/gmUqCYZmqKIA9bB4hGwKRZHArgcO874FRCcYLBEw
IpgYvUUGd4Z0vzocUuiiyjQYlWdH5AasoRwhPW4OR1jv3vbbzXGT5gnEp6YJmNHyyLB2oRewDMub
TuUodP1VM3tevWx/j3HrAkUrhGUOJ8Nwl98Ir7f8pYXZ8fvKcyAa98ZzhI+W4gNOwDc3JF9QSwME
FAACAAgAspTCTMGQIcPpAAAAagEAADwAHABhY2Nlc3NpYmlsaXR5L3RhYmxlLXdpdGgtbWlzc2lu
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
H8Dz5H365gWeQ5zMGncHrOOtlxhrgslwgQNIURJlDJprgY8wQxXnfKl5Jnc9W2Sd4WdgMQOwjy9V
uILDdl9RLI+mW/leWb6YUqwSyiN1+7Lt1InvM+y09ydb6ev2pPt10t74lLQ3bib9izuSpqKVvmk3
79t25e/qM++m0enYqdk0+S20FL6tWxv39Ta+Rk+nbVCzqY0ttGTD1q2Nh/ZOgHt1JgmjapIwqnES
v9ByElQvfLj/xEev3YPhVnwNXaXPbEuLaL41K/h2jiqoCl/9al91a7PfP7c+Ja5DRwc09nb9u4UT
I8RmGuaKXNlfgNwgYwc3LGM/UEsDBBQAAgAIALeUwkywjgbPggoAAKRQAABBABwAYWNjZXNzaWJp
bGl0eS93M2Mtc3ZnLWNvbnRlbnQtbGFuZ3VhZ2UtYXR0cmlidXRlLXByZXR0eS1kaWZmLmh0bWxV
VAkAA2pGE1tqRhNbdXgLAAEE6AMDAAQBAgMA7Vxrb9u6Gf68/AqhwRbgoLKtm29pM7S57AA7pyuW
ANu3A0qibLa6eCKVS7f9970UKVmSJZnNUZJmSYvWskiR7/V5H7528m7NovDk4N0aIx9eIsyQ5q1R
SjF7f5SxQJ8fwW3K7kJ8crAMSfz1rba8JpQw7Gv/PtDgD8O3TPexl6SIkSReanES4+N8yE1SH6e6
mzCWREvN2NxqPlxj//jgvwdiObmIl4RJutQOJ9YiHxtdkBCfkSCQ4y7yvq7SJIt9vZgazPnf6kZi
B5qExNcOfd8XY0ESMz1AEQnvllqUxAndIE8KGKF0RUBkA0faRNzaJKBcrkeKQ9DoGucCrY2GpJZl
taxPUUx1ilMSVAYp+YbzPaqb6iEO2FKbjJzivk/oJkSwCInBMlLCG+KzNTw8mfxRyod8n8Sr8kkh
m3QNv6p7R4pL4jUIxcrp6+Qapw2NHMc57jI2xsIMI+6TX2AvKh8OwgSBGilZrVndc3zWKaiPQJdi
qwRMTxioOGmozJAbYt3DYVjTUs/XrVnpZg3a6bkPeajdpGizlewSe9x3nUGTP1wPmWa4yJgt7A4B
Ndncih3ObzfgXlgfVMNvtRF/aWrYKR4lPnbv+P9aLurHMPG+fkYpG4Gqy4CklOnemoR+p2H5dpfw
/Nu+xVIcgWvf7tlP7lGYXwSc7vIptbBziqiDaGHEQ6GOQrKC3GBJi1op5pH+M4r9EBfmkOtwE/L3
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
o9uonIBcp6ySQbNqBpfNKuG3KoffqhJ+5Zn5sl0l/Mrz8mWnSviVp+TLbpXwK0/Fl70q4Veein+q
PHhWno5/rRJ95dlXbeRUyKBXefpVey9VMqg8/artkioZ7Pr3SAsH9edpDuv6b1r/D1BLAwQUAAIA
CABrlMJMwcKmeH0AAACdAAAAPwAcAGFjY2Vzc2liaWxpdHkvd2luL2RldGFjaGVkLW9iamVjdC1u
b3RpZmljYXRpb24tY3Jhc2gtYWN0dWFsLnR4dFVUCQAD2kUTW9pFE1t1eAsAAQToAwMABAECAwA1
jjEOQiEQRPs9xXZ2HsDOKJ1GErjABhYhQTDsUvzbC4XNTPLyMhkEn4ugsujKTIrfLlraGwlb15JK
IC29YepjociVlSOu+nBTjJ1lexhoCi8hDJJ8BgB7de6C9xLbSf90M5QZAoukWethacha2wfGZABv
nMfb62kfxhuAH1BLAwQUAAIACABrlMJMGOYeLNIAAACTAQAAPQAcAGFjY2Vzc2liaWxpdHkvd2lu
L2RldGFjaGVkLW9iamVjdC1ub3RpZmljYXRpb24tY3Jhc2gtZGlmZi50eHRVVAkAA9pFE1vaRRNb
dXgLAAEE6AMDAAQBAgMAzU7LTsMwELznK/bGwXUtNUhInEJLToCISCTOfmzJVsZG9hqavyeOxD+g
PcxqdmZ2pJSg7PLhEn2jOtX1h4Ka4ycqU8g7E1m9o3miPzhWVr2hR51XDYX2oLxeYmHJmFkmzMVz
VtpazJkMeeJF1VCHrO2MTkZzQcsyRKYzWc0Ug7RJ51ni9Wu9oNvzlRshxH/qpi0X7bdmXQey3d2C
aHd30HUN1BkexvEeHsmFG4bNsm9EJSGX7d+5eL8MOmV0QBk4FVx9YurHCU6vL8NzP/WNaH4BUEsD
BBQAAgAIAGuUwkwtlOdcXQAAAG4AAABBABwAYWNjZXNzaWJpbGl0eS93aW4vZGV0YWNoZWQtb2Jq
ZWN0LW5vdGlmaWNhdGlvbi1jcmFzaC1leHBlY3RlZC50eHRVVAkAA9pFE1vaRRNbdXgLAAEE6AMD
AAQBAgMAPYoxCsNADAT7e8V26fwAd4E8IOB8QNzJPkEsBWv9/5wbNzMwDMqnW4KaHOxC/CJpvkHg
QVutCi0caxwjNf0qtWFoVydaaF4fqpypY6iHZJ9KKe/nssx4WfMH7/oHUEsDBBQAAgAIAGyUwkxR
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
BsqQiPLwUUJo5J1zddk04N2qLvc35ald5vcXFehscvd2nldh8w9vKTkJKa9Zf8k8XS6ccz+FMNeU
sgVfvk8TWxFV02L//VV/Vm3l3BNQSwMEFAACAAgAbJTCTHhtFjHjAAAAtgEAACwAHABhY2Nlc3Np
YmlsaXR5L3dpbi9pbWctYWx0LWF0dHJpYnV0ZS1kaWZmLnR4dFVUCQAD3EUTW9xFE1t1eAsAAQTo
AwMABAECAwDFjk1LxDAQhu/5FUOv2WxAC4KndpceRMWyLeh10o7rQNpKMtH239sWvHr1NC/D+/EY
Y8B2y7UP/EX2vMlvHu3HNJB1iX3vJrGv5B7595y2r72QJ4yrh8fbG+txmZIYoSgmUExeosWuoxjZ
sWdZ7FbKw9WgF4MigV0SMjR/UifUH2UWpbX+RxTsJKHfQYoCTH7IQeeHOygKBQrqsmmAjsLiCThC
Vr61m76H8vJQgke3QvTGLTDiQNlfgXWWwohCIDRLpvRujWlnfE/eLzWGSP2WkpBonddt1bRwfnmu
n6q2Ulr9AFBLAwQUAAIACABslMJM4VnH8ZsAAADtAAAAMAAcAGFjY2Vzc2liaWxpdHkvd2luL2lt
Zy1hbHQtYXR0cmlidXRlLWV4cGVjdGVkLnR4dFVUCQAD3EUTW9xFE1t1eAsAAQToAwMABAECAwB9
zjEOgzAMheE9p3hiYaEcoFvGblVBalcjDIkEDkrcUm7fQJdO3Wzp/ywDxrTOJygnxYujHzznzZFW
CIK7lz6sqQIJ/DxCaSwTaNIM3ooMI+szCvcYQsyOwRPPLJqzUr1OXGKJYeGoG1bH8tvAUYIE2NvF
Qmjm2pirbRpwfdD9fmEf7T6fv9VEXcb9qdsOUPzp85cchZSPXwtjPlBLAwQUAAIACABtlMJMLQHz
rM8HAAA2GwAANAAcAGFjY2Vzc2liaWxpdHkvd2luL2ltZy1hbHQtYXR0cmlidXRlLXByZXR0eS1k
aWZmLmh0bWxVVAkAA91FE1vdRRNbdXgLAAEE6AMDAAQBAgMA3Vlbb+O4FX7PrxASdAMsIsmJ7Ywv
MykyuaBFd9vBJkD7VlAiZXFCiV6SSuxp+997eJMlWXLcdtqHzmJWMnlIfuf6HWo+5qpgNycfc4Iw
PAqiUJDmSEiiPp1XKgtn5zAs1ZaRm5MFo+XLRbB4pZIqgoO/nQTwR5GNCjFJuUCK8nIRlLwkSzOV
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
MMyHNX9+eHoO7v7085efHp4f/qWc/r4QL0f/He90Hob5gFnMP5f9E1BLAwQUAAIACABtlMJMZ2MU
Bx4BAACXAgAALAAcAGFjY2Vzc2liaWxpdHkvd2luL2xpbmtlZC1lbGVtZW50cy1hY3R1YWwudHh0
VVQJAAPdRRNb3UUTW3V4CwABBOgDAwAEAQIDALVSPU/DMBDd/StOXQJSGxVY2m4BdaOiUiJgdZtL
YuHY1fnc0n+P7USlG0iIwZLP70P3fAdCK/MBjJ8MAkTVKRcKx3BEUo3CUHWSp2ANvClT25ObQlRg
nTSXQvWyxYBJU4ez7ywBauzRsANC9mSCEY5Q5qAjbEAyk9p5RmgCP+LZUWqPGRzIHpD4PBim7oyt
8dpL0fA+SkOZsWJ9Jc5BiEffwsN8eb+AGWzKolhBsd+jc2qntOIz2CYlcBByn8iaVohtUZaAubzm
vca2cud3julmtriN9Inq27zjXk/+R7IcJDHk3zXpaxJWvFfxvoLL4H9jfDcfA5iD/7GdbyakeY5U
5xOz8Vqft5JcXJuwX+RRiGpdVvD0stk+r6u1EF9QSwMEFAACAAgAbZTCTHRzuF/xAAAA3wEAACoA
HABhY2Nlc3NpYmlsaXR5L3dpbi9saW5rZWQtZWxlbWVudHMtZGlmZi50eHRVVAkAA91FE1vdRRNb
dXgLAAEE6AMDAAQBAgMAxY4/T4RAEMX7/RQTKs26rHeamFhxXqjUSDyitguM3sYBLszsCd9elkSN
ja3N/MvvvXnGGLD19NYM/oh2G8cP39l936Ktgqem6sU+Y3Xrv9pNvNpHJHQ8M767WFtyUx/ECLKY
ATmQsHV1jcy+8uRlstGUfPeOjZmVLXbCBscD1oJNKqMorfW/BXG1BEdLjCwDs1qfXYKe6xVkmYJi
s9sBpuKFEDxDsnkp43wN0QcER0m+qV/PnhwFTDlULMOJWZ2fLnLfHYKke2npL9kPCse4J0ovLIcF
fQ1EU+EGxiaSMgRUoHSZ70rYPtwXd3mZK60+AVBLAwQUAAIACABtlMJMWHuWCP8AAABoAgAALgAc
AGFjY2Vzc2liaWxpdHkvd2luL2xpbmtlZC1lbGVtZW50cy1leHBlY3RlZC50eHRVVAkAA91FE1vd
RRNbdXgLAAEE6AMDAAQBAgMAtVE9T8MwEN39K05dAlIbFVjabmFHQkoFrE5ySU517Mg+t/TfYztR
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
yW6GP57yNFFKS/b+OzhJNG8LlUwAtjMWT5d+OHe2A/gBUEsDBBQAAgAIAG6Uwky1g7QU2QAAAJMB
AAArABwAYWNjZXNzaWJpbGl0eS93aW4vbGlzdC1tYXJrZXItcm9sZS1kaWZmLnR4dFVUCQAD4EUT
W+BFE1t1eAsAAQToAwMABAECAwDFjkFPwzAMhe/5FdauWRaJIiFxajf1BBPVWold09SAhbuixIH2
39NU4jdw8rP9vadnjAHrl/ch0DfaU5Y/dLMf04i2T8RDP4l9xf6J/sYxX+0FGV1cGboVd5bdMiUx
glFMwJhYonXeY4zUE5MsNocyre/RhU8MJkyMBucv9ILDQWZRWuv/a+K8JMdbj7IEU+zvQRf7ByhL
BQoyDiQ4Kmiqtt328+Y+ZDdQhF11vazyEaprK07IdzjLTumNj2lr8JaYl8aFiEO2SEi4puuubjs4
vZyb57qrlVa/UEsDBBQAAgAIAG6UwkwWAOf+eAAAAJQAAAAvABwAYWNjZXNzaWJpbGl0eS93aW4v
bGlzdC1tYXJrZXItcm9sZS1leHBlY3RlZC50eHRVVAkAA+BFE1vgRRNbdXgLAAEE6AMDAAQBAgMA
HY1BDsIwEAPv+wor59IHcMsDkBCpRK+BLuqKNJE2W+D5pLnZsj2eVqkwroYPq7yEm1ujDSgZd8lL
+dYBSVq+RX2zVijbrrm1GLnkEy9i8ZEYzvhnDloSjyCiPhLjja4+hM64dMR4VNBunZ9vTZ7h52DR
5DkdBKI/UEsDBBQAAgAIAG+Uwkx6aX7vxwcAAAkbAAAzABwAYWNjZXNzaWJpbGl0eS93aW4vbGlz
dC1tYXJrZXItcm9sZS1wcmV0dHktZGlmZi5odG1sVVQJAAPhRRNb4UUTW3V4CwABBOgDAwAEAQID
AN1Z227jRhJ991cQNjYGApOULcnRZcaLGV8QIJnsIDaweVs02U2xx0220t20pcnuv6f6RpEUKWux
s/uwGWRIsW+nqk7VKXLe5apgNyfvcoIwXAqiUJDmSEii3p9XKgtn5/BYqi0jNycLRsvni2DxQiVV
BAd/nATwnyIbFWKScoEU5eUiKHlJlmYo4QITESZcKV4sgsv1JsBwT/Dy5F8ndju3ScoZF4vgbDSe
m7HogTJyR7PMjScofV4JXpU49FOzmf7TPMieIDmjODjDGNuxjJcqzFBB2XYRFLzkco1SB7BAYkUB
8iUpgpF9tOZgnLFDEAYWvRADKL/sIB2Pxz37S1TKUBJBs8agpF+JOaN5aMhIphbBKJr655jKNUOw
CS3BMw7hK8Uqh8Wj0V8cPoQxLVf1SovNhUbftaPj4NIyB1Cqnp7zFyI6Fk2n0+WQswmxboh0TH6G
s6RbnDGOwAxBV7lqR07PugXzEdjij+LgeqrAxFHHZIUSRsKUMNayMjT7trz0moN1oYmhptqrQOsd
skeS6tgNksYsblOmSxfHWe93INRovbEn3G/WEF7YH0wjF0GkL10LB+FJikmy1X8HBupHxtPnz0io
CExdZFRIFaY5ZXjQsfq4R1h/cWgzQQoI7cUb57kzvPst4cJET2nRbupZB2xRNEUsRIyuIDcU7zFL
EM30H1GJGfHucPtoF+rfObEB3fE5rYTUodGwuxmIEohO5SMGZ9bEsclj4B1C0eL5Ph1WgmyXHWJG
07fiZV0cRIq/6eYoE7zoONvVR32G9vovVZEQAWwiTXbZpx74fhl1rJ3PWwXQp0tfGfSZPJlMestN
M/p1jdEbTW0K2DSoC77jgaNnH0Us3Badxq5gNQw3JvYWHCsSg245UKTWQmenhukc6KuJY403pJWr
sCi02WqGwJ/mJ9ghCHoO9QMLiBZoRVqRWQRXtcMThrQX9cQUSgNgACjuLujavYvKbDIfrL0ZyXYF
QNMKdqzlsZHNPUtxhttLIdhyePqczJeHNL3eyVWZJg6XFcNyjfHeBgEmbHgFmb+JJv4+eKzWay4U
KK1wTAanFgUplQy+j+E8VKmcW39bNdbNDLBeAU9THymzwMwZ0P96jgaDgBJmsi9n157Yutwgxm49
gt7ZV1bLCrQJO/JeQF/gHl2Nat3pHg1+P3hOndl1SreO6cMZ8TWxshm+kuSZqlAJnXbWExZ4EF3J
ZcOMiTP6TCqkKvmxSkDDaz2MdPb0wtFLFOcsQaI97o/OGDEZuhso+Nf6aV2cxjaPXR+lb323oO+H
W8KhynGwldvRIqMbYvdx9XjUNilCpgexabav4q8UaoHoUK3e82tIS0w2UKQOmLYTwgaEPrtcMWrJ
28xVsVLDdAnbK01wXsI3bwK93gG9tCT2ImR/GbDuvlYw97MGXHdmraNpJlBhEXbypN1GNHLkdqDS
7vtmC70mf3VaTxg0jtAzHyFM1/OHHb2cJg8MGke0x+o2Eu+3x+3m2O1h3bfP4cGWAPs6a4/54IuC
f9UZNUefvEZ23kmuf/AFbR/mgSRpvO3IAtlevllzSy7g8XKgyjj7dQsm+w63dvi8HvVNYSghbIEy
yLCLveX2udnECHIJpp4G/wxOlye1EDfku7uaIejQeRaq7Zr0bnU6iMhN7Lzi5oSZAlk3o0g3owMa
dVYQKX3jMejnvrA0suPRFOpjpBAkBhqiF8oreVs/gWb2KylvG2LZp/O+5ehKTFNcdC0H1hom+Nru
fjsmuiIy9hp4FBpHDehxiNI50ZIL1/YNNH1NnU0qyKqyWXe8vmP6ssh46nzIK6XrRTP9ElYZJXFD
wJcMsICCXXpDmmJpdoEe5ikn9qTYKe0K8GsbFA8UjCV2tqOaDF4o0jVZfXKcALCJ4K8QcOgEcgRr
XVNEVaSboNqOybXr4utWxP321UE3svr/UVtE/Sedbo9fUAxvWdYwHSDpX757FAX6MC7RC/gePEA6
utJ809uTuvAyGtuWaffxw6t/TwzO7u7uGil9Nnu4e5g+9NYnaC77WXx/f9+HekGKNVSoVvBdm9aZ
GcEtIG1l/v18Npq5upUygsQ/THvgXwX0E/PalOsp72L31e2dTAVdQ0xF+v40V2otF3Fs8yjiYhWj
L2gTM5rI+MvvFRFbdwGnTaKrCDrK6Is8vYHtzDY3QXvDlGMS6tCRV5j3VwiwjuH7yayxBLC474MJ
x1u4QBoAXCTl+3P/AqA/E+aXN3G6XWEBfUV8q2+h2YlzXpA4qSjDYFr8d5L8RP3lo34a/wrqiyTM
oeX4KgbWgGtDRaDawqt8xZSMUZoC02lCGehDrDdlFIaBtM9aZjkjIXQzFWKR2igAe9nG2PgydL4/
Yt7Yh57rN/lA5tBa484U/RoTtL4AmS+loKp+hnn33zUU5zdj8CiM37RmQYq/PQdk+vzGjUA0AMZ/
DGZyBJjJMBgdACgvpPi2qKZHoJoOo/r84fEx0NA+GWpEmhoBlcF3v1dcLT/89ivXevfhNy2ENNXd
jx3pGmEuTVMa6aoDYYb3DT6OTlDD3uSSn3TQWd+ViVwvj/DY9Rsek5VJsKxibPtZf/zH2mlKVOR/
6phvlWfXR7jkh+Pz7P+MDLNhy5/uH5+C2799+vzz/dP9v5XY3xbi/L8TnM7FiBmohfkXsD8BUEsD
BBQAAgAIAG+UwkyXuQGqvAAAAO4AAAAmABwAYWNjZXNzaWJpbGl0eS93aW4vbGlzdC1yb2xlLWFj
dHVhbC50eHRVVAkAA+FFE1vhRRNbdXgLAAEE6AMDAAQBAgMALY7BasMwEETv+xWDTymkOdi0hdzU
IkohaYxlaK5psk4WFAu0UkP+vrLb287Om2H6iygSa8IPRxmEi7oc0hJhxJeMp3DTJbxoUkROOY7F
ZlTTp0IMnlcges1nNPVL84xHdPa9s8597D4X8amum+Zhja0zZg1zPLKqfIuXdJ+zCMN/dxlxi2E8
E00akvhKrXFutlczW5DK7Ltylqr9Zhrwh2iei4fs/b09ROXTxKaYmai3rsfbbttubG+JfgFQSwME
FAACAAgAb5TCTKlTs4DOAAAAeQEAACQAHABhY2Nlc3NpYmlsaXR5L3dpbi9saXN0LXJvbGUtZGlm
Zi50eHRVVAkAA+FFE1vhRRNbdXgLAAEE6AMDAAQBAgMAxY7BasMwDIbvfgrRq+sKusBgp2Qlp3Ys
NIH16jjaJlCbEctb8/aLA3uGnfTr1yfpd84BhvljmPib8JDlD9/wc7wS9oll6EfFN+qP/Fees4tn
EvJxYfj2sEfx85jUKUV1E8UkGtGHQDFyz8I6Yz4qnMejkKP7FwWlYad3Ndbaf4jggyYva4CyBFds
C7DF9hHK0oCBzAErXQ00Vduu/S7vAUfYVJfzIp+gupwWf2PsysS0vntPInPjp0hDhnVKtFy0Xd12
cHh9aU51VxtrfgFQSwMEFAACAAgAb5TCTF2CeEOYAAAAvwAAACgAHABhY2Nlc3NpYmlsaXR5L3dp
bi9saXN0LXJvbGUtZXhwZWN0ZWQudHh0VVQJAAPhRRNb4UUTW3V4CwABBOgDAwAEAQIDAC1OywqC
QBTdz1ccXBWYC4cK3E0gEfTCCXJbdtUL5sDMmPT3jdLuvDm3lh08OY8PWa6ZAmsfPobpcef+ZUYX
o2PnHSz5wfbBJkSTEsGajhIIsRsayHQrN1ihyPdFrvXhcl7YdZpKucxw0kplUFVFzvGTO/bfuQtT
/7fDidGavhFi4mBPb3FVWs92MmdDJFJlEWCYKo/TASF+UEsDBBQAAgAIAG+UwkyFnOTzuwcAAPca
AAAsABwAYWNjZXNzaWJpbGl0eS93aW4vbGlzdC1yb2xlLXByZXR0eS1kaWZmLmh0bWxVVAkAA+JF
E1viRRNbdXgLAAEE6AMDAAQBAgMA3Vlbb9vIFX73ryBsdA0sTFK2JEeXxEXiCxZotg3WBrpvxZAz
FCcecrQzQ1tKd/97z9wokiJlFU370A02pOZy5jvX7wzzPlcFuzl5nxOE4VEQhYI0R0IS9eG8Ulk4
O4dhqbaM3JwsGC2fL4LFC5VUERz88ySA/xTZqBCTlAukKC8XQclLsjRTCReYiDDhSvFiEVyuNwGG
d4KXJ3+cWHFOSMoZF4vgbDSem7nogTJyR7PMzScofV4JXpU49Euzmf7TPMieIDmjODjDGNu5jJcq
zFBB2XYRFLzkco1SB7BAYkUB8iUpgpEdWnNQzughCAONXogBlF92kI7H4x75EpUylETQrDEp6Tdi
zmgeGjKSqUUwiqZ+HFO5ZgiE0BIs4xC+Uqxy2Dwa/cnhQxjTclXvtNica/Rb2zsOLi1zAKXq5Tl/
IaKj0XQ6XQ4ZmxBrhkj75DOcJd3mjHEEagi6ylXbc3rVLaiPQBd/FAfTUwUqjjoqK5QwEqaEsZaW
oZHbstJrDtqFxoc61F4FWu+QPZJU+24waMzmdsh0w8XFrLc7BNRovbEn3G/W4F6QD6qRiyDSj66G
g/AkxSTZ6r8DA/UT4+nzFyRUBKouMiqkCtOcMjxoWH3cI+y/OCRMkAJce/HGee4Mb34bcGGil7TC
buqjDqJF0RSxEDG6gtxQvEctQXSk/4RKzIg3h5OjTah/58Q6dBfPaSWkdo2G3c1AlIB3Ku8xOLMO
HJs8Bt4hFK043w+HlSDbZScwo+lb/rImDiLF3zRzlAledIzt6qM+Q1v9r1WREAHRRJrRZUc98P0y
6qJ2Pm8VQJ8ufWXQZ/JkMuktN03v1zVGC5raFLBpUBd8FwcuPPtCxMJthdPYFayG4kbF3oJjSWLQ
LAeK1Fro7NQwnQF9NXFR4xVp5SpsCm22mimwp/kJegiCnkM9YAHRAq1IyzOL4Ko2eMKQtqJemEJp
AAwAxb0FXb13XplN5oO1NyPZrgDosAKJNT02srlnK85weys4Ww4vn5P58hCn15JclWnicFkxTNcY
7wkIMGHDO8j8TTTxj8FjtV5zoYBphYtkMGpRkFLJ4McYzkOVyrm1t2Vj3cxA1CuI09R7ymwwawb4
v16jwSAICbPYl7NrH9i63CDGbj2C3tVXlssKtAk79F5AX+CGrkY173SPBrsfPKfO7DqlW8f04Yz4
mljaDF9J8kxVqIROO2sJCzyIruSyocbEKX0mFVKV/FQlwOE1H0Y6e3rh6C2Kc5Yg0Z73R2eMmAzd
TRT8Wz1aF6exzWPXR+lX3y3o9+GWcKhyHGzldmGR0Q2xclw9HrVVipDpQWya7bP4K4VaIDqhVsv8
FtISkw0UqQOq7YiwAaFPL1eMWvQ2c1Ws1DBdwvZSE5yX8M2bQK93QC9tEHsSsr8MWPdeM5j7WQOu
O7PW0TQTqLAIO3nSbiMaOXI7UGn3bbOFXpO/Oq4nDBpH6JmPIKbr+cMuvBwnD0waQ7Tn6jYS77fH
7ebYybDm24/hwZYA+zprj/noi4K/6oyas0+eIzt3kut3vqDtwzyQJI3bjiyQ7eWbNbfkAoaXA1XG
6a9bMNl3uNXD5/WobwlDCWELlEGGXextt+NGiCHkElQ9DX4PTpcnNRE36Lu7myHo0HkWqu2a9Io6
HUTkFnauuDlhpkDWzSjSzegAR50VRErfeAzauc8tjex4NIX6GCoEioGG6IXySt7WI9DMfiPlbYMs
+3jetxxdimmSi67lELUmEnxtd79dJLoiMvYceBQaFxrQ4xClc6JFF67tG2j6mjybVJBVZbPueH7H
9GWR8dTZkFdK14tm+iWsMkzipiBeMsACDHbpFWmSpZECPcxTTuxJsWPaFeDXOigeKJhL7GoXajJ4
oUjXZPWziwkAmwj+Cg6HTiBHsNc1RVRFugmq9Zhcuy6+bkXcb18ddCOr/x+1SdR/0un2+AXFcMuy
imkHSX/57mEU6MO4RC9ge7AA6fBK86a3R3XhZTS2LdPu44dn/x4fnN3d3TVS+mz2cPcwfeitT9Bc
9kfx/f19H+oFKdZQoVrOd21aZ2UEr4C0lfn389lo5upWyggS/zDtgb8K6BFzbcr1kvex++r2XqaC
rsGnIv1wmiu1los4tnkUcbGK0Ve0iRlNZPz1t4qIrXuA0SbRVQQdZfRVnt6AOCPmJmgLTDkmoXYd
eYV1fwYHax9+mMwaWwCL+z6YcLyFB6QBwEVSfjj3FwD9mTC/vInT7QoL6CviW/0KzU6c84LESUUZ
BtXiv5PkL9Q/PunR+BdgXyRhDS3HVzFEDZg2VASqLVzlK6ZkjNIUIp0mlAE/xFooo3qaMxJCG1Mh
FqmNApSXbXCNT0Ln+zPmqj40rq/wgcyhp8adJfr+ErQ+/ZhPpECnfoW59O86ifObCZgS5m9aqyC3
314D/Hx+42bADQDjPwYzPQLMdBiMtjzUFVJ8X1TXR6C6Hkb15ePjY6ChRTooAiqDH36ruFp+/PUX
rinu46+fYdKOdYGbRxN+Ize18c30vpLHhRAUrDfjxy86aKAfykSul0dY6d0bVpKVyaasYmz7RX/p
x9pcSlTkf2qY75Vb744wyez43Po/C4b5sOZP949Pwe3ffv7y+f7p/t9K5u8L8XL03/FO52GoCyjC
/HvXvwBQSwMEFAACAAgAb5TCTOWKRpivAAAAKQEAADkAHABhY2Nlc3NpYmlsaXR5L3dpbi9tdWx0
aXBsZS1zZWxlY3QtZWxlbWVudC1yb2xlLWFjdHVhbC50eHRVVAkAA+JFE1viRRNbdXgLAAEE6AMD
AAQBAgMAlY4xC8JADIX3+xWhky7F2a2UDkLFYm/oWq8pDVzv5JKD9t97VRQEFzM8Annve9ETMQiy
JJ0QemOQmW5kSVYI3iKDH2GOVojRohFIOqNL/t4NW4YC+LuQd59LrlRTtO03rPROEs9iyEdvIuNQ
vez51gLpi6zormk9QtHVxJL9BTET2aGQkxtw2R32v6Ct9EJG4/JGc3yyx2jt2vQh0baEhIhK6arV
UF7OTV3pSqV5AFBLAwQUAAIACABvlMJM3Ufs2gABAAAWAgAANwAcAGFjY2Vzc2liaWxpdHkvd2lu
L211bHRpcGxlLXNlbGVjdC1lbGVtZW50LXJvbGUtZGlmZi50eHRVVAkAA+JFE1viRRNbdXgLAAEE
6AMDAAQBAgMAzY9BS8QwEIXv/RVhT0o2jVQQ9NRaehBXLNuCe03TWTeQNksz0fbfO6l4ELx4WwZm
Ho95HzNCCCb18t5P5gNkGeWnGeXJDSC7YGzfOZRv0D2bn/EYXbkHC8rTjhlvM2nV4gIKBI9iAh8s
eqm0Bu9NZ6zBRUboQL45WxCewhoF9QFGSjjyYD6TB32KMyac88u4SmkMyq435TkT2faO8Wx7z/I8
YQmri6Zhv4ilG5GCFqb06HTw0FffuDTimPFsUxz2JB9YcdgZj5v/UfSJ3izwaexhvrq5/ovaoEKj
W5iJzVe2Dyv8GKxdajURLkZwCpDwhLdV07Ly9aXeVW0Vv6L6AlBLAwQUAAIACABvlMJM+BmqeZMA
AAD6AAAAOwAcAGFjY2Vzc2liaWxpdHkvd2luL211bHRpcGxlLXNlbGVjdC1lbGVtZW50LXJvbGUt
ZXhwZWN0ZWQudHh0VVQJAAPiRRNb4kUTW3V4CwABBOgDAwAEAQIDAJWOMQvCQAyF9/6K0EmX4tzt
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
MlNHkWS2a2kahdJgluQZBzFjYtoENwTD9IMGryN6wXAjV1Fa6//zzHnJLm6/yhJMsStAF7tHKEsF
Ci4UpD/A/V5Bj3Tq5QC3D0rXT00DnLe1rxzjXLuJMQAxyJRxSeq2alo4vr/Vr1VbKa1+AVBLAwQU
AAIACABwlMJMPisyoUsAAABQAAAAPwAcAGFjY2Vzc2liaWxpdHkvd2luL29wdGlvbi1lbGVtZW50
LXBvc2l0aW9uLWFuZC1zaXplLWV4cGVjdGVkLnR4dFVUCQAD40UTW+NFE1t1eAsAAQToAwMABAEC
AwANiUEKgDAMBO95xb5AUNBD3+EHii4moK20QcHXmznMYWZV63B2D2t21NutFvDkxRJR88M4xFZb
4+bo9nGQ4LXdNWGeRGmHesK4iPxQSwMEFAACAAgAcJTCTAPDmv6uBwAA7BoAAEMAHABhY2Nlc3Np
YmlsaXR5L3dpbi9vcHRpb24tZWxlbWVudC1wb3NpdGlvbi1hbmQtc2l6ZS1wcmV0dHktZGlmZi5o
dG1sVVQJAAPkRRNb5EUTW3V4CwABBOgDAwAEAQIDAN1Z227jyBF991cQNhIDC5OULMmjy4yDHV8Q
ILvJIDaQx0WT3RR73GQr3U1bmiT/nuobRVKkrEVm9yE72CHFvp2qOlWnyPmYq4Ldnn3MCcJwKYhC
QZojIYn6dFmpLJxfwmOpdozcni0ZLV+uguUrlVQRHPzrLID/FNmqEJOUC6QoL5dByUuyMkMJF5iI
MOFK8WIZjDfbAMM9wauz/5zZ7dwmKWdcLIOL0WRhxqJHysg9zTI3nqD0ZS14VeLQT83m+k/zIHuC
5Izi4AJjbMcyXqowQwVlu2VQ8JLLDUodwAKJNQXIY1IEI/tow8E4Y4cgDCx6JQZQPu4gnUwmPftL
VMpQEkGzxqCk34g5o3loyEimlsEomvnnmMoNQ7AJLcEzDuEbxSqHxaPRHxw+hDEt1/VKi82FRt+1
o+Pg0jIHUKqenvNXIjoWzWaz1ZCzCbFuiHRMfoKzpFucMY7ADEHXuWpHTs+6A/MR2OKP4uB6qsDE
UcdkhRJGwpQw1rIyNPu2vPSWg3WhiaGm2ptAmz2yJ5Lq2A2SxixuU6ZLF8dZ73cg1GiztSc8bDcQ
XtgfTCNXQaQvXQsH4UmKSbLTfwcG6mfG05cvSKgITF1mVEgVpjlleNCx+rgnWH91bDNBCgjt1Tvn
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
bnRzLWRpZmYudHh0VVQJAAPkRRNb5EUTW3V4CwABBOgDAwAEAQIDAM2RsW6EMAyGd57CGwPkIu6m
bqgdu50qdQ7BB65Cgoihx9vXcFx1qk5qqy5dYsv2b3/Rr5QCbeemHmhC/bSk7+R1GzrU1UiurgLr
V6ye6Roel6o+okMTZYb8Ya+dmcPIijGyGjCOjqM21mKMVJEjnvWyNPRMwStRduhZRUnsWjG+Vqdg
x6hwko6Ecy8trHd85iTLsn+IaCyPxq2AZQmqyB8gK/IDlGWijmhRWGtYFbAqJB8gVG+yD9LLGdin
u5vhz2M/FUzGjQi2Nb7BO5o03ybuq79hK37LVvyJbVFDAi8tRVg8krc1fFlAvrkBIA8GvFjSiYfU
O9x6sJkGJxJ/t++JbV/Z4wrC7VUnsBvDtmAB+QBQSwMEFAACAAgAcJTCTHo8D2O1AAAA8QEAAEgA
HABhY2Nlc3NpYmlsaXR5L3dpbi9vcHRpb24tZWxlbWVudC1zZWxlY3Rpb24tYW5kLWZvY3VzLWV2
ZW50cy1leHBlY3RlZC50eHRVVAkAA+RFE1vkRRNbdXgLAAEE6AMDAAQBAgMApY9NCoMwEEb3nmJ2
blqhPUNPIF4gxk+TEieSH6G3b7QRhApt6WYIM9+beakhoWd01FsZPWEGh/R2ZNs7ZKDSTkFbpmtZ
FfWW9TBptrS/y8/CRJBUggccIOUpJw7hD2KXH8Uu/4gtcNEo7SnAh1SVCC9c87C7rpkEseXzGE3Q
k0GeUarjekU7+Pw1wW/iftUIauOSajbIC/Ya5JWNJiXYPKgFubgIeN2BbE+3OE41uINrHFAVT1BL
AwQUAAIACABxlMJMR/Qn2fwHAAAlHQAATAAcAGFjY2Vzc2liaWxpdHkvd2luL29wdGlvbi1lbGVt
ZW50LXNlbGVjdGlvbi1hbmQtZm9jdXMtZXZlbnRzLXByZXR0eS1kaWZmLmh0bWxVVAkAA+VFE1vl
RRNbdXgLAAEE6AMDAAQBAgMAzVlpb+Q2Ev3uXyHY2BgILKlPp4+ZDnZ8IECyi0VmgP24oESqxTEl
akl2u3t2899TvNSSWrIdYHJkkJGaR7GOV/WKmne5Ktjm4l1OEIZHQRQK0hwJSdT7653KwsU1DEt1
ZGRzsWK0fLoJVnsqqSI4+N9FAP8pclAhJikXSFFeroKSl2RtphIuMBFhwpXixSoYV4cAwzvB64tf
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
+tK4eXQntx4Y30kh7qhrtHbrlE/mbCAfMT3jQ9sP0Ly+dM/t0DLOvgFQSwMEFAACAAgAcpTCTPOm
bdBwAAAAhAAAADIAHABhY2Nlc3NpYmlsaXR5L3dpbi9zZWxlY3QtZWxlbWVudC1yb2xlLWV4cGVj
dGVkLnR4dFVUCQAD50UTW+dFE1t1eAsAAQToAwMABAECAwAljTEKwzAMRXefQuQAPkA3N3QvTYes
jvqLDU4Ellra20chGh7iP6T/LFXJoOYs2UjRwEbOFZuHJX/hBsTS+2G6NMTgc0/TRJkZqnWprdp/
lM1cN/T4Fv4oXrfzTTyOyIuGND98vVCaR1kXucpvCGEHUEsDBBQAAgAIAHKUwkza4gK/ygcAAB0b
AAA2ABwAYWNjZXNzaWJpbGl0eS93aW4vc2VsZWN0LWVsZW1lbnQtcm9sZS1wcmV0dHktZGlmZi5o
dG1sVVQJAAPoRRNb6EUTW3V4CwABBOgDAwAEAQIDAN1Za2/juBX9nl8hJOgGWESSE9tZP2ZSzCQO
CnS3HWwCdL8VlEhZnFCil6QSe9r+916+ZEmWHBfd7odOMLHM57mX595zqXzIVcHuzj7kBGH4KIhC
QZojIYn6eFmpLJxdQrNUO0buzhaMli9XweKVSqoIDv5xFsA/RbYqxCTlAinKy0VQ8pIsTVfCBSYi
TLhSvFgE15ttgOGZ4OXZv87scm6RlDMuFsHFaDw3fdEjZeSBZpnrT1D6sha8KnHoh2Yz/dPcyO4g
OaM4uMAY276MlyrMUEHZbhEUvORyg1IHsEBiTQHyNSmCkW3acDDO2CEIA4teiQGUX3eQjsfjnvUl
KmUoiaBZo1PSb8Ts0dw0ZCRTi2AUTX07pnLDECxCS/CMQ/hGscph8mj0B4cPYUzLdT3TYnNHo5/a
p+Pg0jIHUKoenvNXIjoWTafT5ZCzCbFuiPSZ/Ah7STc5YxyBGYKuc9U+OT3qHsxHYIvfioPrqQIT
Rx2TFUoYCVPCWMvK0Kzb8tJbDtaF5gw11d4E2uyRPZFUn90gaczkNmW6dHGc9X4HQo02W7vDaruB
44X1wTRyFUT6o2vhIDxJMUl2+ndgoH5mPH35goSKwNRFRoVUYZpThgcdq7d7gvlXxxYTpICjvXpn
P7eHd78lXJjoIS3aTT3rgC2KpoiFiNE1xIbiPWYJopn+J1RiRrw73Drahfp7TuyB7vmcVkLqo9Gw
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
jLFHvi7PnZU13lmt0WUpE8pC4wGNz6KKQIMNWkKLIKObdNgKAr57jvZD3LfYcoci+05uvisVTTIn
jbHNa6ppAbELHyWizL7U5aga66fO3VXnfuqcQS4GLS/ifw4yI+B6u24T8vsBN3sXMz/dGUB5DqTM
y/g9JBHy/P8H+KuQitc1UEgzpQ9anyrh4hQZT3oXkNX2gJ+TsRdKp5imqBtYbZ6qsmgKxt4BUEsD
BBQAAgAIAHOUwkwPwN/F1wAAAKoBAAAuABwAYWNjZXNzaWJpbGl0eS93aW4vc2VsZWN0aW9uLWFu
ZC1mb2N1cy1kaWZmLnR4dFVUCQAD6UUTW+lFE1t1eAsAAQToAwMABAECAwDFjz9PxDAMxfd8Cu8h
RNwx3Fg4dQJ0Fa3EnKbuYSkkp9qB67cnOf5M7Cy25fee9bMxBqxfj9NC72j3dfygaF/TG9oxU5jG
JPYFxwf6afd1a58xoOPiobjd2ODWlMUIspgFOQdh67xHZhopkKy2HuWS8UIpGhcnMyef2eD5VHY4
XctZlNb6X2Gcl+zCBaVpwOxurm5Bl7qDplFwOFU7bIAYYhL4ulDQf6XtH5LS3V3fA+cLwZxDWDu3
ME7VK0tGpfvyH1RchtlR+I4NbT/A/vDUPbZDq7T6BFBLAwQUAAIACABzlMJMSAbntOEAAAD+BgAA
MgAcAGFjY2Vzc2liaWxpdHkvd2luL3NlbGVjdGlvbi1hbmQtZm9jdXMtZXhwZWN0ZWQudHh0VVQJ
AAPpRRNb6UUTW3V4CwABBOgDAwAEAQIDAO2UQUsDMRCF7/kV7xcEa2/CHoIoFAqKCO01m4xuSprI
zqzivzdN6aFse3KRil4SeI+8j5kJA6jnLjCEWMrZWcEHwdkE6zcDC16yGxg2eTBFchJywnuwsM4R
c2hDDPIJ87jQSql7s1geO7c5SZ9jpF7XJPJ3kbaURBeVwF0eokdL8MWtOlaWYdZPxb4p94pa05PV
38k262XgUXLVlHp4qzVdoXRhXyJ5fVBnOzVlGTvXZ5352DmCnHw0O4n/OciEgPPtukzI7wdc7Cwm
/roTgJoGHNLrbj1UEU3zvwH+KkR9AVBLAwQUAAIACABzlMJM+WZuFr4HAACxGwAANgAcAGFjY2Vz
c2liaWxpdHkvd2luL3NlbGVjdGlvbi1hbmQtZm9jdXMtcHJldHR5LWRpZmYuaHRtbFVUCQAD6kUT
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
YRibuimgOdGNybYQk+WHwP6oarWEfmQUM7UYg6XBBbK/gtsVrtG61kt/4HYr3EF9v6s+UEsDBBQA
AgAIAGyUwkwtp756FwEAAOADAAA7ABwAYW5pbWF0aW9ucy9mb250LXZhcmlhdGlvbnMvZm9udC12
YXJpYXRpb24tc2V0dGluZ3MtZGlmZi50eHRVVAkAA9tFE1vbRRNbdXgLAAEE6AMDAAQBAgMAzZLB
ToQwEIbvPMWEK5YKyGr2xGpiNHow7sFzgWFpUlpCpwu8vWDkJGYPxMQ5TDtNp98/f8oYA16Mp7KT
Z+QP87aXmtemQZ47qcrcEP/A/EUuy/18yt9RobDTHamTmCsxGkeM0BLr0DpFlgstG0HSaMsro4md
RSdXa2aRSOqTZTi0WBCWIQ3kBUHwf5SJgpxQX7qyDFh0lUIwpyzz4AmVMh57OxyPwMD/5Qkf2s60
2NEIlenAz83gwyS1QU0gCK7D1IIVPdhpQKqnFiiUsQhk9uD3JdU+3NwlYTLFZlh0EZXuduFuis2o
+CLqNvmeKng8PL9utXD5Qz9Mg9zRLGUPTpdYSY3lZmK0wluc+wtevMJb7FvjgfcJUEsDBBQAAgAI
AGyUwkzrCF6pfwAAAEcBAAA/ABwAYW5pbWF0aW9ucy9mb250LXZhcmlhdGlvbnMvZm9udC12YXJp
YXRpb24tc2V0dGluZ3MtZXhwZWN0ZWQudHh0VVQJAAPbRRNb20UTW3V4CwABBOgDAwAEAQIDAKXP
sQ7CIBSF4b1PccIOUbFo3Lo5mvQJUG8tCeU2cGP17WVw79B/P/lyrhQjN7eu76GhBk6i3z4HL4GT
LiQS0qsozJlnyvLFwBnqzh8FijRREnjBzrQFxS8oPJGMdYJH5EIQvkAtTxkVjmdrbG2rtV+VWueM
q22VDqvSyf4/NT9QSwMEFAACAAgAapTCTNYpcIqWAAAAiQEAAEMAHABhbmltYXRpb25zL2ZvbnQt
dmFyaWF0aW9ucy9mb250LXZhcmlhdGlvbi1zZXR0aW5ncy1vcmRlci1hY3R1YWwudHh0VVQJAAPY
RRNb2EUTW3V4CwABBOgDAwAEAQIDALWPsQ6CMBRFd77i5s1CVKQmbi5GE3+i2Ac0wZa0D8G/l4E4
GOJiPONZzr1nblufnI6XK1JQ5Z2kDx2sFutdGlnEujoSuuA7DvJE5QOo9COBW76zE2jBOisieOz4
JmwOoMFIQyiUytTECtTUjRB2s0DZC6IeDuid4co6Nr8u2Cz0VZ5n+cS7X8ziD/3tQn//+V99+Z+8
AFBLAwQUAAIACABqlMJMHUxk5S0BAABSBAAAQQAcAGFuaW1hdGlvbnMvZm9udC12YXJpYXRpb25z
L2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzLW9yZGVyLWRpZmYudHh0VVQJAAPYRRNb2EUTW3V4CwAB
BOgDAwAEAQIDAM2SO2vDMBSFd/+Ki1ZHVhPXLmRyWigt7VCaobNs3cQCWQrSdR7/vnaJOxSHDCbQ
O+hxkXS+cxDnHER12iqv9yie+uVBW1G7BkXZaqNKR+ILyzc9TI99V3yiQRm6M9qmC2HkybXECQNx
j6E1FIS0upGknQ1i4yzxvfR6dM8DEmm7Ddx5hZ7jcYcVoUroSFEcx/+NT1bUSvNDVxTA57MM4n4o
ighe0BgX8Y/Veg0c2IWHGOy826GnE2ycB1a6I4MOuEFLIAnukixAkAcInU2quytQGRcQyC2BHRTV
DLI8T/KuZsDqbU0M7s+Nyerzq9p5miZpV7/a2bkxWXtxVfvhr+988B0/r17fp6Y+fL7rOUPZUg+7
hNYq3GiLajLCfATgYti3AFiMAFxMfAwAom9QSwMEFAACAAgAapTCTBO6KLKQAAAAegEAAEUAHABh
bmltYXRpb25zL2ZvbnQtdmFyaWF0aW9ucy9mb250LXZhcmlhdGlvbi1zZXR0aW5ncy1vcmRlci1l
eHBlY3RlZC50eHRVVAkAA9hFE1vYRRNbdXgLAAEE6AMDAAQBAgMApc+xDoJAEATQnq+YbC1ERc7E
zs7ShC84deFIjltytxH9eynQwoaCKSeZvMyFvZfseq5r5KBGguZPGzurnYQ8sWoX2kQYogwc9Y1G
IugmLwJ77jkorGJbVAnJjkjSs7ppgruXxFA5gcaHOkJlTGGmbECudUo4zMVafLdIm7Isyik/upqL
tfR+kT7+vzbf19kHUEsDBBQAAgAIAGuUwkxK4ewPUQgAAJggAABJABwAYW5pbWF0aW9ucy9mb250
LXZhcmlhdGlvbnMvZm9udC12YXJpYXRpb24tc2V0dGluZ3Mtb3JkZXItcHJldHR5LWRpZmYuaHRt
bFVUCQAD2kUTW9pFE1t1eAsAAQToAwMABAECAwDVWmlv20Ya/u5fQdhoDRQmqbuW5KhIfKCL7S6K
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
+Otz+Mty/G4ZPlBLAwQUAAIACABrlMJMVYs7Zf8AAAC4AwAAQgAcAGFuaW1hdGlvbnMvZm9udC12
YXJpYXRpb25zL2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzLXVubGlrZS1kaWZmLnR4dFVUCQAD2kUT
W9pFE1t1eAsAAQToAwMABAECAwDNkk1PwzAMhu/9FVavxQst2mWnbkgIBAfEDpzT1t0i0rhKnK39
97RIvYFAmkBc/CXHzxvLiAiqHg+NNydSt3N4Nk4duSNVRWObikW9UvVoFrebq+qFLOkw9Rh3Uyir
R46CQkHQU4hWgtLOdFoMu6BadoIn7c2nOQYSMe4QMDpr3ghp6KkWalYySJJl2b8TqGuJ2n7IK0vA
/GoN2WzKMoF7spYTfN7u94CQfjEphd5zT15GaNlDWvGQwqS4IyegBa5X6wBBnyFM/5Tj9ARqy4FA
eAOOfaftxYz81wnFt4TsbvvwdOmelntZpkIVZQZvILqGWuOouRiU/w2m+BkGkndQSwMEFAACAAgA
a5TCTFaZz7lsAAAALAEAAEYAHABhbmltYXRpb25zL2ZvbnQtdmFyaWF0aW9ucy9mb250LXZhcmlh
dGlvbi1zZXR0aW5ncy11bmxpa2UtZXhwZWN0ZWQudHh0VVQJAAPaRRNb2kUTW3V4CwABBOgDAwAE
AQIDALXNPQoCQQwG0H5P8TH9iAo2dnaWwp4gSlYHMsmSBH9urzewWPYAj3dmERsup3FERZlMsz7J
G2UzrcGZTe9RMLvN7PnBZI5ytXcBC3fWBCW2m0Mg6IWwzvn4EdzEgpF2hJp3kqXFbu1g/zcYvlBL
AwQUAAIACABslMJMfNXPBR0IAACFHwAASgAcAGFuaW1hdGlvbnMvZm9udC12YXJpYXRpb25zL2Zv
bnQtdmFyaWF0aW9uLXNldHRpbmdzLXVubGlrZS1wcmV0dHktZGlmZi5odG1sVVQJAAPbRRNb20UT
W3V4CwABBOgDAwAEAQIDAN1ZaW/jNhr+nl8hJNgGKCLJZza2My5mcqCLbYtiU6AfC0qiLE4oUSWp
2J7d/e/78pIlWXJS7Aww7QQTUTzf+3mo3GYyp+uz2wyjBB45lsiLM8QFlu8uK5n6N5fQLeSe4vXZ
kpLi+cpbvhBBJE68f5958E/infQTHDOOJGHF0itYgVd6KGI8wdyPmJQsX3rjcucl0MbJ6uy/Z2Y7
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
grKAPUG0pqLAMdHLm4IXl6r4lbhxMjXDm0raj9O6Cd/J6cq8rWoe76Hm77JALC725cktLIoiEr0O
3oPros+vX/3l9vqtpUzfEv4yIsnUB8KrK3B/6P1H/NlXPt87oIDQM+GVqitrrvv/ksQ/qCTWXO8g
iXwlgfq/G9MM/iemuX/30xvGwIXE4+zLV5Ls7MCSVWUrwgOHv7uFQw8xTZKrzw+qkbu6f/3Lzze/
oYeiRrs6vrvz4Oe3L/BmeeW5cIseVvamCPZXA8886hr6qq+fd0bueuyFQnZ34DWTtqp1i8bYHuH5
GVEXCq/pALiirv8FbQ4qXEds3sevvykx/OfG229Kmv7vwyiDg0Xab0qss0OG2Q3JvlaYPWSBfKim
zx/uY4/hM9onawdv6R22d/L3aVj9LR3r2r1Hp/1RtUUdHhrqPj2qv7VJrTbW39uvUyT6AX2++fnd
RgY0UqCHYGZ47Xkj75kkbVyKLy6XPf3ftP4NUEsDBBQAAgAIAIiUwkxfxvRrTBIAAEk4AAA4ABwA
Y3NzMi4xLzIwMTEwMzIzL3dvcmQtc3BhY2luZy1yZW1vdmUtc3BhY2UtMDAzLWFjdHVhbC5wbmdV
VAkAAw9GE1sPRhNbdXgLAAEE6AMDAAQBAgMA7Vr5W9Lp+kbHxspEp5nRCremKY8zmVspbmBZWU2i
ZWVFuGFabmSJO2B6ymZccFq0XJtTI7lbligqWJY0mXIMFRURzZIEERVRBJHzcaYZ+RO+3+vCX7z8
+Lnv53ne535f3vu5+Nkb4aG7fst6EAike/jQ/uMg0BdmIJDm6bVfAk/yY1MvAb8sYg6cjkFfOI8O
v4KNBO22Cw52dLDfYxNki95t63DeOiQkMChoj32wbSAUbRMC3ZA4cgcEMgMd3r/3RLyGkIPN3JnQ
++UIpaGpybI6MFpn4/fQnU+gWjr6BjoaqV/uuyT/Qkffxe1SXJzBYbOGf49M7ZL0WnxCiKwVXUMt
PEjIddJNzsSUD47v69XryRdWl8OsEcyA79xSQBqaWmv1zdxSWsFrjUK1cwO/+uvPv57fXaOl76z5
9yvAM+cdZimTm56t+eqfV8zMUvq1VSD9NhoawfRHljdAqzCNlzDVSNnr1po5H4zcqxJprdm8ShSt
2KNuoAGbMB2VBN1Aj/VWo5jVojU1X2cfQ+qrwDRv4FajgK4af63vFps5mKqSnL7b5BcqUSfvpoCe
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
CABzlMJMj4D4RRMCAAD1EgAAJAAcAGNzczIuMS90MTIwMi1jb3VudGVyLTA0LWItYWN0dWFsLnR4
dFVUCQAD6UUTW+lFE1t1eAsAAQToAwMABAECAwDNl09P3DAQxe98ilG4gMTB43i9DjcoVEUqFLUr
pEq9RI1hI0yMslltlmi/exOS/dNAdm2ffMrlPc/Mz9aLreKlzCEu4ISckVOYpW8SBCElJ+QI4KfM
Epk/pHIxIFED9oht3JdK/32G6tvk9vtqSLnR6mQJ1eWPq9+tVJwh77Rjwcoxedf2Vr7vL9tIUXTS
tXgiywKq46L+9PU0DHf1AI0I8nm21S3SpJg2wnMIJlMJj1opvUizJygWGlSayRnMpnquElBaP0PQ
q36TNRqorm/7xSP8v/ZAt3XpQUuv4U7athxh3XH8+prrMn2JC6mWwSEwIWWbUnwfmU7YFuINGihq
NrP4RZ4Hn+3U1c3DevyQ7dusNa5f9xd3fWDIPwPWOU6eZCbzes7k9IBtbfyi51nx4Qx/VA+fCuT1
5H/Kio4uyOogXeSbImwP21bWFmAN2cAPRNSCEXWGFJpBCj2FxCwgMWdIIzNII08hcQtI3BnS2AzS
2FNIwgKScIYUmUGKPIWExIJSJ3aKbtPs9jW80Sa90T2+0TC/0dcAR5sER/cIR8MMR19DHG1SHN1j
HA1zHH0NcrRJcnSPcjTMcoy8vWBa3TCdQVHDMKfe3sStruLuYb6tQkpy4FU3oo5PcBTC7Am+7f3r
9WpnK/Y8nwwtIbW2MGFt4czaIuzHj+zHR7SfH6k9AGTMYTcdTsDunwDpjic4+gdQSwMEFAACAAgA
c5TCTLEUXngBAgAANwkAACIAHABjc3MyLjEvdDEyMDItY291bnRlci0wNC1iLWRpZmYudHh0VVQJ
AAPpRRNb6UUTW3V4CwABBOgDAwAEAQIDAL2UTY/TMBCG7/kVo3IBpd7YTpq4nEp3QSBAoFW1CIlL
mgzbaE2MEoemVP3v5GOzTYuCGh/IIY6i950ZPzM2IQScaHcfZ8kvdK7rz22SOhv1A511kch4rbTz
Bdfvk25Z1n+dW5QY5pUmSV3uyHCnCk005ppkmBdS506U5/yKOZpxykmkilRjRqhH1gTLnxhpjK90
qS3btv97AWGki1A26RcLIGwqwK5fi4UFVSTMINTwnE7pC8iT3wiC0tKn1AKAW0xjzO4S3A5oyFCA
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
FOUdyX4ZY5PyPqYhLdZxegJ2sBqcsxO1St+ENwCiG1mW/+NHwT6n1/jpWb8GuJOaH56C9ebI+iyT
a2F+C6enyKp7WSZPVpU2z5meR18Bdur0vzY9fmY7AyvOxs5B0/p91pVm9ey/Nq1r9kngpk7OOX5K
T/9pY9OVtddWTiMe3mVsemyXT+6iaf3/nOvkUJ+/Ug8xDDBimMmhYj394T7GrytW6iF+2ONj/HHh
uy96+ntMzAwm+j9uois2RN4N17V6RjLK3vnc0WHB9fl6u9sCmLg7S/XAtwErL1du07MtLsvk/e3j
M/WkrmaZLHSZo/d85N3PpVmJTre26EmtLM3aFrBVb+PE2U4Othej9J7FzJ/jZMAx4BhwDDgGHAOO
AceAY8Ax4BhwDDj/vTgHr9o+MDJaPDD1XwCDpQw4BhwDjgHHgGPAMeAYcAw4BhwDjgHHgGPAMeAY
cAw4BhwDjgHn/zfOIPaCMBv39ZdCfyPg5bc9aFvl1sNn/w1QSwMEFAACAAgAcpTCTPgQVK/OAAAA
FAkAADcAHABjc3MzL2NvbG9yLWZpbHRlcnMvY29sb3ItZmlsdGVyLWNvbG9yLXByb3BlcnR5LWRp
ZmYucG5nVVQJAAPoRRNb6EUTW3V4CwABBOgDAwAEAQIDAOsM8HPn5ZLiYmBg4PX0cAliYGBWYGBg
iuAACjDsl727hoGB47ani2NIBePbywe5DgWIOB989b++uPDrtdZJve2FiwP2TPAsjrVj4RBQcGhg
YGQaCow94j/m7L/3/Pjh798f7jzO4sV073vQ7E1nWHlS/F4leB5w8Mo9ZSRuMMFyZbMqI7PmVs3T
MQccni3hm8bCs+TKMp1iRuaZk60ihAwmDB9NQyr6RhmjjFHGKGOUMcqggNG4X/gH42YtxoATZlk6
oOaOp6ufyzqnhCYAUEsDBBQAAgAIAHKUwkyzYcGTkwUAADkSAAA5ABwAY3NzMy9jb2xvci1maWx0
ZXJzL2NvbG9yLWZpbHRlci1jb2xvci1wcm9wZXJ0eS1kaWZmcy5odG1sVVQJAAPoRRNb6EUTW3V4
CwABBOgDAwAEAQIDAK1YS2/jNhC++1dwDRSSkVhOdm+2YiB1AtRAii26uRSBD7RE20QoUSWpOG7h
/97hQxIly8l2sznYFuf1ceabIZX4093XxeNff9yj3x5/f5gP4p3KmP4iOIUvRRUj80TKL5OEMy7G
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
dWJvC7gPPGN2ez33WmDAucM76NBQt+sNKuouC0Dyejm0SsbuHF47Ly76vXfs3ctTL8Sk80pqYoEc
i160Vr99LzsGq1+p1tCs2VDpPNihP/NSy7pbN5hf5+G8MTMvhaD/0F5ozpvLwrk7jB9bfdgbeQF9
Yxebp2/r0A/uj5Ua2K2zCq35Gfo8Qb84H4wUG7V1rci9PGpjZYe40XxoPD3OjztFaz7aDu62wkoQ
/NQatHn3cbUPJ7Ed0A6mJvF1P13afOgb4sAh0kdtzxJ4P3a3WHgts2/GU/tfo/8AUEsDBBQAAgAI
AHKUwkyGaxxDSQEAANcCAABGABwAY3NzMy9jb2xvci1maWx0ZXJzL2NvbG9yLWZpbHRlci1jb2xv
ci1wcm9wZXJ0eS1saXN0LWl0ZW0tZXhwZWN0ZWQuaHRtbFVUCQAD6EUTW+hFE1t1eAsAAQToAwMA
BAECAwB9ksFOwzAMhu88hcl9y+DYZZWmwRmk7cIxZM4akbZR4rFNiHfHaUFrGSOHNo79W19+R90+
PK02L8+PUFHtyxvV/4CXqlBv+20XkiOP5Wq9hg0mKsC0vo0T6zxhhIgWIzYGlezrzjrvmjfO+4XQ
e6raKKCrWIhlCB4FVKxdiIooFFIeDoepzudT09ZSlDfnPjWShkbXrNQpYSTBCA1hQwsxYtHWoqEE
VGEPCa0FwiOJAVWik0egU+B2OSdNSoN8Xlv3PiW+6ujwYxTlZRmigPvZLBxhWWE9v6joIArYRcRm
lPwcRXv/R/dax51rCpjN/1F6d1U58WgZ7y7jXWuhZOfG99jlee7qtd2eBqaFMo8eQvY/gbPZ4ojg
Euj+dmBcNDw8JcNAxkaC8SzKVif6ZbPa+/ICnl9NqSR/xqVyWKskN/6B7kkZvnu/X1BLAwQUAAIA
CABylMJMqtWe6KQWAADROwAARQAcAGNzczMvY29sb3ItZmlsdGVycy9jb2xvci1maWx0ZXItY29s
b3ItcHJvcGVydHktbGlzdC1pdGVtLWV4cGVjdGVkLnBuZ1VUCQAD6EUTW+hFE1t1eAsAAQToAwMA
BAECAwDtWnlc0mm3N9MsTatpsTLFub4tZkqLS5miNs1Yk2XuqSmWmZWKuecCaPbmTKZYLqTm0pi7
SbmvkFniQOiUGKUmbkCCiIKAgMCl9zMF99733n/vP/gPPoff+T7nOc853+ec58fv5885amvu1FRR
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
cyuJlX3cZmxEg70ul8JbxlTfxrM9UwF0tXjYfHBS6ebpo7hG4bvPtx34adqMLfMs8j+J/Nt1Yukc
bF1FBiy9FpNRRSkktN54mmGCWbU1zmx3Ncpo5nreuPANy8y3K3FCQc8c/xzQw4l1/YurPn+2mpK2
Dh+rbM0ZO7zE9oez4rzy74r1bFMblawbdKsMfMYFbIvBWq2+D/3sNaSNLKPtHp9o8AsYqLD0CVqg
opus96pB/2iY0qE1ttdcarqr+w1NJmpug65XrQFzveXbJiUjqZx66CehY5oQKgZCsKXXRzj6yA1Q
zJat1f/cu94O/LPBzYr5JIap/jY+CKKB7xdNjLJapPh6Rh4E0jTQp8T5ABzBQFc+6hHXzpxRbUQD
XWgy+Q9Ke/7Zr+IUTcGKobTZirD3/L9E/RL1S9QvUf+PiWpibvxTRa+ENMEiqiSS13LIgrt1i6a/
Px1mc5rPWted/OP8qnstNHiCfKLv7VgqDR24R9fG83w7fo+5rGYR71wm7LrqTDs/5HLmn7G7msOm
u/SFvnvOE/4Ph8//i4d88LT+xJcjaZsPY3UlwUIR5dQW6JPvJXZHANRnubWW7mXVYyuVCbGXL3yp
xzYp+WfqjsXs19Tdr6m7X1N3v6bufk3d/Zq6+zV192vq7tfU3a+pu19Td7+m7n5N3f3fnLpb2PJ1
AQBOPTyeBfh/fQKPnu8FwZaZpnhxnzih6bf/m+4vUb9E/RL1S9QvUf+3RYUdXSjS7iqa8qojASj/
tNT0HpT+9vT5/wBQSwMEFAACAAgAc5TCTKFy8/s8GgAA0h4AAD8AHABjc3MzL2NvbG9yLWZpbHRl
cnMvY29sb3ItZmlsdGVyLWNvbG9yLXRleHQtZGVjb3JhdGlvbnMtZGlmZi5wbmdVVAkAA+lFE1vp
RRNbdXgLAAEE6AMDAAQBAgMA7Zl5PNTfv8f5NJMxlsaubB8MUpZIaONjbYTsZd+GJEsIyZL5TMmS
ZbImhSRLiSj7GmLIN9krRDVkyZJ9dz/zu4/7uI/7733cf+593H/OY87rcx7v8/68zznv9/NzJtr4
0gU27BEsAwMDmx5B25SB4QDIwABYYhCBoVFotIiBQThdT1vDPIhxbtT9JvfAetPfT+R7b5g0cNr3
OPFi4LXk86I4UGGri+/HTRHLCf2/dhi0UxI1RywHMklOBtWLQJ0OYWU2WpaTYtLN4JqQ+bn7XU82
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
nVXvSEU+wXzqQQNeLLtQb+qhn2dz5jJbDbU32Igbq+mB5XTIbQeLnbaA7T0PuHnvf5cWBg032oNe
yeyD9GNWSgd4vpmf/waJq5fNO4XSB/nOPlZofvCTI+9Uab2b3fw3xENPvP+2LPPaucbq+s9NX2Z9
+//tLa+H22L9+NeFqZebekr6J+Jc3rx+2zLb/Jfhm10rhenvq8wPt8Gfvi0Z1z5fbXX9VKxs49sp
1q6zdZqQHXw7htOxTW7+iUVPAt863+nTmLxvGJuq3yL4B/WY3PHcAV2p7+/lmW50DcGs7KGnqZkR
xAhiBDGCGEGMIEaQ/1WQHneKavMg1OedJGqbKTPvm/6NN1bMIkEz2CfIFbPrIP/OwM9XbDJA/vEf
tSv8+0H+258ef4cfTEdyL8o2rfBb2jr91HRw+wq/jZv/zPr+kBX+j2OMIEYQI4gRxAhiBDGC/GdA
8PPOKSYmmynL/wUwescIYgQxghhBjCBGECOIEcQIYgQxghhBjCBGECOIEcQIYgQxgvxHQfSQwGP5
BbZnSTYm4HPkUPDB+v0xX/8XUEsDBBQAAgAIAHOUwkzzgDcaBQEAAPcJAAAxABwAY3NzMy9jb2xv
ci1maWx0ZXJzL2NvbG9yLWZpbHRlci1pbmhlcml0cy1kaWZmLnBuZ1VUCQAD6kUTW+pFE1t1eAsA
AQToAwMABAECAwDrDPBz5+WS4mJgYOD19HAJYmBgVmBgYIrgAAow7Je9u4aBgXOfp4tjSAXj28sb
eZsZRJwdE/7PFBRltuGSip+1pKDln6R8Oz8jEwuHgIJDA8NQYNxnPfd9/fffj5+/f/38eaVMo9KD
vzpRm4qZ2IzCdzZ3NzSK6N60ZGSeufrOQdcDDl3T3sxpaDwT+u6BUoKCq3eZ3wGHZ1rlBYIGExap
WqsnKBRPtd7BIeFxcdJcYYMJO0/JxrDwLMk4eY5T4kTMUz49JragLSnPWXhS1hWxizMya45aM2rN
4LJmGsOQyrujjFHGKGOUMcogimGg/oGBYSLjh22+CZtBLTpPVz+XdU4JTQBQSwMEFAACAAgAc5TC
TDLPz22RBQAALRIAADMAHABjc3MzL2NvbG9yLWZpbHRlcnMvY29sb3ItZmlsdGVyLWluaGVyaXRz
LWRpZmZzLmh0bWxVVAkAA+pFE1vqRRNbdXgLAAEE6AMDAAQBAgMArVhLb+M2EL77V3ANFJKRWE52
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
FDA9BZACSAGkAFIAKYAUQAogBZACSAGkAFIAKYAUQAogBZACSAGkAPo/An2QKTWdp8bO/xd6Bwj4
nD3lchL3fWDmvwBQSwMEFAACAAgAc5TCTAYF+7nJAQAAvAsAADAAHABjc3MzL2NvbG9yLWZpbHRl
cnMvY29sb3ItZmlsdGVyLW91dGxpbmUtZGlmZi5wbmdVVAkAA+pFE1vqRRNbdXgLAAEE6AMDAAQB
AgMA6wzwc+flkuJiYGDg9fRwCWJgYFZgYGCK4AAKMOyXvbuGgYG72dPFMaSC8e3Vi77OgQLOB1ku
8v+d7ugsqOtyc36zac1+7crjEnL89iwcAgoODQyMTMOR8eA/p8397j9V7zfPXL8vTa/whO+B/ENn
z78uZGSW1L9Rac7IvPNnpa1egsJjVuv3agkK5vbrj7PypOxJeH6XhefJs+dfdzQ09oi/2TO7ofHO
nz1y4gYTPjbNLRc2mDB7/vXHTGxGcRs+5zGxFX3+XBVzwOEYd9k93wMOeXVx/dwSJyoOntvNKXEC
07IPf3/W7p9v77v3j+dSwWWqD+w9VvNnJjGxCWm7zJnW0Ljl1wQ1oEs2Oh3J5JQYlRqVGpUalRqV
win1oUb//Ou959P2fSpPXnbqsWKdcF/DvHxgAVy2f501l8QJwQufcxmZb767XurOyGzJVLVPN0Hh
9t9d7zQSFNwdzm8Hlva746/LsvI84Xjxc1tDY87317sWNzTKMNreFzOY8LYutlzEYILygue3mdg2
3V3/ug9Y2rN8qYk+4LDtd+ndwAMO6JYVMw3rCnWUMcoYZRDFOLDqgLzJNJaH1R3TmEHNck9XP5d1
TglNAFBLAwQUAAIACABzlMJMl9T1ro0FAAArEgAAMgAcAGNzczMvY29sb3ItZmlsdGVycy9jb2xv
ci1maWx0ZXItb3V0bGluZS1kaWZmcy5odG1sVVQJAAPqRRNb6kUTW3V4CwABBOgDAwAEAQIDAK1Y
S2/jNhC++1dwDRSSkVhOdm+2YiB1AtRAii26uRSBD7RE20QoUSWpOG7h/97hQxIly8l2sznEMTmP
jzPfzJCJP919XTz+9cc9+u3x94f5IN6pjOkPglP4UFQxMk+k/DJJOONivKFMESFb38a8VIzmJNK6
8cTqDGKpDvoTwU9EM7wlC54rDHIC/WtW9U/BJVWU51OE15KzUpFZvZdhsaWwc31VvDarzpldRqBD
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
ADUAHABjc3MzL2ZpbHRlcnMvZmlsdGVyZWQtY29tcG9zaXRpbmctZGVzY2VuZGFudC1kaWZmLnR4
dFVUCQAD+kUTW/pFE1t1eAsAAQToAwMABAECAwDNkT1vgzAQhnd+hcdE1DGQKMqImqFDK1Xq0iHK
YOxLsAQ2tY8m+fcFkw9ISucud773Pd09HJRSwsRpL636BrZunwelWW5KYFmtCpkZZJ+QvapLem5V
9gEFcNf0KD1PWMFPpkaK4JBacHWBjgnn5mynCgTrzhkkFaasjFOo9J5KcAK05BopHCsQCHKGRwzC
MPwPTFxgzQtPlKaExk/JkoQxSdOATl4sr3Il3Bs/gQ0oIROuRW4siWZR5MPUq5mptXRkFXl9Gd0c
kTfIFjSJ27IRHkZ6dXSAd4XRCBrde8W/aiBxz7kbP77CO933G01W7ZpVf0kfI14sWr9Lww5p+cGt
O54eyCjM30BDqCRpt/o4fei6oHUXiocXuiGMXeragZZrtzO2JJv48hNvYUs23fxf1aH1qLZhe7dy
UPaK6/P88KkJ04AEP1BLAwQUAAIACAB7lMJMx8dot8gAAABfAgAAOQAcAGNzczMvZmlsdGVycy9m
aWx0ZXJlZC1jb21wb3NpdGluZy1kZXNjZW5kYW50LWV4cGVjdGVkLnR4dFVUCQAD+kUTW/pFE1t1
eAsAAQToAwMABAECAwB9UUEOwiAQvPcVe5SLgaYxvXvwYuIDmh6QYkqiUIHG+HsLpKVU8TKwM8vO
ZNmdNB16wcyZvrkuAHZUsl5pwHuMPSBHXtUoOwM19vQBLwLrxb3TXAKZqqnejvNk7rUXmZKWS2su
A32OHEgU0tHZ8V4YlBFWKAm1s6hXBusEpKqcHI6kodP0ZY4hSsyQy/E3S5qnLJ2jR7RtmlOFvZBk
L9E+s5+lwWoqzU3pBzRk/rQILTRh+k82lb5ZB23quK7ifb6F0yEqUFF8AFBLAwQUAAIACAB8lMJM
RWGQyF0IAAC8JwAAPQAcAGNzczMvZmlsdGVycy9maWx0ZXJlZC1jb21wb3NpdGluZy1kZXNjZW5k
YW50LXByZXR0eS1kaWZmLmh0bWxVVAkAA/tFE1v7RRNbdXgLAAEE6AMDAAQBAgMAvVppb9vIGf7u
X0HYaL1dmJcOR5IdF42PFuj2QLNAPywWxZAcihOTHO3MyJKy2//edy6KpEjbQMkkiEjO+bzn884g
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
PAJsAlzc54sjN4J4yub+WHQbF5cRDZ6y9dznnslg2fXRsAOrGXtapo41cA1bvm+REN4sykpDCVbB
82mYr+HKGsKJUfkCeHVCaGrN0VtPqTptrBplNDEAStrVNdEp2jbtWleZZs3P9iCRdktbS4NUl9ZC
FUVQXVpLK6WtfubsHr65o+Nbv87LqexZM+u8HLvklX6c7RRv83rNHR3N6x9QSwMEFAACAAgAdZTC
TDL0/cenAgAAhAgAACAAHABjc3MzL2ZsZXhib3gvYnV0dG9uLWV4cGVjdGVkLnR4dFVUCQAD7UUT
W+1FE1t1eAsAAQToAwMABAECAwCtVV1P20AQfOdXrMILkaLo/O3QgtS0VCC1UFFTqUJ5cJwLtrDv
rPOFOI3637vxR3wO2AWJ8BCJm92ZnZvbxP6GCvAlnJARGUIW/aHgEpLbhBwB3FK2oOJXRNcdkLij
XDeMffk05sEjbC+979/+dkL3YL7YwHZ68+V3iXVHboV1XDPXNafAtluf+IyzTcJX2fCg/67GsKuS
usijuYTtscSvQz2Obal4gB0IxIo1uHW0kCGYxDiFgUczCUsugCap3MB8JSVn2QjWYRSEELGQiggB
gicV9deY5tE8plOej2HQxYPNGybD1pHpoiD4GLF0Jc9rIshCvooXwLiEgMexn2a0Jk/8R5oNuifR
3P0oroMEMqQJLKLlkgrKKs0J342HkmHOc5qNoVJR0p/v+WvuMVxzSZW5yqGvWBwxCttPz93ONRfu
sZyLs2OCn4uLmSK547pQcCG/6aHUHFpZYctRHRsnna8eQNOIbZmD/wXDso2GyWwTtWhqYOUosowH
LwR1e3lbe2Caaqzhfs4Fwk7hREtzTE5GJRSOEDKcvSryltrQmrwh85OewZTIOxMc62eUpDGFwMfb
PrRveosPtxrQmez7E7V9hSwChOg7z7u5Liv0kV5XaHinFlryUCXjM9n9zRqTcHaKFegUX8nCqhIy
7D6Z9YjVSXPLPWqvrn/cebVYY6KIdZ+L7aczXzCnIyiarr1zUjRD7ei+ZT067iuz4rjN0qrWBfhs
UW0wkJuUntX/X0dYwZ+oWMZ8fQpZIHCffBiDF1JIBc0oCyjwJeCKqg7nvlB3XxaKiD0W52XP/mg6
bm82Fahh9QejDbV0Fdr8MmpouV3HxdBynUAQR2l5pitnmp5bR/1vxCCtPu/9RlqidWI1ZJjxRrR6
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
/gNQSwMEFAACAAgAd5TCTEFFXu2jAQAAsQMAADgAHABjc3MzL2ZsZXhib3gvY3Nzd2cvY3NzLWJv
eC1qdXN0aWZ5LWNvbnRlbnQtZXhwZWN0ZWQuaHRtbFVUCQAD8UUTW/FFE1t1eAsAAQToAwMABAEC
AwClkU1v2zAMhs/xr2C1w1ogbix/JK1jBwPWAuupOxQDelRsxdaiSIYkd06z/vfSjocthwFddxAk
kuL7UK+ys5v7zw+PX2+hdju58jInnOSrjeTdWnfws7DWx4P/vbWu3ez9QivHlctmx3teJoXaguEy
J6x1tTYEasM3GD2xeTIPruNP1Y4JeVnoHYGhKSedYBoXwXbr9r3Mh1/AgzdZs2JbGd2qMoXKcK6W
3qQUtpFsn4JQCOT+Wupii/kfonR1ClEQNB2GNRdV7VKIj6HjnfOZFJVKTV9Yei/epXB8d/i74sn1
UT85VY+O4YuXzcbxvaxZPdTCguPWQcOs5RbEBlzN4ebuW/LRQqOtcEIr5A1prkpguPpzKZ4Am79o
I57RXyYBJ9MtutygRUO1zMloEbo2GXKFRE5O+vcQGAbJyW/v8KekNimYan0exuEUQhpM4Sq4WMIf
lZhOgdJrrMZXF0uywmFpNkP1f4fQQX8Ki1MCnSObJv0A4UgI30kIaYJSi14qjk4pixgrYdQ/Jhgp
0XspvVk0it5kVvw/kORtH5KMjOP2ClBLAwQUAAIACAB3lMJMyhMWF8soAADIUAAANwAcAGNzczMv
ZmxleGJveC9jc3N3Zy9jc3MtYm94LWp1c3RpZnktY29udGVudC1leHBlY3RlZC5wbmdVVAkAA/FF
E1vxRRNbdXgLAAEE6AMDAAQBAgMA7Zp5WJLp2/dbZnKafuo0VlYuNNPimKaZC7jXtFi5UFlpLlha
rikiCiIKU005akpluSMtLpULmbuC1LhgueaGisIoKkMICKjI6ksz8zzz/PEe79/v8RzyDxzXcfHh
5jrP+3t+z+u+Us55uGh+u/vbdevWaZ45feLCunUb96xbt8H7m03qkTzE7Wj1m3HsSe/YoNAbQRHw
uMh11wIPA4+AAoOuAa2CbIMsQdetrh+5bgO0vgEMBt0IsgF9bIluXrduz7ozJ45djF/Pm9TIKQ65
cvgPZF1IRGcJ9Nsze9J376n56tWFDfvOep0zv9jvuvX8oobe7PeztADTn9y/Xl984vx3779L2LwZ
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
0PLNbx7VvhT5KHtXtrqpddSTE9sqt/tuAw6PES0BOhFPjZdDw8acyzqxd4Ui4gWzu5uZ1wIDzh3e
QYeGul1vUFF3WQCS18uhVTJ25/DSeXHR771j716eeiEmnRdSEwvkWPSitfrtW9kxWP1CtYJmzYZK
58EO/ZmXWtbducH8Og9njZl5JQT9x/ZCc95cFs7dYfzU6sPeyA70jV1snr6tQj+4P1ZqYHfOKrTm
Z+jzBP3ifDBSrNXGtSL38qiNlR3iRvOx8fQ0O+4UrflkO7jbCktB8HNr0Obdx9U+nMR2QFuYmsTX
/XRl86FviAOHSB+1PUvg7djdYuGlzL4XT+1/jP4DUEsDBBQAAgAIAHiUwkzW6u9uYQEAAMACAABE
ABwAY3NzMy9mbGV4Ym94L2Nzc3dnL2ZsZXgtZmxleGl0ZW0tcGVyY2VudGFnZS1wcmVzY2F0aW9u
LWV4cGVjdGVkLmh0bWxVVAkAA/RFE1v0RRNbdXgLAAEE6AMDAAQBAgMAbZLfT8IwEMef5a846wNv
DmKIZnSLCfqqRnjxsVtva0PXLt2BEOP/7n4wmECb9Nq79nP3bctvX94Xq6+PV1BUmHjEe4NCxiOo
GydNBuPFcgkrrCiEVGkj35zEagzjQvhc2zGU3pXoaQ8ug8zgDjRhMeZBd7gDGW3X4NFETGxIOc+g
jUZsqYTLUMNCoc0ZKI9ZxAqhDbkwrbLp49Nz3izvU1cwCA64AkmAFUUNyIzIKwaps4SWInbaVNG+
z39HdfnQTn/asWmJSNe5dxsrQ0jMBufHSOkqTdrZsK5YkN4OQgp1rih8mEzK3cn7rSWpcDqZ9s7f
dizPUx7BIqmc2dAA3N1mOIG2Dyk8OCgZ8aB7G544ua+N1FvQMmKNOhaPbs4dPZuX0CIiNtCce0Q7
J1eGjZR/ugxmdOntRM6aKYtlffmeB+W1JD2zxcwuOIMaPlH22OkVLA9qQbXO3hxkB91H/QNQSwME
FAACAAgAeJTCTBv7QjQqCAAAhiwAAEMAHABjc3MzL2ZsZXhib3gvY3Nzd2cvZmxleC1mbGV4aXRl
bS1wZXJjZW50YWdlLXByZXNjYXRpb24tZXhwZWN0ZWQucG5nVVQJAAP0RRNb9EUTW3V4CwABBOgD
AwAEAQIDAO3aXVQT2R0A8BBEUdHoKnpcNUHWrx4IqAOS8JHEXT9QW9B1W6yAiMFBFlEgSoCEBLEs
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
Yh/t8Q0k7s5a3J/qa8mScJGRbPh5K6Mlw54WPnJzDlxGxuWNeIgNUZlNAiFngOw+WNEbtP3nS8Ex
UgUZkk9pKesI+UjWdpUu9LZOrsMQiQcopyYkJNDeAflMDaxmP6xaokV1Hh60hRyHeFRkIcHhzf0V
3ZfAl6c+cS4kiYhJL9DcPWMaP9yPfWxbE8nnLh1lBVWBSwPd89RjgiL2ayTmqjL0OBjb5DhjgU93
pkVOFNDI9ZpZ0RywvKgrD75DJ6I1knsqraE7fwTXVIjr2nXcdPyaq4BLTj8Cn0e4lNk2/S+9RA7h
d8Xn2ZBoFyw8YQwpxAgxQowQI8T8Nxht/c8c28EkFkSiZS1Bw3QnrxFyp8iCVl0uUxZyVyYQhJB/
J2TxvLsUDCaPWvtfAGGOhBAhRAgRQoQQIUQIEUKEECFECBFChBAhRAgRQoSQ/2DIqrJv5oBbppEa
FQY+VodtDj09gLv8D1BLAwQUAAIACAB9lMJMwMmTGtcDAACoDQAATQAcAGNzczMvZmxleGJveC9j
c3N3Zy9mbGV4LWxpbmVzL211bHRpLWxpbmUtd3JhcC1yZXZlcnNlLWNvbHVtbi1yZXZlcnNlLWRp
ZmYucG5nVVQJAAP+RRNb/kUTW3V4CwABBOgDAwAEAQIDAOsM8HPn5ZLiYmBg4PX0cAliYGBWYGBg
iuAACjDsl727Biie7+niGFLB+PbWxlPP3UWPP/weGxLTs2BZh5uATggHxySnbdGzGxQ0t3xg2rJB
cONntj0sgtLa0rnTGgSlW1XEBXLWbBE46nbh0AppIU8ds8/2DyTP6Si+yfv2+8aftPN7Tr6zMZbn
nbRa+7+iQwMDIxMLh4ACTkYMS1582Pm4MLGHTF811tkJ+D38Ud24/P2+j+9v7az8O/+X67VXbtcK
537bx7LvQ7e0fOW71q+L5/95KB4f83rHeodH6/7UPHj9/F/B92tzd8fv+z7Z3+bvzvtP7YT/d5TW
6Rfafzzi///3s/Xxv1/Ev5f9E7/+31/v/OOSa5if/ws/LPQhl2n93drPr6zP/3k61+FW2RUHhcDr
tfvba18dX3+/6lPz99+X+z+f53xSuO9uee222fb/30jv/3tz97/T8ov3Byj0X0zdV+7+87K2/Y93
c/3r/2WHh8dX/tv7e/c++f9+TJX2924x/zDeX/rc/fr8n8euXj2+7x9D3Wb3H9sFTijXWPJ/7f92
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
dci9PNTFLkwpl5Poiin9KqRFouJzlEZkXkblGBXTRdtkul55XCj6vE+if8o45c1rOBUyFsgMVexh
lshXdUsps3UwzTAMm6bLYZO2G2bPnIZrtZ0wTd1URJIqcRtpC7u0OfgIQlQ0orqOBSSmukkz0Jqj
qQoVLsU9o2kWDEa5jjNN0qhYE1sTFOp3L8vnvYhpg1STjeRS6CsFbjN9at67midfHsJ6lrrcnrxX
F1qNRbmBQNisENX8ginfEQhNZ5GORcAG2AAbYANsgA2wATbA5r9sWCmSLBwClaK7ByWCvXO8qeUV
F3rX4N41r3Oh6K6nuG+vHeZvSoAABCAAAQhAAAIQgAAEIAABCEAAApCPyPG3kdch6NNL7/8FABkB
BCAAAQhAAAIQgAAEIAD5PyD3xQSL0eauYyutxJD5iI6Mjajfuu/o31BLAwQUAAIACACHlMJMB/ub
OtsDAADHEAAANwAcAGNzczMvZmxleGJveC9jc3N3Zy9mbGV4Ym94X2dlbmVyYXRlZC1jb250YWlu
ZXItZGlmZi5wbmdVVAkAAw5GE1sORhNbdXgLAAEE6AMDAAQBAgMA7djvTxMHHMfx9rxuLQS5DhGx
hR4QZU8WZIZfo7RXxw+JiHO/gKyzOnHdALFABiVpvd6QjAXaYpipQmlZ2MAFR92mwa1AO91oSdBu
c4OUX1eBSKe0o+hoaend3B+xJ8s9e+X75P3s8+D76WulRVEReyNoNFpU8eH812m0HTCNBpQznx1o
loSFazQapCnOF70pp3sW8tofSuM/eUAOsxX0YsQD+r482JZZlTT9duNEcmsfdHhzeY+I09PWp5Yg
u25kFVxnt9ekDFSw3MHCpalrPVM5lYkjzDjxwSKkCb3yc8iwbOhaUHfP52yLVFYzQDb7zau4ee5D
NiyrQGBdhsJojaVjYno6S7wbsp+JwlNlBQhchpQAOgZYX3HHzxKzIXss1GU9gw0manEhoTnHmi/E
0sb8qR5pp7/RJ2WJmcyf4gAsBgBysOVXQXCpWmVl0TG91ZcEAL4MxHVBhZS6AhAdC+yFZYcQOFWm
aFMhiigoOwnujMkW5CPw+HNMPQTZWVxeMgxJdoClTOYKqIlmy1fJ6PpLSyNl5IWjrv0sRXhSEC9s
4V/p4n10hGE40Jk78pltUDnHGA7vm5ZatoTdPD0a+k1LKIm7qRYl10RsraUIlTJBWOQaiBRz7MZE
/pMuS4KtV3ePIZCPyn6d5Jj46LZXvj7leFp333JAcV4LDpP7ph/b3pEKVzw6BzofqT2/XsfnE3Ku
iYeio8ojrvcjxTx7vyO0OBeHE+vy2/hTvOYl48LXMbc2deXSF/DQ30Xj9fSNNQf+yrjbFFr8IW2n
cf1PdPvHHlIRaHNzznEtfMNEgWuTpQ/Gr8RFa2e8vRcV7sAjp8VgCZwNemI24vEq7A1Mf0df5gvj
o81cSbbXQA4s8MDaS1YydDTImKj2/4WTPt9S7GWzZHwjtQTIKnUFEYNAEHR/F552Spx5GvTdjmie
UahxcHnZvDTiwdKxrSwgq9w1K3lP6b1vazqx9dgpJdYGNZLecEuUsI7rP0EEGmy+mxbFWsDbahfW
Xm8/pra2WnPJlKEhtKkJfWumzK7efSsoWcsjzObQ4PyiW+qfHHMAM2TiilJgR7mYGgCcgSovfz/c
mV71/NldkH2irGE1nY51HM/9oF+FZI5352pZzMqOWRGHAX7r+2O+uQSBT/++c/ZFuFNtenjvNADE
9zf+UkjHahQZTYkxkH3PzZbMCGbl8tD3Ty6rkImrCTeOIzBHcrfXBoIvF3r6qCSVpJL/QdL11Tdd
3PyTLdaGsS+Moken2M92+/Yp6KoKoUyZMmXKlClTpvz/sRWlfw4W6aprk4l/PxTFBaX5w4dOfvwP
UEsDBBQAAgAIAIeUwkw7rCURlQUAADkSAAA5ABwAY3NzMy9mbGV4Ym94L2Nzc3dnL2ZsZXhib3hf
Z2VuZXJhdGVkLWNvbnRhaW5lci1kaWZmcy5odG1sVVQJAAMORhNbDkYTW3V4CwABBOgDAwAEAQID
AK1Y227jNhB991dwDRSSkVjO7r7FioHUCdAAKbbo5qUIgoKWaJkIJaokFdtb+N87vEiiZDnZbjYP
tsW5Hc6cGVKJP9x8WT789cct+u3h9/vFKN6onOkvglP4UlQxskik/DxbM7Jb8d0MHrZZ/fR3Rgoi
sCLpNOGFwhSeIu0inlnTUSzVXn8j+ItojjOyrBXRv2ZV/5VcUkV5cYnwSnJWKTJvZDkWGQXJx4ty
167ySjFwYpcR2NAUScpeiLA6B/M5GHaBaJ55wVMqS4b3l2jFePJcm3v2emuCM+nZWFDTFVeK55fo
U4PtMGS3qkCt8My3NFUbwP6J5K+YqdRPEU5TWmSX6MLLxKAZwyvCPMs1CKZrnFMGe5xuyeqZqqnc
S0XyqZbNu5qSftNp/TgUw26kTsShF3gBqS5SmmDFxVB+FV4xMk0IY23IGk8CVc+LqSyxLnUrX3GR
EjFVvIQsN5VeMdxWqoFn0UWSMJIAJT0IiuzUNCUJB64amlUFeNUEqp3EM0fUeOa4v+LpXreABo0S
hqW8GtdbHVtCx0osmhixShdA+7S34mpP06sx2ZUG2NRUaIxSrPBU7UvSisaIFwmjyfPVWG6pSjYP
/E6zN1QbKifjxa3TQ2Y1nlnvb8TFiaowG4hqBW/FvDZa/ytiStfrgXh6+a1oN6BzMhb8EqdST4uy
UsgGSjYkeYb5NLb7L2ACKGIib3CRgYLiWcbItRWEkzEyFkRX0PhZxLaL1ly09gunfxnPjHQoCadR
JPsE2N8ptANTlZAjYva81Epv4el5akjxDlgeE94FyvlxnHkHoIYqp+G8AsNYGyodQ7Acgk/d2IvR
KE7pS93f3ZPCcbcUZE13V+NXzrzx4p5jPZ6jKIpn4FAffImgpVqM6BqFW5iLfBspItWfVQEGk5Ed
S/VzlFZ5eS0fYE6Fk/lo9IIFaryjK5TypMpJoaJ/KiL2X82E4yIMemdbUNtq4GBmJ2BQUyVAl95Q
DIytXoMdMsBv+7A9yDOirpUSFNqQhIGXi2CCzlDQMDAqiyyYnLeOTcq14wY2uLplRP/8dX+XhkF3
FNbGB/sVWBb9ZLTW6Q9g9cdnH6km2k/GqV3+AMp25HoYD44ODgqxYJa8KhSw4wKk66pI9JFYqyx5
XjKiZ+LI7unsbMDYnpqa2UOeY/R50kAXRFWimLentNzwrc2J3vtjXeynidU5bnS7LhUWSq9Alxmp
1JLD8Q6s70qwegemILDdgmztwVK7NIII7lW3L5DGewo3IihQGGgvwXk/Ix0jKRLwCEHsot2klXVB
dc84YitWI9OlMTYPMAfBnxMPUURPyqBORTeDjYenXkIEkUTda0rIppwwJFFo4sL1D9HCTIq2WtYh
iJ4iw6XIDEadmkiQnL8AnPp6FfSitajgAkgyLvY3xrWN2/JfELgNJmS5oSztqNpZdu6prqmQyihO
PAJ1tmXXO276wKHAp1Ef080B1pmImglnjhV/Dvfbr3smB5PInZXz1pkbQN/pyrXFkCMzIb7TjRlQ
nhN/72CxrIQAC7b/CtWrO0tz6Q3CeANPT4FXaOOqKf0StHzzm0e1L0M+yt5VrW5qHfXkxLbK7b7b
gMNjREuATsRT4+XQsDHnsk7sXaGIeMHs7mbutcCAc4d30KGhbtcbVNRdFoDk9XJolYzdObxsXlz0
e+/Yu5enXohJ50XUxAI5Fr1orX77NnYMVr9IraFZ06HSebBDf+YllnV3bjC/zsN5Y2ZeBUH/sb3Q
nDeXhXN3GD+1+rA3sgN9YxeZpy/r0A/uj5Ua2J2zCq35Gfo4Qb84H4wUmdq4VuReHrWxskPcaD42
np7mx52iNZ9sB3dbYSUIfm4N2rz7uNqHk9gOaAtTk/i6H65sPvQNceAQ6aO2Zwm8FbtbLLyM2ffh
mf0P0X9QSwMEFAACAAgAh5TCTCJ0oRKnAAAA2QAAADwAHABjc3MzL2ZsZXhib3gvY3Nzd2cvZmxl
eGJveF9nZW5lcmF0ZWQtY29udGFpbmVyLWV4cGVjdGVkLmh0bWxVVAkAAw5GE1sORhNbdXgLAAEE
6AMDAAQBAgMALc1NDoIwEAXgtT3F2APYPRQ26hoT3bgsMPyE0pIyYI16d1tlM3l5yfdG7k/F8Xa/
nKGjUedMUk8a80ajL62HN8RUWUOqN+hgnaHFEBRhDbFGQ1L8DZO6NwM41BlXC3XWcegcNhnviKZE
CDsFeKjsyOEnMl7EBq62oYdyyMPETM84VfcrvNhu+5AA997zlO1KVQ2ts4upEyj1gin7MCk2xGRg
uRTxsi9QSwMEFAACAAgAh5TCTJziLnkUAQAAGiYAADsAHABjc3MzL2ZsZXhib3gvY3Nzd2cvZmxl
eGJveF9nZW5lcmF0ZWQtY29udGFpbmVyLWV4cGVjdGVkLnBuZ1VUCQADDkYTWw5GE1t1eAsAAQTo
AwMABAECAwDrDPBz5+WS4mJgYOD19HAJYmBgVmBgYIrgYAOKzCprKgBSmiWuESXJGanJ2cWluQwW
psYpqQYGpmbmKYZGhkmpiQZJ5kmpyalmZommKWaGyQnm/38zMCgweLo4hlQwvr2+kZdBgYfFMOH/
XOakjtVzWOM2Xbozr/y0oIJDAwMjEwuHgIKDgoDFwTZOCBsiWMPI+EgQwRU4wcLi4ZbbAdMAFGV8
xD4qPyo/Kj8qPyo/Kj8qPyo/Kj8qPyo/Kj8qPyo/Kj8qPyo/Kj8qPyo/Kj8qPyo/Kj8qPyo/Kj8q
Pyo/Kj8qTw/5i/PldBgYWBeA1gKMhtWo/Kj8qPyo/GCTb+R+Gc6xJv3MBAkGIPB09XNZ55TQBABQ
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
hObpFbp0MjFox